<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5195382480858168001</id><updated>2011-12-07T15:56:21.931-06:00</updated><category term='ui iphone'/><category term='microsoft sorry inconvenience'/><category term='humanized enso buttons'/><category term='google app engine pixplz'/><category term='songza pie menu'/><category term='fucking apple goddammit'/><category term='aptana studio rails'/><category term='dreamhost sucks'/><title type='text'>angryinterface</title><subtitle type='html'>Bad interfaces make us angry.  We love a good interface.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>68</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-3673752489835285779</id><published>2011-12-07T15:53:00.001-06:00</published><updated>2011-12-07T15:56:21.939-06:00</updated><title type='text'>Addendum To The Last Post</title><content type='html'>My syntax highlighting turns into this at times:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-F8WU8dtbDLA/Tt_gfpGVDXI/AAAAAAAAAD0/2YfvFgL2p28/s1600/2011-12-07_1552.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="25" src="http://1.bp.blogspot.com/-F8WU8dtbDLA/Tt_gfpGVDXI/AAAAAAAAAD0/2YfvFgL2p28/s400/2011-12-07_1552.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://screencast.com/t/TgFYdCYa2vS" target="_blank"&gt;(Bigger)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-3673752489835285779?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/3673752489835285779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=3673752489835285779' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/3673752489835285779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/3673752489835285779'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2011/12/addendum-to-last-post.html' title='Addendum To The Last Post'/><author><name>Ted</name><uri>http://www.blogger.com/profile/00641053345542783701</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-F8WU8dtbDLA/Tt_gfpGVDXI/AAAAAAAAAD0/2YfvFgL2p28/s72-c/2011-12-07_1552.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-3481384138813628978</id><published>2011-12-01T12:59:00.001-06:00</published><updated>2011-12-01T15:14:47.008-06:00</updated><title type='text'>ColdFusion Builder 2 is a joke</title><content type='html'>Fresh install on OS X of ColdFusion Bulder 2 (TWO, the SECOND one). Typing a simple conditional, this is what I was given:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-noQ8l43FGVg/TtfPAptKN9I/AAAAAAAAADs/q5i079ebvHA/s1600/wut.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="119" src="http://2.bp.blogspot.com/-noQ8l43FGVg/TtfPAptKN9I/AAAAAAAAADs/q5i079ebvHA/s400/wut.jpg" width="367" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I also had to manually write the closing cfif tag. It's such a joke.&lt;br /&gt;&lt;br /&gt;The &lt;b&gt;absolute&lt;/b&gt; core purpose of an IDE is to be a text editor. Secondary to that are other features that are supposed to make you work better. ColdFusion Builder 2 (TWO!!!!!) completely fails on all levels as a text editor. It doesn't even function as well as notepad.exe!&lt;br /&gt;&lt;br /&gt;Text search is finicky, Find &amp;amp; Replace is completely broken half the time, the UI is often unresponsive (yay Eclipse), the text cursor sometimes disappears, double-clicking folders or files in an FTP view pops up the Rename dialog every time, HTML / CF tag completion usually doesn't happen, indention is broken, function parameter tooltips obscure the place you are typing, # and " completion randomly breaks (often leaving you with a ###)...the list goes on and on.&lt;br /&gt;&lt;br /&gt;Adobe has a big feature list on their site. I'm thinking&amp;nbsp;maybe they should go back and use some resources to fix the parts where you type things into the computer, you know, the whole point of the thing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-3481384138813628978?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/3481384138813628978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=3481384138813628978' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/3481384138813628978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/3481384138813628978'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2011/12/coldfusion-builder-2-is-joke.html' title='ColdFusion Builder 2 is a joke'/><author><name>Ted</name><uri>http://www.blogger.com/profile/00641053345542783701</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-noQ8l43FGVg/TtfPAptKN9I/AAAAAAAAADs/q5i079ebvHA/s72-c/wut.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-2415237421019847840</id><published>2011-03-03T00:14:00.002-06:00</published><updated>2011-03-03T00:14:49.075-06:00</updated><title type='text'>found elsewhere...</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://i.imgur.com/wRmVh.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="768" width="1366" src="http://i.imgur.com/wRmVh.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-2415237421019847840?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/2415237421019847840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=2415237421019847840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/2415237421019847840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/2415237421019847840'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2011/03/found-elsewhere.html' title='found elsewhere...'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-3312778878612985683</id><published>2010-09-12T18:44:00.000-05:00</published><updated>2010-09-12T18:44:41.476-05:00</updated><title type='text'>I hear the barrier to entry to getting into the car manufacturing business is low, too</title><content type='html'>&lt;a href="http://www.dailyfinance.com/story/video-sergey-brin-explains-why-google-instant-matters/19627672/"&gt;This article&lt;/a&gt; is hilarious.  It sounds like a perfectly normal business-y article until to you get to this gem:&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;The barrier to entry on the Instant concept is apparently low&lt;/b&gt;, and Yahoo and Microsoft's Bing have both tested the waters, according to a report in Search Engine Land.&lt;/blockquote&gt;(emphasis mine)&lt;br /&gt;&lt;br /&gt;So apparently Dawn Kawamoto, "Technology Reporter" for Daily Finance, thinks the barrier to entry to searching the entire internet instantly is low.&lt;br /&gt;&lt;br /&gt;I don't even know what to say.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-3312778878612985683?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/3312778878612985683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=3312778878612985683' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/3312778878612985683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/3312778878612985683'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/09/i-hear-barrier-to-entry-to-getting-into.html' title='I hear the barrier to entry to getting into the car manufacturing business is low, too'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-6046164599583658619</id><published>2010-09-11T18:04:00.000-05:00</published><updated>2010-09-11T18:04:42.047-05:00</updated><title type='text'>How to make a terrible landing page</title><content type='html'>I'm interested in advertising Kittyball to help promote it to a broader audience than "people who search kitty in the App Store and scroll waaay down", so I was looking to spend a few hundred dollars on ads.  I happened to see an ad on Gamasutra for GAO, so I clicked it.  Here's what I got:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_rsZUZ8HzRaQ/TIwJ-ssmg1I/AAAAAAAAAOo/tFugYJyYLVM/s1600/GAO_landing_page.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_rsZUZ8HzRaQ/TIwJ-ssmg1I/AAAAAAAAAOo/tFugYJyYLVM/s320/GAO_landing_page.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Admire the graphs! Gaze in awe at the pile of logos! Marvel at screenshots of tables! Apply for GAO advertiser account!&lt;br /&gt;&lt;br /&gt;Wait.&lt;br /&gt;&lt;br /&gt;Why should I apply if I have no idea what I'll get?&lt;br /&gt;&lt;br /&gt;So I sent GAO this email with their "contact us" form:&lt;br /&gt;&lt;blockquote&gt;RE: GAO: your landing page sucks :(&lt;br /&gt;&lt;br /&gt;I clicked an ad banner for your site from Gamasutra (&lt;br /&gt;http://www.game-advertising-online.com/?section=doc&amp;amp;action=advertising )&lt;br /&gt;and *nothing* on the landing page tells me why I should do business with&lt;br /&gt;you.  What will it cost me?  What benefits will I get?  Why are you better&lt;br /&gt;than your competitors?  I have no idea!&lt;br /&gt;&lt;br /&gt;I see that you've got some reach, but I have no frame of reference for that&lt;br /&gt;so I don't care.&lt;br /&gt;You've got some clients, but they're not me, so I don't care.&lt;br /&gt;You've got "cutting edge functionality" but I don't care.&lt;br /&gt;I can apply for an account, but why?&lt;/blockquote&gt;and they helpfully replied with:&lt;br /&gt;&lt;blockquote&gt;Good day,&lt;br /&gt;&lt;br /&gt;We are pleased to have confirmation that our landing page only appeals to&lt;br /&gt;people who care.&lt;br /&gt;&lt;br /&gt;Best Wishes,&lt;br /&gt;&lt;br /&gt;Valera Koltsov&lt;br /&gt;Game Advertising Online&lt;br /&gt;http://www.game-advertising-online.com&lt;/blockquote&gt;Thanks guys!  Guess I'll take my money elsewhere!&lt;br /&gt;&lt;br /&gt;A good landing page should directly tell the viewer what benefits they will receive.  A good landing page answers the question of "why should I give you my money?"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-6046164599583658619?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/6046164599583658619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=6046164599583658619' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/6046164599583658619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/6046164599583658619'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/09/how-to-make-terrible-landing-page.html' title='How to make a terrible landing page'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_rsZUZ8HzRaQ/TIwJ-ssmg1I/AAAAAAAAAOo/tFugYJyYLVM/s72-c/GAO_landing_page.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-1607685891753317232</id><published>2010-09-10T20:57:00.001-05:00</published><updated>2010-09-10T21:22:22.593-05:00</updated><title type='text'>Project Ten Dollar</title><content type='html'>EA has begun a new initiative to try and stop (or at least slow) used game sales&amp;nbsp;&lt;a href="http://kotaku.com/5468378/electronic-arts-project-ten-dollar-isnt-as-ominous-as-it-sounds"&gt;http://kotaku.com/5468378/electronic-arts-project-ten-dollar-isnt-as-ominous-as-it-sounds&lt;/a&gt;. &amp;nbsp;I don't think this is going to work as well as they hope.&lt;br /&gt;&lt;br /&gt;A and B go to GameStop to buy a game:&lt;br /&gt;&lt;br /&gt;Here's the old flow:&lt;br /&gt;1) A buys game for $60&lt;br /&gt;2) A beats game and sells to GameStop for $40, game "costs" him $20&lt;br /&gt;3) B buys game for $50 from GameStop, GameStop nets $10 for holding the game and B saves $10, and most importantly &lt;b&gt;EA thinks they're losing $60&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Here's the new flow in EA's magical fairyland:&lt;br /&gt;1) A buys game for $60&lt;br /&gt;2) A sells game to GameStop for $40&lt;br /&gt;3) B buys game from GameStop for $50, goes home and sees that some of it is disabled, missing, or inaccessible, curses GameStop, never buys a used game again, and only buys New, Quality Electronics Arts Games(r). &amp;nbsp;&lt;b&gt;EA Wins, hooray!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Here's what is going to really happen:&lt;br /&gt;1) A looks at used games price list, sees that game is only worth $10 used in buyback, now he can't save anything by selling back, so the game is worth less to him&lt;br /&gt;2) A buys a different game&lt;br /&gt;3) B is faced with a choice between "broken" used games, or used games that have full functionality, B buys a different game. &amp;nbsp;&lt;b&gt;EA blames pirates for drop in game sales&lt;/b&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-1607685891753317232?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/1607685891753317232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=1607685891753317232' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/1607685891753317232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/1607685891753317232'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/09/project-ten-dollar.html' title='Project Ten Dollar'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-4364671268218953056</id><published>2010-08-19T22:59:00.000-05:00</published><updated>2010-08-19T22:59:29.769-05:00</updated><title type='text'>Kittyball go!</title><content type='html'>My game, Kittyball, just went live!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://itunes.apple.com/us/app/kittyball/id384866969?mt=8"&gt;http://itunes.apple.com/us/app/kittyball/id384866969?mt=8&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_rsZUZ8HzRaQ/TG39dBFXLII/AAAAAAAAAOI/I7cvoiM4Wec/s1600/kittyball.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_rsZUZ8HzRaQ/TG39dBFXLII/AAAAAAAAAOI/I7cvoiM4Wec/s320/kittyball.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;After several months of work, and all of Sarah's art contributions, it's nice to finally see it up for sale!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-4364671268218953056?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/4364671268218953056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=4364671268218953056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/4364671268218953056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/4364671268218953056'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/08/kittyball-go.html' title='Kittyball go!'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_rsZUZ8HzRaQ/TG39dBFXLII/AAAAAAAAAOI/I7cvoiM4Wec/s72-c/kittyball.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-64463469213939262</id><published>2010-08-17T00:05:00.000-05:00</published><updated>2010-08-17T00:05:34.165-05:00</updated><title type='text'>New Project</title><content type='html'>I have started a project to create a site for developers and designers to share and collaborate on UI mockups and designs.&lt;br /&gt;&lt;br /&gt;In the past, I have found it extremely frustrating to work on UI design with the current tools available. &amp;nbsp;Trading zips of files through email and giant PDFs of mockup screens on shared storage are terrible ways to work.&lt;br /&gt;&lt;br /&gt;It's hard to keep track of different versions.&lt;br /&gt;It's hard to keep track of comments everyone has made.&lt;br /&gt;It's hard for more than 2 people to be involved in the process.&lt;br /&gt;It's hard to highlight changes.&lt;br /&gt;&lt;br /&gt;I'm going to solve all of those problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-64463469213939262?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/64463469213939262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=64463469213939262' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/64463469213939262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/64463469213939262'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/08/new-project.html' title='New Project'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-5464412711970251586</id><published>2010-08-17T00:04:00.000-05:00</published><updated>2010-08-17T00:04:28.575-05:00</updated><title type='text'>Kittyball submitted!</title><content type='html'>I somehow forgot to mention this when I did it, but I submitted KittyBall to the App Store on Monday, August 9th. &amp;nbsp;I guess we'll see what Apple thinks of it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-5464412711970251586?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/5464412711970251586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=5464412711970251586' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/5464412711970251586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/5464412711970251586'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/08/kittyball-submitted.html' title='Kittyball submitted!'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-4070984756651100341</id><published>2010-08-03T01:18:00.000-05:00</published><updated>2010-08-03T01:18:11.497-05:00</updated><title type='text'>The Modern Liberal Goal Part 2: Work as a game</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;So the question is:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;If the liberal goal [&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 20px; white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;everyone only has to work as much as they want to]&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;is achieved, what is there to do for someone seeking to become wealthy?  What can we do with an army of people who don't ever &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;have&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt; to work for a living?&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Now we've got two types of people in the world: those producing less than they consume, and those producing more.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;The government subsidizes people who are overconsuming, so they never have to work if they don't want to.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;So what's a future capitalist to do?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;We have to make them &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;want&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt; to work.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;We can do this in two ways: make work fun, or make work easy.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;How do we make work fun?&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Make it into a game!  People will put enormous effort into games voluntarily.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;We've already got some great business models for this:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Work hard for free!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Open source software and Wikipedia use this model.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;"Hey, give us tons of skilled labor and get no money in return!"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;"ok!"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Work hard for social benefits!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Facebook, Twitter, LinkedIn, MySpace, and every social networking site ever.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;"Hey, give us tons of information to help target ads!"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;"ok!"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Work hard to create value for paying users!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Zynga, Chinese MMOs (&lt;/span&gt;&lt;a href="http://www.slideshare.net/vgsummit/zhan-ye-what-us-game-developers-need-to-know-about-freetoplay-in-china-2408412"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;see slide 16 of this excellent presentation&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;).  We can make a free-to-play gameworld where our non-paying users add value for our paying users to take advantage of.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;"Pay for our game, you can kill noobs!"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;noobs: "noooo *adds value*"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;How do we make work easy?&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Bring it to them!  Who minds working from home?  Idiots, that's who.  All the cool people want to work from home.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;What have we got?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Use the massively parallel processor in your head to solve problems!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;a href="https://www.mturk.com/mturk/welcome"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Amazon's Mechanical Turk&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt; lets you solve a single tiny task and get a single tiny amount of money.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;"Transcribe this for a quarter!"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;"ok!"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Write an essay for $10!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Demand Studios will pay you to write essays for them, which they then spam all over the internet and place ads on.  It solves two problems: how do we fill the internet with more crap, and how do we get people to write more crap?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;"Write some crap!"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;"awesome!"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Make some media and we'll sell it and give you a cut!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Infinite stock photography sites do this, as well as the Envato network for sounds, music, graphics, and other media.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;"Make a song, we'll give you a few dollars per download!"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;"groovy!"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Ok, that's enough examples!&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Yay!  I hope you're convinced that our brave new world of consumers is not necessarily a bleak dystopia.  Sure, the government will take a ton of our money, and redistribute it to the less worthy, but that doesn't mean we can't still extract some value from them!&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-4070984756651100341?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/4070984756651100341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=4070984756651100341' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/4070984756651100341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/4070984756651100341'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/08/modern-liberal-goal-part-2-work-as-game.html' title='The Modern Liberal Goal Part 2: Work as a game'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-163197295853629998</id><published>2010-08-03T00:17:00.000-05:00</published><updated>2010-08-03T00:17:58.273-05:00</updated><title type='text'>Amazon!</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Today I started at Amazon.&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Amazon is strangely a software company that sells retail products. &amp;nbsp;I'm not sure how that happened, but I assume Jeff Bezos is to thank for it.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Thanks, Jeff Bezos.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;So now I am officially a Software Design Engineer - Gift Cards User Experience. &amp;nbsp;If you have any questions about being an SDEGCUE, feel free to ask me.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-163197295853629998?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/163197295853629998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=163197295853629998' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/163197295853629998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/163197295853629998'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/08/amazon.html' title='Amazon!'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-5525530237807772221</id><published>2010-08-01T20:42:00.000-05:00</published><updated>2010-08-01T20:42:57.360-05:00</updated><title type='text'>The Modern Liberal Goal</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 15px; white-space: pre-wrap;"&gt;A while ago, I tried to answer a simple question as a thought experiment: “what is the goal of the ‘&lt;a href="http://en.wikipedia.org/wiki/Modern_liberalism_in_the_United_States"&gt;modern liberal&lt;/a&gt;’ philosophy?”&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 15px; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 15px; white-space: pre-wrap;"&gt;I believe the answer is “everyone only has to work as much as they want to”.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 15px; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 15px; white-space: pre-wrap;"&gt;&lt;i&gt;Why do I believe that?&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 15px; white-space: pre-wrap;"&gt;In the United States, we have had a history of creating social welfare programs, and they tend to stick around.  &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;Welfare, Medicaid, WIC (the modern food stamps), unemployment, and disability are generally targeted at the poor and disadvantaged.  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 15px; white-space: pre-wrap;"&gt;Medicare and Social Security are targeted at the old, who often become poor as a combination of reduced earning ability and increasing health costs.  Unemployment, in particular, simply gives money to people who aren't earning any.  It's stated purpose is to help people "get back on their feet", but for practical purposes, it can be collected for a year (at least in Texas) without having to do anything in particular.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;These welfare programs spring out of a philosophy of "need".  I think there's a certain level of guilt that comes from rightfully earning the things we need, and continuing onward to earn things we want, while other people fail to even meet their own basic needs.  Governments then codify this guilt into programs to take money from those who've earned it and give it, in varying forms, to those who haven't.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;In a republic, these programs have a fair amount of stickiness due to taking money from a few voters and giving it to many voters.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 15px; white-space: pre-wrap;"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 15px; white-space: pre-wrap;"&gt;&lt;i&gt;Why do I think it is likely to happen?&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 15px; white-space: pre-wrap;"&gt;Technology has given the most intelligent a massive lever with which to move the world and create value.  A rich person today wields more power than nations of the past.  Thanks to these forces, there is more marginal wealth per person at the top.  Bill Gates easily met his own needs many years and many dollars ago.  If we take 99% of his money, we can provide for probably tens or even hundreds of thousands of people.  I think there is social pressure to do this.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;Along with amplifying the top tier's ability to create wealth, technology also lowers the bar for the poor to meet their basic needs.  Food is &lt;b&gt;cheap&lt;/b&gt; compared to any time in human history.  It becomes easier and easier for one person to meet their own needs.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: Times; font-size: medium; white-space: normal;"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: Times; font-size: medium; white-space: normal;"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Marshall Brain's &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Times; font-size: medium; white-space: normal;"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;a href="http://www.marshallbrain.com/manna1.htm"&gt;Manna&lt;/a&gt; provides in interesting guess as to two alternative futures, one ruled by the tyranny of the rich, who provide for the poor, but restrict their freedom to virtually nothing, and a more communist society where everyone is "rich" by pooling resources.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;If the liberal goal is achieved, what is there to do for someone seeking to become wealthy?  What can we do with an army of people who don't ever &lt;i&gt;have&lt;/i&gt; to work for a living?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;I'll tell you tomorrow.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-5525530237807772221?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/5525530237807772221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=5525530237807772221' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/5525530237807772221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/5525530237807772221'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/08/modern-liberal-goal.html' title='The Modern Liberal Goal'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-2002686847162041146</id><published>2010-06-10T01:58:00.000-05:00</published><updated>2010-06-10T01:58:30.531-05:00</updated><title type='text'>Improved graphics!</title><content type='html'>Bit of a title screen upgrade:&lt;br /&gt;Before:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_rsZUZ8HzRaQ/TBCMkyhjz7I/AAAAAAAAAN4/PHEMjAg7oH4/s1600/old+title+screen.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_rsZUZ8HzRaQ/TBCMkyhjz7I/AAAAAAAAAN4/PHEMjAg7oH4/s320/old+title+screen.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;After:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_rsZUZ8HzRaQ/TBCMmVHEPFI/AAAAAAAAAOA/jEZIalqeGoU/s1600/new+title+screen.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_rsZUZ8HzRaQ/TBCMmVHEPFI/AAAAAAAAAOA/jEZIalqeGoU/s320/new+title+screen.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-2002686847162041146?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/2002686847162041146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=2002686847162041146' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/2002686847162041146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/2002686847162041146'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/06/improved-graphics.html' title='Improved graphics!'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_rsZUZ8HzRaQ/TBCMkyhjz7I/AAAAAAAAAN4/PHEMjAg7oH4/s72-c/old+title+screen.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-4174067797618924919</id><published>2010-06-06T23:21:00.001-05:00</published><updated>2010-06-06T23:28:27.601-05:00</updated><title type='text'>KittyBall evolved!</title><content type='html'>The evolution of KittyBall, in screenshots (all art is done by the lovely and talented Sarah Householder):&lt;br /&gt;&lt;br /&gt;(March 28, 2010)&lt;br /&gt;The very first prototype, just some debug lines with Box2d physics, and placeholder art.  Creates lines just in time as you move to the right, crashes after 30 or so lines:&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_rsZUZ8HzRaQ/TAxv7cFH2zI/AAAAAAAAALw/o2Jh7AtemYw/s1600/2010-03-25.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://3.bp.blogspot.com/_rsZUZ8HzRaQ/TAxv7cFH2zI/AAAAAAAAALw/o2Jh7AtemYw/s400/2010-03-25.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Added KittyBall art, first test of texturing the ground with custom tiles:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_rsZUZ8HzRaQ/TAxv8v2rgcI/AAAAAAAAAL4/vSwoYKokRI4/s1600/2010-03-28.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="256" src="http://4.bp.blogspot.com/_rsZUZ8HzRaQ/TAxv8v2rgcI/AAAAAAAAAL4/vSwoYKokRI4/s400/2010-03-28.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Figured out how to fill the ground in with OpenGL ES polygons.  This method is fragile and had to be replaced later:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_rsZUZ8HzRaQ/TAxv9JPvWtI/AAAAAAAAAMA/XE59UYYFbso/s1600/2010-03-29.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="272" src="http://2.bp.blogspot.com/_rsZUZ8HzRaQ/TAxv9JPvWtI/AAAAAAAAAMA/XE59UYYFbso/s400/2010-03-29.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Filled the sky with a nice blue gradient:&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_rsZUZ8HzRaQ/TAxv-KcYSDI/AAAAAAAAAMI/mdD5ZwfoOrQ/s1600/2010-03-30.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="255" src="http://3.bp.blogspot.com/_rsZUZ8HzRaQ/TAxv-KcYSDI/AAAAAAAAAMI/mdD5ZwfoOrQ/s400/2010-03-30.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Fixed the ground fill, added cute background clouds on a parallaxed scrolling layer:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_rsZUZ8HzRaQ/TAxv_HAlMEI/AAAAAAAAAMQ/P11TAQtRtWs/s1600/2010-04-01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="256" src="http://4.bp.blogspot.com/_rsZUZ8HzRaQ/TAxv_HAlMEI/AAAAAAAAAMQ/P11TAQtRtWs/s400/2010-04-01.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Experiment with tinting the sky to match the time of day, pulled for final version:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_rsZUZ8HzRaQ/TAxv_nLMAMI/AAAAAAAAAMY/JvHbWPRmgdk/s1600/2010-04-02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="253" src="http://1.bp.blogspot.com/_rsZUZ8HzRaQ/TAxv_nLMAMI/AAAAAAAAAMY/JvHbWPRmgdk/s400/2010-04-02.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;KittyBall shoots stars out when he bonks the ground:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_rsZUZ8HzRaQ/TAxwAjHgwVI/AAAAAAAAAMg/cQ7XpmXdO5Y/s1600/2010-04-04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="256" src="http://1.bp.blogspot.com/_rsZUZ8HzRaQ/TAxwAjHgwVI/AAAAAAAAAMg/cQ7XpmXdO5Y/s400/2010-04-04.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Added a sun in the background, as well as a rotating sky tint (that's what broke the ground filling), also pictured is the "you are tapping the screen" spiral, which looks like ass (because I made it), so it's also gone in the final version:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_rsZUZ8HzRaQ/TAxwBiinUoI/AAAAAAAAAMo/StN5eeMlabE/s1600/2010-04-05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="257" src="http://4.bp.blogspot.com/_rsZUZ8HzRaQ/TAxwBiinUoI/AAAAAAAAAMo/StN5eeMlabE/s400/2010-04-05.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;First pass at adding a DogCube enemy to chase you.&amp;nbsp; Thanks random dog image I found online! :&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_rsZUZ8HzRaQ/TAxwEoWHNjI/AAAAAAAAAMw/pDMjDSNxVNc/s1600/2010-04-07.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="255" src="http://4.bp.blogspot.com/_rsZUZ8HzRaQ/TAxwEoWHNjI/AAAAAAAAAMw/pDMjDSNxVNc/s400/2010-04-07.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Playing around with adding some kind of rain or snow effect.&amp;nbsp; Didn't like the look or additional visual complexity, eventually pulled for final:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_rsZUZ8HzRaQ/TAxwFovQN5I/AAAAAAAAAM4/zpShRk0iYko/s1600/2010-04-07-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="265" src="http://1.bp.blogspot.com/_rsZUZ8HzRaQ/TAxwFovQN5I/AAAAAAAAAM4/zpShRk0iYko/s400/2010-04-07-1.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;DogCube achieves full cuteness:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_rsZUZ8HzRaQ/TAxwGqTxcBI/AAAAAAAAANA/J9rTtEFEoZM/s1600/2010-04-11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="257" src="http://2.bp.blogspot.com/_rsZUZ8HzRaQ/TAxwGqTxcBI/AAAAAAAAANA/J9rTtEFEoZM/s400/2010-04-11.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Added indicator to show how close DogCube is to getting you, and signs to mark your progress through the level:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_rsZUZ8HzRaQ/TAxwHhWt6LI/AAAAAAAAANI/NTHvk9WsADE/s1600/2010-05-02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="266" src="http://2.bp.blogspot.com/_rsZUZ8HzRaQ/TAxwHhWt6LI/AAAAAAAAANI/NTHvk9WsADE/s400/2010-05-02.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Improved the sign:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_rsZUZ8HzRaQ/TAxwIu4BezI/AAAAAAAAANQ/0s6I0ad7FFs/s1600/2010-05-02-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="332" src="http://2.bp.blogspot.com/_rsZUZ8HzRaQ/TAxwIu4BezI/AAAAAAAAANQ/0s6I0ad7FFs/s400/2010-05-02-1.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Added placeholder background mountains, more parallaxed layers:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_rsZUZ8HzRaQ/TAxwJlKg1KI/AAAAAAAAANY/4lg4CXCuL-U/s1600/2010-05-02-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="253" src="http://1.bp.blogspot.com/_rsZUZ8HzRaQ/TAxwJlKg1KI/AAAAAAAAANY/4lg4CXCuL-U/s400/2010-05-02-2.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mountains get cute upgrade:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_rsZUZ8HzRaQ/TAxwK-uXwiI/AAAAAAAAANg/dvKfIDrdUH8/s1600/2010-05-03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="257" src="http://1.bp.blogspot.com/_rsZUZ8HzRaQ/TAxwK-uXwiI/AAAAAAAAANg/dvKfIDrdUH8/s400/2010-05-03.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Added more ground tiles, pause button:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_rsZUZ8HzRaQ/TAxwL9DXSXI/AAAAAAAAANo/9yevd-7kKTk/s1600/2010-06-06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="265" src="http://1.bp.blogspot.com/_rsZUZ8HzRaQ/TAxwL9DXSXI/AAAAAAAAANo/9yevd-7kKTk/s400/2010-06-06.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(June 6, 2010)&lt;br /&gt;Hey, it's the moon!&amp;nbsp; Sign is fixed to match overall look and feel:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_rsZUZ8HzRaQ/TAxwMy2eV_I/AAAAAAAAANw/XWxB0PC0H-U/s1600/2010-06-06-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="265" src="http://4.bp.blogspot.com/_rsZUZ8HzRaQ/TAxwMy2eV_I/AAAAAAAAANw/XWxB0PC0H-U/s400/2010-06-06-1.png" width="400" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-4174067797618924919?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/4174067797618924919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=4174067797618924919' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/4174067797618924919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/4174067797618924919'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/06/kittyball-evolved.html' title='KittyBall evolved!'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_rsZUZ8HzRaQ/TAxv7cFH2zI/AAAAAAAAALw/o2Jh7AtemYw/s72-c/2010-03-25.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-3253157364675112698</id><published>2010-05-02T02:17:00.000-05:00</published><updated>2010-05-02T02:17:34.030-05:00</updated><title type='text'>Married!</title><content type='html'>Now that I'm married, development can continue!  Worked on adding signs to add distance measurements so a player can see how far they've gotten (if their eyes can track a rapidly moving sign).  Adding polish to a game is a very time-consuming but rewarding part of game development.&lt;br /&gt;&lt;br /&gt;iPhone OS 4.0's "double-tap to show running tasks" feature is very helpful in getting impromptu screen captures to inspect features.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-3253157364675112698?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/3253157364675112698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=3253157364675112698' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/3253157364675112698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/3253157364675112698'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/05/married.html' title='Married!'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-8056014875424578522</id><published>2010-04-21T02:18:00.002-05:00</published><updated>2010-04-21T02:18:52.549-05:00</updated><title type='text'>Worked around</title><content type='html'>I found a workaround which is to &lt;b&gt;completely&lt;/b&gt; redo the entire way I was planning to show an end-of-game screen.  Stupid Cocos2d.  It's been nothing but helpful up to this point, but I could not figure out how to unpause it.&lt;br /&gt;&lt;br /&gt;The game is now functionally complete, so I'm basically looking at polish + market + ship.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-8056014875424578522?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/8056014875424578522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=8056014875424578522' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/8056014875424578522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/8056014875424578522'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/04/worked-around.html' title='Worked around'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-4850434555809051761</id><published>2010-04-20T01:59:00.000-05:00</published><updated>2010-04-20T01:59:15.022-05:00</updated><title type='text'>stuck</title><content type='html'>Argh, I am totally stuck on a bug with ReplaceScene.  Cocos2d seems to have problems with a scene replacing itself.&lt;br /&gt;&lt;br /&gt;I may eventually have to just work around this bug.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-4850434555809051761?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/4850434555809051761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=4850434555809051761' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/4850434555809051761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/4850434555809051761'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/04/stuck.html' title='stuck'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-5986234369416705484</id><published>2010-04-19T10:47:00.003-05:00</published><updated>2010-04-19T10:58:15.469-05:00</updated><title type='text'>Fucking clown shoes</title><content type='html'>So my apartment was burglarized on Friday when I wasn't home. My iMac (with all of my pictures from the past 3 or 4 years, not backed up because I'm an idiot) among many other things were taken, mostly electronics. It got me thinking, all of these devices have network cards in them, why the fuck do the manufacturers not track these things when they show up on the net?&lt;br /&gt;&lt;br /&gt;Imagine the day where stealing an Internet-enabled device is useless because it phones home as soon as it hops online. Sure, measures could be taken to circumvent phoning home, but it would really be bad news for small time criminals. I know software that does this exists, but why isn't that shit considered part of the base functionality? It's such a stupid omission.&lt;br /&gt;&lt;br /&gt;If Apple tracked every unique IP address per computer and gave me access, I could just find out exactly where that machine got online, call the police and say "it's near / at this address". Done. Would probably even be able to recover my pictures with some good HD tools. Unfortunately it's not the future yet, so we're stuck dealing with the police who don't really give a shit and have better things to do. Thus, electronics will continue to be an awesome reason to break into people's homes. Suck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-5986234369416705484?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/5986234369416705484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=5986234369416705484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/5986234369416705484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/5986234369416705484'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/04/fucking-clown-shoes.html' title='Fucking clown shoes'/><author><name>Ted</name><uri>http://www.blogger.com/profile/00641053345542783701</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-7787843463222965793</id><published>2010-04-19T04:31:00.002-05:00</published><updated>2010-04-19T04:31:48.819-05:00</updated><title type='text'>It's a game!</title><content type='html'>My game is now an actual game instead of a tech demo.  It can be played, it has a victory (really a loss) condition, and it can be restarted.  Woo!&lt;br /&gt;&lt;br /&gt;I feel like this app will mostly serve as a learning experience and I'll be able to do much cooler stuff in the future in a lot less time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-7787843463222965793?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/7787843463222965793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=7787843463222965793' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/7787843463222965793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/7787843463222965793'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/04/its-game.html' title='It&apos;s a game!'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-7469342191336599297</id><published>2010-04-07T14:55:00.001-05:00</published><updated>2010-04-07T14:57:56.036-05:00</updated><title type='text'>Tech Journalists</title><content type='html'>&lt;a href="http://gizmodo.com/5511678/apple-ipad-review?skyline=true&amp;s=i"&gt;This is the most ridiculous (iPad) article&lt;/a&gt;. I can't believe someone got paid to write that. Ugh.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-7469342191336599297?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/7469342191336599297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=7469342191336599297' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/7469342191336599297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/7469342191336599297'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/04/tech-journalists.html' title='Tech Journalists'/><author><name>Ted</name><uri>http://www.blogger.com/profile/00641053345542783701</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-8599976181123252889</id><published>2010-04-07T01:48:00.000-05:00</published><updated>2010-04-07T01:48:13.023-05:00</updated><title type='text'>OpenGL and Cocos2d</title><content type='html'>Turns out it's reasonably tricky to draw raw polys correctly in a multi-layered Cocos scene, but I figured out how to do it.  Now the ground in the game is repaired and I can work on the boss monster.&lt;br /&gt;&lt;br /&gt;I think I may localize this game by not having a single word in it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-8599976181123252889?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/8599976181123252889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=8599976181123252889' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/8599976181123252889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/8599976181123252889'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/04/opengl-and-cocos2d.html' title='OpenGL and Cocos2d'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-5789054028445394052</id><published>2010-04-05T02:11:00.000-05:00</published><updated>2010-04-05T02:11:16.199-05:00</updated><title type='text'>Particle effects</title><content type='html'>I am adding particle effects left and right.  They have to be the cheapest way (in a Cocos2d game) to add visual appeal for the programming effort.&lt;br /&gt;&lt;br /&gt;I also found out that a 1024x1024 PVRTC 4bpp texture makes the simulator run at 30fps, but the 3gs still runs at a totally smooth 60fps.&lt;br /&gt;&lt;br /&gt;I think the hardest part of iPhone development is never having the assurance that you're going to sell enough copies to make it all worthwhile.  Sigh...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-5789054028445394052?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/5789054028445394052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=5789054028445394052' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/5789054028445394052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/5789054028445394052'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/04/particle-effects.html' title='Particle effects'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-4453393449959778295</id><published>2010-03-31T14:32:00.002-05:00</published><updated>2010-03-31T14:58:49.813-05:00</updated><title type='text'>iPad Applications</title><content type='html'>With the iPad about to launch I've been doing some thinking about the sorts of apps we'll see on the device. I think iPad-specific apps will be a completely different beast than iPhone apps. The iPhone has pretty limited screen real-estate (320x480 or transpose if rotated) and while the iPad is "only" 1024x768, it comparatively allows a significantly larger amount of stuff to be slapped onto the screen. A lot of iPhone apps are made by single people without a designer behind them. The bad bunch of these (and there's a lot of them) have either extremely basic or straight-up-shitty UI design.&lt;br /&gt;&lt;br /&gt;With all the extra space on the iPad screen, I think the quality of apps will have to go up. With iPhone you can make a minimal or relatively shitty UI because there just isn't that much of it on the screen at any given time. Most of the iPhone screen is dedicated to showing content, so if the UI sucks it doesn't always detract from the overall experience too badly. That just won't be the case with the iPad. Poorly laid out components, tons of whitespace, crappy art assets, etc. - all these things will stand out even more on the iPad. &lt;br /&gt;&lt;br /&gt;There are tons - TONS - of simple news aggregators on the App Store. 20 apps that could have been combined into 1 (like sports apps which follow University X basketball, baseball, football, etc. 1 app for each sport) which have almost no UI at all. It works because they show whatever data and it fits and looks nice. But what happens when you up the res on that? A totally blank screen. I just don't think that will fly anymore on iPad. Perhaps I'm wrong - but it will be interesting to see what comes after the first round of (probably polished) apps.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-4453393449959778295?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/4453393449959778295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=4453393449959778295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/4453393449959778295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/4453393449959778295'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/03/ipad-applications.html' title='iPad Applications'/><author><name>Ted</name><uri>http://www.blogger.com/profile/00641053345542783701</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-1277656321997746160</id><published>2010-03-29T11:16:00.001-05:00</published><updated>2010-03-29T11:16:48.905-05:00</updated><title type='text'>Progress Report</title><content type='html'>I forgot to say how the game was doing!&lt;br /&gt;&lt;br /&gt;It's going great!  Game development is strange, I look forward to getting better at it.  After coming from the UI-centric world of HTML/CSS/JS, it's very different to care about sprites and physics engines, and a bunch of other stuff the user only perceives indirectly.&lt;br /&gt;&lt;br /&gt;Now I'm stuck on how to combine OpenGL primitives with Cocos2d draw calls.  Cocos seems to want to stomp my polys no matter what I do :(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-1277656321997746160?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/1277656321997746160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=1277656321997746160' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/1277656321997746160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/1277656321997746160'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/03/progress-report.html' title='Progress Report'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-6977866306678537847</id><published>2010-03-29T02:27:00.000-05:00</published><updated>2010-03-29T02:27:32.781-05:00</updated><title type='text'>Good job Google App Engine</title><content type='html'>After my complaining &lt;a href="http://blake8086.blogspot.com/2009/01/google-app-engine-argh.html"&gt;previously&lt;/a&gt;, Google has fixed one of my complaints!  Now you can store images as blobs and retrieve them as such instead of awkwardly storing them in your database.  No more arbitrary image size limits!&lt;br /&gt;&lt;br /&gt;Also bonus feature, task queues!  Now you can actually have web apps do something when a user isn't specifically requesting it.  Pretty neat.&lt;br /&gt;&lt;br /&gt;Now if only they would fix the other six problems, that would be great!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-6977866306678537847?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/6977866306678537847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=6977866306678537847' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/6977866306678537847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/6977866306678537847'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/03/good-job-google-app-engine.html' title='Good job Google App Engine'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-8246885148571375964</id><published>2010-03-29T02:15:00.000-05:00</published><updated>2010-03-29T02:15:11.090-05:00</updated><title type='text'>No, you can't break it into sections</title><content type='html'>Pretty much everyone who read my previous entry said "hey, can't you break the image into sections?"&lt;br /&gt;&lt;br /&gt;No, you can't break it into sections.&lt;br /&gt;&lt;br /&gt;The whole point of the algorithm is that it turns multiple images into one high quality image.  To do this, it has to align images &lt;b&gt;precisely&lt;/b&gt;.  If you sacrifice any part of the image during alignment, you will not get a precise match.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-8246885148571375964?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/8246885148571375964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=8246885148571375964' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/8246885148571375964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/8246885148571375964'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/03/no-you-cant-break-it-into-sections.html' title='No, you can&apos;t break it into sections'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-7073158867317955558</id><published>2010-03-24T10:52:00.000-05:00</published><updated>2010-03-24T10:52:57.906-05:00</updated><title type='text'>super... project abandon!</title><content type='html'>Well, I have abandoned yet another project.  Yay!&lt;br /&gt;&lt;br /&gt;This time it was a super-resolution app.  The idea was: you take several photos with your iPhone camera, it processes them, and returns one really high-quality photo.  Turns out there is &lt;b&gt;no way in hell&lt;/b&gt; that you will have enough ram to complete that task.  Just allocating the floating point array to process photos took 36mb out of an allowed 24.&lt;br /&gt;&lt;br /&gt;If someone is super interested, I still have the code laying around.&lt;br /&gt;&lt;br /&gt;Time to work on the simplest game I can so I can finally get a project out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-7073158867317955558?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/7073158867317955558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=7073158867317955558' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/7073158867317955558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/7073158867317955558'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/03/super-project-abandon.html' title='super... project abandon!'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-8939044851614791875</id><published>2010-03-19T10:32:00.005-05:00</published><updated>2010-03-19T10:37:31.130-05:00</updated><title type='text'>Apple and Naming Conventions</title><content type='html'>For those not familiar with Cocoa (Mac OS, iPhone) development, Apple has strict naming schemes for their libraries. They actually have an entire document dedicated to this (&lt;a href="http://developer.apple.com/mac/library/documentation/cocoa/conceptual/CodingGuidelines/CodingGuidelines.html#//apple_ref/doc/uid/10000146"&gt;seen here&lt;/a&gt;). Methods that return a boolean are "shouldPerformAction", actions which are about to happen will look like "willDoSomething", actions that just completed will look like "didDoSomething", etc. A lot of Cocoa criticism comes from the fact that this causes a lot of the method / variable names to be extremely verbose. "Can row x in a table be selected?" becomes &lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt; "Trim this string" becomes:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;I initially disliked this when first starting iPhone dev, however after a number of months it's really grown on me. Yeah some of the lengthy stuff is annoying, but it really makes a lot of the code REALLY CLEAR on what's happening and that is extremely valuable.&lt;br /&gt;&lt;br /&gt;Anyways, sometimes this naming scheme breaks down and that's what I'm here to complain about. When the user taps a row on a table (like in the email or iPod app) the following method is called:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;There's also others that follow this:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath&lt;br /&gt;- (void)tableView:(UITableView *)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Some cells have a little blue circle with a &gt; inside of it, this is called a UITableViewCellAccessoryTypeDetailDisclosureIndicator (yeah). When tapped, the view slides over to a more detailed view of the data. For example you tap a row in the Recent Calls list and it calls the number back, tap the blue circle and it brings up contact information for that person. So what method is called when this is tapped?&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Huh? Not at all what you'd expect. I figured I'd be looking for "didTapAccessoryButtonForRowAtIndexPath". There's no "did" in this. Instead of "...RowAtIndexPath..." we have "...RowWithIndexPath...". Why is this so different? I know this sounds like a tiny nitpicky thing, but Apple has put literally thousands of man hours into standardizing this shit. It makes no sense that this single method name is so different from the others.&lt;br /&gt;&lt;br /&gt;Now, it didn't take me more than a few seconds to find the method name I was looking for, so I'm not complaining about it destroying my productivity or anything, but it just doesn't make any sense for this to be so deviant.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-8939044851614791875?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/8939044851614791875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=8939044851614791875' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/8939044851614791875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/8939044851614791875'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/03/apple-and-naming-conventions.html' title='Apple and Naming Conventions'/><author><name>Ted</name><uri>http://www.blogger.com/profile/00641053345542783701</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-7190942774325768978</id><published>2010-03-13T03:38:00.004-06:00</published><updated>2010-03-13T03:44:24.486-06:00</updated><title type='text'>new idea</title><content type='html'>I had an idea today:&lt;br /&gt;&lt;br /&gt;Mechanical Turk is a great way to take a little bit of thinking from a lot of people and apply it to one big project.  But what about *really* boring stuff, like recognizing whether a photo is of a mouse or not?&lt;br /&gt;&lt;br /&gt;I give you Mousewheel v1.0.  It features massive arrays of lab mice, tv screens, and buttons that dispense treats.  Three mice are shown an image and trained to respond a certain way to it.  For example: if we are searching for mice in photos, they push "yes" if there's a mouse, and "no" if not.  The majority gets a food pellet each.  Mice with low accuracy are ground up and fed to the other mice in order to serve them better.&lt;br /&gt;&lt;br /&gt;The cost of running a single mousenode is far cheaper than a mechanical turker.  Watch out Amazon, I'm coming for you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-7190942774325768978?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/7190942774325768978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=7190942774325768978' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/7190942774325768978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/7190942774325768978'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/03/new-idea.html' title='new idea'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-7284999138836299885</id><published>2010-03-13T03:36:00.001-06:00</published><updated>2010-03-13T03:37:58.621-06:00</updated><title type='text'>+0600</title><content type='html'>We're saving multiple images, woo!&lt;br /&gt;&lt;br /&gt;I am amazed at how complicated I made this problem.  I had to keep track of some files, and what project they belong to.  I realized I could just use folders, and just name everything the timestamp of when it was created.  I guess I was so caught up in database-think, I thought everything had to have a magical uniqueid.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-7284999138836299885?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/7284999138836299885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=7284999138836299885' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/7284999138836299885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/7284999138836299885'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/03/0600.html' title='+0600'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-1839974966495444076</id><published>2010-03-08T02:31:00.000-06:00</published><updated>2010-03-08T19:33:21.769-06:00</updated><title type='text'>Things I have learned</title><content type='html'>It is hard to debug UI issues, because you can never tell if that white screen you're looking at is really the widget you think it is, or maybe it didn't load and that's the background, or maybe it loaded and it's just colored entirely white, or maybe something white is on top of it, or maybe your code is in an infinite loop and it erased the last UI element, but hasn't loaded the new one.&lt;br /&gt;&lt;br /&gt;Argh.&lt;br /&gt;&lt;br /&gt;I got the phone taking a picture without any of the camera interface crap, and saved it to memory.  Now to take a million photos and save them all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-1839974966495444076?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/1839974966495444076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=1839974966495444076' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/1839974966495444076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/1839974966495444076'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/03/things-i-have-learned.html' title='Things I have learned'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-3059013895215130948</id><published>2010-02-27T01:09:00.002-06:00</published><updated>2010-02-27T01:19:41.407-06:00</updated><title type='text'>Virtual Currency</title><content type='html'>What's the difference between real currency and virtual currency?&lt;br /&gt;&lt;br /&gt;The only thing I can really come up with is that there are laws pertaining to real currency.&lt;br /&gt;&lt;br /&gt;I keep waiting for someone to make a decent virtual currency exchange.  I think all you would have to do is get some VC funding and get a few major players onboard with you.  As soon as a large enough currency allows you to trade for real money or goods, you'll be able to do all your business government tax-free.  You'll still have to pay Facebook or Microsoft or Apple or whoever, but not your local or federal government.&lt;br /&gt;&lt;br /&gt;It is a brave new world we live in where every company is trying to build their own money system.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-3059013895215130948?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/3059013895215130948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=3059013895215130948' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/3059013895215130948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/3059013895215130948'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/02/virtual-currency.html' title='Virtual Currency'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-769885665601616282</id><published>2010-02-27T01:05:00.002-06:00</published><updated>2010-02-27T01:09:48.630-06:00</updated><title type='text'>Switch!</title><content type='html'>I have switched to primarily developing an app that will let people share sketches in a more... asynchronous way.  I now have an app that I can scribble a white line on.  Woo!&lt;br /&gt;&lt;br /&gt;Hilton has agreed to work with me on our iSketch clone, and I think we'll get a lot accomplished, I'll be doing server dev, marketing, support, and some client-side, and he will do the majority of client-size.&lt;br /&gt;&lt;br /&gt;I think that a major mistake many app developers make is to follow these three steps:&lt;br /&gt;1) produce quality app&lt;br /&gt;2) ???&lt;br /&gt;3) profit!&lt;br /&gt;&lt;br /&gt;Except when 3 never materializes, they blame anything and anyone for it.  "The app store is broken!" "Apple is fucking us again!" "The users don't appreciate quality apps!" "Rargh!"  Step 2 is actually marketing.  If you took the best product in the world and stuck it on a random shelf at Wal-Mart, you could expect only a handful of sales, at best.  This is what you're doing on the App Store.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-769885665601616282?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/769885665601616282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=769885665601616282' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/769885665601616282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/769885665601616282'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/02/switch.html' title='Switch!'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-2582494867989044180</id><published>2010-01-29T23:29:00.002-06:00</published><updated>2010-01-30T00:01:18.209-06:00</updated><title type='text'>Threading woo!</title><content type='html'>Fixed an annoying UI bug where UI updates done outside the main thread fail to update until an event propagates into the main thread.  Now a user can "login" to the game.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-2582494867989044180?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/2582494867989044180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=2582494867989044180' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/2582494867989044180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/2582494867989044180'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/01/threading-woo.html' title='Threading woo!'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-1602703874048031596</id><published>2010-01-27T09:24:00.001-06:00</published><updated>2010-01-27T22:25:03.048-06:00</updated><title type='text'>Woo ski trip!</title><content type='html'>I finally got back into development after a long bunch of trips and wedding planning.&lt;br /&gt;&lt;br /&gt;Now my app has the beginnings of a UI.  All I have to write is 50 other things and it will be working!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-1602703874048031596?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/1602703874048031596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=1602703874048031596' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/1602703874048031596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/1602703874048031596'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2010/01/woo-ski-trip.html' title='Woo ski trip!'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-3644577490987829975</id><published>2009-11-29T02:23:00.002-06:00</published><updated>2009-11-29T02:26:06.847-06:00</updated><title type='text'>Happy T-GIV</title><content type='html'>Boy, writing a client-server game is hard.  You have to simultaneously develop a protocol, write a server, and write a client to prove that each of the other two components are doing what you expect them to.&lt;br /&gt;&lt;br /&gt;I feel like I haven't gotten enough done lately on this project.  I need to get more done.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-3644577490987829975?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/3644577490987829975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=3644577490987829975' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/3644577490987829975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/3644577490987829975'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/11/happy-t-giv.html' title='Happy T-GIV'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-2849786636340289782</id><published>2009-11-25T23:02:00.001-06:00</published><updated>2009-11-25T23:04:23.181-06:00</updated><title type='text'>Technical Debt</title><content type='html'>I decided that I was designing my game entirely wrong, and I have since decided to work on a different project.  For those who cared, I was working on a Tetris Attack clone, which seems to be conspicuously absent from the App Store.&lt;br /&gt;&lt;br /&gt;This new project will require me to write a server for the game, which should make this an interesting (and more difficult) task.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-2849786636340289782?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/2849786636340289782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=2849786636340289782' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/2849786636340289782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/2849786636340289782'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/11/technical-debt.html' title='Technical Debt'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-3306248537074658874</id><published>2009-11-21T00:38:00.004-06:00</published><updated>2009-11-21T01:24:59.358-06:00</updated><title type='text'>See glass</title><content type='html'>Turns out you can do callbacks with Cocos2d.  Nice job hiding one of your most powerful features!  Maybe they felt it was:&lt;ol&gt;&lt;li&gt;Too difficult for new programmers&lt;/li&gt;&lt;li&gt;Error prone, even for experienced programmers&lt;/li&gt;&lt;li&gt;Just didn't really feel like documenting things that day&lt;/li&gt;&lt;/ol&gt;Today my main competitor set their price on the App Store to free!  Thanks guys!&lt;br /&gt;&lt;br /&gt;I really think devs are 100% shooting themselves in the foot by setting their price to free in an effort to gain popularity and convert that to sales.  You can look at it as extremely low conversion rate advertising.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-3306248537074658874?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/3306248537074658874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=3306248537074658874' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/3306248537074658874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/3306248537074658874'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/11/see-glass.html' title='See glass'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-2234791764725140228</id><published>2009-11-20T01:04:00.002-06:00</published><updated>2009-11-20T01:11:12.641-06:00</updated><title type='text'>Stupid Errors</title><content type='html'>Today I got a fucking deadlock because a filename was blank.  Sometimes Objective-C errors go way beyond cryptic, to where they make harder to debug the program than if it just said "ERROR: Something broke."&lt;br /&gt;&lt;br /&gt;Now I have gravity animations woo.&lt;br /&gt;&lt;br /&gt;I found &lt;a href="http://www.pinchmedia.com/#pinchanalytics"&gt;Pinch Analytics&lt;/a&gt; the other day, does anyone know if it's any good?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-2234791764725140228?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/2234791764725140228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=2234791764725140228' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/2234791764725140228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/2234791764725140228'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/11/stupid-errors.html' title='Stupid Errors'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-2976897020938436217</id><published>2009-11-19T01:42:00.003-06:00</published><updated>2009-11-19T02:11:54.456-06:00</updated><title type='text'>Gravity</title><content type='html'>Well, now I have gravity and matching implemented.&lt;br /&gt;&lt;br /&gt;The hardest part of making a puzzle game that is a nice to look at and play is making everything not happen instantly.&lt;br /&gt;&lt;br /&gt;Today I was reading the SA iPhone apps thread and iPhone games thread.  To quote Ted, "100 pages isn't a thread, it's a fucking research project", but I'm finding it quite informative.&lt;br /&gt;&lt;br /&gt;They pointed me to the &lt;a href="http://appshopper.com/blog/"&gt;AppShopper Blog&lt;/a&gt; and &lt;a href="http://toucharcade.com/"&gt;Touch Arcade&lt;/a&gt; (yes, I hadn't heard of this yet).&lt;br /&gt;I thought it was pretty interesting to see the number of apps approved per day in the store.&lt;br /&gt;&lt;a href="http://appshopper.com/blog/"&gt;&lt;img src="http://appshopper.com/blog/wp-content/uploads/2009/09/apps.png" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-2976897020938436217?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/2976897020938436217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=2976897020938436217' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/2976897020938436217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/2976897020938436217'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/11/gravity.html' title='Gravity'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-3560240423843303794</id><published>2009-11-18T00:23:00.002-06:00</published><updated>2009-11-18T00:39:27.833-06:00</updated><title type='text'>Cocococos2d</title><content type='html'>Today I fixed the bug with Cocos &lt;b&gt;apparently&lt;/b&gt; projecting my 2d game with a 3d OpenGL flag that was causing my tiles to have random gaps between them ranging from 0 to 1 pixels.  Argh.  Here's the code for people who care:&lt;br /&gt;&lt;pre&gt;[[Director sharedDirector] attachInView:window];&lt;br /&gt;[[Director sharedDirector] setProjection:CCDirectorProjection2D];&lt;/pre&gt;&lt;br /&gt;I probably lost the ability to make my game wave-y, but whatever, now it looks right.&lt;br /&gt;&lt;br /&gt;I also finally found the &lt;a href="http://www.cocos2d-iphone.org/api-ref/0.8.2/annotated.html"&gt;Cocos2d iPhone docs&lt;/a&gt;  Now I can have some idea of what the hell I'm doing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-3560240423843303794?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/3560240423843303794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=3560240423843303794' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/3560240423843303794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/3560240423843303794'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/11/cocococos2d.html' title='Cocococos2d'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-4143446264909908815</id><published>2009-11-16T01:43:00.003-06:00</published><updated>2009-11-16T02:14:54.816-06:00</updated><title type='text'>Big whiny crybabies throw a tempy tantrum</title><content type='html'>I got pieces moving around interactively with touches today, woo!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.rogueamoeba.com/utm/2009/11/13/airfoil-speakers-touch-1-0-1-finally-ships/"&gt;Some guy&lt;/a&gt; and &lt;a href="http://joehewitt.com/post/on-middle-men/"&gt;some other guy&lt;/a&gt; quit iPhone development a few days ago.&lt;br /&gt;&lt;br /&gt;I'm sure Apple is totally scared the iPhone is going to fail now.  "Oh no!  We've lost two &lt;i&gt;high profile&lt;/i&gt; iPhone developers!  Wherever are we going to find several thousand more to replace them?"&lt;br /&gt;&lt;br /&gt;Ask the average iPhone user to name &lt;b&gt;one&lt;/b&gt; iPhone developer.  They'll say "uh... the guy who made Paper Toss?"&lt;br /&gt;&lt;br /&gt;No one gives a shit about individual developers.  Get over it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-4143446264909908815?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/4143446264909908815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=4143446264909908815' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/4143446264909908815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/4143446264909908815'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/11/big-whiny-crybabies-throw-tempy-tantrum.html' title='Big whiny crybabies throw a tempy tantrum'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-437416827393219329</id><published>2009-11-13T03:05:00.002-06:00</published><updated>2009-11-13T03:09:53.849-06:00</updated><title type='text'>Coordinates locked in</title><content type='html'>Argh I still don't like Objective-C.  This is like a painful lesson in why Python is such a great language.  Explicitly setting pointers to point to things, allocating memory for objects, declaring things twice in .h and .m files.  All Gay.&lt;br /&gt;&lt;br /&gt;I got my developer certificate thing from Apple.  Boy, did they bury the instructions to get everything set up.  I was expecting an email that said "click this link, 1, 2, 3, 4, now you're done!"  But I had to go dig for it.&lt;br /&gt;&lt;br /&gt;My app is reporting coordinates that were clicked on.  It's a small step, but I'm making progress.&lt;br /&gt;&lt;br /&gt;I bought geoDefense Swarm.  It's definitely been worth my $2.  I recommend it to anyone who likes tower defense games.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-437416827393219329?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/437416827393219329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=437416827393219329' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/437416827393219329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/437416827393219329'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/11/coordinates-locked-in.html' title='Coordinates locked in'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-8096596154330512154</id><published>2009-11-10T09:28:00.002-06:00</published><updated>2009-11-10T09:40:35.699-06:00</updated><title type='text'>Apple logo glowing brightly</title><content type='html'>Well I came to Dallas to work on iPhone stuff with Ted, got next to nothing done, but he convinced me to use &lt;a href="http://code.google.com/p/cocos2d-iphone/"&gt;Cocos2d-iPhone&lt;/a&gt; as a framework for my game.  I think I will end up saving way more time by using this than I lost from sitting around doing nothing for 4 days.&lt;br /&gt;&lt;br /&gt;I also found the &lt;a href="http://openfeint.com/developers"&gt;OpenFeint dev page&lt;/a&gt;.  Even though I hate the name, it seems like it might be useful for adding multiplayer with low effort.&lt;br /&gt;&lt;br /&gt;Random plug: &lt;a href="http://www.criticalthoughtgames.com/geodefenseswarm"&gt;geoDefense Swarm&lt;/a&gt; has to be one of the best tower defense games I've ever seen, and it's for iPhone!  Screenshot:&lt;br /&gt;&lt;a href="http://www.criticalthoughtgames.com/geodefenseswarm"&gt;&lt;img src="http://www.criticalthoughtgames.com/sites/default/files/images/geodefenseSwarmFP_0.png"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-8096596154330512154?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/8096596154330512154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=8096596154330512154' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/8096596154330512154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/8096596154330512154'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/11/apple-logo-glowing-brightly.html' title='Apple logo glowing brightly'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-7270426040392540149</id><published>2009-11-08T09:29:00.002-06:00</published><updated>2009-11-08T11:19:59.721-06:00</updated><title type='text'>NS means NeXTstep</title><content type='html'>Working on iPhone dev with Ted.  I just manage to draw two &lt;b&gt;separate&lt;/b&gt; objects with OpenGL.  It's too bad none of the Obj-C examples show how to do this.  They mostly seem to focus on cramming all your geometry into a single triangle strip for efficiency.&lt;br /&gt;&lt;br /&gt;Optimize-first design isn't really a development practice I want to adopt.&lt;br /&gt;&lt;br /&gt;I guess Zen Bondage finally made a port to iPhone: &lt;a href="http://zenbound.com/"&gt;Zen Bound&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-7270426040392540149?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/7270426040392540149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=7270426040392540149' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/7270426040392540149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/7270426040392540149'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/11/ns-means-nextstep.html' title='NS means NeXTstep'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-8936532571746222481</id><published>2009-11-06T03:02:00.002-06:00</published><updated>2009-11-06T03:20:50.868-06:00</updated><title type='text'>ES means "Embedded Systems"</title><content type='html'>Today I learned more about OpenGL ES.  It's still confusing, but less confusing.  I also learned the guy who wrote the "butterfly" demo of texture atlasing for iPhone is a huge douchebag that writes code that is a million times more complicated than it needs to be to demonstrate a feature.  The object coordinates and texture coordinates are stored in a single interleaved array!  Ridiculous!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-8936532571746222481?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/8936532571746222481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=8936532571746222481' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/8936532571746222481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/8936532571746222481'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/11/es-means-embedded-systems.html' title='ES means &quot;Embedded Systems&quot;'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-123980508800045083</id><published>2009-11-03T22:43:00.006-06:00</published><updated>2009-11-03T22:57:04.359-06:00</updated><title type='text'>Kaleidoscope</title><content type='html'>Today I got a custom texture loaded into an iPhone app and made it spin crazily.&lt;br /&gt;&lt;br /&gt;It's the little things that count.&lt;br /&gt;&lt;br /&gt;I found out how the iPhone (and other devices) can locate you based on wifi networks alone.  Apparently &lt;a href="http://www.skyhookwireless.com/howitworks/coverage.php"&gt;some companies&lt;/a&gt; just drive around checking for wireless networks and save their locations.  Also, it appears that whenever you get a GPS fix, and then query for location data, it uses the combination of your GPS+wifi listing to store new information about the wifi networks.  I wish I had gotten in on the ground floor of that.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cocoawithlove.com/2009/11/creating-iphone-and-mac-icons-using.html"&gt;Tutorial&lt;/a&gt; on how to make this icon:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_rsZUZ8HzRaQ/SvEJC4iLQpI/AAAAAAAAAGw/vWPiaJJWf5M/s1600-h/all-icons+copy.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 97px; height: 95px;" src="http://2.bp.blogspot.com/_rsZUZ8HzRaQ/SvEJC4iLQpI/AAAAAAAAAGw/vWPiaJJWf5M/s400/all-icons+copy.png" alt="" id="BLOGGER_PHOTO_ID_5400107373334053522" border="0" /&gt;&lt;/a&gt;&lt;a href="http://cocoawithlove.com/2008/09/drawing-gloss-gradients-in-coregraphics.html"&gt;and this button (programmatically)&lt;/a&gt;:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_rsZUZ8HzRaQ/SvEJK77fI-I/AAAAAAAAAG4/DSZV8XQeDkw/s1600-h/gradientSampleSmall.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 89px; height: 45px;" src="http://2.bp.blogspot.com/_rsZUZ8HzRaQ/SvEJK77fI-I/AAAAAAAAAG4/DSZV8XQeDkw/s400/gradientSampleSmall.png" alt="" id="BLOGGER_PHOTO_ID_5400107511684473826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As well as &lt;a href="http://cocoawithlove.com/2009/04/8-confusing-objective-c-warnings-and.html"&gt;8 confusing Objective-C warnings&lt;/a&gt; that I expect to be seeing a lot of in the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-123980508800045083?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/123980508800045083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=123980508800045083' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/123980508800045083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/123980508800045083'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/11/kaleidoscope.html' title='Kaleidoscope'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_rsZUZ8HzRaQ/SvEJC4iLQpI/AAAAAAAAAGw/vWPiaJJWf5M/s72-c/all-icons+copy.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-274462756784964600</id><published>2009-11-02T21:58:00.002-06:00</published><updated>2009-11-03T04:03:55.794-06:00</updated><title type='text'>Tempo</title><content type='html'>Today I found out that in order to have your OpenGL app run on all iPhones and iPod Touches, it has to be OpenGL ES 1.1.  I'm not really sure why Apple is pushing OpenGL 2.0.  I guess they have plans to phase out the old version and encourage developers to create games and graphics-intensive apps that only run on the newest hardware.&lt;br /&gt;&lt;br /&gt;I've heard about Flash on the iPhone, but I remain skeptical.  Business models that have the option for a third party to "flip a switch" and ban them make me nervous.  And yes, I realize the irony of saying that as an iPhone developer, but I think Apple has less incentive to block a random app than to block Flash-&gt;iPhone development.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://iphonedevelopment.blogspot.com/2009/10/adobe-adds-iphone-native-app-creation.html"&gt;Jeff LeMarche's take on Flash on iPhone&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My friend's company's app got approved today!  &lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=336474791&amp;mt=8"&gt;MMA Underground (iTunes link)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-274462756784964600?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/274462756784964600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=274462756784964600' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/274462756784964600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/274462756784964600'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/11/tempo.html' title='Tempo'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-6693596861036320045</id><published>2009-11-02T21:25:00.002-06:00</published><updated>2009-11-02T21:56:54.353-06:00</updated><title type='text'>MacBook Nub</title><content type='html'>I got my MacBook on Friday, and I've been enjoying learning about all its Mac-y weirdness.  I've found a ton of things the Mac does better than any of the PCs I've used, here's a short list:&lt;ul&gt;&lt;li&gt;The power adapter light turns green when the battery is charged&lt;/li&gt;&lt;li&gt;Program installation is so easy, just drag a file to /Applications&lt;/li&gt;&lt;li&gt;A reasonable amount of software comes pre-installed&lt;/li&gt;&lt;li&gt;The design of the laptop is beautiful&lt;/li&gt;&lt;li&gt;The screen is way, way brighter than I could ever need&lt;/li&gt;&lt;li&gt;The multi-touch touchpad is extremely convenient&lt;/li&gt;&lt;li&gt;The magsafe adapter is something everyone should copy&lt;/li&gt;&lt;/ul&gt;However, there are negatives:&lt;ul&gt;&lt;li&gt;The laptop came with OS X 10.5 preinstalled and a 10.6 disk for some reason.  Why wasn't 10.6 just installed already?&lt;/li&gt;&lt;li&gt;It's impossible to drag an item up very far with the touchpad because the hinge for "clicking" is at the top and quickly overwhelms your accuracy-strained finger&lt;/li&gt;&lt;li&gt;I don't like the keyboard, I like the one on my Dell laptop a million times more.&lt;/li&gt;&lt;li&gt;The arrow keys are squished :(&lt;/li&gt;&lt;li&gt;The mouse acceleration is all goofy, it's like it was designed for people who value the ability to select a specific pixel over people who just want to click buttons&lt;/li&gt;&lt;/ul&gt;I'm also confused, why is Apple able to provide so many programs out-of-box with a Mac and OS X, but it's an anti-trust issue if Microsoft does it?  As someone on SA pointed out, Linux can read MS Office files out of the box, but MS Windows can't.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-6693596861036320045?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/6693596861036320045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=6693596861036320045' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/6693596861036320045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/6693596861036320045'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/11/macbook-nub.html' title='MacBook Nub'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-4017146619975381802</id><published>2009-10-29T01:13:00.005-05:00</published><updated>2009-10-29T04:33:08.107-05:00</updated><title type='text'>PBRTs, the new rage?</title><content type='html'>Iconfactory just released &lt;a href="http://iconfactory.com/home/permalink/2177"&gt;Pickin' Time&lt;/a&gt; for the iPhone, another in a long line of PBRTs (plant-based reflex testers).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_rsZUZ8HzRaQ/SulgS1k3VTI/AAAAAAAAAGg/fmUEsju2MiE/s1600-h/2009-10-29_0423.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 270px;" src="http://2.bp.blogspot.com/_rsZUZ8HzRaQ/SulgS1k3VTI/AAAAAAAAAGg/fmUEsju2MiE/s400/2009-10-29_0423.png" alt="" id="BLOGGER_PHOTO_ID_5397951505115862322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I'm sort of confused as to the apparently super positive reception this app has gotten, especially after all the &lt;a href="http://gedblog.com/2009/09/28/losing-ireligion/"&gt;trouble&lt;/a&gt; they've had with selling apps.&lt;br /&gt;I don't want to be mean, but seriously, who writes a review like:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_rsZUZ8HzRaQ/Sulgu-jUMtI/AAAAAAAAAGo/V4NC7sRB0Cc/s1600-h/2009-10-29_0429.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 100px;" src="http://3.bp.blogspot.com/_rsZUZ8HzRaQ/Sulgu-jUMtI/AAAAAAAAAGo/V4NC7sRB0Cc/s400/2009-10-29_0429.png" alt="" id="BLOGGER_PHOTO_ID_5397951988561621714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It's sort of like an inverse-bizarro YouTube where all the reviews are super coherent and all the words are spelled correctly.  (or perhaps there is some shilling involved?  eh?)&lt;br /&gt;&lt;br /&gt;Convenient list of rejection reasons from the iStore: &lt;a href="http://iphoneincubator.com/blog/app-store/rejections"&gt;App Store Rejection Reasons&lt;/a&gt;&lt;br /&gt;&lt;a href="http://wilshipley.com/blog/2006/01/thinking-boxes-what-kittens-can-do-to.html"&gt;Thinking, Boxes, &amp;amp; What Kittens Can Do To Them&lt;/a&gt; - Wil Shipley's opinion on thinking outside the box -- "don't".  PS I read tons of his blog today, it's great and I recommend it to any programmer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-4017146619975381802?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/4017146619975381802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=4017146619975381802' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/4017146619975381802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/4017146619975381802'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/10/pbrts-new-rage.html' title='PBRTs, the new rage?'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_rsZUZ8HzRaQ/SulgS1k3VTI/AAAAAAAAAGg/fmUEsju2MiE/s72-c/2009-10-29_0423.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-4050159601299412318</id><published>2009-10-28T15:27:00.004-05:00</published><updated>2009-10-28T17:14:59.994-05:00</updated><title type='text'>Piracy is good for games</title><content type='html'>I've been reading some posts about iPhone app piracy.  I think a lot of developers are missing an opportunity here.  Pirates represent an awesome form of price discrimination.  You can sell your app for $0.99 or fifty dollars or whatever, and then get an instant userbase from people who weren't going to pay for it anyways.&lt;br /&gt;&lt;br /&gt;Say you write a multiplayer game.  Within an hour of launch you will have:&lt;ol&gt;&lt;li&gt;Instant playerbase, even if only one person has legitimately purchased your app, especially important for multiplayer "versus" apps&lt;/li&gt;&lt;li&gt;Filled out highscore tables (so it doesn't look like a ghost town to those first purchasers)&lt;/li&gt;&lt;li&gt;Hundreds (or more) of users to create content for you, by saving replays, creating levels, customizing characters, or whatever&lt;/li&gt;&lt;li&gt;People for your legitimate buyers to chat with (even though every other word will be "fag")&lt;/li&gt;&lt;li&gt;And cheap, viral PR to generate buzz about your game&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;I wish more people would write about how to take advantage of these benefits instead of just lamenting the losses.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-4050159601299412318?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/4050159601299412318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=4050159601299412318' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/4050159601299412318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/4050159601299412318'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/10/piracy-is-good-for-games.html' title='Piracy is good for games'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-2512760246774425362</id><published>2009-10-28T15:19:00.003-05:00</published><updated>2009-10-28T15:27:03.523-05:00</updated><title type='text'>Pro Strat</title><content type='html'>The iPhoneDevBlogOSphere is abuzz (probably) over the game &lt;a href="http://stoneloops.com/"&gt;StoneLoop&lt;/a&gt;'s removal from the App Store.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://codeminion.com/blogs/maciek/2009/10/where-is-stoneloops-or-how-to-get-rid-of-your-competition-in-the-apple-appstore/"&gt;blog post here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In summary: complain to Apple that all apps competing with you are infringing on a trademark and have Apple pull your competition for you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-2512760246774425362?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/2512760246774425362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=2512760246774425362' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/2512760246774425362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/2512760246774425362'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/10/pro-strat.html' title='Pro Strat'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-2974029686623051210</id><published>2009-10-27T02:14:00.003-05:00</published><updated>2009-10-27T02:35:53.866-05:00</updated><title type='text'>Reading about failure</title><content type='html'>I spent a lot of today reading blogs about hard numbers on iPhone app sales.  Initially, I was depressed, thinking I wouldn't be able to make even a reasonable amount of money with an app, but by the end I became convinced, that yes, there is room for one more good game priced even as high as $4.99.&lt;br /&gt;&lt;br /&gt;The main difference I see between the games that did well and the games that flopped is marketing.  You have to spend at least 50% of your time pushing your app &lt;b&gt;hard&lt;/b&gt; through every form of media you can access.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.streamingcolour.com/blog/2009/04/14/how-to-make-dapple-in-6-months/"&gt;How to Make Dapple in 6 Months&lt;/a&gt; - Owen Goss's explanation of where he spent his time when developing &lt;a href="http://www.streamingcolour.com/games/dapple/"&gt;Dapple&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://www.veiledgames.com/blog/?p=86"&gt;The Grand Review Site List&lt;/a&gt; - A review of iPhone app review sites by the makers of &lt;a href="http://www.veiledgames.com/?page=upthere"&gt;Up There&lt;/a&gt;.  Good information if you want to promote your app.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-2974029686623051210?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/2974029686623051210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=2974029686623051210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/2974029686623051210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/2974029686623051210'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/10/reading-about-failure.html' title='Reading about failure'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-861671665434793645</id><published>2009-10-25T20:28:00.003-05:00</published><updated>2009-10-25T23:52:49.731-05:00</updated><title type='text'>New iPhone Developer</title><content type='html'>I have decided to become an iPhone developer.  I don't know Objective-C and I know very little about the app development process.  I just bought a MacBook today, it will be my first Apple computer product ever.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://smellslikedonkey.com/wordpress/?page_id=274"&gt;Piracy and the App Store&lt;/a&gt; - App developer discovers his app is widely pirated, and pirates don't convert to pay users.  I can't say I'm surprised, and I agree that piracy generally isn't worth fighting.  I still had no idea that piracy was this rampant.&lt;br /&gt;&lt;br /&gt;Cute:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.uistencils.com/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 198px;" src="http://2.bp.blogspot.com/_rsZUZ8HzRaQ/SuUpyb3tjqI/AAAAAAAAAGY/ZOl8rDKBqJ0/s400/01_4_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5396765674925035170" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-861671665434793645?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/861671665434793645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=861671665434793645' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/861671665434793645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/861671665434793645'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/10/new-iphone-developer.html' title='New iPhone Developer'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_rsZUZ8HzRaQ/SuUpyb3tjqI/AAAAAAAAAGY/ZOl8rDKBqJ0/s72-c/01_4_2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-5844893408188469513</id><published>2009-01-29T23:11:00.007-06:00</published><updated>2009-01-29T23:21:02.465-06:00</updated><title type='text'>austin usability, seriously?</title><content type='html'>Welcome to &lt;a href="http://www.austinusability.com/"&gt;austin usability&lt;/a&gt;, the least usable usability site I've seen in a long time.  If you go to the page, you're instantly greeted with a popup that blocks you from using the site.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_rsZUZ8HzRaQ/SYKNAWI35wI/AAAAAAAAAFw/NnsMiwWoEpA/s1600-h/2009-01-29_2214.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 365px;" src="http://1.bp.blogspot.com/_rsZUZ8HzRaQ/SYKNAWI35wI/AAAAAAAAAFw/NnsMiwWoEpA/s400/2009-01-29_2214.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5296951148823439106" /&gt;&lt;/a&gt;Nice.&lt;br /&gt;&lt;br /&gt;When you're shopping for a usability company, what do you care about the most?  I hope you answered "journalists' opinions of the company":&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_rsZUZ8HzRaQ/SYKNFB6lMYI/AAAAAAAAAF4/Ro4TFlapa_k/s1600-h/2009-01-29_2118.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 373px;" src="http://2.bp.blogspot.com/_rsZUZ8HzRaQ/SYKNFB6lMYI/AAAAAAAAAF4/Ro4TFlapa_k/s400/2009-01-29_2118.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5296951229294129538" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's their "what we do" page:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_rsZUZ8HzRaQ/SYKNKMCb2_I/AAAAAAAAAGA/c4P2EhL8_jU/s1600-h/2009-01-29_2122.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 378px; height: 400px;" src="http://4.bp.blogspot.com/_rsZUZ8HzRaQ/SYKNKMCb2_I/AAAAAAAAAGA/c4P2EhL8_jU/s400/2009-01-29_2122.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5296951317910772722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I like my version better:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_rsZUZ8HzRaQ/SYKNNz5EvRI/AAAAAAAAAGI/xJOerzSyOJw/s1600-h/2009-01-29_2123.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 376px; height: 400px;" src="http://4.bp.blogspot.com/_rsZUZ8HzRaQ/SYKNNz5EvRI/AAAAAAAAAGI/xJOerzSyOJw/s400/2009-01-29_2123.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5296951380148534546" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-5844893408188469513?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/5844893408188469513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=5844893408188469513' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/5844893408188469513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/5844893408188469513'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/01/austin-usability-seriously.html' title='austin usability, seriously?'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_rsZUZ8HzRaQ/SYKNAWI35wI/AAAAAAAAAFw/NnsMiwWoEpA/s72-c/2009-01-29_2214.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-8564511155753444606</id><published>2009-01-29T22:49:00.004-06:00</published><updated>2009-01-29T23:10:44.705-06:00</updated><title type='text'>Goddammit Google Reader</title><content type='html'>This just started happening today but now I can't fucking use Google Reader.  First this dialog comes up:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_rsZUZ8HzRaQ/SYKIYCWdLAI/AAAAAAAAAFY/YPgo-A_gfZ8/s1600-h/2009-01-29_2116.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 380px; height: 153px;" src="http://2.bp.blogspot.com/_rsZUZ8HzRaQ/SYKIYCWdLAI/AAAAAAAAAFY/YPgo-A_gfZ8/s400/2009-01-29_2116.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5296946058270419970" /&gt;&lt;/a&gt;Ok, I don't really care why it doesn't work, just give me a way to make it work.  Maybe the settings will be useful:&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_rsZUZ8HzRaQ/SYKIjfzNbFI/AAAAAAAAAFg/CjTFx8Drq1c/s1600-h/2009-01-29_2117.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 102px;" src="http://3.bp.blogspot.com/_rsZUZ8HzRaQ/SYKIjfzNbFI/AAAAAAAAAFg/CjTFx8Drq1c/s400/2009-01-29_2117.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5296946255154211922" /&gt;&lt;/a&gt;Awesome, you just sit there are 0% forever.  Maybe if I click Account settings...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_rsZUZ8HzRaQ/SYKIpV33p7I/AAAAAAAAAFo/brErH54cjok/s1600-h/2009-01-29_2117_001.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 149px;" src="http://1.bp.blogspot.com/_rsZUZ8HzRaQ/SYKIpV33p7I/AAAAAAAAAFo/brErH54cjok/s400/2009-01-29_2117_001.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5296946355568617394" /&gt;&lt;/a&gt;Fuck!  The fucking "go online" button just hangs the whole app.&lt;br /&gt;&lt;br /&gt;What the fuck, Google?  Argh.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-8564511155753444606?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/8564511155753444606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=8564511155753444606' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/8564511155753444606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/8564511155753444606'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/01/goddammit-google-reader.html' title='Goddammit Google Reader'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_rsZUZ8HzRaQ/SYKIYCWdLAI/AAAAAAAAAFY/YPgo-A_gfZ8/s72-c/2009-01-29_2116.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-8060017634786051908</id><published>2009-01-26T23:13:00.004-06:00</published><updated>2009-01-27T00:07:39.159-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google app engine pixplz'/><title type='text'>Google App Engine argh</title><content type='html'>I have written and hosted my latest site: &lt;a href="http://pix-plz.appspot.com/"&gt;PixPlz&lt;/a&gt; using Google App Engine.  I don't really recommend GAE to anyone unless you really, really value using a free service.&lt;br /&gt;&lt;br /&gt;Here's a list of minor limitations you might run into:&lt;ul&gt;&lt;li&gt;no aggregate queries&lt;/li&gt;&lt;li&gt;no image handling&lt;/li&gt;&lt;li&gt;hard to port&lt;/li&gt;&lt;li&gt;index building&lt;/li&gt;&lt;li&gt;bizarre errors from simple commands&lt;/li&gt;&lt;li&gt;must sort on inequality filter first&lt;/li&gt;&lt;li&gt;random 1000 limits&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;no aggregate queries&lt;/b&gt;&lt;br /&gt;This one is pretty frustrating if you ever like to gather statistics about a single damn thing your app is storing.  I would like a total of the number of times all my images have been voted on, but if I try to loop through every image (which appears to be the only way to do it) I quickly run into Google's 5 second page timeout limit.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;no image handling&lt;/b&gt;&lt;br /&gt;I know that technically, there's an image library, but it doesn't do a damn thing if you actually want to handle images.  Say someone uploads an image: want to know the filetype?  Read the individual bytes to determine it.  Want to know the dimensions?  Yeah, read the bytes.  You can do a few write-only changes like resizing, but you can't read any attributes about the image you're manipulating.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;hard to port&lt;/b&gt;&lt;br /&gt;Other people have written about this, but eventually I'll want to get away from GAE, and it gets harder and harder the more code I write.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;index building&lt;/b&gt;&lt;br /&gt;Want to query some data in a new way?  Cool, just write the query, test it on your dev machine and push to production.  Oh, wait, you have to sit and stare at a progress indicator for an indeterminate amount of time before you can actually use that query.  This took over 5 minutes for 100 photos:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_rsZUZ8HzRaQ/SX6hJ4I7U3I/AAAAAAAAAFQ/WSyjIZdRZPY/s1600-h/2009-01-26_2244.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 139px; height: 140px;" src="http://3.bp.blogspot.com/_rsZUZ8HzRaQ/SX6hJ4I7U3I/AAAAAAAAAFQ/WSyjIZdRZPY/s400/2009-01-26_2244.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5295847402895004530" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;bizarre errors from simple commands&lt;/b&gt;&lt;br /&gt;When I got up to about 150 photos, I started getting timeout errors from this GQL query:&lt;br /&gt;&lt;code&gt;photos = db.GqlQuery('SELECT * FROM Photo')&lt;br /&gt;photos.count()&lt;/code&gt;&lt;br /&gt;Yes, counting 150 photos is difficult for BigTable to accomplish, and results in an timeout error about 1% of the time.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;must sort on inequality filter first&lt;/b&gt;&lt;br /&gt;I wanted to make a page that showed the top rated girls, but not one that had maybe one or two "yes" votes, and were thus at 100% falsely.  Simple, right?  You just query for all the photos that have more than 5 votes and sort them by score.  But wait, you have to sort by votes first, then score, giving you a useless top 10 board of mostly the oldest photos (because they have the most votes) thanks BigTable!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;random 1000 limits&lt;/b&gt;&lt;br /&gt;Can't return more than 1000 elements from a query, can't offset more than 1000 elements into a result set, can't handle uploads or any variables in memory bigger than 1MB.  Google touts how well App Engine scales, but I can make any system scale if I just don't let you do anything with it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-8060017634786051908?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/8060017634786051908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=8060017634786051908' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/8060017634786051908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/8060017634786051908'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/01/google-app-engine-argh.html' title='Google App Engine argh'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_rsZUZ8HzRaQ/SX6hJ4I7U3I/AAAAAAAAAFQ/WSyjIZdRZPY/s72-c/2009-01-26_2244.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-883214582534836971</id><published>2009-01-08T14:04:00.003-06:00</published><updated>2009-01-08T14:42:13.440-06:00</updated><title type='text'>ShoutNow</title><content type='html'>This sign up process is great way of indicating the steps you'll need to take, and that you'll need to pay at the end.  (I really hate sites that never mention payment until you've filled out multiple pages of forms, only to be hit with a card card info screen)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://content.screencast.com/users/blake8086/folders/Jing/media/83c7b810-6b34-4337-bc68-8f8d294159a4/2009-01-08_1416.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 722px; height: 272px;" src="http://content.screencast.com/users/blake8086/folders/Jing/media/83c7b810-6b34-4337-bc68-8f8d294159a4/2009-01-08_1416.png" border="0" alt="" /&gt;&lt;/a&gt;from &lt;a href="http://shoutnow.com/"&gt;ShoutNow&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-883214582534836971?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/883214582534836971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=883214582534836971' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/883214582534836971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/883214582534836971'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/01/shoutnow.html' title='ShoutNow'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-6024463045837375398</id><published>2009-01-08T13:35:00.005-06:00</published><updated>2009-01-29T23:32:06.708-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ui iphone'/><title type='text'>Square Master</title><content type='html'>Look at this clever use of space:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.danbourque.com/SquareMaster_iPhone.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 396px; height: 839px;" src="http://www.danbourque.com/SquareMaster_iPhone.png" border="0" alt="" /&gt;&lt;/a&gt;Image from &lt;a href="http://www.danbourque.com/"&gt;danbourque.com&lt;/a&gt; (the maker of Square Master)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-6024463045837375398?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/6024463045837375398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=6024463045837375398' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/6024463045837375398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/6024463045837375398'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2009/01/square-master.html' title='Square Master'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-1842336205835527639</id><published>2008-12-23T10:27:00.003-06:00</published><updated>2008-12-23T10:40:33.921-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dreamhost sucks'/><title type='text'>Dreamhost Sucks</title><content type='html'>I had (have) an account with DreamHost.  I'm currently trying to cancel it, but they are doing their best to thwart my efforts.&lt;br /&gt;&lt;br /&gt;I present &lt;a href="http://screencast.com/t/zyYNLx4d7a"&gt;exhibit A&lt;/a&gt;, the "cancel your account" page.&lt;br /&gt;&lt;blockquote&gt;You Currently Owe: $190.80&lt;br /&gt;However, if you close your account you will get a credit of $190.80 for unused services you've already been billed for.&lt;/blockquote&gt;So you're saying I owe money but I don't owe money?  Ok, cool, I guess.&lt;br /&gt;&lt;blockquote&gt;You will have to &lt;b&gt;pay for your free&lt;/b&gt; domain registration if you cancel your hosting account now though, meaning there will be a charge of $9.95 added to your account.&lt;/blockquote&gt;Something about the phrase "pay for your free..." doesn't seem right.&lt;blockquote&gt;You are not within our 97 day money back guarantee (it has been 732 days since 2006-12-23)!&lt;br /&gt;To end your hosting now, you must submit an additional $9.95 to pay off your account.&lt;br /&gt;We're sorry, but because you will owe $9.95 after closing your account, we must ask you to first go make a payment for that amount.&lt;/blockquote&gt;How about if you just end my hosting now and send me a bill for $9.95 instead of preventing me from cancelling?&lt;br /&gt;&lt;br /&gt;I sent support an email and they said the terms of service clearly states blah blah blah I don't care.&lt;br /&gt;&lt;br /&gt;I don't really care what DreamHost's excuse is for this crappy user experience, but I can give a recommendation to never use them to host anything.  This is not the first annoyance I have had with them, but it should be the last.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-1842336205835527639?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/1842336205835527639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=1842336205835527639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/1842336205835527639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/1842336205835527639'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2008/12/dreamhost-sucks.html' title='Dreamhost Sucks'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-1072225713409786426</id><published>2008-11-21T13:41:00.003-06:00</published><updated>2008-11-21T13:47:03.817-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fucking apple goddammit'/><title type='text'>Updating the iPhone</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_rsZUZ8HzRaQ/SScP7ZnDQCI/AAAAAAAAAEw/AtT_LfmUl5M/s1600-h/2008-11-21_1340.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 369px; height: 87px;" src="http://2.bp.blogspot.com/_rsZUZ8HzRaQ/SScP7ZnDQCI/AAAAAAAAAEw/AtT_LfmUl5M/s400/2008-11-21_1340.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5271199402021830690" /&gt;&lt;/a&gt;&lt;br /&gt;(&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;pop&lt;/span&gt;) I'm updating my (&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;pop&lt;/span&gt;) iPhone to firmware version 2.2 for the "improved Safari" features and some of the se(&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;pop&lt;/span&gt;)curity fixes and iTunes decides that disabling my fucking phone for an hour isn't enough, it has to annoy (&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;pop&lt;/span&gt;) the shit out of me by putting itself on top of all my other windows every few seconds.  Thanks a fucking lot, it's not like I wanted to get (&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;pop&lt;/span&gt;) any WORK done on MY computer (which is now temporarily Apple's).&lt;br /&gt;&lt;br /&gt;Who the fuck coded this?  S(&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;pop&lt;/span&gt;)omewhere deep in the code, there must be a delay loop that says "hey, it's been 10 seconds, time to be &lt;b&gt;(pop) FUCKING ANNOYING&lt;/b&gt; now."&lt;br /&gt;&lt;br /&gt;Each of these (&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;pop&lt;/span&gt;)s is seriously (&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;pop&lt;/span&gt;) another time the window popped up just while I was typing this.&lt;br /&gt;&lt;br /&gt;Fucking Apple.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-1072225713409786426?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/1072225713409786426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=1072225713409786426' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/1072225713409786426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/1072225713409786426'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2008/11/updating-iphone.html' title='Updating the iPhone'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_rsZUZ8HzRaQ/SScP7ZnDQCI/AAAAAAAAAEw/AtT_LfmUl5M/s72-c/2008-11-21_1340.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-7327227721741825038</id><published>2008-08-29T12:05:00.004-05:00</published><updated>2008-08-29T12:12:36.196-05:00</updated><title type='text'>Be a marketing ROCK STAR</title><content type='html'>Oh marketing-speak.  I love how you can talk so much when you have so little to say.&lt;br /&gt;From &lt;a href="http://jquery.com/blog/2008/08/29/jquery-site-redesign-the-community-speaks/"&gt;jQuery Site Redesign - The Community Speaks&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;As many of you have seen by now, the jQuery Project’s site has been redesigned. It had been a long overdue task and it was important to put a fresh new spin on the main hub, and the face, of jQuery.&lt;/blockquote&gt;The previous site was getting old.&lt;br /&gt;&lt;blockquote&gt;One of the things about the jQuery Project is that we’ve never run with the crowd or accepted the norm. By pushing boundaries and sometimes being “in your face” we’ve not only grown tremendously in popularity but we’ve pushed most of the other JS library projects to rethink their own principles and make changes to improve their products. That’s a good thing for everyone as competition is always good.&lt;/blockquote&gt;This is our excuse for a really weird site redesign.&lt;br /&gt;&lt;blockquote&gt;So, it should come as no surprise by the drastic change in the jQuery website. So far, the single biggest complaint has been associated with the new banner (ie: rockstar caricature &amp;amp; slogan). Again, we wanted to push the boundaries and come up with something that would generate a lot of buzz.&lt;/blockquote&gt;It should come as no surprise that we're making a surprising change to the site.&lt;br /&gt;&lt;blockquote&gt;Overall, we’ve succeeded in that goal with plenty of positive feedback but unfortunately, with some very negative comments as well. We actually value both types of feedback and want more as it’s the only way to determine if we’re on the right track. As with any site redesign, you can’t please everyone and we understand that. But we also want everyone to realize that this is a first cut and it doesn’t mean that it can’t be tweaked.&lt;/blockquote&gt;While we value your comments, we value ignoring them even more.&lt;br /&gt;&lt;blockquote&gt;We’re actively reviewing all of the feedback and will certainly be looking at how to best handle some of the concerns of the community. After all, the community is what makes the jQuery Project so special and so different from other projects. In addition, the jQuery team has always listened to the needs of the community and this time is no exception. Again, I think the team is unique in that we *DO LISTEN* to the community and we’re going to work on making the site an invaluable tool for everyone. So just give us some time to go through the messages and keep an eye on this blog for updates.&lt;/blockquote&gt;We still don't want to change it.&lt;br /&gt;&lt;blockquote&gt;Thanks for your patience and we truly appreciate your feedback.&lt;/blockquote&gt;Leave a comment, we'll ignore it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-7327227721741825038?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/7327227721741825038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=7327227721741825038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/7327227721741825038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/7327227721741825038'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2008/08/be-marketing-rock-star.html' title='Be a marketing ROCK STAR'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-1754632842159178234</id><published>2008-07-22T14:56:00.003-05:00</published><updated>2008-07-22T15:02:30.852-05:00</updated><title type='text'>You know what?  Fuck your login!</title><content type='html'>I was holding off writing this post until I was calmed down about it, but you know what?  This is angryinterface.&lt;br /&gt;&lt;br /&gt;I submit Exhibit F:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rsZUZ8HzRaQ/SIY75koAeaI/AAAAAAAAADQ/3olO9vbm1wI/s1600-h/2008-07-22_1456.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rsZUZ8HzRaQ/SIY75koAeaI/AAAAAAAAADQ/3olO9vbm1wI/s200/2008-07-22_1456.png" alt="" id="BLOGGER_PHOTO_ID_5225930277880101282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Yet Another Fucking Login Prompt.  I saw &lt;a href="http://www.shapeways.com"&gt;Shapeways&lt;/a&gt; on &lt;a href="http://www.mashable.com"&gt;Mashable&lt;/a&gt; and thought "hey, I would love to fabricate some gears, and maybe some other stuff", so I go to look at their site.&lt;br /&gt;&lt;br /&gt;But nooooooo, you have log in.  Does no one understand that I (and everyone else) have a thousand fucking logins to every site in existence?  Do I really need to login to BROWSE your site?  That's ridiculous.&lt;br /&gt;&lt;br /&gt;I hate your site, I hate your stupid login prompts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-1754632842159178234?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/1754632842159178234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=1754632842159178234' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/1754632842159178234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/1754632842159178234'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2008/07/you-know-what-fuck-your-login.html' title='You know what?  Fuck your login!'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_rsZUZ8HzRaQ/SIY75koAeaI/AAAAAAAAADQ/3olO9vbm1wI/s72-c/2008-07-22_1456.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-3024377991389204810</id><published>2008-04-17T14:03:00.005-05:00</published><updated>2008-04-17T14:16:47.822-05:00</updated><title type='text'>I'm going back to cuneiform tablets</title><content type='html'>I must have unzipped thousands of files since I started using computers.  I bet billions of files are unzipped every year by computer users.&lt;br /&gt;&lt;br /&gt;And yet...&lt;br /&gt;&lt;br /&gt;Not a single fucking software vendor has noticed that a lot of zip files contain just a folder with the actual files inside it.&lt;br /&gt;&lt;br /&gt;In fact, I think that's probably &lt;b&gt;the most common use case for zip files&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rsZUZ8HzRaQ/SAegxlxi1DI/AAAAAAAAACo/_4QWw2y5aD8/s1600-h/1eb4d99f-fa7d-48d3-9166-4109be2b0ce3_9b551d9a-73bb-434d-9129-2fb09d2d16c7_static_0_0_2008-04-16_1650.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_rsZUZ8HzRaQ/SAegxlxi1DI/AAAAAAAAACo/_4QWw2y5aD8/s400/1eb4d99f-fa7d-48d3-9166-4109be2b0ce3_9b551d9a-73bb-434d-9129-2fb09d2d16c7_static_0_0_2008-04-16_1650.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5190293869381735474" /&gt;&lt;/a&gt;&lt;br /&gt;Instead every vendor says "oh, we'll just be flexible and give the users a choice"&lt;br /&gt;&lt;br /&gt;"Do you want to unzip all the files in this zip file you haven't looked inside to a folder or not?"&lt;br /&gt;a) Sure, I love having folder structures like \Desktop\downloaded_file\downloaded_file\setup.exe&lt;br /&gt;b) Nah, randomly dump files all over my desktop&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rsZUZ8HzRaQ/SAeg11xi1EI/AAAAAAAAACw/cs36ILa9-Xk/s1600-h/006dac62-67d7-4399-9171-380c0319d7e8_9b551d9a-73bb-434d-9129-2fb09d2d16c7_static_0_0_2008-04-16_1650.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_rsZUZ8HzRaQ/SAeg11xi1EI/AAAAAAAAACw/cs36ILa9-Xk/s400/006dac62-67d7-4399-9171-380c0319d7e8_9b551d9a-73bb-434d-9129-2fb09d2d16c7_static_0_0_2008-04-16_1650.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5190293942396179522" /&gt;&lt;/a&gt;&lt;br /&gt;Why give users a choice when you know what they'll want and you could pick for them?  This goes double for a choice where the user would have to research which option to pick (like looking inside every zip before choosing)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-3024377991389204810?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/3024377991389204810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=3024377991389204810' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/3024377991389204810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/3024377991389204810'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2008/04/im-going-back-to-cuneiform-tablets.html' title='I&apos;m going back to cuneiform tablets'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_rsZUZ8HzRaQ/SAegxlxi1DI/AAAAAAAAACo/_4QWw2y5aD8/s72-c/1eb4d99f-fa7d-48d3-9166-4109be2b0ce3_9b551d9a-73bb-434d-9129-2fb09d2d16c7_static_0_0_2008-04-16_1650.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-20258352125632905</id><published>2008-03-06T16:56:00.004-06:00</published><updated>2008-03-06T17:05:14.222-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='microsoft sorry inconvenience'/><title type='text'>OH GOD WE ARE SO SORRY</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rsZUZ8HzRaQ/R9B3DrNkQkI/AAAAAAAAACI/32kush4v5_8/s1600-h/2008-03-06_1655.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rsZUZ8HzRaQ/R9B3DrNkQkI/AAAAAAAAACI/32kush4v5_8/s400/2008-03-06_1655.png" alt="" id="BLOGGER_PHOTO_ID_5174766876871639618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There is a team of guys at Microsoft whose sole job is to be personally sorry for the inconvenience every time an application encounters a problem and needs to close.  They just wail for 40 hours a week each.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-20258352125632905?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/20258352125632905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=20258352125632905' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/20258352125632905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/20258352125632905'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2008/03/oh-god-we-are-so-sorry.html' title='OH GOD WE ARE SO SORRY'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_rsZUZ8HzRaQ/R9B3DrNkQkI/AAAAAAAAACI/32kush4v5_8/s72-c/2008-03-06_1655.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-5795169515438258175</id><published>2008-02-05T23:35:00.000-06:00</published><updated>2008-02-05T23:44:18.595-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humanized enso buttons'/><title type='text'>Enso, why you gotta make me sad?</title><content type='html'>The guys over at &lt;a href="http://humanized.com/"&gt;Humanized&lt;/a&gt; just released the 2.0 prototype of their quick-launching product &lt;a href="http://humanized.com/enso/launcher/"&gt;Enso&lt;/a&gt;.  I'm sure they're still ironing out some bugs, (like how I crashed it by typing "1+1" in the google search field).  But their help documentation made one UI mistake I really hate.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rsZUZ8HzRaQ/R6lIX0yHbzI/AAAAAAAAABI/MkPI1D-qZj0/s1600-h/oh_enso_you_make_me_so_sad.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_rsZUZ8HzRaQ/R6lIX0yHbzI/AAAAAAAAABI/MkPI1D-qZj0/s400/oh_enso_you_make_me_so_sad.jpg" alt="" id="BLOGGER_PHOTO_ID_5163738021900021554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Guess what area on those previous and next links is clickable?  If you guessed "just the links", sadly, you're correct.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;always make your buttons as large as is reasonably possible&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-5795169515438258175?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/5795169515438258175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=5795169515438258175' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/5795169515438258175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/5795169515438258175'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2008/02/enso-why-you-gotta-make-me-sad.html' title='Enso, why you gotta make me sad?'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_rsZUZ8HzRaQ/R6lIX0yHbzI/AAAAAAAAABI/MkPI1D-qZj0/s72-c/oh_enso_you_make_me_so_sad.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-628583156946636750</id><published>2008-02-05T11:09:00.000-06:00</published><updated>2008-02-07T14:18:47.310-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='aptana studio rails'/><title type='text'>Aptana Studio disables internet, "known issue"</title><content type='html'>This may be one of the most ridiculous problems I've ever had with a piece of software.  I tried to use Aptana Studio to some Rails development, but when I tried to install the Rails plugin, it would block my network adapter from doing anything.  Here's the mail I sent:&lt;br /&gt;&lt;blockquote&gt;If I attempt to install the Radrails plugin from within Aptana Studio, I lose all internet connectivity instantly, including the ability to ping or resolve a DNS entry.  Naturally, this interrupts the download also, and prevents me from doing anything until I forcibly close Aptana, at which point, I regain full connectivity.&lt;/blockquote&gt;&lt;br /&gt;So Aptana replied:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Hi Blake,&lt;br /&gt;&lt;br /&gt;This is a known issue with the Aptana update site for some users. Try the workarounds for manual installation described on this page:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://update.aptana.com/install/rails/3.2/"&gt;http://update.aptana.com/install/rails/3.2/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hope this helps,&lt;br /&gt;Michelle Petersen&lt;br /&gt;Aptana, Inc.&lt;/blockquote&gt;&lt;br /&gt;So not only is it ridiculous, but it's a known issue.  Aptana currently &lt;b&gt;does not have a product&lt;/b&gt;, but they shipped something anyways.  If you have software that breaks other functional parts of a user's machine, that's unacceptable.&lt;br /&gt;&lt;br /&gt;I will never use any of their other products and I can't recommend any of them to anyone.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;never break other parts of a user's machine without warning&lt;/span&gt; (some exceptions to this would be a BitTorrent client that may peg your network traffic, or a defragger that blocks hard disk access)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-628583156946636750?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/628583156946636750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=628583156946636750' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/628583156946636750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/628583156946636750'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2008/02/hahaha.html' title='Aptana Studio disables internet, &quot;known issue&quot;'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5195382480858168001.post-8337482594154248584</id><published>2008-01-24T19:55:00.000-06:00</published><updated>2008-02-06T00:34:27.670-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='songza pie menu'/><title type='text'>When all you have is a pie hammer, the whole world looks like a pie nail</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rsZUZ8HzRaQ/R6lTZkyHb0I/AAAAAAAAABQ/rK0dgbx4MIQ/s1600-h/pie_menus_for_the_sake_of_pie_menus.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rsZUZ8HzRaQ/R6lTZkyHb0I/AAAAAAAAABQ/rK0dgbx4MIQ/s400/pie_menus_for_the_sake_of_pie_menus.jpg" alt="" id="BLOGGER_PHOTO_ID_5163750146592698178" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Just look at that!  What is a pie menu doing there?  ARGH.  This is a problem when you spend all your time reading about and creating interfaces.  Any sexy technology can catch your eye and overwhelm your reasoning.&lt;br /&gt;&lt;br /&gt;Why not just have a play button off to the right of every song?  It would be easy enough to either 1) show a ton of play buttons, or 2) show the play buttons on mouseover.  You could probably even think of a 3) something better.  That's just off the top of my head.&lt;br /&gt;&lt;br /&gt;The pie menu gives no affordance as to how to play a song (the point of the site!) until a user explores and clicks something.  Then it requires a click and a drag of minimal precision to &lt;b&gt;play a song&lt;/b&gt;.  I shouldn't have to do more than click to &lt;b&gt;play a song&lt;/b&gt; on a &lt;b&gt;music site&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;always minimize the cost to perform your most common tasks&lt;/b&gt;&lt;br /&gt;&lt;b&gt;don't use interface elements just to use them, make sure they're suited for the task&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5195382480858168001-8337482594154248584?l=blake8086.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blake8086.blogspot.com/feeds/8337482594154248584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5195382480858168001&amp;postID=8337482594154248584' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/8337482594154248584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5195382480858168001/posts/default/8337482594154248584'/><link rel='alternate' type='text/html' href='http://blake8086.blogspot.com/2008/01/when-all-you-have-is-pie-hammer-whole.html' title='When all you have is a pie hammer, the whole world looks like a pie nail'/><author><name>Blake Householder</name><uri>http://www.blogger.com/profile/11712149680815476783</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_rsZUZ8HzRaQ/R6lTZkyHb0I/AAAAAAAAABQ/rK0dgbx4MIQ/s72-c/pie_menus_for_the_sake_of_pie_menus.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
