<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>RoboZen &#187; Angry Development Tips</title>
	<atom:link href="http://robozen.com/category/technology/angry-development-tips/feed/" rel="self" type="application/rss+xml" />
	<link>http://robozen.com</link>
	<description>Web innovation, entrepreneurship, usability</description>
	<lastBuildDate>Fri, 09 Oct 2009 19:35:42 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Trouble with MySQL Foreign Keys?</title>
		<link>http://robozen.com/technology/trouble-with-mysql-foreign-keys/</link>
		<comments>http://robozen.com/technology/trouble-with-mysql-foreign-keys/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 11:30:50 +0000</pubDate>
		<dc:creator>mariya</dc:creator>
				<category><![CDATA[Angry Development Tips]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://robozen.com/?p=182</guid>
		<description><![CDATA[There I was, coding up a fresh Doctrine schema for a Symfony app, when my plans to implement foreign keys were repeatedly foiled:
SQLSTATE[HY000]: General error: 1005 Can&#8217;t create table &#8216;./mydb/#sql-xxxx.frm&#8217; (errno: 150). Failing Query: ALTER TABLE cow ADD FOREIGN KEY (barn_id) REFERENCES barn(id)
I was using InnoDB, both tables were there, both columns were there, what [...]<p>&nbsp;</p><p>Hunting around for a new web host? RoboZen has used and recommends reliable web hosting from <a href="http://www.lunarpages.com/id/Verdage">Lunarpages</a>. Support for PHP, Ruby on Rails, unlimited storage, unlimited bandwidth, for $5 a month.</p>]]></description>
			<content:encoded><![CDATA[<p>There I was, coding up a fresh Doctrine schema for a Symfony app, when my plans to implement foreign keys were repeatedly foiled:</p>
<p>SQLSTATE[HY000]: General error: 1005 Can&#8217;t create table &#8216;./mydb/#sql-xxxx.frm&#8217; (errno: 150). Failing Query: ALTER TABLE cow ADD FOREIGN KEY (barn_id) REFERENCES barn(id)</p>
<p>I was using InnoDB, both tables were there, both columns were there, what else could MySQL want? Why didn&#8217;t it work?</p>
<p>Apparently, you must use the same data type for both columns. My cows.barn_id was an INT, while barns.id was a SMALLINT. This didn&#8217;t fly. Changing both to SMALLINT did the trick.</p>
<p>Hint: if you&#8217;re using Symfony with Doctrine, like I am, use &#8220;integer(4)&#8221; to get the MySQL INT datatype, or &#8220;integer(2)&#8221; for a SMALLINT data type. Plain old &#8220;integer&#8221; converts to BIGINT.</p>
]]></content:encoded>
			<wfw:commentRss>http://robozen.com/technology/trouble-with-mysql-foreign-keys/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ludicrous Usability Gaffe of the Day: Log in to Unsubscribe</title>
		<link>http://robozen.com/technology/ludicrous-usability-gaffe-of-the-day-log-in-to-unsubscribe/</link>
		<comments>http://robozen.com/technology/ludicrous-usability-gaffe-of-the-day-log-in-to-unsubscribe/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 21:46:40 +0000</pubDate>
		<dc:creator>mariya</dc:creator>
				<category><![CDATA[Angry Development Tips]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://robozen.com/2008/08/05/ludicrous-usability-gaffe-of-the-day-log-in-to-unsubscribe/</guid>
		<description><![CDATA[Dear Yelp.com,
After two years of silence, I appreciate your sudden and continued, nay daily, efforts to bring me up to date on the culinary scene in Brooklyn, New York, where I no longer reside. Happy to hear from you but, unfortunately, miles away from any city served by your delightful application, I scrolled to the [...]<p>&nbsp;</p><p>Hunting around for a new web host? RoboZen has used and recommends reliable web hosting from <a href="http://www.lunarpages.com/id/Verdage">Lunarpages</a>. Support for PHP, Ruby on Rails, unlimited storage, unlimited bandwidth, for $5 a month.</p>]]></description>
			<content:encoded><![CDATA[<p>Dear Yelp.com,</p>
<p>After two years of silence, I appreciate your sudden and continued, nay daily, efforts to bring me up to date on the culinary scene in Brooklyn, New York, where I no longer reside. Happy to hear from you but, unfortunately, miles away from any city served by your delightful application, I scrolled to the unsubscribe link at the bottom&#8230; only to be promptly transported to a login page.</p>
<p>&#8220;Hello there!&#8221; your website seem to say. &#8220;You, beloved user, have arrived to change your subscription preference. Welcome! Surely you and I cannot have become so estranged that you do not even remember your password? No no, you&#8217;re here daily, I can feel it! There&#8217;s absolutely no need for you to click &#8216;Forgot Password&#8217;, request a password reset, check your email, come back to our website, enter a new password twice, be redirected to some other page, go back to your email, find the unsubscribe link, click it, uncheck all the cities you are subscribed for, and click submit, just so you can stop getting crap from us. No siree! We&#8217;ve thought this through, and we wouldn&#8217;t make life so hard for you.&#8221;</p>
<p>&#8220;We&#8217;re as sure of your commitment to us as the reputable fellows with the moniker United.com. When you selected to opt out of electronically delivered offers, they had no doubt that you had your frequent flier number, used once and only once, memorized&#8212;because you fly frequently! Get it? And there was no question that you would feel more secure entering a four-digit PIN number than one of those silly-sounding passwords like myGErbl123. Because after all, they want you to feel as important as if you were at an Automatic Teller Machine, and not just at any old website trying to please for the love of god get them stop sending you crap.&#8221;</p>
<p>Seriously, if you are from one of a bajillion companies who do this unbelievably irritating and stupid thing, please stop. People just want to break up with you nicely, not be dragged through divorce court. Give them an unsubscribe link that works with one click. Jerks.</p>
<p>Best regards,<br />
Flooded with Mail</p>
]]></content:encoded>
			<wfw:commentRss>http://robozen.com/technology/ludicrous-usability-gaffe-of-the-day-log-in-to-unsubscribe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Magic: Align Form Fields Without Tables</title>
		<link>http://robozen.com/design/css-magic-align-form-fields-without-tables/</link>
		<comments>http://robozen.com/design/css-magic-align-form-fields-without-tables/#comments</comments>
		<pubDate>Mon, 09 Jun 2008 11:21:06 +0000</pubDate>
		<dc:creator>mariya</dc:creator>
				<category><![CDATA[Angry Development Tips]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://robozen.com/2008/06/09/css-magic-align-form-fields-without-tables/</guid>
		<description><![CDATA[I&#8217;ve seen many a source code that is neat and XHTML-compliant everywhere except—for some mysterious reason—forms. There is some unspoken rule that tables are the only way to align form fields into two even columns. That rule is wrong. Without further ado, here is how to rid your pages of the final vestiges of layout [...]<p>&nbsp;</p><p>Hunting around for a new web host? RoboZen has used and recommends reliable web hosting from <a href="http://www.lunarpages.com/id/Verdage">Lunarpages</a>. Support for PHP, Ruby on Rails, unlimited storage, unlimited bandwidth, for $5 a month.</p>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve seen many a source code that is neat and XHTML-compliant everywhere except—for some mysterious reason—forms. There is some unspoken rule that tables are the only way to align form fields into two even columns. That rule is wrong. Without further ado, here is how to rid your pages of the final vestiges of layout tables (tested in Firefox 3 and IE6, the best and worst of all possible worlds):</p>
<p>HTML:<br />
<font color="#999999">&lt;div class=&#8221;field_container&#8221;&gt;&lt;label&gt;First Name&lt;/label&gt;&lt;input type=&#8221;text&#8221;&gt;&lt;/div&gt;<br />
&lt;div class=&#8221;field_container&#8221;&gt;&lt;label&gt;Last Name&lt;/label&gt;&lt;input type=&#8221;text&#8221;&gt;&lt;/div&gt; </font></p>
<p>CSS:<br />
<font color="#999999">label {<br />
width:150px;    </font><font color="#999999"> /*Or however much space you need for the form&#8217;s labels*/</font><br />
<font color="#999999">    float:left;<br />
}</font></p>
<p>I&#8217;m serious, that&#8217;s it. So if I see another table, YOU&#8217;RE FIRED. <img src='http://robozen.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://robozen.com/design/css-magic-align-form-fields-without-tables/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Freelancers: Always Log Your Hours</title>
		<link>http://robozen.com/entrepreneurship/freelancers-always-log-your-hours/</link>
		<comments>http://robozen.com/entrepreneurship/freelancers-always-log-your-hours/#comments</comments>
		<pubDate>Tue, 27 Nov 2007 13:06:24 +0000</pubDate>
		<dc:creator>mariya</dc:creator>
				<category><![CDATA[Angry Development Tips]]></category>
		<category><![CDATA[Entrepreneurship]]></category>
		<category><![CDATA[Project Management & Productivity]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://robozen.com/2007/11/27/freelancers-always-log-your-hours/</guid>
		<description><![CDATA[This is not immediately obvious those who charge a flat rate per project, instead of by the hour. But unless you track your hours, you know neither how much you&#8217;re making on your current project, nor the fair price to charge for a comparable project in the future. Remember, $2000 might sound like a pretty [...]<p>&nbsp;</p><p>Hunting around for a new web host? RoboZen has used and recommends reliable web hosting from <a href="http://www.lunarpages.com/id/Verdage">Lunarpages</a>. Support for PHP, Ruby on Rails, unlimited storage, unlimited bandwidth, for $5 a month.</p>]]></description>
			<content:encoded><![CDATA[<p>This is not immediately obvious those who charge a flat rate per project, instead of by the hour. But unless you track your hours, you know neither how much you&#8217;re making on your current project, nor the fair price to charge for a comparable project in the future. Remember, $2000 might sound like a pretty pile of cash for a site, but unless you know how long it took you to build, you don&#8217;t know if you&#8217;re making any more money than a busboy.</p>
<p>It&#8217;s also your fault that I have to explain &#8220;why I charge three times more than the guy you found on Craigslist&#8221;. Be fair to you and me. Track your hours. Bill accordingly.</p>
<p>How much is fair? I&#8217;ll give that some more thought and write a post later.</p>
]]></content:encoded>
			<wfw:commentRss>http://robozen.com/entrepreneurship/freelancers-always-log-your-hours/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CSS Tip: Don&#8217;t Duplicate Attributes</title>
		<link>http://robozen.com/design/css-tip-dont-duplicate-attributes/</link>
		<comments>http://robozen.com/design/css-tip-dont-duplicate-attributes/#comments</comments>
		<pubDate>Sun, 25 Nov 2007 11:51:32 +0000</pubDate>
		<dc:creator>mariya</dc:creator>
				<category><![CDATA[Angry Development Tips]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://robozen.com/2007/11/25/css-tip-dont-duplicate-attributes/</guid>
		<description><![CDATA[In your CSS, you specify that your #header, #footer and #sidebar elements should be baby blue. A week later, your picky designer asks that they be changed to lilac. Of course, you can change the color for all three elements, but, as the DRY gods will tell you, find/replace is error-prone.
You should only specify colors [...]<p>&nbsp;</p><p>Hunting around for a new web host? RoboZen has used and recommends reliable web hosting from <a href="http://www.lunarpages.com/id/Verdage">Lunarpages</a>. Support for PHP, Ruby on Rails, unlimited storage, unlimited bandwidth, for $5 a month.</p>]]></description>
			<content:encoded><![CDATA[<p>In your CSS, you specify that your #header, #footer and #sidebar elements should be baby blue. A week later, your picky designer asks that they be changed to lilac. Of course, you can change the color for all three elements, but, as the DRY gods will tell you, find/replace is error-prone.</p>
<p>You should only specify colors (and, preferably, most attributes) only once in your stylesheet.</p>
<p><em>The Wrong(ish) Way:</em></p>
<p>.header {<br />
color:baby-blue;<br />
font-size:humungo<br />
} .footer {<br />
color:baby-blue;<br />
font-size:tiny;<br />
}</p>
<p><em>The Right(er) Way:</em></p>
<p>.header, .footer {<br />
color:baby-blue;<br />
} .header {<br />
font-size:humungo<br />
}  .footer {<br />
font-size:tiny;<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://robozen.com/design/css-tip-dont-duplicate-attributes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cranky Old Hag</title>
		<link>http://robozen.com/technology/angry-development-tips/cranky-old-hag/</link>
		<comments>http://robozen.com/technology/angry-development-tips/cranky-old-hag/#comments</comments>
		<pubDate>Thu, 08 Nov 2007 18:56:32 +0000</pubDate>
		<dc:creator>mariya</dc:creator>
				<category><![CDATA[Angry Development Tips]]></category>

		<guid isPermaLink="false">http://robozen.com/2007/11/08/cranky-old-hag/</guid>
		<description><![CDATA[A dear friend noted that few of my posts are constructive: they&#8217;re mostly biting criticism and ranting about practices that don&#8217;t work.
But the topics I address (technology, business, recruiting) are so open-ended that you can do things many different ways. And they all work, except for the ones that don&#8217;t. It seems that as long [...]<p>&nbsp;</p><p>Hunting around for a new web host? RoboZen has used and recommends reliable web hosting from <a href="http://www.lunarpages.com/id/Verdage">Lunarpages</a>. Support for PHP, Ruby on Rails, unlimited storage, unlimited bandwidth, for $5 a month.</p>]]></description>
			<content:encoded><![CDATA[<p>A dear friend noted that few of my posts are constructive: they&#8217;re mostly biting criticism and ranting about practices that don&#8217;t work.</p>
<p>But the topics I address (technology, business, recruiting) are so open-ended that you can do things many different ways. And they all work, except for the ones that don&#8217;t. It seems that as long as you avoid common pitfalls&#8212;which I like to point out&#8212;you can do whatever you damned well please.</p>
<p>Plus, the web is brimming with talented programmers writing excellent how-tos. So I think I&#8217;ll continue being a cranky old hag. Now get off my lawn!</p>
]]></content:encoded>
			<wfw:commentRss>http://robozen.com/technology/angry-development-tips/cranky-old-hag/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>I&#8217;m Online? Looking at a Website? No Shit!</title>
		<link>http://robozen.com/entrepreneurship/im-online-looking-at-a-website-no-shit/</link>
		<comments>http://robozen.com/entrepreneurship/im-online-looking-at-a-website-no-shit/#comments</comments>
		<pubDate>Thu, 18 Oct 2007 10:44:28 +0000</pubDate>
		<dc:creator>mariya</dc:creator>
				<category><![CDATA[Angry Development Tips]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Entrepreneurship]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://robozen.com/?p=31</guid>
		<description><![CDATA[There&#8217;s no hope for the web, is there? Most sites are poorly made and look like oatmeal on a baby bib. Others are developed cleanly by someone whose code doesn&#8217;t suck only to face another hurdle: the idiot copywriter.
The fun at this jewelry outfit begins with the domain name: steveclarkweb.com. I admit, it&#8217;s hard to [...]<p>&nbsp;</p><p>Hunting around for a new web host? RoboZen has used and recommends reliable web hosting from <a href="http://www.lunarpages.com/id/Verdage">Lunarpages</a>. Support for PHP, Ruby on Rails, unlimited storage, unlimited bandwidth, for $5 a month.</p>]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s no hope for the web, is there? Most sites are poorly made and look like oatmeal on a baby bib. Others are developed cleanly by <a href="http://jefdean.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/jefdean.com');">someone whose code doesn&#8217;t suck</a> only to face another hurdle: <a href="http://www.steveclarkweb.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.steveclarkweb.com');">the idiot copywriter</a>.</p>
<p>The fun at <a href="http://www.steveclarkweb.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.steveclarkweb.com');">this jewelry outfit</a> begins with the domain name: steveclarkweb.com. I admit, it&#8217;s hard to find a good one, and steveclark.com is registered by a New Jersey ambulance chaser. But steveclark<em>web</em>? You don&#8217;t want &#8220;jewelry&#8221; or &#8220;designs&#8221; or &#8220;creations&#8221; to differentiate you from hordes of other Steve Clarks? No: a domain name has a far more important function. Even before people see your site, it should explicitly let them know that it is, in fact, on the web.</p>
<p>The tagline is also very important to this end. Steve Clark describes his site as &#8220;The Online Jewelry Showcase of Steven Clark.&#8221; There is space for ten words, and <em>online</em> is one of them. Wise choice, my friend, because I was under the false impression that I could jump through the screen and see <em>real</em> jewelry. Thanks for clearing that up!</p>
<p>But you know, I&#8217;m still not sure what this page is for. Is it for walking dogs? Will it make me a cheeseburger? Is it an alternative to The Google? I have to read the Basic Overview on the homepage to find out:</p>
<p><em>This website is designed to allow for shopping one of the finest fashion jewelry lines in the USA. It is meant to be available to my existing customers and to help find new ones.</em></p>
<p>So even though I still don&#8217;t know what kind of jewelry you sell, how much it costs, or even if you sell wholesale or retail, I am lucky to have received much more useful information:</p>
<ol>
<li>I&#8217;m in a virtual jewelry showcase, <em>not</em> a real one,</li>
<li>this &#8220;website&#8221; of which you speak is designed to allow for shopping, and</li>
<li>I am eligible to partake in this shopping experience if I have shopped here before, or even if I have not.</li>
</ol>
<p>Truly online web-based internet homepage website marketing at its best!</p>
<p><strong>UPDATE:</strong> Don&#8217;t get me started on requiring logins to view the catalog. Or that you have to personally message the guy to even get a login. I mean, that&#8217;s such lax security&#8230; you should have to apply in person to be eligible.</p>
]]></content:encoded>
			<wfw:commentRss>http://robozen.com/entrepreneurship/im-online-looking-at-a-website-no-shit/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Angry CSS Tip: Don&#8217;t Name Your Classes After Attributes</title>
		<link>http://robozen.com/technology/angry-css-tip-1/</link>
		<comments>http://robozen.com/technology/angry-css-tip-1/#comments</comments>
		<pubDate>Thu, 04 Oct 2007 20:16:15 +0000</pubDate>
		<dc:creator>mariya</dc:creator>
				<category><![CDATA[Angry Development Tips]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://robozen.com/?p=113</guid>
		<description><![CDATA[Name your classes something sensible! If I see another CSS class named &#8220;blueText&#8221; I will scream. YOU CAN TELL IT&#8217;S BLUE WHEN YOU LOOK AT IT, STUPIDS.
CSS was invented to make attributes easy to change. Say you want a blue message on all your pages. You sensibly label it with a CSS class &#8216;message&#8217; and [...]<p>&nbsp;</p><p>Hunting around for a new web host? RoboZen has used and recommends reliable web hosting from <a href="http://www.lunarpages.com/id/Verdage">Lunarpages</a>. Support for PHP, Ruby on Rails, unlimited storage, unlimited bandwidth, for $5 a month.</p>]]></description>
			<content:encoded><![CDATA[<p>Name your classes something sensible! If I see another CSS class named &#8220;blueText&#8221; I will scream. YOU CAN TELL IT&#8217;S BLUE WHEN YOU LOOK AT IT, STUPIDS.</p>
<p>CSS was invented to make attributes easy to change. Say you want a blue message on all your pages. You sensibly label it with a CSS class &#8216;message&#8217; and set its &#8216;font-color&#8217; to blue in the stylesheet. Then it hits you that your users are blind idiots. Since you&#8217;re smart, you just go to your stylesheet and change one attribute from blue to red. Then you can shut down your computer and spend some time with your kids before they end up in juvie from your absentee parenting.</p>
<p>If, however, you are retarded like some of the people I work with, you will not name your class &#8216;message&#8217;. You will name it &#8216;blueText&#8217;. When you change it to red, you will go through every one of your pages and change the class name to &#8216;redText&#8217;. Then you will go home, wonder why CSS was ever invented, and cry yourself to sleep.</p>
]]></content:encoded>
			<wfw:commentRss>http://robozen.com/technology/angry-css-tip-1/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
