tag:blogger.com,1999:blog-81712212023-11-15T09:28:50.798-08:00iamelgringoUnknownnoreply@blogger.comBlogger5125tag:blogger.com,1999:blog-8171221.post-81753127466868311432009-02-04T02:47:00.000-08:002009-02-05T09:59:23.755-08:00A reasoned response to unreasonable trollsSo, my last post apparently ruffled a few tail feathers. And, there were a number of CSS trolls that crawled out of their caves, clubs swinging wildly. They apparently didn't get the memo that they'd been banished, so against my better judgment, I'd like to address a few of the ideas they brought up.<br /><br /><span style="font-weight: bold;">"You're doing it wrong!", "CSS is the right way...", "You're not following the rules...", "That's not standards compliant"</span><br /><br />These are moral and religious arguments, and not based on technical merit. Words like "right", "wrong", "purity", "following rules", "following standards" all convey moral overtones, and are designed to guilt a person into a specific type of behavior. They also appeal to a higher power, which in this case happens to be web standards.<br /><br />When did designing web pages turn into a religion? I understand that OS's turn into religions 15 years ago, but web pages? Really?<br /><br />Moral and religious zealotry is fine. But, at least do us all a favor, and be honest enough to recognize that that's what you're doing. Once we all agree that we have techo-religious differences, we can agree to disagree and move on.<br /><br /><br /><span style="font-weight: bold;">"You don't seem to understand. By making your code semanticly pure, you're allowing other programs to fully understand your html markup and fully use the data on your page"</span><br /><br />No, I do understand. I understand the whole argument about the semantic web. I understand the appeal of adding meta data and structuring HTML to give it meaning. I happen to think it's a waste of time.<br /><br />If I want other applications to access my data, I'll give them an API. Otherwise, why should I spend tons of time and effort to make life easier for people trying to scrape my web pages? That's their problem, not mine.<br /><br />Peter Norvig, VP of research at Google recently said that Google wasn't doing a very good job at doing things with structured data like lists. If Google can't make decent use of structured lists that are already enclosed in ul and li tags, what makes people think that only using a table for tabular data is going to do to bring about the future semantic web?<br /><br />I happen to think that the semantic web is a pot of gold a the end of a rainbow. If you want to go hunting for it and make all of your HTML semantically pure, go right ahead. I'll pass.<br /><br /><br /><span style="font-weight: bold;">"You haven't spent enough time learning CSS", "Go read a book", "After you're an expert in CSS, it's easy." "No reason for any intelligent person not to use pure CSS"</span><br /><br />Most of these are simply ad hominem attacks and can be discounted.<br /><br />When I need to learn more about CSS, and I will continue to learn it.<br /><br />At the same time, I'm also upgrading skills in the following areas: system administration, HTTP, Apache configuration and optimization, SQL, PostgreSQL administration, Python programming, and the Django web framework. Oh, and I'm bootstrapping a startup, too.<br /><br />So, spending 1-2 months learning CSS, just to satisfy someone's idea of a right way to style a page doesn't cut it for me. I already lost 2 weeks, that's enough, thank you. CSS doesn't pay my bill, shipping product does.<br /><br />I get CSS blocks. I understand the theory behind padding, borders, margins and floats. I just happen to think that the system is helpful for some things and a complete kludge for other things.<br /><br />Don't just take my word for it. Google seems to agree with me. Amazon agrees with me. Ebay agrees with me. Pray tell, what books should they read about web development? Perhaps the CSS trolls could enlighten them on "The Right Way To Do Things" (tm). Or, perhaps the trolls could stop and ponder for a moment why these huge multi-million dollar corporations haven't gone on board with pure CSS designs.<br /><br /><br /><span style="font-weight: bold;">"Using pure CSS means you'll spend less time in maintenance"</span><br /><br />Premature optimization is the root of all sorts of evil. I can always go back and refactor later if needed.<br /><br /><br /><span style="font-weight: bold;">"Do it right the first time"</span><br /><br />"Do it the right way." is a moral argument, not a technical one. See response to religious arguments above.<br /><br /><br /><span style="font-weight: bold;">"CSS is faster"</span><br /><br />Again, premature optimization is the root of all kinds of evil.<br /><br />Developer time is expensive, servers are cheap. If it takes me 8 hours extra time to style my site, and my time is worth $100 an hour, that's $800. For $800, I can buy 3 extra Slicehost VPS slices for an entire year.<br /><br />The performance bottleneck for the vast majority of sites isn't the use of tables for layout. The performance bottleneck is generally the database. On a cost/benefit analysis, I'm going to spend much more time learning database administration than styling. DBA's are expensive, CSS designers are relatively cheap.<br /><br />At some point, if my company gets as large as ESPN, and I can save terabytes worth of bandwidth by switching to a pure CSS design, I'd be happy to. Right now, it doesn't make sense.<br /><br />Finally, if site speed was the only issue we're concerned with, we'd all be writing web applications on C, O'Caml, Haskell or Common Lisp. We don't do that, so clearly there are other considerations.<br /><br /><br /><span style="font-weight: bold;">"You can change designs at will. (see CSSzengarden)"</span><br /><br />I don't need to change designs at will. I don't want to change designs at will. Adding complexity at the expense of future flexibility doesn't make sense for me right now.<br /><br />Besides, I'm using Django. It has a robust templating system which lets me modularize my html creation. If I end up using a snippet of html more than twice, I create a template tag that generates that html for me. When I change the design or layout, I can change that snippet of html. The advantages of pure CSS for layout diminish rapidly once you're using a decent templating system that doesn't make you copy and paste html.<br /><br /><br /><span style="font-weight: bold;">"CSS is a solved problem, there is no excuse for not using it"</span><br /><br />Um, if it's solved, then why do 75% of Alexa's top 20 still use tables in their designs? What's Google's excuse? Amazon's? I'd really like to hear an answer to that. And, making ad hominem attacks against companies, doesn't count as a decent reason.<br /><br />For company in ["Amazon", "Yahoo", "Google", "Whatever_company..."]:<br />.....print "Don't even get me started about %s 's use of web standards." %(company)<br /><br />>>>*Yawn*<br /><br /><br /><span style="font-weight: bold;">"...use Blueprint, YUI framework, they solve your problems"</span><br /><br />Frameworks are workarounds for weaknesses in the system. CSS frameworks were created because styling a standard multi-column design from scratch in CSS is a pain. Yes, they solve certain problems, they don't solve all problems. They certainly didn't solve all my problems.<br /><br /><br /><span style="font-weight: bold;">"Your page won't work well with screen readers"</span><br /><br />If this is still a problem, then it's a problem with screen reader technology. Like it or not, people still use tables 19 years into the web. Fix the screen reader technology instead of trying to guilt everybody into changing their sites because of the visually impaired.<br /><br />Also, if screen readers can't handle tables, then they can't read 75% of the sites on Alexa. Google has Phd level people working on accessiblity. They use tables in their designs. Methinks this argument is overdone.<br /><br /><br /><span style="font-weight: bold;">"CSS lets you adjust your presentation based on mobile browsers or regular browsers"</span><br /><br />Most companies that are building mobile friendly sites just make a separate page of mobile screens. Don't believe me, check out Google and Flickr on your iPhone or G1. It's a separate page. It's not a different CSS styling.<br /><br />If I want to develop a web app for mobile, I'll do the same as Google and Flikr. I'm not going to Frankenstein my CSS to be able to handle anything from at 150px screen to a 1000px screen.<br /><br /><br /><span style="font-weight: bold;">Pure CSS lost the argument.</span><br /><br />A lot of us understand the arguments about semantic purity, separation of content and presentation, flexibility of design, increased accessibility and speed.<br /><br />Problem is we don't care. We've heard you. We've listened to your arguments. We don't buy them. We disagree. We use CSS at times and tables at other times.<br /><br />And, it's not just me. Apparently, 75% of the top 20 English language sites don't care either. For giggles, go table hunting on a "CSS tutorial" Google search. Half of the sites that have front page ranking for "CSS tutorial" use tables in their layout.<br /><br />Spend a few hours table hunting the web with the developer toolbar Outline->Outline tables->table cells. The vast majority of the internet has table based layout. It's not just a few angry table holdouts that haven't gotten with the program. We're the silent majority.<br /><br />With as many nasty comments as people made, no one was able to explain why 75% of Alexa's top 20 still use tables. The conclusion I have to come to is that the CSS purists won a few zealous converts that are rather loud, but for the vast majority of us, they lost the battle. We think that CSS has it's place. It's wonderful for styling text and links uniformly across a site. It's helped make prettier sites the world around. Thank you CSS. We'll use it when we can and when it makes sense. But, we're not going to use it 100% of the time just to be web standards compliant.<br /><br />So, swing away with your pure CSS clubs. Feel free to condescend. The rest of us will continue to ignore you and go about the business of making the web run.Unknownnoreply@blogger.com6tag:blogger.com,1999:blog-8171221.post-82963926764965285582009-02-02T10:38:00.000-08:002009-02-04T11:27:08.800-08:00Tables vs CSS: CSS Trolls begone<span style="font-weight: bold;">First mistake, drinking the CSS Kool-Aid</span><br /><br />Several weeks ago, I started designing the layout for my threaded comments on a social news site that I'm building. I had created a down and dirty layout using nested tables. It was ugly, and used nested tables but it worked.<br /><br />I was then paralized by guilt. I couldn't let the nested tables go. I figured that I had to take the time to layout the site properly using CSS and Div tags. I figured this would give me a chance to get up to speed on current web design best practices and to learn more about CSS. Besides, Reddit models their threaded comments in CSS, how hard can it be to model a tree structure out of nested div tags? I believed what I've read online about CSS, web standards, semantic purity, screen readers, blah, blah, blah...<br /><br />I drank the Kool-Aid, and I woke up two weeks later with a broken design. I had a headache from banging my head against the CSS wall. But, it simply couldn't be a problem with CSS itself. The problem had to be that I didn't understand CSS well enough. The answer had to be that I was bad, lazy or I didn't care about web standards or something. The internets had told me so.<br /><br />But like a shaft of light in a dusty attic, a single comment by Nosredna on <a href="http://ajaxian.com/archives/css-and-tables-the-war-continues#comments">this thread</a> changed my web designing life forever.<br /><br /><blockquote><p><span style="font-style: italic;">Want to see gratuitous? Go to Google Finance and use Web Developer Toolbar’s Outline->Outline Tables->Table Cells to show all the crazy ways Google is using tables for page layout.<br /></span><span style="font-style: italic;">.<br />iGoogle? Yep. For real table things, but also for layout, like that new sidebar to the left.<br />.<br />Twitter? Yep. For rough layout.<br />.<br />Google News? Yep. For layout.<br />.<br />Amazon? Lots of tables for layout.<br />.<br />Sure, you can say all these pros are lazy are dumb if you want, or we can try to improve the situation as we all learn to use CSS better. It’s going to be gradual.</span></p></blockquote><br /><span style="font-weight: bold;">I want my money back</span><br /><br />As I read web design forums and blogs, it seems that the Divine Essence itself has given us CSS standards and Div tags. Any one who would dare to use a table for non-tabular data in their web design is committing a sin against humanity, Love, Art and all that is good. Tables violate all that is semantically pure in this world. CSS is the new way forward, CSS is progress itself. Tables kill kittens, ponies and unicorns with each misguided use. Any and all problems are not the fault of CSS, it is the fault of the dark and sinister overlords of Microsoft who stubbornly refuse to bow to internationally recognized web development standards.<br /><br />Prompted by Nosredna's comment, I did some research. What I found has shocked and outraged me. How could the internet mislead me like this? I want my money back.<br /><br /><span style="font-weight: bold;">My research on Table usage</span><br /><br />I used the Firefox developer toolbar to take a look at the frontpages of the top 20 <a href="http://www.alexa.com/site/ds/top_sites?ts_mode=lang&lang=en">Alexa sites</a>. Please try it yourself. Install the FireFox developer toolbar extension. Then, for each page, click Outline->Outline Tables->Table Cells. Then go table-hunting.<br /><br />For the time-constrained, I submit to you the results of my highly scientific research:<br /><br /><br /><br /><ul><li><a href="http://www.yahoo.com/">Yahoo</a>: Minimal Use of tables. I found a picture of Hugh Downs horizontally aligned with it's caption in a table </li><li><a href="http://www.google.com/">Google Home Page</a>: Not only does Google use tables for it's iconic home page, it embeds styling in the <td> tags. The horror. </li><li><a href="http://youtube.com/">YouTube</a>: Uses tables for of layout of videos </li><li><a href="http://home.live.com/">Windows Live</a>: Uses tables for footer layout </li><li><a href="http://www.msn.com/">MSN</a>: There is one table, but it's only for stockquotes which is tabular data</li><li><a href="http://www.myspace.com/">MySpace</a> Semantically pure. MySpace. Whoda thunk it</li><li><a href="http://www.facebook.com/">Facebook</a>: Does form layout with tables </li><li><a href="http://www.blogger.com/">Blogger</a>: No tables anywhere on the front page</li><li><a href="http://www.orkut.com/">Orkut</a> All tables all the time </li><li><a href="http://www.rapidshare.com/">Rapidshare</a>: A table with a single <td> for header placement. And again a single <td> table for the central "browse" section. Tsk tsk</li><li><a href="http://www.microsoft.com/">Microsoft</a>: Navigation bar is a table. What did you expect? Unicorns and rainbows? </li><li><a href="http://www.google.co.in/">Google India</a>: It's the same Google layout. I wonder if they used copy and paste for the template? </li><li><a href="http://www.ebay.com/">Ebay</a>: Tables, tables every where </li><li><a href="http://www.hi5.com/">Hi5</a>: Tables for every thing, pretty much. BTW, I didn't even know this site existed until last week. Alexa rank 14!? </li><li><a href="http://www.photobucket.com/">Photobucket</a>: Tables for photo gallery layout </li><li><a href="http://www.aol.com/">AOL</a>: AOL's layout is semantically pure! Friggin AOL?</li><li><a href="http://www.google.co.uk/">Google UK</a>: Same GOOG layout. I'm now sure the copied an pasted their html</li><li><a href="http://www.amazon.com/">Amazon</a>: Now that's just silly </li><li><a href="http://www.imdb.com/">IMDB</a>: They used tables for their 3 column layout. What! No CSS framework? </li><li><a href="http://www.imageshack.us/">Imageshack</a>: Semantically pure as the driven snow. </li><li>Finally, even though it's not on Alexa's top 20, log in to your <a href="http://www.gmail.com/">Gmail</a> account and look at<br />the use of tables</li></ul><p><strong>My Hypothesis: Pure CSS design == overcompensation</strong></p><p>So, the five companies that use CSS are the web powerhouses--MSN, MySpace, Blogger, AOL and Imageshack. MSN, MySpace and AOL have been maligned for years throughout the web savvy community. My hypothesis is that these companies are overcompensating for the crap that they've taken thoughtout the years by designing their site in pure CSS. </p><p>Other companies that have more web street-cred like Google and Facebook don't really have to worry about how the web design community sees them. This leads to things like Google making extensive use of inline styling on their homepage instead of putting it in their stylesheet. I've never heard anyone claim that the <a href="http://www.google.com/search?hl=en&client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&hs=tjP&q=%22Google+folks+are+slouches%22&btnG=Search">Google folks are slouches </a>at the web design/development thing. Why is that?</p><p><strong>CSS Trolls, Begone!</strong></p><p>So, I don't ever want to read how web designers who don't use pure CSS in their layouts are lazy, stupid, don't care about their craft, backwards or don't bathe properly. Never again. People who post such things online are heretofore to be known as CSS Trolls and are to be banished from the internets for all time. Begone yea vile fiends! </p><p><strong>What I've learned</strong></p><p>I suppose I should have listened to the Perl and Lisp guys. The attitudes in those communities tends to be--just use the tool that gets the project shipped. It might be ugly, but it works. They practice what they preach, too. Just look at the table usage on the <a href="http://www.blogger.com/Perlmonks">Perlmonks</a> site or <a href="http://www.paulgraham.com/lisp.html">Paul Graham's</a> <a href="http://news.ycombinator.com/">Hacker News</a> with the developer toolbar. </p><p>So, I'm going to <a href="http://www.giveupandusetables.com/">give up and use tables</a>. It's going to take me all of 45 minutes to undo the last two weeks worth of CSS work. I'm going to launch my site. And then, I'm going to go and get a donut.</p><p>Anyone else find joyous and flagrant table based design? Please post links in the comments.</p><p>Update:</p><p>1. I'm not against all CSS. I'm against CSS trolls. And, by trolls, I mean people who post nasty comments about someone who disagrees with them on whether to use tables or CSS.<br /></p><p>2. I haven't given up on CSS for good. I did give up and use tables for one part of one project. I will give up and use tables a lot more frequently. I'm positive that 75% of Alexa's top 20 sites agree with me.</p><p>Update 2:<br /></p><p>My apologies to the devs at the 5 companies that were able to use a pure CSS layout. My snarkiness was more a function of my frustration with a technology, a specific form of trolling and trying to write an entertaining blog. That should in no way detract from the technical achievements you've accomplished. The "overachievement" bit was out of line. Much respect.<br /></p>Unknownnoreply@blogger.com129tag:blogger.com,1999:blog-8171221.post-74586558623174739062008-12-03T15:15:00.000-08:002008-12-03T16:32:19.432-08:00<h3><b>Hacking the Food Problem</b></h3><p>A perennial problem for my wife and I run into while bootstrapping our business is the lack of time. It seems like the daily grind of cooking, cleaning and shopping tends to eat up most of our available time that we have. <br /></p><p>As much as I'd love to take credit for this, it was my wife's idea. She was fed up with the day after day worry of what to cook and the drudgery of meal prep. So she came up with this system. I think it’s a great hack and an elegant solution to the food supply problem, so I thought I'd write a post about what she came up with.<br /></p><p>We try to eat at home 5-6 days a week but my wife hates thinking about what to cook every day. Hates it. We don’t have the money for a personal chef, so she found the idea for Once a Month Cooking (OAMC) on the web and we picked it up and ran with it.<br /></p>The basic premise of OAMC is that the majority of the effort of cooking is spent in planning and food prep. If that work can be consolidated into one big event, the process can be made repeatable and much more efficient.<br /><br /><p></p><h3><b><p>How does it work?</p></b></h3>In a nutshell:<br /> <ul><li>Find 8-10 recipes that will freeze well and preferably share common ingredients. <i>Think chopped garlic, onions, cubed Chicken, strips of beef</i>, etc...<br /> </li><li>Quadruple each recipe, creating 32-40 meals total<br /> </li><li>Create a shopping list of ingredients<br /> </li><li>Go crazy at Costco and the Farmer’s Market<br /> </li><li>Come home, do all the food prep at once. Chop all the garlic, onions, peppers, chicken, beef, etc… for all the meals, all at once<br /> </li><li>Divide ingredients into individual meal portions and place them in freezer storage bags<br /> </li><li>Label each freezer bag<br /> </li><li>Create cooking instructions for each recipe and include a copy with each meal<br /> </li><li>Freeze all meals<br /> </li><li>Thaw a meal a day, follow instructions on label to heat and eat.<br /><br /></li></ul><b><h3>Dude, that's wierd. Why do this?<br /></h3></b><p><b>We save a lot of time.</b> The sheer convenience of having a freezer full of tasty meals that can be ready in 30 minutes is wonderful. All that my wife does to plan the entire week’s meals is look at the list of meals in the freezer and decide which to prepare. It’s a big time saver at the end of a long day. Time saved on cooking is time we can spend on the business.<br /></p><b>We have a repeatable process.</b> Once the research is done on the 8-10 recipes and the shopping list is made, those can be recycled next month. At this time, we have a library of about 40-50 recipes that we reuse so we don’t get tired of eating the same things all the time. At some point I plan to put this in a database, but I haven’t gotten around to it yet.<br /><p><b>We save a lot of money.</b> We save a lot by buying items in bulk. When flank steak or chicken thighs are on sale, we can buy a bunch of them, and make our budget go a lot further. We also save money by avoiding restaurants. When we go to a restaurant and order a comparable meal, we pay 2-3 times as much. Saving money on food frees up money for the business.<br /></p><p><b>We both have specific diets we need to follow.</b> My wife is on a diet and I’m allergic to dairy. When we don’t do Once a Month Cooking, we really struggle to figure out what to eat. A lot of restaurant food or frozen TV dinners aren’t really friendly to either of our diets. By planning things ahead of time, we save a lot of that stress and headache.</p><p><b>We eat better.</b> We’re foodies, and we like knowing what is in our food and what isn’t. We don’t need all the extra sodium, preservatives or flavor enhancers that come with store bought prepared foods. We buy our produce from our local farmer’s market and it’s so much tastier than the stuff at the grocery store<br /></p><p><b>You have food when the in-laws come to visit.</b> If you have meals in the freezer, it’s really not a problem when family comes over for the holidays. There’s really no reason that the in-laws need to know that your delicious holiday meal came out of your freezer.<br /><br /></p><b><h3>How to get started<br /></h3></b><p><span style="font-weight: bold;">Double or triple your next meal</span>. That's probably the easiest way to dip your toes in the OAMC pool. into portions before cooking, and package and freeze the extra meals. Then pull them out in a couple of days and cook them. If the process worked, you’ve found a recipe that freezes well and can be reused.</p> <p><span style="font-weight: bold;">There is a learning curve</span> associated with the process and it’s best to go easy on yourself at first. You need to figure out what meals freeze well and what meals don’t. Some sauces or marinades don’t freeze well. Nothing’s worse than spending 8 hours putting meals in the freezer, only to discover three weeks later that the marinade you made for your Thai lemon chicken has transmogrified your Thai lemon chicken into Thai sour shoe leather.<br /><br /></p><b><h3>The down side<br /></h3></b><p><b>It’s a lot of work.</b> In doing this, you’re essentially you’re doing all the planning and food prep ahead of time. In 8-12 hours, my wife and I can do planning, shopping and food prep for the month. That saves us about an hour a day of cooking x 40 meals, so it’s a net time saver. But, the day that we do the Once a Month Cooking tends to be a long day.</p><p><b>It takes a while to build up a repertoire of recipes.</b> A lot of the recipes online for doing OAMC are casserole type dishes that are heavy on the cream based sauces and smothered in cheese. Ever since we moved to California, however we’ve decided to give up casseroles for Lent. Our tastes run quite a bit different than what we find online, so we’ve had to work hard to find a series of recipes that work for us and freeze well.<br /></p><p><b>You get addicted to kitchen gadgets.</b> It doesn’t take too many times of chopping 12 cups of onions, or 3 whole heads of garlic, before you start to realize that your life would be so much easier if you had that shiny new DeWalt/Kitchen Aid 24 quart, 12 horsepower food pulverizer that you just saw on America’s Most Macho Kitchens. Since we started OAMC, we’ve bought a 16 quart food processor, a 4 quart mixer with an engine powerful enough to propel a pontoon boat, a Food Saver vacuum pack system, and we shop at restaurant supply stores for our food packaging materials. </p><p><b>You need freezer space.</b> We now have 2 chest freezers and two refrigerators. We have a 14 cubic foot chest freezer we bought last year, a 7 cubic foot freezer that we owned while we lived in a one bedroom apartment and we recently purchased an extra fridge for the garage. We use it to store beverages as well as the multiple flats of meat that we purchase when we go to Costco. I’m pretty sure we’ve gone overboard. And, you don’t need this much freezer space. But if you start doing OAMC, the puny 3 cubic foot freezer in your refrigerator will start to look anemic and pathetic compared to the manly full-sized chest freezers at the Sears Appliance Store.<br /><br /></p><b><h3>Finally<br /></h3></b><p><span style="font-weight: bold;">You can outsource this.</span> I add, that sometimes we don’t feel up to doing all of this work ourselves, and there are companies that do similar things for you. The <a href="http://www.dinnerafare.com/">Dinner A’Fare</a> and <a href="http://dreamdinners.com">Dream Dinners</a> both have stores where you can either go in and do the meal preparation in their kitchens yourself, or for a fee, they will prepare the meals for you to put in your freezer. We do that from time to time as well. You don't save as much money, but we do save a lot of time that way. <br /></p>My wife and I have been doing this and refining this process in one form or another for the past 10 years, although it’s only been in the past 2 years that we’ve really tried to do it full time. Now, we’re at the point, where if we don’t do Once a Month Cooking, I find myself wandering aimlessly from freezer to freezer to fridge wondering what to eat. <br /><p>If people are interested, we’d be happy to post some example recipes, shopping list and cooking instructions. We’re due for our Once a Month Cooking Extravaganza this next weekend.</p>Unknownnoreply@blogger.com11tag:blogger.com,1999:blog-8171221.post-15930188458932921692008-09-09T01:25:00.000-07:002008-09-11T20:57:00.111-07:00Mechanical Turk: Now with 25 percent more Awesome.I just finished my first big project using Amazon's Mechanical Turk service. I'm in love.<br /><br />I had a list of over 6000 business names, addresses and url's of dubious quality that I needed to make sure was accurate. For a brief moment, I thought about checking them myself. But after doing several dozen by hand, I realized that I was violating the principle of Don't Be Silly(TM). So I was stuck. Either I could use half baked data as is or shelve the project entirely.<br /><br />Enter Mechanical Turk, and the hordes of awesomeness to save the day. I'd heard about Mechanical Turk several years ago, and I had been dying to use it. But, I never quite found 12,000 itches that I needed to scratch.<br /><br /><br /><span style="FONT-WEIGHT: bold">What it took to do the project</span><br /><br />I needed the Turkers (preferred nomenclature for those who complete tasks on Mechanical Turk) to look up the business name and URL, correct any errors they found and submit any comments. To increase accuracy, I wanted each task completed twice.<br /><br />Here are the basic steps I did to create a batch job.<br /><ul><li>I clicked a few buttons on the Turk's interface to tell it how many times you need each task to be done, any requirements on the Turkers that you wish to enforce, and how much you're willing to pay a Turker for the task. </li><li>I then created a HIT, or Human Intelligence Task. "Human Intelligence Task" sounds a bit complicated, but it's really simple and straight forward. You design a specialized HTML template with a form in it based off of sample ones that Mechanical Turk give you. </li><li>Finally, I reviewed everything, uploaded a CSV file filled with the name, addresss and URL data that I need to complete the template, and I hit submit.</li><li>Approve each task as it's completed, or wait until it's finished and you are able to use the "Approve All" button.<br /></li><li>5 days later, download my CSV file full of awesome.</li></ul><br />I did run a test of 2-300 addresses through the system to be sure the process worked. A few tweaks later, I loaded up the 6,204 line CSV file, sat back, and within minutes, hordes of Turkers were chipping away at my 12,408 tasks.<br /><br /><br /><span style="FONT-WEIGHT: bold">The Awesomeness</span><br /><br />Now, before I started, I was concerned about the quality of work that I was going to get for $.02 a task. I was half expecting a CSV file filled with unusable crap at the end of this, and I was ready to chalk it up to a lesson learned, and $300 wasted.<br /><br />Instead, I was blown away at how people handled the task. People really took pride in their work, and were interested in helping me out. Several Turkers emailed asking for clarification on how I wanted the individual fields completed. One or two emailed me wishing me luck with my project.<br /><br />One user pointed me to <a href="http://turkers.proboards80.com/">Turker Nation</a>, a bulletin board where Turkers can bounce questions off of each other. She had created a thread devoted to my task. So, I used the chance to the people working on it and give them a bit of guidance as to exactly what I wanted.<br /><br />Further examples of awesomeness were in the comments people submitted along with the information:<br /><br /><ul><li><span style="FONT-STYLE: italic">Can't find the exact web address for the hospital. Apologies for using a directory listing, in spite of it being the less desirable method.</span></li><li><span style="FONT-STYLE: italic">The business you're looking for is a famous cancer institute setup in 1898 by Dr. Roswell park. And it happens to be America's first cancer institute.</span></li><li><span style="FONT-STYLE: italic">I was unable to find a website, but went through the county government site to get the information. I checked multiple sites, since the address I found was different. They all listed the Airport Road address. </span></li></ul><br />One person couldn't find a URL for the business for me, so they emailed me to let me know that they called the business long distance and verified the address for me. <span style="FONT-STYLE: italic"><span style="FONT-STYLE: italic"><span style="FONT-STYLE: italic"><br /><br /></span></span></span><span style="font-size:+0;"><span style="font-size:+0;"><span style="font-size:+0;">Holy crap. People did all that for two cents a task. </span></span></span><span style="FONT-STYLE: italic"><span style="FONT-STYLE: italic"><span style="FONT-STYLE: italic"><span style="FONT-STYLE: italic"><br /><br /></span></span></span></span><span style="FONT-WEIGHT: bold">Tips</span><span style="FONT-STYLE: italic"><span style="FONT-STYLE: italic"><span style="FONT-STYLE: italic"><span style="FONT-STYLE: italic"><br /><br /></span></span></span></span>Several Turkers mentioned that they appreciated working for a decent requester (me). Apparently, Turkers tend to get upset when requesters do things like treat them like crap, talk down to them in their form, or don't approve their work on a task that pays a measly two cents.<br /><br />So, from my experience, I'd suggest a couple of tips when using the Mechanical Turk service.<br /><ul><li><span style="FONT-WEIGHT: bold">Don't be a jerk</span>. Approve people's work fer crying out loud. You're paying two cents to a nickels for people's time and effort. Reserve not approving people for users that fill your forms with spam or other hostile acts.<br /></li><li><span style="FONT-WEIGHT: bold">Appeal to people's kindness</span>. Most people really aren't doing this for the cash, although I'm sure some do. If people feel like they're helping someone out, or doing something for a good cause, they're going to feel good about themselves as well as earn two cents a task. Turkers really want the requesters to succeed.<br /></li><li><span style="FONT-WEIGHT: bold">Be clear about what you need</span>. I read a number of threads on Turker Nation where people were frustrated that they couldn't figure out what the requester wanted. Decreaseing people's pain level in completing your task means that more people will be interested in working for you.</li><li><span style="FONT-WEIGHT: bold">Be thankful</span>. I was really truly humbled at how many people helped me complete my task. I was also overwhelmed at how many people wished me luck on my new business venture. So, I made a point to express my gratitude in the HIT as well as on Turker Nation. People really responded to that.<br /></li></ul><br /><span style="FONT-STYLE: italic"><span style="FONT-STYLE: italic"><span style="FONT-STYLE: italic"><span style="FONT-STYLE: italic"></span></span></span></span><span style="FONT-WEIGHT: bold">Finally</span><span style="FONT-STYLE: italic"><span style="FONT-STYLE: italic"><span style="FONT-STYLE: italic"><span style="FONT-STYLE: italic"><br /></span></span><br /></span></span>The whole project of verifying a list of 6,204 business names, addresses and URLs was completed in under 5 days at a cost of $300. I'm thinking of all the different ways in which I can make use of the service.<br /><br />Seriously, it's cool. <a href="http://requester.mturk.com/mturk/welcome">You should check it out.</a>Unknownnoreply@blogger.com30tag:blogger.com,1999:blog-8171221.post-71681645517760806702008-05-15T11:25:00.000-07:002008-05-15T22:00:02.883-07:00Teach yourself you to Hack in 6-9 months<span style="font-weight: bold;font-family:arial;" >A.K.A. iamelgringo's opinionated and subjective syllabus for learning web programming/hacking</span><br /><br /><span style="font-family:arial;">Every month or two, someone on Hacker News asks "</span><a style="font-family: arial;" href="http://news.ycombinator.com/item?id=190518">How do I become a Hacker?</a><span style="font-family:arial;">" And, I'm happy to take a stab at the question. I had those questions myself at some point in time. Since it's Paul Graham's sandbox they're playing in, I'll assume that what they are really asking is how to make web applications. And, this post is my answer. </span><br /><br /><span style="font-family:arial;">First off, much of the below, can be learned from web tutorials. But, a lot of times, a book is the only thing that will scratch the itch. So, before you bankrupt yourself at Barnes and Ignoble, I'd highly recommend getting a </span><a style="font-family: arial;" href="http://my.safaribooksonline.com/home">Safari</a><span style="font-family:arial;"> subscription. There's a lot of great books out there on the below topics, and a Safari subscription is a cheap way to access a lot of them at once. </span><br /><br /><span style="font-weight: bold;">Learn what a text editor is, and why you need one</span> You'll be using one for the rest of your hacking career. Word or Wordpad will not do. Try <a href="http://www.e-texteditor.com/">E</a> or <a href="http://www.textpad.com/">textpad</a> on Windows, Textmate on Mac and Gedit or Kate on *nix to start. (time 1-2 days)<br /><br /><span style="font-weight: bold;">HTML.</span> This will get you familiar with the concept of looking at code and HTML is the lego brick of the interweb, so learn it well, grasshopper. I'd suggest putting off CSS and javascript until later. (Time 2-4 weeks)<br /><br /><span style="font-weight: bold;">Learn some flavor of Unix command line</span>. You're not going to get very far without being at least familiar with a command line and some basic Unix commands. Learning how to program can be discouraging at first because you don't realize how much work it is. You probably expect to be able to write a Word or Counterstrike clone in weeks. I did. Weaning yourself from a GUI and learning a command line is where the blue pill takes you. If you're married to a Windows box, your best bet is to download VMware player and a preconfigured virtual appliance with Ubutu on it. Bonus points for installing Linux from scratch on a spare computer. The more comfortable you are with a command line the better. Hacker:Unix == Capenter:hammer and saw. Nuff said.(Time 1-4 months)<br /><br /><span style="font-weight: bold;">Learn how to ssh into a remote Unix computer</span> and run commands on it. You'll need this a lot later. Learn how to FTP files from one computer to another. (Time 1-2 weeks)<br /><br /><span style="font-weight: bold;">Python</span>. Everybody has an opinion on what the best first language is, and they'll tell you all their arguments for them. Not being familiar with programming, none of that will make any sense to you. Save yourself a lot of worry and effort and just pick Python and run with it. Learning Python from the command line is a very nice introduction to an actual programming language. It's fairly easy to read, and there's a lot of good tutorials out there.<br /><br />Focus on learning how to open, change and interact with text documents. HTML and web pages are all text. You'll need it. Bonus points for learning what Regular Expressions are. They are very painful, but occasionally they're the only thing that will do the job. (Time 2-4 months)<br /><br /><span style="font-weight: bold;">Client Server basics, Networking basics and the HTTP protocol</span>. Read a couple of tutorials on each. (Time 1-2 weeks)<br /><br /><span style="font-weight: bold;">Apache</span> -- learn what a web server is. Learn how to set one up, edit config files and serve web pages. You need this if you're going to write web apps. (Time 1 -2 weeks)<br /><br /><span style="font-weight: bold;">SQL and databases</span>. Install MySQL and build basic databases from re-runnable SQL scripts. Learn database basics, what tables are, primary keys, foreign keys, data types, constraints. Again, it's painful, but this is what web frameworks are trying to save you from. It makes a lot more sense knowing what you're being saved from. (Time 1 month)<br /><br /><span style="font-weight: bold;">CGI programming with Python</span>. This is the great grand-daddy of all web programming. It's painful, but it's what all the web frameworks are trying to save you from doing. You'll need to know what they're reacting against before the tutorials start to make sense. (Time 1-2 weeks)<br /><br /><span style="font-weight: bold;">Now, you can pick up Django</span> and start messing around with it. All of the above will make Django much easier to learn. (Time 2-4 months)<br /><br /><span style="font-weight: bold;">CSS and Javascript</span> to make your web sites pretty and fun. (Time 1-2 months)<br /><br /><span style="font-weight: bold;">Lather, Rinse, Repeat.</span> (Time The rest of your life)<br /><br /><span style="font-family:arial;">Did I miss anything? If so, let me know.<br /><br /><span style="font-weight: bold;">edit: </span> There were some concerns on Hacker News about my devaluing the meaning of the word "hacker" which have some merit. If you want to learn how to be a hacker in the classic sense, start with Eric Raymond's <a href="http://www.catb.org/%7Eesr/faqs/hacker-howto.html">guide</a>. This post is primarily geared towards beginners who want to learn how to hack together web applications.<br /></span>Unknownnoreply@blogger.com9