<?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-5927544581291786949</id><updated>2012-01-09T08:46:40.608-06:00</updated><category term='Personal'/><category term='Existential Angst'/><category term='PHP'/><category term='Flash'/><category term='Browsers'/><category term='Games'/><category term='Publicity'/><category term='Bargains'/><category term='Daily Puzzles'/><category term='ActionScript'/><category term='Entertainment'/><category term='Humor'/><category term='GameDev'/><category term='General Programming'/><category term='Beer'/><category term='JavaScript'/><category term='siteannouncements'/><category term='Servers'/><category term='Ponies'/><title type='text'>The Code Zone Bargain Basement Blog</title><subtitle type='html'>Imparting Game Development Wisdom of dubious quality for over a decade!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default?start-index=101&amp;max-results=100'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1166</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-2485415875000552926</id><published>2011-12-23T17:49:00.000-06:00</published><updated>2011-12-23T17:57:58.368-06:00</updated><title type='text'>My belated review</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;span style="line-height: 15px;"&gt;First off, apologies to Kobold Quarterly for this. I promised a review of their book a while back. And I actually wrote the review. But we're having a bit of a problem with Gamedev's CMS right now, so I'm going to do an end-run around it and post it to the blog.&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;Problem is, the Amazon-scraper we use to grab book covers and links and info about books is having a fit about &lt;i&gt;The Kobold Guide To Board Game Design&lt;/i&gt; because there's no dead-tree version listed on Amazon. Envisioning this as a one-act play, I think the process is going something like this.&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;b style="line-height: 15px;"&gt;Gamedev&lt;/b&gt;&lt;span style="line-height: 15px;"&gt;: Amazon, do you have a listing for &lt;i&gt;The Kobold Guide To Board Game Design&lt;/i&gt;?&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;b&gt;Amazon&lt;/b&gt;: Why yes, it appears that I do!&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;b&gt;Gamedev&lt;/b&gt;: Outstanding. Please send me a bitmap of the cover art.&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;b&gt;Amazon&lt;/b&gt;: Oh, that would be no bother at all. Here you go!&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;b&gt;Gamedev&lt;/b&gt;: Much obliged. Would you mind sending me the Amazon price and the number you have on the shelves right now?&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;b&gt;Amazon&lt;/b&gt;: I would be delighted to. The price is $9.99 and we have zero copies on the shelves.&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;b&gt;Gamedev&lt;/b&gt;: Zero copies eh? Oh that's just ducky. I shall mark it as out of print until such time as you get some inventory.&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;b&gt;Amazon&lt;/b&gt;: Suit yourself!&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;i&gt;FIN&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;I don't know exactly what field is giving our book-scraper fits. But there's something about e-books that's convincing the scraper to mark it as out of stock whenever it checks Amazon. As I'll post the review and feature it, but then a couple of hours later it'll get delisted from our little book section.&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;And I'm not faulting our programmer, as he's got much bigger fish to fry right now than fixing a bug in our book-scraper. He's tied up making Gamedev a far awesomer and more organized thing than it's been in quite some time, so I'm staying outta the way.&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;So for the time being I'm going to post the review here. At least the Kobold guys can link to it and/or quote-mine it. Once the scraper bug is tackled, I'll make sure it's properly listed on the site proper.&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;Cheers and thanks for everyone's patience!&lt;/span&gt;&lt;br /&gt;&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: inherit; line-height: 15px; text-align: left;"&gt;---&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: inherit; line-height: 15px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-FPAy1jmFkP0/TvUSfJuPDrI/AAAAAAAACO0/EX6MhdJbKIw/s1600/51%25252BiuEFzxtL.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span style="color: black; font-family: inherit;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-FPAy1jmFkP0/TvUSfJuPDrI/AAAAAAAACO0/EX6MhdJbKIw/s320/51%25252BiuEFzxtL.jpg" width="215" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="background-color: white; font-family: inherit; line-height: 15px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: inherit; line-height: 15px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: inherit; line-height: 15px; text-align: left;"&gt;I'll say this from the onset.&amp;nbsp;&lt;em class="bbc"&gt;The Kobold Guide To Board Game Design&lt;/em&gt;&amp;nbsp;is the best book on game design that I have encountered in quite some time. I discovered this book outside of the normal PR-channels where my to-be-reviewed books normally appear. I happened across the title while reading one of the dozen or so nerd blogs that I frequent. It looked interesting, so I plunked down ten bucks for the PDF at&amp;nbsp;&lt;a class="bbc_url" href="http://www.koboldquarterly.com/k/front-page10553.php" rel="nofollow external" style="text-decoration: none;" title="External link"&gt;koboldquarterly.com&lt;/a&gt;&amp;nbsp;and took a look.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: inherit; line-height: 15px; text-align: left;"&gt;The book is a collection of twenty essays written by some of the most popular non-computer game developers around today. While board game developers do not achieve the inexplicable rock-star status that some computer game developers get, their chops are every bit as sharp, if not sharper. Some of the authors are responsible for a five great games. Some have a dozen. And at least one has probably fifty games to his credit. What board game designers lack in notoriety, they make up for in prolificacy.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: inherit; line-height: 15px; text-align: left;"&gt;What, for me at least, moved this book from good to great was the chapter on writing precise rules. Virtually all computer game development books concentrate so hard on the steps from concept to "code complete" that they ignore the other half of the process, which is how to get the danged game done and boxed and to a point where someone other than the test-team can play it. Coherent instructions or tutorials seem to be of no concern to developers because that will be handled by a technical writer in another office somewheres. Game development is a pile of a hundred little tasks, and if you assume that those tasks will be best handled by "someone else", then your game won't be done to your satisfaction.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: inherit; line-height: 15px; text-align: left;"&gt;And what does this have to do with computer games? Well, stout yeoman, computer games and board games are virtually the same. If you grab the latest deep fantasy quest game on Xbox ("sky-something-or-other"), I guarantee that big chunks of it could be played with pencil-n-paper or a hex map with miniatures or dice or even just your hands.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: inherit; line-height: 15px; text-align: left;"&gt;Heck, those DS "Pokemon" games are, at their hearts heart, rock-scissors-paper.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: inherit; line-height: 15px; text-align: left;"&gt;My only complaint about this book is with the packaging. On the&amp;nbsp;&lt;a class="bbc_url" href="http://www.koboldquarterly.com/" rel="nofollow external" title="External link"&gt;Koboldquarterly.com&lt;/a&gt;&amp;nbsp;site, I could buy a paper or DRM-free PDF of the book. On Amazon (linked above), I could get a Kindle-DRM'ed epub. Unfortunately, neither solution is optimal for my cheapo e-reader. Unless fidelity of the screen to printed page is important, I would prefer an epub to a pdf. And this book is about 95% text with just a couple of illustrative graphics, so epub is best.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="background-color: white; line-height: 15px; text-align: left;"&gt;But that's just me venting a minor pet peeve. If you fancy yourself a game designer, you need broader horizons than simply having played every game available on Xbox. You need to know how to develop a working mechanism. And a board game is the mechanism of a game stripped down to its essentials, with the 3D animation and particle effects and, yes, even the computer itself stripped away. This is game design as design itself.&lt;/span&gt;&lt;span style="background-color: white; line-height: 15px; text-align: left;"&gt;&amp;nbsp;&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/5927544581291786949-2485415875000552926?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/2485415875000552926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=2485415875000552926' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/2485415875000552926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/2485415875000552926'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2011/12/my-belated-review.html' title='My belated review'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-FPAy1jmFkP0/TvUSfJuPDrI/AAAAAAAACO0/EX6MhdJbKIw/s72-c/51%25252BiuEFzxtL.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-8114740672449768082</id><published>2011-11-21T08:45:00.001-06:00</published><updated>2011-11-21T09:00:39.311-06:00</updated><title type='text'>How to fail, PART TWO!</title><content type='html'>&lt;br /&gt;&lt;div&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Following &lt;a href="http://thecodezone.blogspot.com/2009/05/how-to-write-pitch-that-doesnt-get.html"&gt;this post of a couple of years ago&lt;/a&gt;, here's the second in my series&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;b&gt;How To Write A Losing Pitch For Your Indie Game Project&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;I just found this taking up a little space in Google Docs. It's the original "pitch" I made for Monkey Blockade a couple of years ago.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;To be honest, I don't even remember who I was pitching this to. As I recall, some mobile game website/portal/publisher put out a call for people to send in two-minute elevator pitches for original mobile games that could be developed quickly. And since I'm nothing if unable to slap together a game fast, I sent in an idea.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;span style="white-space: pre-wrap;"&gt;Needless to say, they weren't interested. Given that I can't even figure out who wanted me to pitch the idea to 'em, I'm assuming they didn't even have the courtesy of emailing me to turn me down flat.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;span style="white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;span style="white-space: pre-wrap;"&gt;Anyway, a couple of years later I was digging through some old stuff and found the screenshots. I still thought it was a good idea, so I spent a few weeks actually implementing it. I added some stuff (snacks that distract monkeys and changing the red circles to clanking robots), and didn't implement some stuff (the comic strip back-story), but I thought it turned out rather well.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;span style="white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;span style="white-space: pre-wrap;"&gt;If you wanna see the final product, go to my mobile page at &lt;a href="http://m.thecodezone.com/"&gt;m.thecodezone.com&lt;/a&gt; and check out the screenshots in any of the app stores.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;span style="white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;span style="white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; font-size: 13px; white-space: pre-wrap;"&gt;---&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span id="internal-source-marker_0.35617236187681556" style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Name: Monkey Blockade&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Game Type: Quick Puzzle&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Description: Trap the monkeys that are trying to escape by placing blocks in their way. Monkeys are tricky, though, and they find ways to get around the blocks.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Introduction screen:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Following is a mockup intro screen. Note that the screen might be implemented as a "pop up", similar to the jumping-up windows in the Code Zone Flash games. Fewer screens makes for a simpler experience. I'm also toying with the idea of eliminating as much text as possible, with the idea that less text makes for a better experience for international users. The following text might be replaced with a "slide show", not unlike a comic strip, illustrating the backstory and the gameplay.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&lt;/span&gt;&lt;img height="480px;" src="https://lh4.googleusercontent.com/_-7HJH775U80WQEY1IWCZEiim7jP6GpbXIJHSspNVxNCzKnjPk88aA6E4RFV8MCUdWFhtvAF8sG0us_7qy7KbVWLwzBLhDJTMPZsoaRJerVefgHU3F0" width="320px;" /&gt;&lt;br /&gt;&lt;span style="font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Following accepting the start-playing screen, you see the gameplay screen.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&lt;/span&gt;&lt;img height="480px;" src="https://lh3.googleusercontent.com/4jYtB2ALpXb4fkBkFV7G3vg3N7KIGmY70cvEChmc2oCwYTYGxY6Ury5TLAfc4RTlMIMwP37hl1-z2xd6_s2A6UT-g1R7UGg9TGzRjyp0HAvtW4y5pHs" width="320px;" /&gt;&lt;br /&gt;&lt;span style="font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;You initially start with ten monkeys, one on the board (in a random spot, but near the middle), and nine under the "remaining" text. As monkeys escape or are captured, they move to the "escaped" or "captured" sections at the top of the screen.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;To place a block, tap the screen. The block will not actually set itself until you let up with your finger, so you can make sure it's over the hex you want to use before you place it.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;The "Blocks" and "Time" will accumulate throughout the game. They will likely be replaced with icons (a block and a clock).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Once all of the monkeys are either captured or escape, you get the game summary screen. Again, this may be a popup if that's easier to do, in keeping with the "one screen" motif.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&lt;/span&gt;&lt;img height="480px;" src="https://lh3.googleusercontent.com/TIAX5VRpzj0LIzYqAc9emB457VqJ1PBNOCjOmThk2Gq7iDc2lhRnKqrfCo2sWZh-VBMLfiQJ6KM_FAguzvG56i7ySjh66iTbVSOTGOEQLJlqaDjW_r4" width="320px;" /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Your score is a combination of captures (big points) minus a small penalty for number of blocks used and a time bonus. At this point, the user will get the opportunity to enter his score in a global table that will work a bit like the Mochi highscore table (daily, weekly, and monthly high scores).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Possible enhancements.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Since this game is a natural for making a daily puzzle, there's a possibility that I'll couple this with a daily puzzle version on thecodezone's site. If the user chooses to play the game as a daily puzzle (from the main menu), he can enter his thecodezone ID and password, and he'll be presented with the same puzzle as the Flash version and can submit his score to the site just as if he played the Flash version.&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/5927544581291786949-8114740672449768082?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/8114740672449768082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=8114740672449768082' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8114740672449768082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8114740672449768082'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2011/11/how-to-fail-part-two.html' title='How to fail, PART TWO!'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-8743537002488954178</id><published>2011-11-02T10:08:00.003-06:00</published><updated>2011-11-02T10:15:21.601-06:00</updated><title type='text'>Idea to App Store in ONE week</title><content type='html'>Yeah, I noticed my last post to the blog was a quick postmortem of Marble Bump, which was a game that I intended to take from concept to app stores submit in two weeks.&lt;br /&gt;&lt;br /&gt;Well, I decided to one-up myself, and I wanted to find something I could write and submit in ONE WEEK, mainly to get stuff in app-stores for the pending Kindle Fire and Nook Color 2 launches. So I went with one of my simplest games, Countdown Dice. It's just a cute little "push your luck" game where you roll dice to launch rockets. It's very simple and takes about two minutes to play, but it is oddly addictive once you grok the mechanism.&lt;br /&gt;&lt;br /&gt;And not only did I get it finished and submitted in a week, I actually got it listed in an app store already!&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/-caYvSdWn04g/TrFhx1BAF8I/AAAAAAAABd8/x3ZEDhkvXVE/s1600/IMG_00000015.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="187" src="http://2.bp.blogspot.com/-caYvSdWn04g/TrFhx1BAF8I/AAAAAAAABd8/x3ZEDhkvXVE/s320/IMG_00000015.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;(Countdown Dice in the Playbook store)&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Yeah, it's just the Playbook store, and it's a bit of a degenerate case because the Playbook store typically approves in a shorter time than the rest (save for Android Market which has no approval process at all). Still, I'm happy. To quote the slave-driving colonel in "Bridge on The River Kwai", be happy in your work.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;And once again I must plug my G+ feed, which is where I now post the bulk of my development-related info. It's at&amp;nbsp;&lt;a href="https://plus.google.com/106460508525236363626/posts" style="text-align: -webkit-auto;"&gt;https://plus.google.com/106460508525236363626/posts&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Soanyway, here are some pics of the process.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-IquzeDb7Vmk/TqiHV5Dx27I/AAAAAAAABT0/2PtAO-_egtI/s1600/Untitled-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="222" src="http://1.bp.blogspot.com/-IquzeDb7Vmk/TqiHV5Dx27I/AAAAAAAABT0/2PtAO-_egtI/s320/Untitled-3.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;Here's the first cut at a title screen. It's not much different from it as it shipped. I added a little Matrixesque animation to the title text, and I adjusted the text and colors a bit, but this is it. The buttons are lifted directly from Dice-A-Rama&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Development Tip:&lt;/b&gt; If something works, steal it and use it elsewhere. Quit reinventing the wheel.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-lBS1adRme20/Tqr1wE9tqiI/AAAAAAAABVs/3BHx9Q2_N4s/s1600/Untitled-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="222" src="http://4.bp.blogspot.com/-lBS1adRme20/Tqr1wE9tqiI/AAAAAAAABVs/3BHx9Q2_N4s/s320/Untitled-1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Here are the graphics. The little vector rockets are lifted directly from the old 2007 AS2 game. I figure that game's been played several million times with no complaints about usability, so I wouldn't make many changes there. I did change "Turns Remaining = 5" to "Turn 1 of 5", as it seemed a little more obvious. Gets around that "do we throw the guy off the bridge at 1-2-3-GO or 1-2-3" problem.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;I didn't reuse any code from the original. The logic was simple enough that I didn' bother.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="" style="clear: both; text-align: left;"&gt;&lt;b&gt;Development Tip:&lt;/b&gt; Don't worry about making nontrivial objects reusable. While you might find yourself reusing a Pair or Dice class, you probably will just rewrite the CountdownDiceScorer class anyway, so don't kill yourself making it reusable. You've always got the code right there for copy-n-paste if there's a particularly hairy algorithm in there anyway.&lt;/div&gt;&lt;div class="" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="" style="clear: both; text-align: left;"&gt;Heck, I didn't even reuse the friggin' Dice class from Dice-A-Rama. It has several non-standard dice (with colored pips and face cards) that this game wouldn't need, so I just copy-n-pasted out a few lines of standard dice code.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-AOpHqoCqqAI/Tq60byZVADI/AAAAAAAABY4/CxEMiBDg9oQ/s1600/icon_114x114.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-AOpHqoCqqAI/Tq60byZVADI/AAAAAAAABY4/CxEMiBDg9oQ/s1600/icon_114x114.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The icon. Took me about ten minutes. I used IconWorkshop (motto: The only icon editor you will ever need. Trust me) to make the purple roundy background, and then I pasted it into Flash to add the vector rocket and dice. And then I saved it out as a 512x512 pixel PNG and used a batch file and ImageMagick to &amp;nbsp;make all the other icon sizes that the other app stores needed.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;Development Tip:&lt;/b&gt; IconWorkshop is great. It's especially great with its free "iOS icon library" add-on that lets you drag together a classy iPhone-style icon in seconds.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;ImageMagick is also great and is free. If you use a batch file or makefile or ant-file to build your app, use ImageMagick to size things in batch mode.&amp;nbsp;Oh, and ImageMagick can also make .ico files with all of the sub-bitmaps embedded in it, but it's not trivial and requires an absurdly long command-line. I recommend making a batch file once you get it working so you don't have to retype it again.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-gmouHVuj_gg/TrFnEXRXGFI/AAAAAAAABeQ/6Z53yDFwlQA/s1600/featured_1920x1186.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="197" src="http://2.bp.blogspot.com/-gmouHVuj_gg/TrFnEXRXGFI/AAAAAAAABeQ/6Z53yDFwlQA/s320/featured_1920x1186.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The "Featured Item" image. The Playbook, Android, and Amazon app stores want a "featured" image along with your icon and screenshots. It's usually just a publicity photo kind of thing like this, and it's about twice as wide as high. And they want all kinds of sizes, from enormous (1920x1186 on Playbook) to small (290x140 on Android Market).&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Again, I use Flash for this. Since it's vector-based, you can export out to arbitrarily large sizes and the edges stay nice. I generally save out to a 2048x1536 image with plenty of whitespace (purplespace in this case) near the edges. Then I can just shrink and crop to whatever the app store wants to see.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Yeah, I could probably use Illustrator or Inkscape or some other vector tool. I don't know how to use those and I'm too lazy to figure it out. If you wanna do it for free, use Inkscape.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;Development Tip:&lt;/b&gt; To take a screenshot on an iphone, it's RoundButton+PowerButton.&amp;nbsp;&amp;nbsp;&lt;span class="Apple-style-span" style="text-align: -webkit-auto;"&gt;To take a screenshot on a Nook Color, it's NButton + VolumeDownButton.&amp;nbsp;&lt;/span&gt;To take a screenshot on a Playbook, press both volume buttons at the same time, although I just take Playbook screenshots from the emulator using Alt+PrtScn.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;So that's just a quick overview of a couple of tricks I use to get stuff into app stores fast.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-8743537002488954178?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/8743537002488954178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=8743537002488954178' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8743537002488954178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8743537002488954178'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2011/11/idea-to-app-store-in-one-week.html' title='Idea to App Store in ONE week'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-caYvSdWn04g/TrFhx1BAF8I/AAAAAAAABd8/x3ZEDhkvXVE/s72-c/IMG_00000015.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-8116090511556462183</id><published>2011-08-10T08:47:00.001-06:00</published><updated>2011-08-10T08:57:27.643-06:00</updated><title type='text'>Idea to app store(s) in two weeks</title><content type='html'>First off, if you don't have me circled on G+, I'm at &lt;a href="http://gplus.to/johnhattan"&gt;gplus.to/johnhattan&lt;/a&gt;. I've been liveblogging the process there. If you don't have a G+ invite, my invite link is &lt;a href="https://plus.google.com/_/notifications/ngemlink?path=%2F%3Fgpinv%3D-gYLTFQP-Hc%3ANtsuOq9ATDk"&gt;here&lt;/a&gt;. I only have 145 of my original 150 invites left, so get in now :)&lt;br /&gt;&lt;br /&gt;I had an idea for another simple particle-collision game, and this time I decided to see how quickly I could get the game from concept to app stores. And it happened in two weeks, one week of which was waiting for approvals.&lt;br /&gt;&lt;br /&gt;Originally I planned for it to be an atomic-particle-colliding motif, not unlike Meltdown. After some back and forth with the community, I went with the name "Particlusion" (particle+fusion). I wasn't completely in love with the name, but it worked and wasn't in use anywhere else. And I quickly mocked up a menu screen.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;img src="https://lh6.googleusercontent.com/-aiwFJa78oeE/Ti35Yky26WI/AAAAAAAAAnY/Aqt95rAnp9I/w402/shot.png" style="display: block; text-align: left;" /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;The original eye-searing Tron-ish main menu&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I even made a cool animation for the main screen when I had a couple minutes of downtime.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="https://lh6.googleusercontent.com/-2_phjAIOp1c/TjAmFFbpXyI/AAAAAAAAAn8/D-nvMxohvYU/w316/Untitled-1.gif" style="display: block;" /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then I started on the mechanic. The mechanic was quite simple (slide objects into other objects. If one object is left, you win), and you could even build some fairly challenging random levels by following some simple rules. This is unlike something like Bulldozer (aka Sokoban), where it's nigh impossible to randomly generate a decently challenging level. There's less "depth" than Sokoban (which is a mean feat, as Sokoban's depth is itself limited), but it was intended from the onset to be something quick and cheap.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Fast-forward a couple of days, and I was looking for some inspiration for my little colliding particles. I was thinking of some little nondescript spheres like in Meltdown when I came across some old marble clipart. I pasted a couple in, and it just fit. In fact, they fit so well that I decided to change the motif to marbles. A little name-check and "Marble Bump" was born. I originally planned to have the marbles on grass with a sidewalk texture here and there, but the contrast was much better just with the cement texture, so I left it everywhere.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="https://lh5.googleusercontent.com/-EB7HImtE2NY/TjLoOxk3DUI/AAAAAAAAAo4/FQm-fyRky5k/w402/Untitled-1.png" style="display: block;" /&gt;The rebranded main screen, four days in. Close to how the release looks&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The little wrench button in the corner brought you to a very simple level editor that let you place marbles. As you placed marbles, it built a string containing the level and the solution. I eventually added a little clipboard button so you could hop back to the main menu and test a level after copying its level string to the clipboard. From there I spent a few hours drawing and testing levels until I had the 24 "canned" levels that roughly run from trivial (two marbles) to nigh-impossible (19 marbles, I think).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The level editor was just for me, so that wrench-button hides for the release version. It added all of 2K to the game, so I didn't bother cutting it out.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I also got my random level-generator working, which is what you get from the row of buttons along the bottom. I figure if I could randomly generate challenging levels, I didn't need so many "canned" ones. So there are only 24 levels, but you're not stuck once you've beaten 'em all.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After taking the weekend off to carpool the kid to summer camp, I decided my marbles needed some more personality. So I tried the most obvious thing and added little cartoon eyes to 'em. They're actually pretty simple. They have two states (normal and wide-eyed terror), and both pupils are actually a single MovieClip that I tween in whatever direction the marble's moving. If a marble is about to be hit, I switch the eyes to the wide-eyed terror state, and I tween the pupils very small (and that's why the pupils get close together when a marble is about to die. It's actually just one meta-pupil). I added three mouth positions, and I now had marbles that expressed the gamut of emotions from "I'm gonna hit you" to "oh no, I'm gonna be hit" to "Yay, I killed all my friends so I'm happy!"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And I added a random tint to the pupils, so marbles can have green, blue, or brown eyes. That's the sum-total of Marble expressions. As I learned from crafts and cartooning a long time ago, eye shape, eye placement, and pupil placement can impart a lot of personality without a lot of work.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And I put together a little video. It's very close to final form.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://3.gvt0.com/vi/jg8W8wsI1rc/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/jg8W8wsI1rc&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/jg8W8wsI1rc&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Same day as I posted the video, I declared the game finished. I actually had a minor button-graying bug that I have since fixed. But posting updates to app stores is a simple process, just requiring you to upload the updated game and some simple release notes. It's the initial approval that takes the time, so get on that ASAP.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As for app stores, I posted to the iOS store first because it has typically had the longest lead-time (5-7 working days in my experience). Then the Playbook store, which takes 1-2 days to approve. And finally the Android store, which has no approval process, and your game becomes available whenever Google's indexing-bot finds it. Typically an hour.&lt;/div&gt;&lt;blockquote&gt;And code-signing for iOS and Playbook are a friggin' nightmare that requires enormous amounts of trial-and-error. And even if you get it working, you will NEVER understand it. I'd detail the process, but it makes me cry whenever I do.&lt;/blockquote&gt;&lt;div&gt;Just as a lark, I signed up for the Amazon and Nook developer programs and got approved for both (because I'm a force in this industry goldurnit). Modifying the Android app for Amazon was pretty simple, just requiring you to point to a different location to download the AIR runtime.&amp;nbsp;The Amazon approval time was about the same as iOS. Maybe a little longer. I didn't watch it too closely.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I still haven't submitted the game to the Nook store, mainly because I've rooted my Nook with CyanogenMod (which is really awesome and makes your Nook into a full tablet), but I'll need to revert back to stock firmware to test.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Submitting to app stores is a bunch of monkey-work. They all need a textual description of your game, which I just wrote once and cut-n-pasted.&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;Marble Bump is an original new puzzle game. It is quite simple, but it is pretty tough to master. At first it appears simple. Just bump marbles together to shatter them, and once you are down to a single marble, you win. And the initial levels are fairly easy, but the game gets tough quickly, and the highest levels are guaranteed to bend your brain.&lt;/blockquote&gt;&lt;blockquote&gt;The game comes with 24 levels of increasing difficulty. But you're not done when you have mastered all of the included levels. Marble Bump also comes with an infinite number of randomly-generated levels, so you can tease your brain whenever you want. Have fun&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;Screenshots are a pain because every store wants certain sizes, so you can't just whip up a pile of generic screenshots and upload them everywhere. Playbook is easiest because your bitmaps can be any aspect as long as no dimension is bigger than 640 pixels. Android has four sizes that they'll accept, corresponding to the most popular phones and tablets. iOS wants 'em in iPhone and iPad size, and you need to upload both. I have an iPod Touch for testing, so snapping iOS screenshots was easy (power+roundbutton snaps screens to your film-roll). I don't have an iPad, and AIR apps don't work in Apple's "not really an emulator" emulator, so I had to fake those.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You also need icons, both for development and app stores. Icon sizes are all over the place, and I recommend you grab a copy of &lt;a href="http://www.imagemagick.org/script/index.php"&gt;ImageMagick&lt;/a&gt; right away. It's got a command-line utility called "convert" that'll convert a bitmap's size and/or format, and it does a terrific job of retaining detail and transparency. The biggest icon that everybody wants is 512x512, so I just drew a giant icon PNG and then made a batch file that would downsize that mega-icon to the half-dozen other sizes I need (480x480, 128x128, 114x114, 72x72, 57x57, 48x48, 29x29, 36x36, 32x32, 16x16). Every store wants all images in PNG, so get used to using PNG as your file format of choice. I prefer Adobe Fireworks for all my bitmaps and screenshots and such, as it's designed around PNG and works with it nicely.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The only other picture you need is a "featured" image for Android and Playbook. This is just sort of an advertising picture. You can see one as my big main title picture &lt;a href="https://market.android.com/details?id=air.com.thecodezone.games.marblebump"&gt;here&lt;/a&gt;. Android and Playbook want 'em in various sizes, but generally around 16x9 aspect. My best advice is to make a giant bitmap at least 1200 wide with a healthy amount of whitespace around the edge that you can crop and resize without much stretching. As you can see in my Android Market shot, there's plenty of yellow on either side of the marbles, as this particular one has around a 2/1 aspect ratio.&lt;br /&gt;&lt;br /&gt;The only other weirdness is Apple's two-step process for submitting. Every app store but Apple's lets you upload your game during the "describe your game and upload your screenshots" process. Just choose your APK or BAR file and press "upload". Except iOS. After you get all your descriptions and screenshots uploaded and Apple says you're ready to go, you then have to run a free utility that comes with xCode that uploads your IPA file to Apple. It's not particularly obnoxious, but it'll catch you by surprise the first time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you want to check out how Marble Bump looks in the four app stores, head over to my newly-updated mobile site at &lt;a href="http://m.thecodezone.com/"&gt;m.thecodezone.com&lt;/a&gt; and click on the four app-store buttons under the game.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And I'll make the same deal here as I made on FaceTwitterBookPlus. If you review my game, I'll reimburse you for the buck you paid for the game via Paypal :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-8116090511556462183?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/8116090511556462183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=8116090511556462183' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8116090511556462183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8116090511556462183'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2011/08/idea-to-app-stores-in-two-weeks.html' title='Idea to app store(s) in two weeks'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-1165397969220548693</id><published>2011-07-12T13:01:00.000-06:00</published><updated>2011-07-12T13:01:19.220-06:00</updated><title type='text'>AS3 Controls</title><content type='html'>Still doing my mobile games here. One problem I ran into is with controls. My games aren't very control-heavy, but there are times that I do need to impart a little textual or columnar information to the user (i.e. help and high scores). And I'd really rather not roll my own. And this problem is compounded by Adobe's apparent abandonment of the control model for mobile Flash.&lt;br /&gt;&lt;br /&gt;Mind you, the standard AS3 Flash/Flex controls render fine in mobile apps. Problem is, a lot of the controls are not at all finger-friendly. Some controls, like PushButtons, work fine. After all, clicking a button with a mouse and tapping a button with your finger is the same operation as long as you make the button large enough to accommodate a finger. Some operations though, like scrolling a text-field with a scrollbar, are frustrating. Adobe addressed this on Flex by releasing several finger-friendly controls. But unlike the previous releases of AS3 controls, they didn't keep parity with Flash. If you're using Flash with mobile, and you want controls, you're pretty-much on your own.&lt;br /&gt;&lt;br /&gt;I have played around with a couple of the mobile-friendly Flash control sets out there, but none of 'em really set me on fire. Some looked good but looked more like Android than iOS. Some were built around an odd model that made it difficult for me to just say something easy like myTextField = new TextField().&lt;br /&gt;&lt;br /&gt;And I understand that it'll take time. The AS3 controls that come with Flash are pretty danged robust and well documented, and you won't be able to duplicate all that functionality in the short term. But I did find &lt;a href="http://activeden.net/item/touchcomponents-v20/310694"&gt;this&lt;/a&gt;, which I think is pretty interesting. &amp;nbsp;Rather than write new controls, the author just wrote subclasses for &amp;nbsp;the touch-unfriendly controls and added touch-friendly events. So, for example, you can now have a TouchDataGrid object that's just the old standard DataGrid control, only the mouse events are overloaded so you can drag in it with your finger to scroll it around.&lt;br /&gt;&lt;br /&gt;And that's great for me, because I don't wanna have to mess with controls. I'd much rather create a DataGrid and populate it with high score data than manage all the drawing myself. When I use standard controls, it's usually for stuff that I just want to implement and then ignore so I can work on the game. For example, Help.&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/-0G8pC4Cu8q0/ThySiChuRuI/AAAAAAAAAgY/2zypZblZrnE/s1600/Untitled-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-0G8pC4Cu8q0/ThySiChuRuI/AAAAAAAAAgY/2zypZblZrnE/s320/Untitled-1.png" width="210" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Wow, a scrolling text field and an OK button. Don't wanna spend much time on that!&lt;br /&gt;&lt;br /&gt;One thing you'll notice is the little scroll-elevator thing on the right side. On iOS and Android, that little scroll indicator only appears when things are actually scrolling. And I don't really like that. Dice-A-Rama actually got down-rated on iTunes because one reviewer stated that there are just a couple sentences of help without a detailed rundown of scoring. And that's not true. There's quite a lot of help and detailed scoring for each game, but you get the impression that there's just one screen because there's no indication that you're looking at a scrolling field and there's more to see. And I do realize that it's an OS sin to go against the One True Mobile Look, but I think it's an equal OS sin to hide from the user that there's more information to be seen. So I'll either leave the scroll indicator on or I'll add some "drag the danged screen to read more help" text.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-1165397969220548693?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/1165397969220548693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=1165397969220548693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/1165397969220548693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/1165397969220548693'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2011/07/as3-controls.html' title='AS3 Controls'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-0G8pC4Cu8q0/ThySiChuRuI/AAAAAAAAAgY/2zypZblZrnE/s72-c/Untitled-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-6176849538216127994</id><published>2011-06-07T14:45:00.000-06:00</published><updated>2011-06-07T14:45:10.440-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='siteannouncements'/><title type='text'>Now with Google +1</title><content type='html'>Well I haven't had any substantial updates to the site since November. And that's both good and bad. It's good in that there haven't been any site emergencies in six months. We're nice and stable.&lt;br /&gt;&lt;br /&gt;But it's not good in that there haven't been any other site updates of note.&lt;br /&gt;&lt;br /&gt;But I haven't been sitting on my mini-empire of puzzles. Blackberry Playbook Bulldozer, Duck Tiles, and Pop Pies Portable (based on Pop Pies 3) are shipping. Brain Bones and an all-new game called Dice-A-Rama are also getting ready for release on Playbook, Android, and iOS.&lt;br /&gt;&lt;br /&gt;As for this site, I've just added &lt;b&gt;yet-again-still-another social networking widget&lt;/b&gt;, I have now added Google +1 buttons on all of thecodezone.com's pages! Excitement!&lt;br /&gt;&lt;br /&gt;The way it works is simple. If you have a particular game you like (ConFusebox, for example), click the little Google "+1" button at the bottom. That way the page gets a little boost on Google's search results. This will hopefully drive a few more people to the site, giving me another dollar or two of ad revenue and financing more puzzles.&lt;br /&gt;&lt;br /&gt;Big thanks for your support!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-6176849538216127994?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/6176849538216127994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=6176849538216127994' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/6176849538216127994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/6176849538216127994'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2011/06/now-with-google-1.html' title='Now with Google +1'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-3240684431859205391</id><published>2011-05-11T10:34:00.001-06:00</published><updated>2011-05-11T10:39:38.501-06:00</updated><title type='text'>Your AIR for Android app is open source - like it or not!</title><content type='html'>First off, I’m not posting this with the hopes of inviting malice. I’m posting this to inform you that anything you thought regarding code security in AIR for Android apps is probably illusory, and that you (and hopefully also Adobe) need to take some extra steps if you don’t want your assets stolen.&lt;br /&gt;&lt;br /&gt;That being said, here’s how to take apart an AIR for Android app you’ve downloaded from the Android Market.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Get the free Astro file manager from the Android Market.&lt;/li&gt;&lt;li&gt;Run Astro.&lt;/li&gt;&lt;li&gt;From the app menu, choose “tools” and then “Application Manager/Backup”.&lt;/li&gt;&lt;li&gt;Choose any app you’ve installed on your Android device. You can choose any app you want, but AIR apps are particularly egregious in their lack of security.&lt;/li&gt;&lt;li&gt;The application will be copied from internal storage and will be copied to your backup folder (most likely on your SD card) as an APK file.&lt;/li&gt;&lt;li&gt;While still in Astro, navigate over to that backed up APK file and click on it. Choose “send to”, and send it to your desktop machine via email or Dropbox.&lt;/li&gt;&lt;li&gt;Now that the APK is on your desktop computer, rename the APK extension to ZIP and open it with your favorite ZIP-reading program.&lt;/li&gt;&lt;li&gt;In the “assets” folder within the ZIP, you should find a file with the extension SWF. Yes, this is the same SWF that was created with Flash/Flex. The AIR Android packager doesn’t do anything to the file at all. It just copies it into the right spot in the APK ZIP-file so the AIR runtime can run it.&lt;/li&gt;&lt;li&gt;Copy that SWF out of the ZIP file, and you’re done.&lt;/li&gt;&lt;/ol&gt;At this point, you can do whatever you want with it. You can download the Adobe AIR SDK and Android SDK, re-package the SWF into a new APK, and upload it to the Android Market under your own name. You can decompile the SWF with a tool like Sothink SWF Decompiler (which worked great on all the examples I tried), then change up the game enough to pretend it’s an entirely different game. You can put the SWF on your website. Or you can just browse through all the author’s source code and copy out his code/graphics/sound assets into your game!&lt;br /&gt;&lt;br /&gt;Note that there are tools like secureSWF (which I reviewed &lt;a href="http://archive.gamedev.net/features/reviews/productreview.asp?productid=777"&gt;here&lt;/a&gt;) that are very effective at munging ActionScript bytecode into something that can’t be meaningfully decompiled, but that would only prevent people from decompiling and/or reading and/or recompiling your source code into a new SWF. There’s still nothing preventing me from making a new APK out of your game's SWF.&lt;br /&gt;&lt;blockquote&gt;also note that exactly ZERO of the AIR for Android apps I tried actually had obfuscated their bytecode with a third-party tool . A couple of you guys have atrocious naming conventions :)&lt;/blockquote&gt;Fact is, if you are going with Adobe and Android’s recommended sequence to make an AIR for Android APK file with the aim of putting your app on the market, you are essentially open-sourcing your app. Unless you go with some further security (and I don’t even know what further security you could implement beyond obfuscating bytecode), you are leaving your app wide open for IP theft.&lt;br /&gt;&lt;br /&gt;And I’m not doing this with the aim of convincing every 13 year-old creep with a decompiler to start stealing apps and republishing ‘em under his own name. It’s more like discovering that every door-keypad at the Pentagon opened with the combination 1-2-3-4-5. Would publishing such information be inviting terrorism or would it be informing the Pentagon that their security is worthless and needs updating ASAP?&lt;br /&gt;&lt;br /&gt;Also I’m posting this because I’m angry. And I’m angry because I brought this up during a Q&amp;amp;A at an Adobe conference when AIR was announced as “Apollo” in 2007. The Q&amp;amp;A went something like this:&lt;br /&gt;&lt;blockquote&gt;Me: If your compiling step is just zipping up all of the web-app’s assets with an XML manifest file and some icons, what’s to prevent me from unzipping that file, making changes, and re-deploying it.&lt;br /&gt;&lt;br /&gt;AIR guy: We’re planning some security stuff.&lt;/blockquote&gt;Turns out the “security stuff” was apparently their app signing process. And the ONLY thing that prevents me from doing is me making changes within the AIR file itself. I can’t open an AIR (or APK) file and make changes to the file itself, as the certificate file would no longer match file checksums for the AIR/APK file. I’m still free to open, decompile, read, write, update, steal, and rebuild the app under my own name.&lt;br /&gt;&lt;br /&gt;They’ve had four years to fix this.&lt;br /&gt;&lt;br /&gt;Finally, a note about the iPhone. While an iPhone IPA file is also a renamed ZIP and IPA files are also easy to retrieve, the contents of AIR for iOS files beyond icon PNG files and a manifest XML weren't in a readily decompile-able format. Looks like the Adobe AOT compiler really works.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-3240684431859205391?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/3240684431859205391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=3240684431859205391' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/3240684431859205391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/3240684431859205391'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2011/05/your-air-for-android-app-is-open-source.html' title='Your AIR for Android app is open source - like it or not!'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-6222312749055616603</id><published>2011-03-22T11:36:00.000-06:00</published><updated>2011-03-22T11:36:25.643-06:00</updated><title type='text'>Good book deal</title><content type='html'>Good deal today. O'Reilly has several good titles today. The good deal part is that they're giving all proceeds (minus author royalties, I'm sure that's a contractual thing) to Japanese disaster relief.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://oreilly.com/store/dd-jpn.html"&gt;http://oreilly.com/store/dd-jpn.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Couple of good looking titles there. Although I don't know how good a book on Audacity can be. Audacity is REALLY easy to use.&amp;nbsp;Anyway, browse and get a book for a good cause.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-6222312749055616603?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/6222312749055616603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=6222312749055616603' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/6222312749055616603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/6222312749055616603'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2011/03/good-book-deal.html' title='Good book deal'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-865814893269699073</id><published>2011-02-24T10:49:00.000-06:00</published><updated>2011-02-24T10:49:51.014-06:00</updated><title type='text'>New project part two</title><content type='html'>Well, the &lt;a href="http://angriestprogrammer.com/"&gt;angriestprogrammer.com&lt;/a&gt; project has spawned a successor. And the successor came from its sheer overengineering. Even though my little database/XML/PHP driven comic compositor could've been simpler than it was, I gave it a few extra capabilities. Namely the capability to overlay several bitmaps in a frame, although angriestprogrammer.com only shows one bitmap so it was never needed.&lt;br /&gt;&lt;br /&gt;And I got to thinking, what if I was able to define bitmaps with descriptive names and have them appear only if they're called into existence in a frame, i.e. if they're speaking? And what if I gave the speech little comic "bubbles" so I could use backgrounds other than just white? If I did those things, I could build a more&amp;nbsp;sophisticated (but only slightly more so) "red meat" style comic (google for it) out of a simple XML description.&lt;br /&gt;&lt;br /&gt;And then I got the idea of knock-knock jokes. After all, there are millions of those out there, and there really isn't a good site for 'em. Most knock-knock sites appear to be holdovers from Geocities that have plenty of knock-knock jokes, but they're not really presented in an appealing style.&amp;nbsp;So I invented my new site, &lt;a href="http://knockville.com/"&gt;knockville.com&lt;/a&gt;, a kids' website that will become (I hope) the definitive home for knock-knock jokes on the web, presented in an appealing style.&lt;br /&gt;&lt;br /&gt;That is, if you find public domain clipart appealing. And I do. There's just an odd innocence to it. Case in point.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://knockville.com/comics/70defc198c.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="114" src="http://knockville.com/comics/70defc198c.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I think a Facebook commenter summed the whole project up with something like "you've figured out how to be a cartoonist without having to draw OR write. Congratulations."&lt;br /&gt;&lt;br /&gt;So my goal is to spend an hour or so a week scanning in a couple of new characters and/or backgrounds and entering a dozen jokes, in the hopes that eventually I'll have about 100 characters and a couple-dozen backgrounds. And I'll keep entering knock-knock jokes until I run out. And after that, I'll just let the site repeat jokes forever.&lt;br /&gt;&lt;br /&gt;And I don't think repeats will be a problem once I have a big enough mass of material. I remember listening to an interview a few years ago with the creators of the Teletubbies. And the interviewer asked 'em why they stopped making new episodes after four years even though they were successful. And the answer, I thought, was quite astute. It was that they had enough episodes that any kid who just discovered the Teletubbies would now outgrow the series before running out of episodes. They could now re-run episodes forever without worrying about them getting stale, because kids are EXPECTED to outgrow them. I fully expect kids to visit my site, press the "Random" button a dozen times until they get a few new jokes to tell their friends at school, then get on with their lives.&lt;br /&gt;&lt;br /&gt;And why knock-knock jokes? Because when my daughter was four years old, I was roped into helping the kids with a party at school. And one of the kids was bummed because she wanted to sit by my daughter but couldn't, so I declared that I was going to sit by her. And then I told her a knock-knock joke. And as soon as I did, a dozen other kids started chiming in with their own jokes (most of which were completely random and awful but I digress). I saw that there's just something pure and easy-to-remember about knock-knock jokes, and I always kept with me that if I could present knock-knock jokes in a silly format that kids could read and remember for school the next day, they'd probably show up to read 'em.&lt;br /&gt;&lt;br /&gt;So I made the site. And I made it in a way that would be easy to maintain. All that's really left to do is to add a page where kids can submit their own jokes. And if I use their jokes I'll give 'em credit.&lt;br /&gt;&lt;br /&gt;So I'm hoping that this modest little project will work out.&amp;nbsp;Thoughts?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-865814893269699073?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/865814893269699073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=865814893269699073' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/865814893269699073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/865814893269699073'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2011/02/new-project-part-two.html' title='New project part two'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-7590652973484458809</id><published>2011-01-24T11:34:00.001-06:00</published><updated>2011-01-24T12:04:03.052-06:00</updated><title type='text'>My new project</title><content type='html'>Okay, I hinted on it on &amp;lt;Insert Social Network Here&amp;gt; a couple of times. And I've been rolling the technical specifics around in my head for a couple of months. So I took about ten days full-time to&amp;nbsp;implement&amp;nbsp;the back-end. And now it's done.&lt;br /&gt;&lt;br /&gt;It's my own webcomic, &lt;a href="http://angriestprogrammer.com/"&gt;The Angriest Programmer In The World&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;First off, &lt;b&gt;the thinking behind it&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;I found recently, while working, that I was building some juicy one-liners in my head. Mostly geeky. Usually angry. And while Twitter is usually the venue for such brain-droppings, I found that they often didn't fit. I needed something more like the Laugh-In blackout gags, with a couple of characters interacting.&lt;br /&gt;&lt;br /&gt;And I liked the minimalist style of &lt;a href="http://www.qwantz.com/index.php"&gt;Dinosaur Comics&lt;/a&gt; and the even more minimal &lt;a href="http://www.angriestricecooker.com/category/comics/angriest-rice-cooker/"&gt;Angriest Rice Cooker In The World&lt;/a&gt;&amp;nbsp;(RIP), both of which are influenced by David Lynch's &lt;a href="http://www.davidlynch.de/angry.html"&gt;Angriest Dog In The World&lt;/a&gt;. I thought that Rice Cooker was a bit limited in that it was one character only, thus making it work better as a Twitter avatar than a standalone comic strip (ala Twitter feeds like &lt;a href="http://twitter.com/AtheistHulk"&gt;Atheist Hulk&lt;/a&gt;*). Angriest Dog appears to have more than one character, but they're never shown so you can't really identify with them. So I decided to make a comic with 1.5 characters (one isn't entirely sentient) as well as a computer and a narrator with which the main character could interact. And I went with four frames because three frames is occasionally too short if you have two characters.&lt;br /&gt;&lt;br /&gt;Basically the whole thing is based on single static frames like Angriest * In the World, only with a couple of persistent interacting characters like Dinosaur Comics and some deeply geeky jokes like in&amp;nbsp;&lt;a href="http://xkcd.com/"&gt;XKCD&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So yes, this ain't art. This is a derivative cynical ploy to grab some geek eyeballs.&lt;br /&gt;&lt;br /&gt;And that's nothing new. I remember reading once that the guy who makes Garfield used to be in advertising and he chose a cartoon about a cat because there was already a top-tier and a second-tier newspaper comic dog (Snoopy and Marmaduke) and a second-tier newspaper comic cat (Heathcliff) so he went with a cat hoping to fill the top-tier comic cat void.&amp;nbsp;I'm not trying to become a top-tier anything. I'm just making a character who will vent his id to the world while making pop culture references at a more deeply geeky level than stuff intended to appeal to normals like "Big Bang Theory".&lt;br /&gt;&lt;br /&gt;In other words, if you don't get the jokes, then it ain't for you. Belvin probably won't throw in a joke about how much he hates Mondays every week so you won't be scared away by the joke about brace-indenting that you didn't get.&lt;br /&gt;&lt;br /&gt;And someday I'll likely put something together that will let people send in their own corporate and/or programmer stupidity (ala Dilbert) so Belvin Klapoknik can have new things to yell about.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As for the future, this is a soft launch. I want a dozen or two comics on the site so people will have a reason to stay for more than ten seconds. I'll see if this keeps going and gets enough eyeballs to justify its existence. If so, then yay. If I run out of ideas (like the Lazy Programmer videos) or nobody cares (like Cryptotwit and Hangtwit), then it'll wither.&lt;br /&gt;&lt;br /&gt;What I'd like from you right now isn't publicity. While I'd like for a zillion people to press the "share this comic on  &amp;LT;Insert Social Network Here&amp;GT; buttons under the comic, and I'd like a zillion people to subscribe to the daily comic feed in Google Reader, I also know that there's not currently enough stuff there to compel people to stay. And I don't want you to share a comic unless you actually think it's funny. If you share a joke out of obligation, then your  &amp;LT;Insert Social Network Here&amp;GT; friends probably will find it as unamusing as you did, and that won't help.&lt;br /&gt;&lt;br /&gt;So instead I'd just like a little feedback. I've been playing with it in BrowserLab, and it looks reasonable in most browsers. There's still a little tinkering (HTML, like Java, is "write once, port everywhere"), but I'd like to hear what you like and hate.&lt;br /&gt;&lt;br /&gt;And, yes, I know Comic Sans is evil. Problem is, damn near every comic font I've found either doesn't look good at a small size or has a very limited character set. I have a comic this week with umlauts, and I didn't want to draw them manually**.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*why my own Twitter feed is the second hit for "Atheist Hulk" is entirely beyond me. I just noticed it, and I suspect someone's stuffing the Google box there.&lt;br /&gt;&lt;br /&gt;**and by that, I mean "I don't have a way to draw them manually that isn't horrendously complicated, as these comics, if you haven't figured out yet, are auto-generated from a custom XML-based comic rendering language and never see a paint program.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-7590652973484458809?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/7590652973484458809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=7590652973484458809' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/7590652973484458809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/7590652973484458809'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2011/01/my-new-project.html' title='My new project'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-9052864485742326704</id><published>2011-01-09T12:07:00.001-06:00</published><updated>2011-01-09T12:07:47.491-06:00</updated><title type='text'>New gamedev!</title><content type='html'>Hey, it's my first blog post on the new gamedev.net!&lt;br /&gt;&lt;br /&gt;For the record, we were fully aware that gamedev was suffering from severe bitrot for years. While I'm sure you'll see more info from developers more closely associated with the project, the main difference is that we're now using a commercial third-party content management system rather than rolling everything ourselves. Gamedev's been around for a long time, existing well before the advent of high quality CMS, but after a lot of jostling back and forth, we finally decided that there were systems out there that would accommodate our needs and traffic requirements (which aren't insignificant).&lt;br /&gt;&lt;br /&gt;And I'm also posting this to point out one fancy new feature that I've been asking for for years. We can now scrape blogs from other sites! Fact is, we have several users with popular blogs on their own servers or on third-party systems (blogger, wordpress, etc). But since you had to enter developer journal/diary/blog entries right on gamedev's servers, you couldn't list your blog on gamedev without manually duplicating your blog entries.&lt;br /&gt;&lt;br /&gt;And, far as I know, the only person who's obsessive enough to do that was me :)&lt;br /&gt;&lt;br /&gt;So if you have your blog out on another site (like &lt;a href="http://thecodezone.blogspot.com/"&gt;thecodezone.blogspot.com&lt;/a&gt;), you can now keep your blog there and gamedev will mirror it.&lt;br /&gt;&lt;br /&gt;Hopefully this will be a big step towards making gamedev better one-stop-shopping for developers documenting their process.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-9052864485742326704?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/9052864485742326704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=9052864485742326704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/9052864485742326704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/9052864485742326704'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2011/01/new-gamedev.html' title='New gamedev!'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-4119809860422331925</id><published>2010-12-10T11:30:00.002-06:00</published><updated>2010-12-10T12:53:36.237-06:00</updated><title type='text'>Chromium App Store thought-collection</title><content type='html'>&lt;div&gt;Warning: this is a bigass unordered pile of random technical thoughts.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;I'm just trying to collect my thoughts as to how I'd sell Bulldozer on the Chrome App Store so people could pay a buck, slap it on their ChromeOS netbooks, and start playing. ChromeOS has two different kinds of apps, "packaged" apps, which are zipfiles containing a complete copy of everything your webapp needs to run, and it can contain html, js, swf, and pdf. In structure, it's not all that different from AIR. It's just a complete little bundle of stuff to do a web app.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The other non-packaged method is basically just a shortcut to a web-app running on your server. For example, I could build an html page that grabs a bulldozer swf from my site and displays it full screen. Problem there is that that's gonna cost time and bandwidth. I'd much rather have the user copy my game to his machine and then have it run instantly rather than download it every time. Also, I like the user to be able to play without an internet connection. After all, he paid for it and I don't wanna tell the user when he can and can't play a game.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Looking at the documentation, the commerce API is only available to the non-packaged games, so Bulldozer for ChromeOS is gonna be required to run from my servers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Looks like the process is gonna be something like this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. User buys Bulldozer from Chrome web store.&lt;/div&gt;&lt;div&gt;2. User gets an icon for the "app", which is just a link to a page on my site (let's say www.thecodezone.com/bulldozerforchrome.php)&lt;/div&gt;&lt;div&gt;3. If user clicks the "app" to run bulldozer, my PHP will quietly ask Google if this person has paid for my game. If "yes", I stream over a SWF of complete Bulldozer. If "no", I serve up an error message or the crippled version that urges him to buy the real thing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While this works, it's pretty hard on bandwidth for users and me. The full-retail Bulldozer SWF is about 10 meg (90% of which is stereo music). Normally that's not a problem for my users because I bundle it up as an EXE tht they install to their machine, so it's a one-time hit. If that's gonna happen every danged time they click the icon, it's a problem. Especially if Google wants this thing to work with pay-by-the-byte phone cards.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mind you, I could do two things to ease up on the bandwidth.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. I could make things smaller. I could get Bulldozer down to less than 2 meg by compressing the music more and going with smaller and fewer eye-candy animations. Given that this will likely sell for considerably less than the $9.99 I charge for the full game on my site, that'd be understandable.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. I could cache things up. Apparently ChromeOS has some custom directives in the app-manifest that tell Chrome "this file is part of an app, so don't just dump it from the cache when you get bored", so I could mark bulldozer-full.swf suchly. The problem is then that the user now has a full Bulldozer in his cache and could copy it out, so this swf would need to do a little checking to make sure it was launched legitimately. Since the consequence of having a paid app seems to be that it is necessarily non-packaged, I don't think this'll be a problem.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I think the sequence would ultimately look like this (as a shortcut):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. User buys Bulldozer from the Chrome app store.&lt;/div&gt;&lt;div&gt;2. User gets an icon for the "app", which is just a link to a page on my site (let's say www.thecodezone.com/bulldozerforchrome.php)&lt;/div&gt;&lt;div&gt;3. If user clicks the "app" to run bulldozer, my PHP will quietly ask Google if this person has paid for my game. If "yes", I stream over a SWF of complete Bulldozer. If "no", I serve up an error message or the crippled version that urges him to buy the real thing. Note that the SWF might already be cached up, so this step might be skipped.&lt;/div&gt;&lt;div&gt;4. When Bulldozer.swf runs, it receives some tokens or it passes some code back and forth to my server to ensure that it's actually been served from the site and isn't just someone double-clicking on the SWF.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Although looking at the documentation, packaged apps DO have access to the payment API, but they say that it's "difficult to do securely". So I could do a packaged app thusly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. User downloads Bulldozer, receiving a CRX, which basically contains a static HTML file and a SWF.&lt;/div&gt;&lt;div&gt;2. When user launches the "app", it displays the HTML, which has the SWF embedded. My SWF could be passed the user's info, and then I could communicate directly with Google's authentication server to determine if it's being run legitimately.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When Google says "difficult to do securely", I presume they're talking about how someone could take apart the app (since it's all zipped up on a user's machine) and defeat the token passing. And this is true, although SWF can be made considerably more difficult to decompile than obfuscated Javascript. And in either case (packaged or non-packaged), the user will necessarily have my SWF on his machine, and if he's good enough to decompile, defeat my token-passing, and recompile, it won't make much difference which scheme he's using.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So thus-far it looks like the rules I'm gonna have to follow are:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. Paid games will necessarily have to communicate with Google to make sure they're paid for. The only way paid-for apps can run without an internet connection is if they're running on the honor system where the user pays for the app, gets the CRX, and hopefully doesn't put it on bittorrent.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. You can package or not package. If you're not packaged, you should either (a) be small or (b) tell Chrome to keep your assets in the cache. And if your assets are static and are rarely updated (as mine are), you might as well be packaged.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. The only way to securely determine if you've been paid for is to have your server talk to Google's server and then serve content dynamically, although this is impractical if your assets are large and relatively static.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4. You determine if your app's been paid for via OAuth. You can do that on your own server or directly from your client app. If you do it from your client app (i.e. on the user's machine), then you open your fly if you're easy to decompile.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Finally I must note that Flash apps on ChromeOS are running in the sandbox and won't be able to communicate with a site unless it has a crossdomain.xml file that allows that. I don't know if Google's store-authentication server has that. If it doesn't, I'll necessarily have to relay authentication through my own server. Ultimately I'd rather my SWF communicate with Google directly rather than relay through thecodezone.com. I like to follow the "what if I'm hit by a bus tomorrow" rule which roughly translates as "what if thecodezone.com disappears forever tomorrow". People who have my current games can still play 'em as long as they have the installer and unlock code, as I don't do server authentication. If "is my game paid for" requests always pass through thecodezone.com, then it's required that my authentication code exist on my site forever.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Oh well, another thing to think of.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-4119809860422331925?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/4119809860422331925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=4119809860422331925' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/4119809860422331925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/4119809860422331925'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/12/chromium-app-store-thought-collection.html' title='Chromium App Store thought-collection'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-5476706780922180515</id><published>2010-11-16T12:37:00.003-06:00</published><updated>2010-11-16T12:40:22.875-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='siteannouncements'/><title type='text'>New Bulldozer and Duck Tiles version</title><content type='html'>It's just a minor update, but the games have required so few updates that it's newsworthy when it happens. I posted an update to the Windows versions of Bulldozer and Duck Tiles that takes care of a problem saving your settings if your Windows username contains non-Latin characters.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you've experienced a problem saving your settings in Bulldozer or Duck Tiles, you might want to check out the updates. Thanks!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-5476706780922180515?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/5476706780922180515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=5476706780922180515' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5476706780922180515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5476706780922180515'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/11/new-bulldozer-and-duck-tiles-version.html' title='New Bulldozer and Duck Tiles version'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-6587188056947483059</id><published>2010-11-12T09:20:00.005-06:00</published><updated>2010-11-12T09:59:58.106-06:00</updated><title type='text'>Writing and reading and listening and money</title><content type='html'>Wow, it's the first time in 12 years that I went an entire calendar month without blogging. I've actually been finding myself with less to say as the years go on. I'm reading more, writing less, and almost never listening because there's very little worth listening to. My TV viewing is now pretty-much restricted to &lt;i&gt;Breaking Bad&lt;/i&gt; (which is gonna be a problem because I'm almost caught up and new episodes ain't coming out for six months) and reruns of &lt;i&gt;iCarly&lt;/i&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[/angryoldfart]&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I actually do have a couple of mentions money-wise. It's now the end of the year, which means that you should read my &lt;a href="http://thecodezone.blogspot.com/2009/12/end-of-year-reminders.html"&gt;blog entry from last year&lt;/a&gt; about getting your credit reports. Suffice it to say that there is one way that is &lt;i&gt;actually &lt;/i&gt;free and a dozen ways that &lt;i&gt;pretend &lt;/i&gt;to be free but will end up charging you a lot of money. So don't be stupid.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Next is a little discovery that Shelly and I found, and it's really only useful if you have kids. Paypal has a "student account" that you can get at &lt;a href="https://student.paypal.com/"&gt;https://student.paypal.com&lt;/a&gt;. Basically it's a sub-account of your own paypal account. It has its own login and password and it works very similarly to a standard paypal account, except that rather than link to an external bank account, it links to your own paypal account and it exists as a "child" of your account.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's also got a few handy features:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. You can set your "main" paypal account to make regular automatic payments into it, ala allowance.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. You can get a debit card for it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. It's got parental controls, so you can decide if your kid can send and/or accept money without your permission.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4. You ultimately have control over the balance, so you can yank your kid's money right back outta the account if they're abusing the privilege.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And that's worked brilliantly for Maggie as far as teaching her to be responsible with money. We have it set so it'll deposit a few bucks for her allowance every Friday. She can (and does) go to paypal.com, log in, and check her balance whenever she wants. If she wants to buy something online, then she can talk to me and we'll buy it together (responsible parent that I am). And if she wants to buy something locally, then she can buy it with the debit card (which I keep in my wallet, thankyouverymuch).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And it's really doing the job of teaching her about money. For example, last week she found some "Silly Bands" (funny shaped rubber bands) at Wal Mart that she wanted, but she decided that it wasn't worth it because she was saving up for some better stuff and just spending her allowance on frivolous junk sets you back from getting something really cool.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's also a good pride thing. A couple of months ago, she finally got enough cash to buy a Nintendo handheld. She'd been keeping an eye on prices, so she knew where they were cheapest and who had pink ones available. And you can bet she told everybody in the freakin' store that she'd been saving up and she was buying this expensive toy WITH HER OWN MONEY!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And it also helped on a recent trip to Disney. Rather than have her pestering me to buy T-shirts and toys when we got to Disney, I paypal-ed her a few extra dollars "vacation cash" and told her she could buy anything she wanted. And she did spend some time looking for exactly what she wanted.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And what did she end up getting?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yep, a mouse-ear hat with her name embroidered on it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://farm5.static.flickr.com/4029/5141351238_e34a2cd5a3.jpg"&gt;&lt;img src="http://farm5.static.flickr.com/4029/5141351238_e34a2cd5a3.jpg" border="0" alt="" style="cursor: pointer; width: 500px; height: 375px; " /&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/5927544581291786949-6587188056947483059?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/6587188056947483059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=6587188056947483059' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/6587188056947483059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/6587188056947483059'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/11/writing-and-reading-and-listening-and.html' title='Writing and reading and listening and money'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm5.static.flickr.com/4029/5141351238_e34a2cd5a3_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-3452010750793854605</id><published>2010-09-28T08:46:00.004-06:00</published><updated>2010-09-28T09:56:21.845-06:00</updated><title type='text'>Chinese games and localization hints</title><content type='html'>Been spending the last few days localizing, as Mochimedia (now owned by a Chinese company) offered free localization services for any customers who wanted to release their games in China.&lt;br /&gt;&lt;br /&gt;I'm not sure exactly when my games will start popping up on Chinese sites. But until then, you can check 'em out.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/bafflebees_cn/bafflebees_unltd_cn.swf"&gt;BaffleBees&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v689/chesscards_cn.swf"&gt;ChessCards&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v687/balloon2007_cn.swf"&gt;Ballistic Balloon Baboon Bounce&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v688/brainbones_cn.swf"&gt;Brain Bones&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v691/confusebox_cn.swf"&gt;ConFusebox&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/2_v32/confusebox2_cn.swf"&gt;ConFusebox 2&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v692/countdowndice_cn.swf"&gt;Countdown Dice&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v693/doubletwelve_cn.swf"&gt;Double Twelve&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v694/headon_cn.swf"&gt;Head On Collision&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v695/meltdown_cn.swf"&gt;Meltdown&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v696/olivewars_cn.swf"&gt;Olive War&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v697/pokerpatience_cn.swf"&gt;Poker Patience&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v698/poppies_cn.swf"&gt;Pop Pies&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v698/poppies_cn.swf"&gt;Pop Pies 2&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/3_v3/poppies3_cn.swf"&gt;Pop Pies 3&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v738/shisen_cn.swf"&gt;Shi Sen&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v739/thinktank_cn.swf"&gt;Think Tank&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v740/voracity_cn.swf"&gt;Voracity&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v741/worm_cn.swf"&gt;Worm Sojourn&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v742/zombiekitten_cn.swf"&gt;Zombie Kitten Attack!&lt;/a&gt;&lt;div&gt;&lt;a href="http://games.mochiads.com/c/g/_v742/zombiekitten_cn.swf"&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Now here's some tips on translating your games. This is my third or fourth time translating a whole pile of games into another language, and here are a few things I've learned.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;1. Don't overengineer the process. &lt;/b&gt;Chances are, your text is going to be passed along to an entry-level writer, so don't make the process needlessly complicated.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At one company I worked at, they built a whole Java-based database of their text, with every string tagged with a language, and then a nightly process would convert the database into a series of source files that the game could read. They then gave their translators access to the database with the thinking it would make everything easy and automated. The job got done, but it wasn't easy for the translators.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When it came time for my project, I asked if I could just paste all of my in-game text into an Excel spreadsheet and email it to 'em, and they were THRILLED.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;2. Plan to make a couple of passes at it. &lt;/b&gt;Inevitably, something won't sound quite right in practice, and you'll need to make another pass or two with the translator until everything looks right.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;3. If you have something poetic or idiomatic or something else that just won't translate well, offer a more "literal" phrase that will translate better.&lt;/b&gt; For example, in my game "Brain Bones", the big button to roll the dice says "Roll The Bones". While the phrase "Roll The Bones" can be readily translated into another language, it's likely does not still mean "throw the dice" in that language. In such a case, provide alternate text that's free of nuance. . .like "throw the dice".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the case of my game text spreadsheet, I had two columns of text. One contained the actual in-game text, and the next column contained alternative text if I felt the in-game text wouldn't translate well.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ditto for alliterative text. While "Ballistic Balloon Baboon Bounce" can be translated literally, it will sound horribly stilted in another language. So I offered "Bouncing Balloon Game" in the alternative-text column. Between the actual and the alternative text, hopefully your translator will be able to come up with something reasonable.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;4. It's monkey-work, so take it slowly and methodically.&lt;/b&gt; Translating is mostly just cut-n-paste, so take some time and be careful about it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;5. Test everything to make sure it all fits once you're done.&lt;/b&gt; This was a much bigger problem with German than anything else, as Germans will happily construct a single word out of several words to create a 30+ letter monstrosity that'll fall off the edges of your dialog boxes. Look over everything and make sure it all fits.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;6. Make everything clear to your translator.&lt;/b&gt; Hopefully your translator is a native speaker of the target language. If so, that means that they're NOT a native speaker of your language and they might trip up on stuff that sounds fine to you (like "PRESS THE A KEY") but doesn't parse in their "not thinking in your language" brains. Make it clear to 'em that you're available and you're happy to provide more literal text if they need it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;7. Don't get married to your fonts.&lt;/b&gt; The "Baby Kruffy" font I used in Ballistic Balloon Baboon Bounce doesn't have Asian characters. Heck, it doesn't even have lowercase! In fact, you'll notice that all of the Chinese characters in my games are the same font, Microsoft YaHei. It's a boring font (it's Arial with a full Asian character set), but it is a "safe" font that's guaranteed to look right on all of the computers the games will use.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;8. Account for time zones.&lt;/b&gt; My afternoon is China's middle of the night and vice-versa, so I wasn't in a hurry.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-3452010750793854605?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/3452010750793854605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=3452010750793854605' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/3452010750793854605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/3452010750793854605'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/09/chinese-games-and-localization-hints.html' title='Chinese games and localization hints'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-7114759913806538370</id><published>2010-09-17T09:09:00.003-06:00</published><updated>2010-09-17T09:35:22.718-06:00</updated><title type='text'>How to make a game design document</title><content type='html'>I just noticed that &lt;a href="http://gameinformer.com/b/news/archive/2010/09/16/obama-challenges-kids-to-design-video-games.aspx"&gt;President Obama endorsed a game design contest aimed at kids&lt;/a&gt;, so I thought I'd post my kid's game design document that she drew up about a year ago.&lt;br /&gt;&lt;br /&gt;Just to get her brain working, I asked her to design me a game, and she went a bit overboard. I just gave her one word to get her started, "merponycorn". That is, of course, an ad-hoc neologism describing a unicorn pony that lives under the sea. . .&lt;br /&gt;&lt;br /&gt;A little while later she returned with the main layout of "Ponytopia", showing all the main locations, like the Candy Kingdom, the Beach, the Resort, the Apartment Building, the Fun House, and the Young Club. The Apartment Building is where all the merponycorns live, and when you sign up you get a room you can customize.&lt;br /&gt;&lt;br /&gt;&lt;p align=center&gt;&lt;img src="http://members.gamedev.net/johnhattan/diary/ponytopia_Page_3.png"&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Here are the five races of merponycorns, specifically the Pop Star Merponycorn, the Princess Merponycorn, the Fairy Merponycorn, the Magic Merponycorn, and the Rainbow Merponycorn. Each race of merponycorn has different attributes and powers.&lt;br /&gt;&lt;br /&gt;&lt;p align=center&gt;&lt;img src="http://members.gamedev.net/johnhattan/diary/ponytopia_Page_1.png"&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Finally, here's some miscellaneous notes regarding how to get points and spend them as well as the merponycorn dress-up application. She went quite far describing the economics of Ponytopia, as economics are a big cornerstone of every virtual world. Apparently you play games to get Ponycoins which you can then use to buy seeds and plant flowers in your virtual garden. Some flowers will sprout into pets that will follow you around and you can care for.&lt;br /&gt;&lt;br /&gt;Here's her page of miscellaneous notes.&lt;br /&gt;&lt;br /&gt;&lt;p align=center&gt;&lt;img src="http://members.gamedev.net/johnhattan/diary/ponytopia_Page_2.png"&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Oddly I think she's on to something here. Unfortunately, it's quite a bit bigger than a one-person project (as I feel I'll end up doing all the code), and even if I did go with an off-the-shelf solution like Electroserver for much of the underpinnings, there's still a lot there.&lt;br /&gt;&lt;br /&gt;So I thought I'd share it as an example of what you get when you tell a little kid to design a game based on a single word. I was really hoping more for "make your merponycorn jump on bubbles to win points" than a whole friggin MMORPG.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-7114759913806538370?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/7114759913806538370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=7114759913806538370' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/7114759913806538370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/7114759913806538370'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/09/how-to-make-game-design-document.html' title='How to make a game design document'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-6650317037396314417</id><published>2010-08-17T07:40:00.003-06:00</published><updated>2010-08-17T07:49:23.735-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='siteannouncements'/><title type='text'>A couple of minor changes</title><content type='html'>First off, the Google Checkout issue is fixed. The site should be in the pink again.&lt;br /&gt;&lt;br /&gt;Second, I made a couple of changes to the look. The old Flash-based menu has been replaced with a shiny new standards-compliant HTML menu. The old one worked, but it gave the HTML purists fits.&lt;br /&gt;&lt;br /&gt;Note that HTML menus tend to give some browsers fits (much like the Flash menu gave iPods and iPads fits). If you see something other than a classy gray menu-bar, please email support@thecodezone.com and let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-6650317037396314417?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/6650317037396314417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=6650317037396314417' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/6650317037396314417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/6650317037396314417'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/08/couple-of-minor-changes.html' title='A couple of minor changes'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-3690158241823205172</id><published>2010-08-09T07:13:00.002-06:00</published><updated>2010-08-09T07:18:56.313-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='siteannouncements'/><title type='text'>Google checkout issues</title><content type='html'>Looks like my shared SSL certificate is expired. Fortunately for me, all that affects is Google Checkout. As it stands, I'll be fulfilling any google checkout orders by hand until that issue is resolved. My service provider is aware of the issue and is working to fix it.&lt;br /&gt;&lt;br /&gt;Thanks for your patience.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-3690158241823205172?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/3690158241823205172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=3690158241823205172' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/3690158241823205172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/3690158241823205172'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/08/google-checkout-issues.html' title='Google checkout issues'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-416910369498440079</id><published>2010-08-04T14:02:00.003-06:00</published><updated>2010-08-04T14:12:39.294-06:00</updated><title type='text'>Handy piece of code</title><content type='html'>Here's a quick-n-simple piece of AS3 (or Javascript) that calculates the point on a line closest to a given point. It took me a couple of tries to get it right, so I figured I would share it.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;var nearestPtToLine = function(segA:Point, segB:Point, p:Point, infinite:Boolean = true):Point&lt;br /&gt;{&lt;br /&gt;  var dx:Number = segB.x - segA.x&lt;br /&gt;  var dy:Number = segB.y - segA.y&lt;br /&gt;  var u:Number = ((p.x - segA.x) * dx + (p.y - segA.y) * dy) / (dx * dx + dy * dy)&lt;br /&gt;&lt;br /&gt;  if (!infinite)&lt;br /&gt;  {&lt;br /&gt;    if (u &gt; 1)&lt;br /&gt;      u = 1&lt;br /&gt;    else if (u &lt; 0)&lt;br /&gt;      u = 0&lt;br /&gt;  }&lt;br /&gt;  return new Point(segA.x + u * dx , segA.y + u * dy)&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;seg1 and seg2 define a line segment. p is the point to test. infinite assumes that the line extends beyond seg1 and seg2. If you need the distance from a point to a line, just use the distance function in the flash.geom.Point object.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-416910369498440079?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/416910369498440079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=416910369498440079' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/416910369498440079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/416910369498440079'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/08/handy-piece-of-code.html' title='Handy piece of code'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-5687393327280769736</id><published>2010-07-30T09:41:00.002-06:00</published><updated>2010-07-30T09:41:48.872-06:00</updated><title type='text'>This is a test</title><content type='html'>This is just a test to try blog mirroring on another site. Ignore with impunity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-5687393327280769736?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/5687393327280769736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=5687393327280769736' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5687393327280769736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5687393327280769736'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/07/this-is-test.html' title='This is a test'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-4759769960157630013</id><published>2010-07-27T09:23:00.000-06:00</published><updated>2010-07-27T09:25:00.227-06:00</updated><title type='text'>Flash mobile tip number 1</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "&gt;I got a request from one of those game portal programmer sites to impart a little of my experiences regarding getting a quality Flash title running on mobile. Rather than come out with one big article, I decided to just post some tips and bits of code a little at a time.&lt;br /&gt;&lt;br /&gt;For the record, most of this experience is done porting Bulldozer and Duck Tiles and doing a non-ported "game from scratch", Pop Pies 3, which was designed as a single SWF that runs equally well on desktop as well as mobile by using alternative (read: not as nice) animations on a constrained platform.&lt;br /&gt;&lt;br /&gt;That being said, here's tip number one.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The width and height you set for your movie is a RECOMMENDATION, not a REQUIREMENT. Don't assume stuff outside the bounds will never be seen.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;What that means is that your runtime engine can choose not adhere to the recommended width and height. Flash has had the ability to run its content full screen for a couple of versions, but not much has taken full advantage of it until now. If you're scrolling through a web page on your Android phone and you see a cute Flash game you want to play, you can double-click it to blow the game up to the size of your screen. When your game grows to full screen, it will retain its proportions. That means that unless the game just happens to have the same aspect ratio as your phone's screen, there will be some extra space along the top/bottom or sides.&lt;br /&gt;&lt;br /&gt;And whatever happens to be in that space will be visible. If your game's background wallpaper stops right at the edge, people will see it. If you have some particles that you scooted off the edge of the screen so you wouldn't have to re-instantiate new ones later (which you should do, but more on that in a later tip), you'll likely be able to see them.&lt;br /&gt;&lt;br /&gt;Here's an example of Pop Pies running in its suggested resolution of 550x400 pixels&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://members.gamedev.net/johnhattan/diary/pp_notfull.png" /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Now that looks just fine. Volume control is in the lower left. Logo in the lower right. Everything fits.&lt;br /&gt;&lt;br /&gt;Also note that I have a rather subtle gray gradient going from gray on the left to white on the right.&lt;br /&gt;&lt;br /&gt;Here's the same game run in full-screen landscape on a portable screen.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://members.gamedev.net/johnhattan/diary/pp_full.png" /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Note that the aspect ratio of the game is the same (i.e. nothing is stretched), but since it's running on a wider screen, there's some stuff off to the side that's now visible that wasn't before.&lt;br /&gt;&lt;br /&gt;When I first ran Pop Pies 3 on an Android, it didn't look so nice full screen. Since I assumed nothing off-screen would show, my gradient went from 0,0 too 550,400. And when it ran on the Android, there was an obvious "seam" just to the left of the volume control. So I later made the background gradient much larger than the window to account for this.&lt;br /&gt;&lt;br /&gt;Here's the game running in full-screen portrait, showing that I still need to make my background gradient larger. Note the fruit and pie "watermarks" are hanging well outside the what-I-thought-to-be-visible area, but the gradient isn't.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://members.gamedev.net/johnhattan/diary/pp_full2.png" /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Also, I had some reusable particles (just colored circles) that I used for explosions and sparkles and other eye-candy. After a particle expired, rather than deleting it, I just set its X to -20 to shove it off the screen. If I had another explosion later, I'd just move any available particles into place on the screen rather than re-instantiate them. It's a fairly common technique if you have a lot of disposable bits and you don't want to make the garbage collector sweat. But when the game went full screen on Android, I ended up with a rather entertaining smear of unused particles along the left side of the screen.&lt;br /&gt;&lt;br /&gt;So I had to hide them more effectively.&lt;br /&gt;&lt;br /&gt;Keep this in mind.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And while I'm thinking of it, here's tip 1 1/2, just because it hasn't been said yet.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Use stage.displayState to check and/or set full screen&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Provided your Flash movie has 'allowFullScreen' set in its embed parameters, it can go full screen. Most Android game websites will take advantage of this. While users can manually blow your game up to full screen by double-clicking it, you can also help 'em out by rolling your own maximize button (which is that little full-screen button you see in the corner of the above screenshot).&lt;br /&gt;&lt;br /&gt;stage.displayState can be set to StageDisplayState.FULL_SCREEN or StageDisplayState.NORMAL. You can check or set this value to go to or return from full screen.&lt;br /&gt;&lt;br /&gt;Note, though, that there are limitations.&lt;br /&gt;&lt;br /&gt;1. You can only set stage.displayState in response to user input! Because someone (rightly) thought that hijacking a webpage to display a full-screen Flash animation would be annoying, they crippled the ability to set it. So if you want to make your Flash game go full screen, you'll need to attach the code to a nice little button like I did.&lt;br /&gt;&lt;br /&gt;2. You cannot check to see if 'allowFullScreen' is set for your movie, so you can't be absolutely certain that your movie is allowed to go full screen. I'm not sure why they did this, but it really bugs me. I've seen a couple of sites that offer hacks to check that value, but I've yet to find one that works reliably. If I find one, I'll definitely post it.&lt;br /&gt;&lt;br /&gt;Note that about 100% of Android Flash game sites will have 'allowFullScreen' set to true, so if you're writing a game that specifically targets Android, you'll be fine.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-4759769960157630013?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/4759769960157630013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=4759769960157630013' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/4759769960157630013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/4759769960157630013'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/07/flash-mobile-tip-number-1.html' title='Flash mobile tip number 1'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-4597084328573141824</id><published>2010-07-11T16:28:00.001-06:00</published><updated>2010-07-11T16:29:55.730-06:00</updated><title type='text'>Free JQuery book!</title><content type='html'>Free book for the next 24 hours, thanks to Spain's World Cup win.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://sale.sitepoint.com/"&gt;http://sale.sitepoint.com/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-4597084328573141824?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/4597084328573141824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=4597084328573141824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/4597084328573141824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/4597084328573141824'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/07/free-jquery-book.html' title='Free JQuery book!'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-4755993040370340452</id><published>2010-06-06T13:30:00.002-06:00</published><updated>2010-06-06T13:33:12.212-06:00</updated><title type='text'>Episode 7 of The Lazy Programmer</title><content type='html'>Episode 7 is up. I'm finally starting to grok Premiere Pro CS5, so I should be able to post better produced stuff.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/sEZXbG9smW0&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/sEZXbG9smW0&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As always, comments are appreciated, but only if they're stupid. Insightful youtube comments just don't work.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-4755993040370340452?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/4755993040370340452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=4755993040370340452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/4755993040370340452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/4755993040370340452'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/06/episode-7-of-lazy-programmer.html' title='Episode 7 of The Lazy Programmer'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-2204240413595939838</id><published>2010-05-21T07:59:00.003-06:00</published><updated>2010-05-21T08:33:06.703-06:00</updated><title type='text'>How to kill your product</title><content type='html'>That's never an easy question to answer. When your computer program or website or massively-multiplayer-whatever has outlived its usefulness, how do you kill it without causing lots of problems.&lt;br /&gt;&lt;br /&gt;I recently experienced this with MS Money, the financial program that I'd been using since the Windows 95 days. It was pretty obvious that Microsoft was de-emphasizing the product for several years, because each successive update brought fewer and fewer new features -- often just some new UI shininess and some coupons for discount bill-paying. But I updated because each update guaranteed another couple years' subscription to their online payment funnel.&lt;br /&gt;&lt;br /&gt;But then MS Money got killed about a year ago, and I was left to wonder what to do. After all, I have a LOT of old records in the Money database. I had little problem migrating all of the active accounts over to Quicken, but I didn't want to lose my inactive accounts and records (mainly because Engineering firms are required to hold on to their records for ten years). And I couldn't uninstall the MS Money because I might not be able to reinstall if they shut down their activation server.&lt;br /&gt;&lt;br /&gt;Apparently I was not the only person wondering if he should just buy a bigass box of paper and print out every danged thing his company has ever done, because MS just released a free &lt;a href="http://www.mymoneyblog.com/archives/2010/05/free-download-microsoft-money-plus-sunset-deluxe.html"&gt;Sunset Deluxe Edition Money&lt;/a&gt;. Basically this is just the last release of MS Money minus activation and the online features.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And I'm glad they did this. Because this means I can download the Sunset Edition installer, burn it on a CD along with my financial database, and store it. If for some weird reason I ever need access to some really old invoices and/or records, I can reinstall and pull them up without worrying about whether or not the product will still work and/or activate.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Why am I talking about this? I'm talking about this because I think this is a reasonable way to kill your product. MS killed Money, but they didn't do it in such a way as to leave your data in limbo. Mind you, they could've waited a little less than a YEAR to release this, but I'll take it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The moral of the story is: If you have a product you want to close, don't do it in a way that could lock users out of their data. While I realize that having continuing access to your virtual sword-of-power in a MMORPG isn't too practical, allowing users to export their old documents or status or whatever from their online portal is. If you have a product that requires activation on a server (as my games don't), then release a server-free version before you leave. If you have a file format that's yours, provide users with an exporter.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In summary, don't screw your users.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-2204240413595939838?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/2204240413595939838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=2204240413595939838' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/2204240413595939838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/2204240413595939838'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/05/how-to-kill-your-product.html' title='How to kill your product'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-5086998216016993615</id><published>2010-04-30T09:54:00.001-06:00</published><updated>2010-04-30T09:55:50.051-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='siteannouncements'/><title type='text'>Database changes</title><content type='html'>I just made a minor change to the database. It's no biggie, but it does affect the entire site as well as all affiliated sites (cryptotwit.com and hangtwit.com). I think everything's working, but if you see something broken, please email me at support@thecodezone.com&lt;br /&gt;&lt;br /&gt;Thanks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-5086998216016993615?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/5086998216016993615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=5086998216016993615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5086998216016993615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5086998216016993615'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/04/database-changes.html' title='Database changes'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-1589824498308749860</id><published>2010-04-28T08:37:00.003-06:00</published><updated>2010-04-28T08:39:11.579-06:00</updated><title type='text'>The Lazy Programmer Episode 6</title><content type='html'>Back to the threaded reviews topic. Yes, three minutes of your life that you'll never get back.&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/-C6JuE7I9MU&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/-C6JuE7I9MU&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;And don't forget to comment on it. The more inane, the better!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-1589824498308749860?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/1589824498308749860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=1589824498308749860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/1589824498308749860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/1589824498308749860'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/04/lazy-programmer-episode-6.html' title='The Lazy Programmer Episode 6'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-1451976879942726596</id><published>2010-04-20T17:04:00.005-06:00</published><updated>2010-04-20T18:19:26.658-06:00</updated><title type='text'>My latest phone game</title><content type='html'>No game development insight of dubious worth today. Just a video of my latest work, which is Pop Pies 3 running on a phone.&lt;br /&gt;&lt;br /&gt;And for the record, the web version of the game is gonna be called "Pop Pies 3" while the phone version will be called "Pop Pies Portable". I thought it'd be a mite confusing to release Pop Pies 3 on the phone without a 1 or 2. Similarly, I wanted to keep the Pop Pies N nomenclature on browsers, as Pop Pies has a decent following.&lt;br /&gt;&lt;br /&gt;&lt;object type="application/x-shockwave-flash" style="width:480px; height:320px;" data="http://www.youtube.com/v/RAWmuCMXYfQ;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;hd=1" &gt;&lt;br /&gt;    &lt;param name="movie" value="http://www.youtube.com/v/RAWmuCMXYfQ" /&gt;&lt;br /&gt;    &lt;param name="allowFullScreen" value="true" /&gt;&lt;br /&gt;    &lt;param name="allowscriptaccess" value="always" /&gt;&lt;br /&gt;    &lt;param name="src" value="http://www.youtube.com/v/RAWmuCMXYfQ&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;hd=1" /&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;All in all, I'm very happy with the results. I was able to pack in a few more particles and some bouncier tweens than I expected. The new desktop version is really snazzy looking, but this one is very playable and, hopefully, will be a hit.&lt;br /&gt;&lt;br /&gt;Still left to do are social features and shared high score tables and daily puzzle modes so people playing the phone version and people playing the web version can compete.&lt;br /&gt;&lt;br /&gt;Comments are welcome. Post 'em here or on the youtube page.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-1451976879942726596?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/1451976879942726596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=1451976879942726596' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/1451976879942726596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/1451976879942726596'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/04/my-latest-phone-game.html' title='My latest phone game'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-4687404965909368313</id><published>2010-04-15T10:00:00.005-06:00</published><updated>2010-04-15T18:27:28.308-06:00</updated><title type='text'>In which I collect my thoughts about mobile development</title><content type='html'>Well my NDA is expired, so I can now state that I am working on mobile  games in Flash using Adobe CS5 tools. And I'm  starting with my most popular and I'll be working to the least.&lt;br /&gt;&lt;br /&gt;And  yeah, Apple's stated that Flash-authored apps are verboten, native code  or not. And everybody's coming up with a conspiracy theory and  everybody's got their magnifying glass out to parse Section 3.3.1 of the  license agreement to see if it screws Flash specifically or the dozen other non-XCode iPhone app-builders. And I've heard everything from "it's okay as long as XCode is in the pipeline somewhere" (bzzzt) to "it's because Flash is the only thing that can author IPA files from Windows" (true, but also bzzzt).&lt;br /&gt;&lt;br /&gt;Fact is, you can parse all day. Section 3.3.1 of the  agreement means whatever Apple wants it to mean right now. Remember the earlier  "No Third Party Libraries" wording that Apple used to deny (and later  accept) PhoneGap-authored apps? That wording made no damn sense and was clearly  written by marketers and lawyers who tried to translate a five minute description from a programmer into  something that they could use to refuse ports.&lt;br /&gt;&lt;br /&gt;If you've been a C  programmer for any length of time, you know what exactly what a "Third Party Library"  is. It's a piece of object code from someone else that you link in along with  your OS-vendor's runtime library to create your app. A good  example would be something like &lt;a href="http://www.scoreloop.com/"&gt;Scoreloop&lt;/a&gt; or &lt;a href="http://www.openfeint.com/"&gt;OpenFeint&lt;/a&gt; which add shared high score capabilities to iPhone games. Thing is, Apple is just fine with those, even though they're clearly violating the agreement, as they're according-to-hoyle Third Party Libraries. Apple's content police did not interpret "No Third Party Libraries" to mean "No Third Party Libraries". Instead they translated it as "no interpreting anything, no matter how well you hide it", which is why stuff like classic game system emulators aren't available on an iPhone even if they don't use any "third party libraries".&lt;br /&gt;&lt;br /&gt;And this new 3.3.1 clause will be interpreted just as broadly. Apple's got no problem selectively enforcing their license, which is why their "you cannot compete with the built-in apps" clause applies to Google's Google Voice app but not to the dozens of Calculators and Weather widgets out there.&lt;br /&gt;&lt;br /&gt;The fact is this. Apple blundered badly with the App Store and their third-party development program. They wanted to have their cake and eat it too. They wanted to say "We have a zillion apps for the iPhone" and "We have great apps for the iPhone".&lt;br /&gt;&lt;br /&gt;And to their credit, they managed to get both. They've got over 100,000 iPhone apps. And they've got great iPhone apps.&lt;br /&gt;&lt;br /&gt;Maybe one percent of 'em are great.&lt;br /&gt;&lt;br /&gt;Actually only about one percent of 'em could even be considered good. Literally 99% of the App Store is utter garbage. And I'm not just talking about games that aren't very fun. I'm talking about junk that is a complete ripoff. Things like public domain books loaded into scrollable text fields and sold as e-books. Bitmaps of girls in bikinis collected into scrolling fields and sold as "sexy apps". Legions of "Super Ultimate Tic Tac Toe" games that are nothing but the sample game from somesuch "how to program for iPhone" book with a new splash screen and a description that suggests that you're getting something worth money.&lt;br /&gt;&lt;br /&gt;And Apple's been trying to purge that stuff, but they haven't even scratched the surface.&lt;br /&gt;&lt;br /&gt;Don't believe me? Then here's an exercise.&lt;br /&gt;&lt;br /&gt;1. Go to &lt;a href="http://iphoneapplicationlist.com/search/"&gt;http://iphoneapplicationlist.com/search/&lt;/a&gt;&lt;br /&gt;2. Type "fart" in the search box.&lt;br /&gt;3. Click the "see all" link so you don't just see the top-shelf fart apps.&lt;br /&gt;4. Click "next".&lt;br /&gt;5. Goto step 4.&lt;br /&gt;&lt;br /&gt;Yes, there are literally HUNDREDS of apps on the iPhone that play fart sound effects. Or record fart sound effects. Or play animations of something farting. Or that send farts effects to people via email. Or that change your ringtone into a fart.&lt;br /&gt;&lt;br /&gt;Fact is, Apple didn't want to go down the road of the Atari 2600 and/or Windows Mobile, both of which didn't control their app-stream and suffered under a glut of bad non-signed apps. So they set up a well-designed software and server system that would allow them to control what could appear on the phone, and then they handed over that system to a group of content police who followed a script that would allow &lt;a href="http://latimesblogs.latimes.com/technology/2008/08/iphone-i-am-ric.html"&gt;a $1000 app that does nothing but display a single bitmap&lt;/a&gt; but kicks apps for minor UI consistency violations.&lt;br /&gt;&lt;br /&gt;Couple that with the fact that there is no "try and buy" mechanism and no way to get a refund, and you have a perfect infrastructure for people to upload crap written in a matter of hours and then sold for a tidy profit to people with twelve credit cards and zero common sense.&lt;br /&gt;&lt;br /&gt;(proof that the bulk of App Store customers have twelve credit cards and zero common sense &lt;a href="http://www.youtube.com/watch?v=ZsbwGFScEb4"&gt;here&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;So Apple ended up with a lot of apps. And crap. A lot of crap. A whole lot of crap. And if Steve Jobs had a button on his desk labeled "Delete 99% of the apps in the app store without triggering a class-action lawsuit and an investigation from a half-dozen governments.", he'd press it until his finger hurt.&lt;br /&gt;&lt;br /&gt;But he doesn't. There's not a good way to kill "Bunny Farts LE Momoko Fart" (99 cents) and keep "Plants Vs. Zombies" ($2.99). So Apple is gonna slow the tide by cutting off limbs where they can. Yes some quality games are gonna get dumped on general principle, but it's going to greatly slow Apple's climb to 200,000 apps (99.5% of which are crap) and 300,000 apps (99.7% of which are crap).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All that being said, let's look at some other systems and how they handled third-party libraries. When I went to GDC a month ago, I went to a presentation on app stores. And I saw a comparison. One thing I noted was that WiiWare (Nintendo's downloadable app store for Wii games) had only 200 apps. My first thought was "boy, that's a flop. iPhone has 500 times as much stuff". Then when I got home I looked at the games on WiiWare. There weren't five good games and 195 fart jokes. There were 200 games that all looked pretty good. And that's because you don't just pay some token amount to join the developer club, start writing, then hand off your game to a kid following a script looking for verboten API calls and improper button bevels. You need to propose your project, in writing, to Nintendo and, if approved, you'll get access to the development tools. And Nintendo's gonna watch the milestones. It's not a "make whatever you want and we'll tell you if we like it when it's done" process.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And you think that's restrictive? Let's look at Leap's third party development program for Leapster and Didj handheld games for kids. Actually let's &lt;span style="font-weight: bold;"&gt;not &lt;/span&gt;look because there isn't one. Even though it's an open secret that they're running Flash internally, you can't make games for 'em. That's because Leap wanted complete control of the end product.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And that's how things work. If you want your platform to have high quality offerings, you're going to need to filter for quality and control the development process halfway (as with WiiWare) or all of the way (as with Leap). If you want your platform to have lots of apps, you can fling open the barn doors and hope you'll get a rush of developers and a pile of apps.&lt;br /&gt;&lt;br /&gt;But you can't have both. And you can't shut the barn door later without starting over from scratch and dumping all previous content (i.e. Windows Mobile 7 phones). Shutting out Flash and/or other runtime systems will absolutely prevent more crap from appearing in the App Store. But it'll also prevent some good apps from appearing in the App Store. And if your choice at this point is "stay at 99% crap" versus "go to 99.5% crap", it's a good conclusion that you've already made mistakes that you're not gonna unmake.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As for myself? Well, there are other tablet and phone platforms out there. Ones that not only don't mind Flash content but are actually enthused to have it. Ones that (from personal experience) run Flash content better than iPhones could anyway.&lt;br /&gt;&lt;br /&gt;And there's the web. My mobile games are being rewritten from the ground up. They play better and they look better. And I'm gonna back-port those improvements to my web games. So in addition to Portable Pop Pies for AIR-enabled smartphones, you're gonna see Pop Pies 3 which looks way nicer than my previous stuff.&lt;br /&gt;&lt;br /&gt;So don't weep for my situation. If Apple doesn't want my games, it's a loss for both of us. I can't say that my rinky-dink little games will sell any phones, but I have gotten several emails from people looking for my games on mobile, and if my answer is "They're on Android and Pre, but not iPhone", or "They're on the Google Pad but not the iPad", that's gonna tip the scales just a bit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-4687404965909368313?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/4687404965909368313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=4687404965909368313' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/4687404965909368313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/4687404965909368313'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/04/in-which-i-collect-my-thoughts-about.html' title='In which I collect my thoughts about mobile development'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-5372233299008776687</id><published>2010-04-09T09:51:00.002-06:00</published><updated>2010-04-09T09:58:49.403-06:00</updated><title type='text'>In which I make an open source project.</title><content type='html'>I needed some RPC, and I didn't like how fat most implementations were (client or server or both), so I made a skinny one. And I made it open source. And it's here.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/as-rpcmin/"&gt;http://code.google.com/p/as-rpcmin/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you're curious as to what a complete XML-RPC client in 200 lines of code looks like, it's here.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/as-rpcmin/source/browse/trunk/com/RPCmin/RPCmin_XML.as"&gt;http://code.google.com/p/as-rpcmin/source/browse/trunk/com/RPCmin/RPCmin_XML.as&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As for what it's about, here's the summary&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;This is a tiny, yet complete, XML-RPC client object in ActionScript 3.&lt;br /&gt;&lt;br /&gt;I always liked XML-RPC because it's a pretty commonsense way to pass information back and forth between client and server. Also it's dirt-simple to implement in PHP, and anything that minimizes the amount of server work I need to do is fine in my book.&lt;br /&gt;&lt;br /&gt;Only problem is that the XML-RPC mechanisms I found for AS were either Flex-only, weren't for AS3, were abandoned very early on, or were overly complicated. Given that E4X raises (or lowers) XML to the status of a primitive data-type in AS3, and AS has had http communication since the beginning, it made no sense that RPC mechanisms should be complicated. So I wrote a small one that fits in a single 200-line AS3 file, consisting of one object which contains one public function to do the call and set the receive the response.&lt;br /&gt;&lt;br /&gt;I'm calling the project "rpcmin" because I'd like to see other implementations following this simple RPC.call('name', params, completeFN, faultFN) method so people can just "drop in" whatever RPC object fits the available client. AM3 would be fairly simple. JSON could certainly be done too, although JSON encoding and decoding would take a little more code.&lt;br /&gt;&lt;br /&gt;As for the license, I chose BSD because "Public Domain" wasn't an option. It took me a day to write, so there's no need to credit me. If you fix any bugs, by all means contact me or join the project. It can certainly use a little more testing, especially regarding nested and/or complex objects.&lt;br /&gt;&lt;br /&gt;As it stands, it seems to work.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-5372233299008776687?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/5372233299008776687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=5372233299008776687' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5372233299008776687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5372233299008776687'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/04/in-which-i-make-open-source-project.html' title='In which I make an open source project.'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-24846817737879800</id><published>2010-03-26T19:20:00.002-06:00</published><updated>2010-03-26T19:22:25.358-06:00</updated><title type='text'>The Lazy Programmer Episode 4</title><content type='html'>Took a break from the commentary for a review. Also I learned how to edit. Was done out of necessity because I blathered for 14 minutes.&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/M2HIXxEVTUc&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/M2HIXxEVTUc&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;My volume seems to be getting lower. Gotta figure out how to normalize the volume.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-24846817737879800?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/24846817737879800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=24846817737879800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/24846817737879800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/24846817737879800'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/03/lazy-programmer-episode-4.html' title='The Lazy Programmer Episode 4'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-3642908492771651665</id><published>2010-03-25T10:29:00.001-06:00</published><updated>2010-03-25T10:31:18.247-06:00</updated><title type='text'>The Lazy Programmer Episode 3</title><content type='html'>Episode 3 is up. At 4 minutes, it's getting too long. Gonna have to dial back the earthquake effects.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/UvkRpB81n6M&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/UvkRpB81n6M&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-3642908492771651665?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.youtube.com/watch?v=UvkRpB81n6M' title='The Lazy Programmer Episode 3'/><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/3642908492771651665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=3642908492771651665' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/3642908492771651665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/3642908492771651665'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/03/lazy-programmer-episode-3.html' title='The Lazy Programmer Episode 3'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-23492393105021292</id><published>2010-03-24T09:29:00.001-06:00</published><updated>2010-03-24T09:30:35.261-06:00</updated><title type='text'>The Lazy Programmer Episode 2</title><content type='html'>The Lazy Programmer Episode 2 is up. Production values are way up over the previous episodes. Marvel at them!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/w5nTppcVZvs&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/w5nTppcVZvs&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-23492393105021292?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/23492393105021292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=23492393105021292' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/23492393105021292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/23492393105021292'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/03/lazy-programmer-episode-2.html' title='The Lazy Programmer Episode 2'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-8222024079343238734</id><published>2010-03-24T08:31:00.002-06:00</published><updated>2010-03-24T08:36:06.790-06:00</updated><title type='text'>The Lazy Programmer Outtake</title><content type='html'>Episode 2 is currently baking over on the YouTube site. Until then, here's an outtake from a week ago. I was testing the Macbook's video camera abilities, and the critter shows off her spokesmodel chops.&lt;br /&gt;&lt;br /&gt;For the record, she's already scripted her own episode of The Lazy Programmer. She was going to present it here, but then she decided that she really needed her own show rather than hitchhike off my phenomenal success. So it'll likely appear as an episode of "The Maggie Show" before too long.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="295" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/0_CLGXkxYcY&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/0_CLGXkxYcY&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="295" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-8222024079343238734?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/8222024079343238734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=8222024079343238734' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8222024079343238734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8222024079343238734'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/03/lazy-programmer-outtake.html' title='The Lazy Programmer Outtake'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-6823050566047268066</id><published>2010-03-04T10:48:00.001-06:00</published><updated>2010-03-04T10:49:41.440-06:00</updated><title type='text'>The Lazy Programmer Episode 1</title><content type='html'>Fine work with the comments, guys. Not one of 'em made a bit of sense!&lt;br /&gt;&lt;br /&gt;&lt;object width="445" height="364"&gt;&lt;param name="movie" value="http://www.youtube.com/v/XdLgGTE5qks&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;border=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/XdLgGTE5qks&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="445" height="364"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-6823050566047268066?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/6823050566047268066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=6823050566047268066' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/6823050566047268066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/6823050566047268066'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/03/lazy-programmer-episode-1.html' title='The Lazy Programmer Episode 1'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-5456140315260289055</id><published>2010-03-03T14:17:00.001-06:00</published><updated>2010-03-03T14:20:32.209-06:00</updated><title type='text'>Video Blog?</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: verdana, arial; font-size: 13px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "&gt;I *might* have started a video blog. I guess I'll just see if I stay interested in it. Episode zero (subtitled: Star wipe, camera, and microphone test) is up now.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="500" height="405"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Hni6Qzs8NLs&amp;hl=en_US&amp;fs=1&amp;border=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Hni6Qzs8NLs&amp;hl=en_US&amp;fs=1&amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="405"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial; font-size: 13px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "&gt;And, being a youtube video, I require that all comments be entirely stupid. It's a scientific fact that every youtube comment you read drops your IQ three points. If I get constructive comments, I'm gonna be disappointed. Comments must be restricted to the following topics. . .&lt;br /&gt;&lt;br /&gt;1. You are ugly&lt;br /&gt;2. You are fat&lt;br /&gt;3. The moon landings were faked&lt;br /&gt;4. PWND&lt;br /&gt;&lt;br /&gt;Actually this started from the non-starter idea a few years ago to make a weekly gamedev podcast. Nobody ever actually got around to doing it, so I figure I'll post a video or two to see if I can generate any interest among the luminaries.&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/5927544581291786949-5456140315260289055?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/5456140315260289055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=5456140315260289055' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5456140315260289055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5456140315260289055'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/03/video-blog.html' title='Video Blog?'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-5326110471217818292</id><published>2010-02-19T08:54:00.005-06:00</published><updated>2010-02-19T13:15:43.424-06:00</updated><title type='text'>Friday is Pieday for Haiti!</title><content type='html'>Okay, I decided to do a little Haiti fundraiser for this Friday and next. Right now I have Pop Pies and Pop Pies 2 set so that all ad revenue is donated to Haitian relief. That means that you can donate money to Haiti just by playing a game!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On top of that, Mochiads (my ad network) is matching all donations, so for every buck that the Pop Pies games make in ads today, two bucks will go to Haiti. If you're wondering how that works, &lt;a href="http://mochiland.com/articles/mochi-media-haiti-relief-fund"&gt;here&lt;/a&gt; is the blog post about that from Mochi.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are a bunch of links to the various versions of Pop Pies. So get popping, and please help me make this viral. If I got a million hits, I'd be happy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are a bunch of links of places when you can play it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.thecodezone.com/games/poppies2.php"&gt;Pop Pies 2 on The Code Zone. You can play it here and then challenge your social network buddies at the end.&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://apps.facebook.com/mindjolt/games/pop-pies-2"&gt;The "viral" Pop Pies 2 on Facebook via MindJolt. This is the most popular version, as you play it from inside Facebook.&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.thecodezone.com/games/poppies.php"&gt;The original Pop Pies daily puzzle. You need to be registered on The Code Zone to play this.&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And please please work with me on making this viral. Here's a link to advertise this on your facebook page.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/sharer.php?u=http://www.mindjolt.com/games/pop-pies&amp;amp;t=MindJolt:+Pop+Pies"&gt;Post a note about this to your facebook feed&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://digg.com/playable_web_games/Friday_is_Pieday_for_Haiti"&gt;Also, please Digg this&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://slashdot.org/submission/1176446/Help-Haiti-by-Playing-Games"&gt;And somebody listed it on Slashdot, so you can vote it up there&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Finally, note that the Big Fish Games version uses a different ad network, so those don't donate to the cause.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-5326110471217818292?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/5326110471217818292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=5326110471217818292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5326110471217818292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5326110471217818292'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/02/friday-is-pieday-for-haiti.html' title='Friday is Pieday for Haiti!'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-2061103659448890868</id><published>2010-02-13T10:07:00.003-06:00</published><updated>2010-02-13T10:10:14.226-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='siteannouncements'/><title type='text'>Data loss</title><content type='html'>For some reason, this morning about a week's worth of scores were missing from The Code Zone's high score database. I'm still tracking down the cause of the problem.&lt;br /&gt;&lt;br /&gt;In the meantime, I was able to restore the missing scores from a backup, so your scores should be back now. Sorry if this caused any inconvenience.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-2061103659448890868?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/2061103659448890868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=2061103659448890868' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/2061103659448890868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/2061103659448890868'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/02/data-loss.html' title='Data loss'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-670617910036416744</id><published>2010-02-09T15:02:00.001-06:00</published><updated>2010-02-09T15:02:31.873-06:00</updated><title type='text'>How to Snap, Crackle, and Pop in AS3</title><content type='html'>Here's a little quickie trick that took me a bit of googling to bring  back. In old incarnations of ActionScript, sounds were pretty simple. If  you wanted to grab a sound out of the Library (AKA embedded in your  SWF), you did it like so. . .&lt;br /&gt;&lt;br /&gt;var snd:Sound = new Sound() // make an empty Sound object&lt;br /&gt;snd.attachSound("sp0") // load the sound "sp0" from the library&lt;br /&gt;snd.start() // play the sound&lt;br /&gt;&lt;br /&gt;Simple enough. Of course, there are all kinds of things you can do to  the Sound object to pan it or play it from the middle, etc. But if you  just wanted to quickly load and play a sound effect, this is the way to  do it.&lt;br /&gt;&lt;br /&gt;AS3's model of "streamline every danged thing" made this process  slightly simpler. Every sound in your library is now a sound class in  your global namespace, so you can now do this. . .&lt;br /&gt;&lt;br /&gt;var snd:sp0 = new sp0() // instantiate an instance of "sp0"&lt;br /&gt;snd.play() // and play it&lt;br /&gt;&lt;br /&gt;Now then, that's pretty intuitive. But it does have a problem, and  that's that my sounds are now objects rather than things I can reference  with a variable. And if I wanted to do something like. . .oh. . .load  up ten sounds into an array, it would get hairy. I can't just make an  array that loads up snd.attachSound("sp"+i) into an array of Sound  objects so I can address 'em by number. I'd have to put up a line of  code for every object, and that's just sloppy.&lt;br /&gt;&lt;br /&gt;AS3 does, however, have a function that can get you an object's class  definition given a string representation of the name. So you can do the  very similar. . .&lt;br /&gt;&lt;br /&gt;var snd:Object = new (getDefinitionByName("sp0") as Class)&lt;br /&gt;snd.play() // and play it&lt;br /&gt;&lt;br /&gt;The getDefinitionByName() function looks up variable in the global  namespace and returns it as a Class (after we've cast it with "as". So  now I can once again load up a pile of sounds like so. . .&lt;br /&gt;&lt;br /&gt;var numSounds = 4&lt;br /&gt;var MySounds = new Array(numSounds)&lt;br /&gt;&lt;br /&gt;for (var i=0; i&lt;numSounds; i++)&lt;br /&gt;{&lt;br /&gt;var snd:Object = new (getDefinitionByName("sp"+i) as Class)&lt;br /&gt;mySounds[i] = snd // and stuff that sound into an array&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;And this is nice for games like Pop Pies 2 where I make a staccato  "chain of firecrackers" sound by playing one of four random "pop" sounds  in rapid succession for each pie that explodes. Now I can just call  MySounds[int(Math.random()*numSounds)].play() at a set interval, and I  get a nice snap crackle pop.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-670617910036416744?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/670617910036416744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=670617910036416744' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/670617910036416744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/670617910036416744'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/02/how-to-snap-crackle-and-pop-in-as3.html' title='How to Snap, Crackle, and Pop in AS3'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-5932740892457234433</id><published>2010-01-27T11:02:00.002-06:00</published><updated>2010-01-27T11:18:50.519-06:00</updated><title type='text'>Freebie on the cloud</title><content type='html'>In last month's entry, I mentioned that I have a good freebie called &lt;a href="http://www.drpetter.se/project_sfxr.html"&gt;SFXR&lt;/a&gt; that allows you to make all kinds of cute little beeps and clicks for your game.&lt;br /&gt;&lt;br /&gt;Well I'll go you one better. Some very clever person managed to port the entire SFXR app to ActionScript, and a very faithful knockoff of the app is available entirely on the web &lt;a href="http://www.superflashbros.net/as3sfxr/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Best way to test it out is to click the buttons along the left column a few times each. Those randomize the settings within a constraint that sounds like the effect the button describes. Once you hear something that's reasonably close, you can save out the sound as an SFS file (which is just the settings of all the sliders) as well as a WAV file that you can slap into your project.&lt;br /&gt;&lt;br /&gt;Or you can just mess around with it. I like to press the "explosion" button, then press the "mutate" button a few times. This never fails to awaken long-dormant neurons that have been sleeping since the Atari 2600 days.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-5932740892457234433?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/5932740892457234433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=5932740892457234433' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5932740892457234433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5932740892457234433'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2010/01/freebie-on-cloud.html' title='Freebie on the cloud'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-8450749354081367972</id><published>2009-12-30T10:23:00.001-06:00</published><updated>2009-12-30T10:23:29.776-06:00</updated><title type='text'>My Freebies</title><content type='html'>I'm not feeling particularly literary today, so I'm going through my start menu and listing all the free software that I use. It's all for Windows unless I say otherwise.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.piriform.com/defraggler"&gt;Defraggler&lt;/a&gt; - I probably don't need it because the one built into Windows works just fine. Still, it does a couple of cool things.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://notepad-plus.sourceforge.net/uk/site.htm"&gt;Notepad++&lt;/a&gt; - See previous blog entry. Is nice.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/Security_Essentials/"&gt;Microsoft Security Essentials&lt;/a&gt; - Microsoft releases a surprisingly good malware-killer after several years of their mediocre OneCare product.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dehats.com/drupal/?q=node/58"&gt;Lita SQLite Editor&lt;/a&gt; - See previous blog entry. Is handy if you deal with SQLite at all.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tilemap.co.uk/mappy.php"&gt;Mappy Tilemap Editor&lt;/a&gt; - It's pretty outdated looking, but if I need to slap together a quick game level, it does the job. I used it for Double Twelve and Head On Collision to draw up the levels. Good for light duty. Exports ActionScript arrays directly, which saves me a step.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://nsis.sourceforge.net/Main_Page"&gt;NSIS&lt;/a&gt; - Good little install builder. Lots of good samples out there so you can save installation for the last minute.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hmne.sourceforge.net/"&gt;NIS Edit&lt;/a&gt; - It's basically Notepad that edits and compiles NSIS scripts, but since NSIS scripts aren't especially big, it does a servicable job as an NSIS IDE. It edits, calls the compiler, highlights the errors, and can call the help directly, which is all you need it to do.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nirsoft.net/utils/resources_extract.html"&gt;ResourcesExtract&lt;/a&gt; - Simple little gizmo that can crawl and extract resources from an EXE. I've rarely needed this, and when I have it's more of a "I wonder how they did this", but it works if you need it.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.appcelerator.com/"&gt;Appcelerator Titanium&lt;/a&gt; (Windows and Mac) - I haven't done much with this yet, but I might in the future. It certainly looks pretty cool.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://filezilla-project.org/"&gt;FileZilla&lt;/a&gt; (Windows and Mac) - Terrific FTP program. I haven't found any FTP-related task that it can't do.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.dropbox.com/referrals/NTE0NjY2MjQ5"&gt;DropBox&lt;/a&gt; - DropBox is 102% awesome. It's just what you need if you're on the road and you need to get a file to yourself at home, as you can throw something in the box and it'll automagically appear in the other DropBox machines you own. It's also got clients for iPhone and Mac. The iPhone version is especially cool in that it allows you to read PDF and MP3 files that you've put in your dropbox. It also stores your files in its own cloud if you find yourself on someone else's machine and you need to get or put a file to use later.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.hulu.com/labs/hulu-desktop"&gt;Hulu Desktop&lt;/a&gt; - This is a really nice standalone player for Hulu content with a "ten foot interface" (i.e. a user interface that you can see from your couch). It also works with those Media Center remote controls, so if you can connect your computer to a TV you can sit back and watch some internet tv for free. Last I checked, they still had "Evil Alien Conquerors" available, which is at once the most stupid/funny movie I've seen in a while.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.swftools.org/"&gt;SWFTools&lt;/a&gt; - This is a pile of free command-line utilities that do stuff to SWF files. I use these in my batch-mode game building script to do things like add custom brands to games. That way if someone ever wants a custom-branded game for their site, I can give 'em a couple dozen games in a hurry.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.freerip.com/"&gt;FreeRip&lt;/a&gt; - To be honest, I only use this gizmo for one special function. The CD-to-MP3 capabilities of Windows Media Player work just fine, except that WMP doesn't have the ability to rip an entire CD to a single big MP3. And I wanted to do this when I was ripping a "how to learn Spanish" CD that had around a hundred 30-second "chapters" on each CD. Rather than deal with a squillion little MP3's, I made one big one. And this will do that.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.drpetter.se/project_sfxr.html"&gt;SFXR&lt;/a&gt; - This is a cute little thing with a 1980's era GUI. If you need some horrid little NES-era sound effects in your game, this will do it.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.autogk.me.uk/"&gt;AutoGK&lt;/a&gt; - Converting DVD's to AVI files can be done under Windows 102% free. Only problem is that it requires a half-dozen different utilities that must be run in a certain sequence. AutoGK fixes that by slapping a friendly interface on the whole process and doing it all for you. Note that AutoGK does not rip and un-protect the (absurdly simple) encryption that DVD's use, as that's a legal gray area. If you wanted to do that, you'd need some sort of "DVD Decrypter", but I can't imagine how you'd find one of those.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://zornsoftware.talsit.info/"&gt;Win7 Library Tool&lt;/a&gt; - The new Windows 7 "Libraries" feature in Windows Explorer is a feature that I've grown used to in very short order. It's like the old Explorer-favorites feature, but about ten times better. And this little gizmo makes it eleven times better, as it allows you to change your library icons and it allows you to add *any* folder to a library, as Win7 inexplicably only allows you to add indexed folders to a library. This way I can have libraries containing stuff shared on network drives.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tordivel.no/xcalc/"&gt;xCalc&lt;/a&gt; - This isn't especially pretty but it's a small and unobtrusive RPN calculator. I love that my MS Natural Keyboard has a "Calculator" button that I can map to run this. That way I don't have to search my desk when I need to add up some numbers.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.openoffice.org/"&gt;OpenOffice.org&lt;/a&gt; (Windows and Mac) - I have bona-fide MS Office on my main office machine, but I didn't wanna shell out for it on my little laptop, and for that this works just fine. Mind you, it has been and will remain about two versions behind MS Office in capabilities and its support for DOC and XLS files isn't perfect, but it's really nice for a freebie. Plus it has a draw program that's not bad.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.utorrent.com/"&gt;uTorrent&lt;/a&gt; (Windows and Mac) - This has pretty-much taken over the torrent utilities market, and with good reason.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.barebones.com/products/TextWrangler/"&gt;TextWrangler&lt;/a&gt; (Mac) - Like the aforementioned Notepad++, this is a "better than default" editor for Mac. It's supposed to be a gateway-drug for the rather expensive BBEdit editor, but this one's pretty good.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.apple.com/downloads/macosx/system_disk_utilities/stuffitexpander.html"&gt;Stuffit Expander&lt;/a&gt; (Mac) - Macs don't come with the ability to open ZIP files out of the box and this fixes that. Again, they'll try to upsell you to the fancier version, but for just unzipping stuff this works great.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As for web-apps, I'm all about The Google. I have Google Apps For Your Domain set up with The Code Zone and every other domain I own, so if you send me an email I check it online. I depend on Google Calendar for my calendaring. I depend on Google Contacts for my phone numbers. I depend on Google Reader for blogs and podcasts. I use Google Notebook to store random bits of text. I use Google Voice for voicemail and text-messaging on my cellphone. I use Google To-Do list to store those low-priority items that I promise I'll get to someday. I even depend on Google News for my news. I love love love The Google. Heck, I'd probably move all my docs up to the Google Cloud if not for the heebie-jeebies I get from having all my eggs in one basket and the sudden inability I'd have to get work done if a backhoe cut off my fiber.&lt;br /&gt;&lt;br /&gt;And on that note, &lt;a href="http://backupify.com/"&gt;Backupify.com&lt;/a&gt; is a service that'll back up all of your online content from other services. I don't care too much about backing up my Twitter content, but it does back up your Google Docs in case something happens to your account.&lt;br /&gt;&lt;br /&gt;And Backupify's got a deal right now that if you sign up before the end of the year (i.e. tomorrow), it's free. Not sure what the pricing's gonna be after that, but sign up now just to be safe.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-8450749354081367972?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/8450749354081367972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=8450749354081367972' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8450749354081367972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8450749354081367972'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/12/my-freebies.html' title='My Freebies'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-4608937026932607080</id><published>2009-12-14T14:27:00.003-06:00</published><updated>2009-12-14T14:58:54.000-06:00</updated><title type='text'>End of year reminders</title><content type='html'>It's the end of the year and it's time to get your finances in order. Make sure all those accounts and loans and such are shipshape so you're not trying to explain things to a tax preparer while they look at you like a German Shepherd trying to understand calculus.&lt;br /&gt;&lt;br /&gt;And that brings me to a great freebie. And it's a legit freebie.&lt;br /&gt;&lt;br /&gt;It's &lt;a href="http://www.annualcreditreport.com/"&gt;http://www.annualcreditreport.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You see, a buncha years ago the US gubment got involved when people found that it was quite difficult, if not impossible, to find out your own credit information that's provided to loan officers and mortgage banks. So they made a law that credit reporting agencies have to provide you with 102% free information about you at least once a year.&lt;br /&gt;&lt;br /&gt;And if you watch the TV commercials, you know there are plenty of websites and/or 800-numbers that are happy to fetch those reports for you. Problem is, those companies are only "free" in the way that that timeshare company is giving you a "free" vacation. That is to say that you'll be asked for your credit card number for "verification", and you'll find yourself signed up to something you didn't want and that'll cost you a lot of money.&lt;br /&gt;&lt;br /&gt;Fact is, you can get your reports without signing up to anything or paying a dime. Ever. It's the law. The government contracted the creation of the site I mentioned above. It's quite simple. You just enter your personal information (NOT your credit card number), then the site will navigate you through the three credit companies websites where you'll be able to see all your credit information. It's all shown instantly, and the entire process takes about 15 minutes, which is quite a change from ten years ago when you had to call the companies individually and wait for a paper report to appear in your mailbox.&lt;br /&gt;&lt;br /&gt;Mind you, each company will try to sell you a look at your "credit score" for about eight bucks. You don't need this, so just refuse it. Your "credit score" is just your credit information run through a proprietary algorithm which normalizes your credit to a scale from 0-1000. You see, loan officers and car dealers thought it was a big hassle having to sift through five pages of information on you, and nobody liked having to make the decision as to how many late payments constitutes "bad credit", so now they pay eight bucks to have somebody else do the sifting. If your "credit score" is above a certain threshold, then you have "good credit" and can get the best interest rate. If not, you get a worse deal.&lt;br /&gt;&lt;br /&gt;While commercials will tell you that it's ABSOLUTELY VITAL that you know this number, it's not that important. What's important is the full report, because sometimes it isn't correct.&lt;br /&gt;&lt;br /&gt;For example, a dozen years ago, Best Buy changed whatever bank they used to finance their computers, and the previous bank just closed up and never bothered to tell the credit companies that the accounts were closed. So when I looked at my credit last year, it showed an "open" credit account with Best Buy for a computer I financed long ago. And while the account showed a balance of zero, since the account was "open", the $2000 credit limit still counted against the amount I was allowed to finance.&lt;br /&gt;&lt;br /&gt;So I made a couple of calls and got it taken care of. It never would've occurred to me that that long-closed account might still be thought to be open, but the credit people thought it was.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So anyway, do yourself a favor and check your credit. It's free once per year, there are no strings attached, and it's a good way to make sure that your actual credit situation is what you think it is.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Oh, and if you think you might need protection against identity theft, check with those credit companies before you sign up for some dodgy "credit monitoring". We had some guy in Kansas buy a cellphone in our name a couple of years ago, and the credit companies were more than happy to set our account to refuse any credit checks without our phoned-in permission. And that was free.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-4608937026932607080?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/4608937026932607080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=4608937026932607080' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/4608937026932607080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/4608937026932607080'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/12/end-of-year-reminders.html' title='End of year reminders'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-1461041894396446289</id><published>2009-12-08T13:33:00.001-06:00</published><updated>2009-12-08T13:33:36.396-06:00</updated><title type='text'>Freebies</title><content type='html'>Figured I hadn't done this in a while, so I'm posting a list of a couple of useful freebies.&lt;br /&gt;&lt;br /&gt;First is &lt;a href="http://www.dehats.com/drupal/?q=node/58"&gt;Lita&lt;/a&gt;. It's an Adobe AIR application that's a nice friendly graphical front-end for SQLite files. I use SQLite files in my own games to hold the settings and high score tables, and Lita is the perfect thing to check the files to make sure they look the way I intended.&lt;br /&gt;&lt;br /&gt;Next is &lt;a href="http://www.ccleaner.com/"&gt;CCleaner&lt;/a&gt;, which is a dandy little gizmo that gets all the crud outta your system without (thus far) screwing anything up. It actually does quite a good job.&lt;br /&gt;&lt;br /&gt;Third is something you already know about. &lt;a href="http://notepad-plus.sourceforge.net/uk/site.htm"&gt;Notepad++&lt;/a&gt;. Whether you just want something better than notepad or you wanna do some heavier stuff, it'll handle it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Last, and least related, is &lt;a href="http://www.hulu.com/labs/hulu-desktop"&gt;Hulu Desktop&lt;/a&gt;. It's not programming related at all, but it's quite a nice thing for watching lots of TV on your computer. Between this and Windows 7's "finally it's good enough" Windows Media Center, you no longer need cable TV.&lt;br /&gt;&lt;br /&gt;Only complaint is that Hulu Desktop is a standalone thing and it refuses, REFUSES, to integrate with Windows Media Center (unlike Netflix, which loves WMC just fine). While it's not perfect, somebody put together a little hack &lt;a href="http://huluwmc.teknowebworks.com/"&gt;here&lt;/a&gt; that at least gives you a Hulu icon in WMC so you can switch to Hulu without going to the Start menu. Good if you have a TV.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-1461041894396446289?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/1461041894396446289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=1461041894396446289' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/1461041894396446289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/1461041894396446289'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/12/freebies.html' title='Freebies'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-1189577756886429741</id><published>2009-12-04T12:17:00.005-06:00</published><updated>2009-12-04T12:44:21.888-06:00</updated><title type='text'>Filling in the blanks</title><content type='html'>Okay, I think I have the back-story to "The Teletubbies" figured out. . .&lt;br /&gt;&lt;br /&gt;They're clearly not human. They're apparently mammalian, but they have no apparent gender other than by appellation. Thus I assume they're aliens, also evidenced by them being surrounded by technology beyond current human capabilities, going as far as actually containing electronic screens in their thoracic cavity. From their behavior, they seem unskilled and are largely uninterested in this technology that surrounds them and nurtures them (the speaker that announces events, the "nu nu", the food machine).&lt;br /&gt;&lt;br /&gt;From this I assume that they are aliens but they are not the same aliens that created the technology. They are either a sub-species of alien or perhaps mentally deficient members of an advanced alien society, and they have been collected together and are being nurtured by a biosphere that's been constructed to their liking (grass, bunnies, baby-sun). This biosphere appears to be self-sustaining, as no other living creatures are ever seen other than the bunnies, grass, and flowers. And the semi-sentient technology that surrounds them appears to have been created to maintain them, namely the food machine that makes Tubby Toast and Tubby Custard, and the "nu nu" which cleans up. I assume they're not a larval form of the more advanced aliens, as the technology makes no effort to educate them or advance them to a state where the bunny-filled biosphere would no longer be suitable.&lt;br /&gt;&lt;br /&gt;I assume the Tubbies' intelligence and capacity for ethics are severely limited, which is why they always shout "NAUGHTY NU NU" at the robotic cleaning-up machine even when it's clearly done nothing wrong. Perhaps their environment is intended to keep them separate from the larger population, where their misplaced sense of "naughtiness" might cause trouble for society at large.&lt;br /&gt;&lt;br /&gt;So from this I am drawing the conclusion that the Teletubbies are mentally defective children of a technologically advanced alien race. Since they enjoy each others' company and clearly don't mind performing the same rote tasks every day, they were collected into a self-maintaining biosphere that's designed to keep them together and happy to the extent that their limited capacity for learning and entertainment can allow.&lt;br /&gt;&lt;br /&gt;Whether this biosphere exists on the alien planet, another planet, or is floating through space somewhere is not clear. The Tubbies lack the curiosity to explore the frontiers of their environment, so it was never shown on the show.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Next week:&lt;/span&gt; The Professor never fixed the boat because professors can't get hot chicks like Ginger and Mary Ann unless they're stuck on an island.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-1189577756886429741?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/1189577756886429741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=1189577756886429741' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/1189577756886429741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/1189577756886429741'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/12/filling-in-blanks.html' title='Filling in the blanks'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-8888265064910301822</id><published>2009-12-01T15:05:00.003-06:00</published><updated>2009-12-01T15:10:35.790-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='siteannouncements'/><title type='text'>Site attack</title><content type='html'>Just a quick note. Thecodezone.com and some of its related sites were attacked by a drive-by malicious hack last week. Thankfully, the attack wasn't entirely successful as it relied on a couple of commands that were disabled. Best I can tell, the attack attempted to auto-forward all thecodezone.com visits to an Eastern-European site, where they'd most likely try to turn your computer into a spam gateway.&lt;br /&gt;&lt;br /&gt;In any case, the attack didn't work. Your personal data (the little I actually store, which is just your email address) wasn't compromised. At worst, you got some weird PHP errors when you entered the site.&lt;br /&gt;&lt;br /&gt;Hopefully everything's fixed and is marginally better locked-down than before. If you see any other odd behavior, please email me at john@thecodezone.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-8888265064910301822?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/8888265064910301822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=8888265064910301822' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8888265064910301822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8888265064910301822'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/12/site-attack.html' title='Site attack'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-5441320124948333099</id><published>2009-11-30T13:18:00.003-06:00</published><updated>2009-11-30T13:39:39.658-06:00</updated><title type='text'>Macbooks and regular books</title><content type='html'>Howdy hoo. I'm back for the time being. I'm frustrated right now because my MacBook suddenly decided that it didn't wanna bother with that whole "booting" thing and just chugs merrily along showing a little gray spinny thing. Everything I've found on The Google hasn't helped. Next stop is my local Apple store where I am supposed to find a "Genius Bar". I'm not quite sure what that is. Hopefully it is just what it sounds like - a large metal bar that can be used by geniuses like myself to clobber their MacBooks until they decide to start working again.&lt;br /&gt;&lt;br /&gt;But I digress.&lt;br /&gt;&lt;br /&gt;Chilly here in Texas. Weather's actually rather pleasant, but no longer warm.&lt;br /&gt;&lt;br /&gt;On the "I'm probably the last guy to find this out" front, I discovered that Digital Eel is giving away a bunch of their older games for free. Free is good, and Digital Eel's stuff is especially good. A list of their games (free and non-free) is &lt;a href="http://www.digital-eel.com/games.htm"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;On the gamedev front, I have not much but book-reviews once a week for the rest of the year. I'll try to get those going out every Friday until all books are read.&lt;br /&gt;&lt;br /&gt;And finally. Speaking of books, I read two books over vacation, and I can heartily recommend 'em both.&lt;br /&gt;&lt;br /&gt;First was &lt;span style="font-style: italic;"&gt;Memoirs of an Invisible Man&lt;/span&gt; by H.F. Saint. Yes, the one from that Chevy Chase movie. I'd always heard that the movie didn't do the book justice, and I figured that had to be the case once I saw the original's 450-page heft. You do have to wade through the book's first 20-odd pages that contains an inexplicable sex-on-a-train scene and an overlong description of a hangover that has nothing to do with ANYTHING except maybe to make the main character slightly less sympathetic. But once the plot starts moving (i.e. once the guy becomes invisible), the book is a terrific ride.&lt;br /&gt;&lt;br /&gt;Second was (and is, I'm almost done) &lt;span style="font-style: italic;"&gt;First Contract &lt;/span&gt;by Greg Costikyan. If the author sounds familiar, it's because he's a fixture in the game design industry since the 1970's. He writes for Gamasutra and regularly speaks at conventions. I'm actually not sure how I was turned on to this book. I think I saw it mentioned in somesuch development blog, saw that it was available on &lt;a href="http://www.paperbackswap.com/index.php?n=7&amp;amp;r_by=john%40thecodezone.com"&gt;PaperbackSwap&lt;/a&gt; and grabbed a copy.&lt;br /&gt;&lt;br /&gt;It's a load of fun. It's the story of a tech CEO who's on the verge of releasing an exciting new technological gadget when the aliens land. It's a lot of fun and doesn't take itself very seriously. For humorous science fiction, it's not as densely packed with one-liners as the Hitchhikers Guide books, but it's a lot more plot driven.&lt;br /&gt;&lt;br /&gt;I recommend 'em both.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-5441320124948333099?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/5441320124948333099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=5441320124948333099' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5441320124948333099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5441320124948333099'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/11/macbooks-and-regular-books.html' title='Macbooks and regular books'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-7647292683729208464</id><published>2009-10-27T08:39:00.003-06:00</published><updated>2009-10-27T09:03:09.399-06:00</updated><title type='text'>Gamedev.net collection sample code downloads</title><content type='html'>Since the gamedev.net collection books were published, Drew and I have gotten a couple of emails from people looking for the sample code. There's none in Drew's books (the blue and black book), but there's plenty of downloadable sample code in my books (green and orange). We opted not to have a pack-in CD (mainly because I hate 'em because they can never be updated and are usually full of 30-day test versions of software that's out of date by the time the book hits the shelves).&lt;br /&gt;&lt;br /&gt;Whenever I wanted the user to be able to download a sample file from the book, I just referred to it as being available on "the book's companion website". Problem is, "the book's companion website" isn't easy to find. If you try to find it on cengage.com, you'll hit a dead end.&lt;br /&gt;&lt;br /&gt;So, in the interest of being able to refer people to the site, "the book's companion website" is right here. . .&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.courseptr.com/ptr_detail.cfm?group=Game%20Design%20%26%20Development&amp;amp;subcat=Game%20Programming&amp;amp;isbn=978-1-59863-805-9"&gt;&lt;span style="font-style: italic;"&gt;Beginning Game Programming: A GameDev.net Collection&lt;/span&gt; (aka The Orange Book)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.courseptr.com/ptr_detail.cfm?group=Game%20Design%20%26%20Development&amp;amp;subcat=Game%20Programming&amp;amp;isbn=978-1-59863-806-6"&gt;&lt;span style="font-style: italic;"&gt;Advanced Game Programming: A GameDev.net Collection&lt;/span&gt; (aka The Green Book)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.courseptr.com/ptr_detail.cfm?group=Game%20Design%20%26%20Development&amp;amp;subcat=Game%20Design&amp;amp;isbn=978-1-59863-808-0"&gt;&lt;span style="font-style: italic;"&gt;Design and Content Creation: A GameDev.net Collection&lt;/span&gt; (aka The Black Book)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.courseptr.com/ptr_detail.cfm?group=Game%20Design%20%26%20Development&amp;amp;subcat=Design%20%26%20Business%20Development&amp;amp;isbn=978-1-59863-809-7"&gt;&lt;span style="font-style: italic;"&gt;Business and Production: A GameDev.net Collection&lt;/span&gt; (aka The Blue Book)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Note that the black and blue books don't have any downloads associated with 'em, but you can still read the official descriptions and author-bios and tables of contents.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'm still considering registering my own site, ala gamedevcollection.com, although it'd probably be better to pester the gamedev uberlords into letting me have something like gamedev.net/collection or collection.gamedev.net where I can post links to errata (none yet) and discussion topics and deep-links to the code.&lt;br /&gt;&lt;br /&gt;Thoughts?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-7647292683729208464?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/7647292683729208464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=7647292683729208464' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/7647292683729208464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/7647292683729208464'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/10/book-downloads.html' title='Gamedev.net collection sample code downloads'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-8765813541428238881</id><published>2009-10-22T10:46:00.005-06:00</published><updated>2009-10-22T11:59:29.576-06:00</updated><title type='text'>Zip Wars!</title><content type='html'>I promised more content in the blog, so here's some. . .&lt;br /&gt;&lt;br /&gt;One perk of being a reviewer is that I occasionally get unsolicited bits of whatever from people fishing for new reviews. And last week, out of the blue, the &lt;a href="http://www.winzip.com/"&gt;WinZip&lt;/a&gt; people sent me a magic code to unlock the latest version of WinZip Pro in the hopes that I'd give 'em a shout-out for the site. And since I'm a longtime user of &lt;a href="http://www.powerarchiver.com/"&gt;PowerArchiver&lt;/a&gt;, I decided to put together a little head-to-head.&lt;br /&gt;&lt;br /&gt;First off, I must say that both products are top-notch and do a great job of opening and saving to all of the popular archive formats as well as a lot of the unpopular ones. I could probably go point-by-point into all of the formats they support, but the list would be about 95% the same, and the 5% of difference would be formats that are obscure or abandoned and would only be useful if you found something on an old floppy disk from the 1980's that you needed to open. If you're doing ZIP or RAR or 7Z or GZ or any other popular file format, these will do the job just fine.&lt;br /&gt;&lt;br /&gt;As for interface and OS-interoperability, again they're largely the same. Here's a shot of WinZip opening a ZIP file with some folders in it.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://members.gamedev.net/johnhattan/reviews/zip/wz.png"&gt;&lt;img src="http://members.gamedev.net/johnhattan/reviews/zip/wz_thumb.png" /&gt;&lt;/a&gt;&lt;br&gt;(click to embiggen)&lt;br /&gt;&lt;br /&gt;If you've ever used WinZip, this should be familiar. At the top is one big toolbar of oversized buttons to do common tasks. There's one "tree" pane on the left showing any folder structure in the ZIP. And there's a big pane on the right showing anything in the folder. Like the standard Windows explorer, you can view your stuff as thumbnails or small icons or as a spreadsheet-ish view with all of the details. WinZip also groks a few thumbnail formats, which is why you see the archived PNG and BMP files as thumbnail-ed bitmaps.&lt;br /&gt;&lt;br /&gt;Here's PowerArchiver opening the same file.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://members.gamedev.net/johnhattan/reviews/zip/pa.png"&gt;&lt;img src="http://members.gamedev.net/johnhattan/reviews/zip/pa_thumb.png" /&gt;&lt;/a&gt;&lt;br&gt;(click to embiggen)&lt;br /&gt;&lt;br /&gt;One thing that PowerArchiver added recently is a new UI that looks and acts a lot (and by "a lot" I mean "exactly" ) like Office 2007 with toolbar buttons organized into tabs and groups. It gives you a bit more functionality than WinZip's single row of buttons, but it's really a matter of taste. If you find the new Office 2007 interface offensive, you can switch back to a "classic" mode that looks quite a bit like WinZip with a single bar of buttons at the top. The classic interface is skinnable with a bunch of downloadable skins on the site, but the standard one looks just fine.&lt;br /&gt;&lt;br /&gt;As far as the panes, it's very similar to WinZip. The only difference is that the thumbnails view doesn't show the actual bitmaps, but instead shows 'em in a preview pane on the far right. It's not quite as cool as the WinZip one, but the preview pane does show a lot of formats that don't work well as thumbnails, like XML, PDF, etc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As far as function goes, the programs are about 95% the same. They both have tendrils that go into Windows Explorer so you can easily create ZIP files by just right-clicking on files on the desktop or in an Explorer window. They both come with the very similar ability to make standalone self-exploding EXE files. WinZip does have an apparently much more fully featured ZIP-to-EXE program that you can buy for an extra $50, but the one that comes with it is just fine for my purposes.&lt;br /&gt;&lt;br /&gt;Both programs also have the ability (in the "pro" version) to burn ZIP files directly to CD/DVD media from within the program. PowerArchiver's burn option is nicer than WinZip's, but since every version of Windows since XP has had the ability to burn CD's directly from within Windows Explorer, this isn't really much of an advantage. If I want to put a ZIP file on a CD, I'll likely just do it from Explorer rather than from within my archive program.&lt;br /&gt;&lt;br /&gt;Both products have command-line versions available for registered users. Again, this isn't much of an advantage, as command-line compression tools are plentiful and free.&lt;br /&gt;&lt;br /&gt;Both products come in "standard" and "pro" flavors and, interestingly, the differences between the standard and pro in both products are the same. The Pro version gives you the disk-burning function as well as the ability to FTP from within the product and the ability to put archiving on a schedule so you can use PowerArchiver/WinZip as a compressed backup program, perhaps compressing and copying/uploading your archive to a remote server on a schedule. Another slight edge to PowerArchiver Pro is that it can create ISO files and mount them as virtual drives from within the program. WinZip can read and extract from ISO files but can't create them or mount them as drives.&lt;br /&gt;&lt;br /&gt;Price and update-wise, I again have to give the edge to PowerArchiver. PowerArchiver is $23 for the standard edition and $35 for the pro edition (currently on sale for $31) and includes lifetime upgrades to major (full version number) and minor (bugfix) versions. WinZip is $30 for standard and $50 for pro. Their upgrade policy isn't clear, but it appears to only cover minor upgrades. They have an "upgrade assurance plan" for $7 a year which covers major and minor upgrades.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you read the stuff above, it's clear that I'm giving the edge to PowerArchiver, but it's not a very big edge. PowerArchiver did a few small things better and has a much better price and upgrade policy. That's not to say WinZip isn't a good product. In fact, both products are excellent, and if you already own one you shouldn't feel the pull to "cross-grade" to the other.&lt;br /&gt;&lt;br /&gt;It rather reminds me of the old "WordPerfect vs Word" war of the 1980's and 90's. Seemed like whenever one program came out with new features, the other would put out an upgrade leapfrogging those features. That war didn't end until WordPerfect was late to the "now available for Windows" party, but the bottom line was that in that competition the consumer ended up the winner.&lt;br /&gt;&lt;br /&gt;And the same is the case now. WinZip and PowerArchiver are two top-drawer commercial archiving programs, and the war between 'em is making us the winner.&lt;br /&gt;&lt;br /&gt;And finally, yes I know that there are a bazillion free ZIP utilities out there. I've tried quite a few of 'em, and I have yet to find one that's nearly as nice as these two. Neither WinZip nor PowerArchiver are emptying your wallet with their prices. Chances are good that you have to deal with archive files now and then, and these can really save you some time and frustration.&lt;br /&gt;&lt;br /&gt;So get one. You'll thank me for it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-8765813541428238881?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/8765813541428238881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=8765813541428238881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8765813541428238881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8765813541428238881'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/10/zip-wars.html' title='Zip Wars!'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-8398993870010645301</id><published>2009-10-08T10:00:00.003-06:00</published><updated>2009-10-08T10:32:29.959-06:00</updated><title type='text'>Oh many things</title><content type='html'>Actually I have many things about which to comment. Instead of bunching the whole mess up into one post, I'll just make several posts. That'll at least give the impression that I'm posting prolifically to the Bargain Basement Blog.&lt;br /&gt;&lt;br /&gt;First off, I got a Macbook. My little Mac Mini decided to make an unscheduled exit from the land of the living, so I decided to choke two ducks with one applecore and replace my little Acer with a Mac laptop. Apple was selling "refurbished" (which is what I think they call their existing stock of laptops after one of their "we've got a new laptop, and it's for sale. . .RIGHT NOW" press conferences), so I ordered one.&lt;br /&gt;&lt;br /&gt;So far I'm happy with it. It had a couple of annoyances that I was able to fix with software. First off, the backspace key is in the right place but is named "delete" and the delete key is named. . .nothing because it doesn't have one. I found a couple of little gizmos online that'll remap keys (and you need a couple because the eject-key has key-repeat disabled), so I now have the mostly-useless "eject" key acting as the delete key. It's right above the mis-named backspace, so my fingers figured it out in short order.&lt;br /&gt;&lt;br /&gt;Next, the Mac Finder does a good job of not telling you anything about where you are. If you're in a folder, it seems to want you to think that that folder doesn't actually have a path to it but exists somewhere in space. Vista tried to do the same thing, but it had a checkbox in the settings that let you turn off that nonsense. Turns out MacOS has some similar Explorer-ish bits in the finder that let you know exactly where a folder is, but not only are they turned off by default, but they're unable to turn on easily. Enter a nice free app called "&lt;a href="http://secrets.blacktree.com/"&gt;secrets&lt;/a&gt;" that gives you access to lots of tweaks, some pointless and some really handy. So that's fixed.&lt;br /&gt;&lt;br /&gt;Finally (cover your ears, fanboys), I was able to turn off the 3D in the dock and de-centered it. I gotta agree with &lt;a href="http://www.asktog.com/columns/044top10docksucks.html"&gt;Tog&lt;/a&gt; here that some parts of the dock have sacrificed usability for cuteness. Much of what allows people to "connect" with their user interface is the stuff that you don't have to think about. Things like icons that you can instantly recognize (which is why I'm annoyed that the Flash and new FileZilla icons look similar even though a second glance shows them to be different). And one problem with the dock is that it is centered. And that means that adding a new icon to the dock by running a program shifts all of the icons iconWidth/2 pixels left and right. And my little position-sensing brain must adjust itself.&lt;br /&gt;&lt;br /&gt;On my Windows 7 machine, the leftmost icon (next to the immovable start-orb) is Firefox. It's been there for months. I can practically hit it without thinking. It never moves. I don't have to search the bottom of the screen for it. I don't have to worry if it's shoved over a few positions because other stuff is running. It's just there. It's definitely one of the things that Windows 7 got right, and I wish Apple would do Microsoft a solid and steal some of the things it got right.&lt;br /&gt;&lt;br /&gt;And guess what's now the leftmost icon in MacOS next to the immovable Finder icon. That's right, Firefox.&lt;br /&gt;&lt;br /&gt;(oh, and if you like the Windows 7 toolbar, somebody found a little hack that lets you shove the recycle bin into the right corner, which was another of Tog's dock complaints. It's &lt;a href="http://www.techspot.com/guides/196-recycle-bin-on-windows-7-taskbar/"&gt;here&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Now that those little bits are fixed, I quite like my little Macbook. I wish it had a free paint program that was as nice as paint.NET, but I haven't yet found one. OpenOffice works just fine.&lt;br /&gt;&lt;br /&gt;No problems here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-8398993870010645301?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/8398993870010645301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=8398993870010645301' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8398993870010645301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8398993870010645301'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/10/oh-many-things.html' title='Oh many things'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-5412509186525755499</id><published>2009-09-08T11:15:00.005-06:00</published><updated>2009-09-08T11:30:17.078-06:00</updated><title type='text'>I'm viral again!</title><content type='html'>Phase 2 of my "viral" word games is now up today. It's. . .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://hangtwit.com/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 480px; height: 96px;" src="http://hangtwit.com/resources/banner_480x096.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;&lt;a href="http://hangtwit.com/"&gt;hangtwit.com&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;It's pretty-much the same underpinnings as my recently-released cryptotwit.com, except this time it's a hangman game. It uses the same underlying database and phrase list as cryptotwit, so you can switch between the two if you want, using cryptotwit for longer phrases and hangtwit for short phrases or single words.&lt;br /&gt;&lt;br /&gt;And, like cryptotwit, it's social-enabled. You can play it at &lt;a href="http://apps.facebook.com/hangtwit/"&gt;http://apps.facebook.com/hangtwit/&lt;/a&gt; as a facebook app, or you can post your "hangmanified" phrases (a verb coined for the site meaning "to make something into a hangman game") to your facebook wall or twitter stream.&lt;br /&gt;&lt;br /&gt;I actually have a "phase three" social word game that'll work in the same way as cryptotwit and hangtwit, although I'm going to work on the mobile stuff a bit and get to it later. It's a mite more ambitious on the client-side, so I might need to contract out some art and music for it.&lt;br /&gt;&lt;br /&gt;In the meantime, please give hangtwit a try and lemme know what you think. If you find any bugs and you wanna contact me directly, the easiest way is email. As always I'm &lt;a href="mailto:john@thecodezone.com"&gt;john@thecodezone.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And if you just wanna try a couple of hangtwit games, here are some ready to go.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hangtwit.com/05s"&gt;Here is one I made up this morning. It's fairly easy.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hangtwit.com/05o"&gt;A word I used for all my testing, mainly because it reminded me of LOLcats, which my seven year-old thinks are the funniest things in the universe.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hangtwit.com/-3"&gt;Play a random hard word. Some aren't so hard. Some are nigh impossible.&lt;/a&gt;&lt;br /&gt;(I have a few hangman-nightmare words in that list like "strengths", which is a nine-letter word with only one vowel)&lt;br /&gt;&lt;br /&gt;Also if you have any good "deadly" hangman words, feel free to post 'em as comments and I'll get 'em in the list. Big thanks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-5412509186525755499?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/5412509186525755499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=5412509186525755499' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5412509186525755499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5412509186525755499'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/09/im-viral-again.html' title='I&apos;m viral again!'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-2360782533943721838</id><published>2009-08-24T09:39:00.000-06:00</published><updated>2009-08-24T09:40:27.759-06:00</updated><title type='text'>of school and bribes</title><content type='html'>Maggie started her second week of second grade today. She's thrilled to be back at her (new) school and has already made a couple of new buddies. The teacher wasn't too tough on 'em academically the first week, so Maggie let her boundless ambition get to work.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Her first day at school, she made a school newspaper. She planned to put copies in the school office as soon as she got permission to use the copy machine.&lt;/li&gt;&lt;li&gt;Second day at school, she wrote a play. It's about vampires that make you happy when they bite you. Sounds better than "Twilight".&lt;/li&gt;&lt;li&gt;Third day of school, she wrote a book with a friend. It's about superheroes.&lt;/li&gt;&lt;li&gt;Fourth day, she and her friend made the book into a movie screenplay. They'll be filming as soon as they find a camera.&lt;/li&gt;&lt;li&gt;Fifth day, they declared that the league of superheros about which they wrote a book and a screenplay, "The Kids of Power", is now a real thing and that her character (Ice Princess) and her other super-buddies (Candy, Fire-fur, and Shadow Girl) will be solving crimes.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;No idea how they're gonna top that for week two, but I'm happy that she's getting to put her imagination to work.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next, I get free stuff.&lt;br /&gt;&lt;br /&gt;Just got done listening to a show on NPR about "mommy blogs" and how they *GASP* get free products to review. And they're contrasting 'em with "daddy blogs" in which the dads would send the review products back.&lt;br /&gt;&lt;br /&gt;I'm not usually down on NPR, but the report was rather dumb. For one, the products that they said the "mommy blogs" reviewed were things like diapers and laundry detergent while the "daddy blogs" tended to review technology stuff like cellphones and game-consoles. To which I said "Wait, you're saying that reviewers should return a half-filled box of Tide in the same way that you'd be expected to return a loaner XBox?"&lt;br /&gt;&lt;br /&gt;And I don't even wanna think about returning a "loaner" diaper. Yecch.&lt;br /&gt;&lt;br /&gt;So, in the interest of full disclosure, I get free stuff. Especially books. While some books come from a publisher that sends me dang near every gamedev-title they print (Cengage), some other books come via requests from the author, some books arrive when a gamedevver wants me to check out a book for 'em and I contact the publisher for a freebie, and still other books just magically arrive on my doorstep without me asking for 'em at all.&lt;br /&gt;&lt;br /&gt;And I don't review everything. Some books just don't fit gamedev all that well, like a couple of "how to build a Linux machine cheap" books that arrived on my doorstep last month. Those books, as well as "done being reviewed" books usually end up donated.&lt;br /&gt;&lt;br /&gt;I also turn down many book requests. I get loads of requests to read novels and self-help books and religious books and other stuff. Apart from &lt;a href="http://thedaemon.com/"&gt;Daemon&lt;/a&gt;, I've turned 'em down. While I'd probably like to review novels and post 'em to the Bargain Basement Blog, press agents know where their bread is buttered. The reason they want me to review something is because they want it to appear on that big FEATURED ARTICLES box on the gamedev front page.&lt;br /&gt;&lt;br /&gt;And while your latest vampire thriller might be a fun read (especially if the vampires make you happy when they bite you), I don't think that it's gamedev material.&lt;br /&gt;&lt;br /&gt;Ditto for software and hardware. Most, but not all, of the stuff I review is gratis. Most of those Adobe products I reviewed early in the summer were stuff I purchased, but the Adobe Flex review was an NFR copy from the publisher. I have a Gyration &lt;a href="http://www.gyration.com/?l=en#productOverview/miceKeyboards"&gt;"Air Mouse and Air Mouse GO Plus"&lt;/a&gt; gizmos on my desk that'll be reviewed in a month or so. The manufacturer doesn't want 'em back when I'm done.&lt;br /&gt;&lt;br /&gt;And if you think that freebies guarantee that I'll give your product a good review, then you haven't read my latest couple of book reviews (&lt;a href="http://www.gamedev.net/columns/books/bookdetails.asp?productid=754"&gt;1&lt;/a&gt;, &lt;a href="http://www.gamedev.net/columns/books/bookdetails.asp?productid=750"&gt;2&lt;/a&gt;). Fact is, the manufacturers/publishers know that sending out a review-product may very well lead to a one-star review that'll hurt sales. That's the risk they take. I haven't yet had someone take me to task for the honesty of something I've written. They can claim I made mistakes in my evaluation of the product (after all, I'm only human), but freebie-hood doesn't equate to a bribe.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And finally, I know that the gamedev book section is a mess. And the search doesn't work. And half of the covers are broken links. And half of the books are out of print. And the only things that appear as "New Books" are books that are on my personal review-queue. Basically we're at a "fix vs rewrite" tipping point with gamedev, and we're just letting the buggy stuff limp along until our glorious new Gamedev Version 5 appears. Once that happens, it'll get better. I promise.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-2360782533943721838?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/2360782533943721838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=2360782533943721838' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/2360782533943721838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/2360782533943721838'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/08/of-school-and-bribes.html' title='of school and bribes'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-611139411043934099</id><published>2009-08-14T15:34:00.004-06:00</published><updated>2009-08-14T15:55:14.876-06:00</updated><title type='text'>I'm viral!</title><content type='html'>Yikes, 30 days since my last post. I guess that's more reason for you to follow me on twitter (twitter.com/johnhattan).&lt;br /&gt;&lt;br /&gt;Anyways, the project-that-cannot-be-named is now named. And its name is &lt;span style="font-weight:bold;"&gt;cryptotwit.com&lt;/span&gt;. It's a game and a website and a facebook app all rolled up in one.&lt;br /&gt;&lt;br /&gt;Basically you go to &lt;a href="http://cryptotwit.com"&gt;cryptotwit.com&lt;/a&gt; (or &lt;a href="http://apps.facebook.com/cryptotwit/"&gt;http://apps.facebook.com/cryptotwit/&lt;/a&gt; in facebook) and you'll be presented with a fairly twitterish "enter something" interface. Write up a cute quote or a message or whatever and press the "create a cryptotwit" button to encrypt it. It'll give you the encrypted message along with a link to the solver-game and a way to post your cryptotwit to your twitter timeline and/or facebook stream.&lt;br /&gt;&lt;br /&gt;It's definitely one of those "it takes a lot of work to make something simple" projects. There's only one page on the site, although the page secretly has about five states that it can be in. There's lots of little javascript bits that talk to each other and make everything act the way that you think they should.&lt;br /&gt;&lt;br /&gt;And it's written in PHP, XHTML (fully compliant, thank you very much), JavaScript, and ActionScript. It certainly takes a lot of languages to make something that looks like it was cranked out in a weekend :)&lt;br /&gt;&lt;br /&gt;It's still officially in the testing phase, but since there's no concept of accounts or invitations or anything else, there's little I can do once it gets out. So if you find a bug or something, please please please lemme know.&lt;br /&gt;&lt;br /&gt;In the meantime, here are a couple of puzzles I just posted.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cryptotwit.com/vf"&gt;a 140-character twitter-length cryptotwit&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cryptotwit.com/ve"&gt;a longer and hence easier-to-solve (although harder to see) cryptotwit&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And, if you don't mind. Please post a cryptotwit to facebook. I need five users before I can submit it to the app directory. Much appreciated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-611139411043934099?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/611139411043934099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=611139411043934099' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/611139411043934099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/611139411043934099'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/08/im-viral.html' title='I&apos;m viral!'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-7902872660644157262</id><published>2009-07-10T13:15:00.005-06:00</published><updated>2009-07-10T13:52:24.550-06:00</updated><title type='text'>Friday braindump</title><content type='html'>Hi there. Sorry about the sporadic posts. If you want more up-to-date updates complete with 140 character braindumps and whatever one-liner happens to cross my mind, be sure to follow me at&lt;br /&gt;&lt;br /&gt;&lt;a href="http://twitter.com/johnhattan"&gt;http://twitter.com/johnhattan&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Otherwise here are the topics.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Shelly's got a new job.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Barnett Shale (a bigass rock under Fort Worth that's full of natural gas) drilling has come to a near-standstill and will likely continue to stay that way until gasoline hits $4 again. We have enough cash in reserve to weather the storm, but Shelly came across a really great opportunity in the area. It's at a place she worked pre-CivilGrrl, but now she'll be a muckety-muck on a bigass (and by "bigass" I mean &gt;$1 billion) pipeline project. So CivilGrrl is on the back burner for the time being. We're doing a couple of little mini-projects here and there, but I'm back to being a one-person office 95% of the time.&lt;br /&gt;&lt;br /&gt;Since starting on Tuesday, Shelly and I are both feeling the culture shock. Much like 1996-1999, I'm cloistered up in my office like a monk eight hours a day. Shelly suddenly has chatty coworkers. Things are a little stressful right now, but we're coping.&lt;br /&gt;&lt;br /&gt;On the good side, it's a great job and I think we'll all be the better for it once we're adjusted to the culture.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. New Project&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Well, this all started with the &lt;a href="http://mochiads.com/contest/may09"&gt;Mochiads Word Game Contest&lt;/a&gt;. While dinking around with mobile game platforms, I got the idea to hammer out a quick word-game. Then I got a better idea for a different word-game. Then I pitched to Shelly the idea to make a word game that could work via social networks.&lt;br /&gt;&lt;br /&gt;And Shelly made the mistake of telling me that my idea was brilliant and that I should put everything on hold for it.&lt;br /&gt;&lt;br /&gt;So I am. I can't talk about it right now, but it'll be a little different from my existing puzzles. It'll work as a standalone word-game that can appear on various sites. But it'll also work in its own domain.&lt;br /&gt;&lt;br /&gt;And I still wanna enter it in that contest, as I'm always one to enter a game in those Mochi contests so I can lose.&lt;br /&gt;&lt;br /&gt;So my deadline is August. I'm trying to keep the engineering to a minimum. It's a little more "churn" than usual because it's not a straight game but is a game that talks to a server on its own domain. Still, it's not too complicated. I'll certainly be courting beta testers on Twitter, so follow me if you wanna get notified.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. Casual Connect is Afoot!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I'll be doing Gamedev press for &lt;a href="http://seattle.casualconnect.org/"&gt;Casual Connect&lt;/a&gt; in Seattle later this month. I have about ten requests for interviews, but only about three or four are development related.&lt;br /&gt;&lt;br /&gt;And Shelly's demanded that I come home with a pile of new fun freebie games for her laptop, so I'm in the horns of a dilemma. While I can certainly interview the press-agent for "Super Jewel Match Three Quest Whatever" in the hopes of getting a freebie, that's not really good fodder for the gamedev coverage. If I talk to the people who make PhoneHighScoreAPI 1.2, that's more game development related, but there's not a good freebie game in that.&lt;br /&gt;&lt;br /&gt;So I have a delicate balance I must strike. The wife and critter won't be there this time, as there's now a day job with which to contend.&lt;br /&gt;&lt;br /&gt;And some of these interviews are a general pain because there's very little to tell developers. While game developers would certainly be interested in getting their Flash game listed at SuperUltimateGameWhatever.com, it's a bit of a waste of time to talk to a press-agent for an hour about their site with the only developer-related information being "oh yeah, if you want us to put someone's game on the site, just email submit@superultimategamewhatever.com".&lt;br /&gt;&lt;br /&gt;Still, there'll be a bit of fun to be had there. It was a good convention last year and much easier to traverse than the GDC's.&lt;br /&gt;&lt;br /&gt;My only complaint is that they're doing it at that Seattle opera house again. While the opera house is terrific for a single big presentation, it's not good for multi-track stuff. The convention ended up renting meeting rooms in adjacent clubs and restaurants, and there was no press room to be found. Most of my meetings either involved clients renting out rooms to hold court ($$$) or us hiking around the place until we found a reasonably quiet spot with chairs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-7902872660644157262?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/7902872660644157262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=7902872660644157262' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/7902872660644157262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/7902872660644157262'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/07/friday-braindump.html' title='Friday braindump'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-3406573263406969810</id><published>2009-06-17T09:30:00.002-06:00</published><updated>2009-06-17T10:11:39.667-06:00</updated><title type='text'>Collecting my thoughts.</title><content type='html'>Putting Appcelerator Titanium on the back-burner for the time-being, as I've deemed it to be not-as-yet mature enough to solve all of my problems. Much as I'd like to build everything with free tools, the maturity's not yet there. It'll be there when I need it (around Android/Blackberry time) and in a better state in the future.&lt;br /&gt;&lt;br /&gt;So I'm switching gears and going with maturity for now. And that means C and XCode and suchlike. Unfortunately my little Mac Mini isn't in a state where it can write iPhone stuff. First off, it's got OSX 10.4, and OSX 10.5 is necessary for iPhone development. That's $130. I'd like to just leapfrog to 10.6, as there's a $160 10.4-to-10.6 package that's gonna include all of that iLife/iWork/iWhatever stuff, but that's not happening until September and I don't wanna wait until then. I don't use the Mac for everyday productivity stuff anyway, so the iWhatever stuff isn't that big a benefit.&lt;br /&gt;&lt;br /&gt;Also I need more memory. The Mini's got 512mb which'll run 10.4 and 10.5 but won't run 10.6. 10.6 isn't a must-have to develop iPhone, but most stuff on the Mini runs about as fast as an ox pulling a U-haul trailer right now, and 2gb memory upgrades are now cheap ($35 shipped), so I have that in the mail and will mess with the plastic spatulas (no, really, you need plastic spatulas to open a Mac Mini) when that arrives.&lt;br /&gt;&lt;br /&gt;And I'll likely get a new processor too. This is a first-gen Intel Mac Mini and contains a "Core Solo" processor (AKA a Celeron, but Apple can't call it that after their old campaign to rebrand Celeron as "Decelleron" when they were still pretending that PowerPC chips were faster). I looked it up and the chip's not soldered in and you can slap a dual-core into the original Intel Mini and it'll recognize it. Only problem is that the Mini is put together a bit like that magic-demon-puzzle-box thingy in "Hellraiser" and you gotta disassemble the whole danged thing to get to the processor.&lt;br /&gt;&lt;br /&gt;And Shelly's pestering me to be vigilant about the process so my mind don't wander. So the process thus-far is as follows. . .&lt;br /&gt;&lt;br /&gt;1. Come up with fabulous mobile game idea (already done)&lt;br /&gt;2. Document idea (will do by Friday)&lt;br /&gt;3. Install OSX 10.5 into Mac Mini so I can install iPhone development stuff&lt;br /&gt;4. Install 2gb memory upgrade when it arrives so the Mini won't be quite so pokey.&lt;br /&gt;5. Develop iPhone app in C, most likely using Cocos2D for the presentation layer. I'm not wild about the process, but it's undoubtedly mature (squillions of games having been developed, used, and deployed with this system), so I won't complain much.&lt;br /&gt;6. Simultaneously with 5, order a dual-core processor for the mini, re-disassemble and install processor. Hopefully the Mini will then be even further from pokey than in step 4.&lt;br /&gt;7. Finish iPhone app.&lt;br /&gt;8. Get app approved by content police.&lt;br /&gt;9. Deploy and sell game for free or a very low price (this is my "getting my feet wet" project so I'm not shooting for big big profits with this go-round).&lt;br /&gt;10. Return to step one and repeat process with a larger-scope game, eliminating the upgrade steps as my Mac Mini is now hopefully quite beefy enough to develop reasonably.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Speaking of processor upgrades, I had a really weird thing happen on Shelly's machine. It just got slow. And not just a little slow. A lot slow. We're still not sure exactly what the deal was, but it just got really slow. At first I thought it was software. Perhaps something got installed that was running in the background and hogging up all the CPU. But it never seemed to improve. Sometimes we'd get a brief respite, but it'd inevitably go right back to being slow again.&lt;br /&gt;&lt;br /&gt;Just for grins, I ran that Windows Experience Index that came with Vista, and the CPU was scoring itself as 2.2, which is almost comically slow. As a comparison, the Celeron in my cheap laptop runs at a 3.9. The identical system (my machine across the room) had a CPU index of 7.1. Clearly something was wrong. A quad-core machine shouldn't get a 2.2.&lt;br /&gt;&lt;br /&gt;Finally I got a light bulb above my head. Shelly's computer is pretty-much identical to mine. I plugged Shelly's drive into my computer and booted it up. Given that my computer is pretty-much an identical machine to hers, it should give similar results. And the Windows Experience CPU index registered 7.1, which means that the problem was NOT software. If it was software, it would run slow no matter what machine it was plugged into.&lt;br /&gt;&lt;br /&gt;So a couple of hours and a motherboard later Shelly's computer was back together, happy as can be and running quick as a quad-core machine should run. No idea what'd be happening to make it get slow like that. But it's one of those things that you can only wrestle with for so long before you just have to replace stuff until the problem goes away.&lt;br /&gt;&lt;br /&gt;Bleah, expensive problem. Anyone want a slow motherboard?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Also I replaced the CPU on my laptop. Just for grins, I googled to see what I could do to make my little $350 "Wal Mart Special" Acer laptop faster. And it turned out that my laptop is about the most upgradable one on the market. Everything's accessible from a panel on the bottom, and it runs dual-core CPU's just fine. So I ordered myself a dual-core CPU and prepared to disassemble the whole danged thing. The whole process ended up taking about ten minutes, and my little cheapo disposable laptop is now pretty quick.&lt;br /&gt;&lt;br /&gt;So I'm getting a little more life from the cheapo computers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-3406573263406969810?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/3406573263406969810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=3406573263406969810' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/3406573263406969810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/3406573263406969810'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/06/collecting-my-thoughts.html' title='Collecting my thoughts.'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-6798074141070938299</id><published>2009-06-09T12:13:00.002-06:00</published><updated>2009-06-09T12:36:43.972-06:00</updated><title type='text'>Early adopter pains</title><content type='html'>Been playing with &lt;a href="http://www.appcelerator.com"&gt;Appcelerator Titanium&lt;/a&gt;, which is a gizmo that lets apps that are actually browser stuff under the hood (html, js, python, ruby) act like first-class applications. And they just announced at WWDC (the apple developer conference where they announce stuff that's important for developers like "the iPhone now has a clipboard", mmmyeah) that they're going mobile. Imagine Adobe AIR for mobile and you get the idea.&lt;br /&gt;&lt;br /&gt;Whether this is yet-blessed by the iPhone content-police is still not stated. I think that's a big deal-breaker, so I hope they're working DAMN HARD behind the scenes to make that happen, but I digress.&lt;br /&gt;&lt;br /&gt;And my good pal Don Thorp is also involved, so I'm being a good pal and am getting bugs. I realize that this is an ambitious project (only took Adobe five years to go from Adobe Central to AIR) and has a thousand ragged edges. Also you're still shmoozing people with free T-shirts and suchlike, so who knows when bugs will actually be fixed.&lt;br /&gt;&lt;br /&gt;And the fact that I'm posting bugs here on the Bargain Basement Blog is problem number one. . .&lt;br /&gt;&lt;br /&gt;1. The bug-tracker doesn't accept my login that I already set up with the website. Furthermore, the bug-tracker apparently requires that I set up an account to tell you where the bugs are. Bug reports are gifts to YOU, not gifts to me. To make me jump through any kind of hoops to tell you where the bugs are is a Bad Thing. Accept bug reports with good grace and a minimum of fuss on the part of the reporter.&lt;br /&gt;&lt;br /&gt;So fix that.&lt;br /&gt;&lt;br /&gt;2. The login thing on your site is broken. If I go to the login page and enter my name &amp; password, I'm taken to an "update your profile" form to enter more stuff about myself (city, state, twitter ID). If I fill in those fields and press "submit", the form clears (Firefox 3.5, under Chrome it works). Even if the form is accepted, I never actually log in to the site. If I back out to the main page, I'm not logged in.&lt;br /&gt;&lt;br /&gt;3. I got a magic code to beta-test the mobile version. If I try to enter this code on the "create an account" page, I'm told that my login email already exists in the system (which it does). I have no way of knowing if I'm actually registered with the program.&lt;br /&gt;&lt;br /&gt;4. The little titanium throbber-icon in the upper-right corner of the app tells me that I can now get version 4.1.1 or something like that. If I click the link, nothing happens. If I go to the site to try to download it manually, I can only download the version that I already have. NEVER allow people to download different versions from different places. That's a one-way ticket to trouble. Think Firefox -- when Firefox pesters you that there's a new version of something, you can rest assured that it's already available on their download page.&lt;br /&gt;&lt;br /&gt;5. The IRC tab worked for a bit and then stopped. Pressing "connect" just tells me "one moment" forever. It might be fixed in the next version, but I can't find out because I can't get the next version (see item 4).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I have an actual bug with a compiled app, and I'll post that as soon as I'm able. kthxby.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-6798074141070938299?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/6798074141070938299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=6798074141070938299' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/6798074141070938299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/6798074141070938299'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/06/early-adopter-pains.html' title='Early adopter pains'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-8707101701487274502</id><published>2009-06-02T08:11:00.004-06:00</published><updated>2009-06-03T19:09:56.721-06:00</updated><title type='text'>Handheld Pains Organized</title><content type='html'>Okay, still not developing for the iPhone yet, but I'm closer. Things have gotten both clearer and more fuzzy. So I'm making myself a table with the available technologies on it. . .&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Technology:&lt;/span&gt; Objective C&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Portability:&lt;/span&gt; Nil. If I write an iPhone game for the iPhone, it stays on the iPhone forever. If I wanna later move that game to Android or Blackberry or Windows Mobile, I rewrite it.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pros:&lt;/span&gt; It's Apple-approved&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cons:&lt;/span&gt; I friggin' hate Objective C&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Price:&lt;/span&gt; $99 for the developer program (and I presume this $99 will still be necessary for all the other technologies below.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Technology:&lt;/span&gt; Torque&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Portability:&lt;/span&gt; Maybe. I haven't seen anything saying that Torque will be available for other portables, but it's certainly do-able.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pros:&lt;/span&gt; Available right now&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cons:&lt;/span&gt; Requires a 5-second ad for Torque to display before the game starts&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Price:&lt;/span&gt; $500 for the iPhone engine. $250 for Torque Game Builder.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Technology:&lt;/span&gt; FlashGap or Appcelerator Titanium (yes I know they're different in that FlashGap uses the existing browser and Titanium bundles its own browser, but they're conceptually similar)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Portability:&lt;/span&gt; Quite good. Titanium hasn't nailed down their mobile plans yet, but I'd be surprised if it didn't include pretty much everything. It's currently desktop-only but I suspect that'll change.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pros:&lt;/span&gt; Would probably be the simplest way to get my games up in a hurry.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cons:&lt;/span&gt; Apple is denying FlashGap applications on general principle, and that's a big deal-breaker. No word about Titanium yet, but if I don't get word that they're working with the content police that they won't be FlashGapped, then I'll have a problem.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Price:&lt;/span&gt; Free&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Note: There's an Appcelerator Titanium beta launch-party &lt;a href="http://www.appcelerant.com/titanium-beta-launch-party-wwdc-june-9th-6-9pm.html"&gt;here&lt;/a&gt; that promises to have &lt;a href="http://www.appcelerant.com/titanium-beta-launch-party-wwdc-june-9th-6-9pm.html"&gt;"A Big Surprise"&lt;/a&gt;. Whether the surprise is something at the party or is something having to do with Titanium isn't clear. Here's hoping I'm pleasantly surprised.&lt;/b&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Technology:&lt;/span&gt; Haxe for iPhone&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Portability:&lt;/span&gt; It's apparently using GCC as its compiler backend and SDL as its display-layer, so provided SDL gets ported, it will likely get ported too.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pros:&lt;/span&gt; Would probably be the simplest ways to get my games up in a hurry. . .that's actually compiled and would be approved by the Apple content police.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cons:&lt;/span&gt; Is just a proof-of-concept now. Has a truly frightening build-chain to get from Haxe code to iPhone native.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Price:&lt;/span&gt; Free&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Technology:&lt;/span&gt; Unity3D&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Portability:&lt;/span&gt; Haven't heard any indication that it's moving to other platforms, but I wouldn't be surprised if it did.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pros:&lt;/span&gt; Seems like the most mature of the lot and there have been some very impressive games done with it.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cons:&lt;/span&gt; Is 3D all the way, but I've seen 2D stuff done with it (presumably just &lt;a href="http://www.youtube.com/watch?v=pvfVDczQXOY"&gt;very thin 3D objects&lt;/a&gt;). You have to open your game with an ad for them unless you pay 'em another $2500&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Price:&lt;/span&gt; $200 for the IDE and $400 for the iPhone engine&lt;br /&gt;&lt;br /&gt;So, did I miss any technologies? I know there are a few "infant" technologies out there, like a Ruby and a Python interpreter, but those looked pretty far from mature and even if they were, they'd likely suffer the same problem as FlashGap. Haxe would fire on all cylinders if it wasn't just a proof-of-concept.&lt;br /&gt;&lt;br /&gt;The other question is what to develop first. Shelly's of the opinion that I go with Android first and do iPhone second just so I could be a bigger fish in a smaller pond. Of course, this would affect the list above pretty greatly. It'd also be quite a bit cheaper. Far as I know, there's not an Android development technology yet that costs money :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Comments are welcome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-8707101701487274502?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/8707101701487274502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=8707101701487274502' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8707101701487274502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8707101701487274502'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/06/okay-still-not-developing-for-iphone.html' title='Handheld Pains Organized'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-3725360195772973148</id><published>2009-05-19T10:34:00.000-06:00</published><updated>2009-05-19T10:35:14.647-06:00</updated><title type='text'>Handheld pains</title><content type='html'>Ahh, handhelds. I friggin' hate developing for handhelds.&lt;br /&gt;&lt;br /&gt;I'm more or less officially between projects, and I'm getting pestered to move some of my games to handhelds, specifically iPhone. While it appears that iPhone and Android and Blackberry and Windows Mobile are about 90% the same and it should be logical that I ought to be able to make some kind of cross-platform effort, it's simply not the case.&lt;br /&gt;&lt;br /&gt;First off, Apple doesn't want it. Apple's finally the 800 pound gorilla of a platform, and they're taking advantage of it in a big way. When your market share is 5%, you can't really dictate terms for what's gonna appear on your platform, so no matter how much the term "port" makes you cringe you live with it.&lt;br /&gt;&lt;br /&gt;When your market share is much larger (although in the grand scheme of cellphones the iPhone's market share isn't all that huge, but it does dominate in the "phones that people actually download stuff to", demographic, thanks mostly to their well thought-out "app store", but I digress), you're in a better position to dictate terms.&lt;br /&gt;&lt;br /&gt;And their terms are "we get to content police our stuff however we want". And right now that pretty much boils down to "no ports". Apple's got a really weirdly-worded "no third party API's" clause in their content-policing terms. It was apparently written by marketers because it doesn't actually mean that. It basically means "your app must be written in Objective C and if we get a whiff that something's being interpreted, even if it's being interpreted by an interpreter we included in our phone, then you're out". This is happening right now with a gizmo called &lt;a href="http://phonegap.com/"&gt;PhoneGap&lt;/a&gt; that allows you to write apps using Safari as the presentation layer and javascript as the back-end, but with all the appearance of being a native app (ala Adobe AIR minus Flash). Some nice stuff has been written with it, but Apple's content-police suddenly started giving the thumbs-down to PhoneGap developed stuff.&lt;br /&gt;&lt;br /&gt;There's also &lt;a href="http://titaniumapp.com/"&gt;Appcelerator Titanium&lt;/a&gt;, which is a similar AIR-esque effort that's being helped along by my good pal Don Thorp. While mobile devices are also in its roadmap, unless I see something from Papa Bear Apple that they're not gonna dump Titanium-written apps on general principle, I can't invest the effort.&lt;br /&gt;&lt;blockquote&gt;Mind you, iPhone has a conspicuous exception to this rule in Unity3D, which is a javascript-Driven 3D engine. In this case, it's one of those "well, we'll make an exception for coolness", as there are some very cool Unity3D games.&lt;/blockquote&gt;There's also the probability of genuine according-to-Hoyle Flash appearing on an iPhone. It's no secret that Flash will appear on iPhones as well as Android phones. And if it did appear, it would make my porting efforts trivial, but there's still the question of app support. There's the distinct possibility that Apple will deploy Flash only as a plugin for their browser and not as a generalized runtime engine. While Adobe AIR on an iPhone would usher in a big rush of applications, it does bring up the whole "port" thing that's made Apple cringe since the 1980's. &lt;a href="http://www.twhirl.org/"&gt;Twhirl&lt;/a&gt; on an iPhone may be a terrific thing, but if I can also install the same Twhirl to an Android/Blackberry/WindowsMobile, then Apple's magic of exclusively-written apps is gone.&lt;br /&gt;&lt;br /&gt;So right now I'm working on the assumption that Flash may appear on the iPhone, but they're gonna hobble it in the same way they're hobbling Safari's javascript interpreter - it's useful for showing stuff in their web-browser, but don't plan to see your app in the app-store if you try to use it anywhere else.&lt;br /&gt;&lt;br /&gt;Bottom line seems to be that if you want any chance with the content cops, you need to write your app in native Objective-C or in Unity3D. And, unlike OpenGL, Unity3D isn't a 3D technology that can also do 2D stuff if you set it up nicely. And my stuff's all 2D. So I'm thinking Objective-C it is. And an Apple-only codebase. Just the way Apple wants it.&lt;br /&gt;&lt;br /&gt;Although I'm still thinking hard about Unity3D because I haven't written any C in a LONG time and the thought of learning a C-based OO language that's not portable to anything and has no garbage collection makes me throw up in my mouth a little. At least with Unity3D, I could recycle a little of my code. Although the thought of having to make 3D models of everything makes me weary.&lt;br /&gt;&lt;br /&gt;Thoughts?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-3725360195772973148?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/3725360195772973148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=3725360195772973148' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/3725360195772973148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/3725360195772973148'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/05/handheld-pains.html' title='Handheld pains'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-7899090453332336059</id><published>2009-05-18T18:47:00.000-06:00</published><updated>2009-05-18T18:48:51.195-06:00</updated><title type='text'>Get yer brute on</title><content type='html'>Just for giggles, I made up a gamedev.net clan for mybrute.com. For those uninitiated, mybrute.com is a very silly little game in which you pit your character (your brute) against other brutes. As you progress, you'll get more weapons and abilities.&lt;br /&gt;&lt;br /&gt;It's mildly fun, and it only takes about five minutes of your time. Feel free to try it out.&lt;br /&gt;&lt;br /&gt;Here's my brute's URL if you wanna make your own brute to fight her. Note, though, that my brute (Shmooky Booky) is at level ten and will most likely mop up the floor with you if you're just starting out.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://shmookybooky.mybrute.com/"&gt;http://shmookybooky.mybrute.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Be sure to give your brute a password so you can log in later and fight more. If you have a brute and you want to join clan gamedev, here's the URL to join up.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mybrute.com/team/15319"&gt;http://mybrute.com/team/15319&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The clan will hold up to 50 members. I think I have to approve the members, but I don't plan to be picky about it. Just join up and say howdy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-7899090453332336059?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/7899090453332336059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=7899090453332336059' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/7899090453332336059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/7899090453332336059'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/05/get-yer-brute-on.html' title='Get yer brute on'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-892301705281897664</id><published>2009-05-05T09:51:00.009-06:00</published><updated>2009-05-05T11:27:58.383-06:00</updated><title type='text'>How to write a losing pitch for your indie game project</title><content type='html'>First off, sorry that thecodezone.com is down. My hosting provider is working to bring things back up, but things are going much more slowly than I thought they would.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now then, on to the title. About six weeks ago I got pestered by one of the Mochiads people regarding their &lt;a href="http://braveandtheboldcastingcall.mochiads.com/"&gt;"make a batman game" contest&lt;/a&gt;. I saw the contest but hadn't pitched a game design because I had a couple of questions regarding licensing of the winning entries. Once they allayed my fears that they I wouldn't be selling off any IP or rights to my own stuff, I pitched a game that'd been rattling around in my brainpan for a little while.&lt;br /&gt;&lt;br /&gt;And it was a puzzle game. With explosions. But I thought it had a little more to it than that. I gave a hard look to Meltdown and Pop Pies with an eye towards what makes those games more popular than my other puzzles. And in both cases, it came down to that lizard-brain gratification you get from getting something REALLY right. In Pop Pies, it's that really bigass explosion of 30 or 40 pies.&lt;br /&gt;&lt;blockquote&gt;And incidentially that's one of the reasons I made the explosions sequential things in Pop Pies 2. If you make a really big explosion in PP2, not only do you see a lot more sploding, it goes on for a lot longer. Some people don't like the longer explosions, but most prefer the giant gratifying RATTA TAT TAT you get from blowing up half the board in one shot.&lt;/blockquote&gt;And it's similar in Meltdown. The gratifying part of Meltdown is setting up the board just right so that when you touch off one big atom, it sets off that big chain reaction that blows up the whole board. When the smoke clears, the board is empty and you're well ahead in points and particles. Happy happy!&lt;br /&gt;&lt;br /&gt;It's what Jesse Schell referred to as "the ice cream" in one of his talks at GDC Austin. When he was designing games for the cool-but-didn't-catch-on &lt;a href="http://en.wikipedia.org/wiki/DisneyQuest"&gt;Disney Quest&lt;/a&gt; interactive theme parks, one of the design decisions was "how much ice cream do we give 'em?" when playing a game. When you're playing Super Pirate Battle, how far should a newbie player be able to get?&lt;br /&gt;&lt;br /&gt;And that's a valid question, especially with the Disney Quest video games because the majority of people playing the games will be playing 'em for the first and possibly only time, contrasted with the Mortal Kombat machine at your local pizza place that's available at a thousand other locations and can be played dozens of times.&lt;br /&gt;&lt;br /&gt;Should novice players be able to get all the way to the level-boss?&lt;br /&gt;&lt;br /&gt;The decision from above came down as "Give 'em the ice cream and the sprinkles and the whipped cream!", translated as "give the first-time players the broadest experience we can give 'em". This decision did make the games awfully gratifying (as I can attest when myself and Shelly and two other friends destroyed the evil "boss" pirate ship in a room-size four-player pirate game), but it hurt replayability pretty badly. Unless I bring along some new players next time I visit, I'm not going to be waiting in line to play the pirate game again.&lt;br /&gt;&lt;br /&gt;Back to the lizard-brain gratification or the ice cream or whatever. There's an event where you just know you did everything right and the game rewards you for it. And Pop Pies and Meltdown have that in the form of a big noisy "SHKLABOOM" that's all the validation you need that you're a master of the game.&lt;br /&gt;&lt;br /&gt;And I'd been toying with making more of that for Meltdown. Rather than a random Meltdown where you sometimes blow up the whole danged board and you sometimes limp to a half-blowed-up board, what about a puzzle-based Meltdown where you HAVE to wipe out the whole board with one shot? Similar, but not exact, stuff had been done before. And this Batman thing was happening. So I mocked up some screenshots with the Batman-themed clipart and backgrounds they provided and pitched it to the Batman overloads.&lt;br /&gt;&lt;br /&gt;And it didn't win.&lt;br /&gt;&lt;br /&gt;Not exactly sure why. Maybe the concept was too deep. Maybe the pitch was too thin. Maybe I misjudged the kitschy retro-feel that they were going after with the cartoon. Maybe explosions just aren't done in games anymore (as I can attest from a licensed "Marvin The Martian" cellphone game I wrote a buncha years ago where we BEGGED to make the objective "Destroy the Earth", but were reduced to "Fix your communications dish"). Maybe puzzles just aren't "twitchy" enough for the Batman cartoon audience.&lt;br /&gt;&lt;br /&gt;Feel free to post your own theories in the comments.&lt;br /&gt;&lt;br /&gt;I might still end up making it, sans-Batman of course. Only problem I see is that progressive puzzle games don't lend themselves well to scoring. And scoring is the basis for challenging. And challenges are the wind beneath the wings of a million facebook-friends playing your game. And that's where the money is. Some of my canned puzzle-games like &lt;a href="http://www.thecodezone.com/games/ducktiles.php"&gt;Duck Tiles&lt;/a&gt; just don't get many facebook eyeballs because there's not a good challenge motive. "Hey I just beat level 14 in Duck Tiles" just doesn't have the same one-upmanship potential as "I just scored 12,000 in Pop Pies 2, thus proving that I am superior to you".&lt;br /&gt;&lt;br /&gt;Here's the design. Not sure how seriously the licensing overlords are gonna take that whole "entries become the property of. . ." bit. It didn't win, so I can't much see the harm in it.&lt;br /&gt;&lt;br /&gt;Also that little "portfolio" bit at the end was a bit of "convince us that you can actually make the game that you envision". The winning games are gonna make up the backbone of a Batman-themed game portal, so they did want actual working games at the end.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Batman's Warehouse Wallop&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;In a sequel-of-sorts to my chain-reaction puzzle game "Meltdown"&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mochiads.com/games/meltdown/"&gt;http://www.mochiads.com/games/meltdown/&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;Batman must destroy the enemy warehouses/labs/hideouts by placing assets (most, but not all of which are explosive) on the board so that they'll all be destroyed with one shot from the batarang.&lt;br /&gt;&lt;br /&gt;To muck up the works, some of your friends (or innocent bystanders or lab techs) are trapped in the warehouse/lab/hideout, so you have to place the assets carefully so as not to hurt them. If you fail to achieve your objective of destroying the destroy-ables without injuring the bystanders, you'll have to start the level over. And you have a finite number of tries before the game is over.&lt;br /&gt;&lt;br /&gt;Unlike the original Meltdown, the puzzles will not be random but will be human-designed and will get progressively more difficult. In addition to the game itself, there will be a simple level editor (reachable from the main menu) so people can try their hand at building their own challenges.&lt;br /&gt;&lt;br /&gt;Also unlike Meltdown, you won't be wiping out a board with several shots. You need to place items and shots cleverly so that you can clear the board with a single wallop from the batarang.&lt;br /&gt;&lt;br /&gt;Finally, the assets will change throughout the game. Starting with simple barrels that explode and send shrapnel in six directions, you'll encounter shields that toggle on and off when hit, tanks of poisonous gas that must be avoided at all costs, and the like.&lt;br /&gt;&lt;br /&gt;I envision about 20-25 hand-built levels in the finished game, and they'll grow in difficulty from quite simple at first to nigh-impossible near the end.&lt;br /&gt;&lt;br /&gt;Also, new assets will appear as levels grow more difficult. For example, tanks of gas might not appear until level four. Toggle-shields in level nine, etc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here's the start of a fairly easy level. The items currently on the board are fixed and immovable. The assets in the corner can be dragged to the board to get it in a form so that you can achieve your objective with one shot.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Q4QvY8alCX0/SgBt26J60WI/AAAAAAAAAF4/uEBLLjU4EQo/s1600-h/batmanmockup1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 240px;" src="http://4.bp.blogspot.com/_Q4QvY8alCX0/SgBt26J60WI/AAAAAAAAAF4/uEBLLjU4EQo/s400/batmanmockup1.png" alt="" id="BLOGGER_PHOTO_ID_5332382748897890658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now I have the barrels placed, along with the rock to protect Blue Beetle from injury. I fling Batman's batarang at a barrel to explode it, sending flaming barrel-bits in six directions to destroy the other barrels.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Q4QvY8alCX0/SgBuA2hUwtI/AAAAAAAAAGA/13O0EiAx1YA/s1600-h/batmanmockup2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 240px;" src="http://2.bp.blogspot.com/_Q4QvY8alCX0/SgBuA2hUwtI/AAAAAAAAAGA/13O0EiAx1YA/s400/batmanmockup2.png" alt="" id="BLOGGER_PHOTO_ID_5332382919721009874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Finally, here's a shot of the completed level. The barrels are reduced to smoke. Blue Beetle is safe behind the rock. Your objectives are accomplished, and you can move on to the next level!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Q4QvY8alCX0/SgBuJmCeZvI/AAAAAAAAAGI/0og8E2WnXzU/s1600-h/batmanmockup3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 240px;" src="http://3.bp.blogspot.com/_Q4QvY8alCX0/SgBuJmCeZvI/AAAAAAAAAGI/0og8E2WnXzU/s400/batmanmockup3.png" alt="" id="BLOGGER_PHOTO_ID_5332383069915473650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My portfolio of currently-available Flash games is at:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.thecodezone.com/playnshare.php"&gt;http://www.thecodezone.com/playnshare.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In addition, I have literally dozens of pre-Flash puzzle, arcade, and card games that I've written since the early 90's.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.thecodezone.com/games/retro.php"&gt;http://www.thecodezone.com/games/retro.php&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-892301705281897664?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/892301705281897664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=892301705281897664' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/892301705281897664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/892301705281897664'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/05/how-to-write-pitch-that-doesnt-get.html' title='How to write a losing pitch for your indie game project'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Q4QvY8alCX0/SgBt26J60WI/AAAAAAAAAF4/uEBLLjU4EQo/s72-c/batmanmockup1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-5202994741342578395</id><published>2009-05-01T08:50:00.003-06:00</published><updated>2009-05-01T09:54:52.182-06:00</updated><title type='text'></title><content type='html'>Several things today, as always. I intended to write this yesterday, but I ended up at a City of Denton land development meeting (it's a long story), so I write today.&lt;br /&gt;&lt;br /&gt;First off, I won the Silly Rage contest! It's a minor win, but a win just the same. For the uninitiated (and you are most likely uninitiated, as it was just invented a couple of days ago), "Silly Rage" is a budding twitter-meme (tweme?) in which you rage against something completely pointless. This was coined by Bill Corbett (of MST3K and RiffTrax and Film Crew and the script to that unfortunate "Meet Dave" movie last year). Basically he instructed us from &lt;a href="http://twitter.com/billcorbett"&gt;his twitter feed &lt;/a&gt;for us to rage against something pointless in 140 characters and tag it with #sillyrage. The top rage would win a fabulous downloadable prize worth $3.99. My winning entry was the following. . .&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;em&gt;johnhattan&lt;/em&gt; didn't realize that a horse was a horse. Thanks for rubbing&lt;br /&gt;it in with "of course of course", condescending TV songwriter pricks.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;(If you don't get the joke, then you're too young. Go back to watching Dora the Explorer.)&lt;br /&gt;&lt;br /&gt;I was actually co-winner. The prize was also given to another user for&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span id="msgtxt1654550813" class="msgtxt en"&gt;"..." Ellipses my ass. I see you, periods. Don't think you can be&lt;br /&gt;a whole different punctuation just by traveling in groups&lt;/span&gt;.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Yes, it's a minor win. A very minor win. But whenever I get my funny validated it is a validation of my own fragile psyche. This win was tempered by two of my cousins saying they don't get my jokes. I can definitely see why, given the dry layers of subtlety in my humor.&lt;br /&gt;&lt;br /&gt;Oh wait. It was a joke about freakin' "Mister Ed". Never mind.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Okay, that was pointless. On to actual work. Work on my next game, a Flash-based followup to my endlessly frustrating "Head On Collision" game is doing well. At first I had a hardcoded "maze" like the original one here.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.thecodezone.com/games/images/retro/headon.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 426px; height: 462px;" src="http://www.thecodezone.com/games/images/retro/headon.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The game, as I mentioned, is quite frustrating. You're the gray car going around the maze counterclockwise. The red car is going clockwise and is trying to kill you. You can only change lanes in the empty areas. You must collect up all the dots.&lt;br /&gt;&lt;br /&gt;The AI required in this game is dirt-simple and amounts to "get in the same lane as the player". And it's so effective that the game's difficult even if the enemy car moves randomly (especially in higher levels where there are two enemy cars). And, like the 70's era arcade original, your chief weapon against the enemy is that you can accelerate while they're locked into a single speed, so with a little planning, you can usually force your enemy to choose a track before you do.&lt;br /&gt;&lt;br /&gt;But one thing that'd bugged me about the game was that there were a couple of "deluxe" editions with non-square "mazes". &lt;a href="http://www.youtube.com/watch?v=Qnbs4EVto9E"&gt;Here&lt;/a&gt; is a fairly cheesy video of just this.&lt;br /&gt;&lt;br /&gt;So I decided that this version would not only have a non-hardcoded maze, but the mazes could change from level to level. So I dragged out my &lt;a href="http://www.tilemap.co.uk/mappy.php"&gt;free level-editor of choice&lt;/a&gt;, made some tiles, and drew up some levels. It took a few iterations of tiles, eventually coming out with lane-numbered tiles so the enemies could determine what lane they were in. I needed this because it's fairly trivial to figure out your lane in the above square maze, but this one is a mite more involved.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Q4QvY8alCX0/SfsTLkGTVRI/AAAAAAAAAE0/8S6O5iLTwUw/s1600-h/mappy1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 263px;" src="http://3.bp.blogspot.com/_Q4QvY8alCX0/SfsTLkGTVRI/AAAAAAAAAE0/8S6O5iLTwUw/s400/mappy1.png" alt="" id="BLOGGER_PHOTO_ID_5330875673312711954" border="0" /&gt;&lt;/a&gt;Thus-far it's working out fairly well. I'm still not sure how I'm going to handle the main menu and the progression and such. Is the maze above going to be level three, or will you choose this maze from the main menu and get to play it to its conclusion (you beat the maze or you run out of cars) and then you'll get a score and are returned to the main menu.&lt;br /&gt;&lt;br /&gt;One other thing I found interesting about the above video, a little after 2:10 in, the car reverses directions and is then going the same direction around the maze as one of the enemies. The arcade game (at least this version) played pretty fast and loose with direction. In my maze above there's still not a way to un-knot yourself and end up going the same direction as the enemy. I don't see why that'd be a problem with collisions or such, so I might give it a try.&lt;br /&gt;&lt;br /&gt;Also in my old version, the enemy cars were smart enough to never end up in the same lane together so I didn't have to worry about what happened if enemies collided. In the gordian knot mazes I can make now, that'll be nigh impossible to work around, so I'll have some kind of event if enemy cars collide. Maybe temporarily disable one.&lt;br /&gt;&lt;br /&gt;But I digress. One thing I learned from Pop Pies and Pop Pies 2 is that brevity is one of the keys to replayability and the "viral" nature of Flash games. Games that you can play for an arbitrarily long time don't do as well as games that you play for three minutes and then finish and get on with your life (or press the "play again" button). While games like my recently-released Think Tank could conceivably be played for an arbitrary time, in reality it gets so difficult around level four or five that you'll be toast.&lt;br /&gt;&lt;br /&gt;But this is an arcade game and not a puzzle game, albeit it does have strategic elements. People expect to collect all the dots and then move to the next level. They might resent playing several times until they manage to collect every dot just to be presented with a "good job collecting all them dots, your score is 5211 points. Try to collect 'em all faster next time."&lt;br /&gt;&lt;br /&gt;Also there's the "diamond versus ball of mud" element. The original "square" version of the game is taken down to its basest elements. I could certainly add little bonus gizmos that immobilize the enemies or collect every dot within a hundred pixels or stuff like that. From Pop Pies 2 I learned that adding mud to a diamond isn't really much of a problem. I added several little random helper bonuses to it, and it made the game more popular. While that does mean that there's less of a strategic element to the game (honestly, the best scores are as much due to luck as skill), people don't seem to mind so much the luck element as long as they get that lizard-brain gratification that comes from blowing up a truly colossal chain of pies.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And I did realize that "diamond versus ball of mud" is an obscure term, so I'll define. It was originally &lt;a href="http://en.wikipedia.org/wiki/Big_ball_of_mud"&gt;used to describe programming languages&lt;/a&gt;, but I find that it works better when defining small-scale games. A diamond is a game that is small and perfect. All of the elements fit together. You cannot remove anything from a diamond. And if you add something to a diamond, you don't improve it.&lt;br /&gt;&lt;br /&gt;A ball of mud is a game that's defined more by what is added to it than its "core". A perfect example of a ball of mud is SimCity. No matter what you add to the game or remove from it, it's still SimCity. Yes, there's a "core" game somewhere, but it's useless without some amount of mud.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And speaking of lizard-brain gratification and winning things, later I'll post some lizard-brain gratification that lost something. There's enough blog here for now, so I'll talk about it in a day or two.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-5202994741342578395?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/5202994741342578395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=5202994741342578395' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5202994741342578395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5202994741342578395'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/05/several-things-today-as-always.html' title=''/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Q4QvY8alCX0/SfsTLkGTVRI/AAAAAAAAAE0/8S6O5iLTwUw/s72-c/mappy1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-3364008220444375658</id><published>2009-04-21T11:33:00.002-06:00</published><updated>2009-04-21T11:43:21.839-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='siteannouncements'/><title type='text'>Emailed high score reports update</title><content type='html'>I've been having a lot of problems lately with the emailed score reports. And the problems, for once, aren't really my fault. Fact is, if you have a bot that sends people emails, you'll be accused of being a spammer. This is despite the fact that:&lt;br /&gt;&lt;br /&gt;1. There are no ads in the emailed reports (not even ads for my own products).&lt;br /&gt;&lt;br /&gt;2. The system is entirely opt-in.&lt;br /&gt;&lt;br /&gt;3. The default is to NOT receive emails, and you have to check the "send me daily reports" box to get reports.&lt;br /&gt;&lt;br /&gt;Still, I get complaints from people that I'm spamming them, and my IP address seems to come and go on the "this is a spammer domain" lists.&lt;br /&gt;&lt;br /&gt;I long-considered removing the emailed reports entirely with the motivation that they're more trouble than they're worth. But I'm going with a bit of a simpler solution for now. . .&lt;br /&gt;&lt;br /&gt;I cleaned house.&lt;br /&gt;&lt;br /&gt;That's right. All 338 of you who previously received emailed reports have had your daily emails shut off.  If you want to continue to receive the daily emails, then you can head over to the &lt;a href="http://www.thecodezone.com/accountman.php"&gt;account manager&lt;/a&gt;, click the "Edit Existing Account" tab, and turn your emails back on.&lt;br /&gt;&lt;br /&gt;Given my number of daily players, I figure the large majority of those 338 emails were getting automatically filtered into trash cans anyway. This way the few of you who still want emails can get 'em, and I won't have to tangle with the "you're a spammer" crowd for a couple more years.&lt;br /&gt;&lt;br /&gt;I hope.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-3364008220444375658?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/3364008220444375658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=3364008220444375658' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/3364008220444375658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/3364008220444375658'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/04/emailed-high-score-reports-update.html' title='Emailed high score reports update'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-5394568737812041350</id><published>2009-04-14T09:41:00.001-06:00</published><updated>2009-04-14T09:41:38.956-06:00</updated><title type='text'>Haiku Contest Results!</title><content type='html'>Sorry about the delay. I wisely scheduled my book-contest smack-dab in the middle of "Adobe Week", in which I'm writing and/or posting a dozen reviews of Adobe CS4 or related products to Gamedev.&lt;br /&gt;&lt;br /&gt;I'm late in announcing, but I'm done now. Here were my judging criteria. . .&lt;br /&gt;&lt;br /&gt;It must have a real 5-7-5 syllable count. If you don't know what a syllable is, your loss. I had to dump some good ones because you monkeys don't know how to count.&lt;br /&gt;&lt;br /&gt;As a purely rhythmic point, it must have a tangible pause at the end of each line. An actual punctuation mark isn't necessary, but there must be some kind of break in the rhythm. If you do something like this. . .&lt;br /&gt;&lt;br /&gt;&lt;center&gt;I want the orange&lt;br /&gt;book on my bookshelf right now.&lt;br /&gt;Send it to me now.&lt;/center&gt;&lt;br /&gt;That doesn't really count because the second line is just an uninterrupted continuation of the first line, thus making it a 12-5 haiku rather than a 5-7-5. Haiku is all about perfection in flow and meter, not just filling a syllable count.&lt;br /&gt;&lt;br /&gt;Some of the syllables were a judgement call. Can "business" be pronounced with three syllables? Can "Australia" be pronounced with four? I tended to go with my American-Illinois-Iowa-Arkansas-Texas mumble as the final judge.&lt;br /&gt;&lt;br /&gt;"Oranges" has three syllables, not two. My contest, my pronunciation.&lt;br /&gt;&lt;br /&gt;Cleverness gets my attention.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All that being said, here are my winners, culled from my blog on Gamedev and the mirror of the blog on blogspot.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On the "cleverness gets my attention" front, I'm giving the blue book to this bit of coded haiku from gamedev user Ezbez. It would've been cooler if it actually compiled, but I'll keep that in mind for a later haiku contest.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;while IAmWaiting():&lt;br /&gt;for blueBook in myMailBox:&lt;br /&gt;print "Yippee!!"; exit()&lt;/center&gt;&lt;br /&gt;For the orange winner, I have this lilting piece of weepiness from blogger user Michael. Extra literacy-points for the rhyme and the correct spelling of "teem".&lt;br /&gt;&lt;br /&gt;&lt;center&gt;In all of our dreams;&lt;br /&gt;Visions of orange books teem;&lt;br /&gt;All are deserving.&lt;/center&gt;&lt;br /&gt;Hope you enjoyed the contest. I'm sure there'll be more books to give away, and I'll find new and interesting ways to get rid of 'em. Thanks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-5394568737812041350?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/5394568737812041350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=5394568737812041350' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5394568737812041350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5394568737812041350'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/04/haiku-contest-results.html' title='Haiku Contest Results!'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-3178818450454201675</id><published>2009-04-07T10:58:00.000-06:00</published><updated>2009-04-07T10:59:49.057-06:00</updated><title type='text'>Free book giveaway number two</title><content type='html'>Yeah, that's right. It's time for another book giveaway.&lt;br /&gt;&lt;br /&gt;This time I'm making it simple. I'm giving away a copy of &lt;a href="http://www.amazon.com/Beginning-Game-Programming-GameDev-net-Collection/dp/159863805X"&gt;&lt;i&gt;Beginning Game Programming: A Gamedev.net Collection&lt;/i&gt;&lt;/a&gt; (the orange book) AND &lt;a href="http://www.amazon.com/Business-Production-GameDev-net-Drew-Sikora/dp/1598638092"&gt;&lt;i&gt;Business and Production: A Gamedev.net Collection&lt;/i&gt;&lt;/a&gt; (the blue book). There'll be two winners, one blue and one orange.&lt;br /&gt;&lt;br /&gt;This contest is inspired by my lack of heartening that our books have been burning up the sales charts for a month now, and they've thus-far garnered exactly ZERO Amazon reviews. I've gotten some very positive emailed reviews from the book's chapter-contributors, both on the quality of their own material as well as the selection and editing of material that Drew and I did for the rest of the book.&lt;br /&gt;&lt;br /&gt;But without reviews, you don't get eyeballs.&lt;br /&gt;&lt;br /&gt;And the upshot of that is that the books aren't achieving the great heights of "Joe The Plumber's" ghostwritten masterpiece &lt;i&gt;I Have Nothing To Say, So Please Point Cameras At Me&lt;/i&gt;. And I know the gamedev books deserve a better fate than that, so I'm handing out two copies to people willing to abide by the following two rules. . .&lt;br /&gt;&lt;blockquote&gt;1. Please have a US address. I know this upsets you non-US readers, but it costs $2 to send a book in the US. Outside the US, it generally costs the price of the book itself, I have to fill out a customs form at the post office, and it can take weeks to arrive.&lt;br /&gt;&lt;br /&gt;2. You agree to read and review the book on Amazon. I'm not requiring you to give it five stars because that would be unethical. Just remember who your buddy is :)&lt;/blockquote&gt;If you fit the following two prerequisites, just post a haiku in the comments (on gamedev or blogspot). The haiku should contain the word "blue" or "orange" so I know which book you're trying to win. If I like your haiku best, I'll send the book to you.&lt;br /&gt;&lt;br /&gt;If you don't remember haiku, it's a three line poem consisting of five, seven, and five syllables, like the following. . .&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;b&gt;I like to write games,&lt;br /&gt;while juggling oranges.&lt;br /&gt;Send me a danged book.&lt;br /&gt;&lt;/b&gt;&lt;/center&gt;&lt;br /&gt;Something like this would be an attempt to get the orange book, as it has the word "orange" in the haiku. Get it?&lt;br /&gt;&lt;br /&gt;So if you're in the US, you wanna review a book for Amazon, and you know what a "syllable" is, post a haiku in the comments. One entry per person please.&lt;br /&gt;&lt;br /&gt;And keep an eye on the comments. I suspect more people will be voting orange than blue, so blue entries will have a better chance. Hint hint.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'll pick a winner on Friday sometime after Drew's gamedev blog roundup. So now get writing!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(disclaimer: This contest isn't sponsored by the publisher but by me personally. That should be obvious, but you never know.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-3178818450454201675?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/3178818450454201675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=3178818450454201675' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/3178818450454201675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/3178818450454201675'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/04/free-book-giveaway-number-two.html' title='Free book giveaway number two'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-2747733359066908233</id><published>2009-03-27T08:18:00.001-06:00</published><updated>2009-03-27T08:18:33.798-06:00</updated><title type='text'>Keeping your money safe</title><content type='html'>I had a mild vapor-lock moment this morning reading &lt;a href="http://www.mymoneyblog.com/archives/2009/03/sec-says-millennium-bank-was-indeed-a-ponzi-scheme.html"&gt;one of my favorite "get rich slowly" sites&lt;/a&gt;. Turns out one of those convenient "attractive CD rate internet account" websites was an offshore ponzi scheme funneling cash to some crooks in California.&lt;br /&gt;&lt;br /&gt;And it didn't scare me because I had money in it. It scared me because I have money in internet savings accounts. I have a couple of internet savings accounts holding my money and earning a little bit of interest (see my first-of-the-year entry for that) while I save up for things like Maggie's school, HSA, etc. Looking at the &lt;a href="http://www.mlnbank.com/"&gt;fake bank's website&lt;/a&gt;, it doesn't look much different from any other. And its CD rates are attractive at 5% and don't look like that ridiculous "50% return in six weeks" rate that Charles Ponzi quoted or even the "12% in a year" rate that allowed Bernie "is it too much to ask for you to fling yourself out of a window?" Madoff to surf the expanding economy for decades.&lt;br /&gt;&lt;br /&gt;A 5% CD fits right into the "very good rate" without falling into the "too good to be true" territory that'd set off the red flags in my head. And if I had $10k that I could park somewhere for a year or two, I might've taken advantage of it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So I have an action item for you today. If you have a savings account or a CD or any other kind of "safe" investment(s), send yourself over to the &lt;a href="http://www2.fdic.gov/idasp/main_bankfind.asp"&gt;FDIC bank finder&lt;/a&gt; and make sure your bank is listed and has a current certificate. That way if your bank ever does an &lt;a href="http://articles.latimes.com/2008/jul/12/business/fi-indymac12"&gt;IndyMac&lt;/a&gt;, you'll be able to do what the IndyMac customers did, which was to head down to your bank and pick up your money.&lt;br /&gt;&lt;br /&gt;The people who have CD's in that Millennium Bank aren't gonna have that luxury.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And, for the record, my &lt;a href="https://www.dollarsavingsdirect.com/"&gt;internet savings account-of-choice&lt;/a&gt; is all insured. Actually, according to the FDIC it's been insured since 1934, which is the year the FDIC was chartered.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-2747733359066908233?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/2747733359066908233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=2747733359066908233' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/2747733359066908233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/2747733359066908233'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/03/keeping-your-money-safe.html' title='Keeping your money safe'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-8384715958135681741</id><published>2009-03-26T09:12:00.001-06:00</published><updated>2009-03-26T09:13:52.480-06:00</updated><title type='text'>Many topics, as per the norm</title><content type='html'>Seems like I make one post per week that consists of multiple topics that I can't cram into a 140-character Twitter. So I'll keep following that meme.&lt;br /&gt;&lt;br /&gt;I've gotten no meaningful sponsorship offers from anyone for the new Flash Think Tank, so I'm just going to go with plan-A, which is to pull the site-lock and start uploading the thing to as many game portals as I can find and soak in a few bucks from ad-views. Seems like everyone running a game portal or a Flash promotion site is currently at GDC, so I don't think this'll get the quick traction that Pop Pies 2 got.&lt;br /&gt;&lt;br /&gt;Not that I expected that anyway. Pop Pies has its own friggin' fan group on Facebook (and I didn't start it), so it was a foregone conclusion that PP2 was gonna get some eyeballs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I got a request to submit a proposal for a Batman-themed game for the &lt;a href="http://braveandtheboldcastingcall.mochiads.com/"&gt;Mochi-WB contest&lt;/a&gt;. After getting a couple of my fears allayed by the organizers (i.e. am I gonna be making you guys a game for $4k that could potentially be worth more elsewhere), I put together a proposal for a game. Apparently they'll be contacting the winning entries sometime next week, so I'll find out then if I'm one of the people chosen.&lt;br /&gt;&lt;br /&gt;I won't give away the whole plot, but my submission was a puzzle game with explosions. I've only made about six of those now. I think I'm getting into a rut :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We're getting all self-sufficient over here at the compound. I planted four rows of onions that are happy as can be as well as some mint and rosemary that I'm hoping will take over a corner of the yard and choke out the other weeds. Mint is a weed itself, but it's a weed that smells nice and looks good floating on the top of your drink, so why not.&lt;br /&gt;&lt;br /&gt;Shelly's planted a half-dozen other veggies with varying degrees of success. She started from seeds, so she's not getting the "instant gratification" I got from planting sprouts and watching 'em perk right up.&lt;br /&gt;&lt;br /&gt;We did discover that the local herbivores don't like to wait for the peas to grow up before chowing down on 'em, so we might continue to grow them in the greenhouse.&lt;br /&gt;&lt;br /&gt;We also started making some wine and cheese as a companion for the beer. Making mozzarella was easy and cheap (several pizzas worth of cheese from a $2 gallon of whole milk) and is awesome on pizza. The wine has been bubbling away for a week now. While I'm all for guzzling the whole batch right now, Shelly's on some weird kick about how you gotta let a wine age before you can quaff it. Dunno where she got that silly idea.&lt;br /&gt;&lt;br /&gt;We're also about to bottle up another 50-odd bottles of homebrew beer. Let the depression hit. We got cheap brewskis!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Oh, and it wouldn't be a visit to the Bargain Basement Blog without a cheapass pennypinching tip. So here's the one for today. . .&lt;br /&gt;&lt;br /&gt;Starbucks is my favorite respite for "Low Priced Luxury". It's a place where you can get something decadent that's not too bad for your health along with some wifi and/or a newspaper, all for under four bucks. It ain't a Lexus, but I don't like Lexus's anyway so I'll treat myself once a week to some foo-foo-coffee.&lt;br /&gt;&lt;br /&gt;In the past, I'd order myself a latte, which is a shot or two (or three) of espresso mixed with steamy milk. And it's not cheap. It's around $3.75 for the large. Mind you, a large latte is a pretty filling breakfast with enough caffeine to make you break out in a sweat, so it's not too outrageous.&lt;br /&gt;&lt;br /&gt;A little under a year ago, Starbucks introduced their "Pike's Place Blend" coffee as well as the "Misto", which is basically a latte made with brewed Pike's Place instead of espresso.&lt;br /&gt;&lt;br /&gt;And IMHO it's 95% as good as their latte and a dollar cheaper.&lt;br /&gt;&lt;br /&gt;My only warning is that you have to order these at actual standalone Starbucks stores. The Starbucks' that are built into your local grocery store or Target don't have the Pike's Place coffee on tap, and a Misto made with the old "house blend" isn't nearly as good. Not sure what it is, but the difference is noticeable.&lt;br /&gt;&lt;br /&gt;Also check back &lt;a href="http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=254106&amp;amp;reply_id=3313135"&gt;here&lt;/a&gt; to navigate Starbucks' "free wifi" deal. As an added bonus, if you use a registered gift-card to buy your coffee, they won't charge you for a squirt of coffee flavoring (vanilla, hazelnut, etc).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And finally. Just so I can prove that this is indeed a programming blog. Here's a handy piece of code. Flash has had the ability to tint and color movieclip object forever, but the way it was done (at least in AS2) was always pretty hairy. It worked, but it requires about three steps to do the seemingly-trivial operation. Here's a nice little function that'll do the whole mess in one function call.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;MovieClip.prototype.setTint = function (r, g, b, amount)&lt;br /&gt;{&lt;br /&gt;  var colorizer = new Color(this)&lt;br /&gt;  var trans = new Object()&lt;br /&gt;  trans.ra = trans.ga = trans.ba = (100 - amount)&lt;br /&gt;  var ratio = amount / 100&lt;br /&gt;  trans.rb = r * ratio&lt;br /&gt;  trans.gb = g * ratio&lt;br /&gt;  trans.bb = b * ratio&lt;br /&gt;  colorizer.setTransform(trans)&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;It extends MovieClip, so if you have an existing movieclip, you can just paste this code in and colorize your objects like so. . .&lt;br /&gt;&lt;br /&gt;myMovieClip.setTint(255, 0, 0, 50)  // turn this object 50% red&lt;br /&gt;&lt;br /&gt;So if you're making a Pac Man game and you want four colors of ghosts, you can just make one ghost MovieClip and tint each instance rather than some more difficult solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-8384715958135681741?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/8384715958135681741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=8384715958135681741' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8384715958135681741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8384715958135681741'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/03/many-topics-as-per-norm.html' title='Many topics, as per the norm'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-4427855619350359803</id><published>2009-03-13T08:05:00.001-06:00</published><updated>2009-03-13T08:05:53.185-06:00</updated><title type='text'>Me the cynic</title><content type='html'>I got to see Jim Cramer on the Daily Show yesterday (google for it if you haven't heard of it), and I was reminded of that old interview that Dateline (I think it was) did with evangelist-crook Benny Hinn. They spent about 20 minutes rubbing Hinn's nose in his own ridiculous antics and his refusal to be transparent about his finances. Hinn sat quietly, then apologized for everything. He said his ministry would become fiscally accountable, and he'd tone down the nonsense that aggrandized himself to the detriment of his religion.&lt;br /&gt;&lt;br /&gt;Then Hinn. . .did absolutely nothing. He went right back to his old shtick, confident that the public's collective-ADD would prevent them from being able to follow up on his promises.&lt;br /&gt;&lt;br /&gt;And I felt that way with Cramer on the Daily Show. Cramer walked in the studio wearing his rolled up sleeve shirt (which I'll bet dollars to donuts are now sewn in place). He was chastened, promised to fix every flaw that Stewart presented, and then will go right back to ringing bells and pumping-and-dumping stocks on his show while pretending that he's doing it for anyone's benefit but his own.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On an entirely different note, I am amused by the new iPod shuffle and its infinite smallness and Apple's newfound need to eliminate buttons. And I finally figured out what it reminds me of. If you watched the last couple seasons of MST3K, you'll remember the Observers. . .&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://images2.wikia.nocookie.net/mst3k/images/thumb/e/e7/Observers.jpg/250px-Observers.jpg" /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;They were beings that were humanoid but were evolved billions of years beyond us. We were as amoebas to them, as they loved to say. They had, in fact, evolved themselves to the point where they no longer needed bodies and could just exist as disembodied self-sufficient brains.&lt;br /&gt;&lt;br /&gt;And then they went even further, constructing host bodies to carry their disembodied brains around.&lt;br /&gt;&lt;br /&gt;And so, despite having intellects that dwarf ours (and being more than happy to remind us of that), they didn't realize that their system of carrying their brains around in dishes was way more inconvenient than keeping their brains in their heads.&lt;br /&gt;&lt;br /&gt;And that's the new iPod shuffle. It's evolved beyond the need for buttons, but for the sake of interacting with unterbeings such as ourselves, it'll keep around one or two buttons in an inconvenient place.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And Windows Mobile has a new slogan. "Yeah, our browser is kinda sucky, but at least it's got Flash."&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Shelly made me a grumpasaurus.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://2.bp.blogspot.com/_iPvKR7lJ9Ec/SbgIFcY-qpI/AAAAAAAACSk/Sl4lUThfDac/s400/102_0538.JPG" /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;His infinite ennui gives me comfort in uncomfortable times.&lt;br /&gt;&lt;br /&gt;Then Maggie stole it.&lt;br /&gt;&lt;br /&gt;Also Shelly took my ipod because there's somesuch piece of software that only it'll run. I now have the Sansa again, which doesn't bother me much. I much prefer Rockbox (google for it) to anything else, because it does everything right. It doesn't play games too well, but I got a laptop that plays games really well if I'm on the road and wanna play games.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Should I write another book? I could probably write the "game programming on 25 cents a day travel guide" that I've been threatening, as I have more experience in that than anyone, but computer book sales are flat or declining.&lt;br /&gt;&lt;br /&gt;Get it published? Vanity-press it and make beer money off it? Slap it up on the web with a pile of adsense ads? Thoughts?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-4427855619350359803?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/4427855619350359803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=4427855619350359803' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/4427855619350359803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/4427855619350359803'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/03/me-cynic.html' title='Me the cynic'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_iPvKR7lJ9Ec/SbgIFcY-qpI/AAAAAAAACSk/Sl4lUThfDac/s72-c/102_0538.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-3039860382444141678</id><published>2009-03-12T07:35:00.000-06:00</published><updated>2009-03-12T07:37:10.402-06:00</updated><title type='text'>Shenanigans and goings on</title><content type='html'>Oh so many things. The life of a renaissance man is never uneventful.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Item One&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;First off, I posted a very quick "how to fix your car's mats in 15 minutes for six bucks" tutorial &lt;a href="http://thecodezone.blogspot.com/2009/03/fix-your-cars-mats-quickly-and-cheaply.html"&gt;here&lt;/a&gt;. MAKE magazine has a "mend it march" promotion, and I thought I'd contribute.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Item Two&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Next, I got two more &lt;a href="http://www.amazon.com/exec/obidos/ASIN/159863805X/ref=nosim/gamedev"&gt;orange books&lt;/a&gt; which means I'll have another giveaway. I'll likely give away one right away and keep the extra slack copy in the hopes that I'll eventually have a full set of four to give away. Given that I didn't contribute anything to the &lt;a href="http://www.amazon.com/exec/obidos/ASIN/1598638084/ref=nosim/gamedev"&gt;black book&lt;/a&gt; content or editorial-wise, I'm not holding out hope to receive more copies of that one. We'll see.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Item Three&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Next, the &lt;a href="http://www.amazon.com/exec/obidos/ASIN/1598638068/ref=nosim/gamedev"&gt;green book&lt;/a&gt; now has a picture on Amazon. I hope it'll be arriving next week. Fingers crossed.&lt;br /&gt;&lt;br /&gt;(note to Drew, fix the picture on the book-page in gamedev)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Item Four&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;My dramatic reading from &lt;a href="http://www.amazon.com/exec/obidos/ASIN/1598638092/ref=nosim/gamedev"&gt;the blue book&lt;/a&gt; is now available at &lt;a href="http://www.industrybroadcast.com/"&gt;www.industrybroadcast.com&lt;/a&gt;. Be glued to the end of your seat as I regale you with tales of high seas adventure!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Item Five&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I've officially released &lt;i&gt;The Code Zone Retro Pack&lt;/i&gt; (i.e. all of my old 90's shelfware games that I could still find and for which I recently re-re-retained licenses). While the story of those games are an adventure unto themselves, as you'd expect from any software package that managed to stay in stores for TEN YEARS, getting back to re-compile on my new machine was no picnic. I basically had the following choices. . .&lt;br /&gt;&lt;br /&gt;1. Install VC++ 6 (which was the last compiler used to make 'em), recompile the original sources, change up the about-box and credits and such to remove mention of the old publishers, and build a new installer.&lt;br /&gt;&lt;br /&gt;2. Modify the StarView app framework (upon which the games are built), which itself hasn't changed in ten years, to work on a newer Visual Studio.&lt;br /&gt;&lt;br /&gt;3. Dump the StarView app framework in favor of the OpenOffice Framework (which StarView became after Sun bought 'em out), modify the games to work with it, and recompile.&lt;br /&gt;&lt;br /&gt;Seeing the easiest route as number one, as it'd just require changes to batch file names, I set about to installing VC++ 6 on Vista. Upon doing so, Vista popped up a box saying that my compiler was about ten years outta date, it's flagged as an app that doesn't play well with anything after Windows 2000, and that ship just ain't gonna sail.&lt;br /&gt;&lt;br /&gt;Glee.&lt;br /&gt;&lt;br /&gt;Being sly and wiley, I popped up Virtual PC and built myself a little Virtual Windows 98. VC++ 6 had no problem with it. A little wrestling with batch files and dependencies and all that other stuff that I haven't done in years, and I had a working build-chain again.&lt;br /&gt;&lt;br /&gt;Then I dragged the newly-compiled games over to Vista, built a cute little NSIS installer for 'em, and they live again!&lt;br /&gt;&lt;br /&gt;Check 'em out &lt;a href="http://www.thecodezone.com/games/retro.php"&gt;here&lt;/a&gt; to see 'em in all of their 256-color MIDI-soundtracked glory again!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Item Six&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Think Tank is basically done. It's currently shopping for sponsorships, but if I don't get any bites it'll be scattered to the four winds. As a reward for actually reading this far, I'll let you try it out. It's &lt;a href="http://www.thecodezone.com/games/thinktank.php"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Note that this version is currently site-locked to thecodezone.com, so don't just grab the swf file and slap it up on your own favorite game portal. Once I'm confident that it's in as good a working order as it's gonna get, I'll make a distributable version.&lt;br /&gt;&lt;br /&gt;Please please post feedback for the game. It's gonna go viral and once things go viral there's no way to make changes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Dang, I had a lot going on this week. I need a rest.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-3039860382444141678?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/3039860382444141678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=3039860382444141678' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/3039860382444141678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/3039860382444141678'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/03/shenanigans-and-goings-on.html' title='Shenanigans and goings on'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-8563024909996108241</id><published>2009-03-11T07:28:00.006-06:00</published><updated>2009-03-11T07:56:14.847-06:00</updated><title type='text'>Fix your car's mats quickly and cheaply</title><content type='html'>Note: This has nothing whatsoever to do with game development&lt;br /&gt;&lt;br /&gt;The carpet floor mats in my venerable PT Cruiser are still usable but have grown a little threadbare in the past year or so. And like most mats, the wear is uneven. Very uneven.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Q4QvY8alCX0/Sbe8_TnbOEI/AAAAAAAAAEM/vkFwhvrsMqg/s1600-h/3346865414_0fcb6d9c02%5B1%5D.jpg_v%3D0"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_Q4QvY8alCX0/Sbe8_TnbOEI/AAAAAAAAAEM/vkFwhvrsMqg/s320/3346865414_0fcb6d9c02%5B1%5D.jpg_v%3D0" alt="" id="BLOGGER_PHOTO_ID_5311922081290205250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The hole you see in the center is the spot under the accelerator, and my heel has completely worn through. Knowing that my heel would next be wearing through the underlying carpet (which is way expensive to replace), I looked at replacing the mat. And since new custom-cut carpeted mats run north of $75 for a set, I looked at repairing the hole.&lt;br /&gt;&lt;br /&gt;My first thought was a piece of carpet, but carpet is pretty thick and sheds along the edges unless you hem it. Then I thought about those cheap industrial rubber-backed welcome mats. I checked out my local Home Depot, but the only size that they carried was quite large and expensive.&lt;br /&gt;&lt;br /&gt;Looking around Home Depot a bit more, I found something that would fit the bill for quite a bit less money. It's a non-slip surface for stairs that I found in the flooring section. It was the right color, looked quite easy to cut, and the price was right at $3 for a 1'x3' piece.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm4.static.flickr.com/3369/3346029441_0b2c6f41ca.jpg?v=0"&gt;&lt;img style="cursor: pointer; width: 500px; height: 375px;" src="http://farm4.static.flickr.com/3369/3346029441_0b2c6f41ca.jpg?v=0" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;(note that the rubber is molded with a curve to fit around the front of a stair. You could probably flatten it out for a really big patch, but in my case the flat part was plenty big enough to do the repair)&lt;br /&gt;&lt;br /&gt;I cut a couple of circles with scissors that were large enough to cover the entire hole as well as the frays around it. My original plan was to glue a circle to the top and bottom of the mat, but my glue choice didn't seem compatible with the rubber bottom of the mats and ended up peeling off.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm4.static.flickr.com/3356/3346865448_71bc0ba04f.jpg?v=0"&gt;&lt;img style="cursor: pointer; width: 500px; height: 375px;" src="http://farm4.static.flickr.com/3356/3346865448_71bc0ba04f.jpg?v=0" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I had some "Industrial Strength Liquid Nails" adhesive left over from an earlier project that I figured would fit the bill. It did a good job of adhering the circle to the carpet, although the glue's color (an opaque light brown) was pretty unforgiving while placing the circle.&lt;br /&gt;&lt;br /&gt;After smearing the glue around (use gloves when dealing with this stuff, as the Industrial Strength version is pretty noxious on skin) on the circles, I placed my circles and weighted 'em down overnight.&lt;br /&gt;&lt;br /&gt;And since I'm a lazy person who didn't want to carry over a pile of stuff to weigh down the glue, I let the car do the job of applying pressure. I did put down some plastic on the bottom so I didn't end up accidentally gluing my mat to the floor of the garage.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm4.static.flickr.com/3546/3346029467_f56f1f5538.jpg?v=0"&gt;&lt;img style="cursor: pointer; width: 500px; height: 375px;" src="http://farm4.static.flickr.com/3546/3346029467_f56f1f5538.jpg?v=0" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;The next morning, the job was done. It wasn't especially pretty, but I figure I'll get some more time out of the mats before I have to glue on another circle.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm4.static.flickr.com/3255/3346029391_18e6243be7.jpg?v=0"&gt;&lt;img style="cursor: pointer; width: 500px; height: 375px;" src="http://farm4.static.flickr.com/3255/3346029391_18e6243be7.jpg?v=0" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;The total cost of the job was a little under $6 ($3 for the rubber, and a little under $3 for the glue). The glue was leftover from another job. If I had to buy glue for the job, I probably would've looked for something clear, as it would've looked quite a bit cleaner. As it stands, it looks pretty good and should last a while.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-8563024909996108241?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/8563024909996108241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=8563024909996108241' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8563024909996108241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8563024909996108241'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/03/fix-your-cars-mats-quickly-and-cheaply.html' title='Fix your car&apos;s mats quickly and cheaply'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Q4QvY8alCX0/Sbe8_TnbOEI/AAAAAAAAAEM/vkFwhvrsMqg/s72-c/3346865414_0fcb6d9c02%5B1%5D.jpg_v%3D0' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-5775335879596995310</id><published>2009-03-04T09:11:00.001-06:00</published><updated>2009-03-04T09:11:57.729-06:00</updated><title type='text'>I have a winner</title><content type='html'>Thanks for the entries, people. Ultimately I had 27 people who followed the rules (add me and send me the message). And out of those 27 people, our winner was DecipherOne!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://twitter.com/DecipherOne"&gt;http://twitter.com/DecipherOne&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Keep an eye on the Bargain Basement Blog, as I'll certainly have more books to give away!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-5775335879596995310?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/5775335879596995310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=5775335879596995310' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5775335879596995310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5775335879596995310'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/03/i-have-winner.html' title='I have a winner'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-6869533992790631115</id><published>2009-02-27T09:43:00.001-06:00</published><updated>2009-02-27T09:47:33.804-06:00</updated><title type='text'>I'm full of content today</title><content type='html'>&lt;b&gt;I'm Giving Away A Free Book, So Read This Post To The End!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;First off, I posted a new review of Musicshake here. Happy reading.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gamedev.net/features/reviews/productreview.asp?productid=725"&gt;http://www.gamedev.net/features/reviews/productreview.asp?productid=725&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Next off, I got the next two gamedev books in the mail yesterday, including my own "Beginning Programming" book. While the original intent was for the programming books to be truly monstrous tomes, it looks like Drew beat me by a few pages with &lt;i&gt;Design and Content Creation&lt;/i&gt;, mainly owing to some extensive pixel-art tutorials. Drew also one-upped my extensive equations with a "flip book" animation of a girl kicking you in the head. Good work, kid.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://members.gamedev.net/johnhattan/diary/books2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;(your humble co-editor posing with over 1400 pages of game programming goodness)&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;The orange one on the top is my baby. My other baby, Advanced Programming, will be arriving in two or three weeks and has a green cover. On the whole it looks great and I'm proud of it. It's aimed at beginners but isn't so elementary that it'll grow useless after a single reading. Some chapters, specifically the vectors &amp;amp; matrices tutorial, ended up looking quite a bit nicer than I expected. Other chapters that worried me, like Metanet's 2D tutorial, which relied on lots of colorful diagrams, look okay too. Kudos to the Cengage formatting department for being able to make my hours of time with MS Equation Editor and eDrawMax pay off.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And yes, I said I'd be giving away a free book. I plan to make giveaways of any extra copies of the books I might happen to get. And it turns out I have more than one copy of &lt;i&gt;&lt;a href="http://www.amazon.com/Business-Production-GameDev-net-Drew-Sikora/dp/1598638092"&gt;Business and Production For Games&lt;/a&gt;&lt;/i&gt; (the blue book) here. So I'm giving it away to a lucky winner.&lt;br /&gt;&lt;br /&gt;The title of this content is "The Shamelessly Trolling For Twitter Followers Game", and entering the giveaway is quite simple. Just follow me on Twitter. Go to&lt;br /&gt;&lt;br /&gt;&lt;a href="http://twitter.com/johnhattan"&gt;http://twitter.com/johnhattan&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And press the "follow" button under the little bulldozer. Then post an @response like the following. . .&lt;br /&gt;&lt;br /&gt;&lt;center&gt;@johnhattan please enter me in the contest to win a free book. http://tr.im/gQnH&lt;/center&gt;&lt;br /&gt;(the mini-URL at the end will go to this blog post in case someone else reads your tweet)&lt;br /&gt;&lt;br /&gt;On Monday or Tuesday, I'll pick a random user from those responses and mail that person a free book. I'd sign it, but the blue book is Drew's baby and I don't wanna take credit for it since he did the lion's share of the work on it.&lt;br /&gt;&lt;br /&gt;If you already follow me, just send me the message and you'll be entered&lt;br /&gt;&lt;br /&gt;If you don't have a twitter account, get one. They're free.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-6869533992790631115?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/6869533992790631115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=6869533992790631115' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/6869533992790631115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/6869533992790631115'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/02/im-full-of-content-today.html' title='I&apos;m full of content today'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-2422984954944646365</id><published>2009-02-23T09:13:00.000-06:00</published><updated>2009-02-23T09:14:31.054-06:00</updated><title type='text'>Let's do the quiet desperation dance!</title><content type='html'>Well the recession is recessioning, and this one isn't one of those little "that was a recession?" recessions of the early 90's. You can actually feel this one. Some of you are feeling it pretty hard. Even our own pet recession-proof industry to which Shelly and I have hitched our wagons (energy) is feeling a mighty pinch.&lt;br /&gt;&lt;br /&gt;So save save save. Swallow your pride and quit pretending that you need to drink the premium brands of soda pop and you'll just die if you don't spend $10-$20 a week on iTunes. And remember a mantra I use around here. . .&lt;br /&gt;&lt;br /&gt;&lt;center&gt;"Need" is a strong word.&lt;/center&gt;&lt;br /&gt;A "need" is a sine qua non. It's a thing without which your life would end or be greatly compromised. Recognize the things in your life that are needs (food, furniture) and the things that aren't really needs (eating out, new furniture). And if a TV commercial says that something is something you need, assume that they're lying. Learn to prioritize your spending, recognize deals and take advantage of 'em. Find coupons. Drop your cable TV subscription one tier (or dump it entirely now that the $40 digital gubment rabbit-ears boxes have built in program guides).&lt;br /&gt;&lt;br /&gt;And if you see a true need coupled with the word "free", trample everyone in your way to get it :)&lt;br /&gt;&lt;br /&gt;On that note, go to &lt;a href="http://www.millionsubs.com/"&gt;www.millionsubs.com&lt;/a&gt; and grab yourself a coupon for a free sandwich. Coupons are limited, so go now. Really. Go now. Browsers have tabs, so you can go now and read the rest of this blog post later.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Okay, you're back.&lt;br /&gt;&lt;br /&gt;Also grab yourself a free short-stack at IHOP tomorrow (tuesday). I'm not a big IHOP fan, but pancakes are hard to do wrong, so I'll be there early. We did the free Denny's Grand Slam last month at 7am and got in and out in a reasonable time. We tried to hit 'em again for lunch but the line was out the door, so the key here is to get there early.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Another nice tip is the following equation. . .&lt;br /&gt;&lt;br /&gt;&lt;center&gt;Any leftover food plus tortillas equals yummy burritos!&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;We had some leftover chicken and chili from last week, so I bought some canned beans and about 50 tortillas. I also found a cheap fatty roast for $1.50 which I de-fatted, chopped up finely, and fried with some taco seasoning. Shelly and I then spent the next hour making, saran-wrapping, sharpie-ing, and freezing a whole freezer-full of burritos. This'll easily cover lunches and some dinners for the next ten days, and the total out-of-pocket for the whole affair was about $20.&lt;br /&gt;&lt;br /&gt;Having lived through lean times before, I can attest that the deal-breaker food-wise isn't a lack of quality food. It's a lack of variety. Eating ramen noodles and balogna sandwiches three meals a day will save you money but will get old fast. Make yourself a list of food that you can make fairly cheaply and makes good leftovers (spaghetti, chili, stew) and give yourself a good variety so you don't feel like you're depriving yourself of the better things.&lt;br /&gt;&lt;br /&gt;And you can't go wrong with chicken. A bunch of cooked chicken in the fridge has a thousand uses. You can just eat it. You can make sandwiches. You can chop it up and put it on a salad. You can make soup. You can get buffalo sauce and make spicy chicken.&lt;br /&gt;&lt;br /&gt;Whenever I go to the grocery store, I check out the closeout section in the meat department. When they have trays of chicken thighs or legs for cheap (sometimes as low as a buck for an eight-pack), I grab it. You can throw it in a roasting pan with a little salt-n-pepper, cook it, tupperware it, and toss it in the fridge, and that'll give you the underpinnings of a bunch of cheap-n-easy meals.&lt;br /&gt;&lt;br /&gt;Feel free to post any other "belt tightening" tips. We'll all make it together.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On another note, with a little luck Pop Pies 2 ought to hit a million plays by the end of the week. It definitely hit the ground running and is my strongest start yet, which is heartening.&lt;br /&gt;&lt;br /&gt;The "Retro Pack" (i.e. 47 of my old 1990's discount-rack games that I regained the rights to) is done and is just waiting for me to come up with a way to sell it. My current plan is to sell it cheap (like $5) and make it free if you buy one of my $10 games. That way I should make a little money off it. The games are really pretty old technology-wise (256-color graphics, MIDI sound), so I really can't reasonably expect to make a pile of money from 'em.&lt;br /&gt;&lt;br /&gt;I also had fun playing some of my old games. I forgot how fun a couple of 'em were, so I've decided to "Flash-ize" some of the better ones. I should have something to show off in a week or two.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-2422984954944646365?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/2422984954944646365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=2422984954944646365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/2422984954944646365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/2422984954944646365'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/02/lets-do-quiet-desperation-dance.html' title='Let&apos;s do the quiet desperation dance!'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-1158859398987273128</id><published>2009-02-13T09:48:00.000-06:00</published><updated>2009-02-13T09:49:25.888-06:00</updated><title type='text'>Distributing things to the four winds</title><content type='html'>Thanks for the Pop Pies 2 feedback. I went live with the thing and started uploading it to the major game portals in the hopes that it'll be co-opted by the smaller ones. Since the game runs ads before it starts, the key is to get it on every place you can find.&lt;br /&gt;&lt;br /&gt;A couple of my favorites are &lt;a href="http://www.mindjolt.com/"&gt;MindJolt&lt;/a&gt; (because they have a facebook app that can get your game a squillion hits if people like to challenge each other) and &lt;a href="http://www.albinoblacksheep.com/"&gt;Albino Black Sheep&lt;/a&gt; (because they actually do respect peoples' rights to the material they post).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you wanna get in on the grassroots effort towards spreading this thing far and wide, the actual SWF is being hosted at &lt;a href="http://games.mochiads.com/c/g/pop-pies-2/poppies2.swf"&gt;http://games.mochiads.com/c/g/pop-pies-2/poppies2.swf&lt;/a&gt;. Feel free to upload it somewhere, although it's better form to just have the site link to that file if available. That way if I find a bug and post an update, they'll get the fix automatically.&lt;br /&gt;&lt;br /&gt;Or if you have a game site that you particularly like, post a link to it in the comments and I'll see about getting it uploaded there. Pop Pies 1 is up to 13 million hits, so it has some catching up to do, but it might happen :)&lt;br /&gt;&lt;br /&gt;Big thanks.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And it looks like the next round of gamedev.net books are ready to ship. I haven't gotten the new ones from the publisher yet, but I expect to see 'em any minute now. I just got cover-art for the fourth book (Advanced Programming), and it's sort of a lime green.&lt;br /&gt;&lt;br /&gt;And I'm gonna be putting together some kind of book giveaway for all of the extra copies I get from the publisher. Not sure exactly what the parameters will be, but there'll be opportunity for free books.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-1158859398987273128?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/1158859398987273128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=1158859398987273128' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/1158859398987273128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/1158859398987273128'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/02/distributing-things-to-four-winds.html' title='Distributing things to the four winds'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-586142405123458612</id><published>2009-02-09T10:46:00.000-06:00</published><updated>2009-02-09T10:47:41.838-06:00</updated><title type='text'>Casting the net a bit wider</title><content type='html'>Okay, Pop Pies 2 has been a week in RC status now. I haven't gotten a serious exclusive sponsorship offer via flashgamelicense, so I'm gonna go with my original plan. That's to release the game to the four winds self-sponsored but with ad-banners, grab nonexclusive sponsorships as they come in, and make money from nonexclusive sponsorships and ads running on whatever game-portal embeds the game.&lt;br /&gt;&lt;br /&gt;. . .which is pretty-much the plan for all the rest of my games.&lt;br /&gt;&lt;br /&gt;This morning I'm putting out RC2 of Pop Pies 2, and I'm letting you play it here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.thecodezone.com/games/poppies2.php"&gt;http://www.thecodezone.com/games/poppies2.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thus-far the comments have been promising. And by "promising", I mean that they've been all over the board. Some think the music isn't good. Some think it's perfect. Some hate the sound effects. Some love 'em. Some think the game is worse than the original. Some think it's better. In other words, there's a complete lack of consensus about the game, which suggests that my instincts were sound. Everybody's got an opinion, and if they don't agree, then it comes down to instinct.&lt;br /&gt;&lt;br /&gt;I tried all sorts of pie color schemes, but in the end I realized that something tasteful and something with reasonable contrast just wasn't gonna happen. So I went with the old TRS-80 Coco palette which cover the extremes of the RGB additive and subtractive spectrum&lt;br /&gt;&lt;br /&gt;Ahem. . .&lt;b&gt;black, green, yellow, blue, red, white, cyan, magenta, orange&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;(yeah, that's a 9-color palette. IIRC, the non-text modes eliminated black)&lt;br /&gt;&lt;br /&gt;I didn't wanna go with pure black and pure white, so I went with very light gray ("buff" in TRS-80 vernacular) for the background and very dark gray for one of the pie colors. It's still a mite hard on the eyes, but your little pattern-seeking higher brain should have little trouble picking out the chains.&lt;br /&gt;&lt;br /&gt;Note that the Pop Pies 2 link above is a link to a site-locked version on thecodezone.com. I'm gonna give it until about Wednesday for further comments. Then I'm gonna remove the site-lock, mark the game as "released" on the ad-network and distribution-network, and submit the thing to as many game portals as I can find.&lt;br /&gt;&lt;br /&gt;So lemme know what you think until then. Happy playing!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-586142405123458612?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/586142405123458612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=586142405123458612' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/586142405123458612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/586142405123458612'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/02/casting-net-bit-wider.html' title='Casting the net a bit wider'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-5154244488039399998</id><published>2009-02-04T08:35:00.002-06:00</published><updated>2009-02-04T08:46:47.053-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='siteannouncements'/><title type='text'>Changes to twitter</title><content type='html'>I've made a change to the way scores are posted to twitter. One thing I never really liked (and it's really a deficiency in Twitter rather than this site) is that I needed your twitter password to post scores to Twitter accounts. And storing passwords used on other sites is just bad form in general.&lt;br /&gt;&lt;br /&gt;So I've made a minor change to things. I now have a new Twitter user named &lt;a href="http://twitter.com/thecodezone"&gt;"thecodezone"&lt;/a&gt;. The bot that tallies the scores will now be notifying any twitterers with an @ response from that account.&lt;br /&gt;&lt;br /&gt;So the upshot is, if you want to receive Twitters of your daily rankings, you can do one of the following. . .&lt;br /&gt;&lt;br /&gt;- Follow user "thecodezone" from &lt;a href="http://twitter.com/thecodezone"&gt;http://twitter.com/thecodezone&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;- Allow your twitter account to accept @ responses from users you're not following. Setting this up is simple. Just go to your twitter account, go to "Settings", then the "Notices" tab, then choose "all @ replies" under the "show me" section.&lt;br /&gt;&lt;br /&gt;The upshot is that you should still be able to receive your daily rankings via twitter, just in a bit more secure way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-5154244488039399998?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/5154244488039399998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=5154244488039399998' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5154244488039399998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5154244488039399998'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/02/changes-to-twitter.html' title='Changes to twitter'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-2858526650605796491</id><published>2009-01-26T10:28:00.001-06:00</published><updated>2009-01-26T10:28:50.235-06:00</updated><title type='text'>Design Question</title><content type='html'>I'm working on Pop Pies 2. &lt;a href="http://www.thecodezone.com/playnshare.php?playgameid=5"&gt;Pop Pies&lt;/a&gt; is my most successful game far as ad-revenue goes. I'll also admit that it's not my best game. Myself, I much prefer &lt;a href="http://www.thecodezone.com/playnshare.php?playgameid=11"&gt;Meltdown&lt;/a&gt;, although both games do have that visceral id-gratifying "blow up lotsa stuff in one shot if you set up everything just right" bit.&lt;br /&gt;&lt;br /&gt;One thing I'd always planned for Pop Pies 2 was levels that got more difficult, ala Meltdown. Although I'm starting to think that that's getting away from my old "quick to play" mantra that I'd kept up from the beginning of this little puzzle game experiment. Meltdown does have multiple levels, but you can play through a single level in 1-2 minutes, so even if you make it through five or eight levels, it's still pretty quick. Pop Pies has only one level, but it takes a longer and more thoughtful setup if you wanna get the big 'splosions.&lt;br /&gt;&lt;br /&gt;My initial plan was to have three growing meters at the bottom of the screen that measured pies 'sploded, columns cleared, and gifts cleared (see Poppit for this). If you got above a certain threshold on each, you'd move to the next level and the thresholds would get a bit higher, thus making the next level more difficult to clear. But now I think I'm just overthinking things. I should just make the game one level like original Pop Pies but make the level much more interesting with little bonuses and suchlike popping up everywhere.&lt;br /&gt;&lt;br /&gt;Because, this is my hypothesis, most people who play Pop Pies don't do it for the score. While it is gratifying to break 10,000 points, Pop Pies is more about the visceral thrill of filling the screen with a big explosion. And if ad-revenue is any indication, people don't seem to mind pressing the "play again" button or the reload-button in their browser.&lt;br /&gt;&lt;br /&gt;So now I'm leaning strongly against "Pop Pies With Levels" and more towards "Pop Pies With One Much Cooler Level".&lt;br /&gt;&lt;br /&gt;Thoughts?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-2858526650605796491?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/2858526650605796491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=2858526650605796491' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/2858526650605796491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/2858526650605796491'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/01/design-question.html' title='Design Question'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-2536257864211475052</id><published>2009-01-23T09:33:00.002-06:00</published><updated>2009-01-23T09:48:30.987-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='siteannouncements'/><title type='text'>The Code Zone Facebook group</title><content type='html'>Despite a few requests, I'd purposely avoided having any kind of web forum or comments-section on the site. And the reasoning was simple -- if I added such a thing, then I'd have to come up with a policy on profanity, and I'd have to do some kind of bogus age-check and such. As it stands, The Code Zone is a G-rated place, and I don't have to worry about being contacted by angry parents because their 8 year-old is a fan of the games but found objectionable content.&lt;br /&gt;&lt;br /&gt;But I guess it wouldn't be a problem to allow such things elsewhere. So I added a Fan-Group for the games on Facebook, and it's at &lt;a href="http://www.facebook.com/group.php?gid=115026820690"&gt;http://www.facebook.com/group.php?gid=115026820690&lt;/a&gt;. If you're a fan of the games or you want to discuss solutions to Bulldozer levels or anything like that, feel free to join up there. I'll try to keep an eye on the place, so your requests won't just end up echoing into cyberspace.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-2536257864211475052?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/2536257864211475052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=2536257864211475052' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/2536257864211475052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/2536257864211475052'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/01/code-zone-facebook-group.html' title='The Code Zone Facebook group'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-5910377625277543108</id><published>2009-01-21T14:06:00.001-06:00</published><updated>2009-01-21T14:08:50.542-06:00</updated><title type='text'>Book book book bookety book!</title><content type='html'>&lt;center&gt;&lt;img src="http://1.bp.blogspot.com/_iPvKR7lJ9Ec/SXdgq1KUwYI/AAAAAAAACEQ/tzMlKjf2NPo/s400/102_0467.JPG" /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Actual paper copy of the book. Ooooh, amazing. Scientific. And yes, slightly bent courtesy of our good pals in the brown truck.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Okay, I've been meaning to document the process for quite some time. This is how the gamedev series came to be.&lt;br /&gt;&lt;br /&gt;According to my email archive, it first landed in my and Drew's collective laps around September of 2007. The idea got pitched to Dave and Kevin a while earlier, but it turned out that they had real jobs or somesuch other lame excuse, so they decided to hand over the project to a couple of the other shaved apes on the staff of gamedev who didn't have to deal with such frivolities as jobs. Namely Drew and myself.&lt;br /&gt;&lt;br /&gt;I think it was I who came out with the absurdly simple original plan for making the books. We have Superpig use his astounding SQL abilities to dump the entire archive of gamedev article-links into a spreadsheet, we read all those articles, judge 'em for suitability (for a beginner-book and and an advanced-book, rated on a scale from 1 to 5), figure out how they'd need to be edited to fit changing technologies, contact the authors, get edits, cut 'n paste the whole mess into a Word document, press "print", and then spend the rest of the time sipping mint juleps while checks roll in.&lt;br /&gt;&lt;br /&gt;And, of course, it worked exactly like that. With only a couple of minor changes. First off, Drew's herb garden didn't pan out because mint doesn't grow well under the frozen ice of New York or New Jersey or whatever part of the Great White North is his habitat. Next, even though we originally agreed to split up the article-reading and grading task 50/50 (still a pretty big task as our article archive numbered some 1500 articles), it ended up actually being closer to 100/0 with my ownself doing the lion's share of the reading and grading.&lt;br /&gt;&lt;br /&gt;The reading and grading did get done. And Drew, now wracked with guilt after dropping the ball in the article-grading department, stepped up to the plate and took over. He took my original list, double-checked it, came up with some more authors who could put together some original articles for us, and made proposals and sample tables of contents for what became five books, two big programming books and three smaller design books. He also came up with a method for figuring out page-count that came within 0.00001% of reality, plus or minus 50%.&lt;br /&gt;&lt;br /&gt;Then we had to contact authors, which was easily the least fun part of the process. Several of the articles I liked were rather old but I felt were "timeless" in their wisdom and deserved immortality in print, provided they could be updated to match the technology. And it was certainly a good assumption that the 8 year-old hotmail address associated with the article and/or gamedev.net account was still actively checked.&lt;br /&gt;&lt;br /&gt;And about a third of 'em were. About a third of the remaining authors were easy to find with a little googling and facebook-ing. And a few more I found via friends of friends. And about a half-dozen I just never was able to find.&lt;br /&gt;&lt;br /&gt;And then it turned out that five books was both a bit too ambitious page-wise as well as not as organized as it should've been. So Drew re-shuffled his three books into two and the wobbly quintet became a stronger quartet.&lt;br /&gt;&lt;br /&gt;As I found authors, I sent proposals to 'em. Thankfully about 95% of the authors were very amenable to the idea. In fact, most offered to update their articles even when I didn't think they needed much done. Most of our original-content authors were also happy to oblige, although I did have to lean on a few of 'em to get me their updates. A couple of authors did completely flake out on me and bailed from the book entirely, but thankfully it was just a couple. I recall one author who finally declared that I was an unreasonable bully because I only gave him five months to update his (four page) article and demanded to be released from such a responsibility (which I gleefully did). The rest of the article updates trickled in at a rate that gave me time to sanity-check and submit 'em to the publisher. I did end up following the 90/10 rule with the final 10% of the articles taking up 90% of the time, but the downtime waiting for articles gave me time to do some housekeeping. . .and by that I mean pictures.&lt;br /&gt;&lt;br /&gt;Pictures were a problem. Turns out that if you ask an author if he still has the original JPG images for an article he wrote five years ago so you can try to make 'em something that'll look good in print, the answer's usually "oh hellno". A couple of authors were gracious enough to recapture their images or screenshots in higher resolutions, (and if any of you ever catch me at a convention, flag me down and I'll buy you a beer). The rest either had to be redrawn or just resized as-is.&lt;br /&gt;&lt;br /&gt;I also had to change text to make up for the fact that the book was gonna be in black-n-white. I think I was able to catch and rewrite/redraw all the parts that read like "that faint blue line in the middle of the picture is the most important part, and I'm gonna talk about it for six paragraphs, all the while referring to it as a faint blue line". The upshot is that if you're profoundly color-blind, there are gonna be some articles that make sense more than they used to because I changed it to a thick black line :)&lt;br /&gt;&lt;br /&gt;The editors at Cengage were great. For much of the book, the process involved Drew and I saying "umm, I don't know, so let's do it this way" regarding how we were submitting content to them, and they worked with us. Mind you, we were also pretty flexible. I recall talking to a zealot programmer/author once who ended up firing his publisher because book submissions should be done in open-source workers-of-the-world-unite XML rather than evil proprietary fascist MS Word format. We all had an understanding that the goal was to get a book on the shelves, and if it worked towards that end, all was well.&lt;br /&gt;&lt;br /&gt;And it looks like it's there. One book is out on paper. I just got cover-art for the next book to be released (Beginning Programming), and it looks great. I hope you enjoy the series and I appreciate any constructive feedback.&lt;br /&gt;&lt;br /&gt;The only gray area I'm aware of is the companion website. The books don't have a companion CD-ROM (which doesn't bother me in the slightest, as you probably already have more 30-day trial copies of Paint Shop Pro than you need), so they'll have a companion site. Many of the articles have downloadable source code associated with 'em. I've been keeping all the downloadable code organized, so I don't think it will be an issue.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And so, to answer the most pressing question in my mind about the books, I present &lt;b&gt;The Gamedev.net Collection Mini FAQ&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Q: So, why on Earth would I wanna buy these books when I can just read the same danged articles on the website for free?&lt;br /&gt;&lt;br /&gt;A: Because they're not the same articles, smartarse. Many of the articles are 102% original and written by industry professionals and are being presented in book form for the first-time ever and won't be available anywhere else. Most of the remaining articles have been updated to match technology. Some were changed a little, but some were completely rewritten from the ground-up. You like that article about Texture Splorging In Direct3D 7? Well, now it's an article about Texture Splorging With Programmable Shaders and other stuff that was just a gleam in nVidia's eye at the time of the article's original run.&lt;br /&gt;&lt;br /&gt;So feel free to keep reading my &lt;a href="http://www.gamedev.net/reference/design/features/whatlang/"&gt;"What Language Do I Use?"&lt;/a&gt; article from 1999 for free, especially the comparison between IconAuthor and Hypercard (neither of which are available anymore). And just wonder to yourself how much more useful that article would've been if it had a discussion about things like Flash or .NET or Python or the plethora of server-side languages that were in their infancy in 1999.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-5910377625277543108?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/5910377625277543108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=5910377625277543108' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5910377625277543108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5910377625277543108'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/01/book-book-book-bookety-book.html' title='Book book book bookety book!'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_iPvKR7lJ9Ec/SXdgq1KUwYI/AAAAAAAACEQ/tzMlKjf2NPo/s72-c/102_0467.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-6364841296889324365</id><published>2009-01-14T13:42:00.001-06:00</published><updated>2009-01-14T13:42:58.073-06:00</updated><title type='text'>Book Kewelness</title><content type='html'>Looks like Amazon's little book-excerpt-reader-thingy has indexed the first of the gamedev.net books. Bask in wild wonder!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/gp/reader/1598638092"&gt;http://www.amazon.com/gp/reader/1598638092&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Looks like Rick's article as well as mine are in this one. I have another article in the Beginning Programming book, which is scheduled to hit the ground on February 10.&lt;br /&gt;&lt;br /&gt;I still don't have the paper copy yet. I did get my article-payment for this one, so I presume that paper versions are motoring their way to your retailer as we speak.&lt;br /&gt;&lt;br /&gt;Still not sure why Drew's name comes in front of mine. H comes before S in the dictionary, and I edited the two biggest books. Clearly I'm a victim of size discrimination&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-6364841296889324365?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/6364841296889324365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=6364841296889324365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/6364841296889324365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/6364841296889324365'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/01/book-kewelness.html' title='Book Kewelness'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-5728745045552639886</id><published>2009-01-13T11:42:00.000-06:00</published><updated>2009-01-13T11:43:23.576-06:00</updated><title type='text'>Sanctimonious busy programming me</title><content type='html'>First off, here's my guide to &lt;b&gt;Marital Infidelity For Smart People(tm)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;1. Decide that you wanna cheat on your wife.&lt;br /&gt;&lt;br /&gt;2. Agonize about the "dump wife" versus "cheat on wife" decision for a while. Insist that it's being done out of enormous love for yourself. . .I mean your wife.&lt;br /&gt;&lt;br /&gt;3. Reveal to your lucky lucky LUCKY wife that you've decided not to dump her, but you've instead decided to cheat on her.&lt;br /&gt;&lt;br /&gt;4. Reveal this to the world in &lt;a href="http://www.stevepavlina.com/blog/"&gt;your blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;5. If anyone points out that that's a pretty scumbag move, telling your wife that you're giving her the gift of marital infidelity rather than divorce, invent a new yet-unseen neurosis and give an official-sounding name like "Remote Diagnosis Disorder" (rather than &lt;a href="http://www.urbandictionary.com/define.php?term=Don%27t%20you%20judge%20me"&gt;"Don't You Judge Me"&lt;/a&gt;), and apply it to all who say so.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'm not usually one to use peoples' names as adjectives, but that's a pretty L Ron Hubbard move there, coming up with ad-hoc neuroses, giving 'em official-sounding names, then applying 'em to your detractors. He even went the Hubbard route of giving the disease an acronym (RDD).&lt;br /&gt;&lt;br /&gt;You stay classy, Steve. And remember, &lt;a href="http://www.youtube.com/watch?v=RFO6ZhUW38w"&gt;if you open your mind too much, your brain will fall out.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(I think the funniest thing about that song is that it's a single two-minute-long sentence)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On an utterly unrelated note, I'm still working on Pop Pies 2. I have about three projects that are about two weeks from getting pushed out the door. Unfortunately I'm only one person so I gotta work on 'em serially. Basically the projects are. . .&lt;br /&gt;&lt;br /&gt;Pop Pies 2 - about halfway done. I wanna make it really compelling so Facebook people will spend lots of time challenging their pals to games.&lt;br /&gt;&lt;br /&gt;Duck Tiles 2 - this one's pretty simple. Just Duck Tiles 1 with different levels. Duck Tiles is about as refined as it's gonna get, so there's not much call for improvement to the mechanism. I learned that with Bulldozer. People don't much care about how it looks. They just want more levels.&lt;br /&gt;&lt;br /&gt;Retro Pack - this thing is compiled and works fine. I just need to convert all the HLP to CHM and write an install program. I converted all the HLP files to DOC format and found an appalling number of spelling and grammar mistakes, so I'm gonna make new CHM files manually rather than going some kind of automated CHM2HLP route.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And I gotta write some book and product reviews. And the Gamedev books are gonna be hitting the shelves in a month or two.&lt;br /&gt;&lt;br /&gt;Should be fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-5728745045552639886?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/5728745045552639886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=5728745045552639886' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5728745045552639886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5728745045552639886'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/01/sanctimonious-busy-programming-me.html' title='Sanctimonious busy programming me'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-1064682946569136301</id><published>2009-01-06T10:18:00.002-06:00</published><updated>2009-01-06T10:25:26.786-06:00</updated><title type='text'>Great freebie again</title><content type='html'>If you didn't catch this freebie back in August, here's your chance to catch it again. This is &lt;a href="http://www.edrawsoft.com/"&gt;Edraw Max 4.3&lt;/a&gt;, and it's a great vector-based tool for making any kind of blob-n-arrow documents. It's a lot like Visio, only I like it better. It has loads of drawing templates for stuff ranging from furniture layouts to flowcharts to UML diagrams.&lt;br /&gt;&lt;br /&gt;It was a real lifesaver for me for the Gamedev Collection books. We had a lot of circle-n-arrow diagrams that were too low a resolution for print. I was able to redraw quite a few of 'em with Edraw and export 'em to high resolution TIF.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.giveawayoftheday.com/edraw-max-43/"&gt;http://www.giveawayoftheday.com/edraw-max-43/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Actually if you did catch the freebie last time, you might want to grab it again. The August freebie was version 4.0, but this one's version 4.3.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Just remember that you must download and install the program TODAY. Part of the deal with giveawayoftheday.com is that their installers only work for the day that they present their daily freebie. So you can't just download the installer and install it later.&lt;br /&gt;&lt;br /&gt;And it's legit. I've done several giveawayoftheday.com programs and have been very happy with 'em. There's no registration or ads or anything.&lt;br /&gt;&lt;br /&gt;So don't miss it this time!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Oh, and somebody posted a list of a bunch of useful free stuff from Microsoft &lt;a href="http://bhandler.spaces.live.com/blog/cns%2170F64BC910C9F7F3%211231.entry?wa=wsignin1.0"&gt;here&lt;/a&gt;. There's not a lot of really useful stuff here, but some of it is worthwhile.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-1064682946569136301?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/1064682946569136301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=1064682946569136301' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/1064682946569136301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/1064682946569136301'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/01/great-freebie-again.html' title='Great freebie again'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-173913711836724554</id><published>2009-01-03T12:05:00.001-06:00</published><updated>2009-01-03T12:05:41.957-06:00</updated><title type='text'>I'm in trouble</title><content type='html'>I received the following email from my six year-old.&lt;br /&gt;&lt;br /&gt;&lt;center style="font-weight: bold;"&gt;dear  johnhattan  please   giv  me  548$   yor  cretet  card   has    expird&lt;/center&gt;&lt;br /&gt;I think this is the first instance of a six year old trying to pull a Nigerian scam on her own father.&lt;br /&gt;&lt;br /&gt;I'm also amused that she managed to catch the nuances of Nigerian-English grammar perfectly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-173913711836724554?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/173913711836724554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=173913711836724554' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/173913711836724554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/173913711836724554'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2009/01/im-in-trouble.html' title='I&apos;m in trouble'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-4389149168798578501</id><published>2008-12-31T16:52:00.003-06:00</published><updated>2008-12-31T16:53:48.726-06:00</updated><title type='text'>G'bye 2008</title><content type='html'>Howdy hoo. It's the end of a bad economic year and the start of a worse economic year. At least gas is cheap.&lt;br /&gt;&lt;br /&gt;And on an economic note, here's my own helpful way that I budget myself. This is pretty far from a "be like me" blog, so I ain't gonna say that it works brilliantly for everyone. It has, however, worked well for me for the past couple of years.&lt;br /&gt;&lt;br /&gt;First off, you need a savings account. Savings accounts at your local bank are easy and plentiful and pay basically nothing. I remember a few months ago I got a call from my local bank telling me how very responsible it would be for me to get myself a savings account so I could earn interest for the future. The conversation went like this. . .&lt;br /&gt;&lt;blockquote&gt;Bank: Now's the time to get yourself a savings account with us so you can save for your future.&lt;br /&gt;&lt;br /&gt;Me: So, what's the interest rate?&lt;br /&gt;&lt;br /&gt;Them: Umm. . .[voice gets very quiet]. . .zero point two five percent APR.&lt;br /&gt;&lt;br /&gt;Me: So that means that if I keep a hundred bucks in the account for a year, I'll make twenty five cents.&lt;br /&gt;&lt;br /&gt;Them: Yeah. . .rates are kinda low right now.&lt;/blockquote&gt;I don't think they're selling savings accounts right now. Thankfully there are some good online savings accounts that pay reasonably well and can probably beat your bank's rate for CD's.&lt;br /&gt;&lt;blockquote&gt;for the uninitiated, a CD is like a savings account but you can't take your money out until an agreed-upon term expires or you forfeit your interest (i.e. "substantial penalty for early withdrawl"). They have higher rates than savings accounts, but not much nowadays.&lt;/blockquote&gt;If you check out the money blogs, you'll find quite a few different online savings accounts, some of which will give you a bonus of $25 or $50 for opening an account, which is pretty cool. Just make DAMN SURE that whatever account you open is &lt;b&gt;FDIC insured&lt;/b&gt;. With the number of dodgy investment accounts going under in spectacular fashion, there's a bit of comfort in knowing that if the bank goes teats' up that you'll get your money back.&lt;br /&gt;&lt;br /&gt;Myself, I have online savings accounts with EmigrantDirect (2.75% APR) and DollarSavingsDirect (4% APR). They're actually the same bank, but they decided to open a new web-presence with a little higher rate to get some new customers. Note that those rates I quoted above aren't fixed and will likely drop. When I opened the EmigrantDirect account three years ago, the rate was 5%. Still, it's probably better than you'll get from a brick-n-mortar bank.&lt;br /&gt;&lt;blockquote&gt;Again for the uninitiated: The APR is the Annual Percentage Rate, and it's a sneaky trick that banks use to make their interest rate seem a bit higher than it actually is. Since you earn interest on your money and also the money that you made from keeping the money in the bank, you will effectively make a little more money after a year than the interest rate shows. So banks post that rate instead.&lt;/blockquote&gt;&lt;br /&gt;The internet savings accounts are really easy to use and you can link 'em up to your checking account so you can move money back and forth via the web.&lt;br /&gt;&lt;br /&gt;So what I do is I take all the really big fixed expenses I know I'll have in the course of a year, specifically:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;My HSA (health savings account, which was a piece of slight-of-hand that the administration introduced a couple of years ago to make really crappy super-high-deductible health insurance slightly more attractive by allowing you to put the "unless you get hit by a bus, you're paying out of pocket" deductible amount into a tax-free account so at least you're not getting taxed on the outta-pocket amount).&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Maggie's school tuition (She goes to a private school. This is Texas, 25th in the nation in quality of schools. 25th out of 50 is pretty-much the textbook definition of "mediocre", so we send Maggie to a private secular school.)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Shelly and my IRA's (We're self-employed, so we fund our own retirement. And I moved all of our money into insured funds in March right before the collapse. Yay me.)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Car Insurance (We have USAA which bills us every six months so we have plenty of warning.)&lt;/li&gt;&lt;/ul&gt;And I add those all up, divide by 12, and deposit that much into the internet savings account at the first of every month. If an expense turns out to be higher or lower than expected, like if the IRA minimum goes up like it did in 2008, I recalculate and adjust for it during the year.&lt;br /&gt;&lt;br /&gt;Putting it in the internet savings account does a few things for us.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;It makes the money &lt;i&gt;just&lt;/i&gt; inconvenient enough to retrieve that I won't be pulling out a check or debit card if I see something shiny. It'll take a day or two to transfer so I have a nice "cooling off" period.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; The money is available if there's an emergency. If the transmission suddenly decides to fall out of my car, the money's not out of reach. If I deposit the money in the IRA on a monthly basis, the money's still available but it's a real hassle to get and I have to pay the money back. If I find myself so cash-strapped that I need the money and can't pay it back, I have that luxury with the savings account.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The money earns interest during the year leaving a nice little "tip" in the account at the end of the year that I can spend on something nice like a trip to a restaurant with the family.&lt;/li&gt;&lt;/ol&gt;   So basically I just figure out what big expenses I have, when I need to pay 'em, and I make up a payment plan into the savings account. I post a little google calendar event at the first of every month telling me how much I need to put in. And, with a little luck, I have enough at the end of the year to handle the big expenses and I don't find myself scrambling to pay off big expenses all at once.&lt;br /&gt;&lt;br /&gt;Yeah I know. Common sense. Still, it requires some self-discipline.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-4389149168798578501?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/4389149168798578501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=4389149168798578501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/4389149168798578501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/4389149168798578501'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2008/12/gbye-2008.html' title='G&apos;bye 2008'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-8148406672795040244</id><published>2008-12-10T09:35:00.002-06:00</published><updated>2008-12-10T09:42:30.928-06:00</updated><title type='text'>Hey, I'm here</title><content type='html'>Apologies for the lack of updates. End of year stuff, you know. Had a couple of appointments and went to a conference (Autodesk University in Las Vegas) that I unfortunately could not really cover for any game development press.&lt;br /&gt;&lt;br /&gt;Again, I'm available on most social networks (most specifically, &lt;a href="http://twitter.com/johnhattan"&gt;Twitter&lt;/a&gt; and &lt;a href="http://www.facebook.com/profile.php?id=685059317"&gt;Facebook&lt;/a&gt;) if you feel the need to live vicariously through me.&lt;br /&gt;&lt;br /&gt;But I'm back and making not much progress on new game development. So as a matter of penance, I'll post something, anything, game development related. In this case, it's my ad in Games magazine. I've been running this for over a year now. It does seem to get me a little exposure. At least I've noticed that my hit-count gets a bump whenever the new issue hits the shelves.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://members.gamedev.net/johnhattan/gamesad.jpg" /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Yeah, it's just a little cheap thing, but I do get a minor ego-rush to know that I can always find a mention of myself on the shelves at Barnes &amp;amp; Noble every month.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And speaking of Barnes &amp;amp; Noble, the project-thats-name-cannot-be-spoken is wrapping up. Far as I know, it's still scheduled to appear in mid-January (changed from November, but that's not my or Drew's fault). There'll be more to talk about next month. And there'll be more to show off. And there'll be cross-promotion. And I'll most certainly have some kind of silly mini-contest giveaway that's just a thinly-veiled attempt to grab some more eyeballs and/or twitter followers.&lt;br /&gt;&lt;br /&gt;Until then you'll just have to speculate about what this super-secret project about which I cannot speak is.&lt;br /&gt;&lt;br /&gt;Just remember. Whatever you do, though, don't type "gamedev.net" into Amazon's search field. If you did that, you'd find out what it is that I'm under strict contractual obligation not to speak of.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On that note, I can't believe that the publisher accepted my book dedications without question :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Oh, and somebody snapped a picture of my wife presenting George Hrab with his groupie-socks, posting it to Flickr &lt;a href="http://www.flickr.com/photos/scott_hurst/3053916325/in/set-72157609828327593/"&gt;here&lt;/a&gt;. It also got a mention in George's podcast, so Shelly's now really on the hook to knit Phil Plait a pair of socks.&lt;br /&gt;&lt;br /&gt;She also wants to knit him one of her original &lt;a href="http://civilbitch.blogspot.com/2007/12/free-pattern-fsm-ornament.html"&gt;Flying Spaghetti Monster&lt;/a&gt; ornaments, although it might be a bit late for this holiday.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-8148406672795040244?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/8148406672795040244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=8148406672795040244' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8148406672795040244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8148406672795040244'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2008/12/hey-im-here.html' title='Hey, I&apos;m here'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-3403332092896161358</id><published>2008-12-09T14:45:00.002-06:00</published><updated>2008-12-09T14:47:33.528-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='siteannouncements'/><title type='text'>Holiday Reminder</title><content type='html'>Just a quick reminder. Code Zone gift cards are ready to ship and make great stocking-stuffers. Each card is good for one fully-registered game.&lt;br /&gt;&lt;br /&gt;Give the gift of puzzles this holiday season!&lt;br /&gt;&lt;br /&gt;Learn more &lt;a href="http://www.thecodezone.com/giftcard.php"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-3403332092896161358?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/3403332092896161358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=3403332092896161358' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/3403332092896161358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/3403332092896161358'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2008/12/holiday-reminder.html' title='Holiday Reminder'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-360139441278239088</id><published>2008-11-26T10:01:00.000-06:00</published><updated>2008-11-26T10:02:17.136-06:00</updated><title type='text'>in which I go out on a date</title><content type='html'>First off, today's my birthday. I'm 42 today. If you wanna make a Hitchhiker's Guide reference, feel free to do so in the comments. Today will be the only day that it will be allowed. I've already covered the comedic possibilities of the number 42 (i.e. virtually nil) quite some time ago. Still, if you feel you have a new wrinkle to offer the whole "42 = funny" genre, post away.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next, Shelly and I went on a date. At least that's what she called it. We went to the George Hrab (one of my geek mancrushes, google for him) show at University of Texas at Arlington last Friday. The crowd was quite small, perhaps 30 people. I think it's an unfortunate choice of time and place. While the UTA Geosciences building had a quite nice little lecture hall with stage that worked well for a small show, choosing the Friday night before an entire week off after all the university kids headed home for vacation probably wasn't the best choice.&lt;br /&gt;&lt;br /&gt;Still, the show was a lot of fun and George did great with the venue. I'd been to shows with underwhelming crowds before, like a show with The Guess Who that fetched about 50 people at Arkansas' Magic Springs Family Fun Park where I worked for a couple of summers in the 80's -- boy those guys made it clear that they were there to punch the clock and get the heck outta town.&lt;br /&gt;&lt;br /&gt;Also the Geosciences building had a very nice fossil display in the hall. A couple hundred million years ago, Texas was at the bottom of an ocean, so most of the fossils you find around here are marine. Sharks teeth and ammonite fossils are plentiful here, and they had some nice examples.&lt;br /&gt;&lt;br /&gt;Shelly brought her knitting with her (as Shelly brings her knitting EVERYWHERE), and she finished up a pair of socks (go &lt;a href="http://makerfaire.com/pub/e/1690"&gt;here&lt;/a&gt; for a bit about her new sock fetish). After the show was over, she presented a pair of socks to George in appreciation. Strangely, George said that he had never received socks before.&lt;br /&gt;&lt;br /&gt;The next day, the Bad Astronomer (Shelly's geek mancrush, google for him too) mentioned on Twitter that he's gained an entirely new appreciation for thermal socks now that he's moved to a cold place (Colorado Springs I think). I mentioned to him that Shelly would likely make him a pair of homemade socks, and BA took her up on it but only provided that his socks are better than George's.&lt;br /&gt;&lt;br /&gt;The upshot is that my genius wife has inadvertently invented a whole new level of geekery - the craft-groupie. The craft-groupie is a person who follows around entertainers and gives them fine handcrafted items of apparel. Mind you, these entertainers must be the kind who would appreciate such items, so it's a bit of a narrow groupie-hood -- I can't imagine Axl Rose getting excited over a nice pair of hand-knit woolen socks.&lt;br /&gt;&lt;blockquote&gt;speaking of which, I wish I had 15 years and 50 musicians on hand so I could produce 15 really overproduced songs that all sound the same. &lt;i&gt;Chinese Democracy&lt;/i&gt; is the musical equivalent of &lt;i&gt;Daikatana&lt;/i&gt;. But I digress.&lt;/blockquote&gt;So Shelly's now a craft-groupie -- sort of a G-rated version of &lt;a href="http://en.wikipedia.org/wiki/Cynthia_Plaster_Caster"&gt;Cynthia Plaster Caster&lt;/a&gt;.&lt;span class="smallfont"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-360139441278239088?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/360139441278239088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=360139441278239088' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/360139441278239088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/360139441278239088'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2008/11/in-which-i-go-out-on-date.html' title='in which I go out on a date'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-7346636705273692281</id><published>2008-11-20T12:38:00.002-06:00</published><updated>2008-11-20T12:52:41.788-06:00</updated><title type='text'>Attn George Hrab</title><content type='html'>I'm posting to &lt;a href="http://www.georgehrab.blogspot.com/"&gt;George Hrab&lt;/a&gt; here for two reasons. . .&lt;br /&gt;&lt;br /&gt;1. I didn't see his email address right off on his site.&lt;br /&gt;2. He apparently has a google alert set up for his name.&lt;br /&gt;&lt;br /&gt;Heard the mention of good D/FW BBQ. Thought I'd post my faves. . .&lt;br /&gt;&lt;br /&gt;1. Feedstore BBQ in Southlake (www.feedstorebbq.com). My personal favorite, as I prefer the dry-rub ribs to the sauced ones. It's in an actual converted feedstore. Dunno where you're staying, but that wouldn't be so convenient if you're in Arlington. It's about 15 minutes from the airport, though.&lt;br /&gt;&lt;br /&gt;2. Spring Creek BBQ (loads of locations). Good all around. Good ambience (and by that I mean paper plates and picnic tables).&lt;br /&gt;&lt;br /&gt;3. Angelo's BBQ (www.angelosbbq.com). Way over in West Fort Worth, so probably not a good possibility. Outstanding sandwiches. Draft beer is served in frozen mugs so you get little bits of beer-ice floating on top -- yeah I know, not an issue for you, but damn it was a nice lunch when I worked for Tandy in downtown Fort Worth.&lt;br /&gt;&lt;br /&gt;Anyway, those are my picks. Dunno if the NTCOF minions already have plans to take you places. If not, contact me at &lt;a href="mailto://john@thecodezone.com"&gt;john@thecodezone.com&lt;/a&gt; and I'll take care of the driving and the tab.&lt;br /&gt;&lt;br /&gt;Hoping to go to the show in Arlington on Friday. We have some houseguests on Friday night, and we'd have to find a sitter, so I'm still not sure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-7346636705273692281?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='' href='http://www.thecodezone.com' length='0'/><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/7346636705273692281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=7346636705273692281' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/7346636705273692281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/7346636705273692281'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2008/11/attn-george-hrab.html' title='Attn George Hrab'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-5255018515521826110</id><published>2008-11-17T14:10:00.001-06:00</published><updated>2008-11-17T14:10:47.187-06:00</updated><title type='text'>Holiday advice</title><content type='html'>Awright, I've had a request to post a deal and some black-friday info, so here goes. . .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;First off, the deal. Free office-supply bits for a limited time. Print out the coupon &lt;a href="http://yourbestsourceonthenet.com/blogs/wp-content/uploads/2008/11/staples.jpg"&gt;here&lt;/a&gt; and take it over to your local Staples store. They have a new line of products under the label "M". It's reasonably priced stuff that looks fairly nice. Check out the line at &lt;a href="http://www.mbystaples.com/"&gt;www.mbystaples.com&lt;/a&gt;. At our local store, the M stuff was mostly collected together on an end-cap.&lt;br /&gt;&lt;br /&gt;And a lot of it is under the price of the $5 coupon. For example, our local Staples had some nice little hardcover journals for $4.99 or three-packs of cardboard-cover journals for the same price. Mind you, a lot of these coupons don't work unless you're over the threshold, so grab one of the little 99-cent M-branded tear-off notepads just to make sure.&lt;br /&gt;&lt;br /&gt;Also, if you don't have one of those discount cards for Staples or Office Depot, get one and flash it every time you buy from 'em. If you do, you'll find yourself getting a gift certificate from 'em from time to time. Staples is like Toys-R-Us for grownups, and getting a gift certificate from 'em is better than Christmas.&lt;br /&gt;&lt;br /&gt;And speaking of which. . .&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;Next up is Black Friday, which is the friday immediately following Thanksgiving (11/28 this year). This is the "official" start of the Xmas season and retailers usually have some nice loss-leader deals for you. One of the best BF sites is &lt;a href="http://www.blackfriday.info/"&gt;www.blackfriday.info&lt;/a&gt;. It collects together all of the sale items (both officially released by stores or leaked) so you can see if there's anything you have to have. Most stores are more than happy to have their BF ads posted, but a couple (okay, just Wal Mart) are notorious for sending out lawyergrams to anyone who leaks.&lt;br /&gt;&lt;br /&gt;As for BF strategies this year, I really don't have much advice to give. This year there aren't any shocking new videogame consoles or high-definition technologies that everyone must have NOW. That, coupled with the down economy, should make for a fairly sedate affair. While there'll be some people who'll queue up at 3AM just out of habit, there should be plenty of deals that can be easily had.&lt;br /&gt;&lt;br /&gt;Actually my two favorite BF haunts are Radio Shack and Sears. Radio Shacks are small and plentiful, so there usually aren't many people there, and it's fairly easy to get a couple of gadgets (like &lt;a href="http://www.radioshack.com/product/index.jsp?productId=2720169&amp;amp;siteID=VJQZNxQ9nek-Goa.51jYnx48NKJSmEnw_g"&gt;these&lt;/a&gt; adorable things that are gonna be buy-one-get-one on BF). Sears is great because they have &lt;a href="http://www.blackfriday.info/sales/sears-black-friday-ad.html"&gt;such an absurd amount of stuff on sale&lt;/a&gt; that it's almost impossible not to find a deal on something. Sears is especially good if you have a dad who's a tool fetishist, as they always release a couple of frightfully useful Craftsman gizmos that make good gifts.&lt;br /&gt;&lt;br /&gt;Also, Sears' stuff tends towards the practical, so the fanatical shoppers will be strangling each other over Nintendo Wii's elsewhere while you're grabbing a great deal on an air compressor :)&lt;br /&gt;&lt;br /&gt;Finally, Sears is really enormous and has checkouts scattered about everywhere so it's not difficult to move around.&lt;br /&gt;&lt;br /&gt;I avoid Best Buy because their deals tend to be absurdly good loss-leaders sold in very limited quantities (like this year's dual-core 64-bit Toshiba laptop for $380) which generate a lot of publicity but are nigh-impossible to get.&lt;br /&gt;&lt;br /&gt;So my advice is year is the following. . .&lt;br /&gt;&lt;br /&gt;- Dig through the deals on that website I posted. Mark a few "that'd be nice to have" or "that'd be a nice gift for [insert name here]"&lt;br /&gt;&lt;br /&gt;- Unless there's something you must get or else you'll die, get up at a reasonable time.&lt;br /&gt;&lt;br /&gt;- Check out as many stores as you can. If you go somewhere and it's mobbed, pass it by.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;Also I'm gonna post a final piece of advice that's not easy to do but will guarantee to remove at least half of your holiday stress. It was actually an idea put forth by a religious group (Dobson's I think, those godless people waging a war on Christmas and capitalism), but I'm not averse to grabbing an idea when I can.&lt;br /&gt;&lt;br /&gt;And it is the following. . .&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;b&gt;Christmas is for kids&lt;/b&gt;&lt;br /&gt;(insert Hanukkah, Festivus, Humanlight, Kwanzaa, etc for your holiday of choice)&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;What that basically means is that if you're over 18, you should not expect to receive gifts. And if you're giving gifts, restrict them to those under 18. We presented this to our families a couple of years ago, and it went over brilliantly (my brother was especially relieved that we would no longer need to go through the annual ritual of trading gift-cards with each other). If you're over 18 years old, you shouldn't expect anything but a card from me, and I'll expect no more from you.&lt;br /&gt;&lt;br /&gt;Because let's face it. If you're an adult and you have a full-time job and you really need something, you're just gonna go out and buy it. I honestly can't think of a single thing right now that I'm hoping a member of my family will buy me for the holidays. Couple that with the sense of angst you get when you receive a truly wrong gift (like the giant box of espresso pods my mother-in-law bought that didn't fit my espresso machine), and a gift-free holiday really does eliminate much of the stress.&lt;br /&gt;&lt;br /&gt;I get some gifts for my kid and my nephews (both very easy audiences), and I expect my family to do the same.&lt;br /&gt;&lt;br /&gt;If you think this is a good idea but your family will freak, then do it. I guarantee they think the same way you do about it. If you're over 30 and you're still giving and receiving gifts from other 30+ year old members of your family, then you're doing it out of routine and everyone probably wants it to stop but doesn't know how to broach the subject.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-5255018515521826110?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/5255018515521826110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=5255018515521826110' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5255018515521826110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5255018515521826110'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2008/11/holiday-advice.html' title='Holiday advice'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-7678831734625622668</id><published>2008-11-10T10:51:00.000-06:00</published><updated>2008-11-10T10:52:08.940-06:00</updated><title type='text'>Critter Happenings</title><content type='html'>Since I had some Saturday errands to run, I decided to take the kiddo with me. And if you have a six year-old, you know that you can't just bundle up the kid and do your errands. You have to make it something SPECIAL.&lt;br /&gt;&lt;br /&gt;Thankfully, that's easy to do. I took the kiddo with me to Starbucks and got myself a coffee and got her one of their little 75-cent triangular pastry thingies, which is enough to turn "riding in the car" into a "Super Special Daddy And Me Outing!"&lt;br /&gt;&lt;br /&gt;Our Starbucks is right next to a T-Mobile store which had a bigass poster of the Google Phone in the window. And the conversation went like this. . .&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Critter: [sounding very much like Veruca Salt] Oooh daddy. I need a Google Phone. I really need one of those.&lt;br /&gt;&lt;br /&gt;Me: Why on earth do you need a Google Phone?&lt;br /&gt;&lt;br /&gt;Critter: WELL. . .if I had a Google Phone I could call up all of my friends and I could talk to 'em every day and I could talk to them for a long time!&lt;br /&gt;&lt;br /&gt;Me (under my breath): Well I think you just made a good case for me to not get you a friggin' Google Phone.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;On another kiddo-related note, I just tried out &lt;a href="http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx"&gt;Microsoft Small Basic&lt;/a&gt;. And, like a lot of Microsoft offerings, it has some compelling features coupled with some deal-breakers.&lt;br /&gt;&lt;br /&gt;On the plus side, the syntax of the language is great for kids. It's a sort of cut-down Visual Basic (with no line numbers, danged fascists) coupled with some simple objects for I/O (text or graphics window), and some simple data structures. It also has a turtle graphics object, which is a great thing for kids, because the cute little turtle drawing lines makes things obvious for kids. For example, here's a program that draws a fractal tree with the turtle.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;angle = 30&lt;br /&gt;delta = 10&lt;br /&gt;distance = 60&lt;br /&gt;Turtle.Speed = 9&lt;br /&gt;DrawTree()&lt;br /&gt;&lt;br /&gt;Sub DrawTree&lt;br /&gt; If (distance &gt; 0) Then&lt;br /&gt;   Turtle.Move(distance)&lt;br /&gt;   Turtle.Turn(angle)&lt;br /&gt;  &lt;br /&gt;   Stack.PushValue("distance", distance)&lt;br /&gt;   distance = distance - delta&lt;br /&gt;   DrawTree()&lt;br /&gt;   Turtle.Turn(-angle * 2)&lt;br /&gt;   DrawTree()&lt;br /&gt;   Turtle.Turn(angle)&lt;br /&gt;   distance = Stack.PopValue("distance")&lt;br /&gt;  &lt;br /&gt;   Turtle.Move(-distance)&lt;br /&gt; EndIf&lt;br /&gt;EndSub&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Some of the examples are more sophisticated (like a program that displays Flickr images), but most of the programs are simple enough to explain to a kid. There's also a little paddle-game that could be expanded to a breakout-game.&lt;br /&gt;&lt;br /&gt;And if you're a kid who didn't write a breakout game in BASIC, then you just haven't lived :)&lt;br /&gt;&lt;br /&gt;Unfortunately, the program has some drawbacks. First off, despite the program being quite small (a 3.5-meg download that installs to about 5 meg including the manual), the program's startup time is abysmally glacially slow -- around ten seconds on my quad-core box. When dealing with "hummingbird on crack" attention spans of most kids, that kind of startup time is a deal-killer.&lt;br /&gt;&lt;br /&gt;Also the help needs some more help. It has a cute little command-helper that expands to a couple of sentences of help-text in the little side-window, but that's not enough. Even if the side-window had a "more help on this" button that'd open up a browse-able and search-able help window with an example of the command in action, it'd help.&lt;br /&gt;&lt;br /&gt;Finally, the program runs multi-instance and multi-document (aka MDI). My choice would be to run multi-instance and give each instance a single expanded document, as that'd be a bit easier for kids to deal with. Overlapping windows aren't as obvious as you think, especially if you're a kid. Being able to open several documents at once is important for Visual Studio, but not for something like this.&lt;br /&gt;&lt;br /&gt;The included PDF file (I thought Microsoft was all about XPS, go figure) looks like it's intended to be printed and followed as a step-by-step guide for kids. That's a nice start, but the online help needs to be more helpful.&lt;br /&gt;&lt;br /&gt;In conclusion, it looks like a good start for parents who are nostalgic to teach their kids some bits of how programs work. I hope it doesn't get abandoned in its current state.&lt;br /&gt;&lt;br /&gt;On a good note, the program doesn't appear to be finished. Given that it's on their "development labs" site and a couple of the toolbar buttons seem to be permanently grayed (syntax check and build), I'm hoping that it'll have its big bugs fixed. If it does, I'll install it on Maggie's lappy so we can both figure how to say "20 GOTO 10" in a structured way :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-7678831734625622668?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/7678831734625622668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=7678831734625622668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/7678831734625622668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/7678831734625622668'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2008/11/critter-happenings.html' title='Critter Happenings'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-6789731329728098942</id><published>2008-11-04T08:24:00.001-06:00</published><updated>2008-11-04T08:24:56.399-06:00</updated><title type='text'>EEE Week two</title><content type='html'>Okay, we've had the EEE PC for a week, and the critter's still really happy with it.&lt;br /&gt;&lt;br /&gt;Turns out that it's not possible to combine the 4-gig C: and 8-gig D: drives into a single drive, as they're two different Flash drives inside the unit. But thankfully there's a pile of information on the internet as to how to prune the extraneous chunks out of EEE XP that you take for granted (file indexing, virtual memory, etc), and I now have a decent amount of elbow room on C:&lt;br /&gt;&lt;br /&gt;One problem I had was that the touchpad was a bit too sensitive and I found myself accidentally clicking and double-clicking when I touched it. And the touchpad was just identifying itself as a generic PS2 mouse, so there weren't any adjustments available for it in the control panel beyond what you could get from a regular mouse (assigning buttons, double-click speed).&lt;br /&gt;&lt;br /&gt;Easy fix, though. It's apparently an Elantech touchpad, and a quick google search will avail you of a replacement driver that fixes the sensitivity issues, allows you to shut off tapping on the pad, and even enables multi-touch. I played around with multi-touch for a while. It's cute but the touchpad is so danged small that it's difficult to use.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I also discovered a "squished" 1024x768 mode that you control with a hotkey. It sets the screen to 1024x768, but with nonrectangular pixels. The upshot is that the one thing that absolutely refused to fit on the screen, Webkinz.com, now works fine. Now Maggie's favorite avatar, "Pinky Pony", looks like she needs a diet :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I also slapped a couple of movies on the D: drive, installed GOM player (like Media Player only better), and discovered that it plays movies very nicely. Tiny speakers are still a problem, though. I offered to put some headphones on 'em, but Maggie prefers to watch movies in our bedroom alone with the lights off.&lt;br /&gt;&lt;br /&gt;This also means I can sell the Zune. The only thing I was using the Zune for was for Maggie-videos on car trips. The EEE doesn't have as much storage as the Zune, but it makes up for it with a bigger screen and much wider format support.&lt;br /&gt;&lt;br /&gt;After that Microsoft rebate thingy (see about two entries ago) and ebaying the Zune, I think I'll end up ahead on this deal.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;According to ASUS, they wanna get the price of the Linux ones down to $200 next year, which is cool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-6789731329728098942?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/6789731329728098942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=6789731329728098942' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/6789731329728098942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/6789731329728098942'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2008/11/eee-week-two.html' title='EEE Week two'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-9119770112811387102</id><published>2008-10-30T08:13:00.002-06:00</published><updated>2008-10-30T08:17:46.601-06:00</updated><title type='text'>My dumb programming idea</title><content type='html'>Here's my programming productivity idea, and it's so absurdly simple that there has to be something wrong with it. . .&lt;br /&gt;&lt;br /&gt;I noticed recently that I use lots of bits of free source code from various places. Stuff like SWFObject or cunitescore or PHPFlashMyAdmin pr AMFPHP or other little bits of eternally updated code that exists on various sites Problem is, I need to check with those sites once in a while to check for bugfixes and the like.&lt;br /&gt;&lt;br /&gt;What if the makers of that code put a little chunk of XML in their header like so. . .&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;&amp;LT;standardCode&amp;GT;&lt;br /&gt;  &amp;LT;name="fribblefrox's kewl graphic object" /&amp;GT;&lt;br /&gt;  &amp;LT;version="1.0.1.22" /&amp;GT;&lt;br /&gt;  &amp;LT;location="http://www.whatever.blurg/code/kewlgraphic/graphicobj.cpp" /&amp;GT;&lt;br /&gt;&amp;LT;/standardCode&amp;GT;&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;Then you'd have an app that'd scan your project directory for files with this header or, even better, a plugin to a development environment that'd scan the files in a project. And once in a while you could run the app or schedule it as a task or press the "check my internet objects" button in your IDE, and it'd compare your files with the ones in the repositories, pester you if something had changed, let you see the changes in a diff-tool (if it's text), and let you decide if you want to replace the existing version with the new one.&lt;br /&gt;&lt;br /&gt;That way keeping your objects updated would be as simple as pressing the "scan c:/documents/projects for changes" button in an app.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Again, this is so absurdly simple that there must be something wrong with the idea. Either it's fatally flawed or it's already been implemented. I know revision control systems do this kind of thing, but that's killing a fly with a shotgun. I don't want to have to subscribe to a source code repository if I just wanna be notified that some little handy piece of javascript I use (like SWFObject) has changed. I'd rather just have something that'd quietly scan my project folders once every couple of weeks and pop up a box that says "Hey, SWFObject just updated to version 1.1.1, but you still have 1.0. Whatcha wanna do?"&lt;br /&gt;&lt;br /&gt;Thoughts?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-9119770112811387102?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/9119770112811387102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=9119770112811387102' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/9119770112811387102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/9119770112811387102'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2008/10/my-dumb-programming-idea.html' title='My dumb programming idea'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-8550150805425327480</id><published>2008-10-29T08:16:00.001-06:00</published><updated>2008-10-29T08:16:56.736-06:00</updated><title type='text'>New Lappy</title><content type='html'>Well after griping about the quality of the software on Maggie's OLPC laptop a couple of weeks ago, we decided to do something about it. After a little discussion, we chose to ebay the OLPC and replace it with one of the legion of baby laptops that hit the market recently. Given that OLPC's are holding their value rather well, we figured we could probably trade it in for another lappy for a net of less than $100.&lt;br /&gt;&lt;br /&gt;So I started looking. And, if you know me, you know I found a deal :)&lt;br /&gt;&lt;br /&gt;Actually this one's from Microsoft. If you use any search-engine nowadays, you'll notice the sponsored links at the top, often combined with some icons as to how well they support the search engine's parent company. Well Microsoft is doing this too, but they're combining that with some pretty impressive rebates. And one of the participating companies is ebay, seller of pretty-much everything on the planet.&lt;br /&gt;&lt;br /&gt;And the rebates are pretty substantial. I got 30% cash-back on the new lappy.&lt;br /&gt;&lt;br /&gt;There's a full description of how to do it &lt;a href="http://www.mymoneyblog.com/archives/2008/08/25-cashback-on-anything-bought-at-ebay.html"&gt;here&lt;/a&gt;, but suffice it to say it's easy to do and it works. My little live.com cashback page tells me that in 52 days I'll be sent $135 by paypal, dropping the net price of Maggie's new Lappy to $314.&lt;br /&gt;&lt;br /&gt;And it looks like the deal works for pretty-much everything that has a "buy it now" price on ebay. I think you need to sign up with live.com, but if you have an old hotmail address laying around somewhere, you're already signed up.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As for the new Lappy (purchased from reseller "multiwavevideo" and highly recommended), it's great. It's an &lt;a href="http://eeepc.asus.com/global/product901.html?n=0"&gt;EEE PC 901 with XP&lt;/a&gt;. It's about the same size as the old Lappy. It's white, which made me sad because they have cute pink and green ones that Maggie would've loved. It has a similar collection of ports and such to the OLPC, although it adds an ethernet and VGA port. While they have hard drive versions available, we opted for the one with the 12 gig flash drive so the unit would be kid-proof and long-battery-lived like the old Lappy.&lt;br /&gt;&lt;br /&gt;My biggest worry was with XP and 12 gig, there'd be pretty-much zero space left for anything else, especially after Windows Update installed 20 updates including new Media Player, .NET, and Silverlight. After uninstalling the built-in apps and installing all the updates, I ended up with 9 gig free (one gig free on the main OS partition and 8 gig on the now-empty app/content partition). I figure between the free space on the app partition and the plummeting cost of SD Cards, it won't be a problem getting a long car-trip's worth of videos and games on this thing.&lt;br /&gt;&lt;br /&gt;Only complaint now is that there's not quite enough free space on the main OS partition to hibernate. Anyone know of a free nondestructive re-partitioner I can use on this thing?&lt;br /&gt;&lt;br /&gt;The screen's basically a scaled down version of those 1280x800 widescreen laptops. It's a 1024x600 screen that's very sharp. It has a couple of hotkey-activated screen modes that are presumably for apps that demand a 4x3 aspect ratio. Basically 800x600 with the sides cut off or 1024x768 with scrolling. Thus-far the only thing we found that simply will not fit is webkinz.com, which is a Flash-based site that (very rudely) refuses to scroll OR resize to fit a smaller screen. All of the other kid-friendly sites (Disney Pixie Hollow, Yahoo Kids, Homestar Runner, The Code Zone [g]) work just fine.&lt;br /&gt;&lt;br /&gt;And, best of all, it runs Flash content like a champ. My biggest complaint about the OLPC was mediocre-to-unusable Flash performance, which made the vast bulk of kid-friendly websites (see above) a poor experience. Suddenly Maggie's enthused to use her Lappy because the kids websites work great.&lt;br /&gt;&lt;br /&gt;It's running one of the new Atom processors. Apparently the first generation of EEE's ran celerons which caused some performance complaints. The Atom, though, is way snappier than it has a right to be. Windows thinks it has two processors, but a check on the BIOS settings reveals that the Atom is actually using "hyperthreading" which was a trick the P4's used to wring out a little extra performance by pretending to be two cores. It's not as nice as an according-to-hoyle dual-core machine, but there's only so much you can expect out of a machine that's half-again as large as VHS videotape.&lt;br /&gt;&lt;br /&gt;The only thing keeping me from getting one of these myself is the keyboard. I like my big cheap Acer laptop because it has a full size keyboard and is great for touch-typing and taking notes in real-time. The EEE keyboard is doing its best with the space it has, but it's cramped and is really uncomfortable for typing. And while I don't have big freaky sausage-fingers, I found it easy to press neighboring keys while typing. Six year-old hands fit it just fine.&lt;br /&gt;&lt;br /&gt;The speakers are microscopic and very quiet. If you wanna watch videos on this thing, get some headphones.&lt;br /&gt;&lt;br /&gt;There wasn't a ton of bundled software. Some of it was important, like their little hotkey software that let you toggle clock speed from "slow and run for eight hours" versus "fast and run for two" and the screen-resolution-switcher. One oddity was that it shipped with both MS Works and StarOffice installed. Given the amount of storage on it, I uninstalled both figuring that Google Docs (which works wonderfully) would be a good choice for now. I can always slap OpenOffice on it later.&lt;br /&gt;&lt;br /&gt;One other feature it brags about is "20 gig of online storage", which is one of those online services that stores your files on their cloud. Given that everybody and their brother nowadays wants to give you free storage on their cloud, I didn't bother with it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So, is it for you? It depends. If you're a kid, absolutely. Maggie's been pining away for a Wii for a year now, but a little Lappy that'll play every Flash game it can find (including Pixie Hollow, which is the biggest danged girl-magnet on the planet) is a good substitute.&lt;br /&gt;&lt;br /&gt;If you're a grownup, it depends on what you wanna do. If you want something to surf the web from the living room, play Bejeweled on the front porch, and play videos while you're on vacation, then absolutely. If you wanna do real work on it, then you'd better at least plan to buy an external USB keyboard or you're gonna hurt your fingers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-8550150805425327480?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/8550150805425327480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=8550150805425327480' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8550150805425327480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/8550150805425327480'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2008/10/new-lappy.html' title='New Lappy'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-4744789569296257279</id><published>2008-10-23T08:25:00.000-06:00</published><updated>2008-10-23T08:26:20.261-06:00</updated><title type='text'>Robocopy is your friend</title><content type='html'>Here's a nice hint. Since I run a little engineering shop, I'm always on the lookout for little utilities that make our system more automated. And this time it turned out to be one already built into Windows.&lt;br /&gt;&lt;br /&gt;Since I have a big terabyte NAS drive hooked up to the network and it's important to keep backups of things, I decided to mirror our most important documents from the engineering machines. And there are loads of free folder-mirroring solutions out there. But it turns out that there's one built into Vista (and is available pre-Vista if you have the "Windows Resource Kit" or you just dig around a bit).&lt;br /&gt;&lt;br /&gt;It's a Microsoft command-line gizmo called "robocopy", and it's basically xcopy on steroids. It's got millions of options, but the most important thing it does over xcopy is that it'll only copy changed files like a standard disk-mirroring utility. That means that if I have 50 gig of mirrored folders but only three files have changed, it'll only copy over those three files.&lt;br /&gt;&lt;br /&gt;So a little batch-writing and work with the standard Windows task-scheduler, and I have a full mirror of our documents. And it's been working just fine for a year now, so I'm happy about it. Actually I mirror the files to a different folder every night (civilgrrl-1/monday/documents, civilgrrl-1/tuesday/documents, etc) so I have a seven-day backup of all of our files.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One good hint. If you're copying files from NTFS to Linux (a distinct possibility as most NAS boxes are running Linux) then use the /FFS command-line switch. When I first tested the robocopy-backup, it was backing up a lot of files that hadn't changed between sessions. Turned out that NTFS's file timestamps were more finely-grained than whatever the NAS is using, and the timestamps weren't exactly the same (just really close). The /FFS switch assumes that timestamps up to 2 seconds apart are the same, which fixed the problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-4744789569296257279?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/4744789569296257279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=4744789569296257279' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/4744789569296257279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/4744789569296257279'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2008/10/robocopy-is-your-friend.html' title='Robocopy is your friend'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-3341268652477476130</id><published>2008-10-22T07:41:00.002-06:00</published><updated>2008-10-22T07:48:09.730-06:00</updated><title type='text'>Found the Flash CS4 bug</title><content type='html'>Since google's still bearing out that I'm the only one with the previously-mentioned bug, I decided to dig a bit. Realizing that CS4 migrated over all of my old CS3 extensions, I started there. After a few rounds of disabling extensions and restarting, it turns out the problem is with the old &lt;a href="http://www.5etdemi.com/blog/archives/2005/03/pixel-tools-v2-available/"&gt;Pixel Tools&lt;/a&gt; extension. Pixel Tools is an extension to the standard drawing tools (pencil, eraser, brush) that gives you pixel-level non-aliased tools.&lt;br /&gt;&lt;br /&gt;And apparently it gives Flash's new IK tools fits.&lt;br /&gt;&lt;br /&gt;Pixel Tools were abandoned in 2005. The JSFL source code is still on the site, so it's conceivable that someone could find what the tools are doing that's upsetting IK and re-release, but I'm not the man for that.&lt;br /&gt;&lt;br /&gt;I almost never use Pixel Tools anyway, so I just disabled it and got on with my life.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-3341268652477476130?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/3341268652477476130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=3341268652477476130' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/3341268652477476130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/3341268652477476130'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2008/10/found-flash-cs4-bug.html' title='Found the Flash CS4 bug'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-5473041324770429260</id><published>2008-10-20T13:52:00.002-06:00</published><updated>2008-10-20T13:54:13.254-06:00</updated><title type='text'>Am I the only one?</title><content type='html'>I just googled for this and got no hits, so I figure that I might as well be the first. Maybe start some discussion.&lt;br /&gt;&lt;br /&gt;Am I the only one getting the following two errors in the output panel of Flash CS4?&lt;br /&gt;&lt;br /&gt;Plugin tool script error in method ik_activateTreesFromSelection&lt;br /&gt;Plugin tool script error in method ik_clearActiveTrees&lt;br /&gt;&lt;br /&gt;Seems to be happening every time I select a graphic in the design window. Anyone else?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-5473041324770429260?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/5473041324770429260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=5473041324770429260' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5473041324770429260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5473041324770429260'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2008/10/am-i-only-one.html' title='Am I the only one?'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-2061389446941058833</id><published>2008-10-20T08:47:00.000-06:00</published><updated>2008-10-20T08:48:05.746-06:00</updated><title type='text'>Much fun was had this weekend</title><content type='html'>Not at all game development related, but we did &lt;a href="http://makerfaire.com/"&gt;Maker Faire&lt;/a&gt; in Austin this weekend and had an absolute blast. Shelly was accepted as a "maker" for her little &lt;a href="http://makerfaire.com/pub/e/1690"&gt;antique sock-knitting machine hobby&lt;/a&gt;. She was pretty-much tied down to her booth all weekend, but she still had lots of fun talking to people and showing off her antique knitting gizmo.&lt;br /&gt;&lt;br /&gt;Even better, she won an Editor's Choice award, which I attribute to the strength of her presentation. There really wasn't much to her booth. Just her and a friend cranking on socks and talking about the machines, but she did take a lot of time to show people how the machines worked and the cool stuff you could do with 'em.&lt;br /&gt;&lt;br /&gt;She also did an audition for &lt;a href="http://make-tv.org/"&gt;Make:TV&lt;/a&gt;. We'll see how that goes.&lt;br /&gt;&lt;br /&gt;Maggie and I had two days to do the entire faire, and we did pretty-much everything. Shelly posted a pile of my pictures &lt;a href="http://www.flickr.com/photos/civilgrrl/sets/72157608210293227/"&gt;here&lt;/a&gt;. As you can see, Maggie loved the snake-bike. We also got to see the eepybird.com diet-coke-mentos-fountain and the life-size mousetrap game, both of which were quite fun to watch.&lt;br /&gt;&lt;br /&gt;There were loads of great things for kids to do free. Singer (the sewing machine people) were helping kids machine-sew cloth lunch bags, and Maggie proudly took hers to school this morning. She also made a kite, a parachute, slime, and innumerable little hand-painted doodads.&lt;br /&gt;&lt;br /&gt;And I didn't get pictures, but they had robot wars going on in the big Austin rodeo arena. Most impressive was the 340-pound class. You don't really get an impression of the violence of colliding robots when you see the show on TV -- imagine two riding lawnmowers crashing into each other at top-speed and jumping five feet in the air and you get the idea.&lt;br /&gt;&lt;br /&gt;All in all, it was a two-day celebration of everything nerdy. It was a blast. I'm sure we'll do it again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-2061389446941058833?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/2061389446941058833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=2061389446941058833' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/2061389446941058833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/2061389446941058833'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2008/10/much-fun-was-had-this-weekend.html' title='Much fun was had this weekend'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-545780986528678162</id><published>2008-10-05T13:14:00.001-06:00</published><updated>2008-10-05T13:14:20.413-06:00</updated><title type='text'>Me the iconoclast</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: verdana; font-size: 13px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "&gt;Ahem. . .&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Putting Windows XP on the OLPC is a terrific idea&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;My kiddo has had her little OLPC XO laptop since February. And it's an awesome little piece of hardware. It's got a great screen with a high-contrast-ebook-mode that looks great and a built-in video camera and it swivels to work as an ebook reader and it has stereo sound and it's got no rotating storage and a spill-resistant keyboard and it's just an ideal little laptop for a kid who wants a computer.&lt;br /&gt;&lt;br /&gt;That is to say that it'd be an ideal kids' laptop if the software wasn't such an &lt;b&gt;absolute lemon&lt;/b&gt;. It's running somesuch linux kernel with a nonstandard UI called "Sugar" that seems to inspired by DeskMate (and this is speaking as a former member of the DeskMate team). The apps (called "activities") are a very mixed bag. Some of 'em are really good but most of 'em are pretty poor. Its all-pervasive "journal" metaphor makes things as simple as bookmarking a website an unintuitive multi-step process.&lt;br /&gt;&lt;br /&gt;Three examples. . .&lt;br /&gt;&lt;br /&gt;Problem 1: The XO has an SD-card slot, so one initial idea I had was to throw some MP3's on a card so Maggie could listen to some music. Problem is, there's nothing that'll play MP3 files. There are a couple of experimental projects out there to play MP3 files, but they're way too complicated to be used by a kid. Furthermore, since the OLPC foundation actively discourages anything that's not open-source of patented, they discourage MP3 even though it's the most obvious standard to support.&lt;br /&gt;&lt;br /&gt;Case 2: I'd like Maggie to learn how to use a word processor and a spreadsheet. Unless I replace the UI with something experimental and 102% unsupported, I can't run that. If it was running XP, I could install OpenOffice or MS Office with no problem.&lt;br /&gt;&lt;br /&gt;Case 3: The OLPC ships with GNU GNASH for playing Flash content in a browser. If you've not tried GNU GNASH, let me save you the time and tell you not to bother. Apart from the most rudimentary timeline-based animations, GNU GNASH does not play Flash content worth a damn. Even sites that are written for very early versions of Flash (like Homestar Runner or my own thecodezone.com which are both written to work with Flash 7) don't work. If you go to the OLPC Wiki, you discover that you can install the real Adobe Flash player on the XO. It's free and it works just fine, but they still don't recommend you install it because, yes, it's not open-source.&lt;br /&gt;&lt;br /&gt;And case 3 really underlines the main weakness with the OLPC's software, and that's that open-source is more important than usability. Their model not only prefers but MANDATES open-source patent-free software, even if that software is useless. Open-source software that doesn't work is preferable to closed-source software that does.&lt;br /&gt;&lt;br /&gt;If Maggie's OLPC ran XP, it'd have Windows Media Player or WinAmp so Maggie could play MP3 files easily. I could put OpenOffice on it so she could learn how to use a word-processor and a spreadsheet and a presentation app (which she would absolutely love because she's all about making presentations at school). Rather than the OLPC's nearly-useless moviemaking app, it'd run the (at least passably usable) Windows Movie Maker so Maggie could record simple videos on it. I could put any of a dozen ebook reader programs on it so I could use its really cool portrait B&amp;amp;W mode as an ebook reader.&lt;br /&gt;&lt;br /&gt;In short, it'd have software that's worthy of the hardware.&lt;br /&gt;&lt;br /&gt;And note that all of this is written from the viewpoint of someone with actual end-user experience and not just some blogger who's against Windows on general principle.&lt;br /&gt;&lt;br /&gt;XP will not kill the XO. To the contrary, XP will save the XO. The XO currently has a slate of software that's about 1/3 speak-n-spell class games, 1/3 "programming environments for kids", and 1/3 stuff abandoned in pre-alpha or proof-of-concept.&lt;br /&gt;&lt;br /&gt;Biggest problem right now is that MS hasn't yet committed to how they're gonna sell XP for the OLPC. If/when MS comes up with a way to reflash and install XP on existing units, I'll be first in line to buy one.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-545780986528678162?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/545780986528678162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=545780986528678162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/545780986528678162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/545780986528678162'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2008/10/me-iconoclast.html' title='Me the iconoclast'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-4361499331810126537</id><published>2008-10-03T14:22:00.000-06:00</published><updated>2008-10-03T14:23:02.277-06:00</updated><title type='text'>What is the blog etiquette?</title><content type='html'>So what is the proper way to respond to a blog comment? Do you comment on your own blog, email the comment-er, or make a new post?&lt;br /&gt;&lt;br /&gt;Eh, I'll do the last. A couple of posts ago, Bryan offered to test the waters for me regarding the iPhone development. And I'm always up for that.&lt;br /&gt;&lt;br /&gt;If you (you being Bryan, everyone else is eavesdropping) want existing source code, you can have it. I don't, though, know what good it'll do. All the source is in C++ (the Retro Pack) or ActionScript (the new games), and I don't think they have enough in common with Objective C to make it good for anything other than a ground-up rewrite. At least that was the case with my games. Apart from reading code to remember how I did things, I didn't end up moving over any code when I rewrote some of my C++ games in ActionScript (Voracity, Shi Sen, Bulldozer).&lt;br /&gt;&lt;br /&gt;As for the games, why don't you (again you being Bryan) start off with your own games? I think Lasso and Evolve would be a natural for the iPhone, especially if you could move the lasso around with the tilt-sensor. Also when you're done with 'em, we don't have to split the revenue. Slap Lasso up on the Apple iPhone store and start making the big bucks.&lt;br /&gt;&lt;br /&gt;Unless you have some kind of agreement with your employer. Then I suppose we can label Lasso as a Code Zone game, although I do intend to give you the lion's share of the proceeds on that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-4361499331810126537?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/4361499331810126537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=4361499331810126537' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/4361499331810126537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/4361499331810126537'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2008/10/what-is-blog-etiquette.html' title='What is the blog etiquette?'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-1315578470953765879</id><published>2008-10-01T15:37:00.001-06:00</published><updated>2008-10-01T15:37:41.511-06:00</updated><title type='text'>Retro Pack Revisit</title><content type='html'>I worked a bit on the retro pack today. The biggest change I have to make is to eliminate the .HLP files. That format has been discouraged since Windows 2000 and is basically unavailable under Vista. You can still download the .HLP viewer on the Microsoft site, but I'm not gonna put my users through that kind of hoop-jumping.&lt;br /&gt;&lt;br /&gt;My first instinct was to do what everyone else does, which is make help into a PDF. Unfortunately my basest of base platforms, Windows 98, no longer has a PDF viewer. I presume that I'll have to do CHM, which is just more monkey-work. I found a couple of HLP-to-CHM convertors that do a pretty horrid job, but I figure it might be good enough for the three minutes that you'll actually use it.&lt;br /&gt;&lt;br /&gt;It looks like Bryan's games are unfortunately lost. Back around 1995 Bryan agreed to write a few games for a pack that needed 11 games completed in six weeks. When the pack went to Cosmi, I dropped Bryan's games from the set (because the contracts were just getting too danged hairy and also I'm a greedy sumbitch). I kept around the source code necessary to build the Cosmi packs but not the Expert packs, as the chance of Expert needing updates was nil. I backed up the Expert stuff on CD, but I can't find any of the old backups anywhere. Bryan backed up his stuff on tape and that's apparently lost too.&lt;br /&gt;&lt;br /&gt;Which is a shame. A couple of his games were awesome. I considered just grabbing the executables off the old Expert CD's, but it turns out his little timer-based animation system wasn't quite as clock-agnostic as he thought. On my machine all of his games run several times too fast. They run beautifully under the Windows 98 emulator.&lt;br /&gt;&lt;br /&gt;So unless I figure out something else, they're lost :(&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now I have to figure out how to market these things. I'll be honest and say that my &lt;a href="http://www.thecodezone.com/pp1.php"&gt;Puzzle Pack 1&lt;/a&gt; is not a big seller. I put it together during a rather different business model for The Code Zone. My original aim was to do daily puzzles and then upsell premium versions of the puzzles with. . .&lt;br /&gt;&lt;br /&gt;1. better music and graphics&lt;br /&gt;2. playable more than once a day.&lt;br /&gt;&lt;br /&gt;Then the embedded ad-thing hit. And I found that I could make more money off ads than I could off actually selling games. So I made non-daily versions of all my puzzles that you could play as many times as you want and uploaded 'em to a couple-dozen game portals.&lt;br /&gt;&lt;br /&gt;So where does that leave the Puzzle Pack? Well, you do have a little nicer music and graphics and they're not web-only so you can play 'em without an internet connection, but that's not all that compelling and isn't worth ten bucks (apparently).&lt;br /&gt;&lt;br /&gt;So my thought at this point is to dump the Puzzle Pack entirely and replace it with the Retro Pack. That way they won't be competing with each other and I can conceivably still offer a big pile of games for a low price.&lt;br /&gt;&lt;br /&gt;But I'll pull the Bulldozers out of the retro-pack because that's still my moneymaker.&lt;br /&gt;&lt;br /&gt;And I was thinking of also making it a freebie if you bought both Duck Tiles and Bulldozer That way you can get a big honkin' pile of games for $20.&lt;br /&gt;&lt;br /&gt;Actually the retro pack is shaping up to be 47 games. I could pump the count up to 48 if I finished up "Alien Isotope", which was a standalone bejeweled knockoff that I started in anticipation of another "N Games for Windows" pack that never happened because the standalone "N Games For Windows" market disappeared with the advent of web games.&lt;br /&gt;&lt;br /&gt;48 isn't bad. It's not a nice round 50, though. Hmmmm.&lt;br /&gt;&lt;br /&gt;Thoughts?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-1315578470953765879?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/1315578470953765879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=1315578470953765879' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/1315578470953765879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/1315578470953765879'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2008/10/retro-pack-revisit.html' title='Retro Pack Revisit'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-5958726008486735660</id><published>2008-09-29T18:55:00.001-06:00</published><updated>2008-09-29T18:55:26.581-06:00</updated><title type='text'>Portable stuff everywhere</title><content type='html'>I got a couple of bumps from people interested in getting my games on an iPhone and/or helping me get there. Looks like it'll require an iPhone SDK subscription ($99) an OSX update on my little Mac Mini ($129) and an iPod touch for device testing ($229). Unfortunately I already wrote a paycheck from The Code Zone, so I'm gonna have to wait until I get some more available cash before I can buy the bits necessary. Figure I'll be able to get all this stuff sometimes in October. I'll keep you posted.&lt;br /&gt;&lt;br /&gt;Most annoying thing is that the plan is pretty locked up. Basically everything's a ground-up rewrite. Even if there was another way to get apps on the phone, Apple won't let you use 'em.&lt;br /&gt;&lt;br /&gt;I'll also take a close look at Android games. Android development is cheaper (specifically free), so that'll be on the horizon too. Android's gotta catch on first, so I have a little elbow-room there.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next is my zillion-dollar idea. Backup hard drives with automated software and such are handy but they have one big problem, and that's that they're usually at the same location as the machine they're backing up. My idea is for a little self-contained backup box (i.e. a little tiny Linux motherboard hooked up to a hard drive) with wifi, and you can set the unit to sleep 23 hours a day and wake up just long enough to copy the changed files from yesterday.&lt;br /&gt;&lt;br /&gt;And the housing is weatherproof and the whole unit works on 120 volts or 12 volts. That way you could stick it in a toolshed in your backyard or in the trunk of your car or in your neighbor's garage or anywhere else with electricity and will be safe if your house burns or floods or whatever.&lt;br /&gt;&lt;br /&gt;And the drive encrypts everything so nobody will have your data if it gets stolen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-5958726008486735660?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/5958726008486735660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=5958726008486735660' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5958726008486735660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/5958726008486735660'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2008/09/portable-stuff-everywhere.html' title='Portable stuff everywhere'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-2883123632749024467</id><published>2008-09-22T11:30:00.001-06:00</published><updated>2008-09-22T11:30:31.678-06:00</updated><title type='text'>Three Things</title><content type='html'>First off, I'm back from Austin. I believe the coverage is going to appear on the site tomorrow and Thursday. I need to forward my notes and pictures to Drew, and the ball will start rolling on that.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Second, I found a really excellent list &lt;a href="http://lifehacker.com/5052582/best-of-the-best-the-hive-five-winners"&gt;here&lt;/a&gt; on lifehacker. Basically they have a weekly "hive five" segment where they posit a question like "what's the best FTP software", then people nominate entries and vote on 'em. They then post the top-5 vote getters. This week they posted a "best of" retrospective of stuff from the past several weeks. So if you're looking for some best-of-breed software that's (mostly) free, look no further.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Third, I find that the most galling part of the economic near-meltdown of the past week isn't that I'm ultimately being billed several thousand dollars to fix bad (and sometimes criminal) decisions made by people who won't end up paying a nickel. The most galling part is that I'm apparently expected to feel grateful to the people raiding my wallet for their belated foresight in avoiding the crash.&lt;br /&gt;&lt;br /&gt;In times like these, I like to analogize. And my favorite business to analogize is McDonald's because their business model is simple (they exchange food for money) and they're ubiquitous. Here's the best, albeit still convoluted, analogy I can come up with.&lt;br /&gt;&lt;blockquote&gt;While sitting in McDonald's today, the manager approached me, telling me that his friend two tables over dropped his meal on the floor, and that I won't be allowed to leave the restaurant until I pay to replace his meal along with a tip to cover the cost of cleanup. Pointing out that I had nothing to do with the accident avails me nothing, and I'm informed that if I don't pay for the meal that they'll call the police and have me arrested for disorderly conduct. Weighing the circumstances, I pull out my wallet and pay for the meal and the tip. The meal is replaced. The tip ends up going to the friend to cover the mental anguish he experienced when he dropped his meal.&lt;br /&gt;&lt;br /&gt;The situation now resolved, I make a hasty exit from the restaurant. As I exit, the manager shouts "hey, don't I get a 'thank you' for solving the problem?".&lt;br /&gt;&lt;br /&gt;I reply with a two-word phrase that's similar to 'thank you' but starts with a different word.&lt;/blockquote&gt;The only place where the analogy falls apart is that I'd clearly never do business with that McDonald's (or maybe any other) again, which isn't exactly an option I have available to me regarding the US economy.&lt;br /&gt;&lt;br /&gt;I guess that's the downfall of analogies. They simplify the model, but they're rarely perfect.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-2883123632749024467?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/2883123632749024467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=2883123632749024467' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/2883123632749024467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/2883123632749024467'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2008/09/three-things.html' title='Three Things'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5927544581291786949.post-1606080033281496691</id><published>2008-09-17T09:35:00.000-06:00</published><updated>2008-09-17T09:36:26.994-06:00</updated><title type='text'>Welcome to day three</title><content type='html'>Day three of the Austin GDC and everybody's tired. One fact of life of trade shows is that the last day is the one where everyone's tired and whiny about the grind. Everybody in the expo hall will be ready to break down and leave even though the thing opened yesterday afternoon.&lt;br /&gt;&lt;br /&gt;Myself, I got to bed early and I'm fresh as a daisy. Unfortunately there's really nothing I have to see this afternoon, so I'm likely going to do one more go-round of the expo floor looking for free pens, then I'll be on my way back to D/FW.&lt;br /&gt;&lt;br /&gt;I went to a google-sponsored seminar on interfacing with YouTube. Seems like a fairly easy thing to do, although save for a few people like the Spore group, not many are taking enough advantage of it. Myself, I'm always up for someone who's willing to donate a big pile of bandwidth to me for free, so I'll have to figure out some way to leverage it. Suffice it to say, YouTube is more than happy to donate a big pile of video bandwidth to you for your game project, so figure out a way to leverage it.&lt;br /&gt;&lt;br /&gt;There are also API's to interface with the comment and rating system. Not sure how useful that is given that 98% of YouTube comments seem to be written by people missing a chromosome or two. To me, that'd be like having free and ready access to everything ever written by David Icke -- an interesting concept, but ultimately just a big pile of stupid.&lt;br /&gt;&lt;br /&gt;We'll see. Coverage gets posted RSN, so you can hook yourself to the YouTube developer community and make that judgement yourself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5927544581291786949-1606080033281496691?l=thecodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thecodezone.blogspot.com/feeds/1606080033281496691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5927544581291786949&amp;postID=1606080033281496691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/1606080033281496691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5927544581291786949/posts/default/1606080033281496691'/><link rel='alternate' type='text/html' href='http://thecodezone.blogspot.com/2008/09/welcome-to-day-three.html' title='Welcome to day three'/><author><name>John Hattan</name><uri>https://profiles.google.com/106460508525236363626</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-M2dWlwJueNg/AAAAAAAAAAI/AAAAAAAAChs/CDG-2NRr3C4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
