<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Turtle Log</title>
	
	<link>http://pileofturtles.com</link>
	<description>A Programmer Blog</description>
	<lastBuildDate>Tue, 26 Jul 2011 01:09:15 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/TurtleLog" /><feedburner:info uri="turtlelog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>TurtleLog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Showbot</title>
		<link>http://feedproxy.google.com/~r/TurtleLog/~3/-5I4ZBvo7gc/</link>
		<comments>http://pileofturtles.com/2011/07/showbot/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 01:54:17 +0000</pubDate>
		<dc:creator>Jeremy Mack</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[showbot]]></category>

		<guid isPermaLink="false">http://pileofturtles.com/?p=456</guid>
		<description><![CDATA[Showbot was born out of love for the wonderful 5by5 podcasting network. Specifically, I created Showbot during the live recording of Back to Work, S1E17. Apropos, considering Back to Work is a podcast about being productive. Showbot started as an IRC bot to answer commonly asked questions in the 5by5 chat room, and has evolved to handle parsing iCal data from 5by5's calendar, scraping the live Shoutcast stream for metadata, mirroring show title suggestions from IRC onto a website, and much more...]]></description>
				<content:encoded><![CDATA[
<p><img style="display: block; margin-left: auto; margin-right: auto;" title="Showbot.png" src="http://pileofturtles.com/wp-content/uploads/2011/07/Showbot.png" alt="Showbot" width="578" height="160" border="0" /></p>
<p>Showbot was born out of love for the wonderful <a href="http://5by5.tv">5by5</a> podcasting network. Specifically, I created Showbot during the live recording of Back to Work, <a href="http://5by5.tv/b2w/17">S1E17</a>. Apropos, considering <a href="http://5by5.tv/b2w">Back to Work</a> is a podcast about being productive. Showbot started as an IRC bot to answer commonly asked questions in the <a href="http://5by5.tv/chat">5by5 chat room</a>, and has evolved to handle parsing iCal data from 5by5&#8242;s calendar, scraping the live Shoutcast stream for metadata, mirroring show title suggestions from IRC onto a <a href="http://showbot.me/">website</a>, and much more.</p>
<h2>From 0 to Bot in 45 Minutes</h2>
<p>I was spurred to create Showbot by fellow 5by5 chat denizen, <a href="http://twitter.com/#!/kimroen">Kim Roen</a>, who said something to the effect of, &#8220;Someone should really make an IRC bot that answers the common questions that people have.&#8221;</p>
<p>Showbot would not exist if not for <a href="https://github.com/cinchrb/cinch">Cinch</a>, a Ruby IRC bot framework rivaling <a href="http://www.sinatrarb.com/">Sinatra</a> in simplicity. I was able to go from concept to functional bot within 45 minutes. <a href="https://gettingreal.37signals.com/">Getting Real&#8217;s</a> philosophy of making the bare minimum product and shipping it is exactly what I needed. If I hadn&#8217;t been able to create a working bot within the first few minutes of messing around with Cinch, I would&#8217;ve assumed IRC bots were too complicated to make for fun. Those first 45 minutes of work on Showbot have lead to many more weeks of development, during which I churned out a mature product.</p>
<h2>Flooding, What&#8217;s That?</h2>
<p>Showbot became popular quickly. With popularity came slowdowns, vast slowdowns. The sluggishness actually became so bad that <a href="http://twitter.com/#!/danbenjamin">Dan Benjamin</a> (the creator of the 5by5 network) and <a href="http://twitter.com/#!/siracusa">John Siracusa</a> poked fun at it <a href="http://5by5.tv/afterdark/31">during a show</a>. It turns out that the amount of messages anyone connected to IRC (even a bot) can send is limited <em>for the entire IRC server</em>. When you pass this limit, you&#8217;re <a href="http://en.wikipedia.org/wiki/Internet_Relay_Chat_flood">flooding</a>.</p>
<p>Cinch throttles the messages the bot sends to keep from being kicked from the IRC server due to excess flooding. The main culprit was the !suggestions command, which returned the list of show title suggestions from the last few hours. During a live taping it&#8217;s not uncommon to see more than 60 suggestions, which means Showbot was sending 60 messages for each user that requested the list. The throttling caused messages to arrive minutes later from when commands were issued. A more complex solution was necessary.</p>
<h2>Hosting</h2>
<p>Showbot had outgrown IRC. I talked with <a href="https://github.com/dominikh">Dominik</a>, the creator of Cinch, and he agreed that IRC simply wasn&#8217;t designed for the volume of messages Showbot wanted to send. Showbot needed a website to display title suggestions. Showbot also had to be rewritten to allow these suggestions to be accessed by the web process. In the mean time, Showbot had also outgrown my flakey home network connection.</p>
<p>I first decided to go with <a href="http://www.heroku.com/">Heroku</a>, because it was dead simple to setup. However, I found out the limitations of the free plan on Heroku caused the web service to be unloaded, and then reloaded once someone visited the website later. This caused Showbot to disconnect from IRC until someone visited the website again, not good. These disconnects were my fault, because I decided to tightly couple the website and IRC bot. Showbot needed to be rewritten, again.</p>
<h2>2.0</h2>
<p>For Showbot 2.0 I rewrote everything. Title suggestions now get stored in a database. The web process runs separately and accesses the database. <a href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller">MVC</a> never seemed so stupid obvious. That&#8217;s a lesson I&#8217;ll never need to learn again. Now Showbot needed somewhere to live, and it was clear that I couldn&#8217;t do this for free. I had grand visions of pushing the suggestions into a <a href="https://gist.github.com/">Gist</a> to achieve free hosting, but I realized that I was being a cheapskate.</p>
<h2>showbot.me</h2>
<p>I bought a domain name, now it was time to serious. Next, I needed a host. I compared many hosting providers and decided on <a href="http://www.linode.com/?r=14c4604d9ac6fb6345918128f71b7e74aa81aa3b">Linode</a> based on this awesome <a href="http://journal.uggedal.com/vps-performance-comparison/">VPS comparison article</a>. And it turned out they were right, Linode is fucking awesome. With everything in place I launched <a href="http://showbot.me/">showbot.me</a> and crossed my fingers.</p>
<h2>Reception</h2>
<p>Dan Benjamin and Merlin Mann were the first to experience <a href="http://showbot.me/">showbot.me</a>. I got lucky and their reactions were <a href="http://5by5.tv/afterdark/32">broadcast live</a>. Hearing this is what every programmer hopes to have happen when someone uses something they create. I was blown away by the warm reception I got by the 5by5 broadcasters and community. It is hard to convey in words how meaningful it is to have something you created be used and loved.</p>
<p>Needless to say, I&#8217;m going to keep working on Showbot, adding more features and polish. Showbot is open source and is <a href="https://github.com/mutewinter/Showbot">hosted on GitHub</a>. Thanks to Dan Benjamin for building 5by5 and managing to find the best show hosts seen on any tech podcasting network. And of course, thanks to the awesome 5by5 community.</p>
<p><a href="https://github.com/mutewinter/Showbot"><img class="nohover" style="display: block; margin-left: auto; margin-right: auto; border-style: initial; border-color: initial; border-width: 0px;" title="Showbot github Button" src="http://pileofturtles.com/wp-content/uploads/2011/07/Showbot_Button.png" alt="" width="150" height="32" /></a></p>

]]></content:encoded>
			<wfw:commentRss>http://pileofturtles.com/2011/07/showbot/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://pileofturtles.com/2011/07/showbot/</feedburner:origLink></item>
		<item>
		<title>Temporal Awareness – Fixing Multitasking</title>
		<link>http://feedproxy.google.com/~r/TurtleLog/~3/L2td4V7oi_o/</link>
		<comments>http://pileofturtles.com/2011/05/temporal-awareness-fixing-multitasking/#comments</comments>
		<pubDate>Sat, 07 May 2011 17:08:05 +0000</pubDate>
		<dc:creator>Jeremy Mack</dc:creator>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[idevblogaday]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://pileofturtles.com/?p=440</guid>
		<description><![CDATA[When a user launches an iPhone app it's really important to give them a consistent experience. They should be able to trust that the app is going to allow them to accomplish the task they have set out to complete. Throwing them into a saved state from three days ago is jarring and tedious to unwind. App developers need to be aware that users will sometimes be in a hectic environment with time constraints. A user correlates the app icon with solving a problem they have, not displaying the solution to the last problem they solved...]]></description>
				<content:encoded><![CDATA[
<p><a href="http://pileofturtles.com/wp-content/uploads/2011/05/Temporal_Awareness_Header.jpg"><img class="aligncenter size-full wp-image-441" title="Back back back back sad" src="http://pileofturtles.com/wp-content/uploads/2011/05/Temporal_Awareness_Header.jpg" alt="" width="578" height="160" /></a></p>
<p>When a user launches an iPhone app it&#8217;s really important to give them a consistent experience. They should be able to trust that the app is going to allow them to accomplish the task they have set out to complete. Throwing them into a saved state from three days ago is jarring and tedious to unwind. App developers need to be aware that users will sometimes be in a hectic environment with time constraints. A user correlates the app icon with solving a problem they have, not displaying the solution to the last problem they solved.</p>
<h2>The Problem</h2>
<h3>In the Olden-Times</h3>
<p>Before iOS 4 many apps didn&#8217;t have this problem. State saving wasn&#8217;t part of the OS, so most apps launched in a blank slate state. Some apps had started using <a href="https://github.com/facebook/three20/wiki/URL-based-Navigation/8c7901335c3ab952c4bb841740c07d3e7817847d">URL based Navigation</a>, as popularized Facebook&#8217;s <a href="http://three20.info/">three20</a> framework, as a way to save state. Apps using this method to preserve state often fall victim to placing their users in a deep location within a navigation tree with no way to escape. Facebook for iPhone attempts to solve this problem by allowing the user to tap the Facebook logo to return to the home screen. However, this isn&#8217;t a standard UIKit action, so most users don&#8217;t know it exists.</p>
<h3>Multitasking Made it Worse</h3>
<p>After iOS 4, almost all apps suffer from this problem. If the application is complex enough to have multiple levels of depth in a Navigation Controller, then it will suffer from this problem. The problem goes away once the app is killed in the background, meaning that apps with a larger memory footprint suffer this problem less. For example, your state in Tiny Wings is only saved for a short period of time before it is killed because it uses so much memory. On the other hand, Twitter for iPhone will hang around in memory much longer because it has a comparably smaller memory footprint. However, since Twitter for iPhone uses URL based Navigation, it still suffers from this problem even after being killed in the background.</p>
<p>The solution is Temporal Awareness.</p>
<h2>Temporal Awareness</h2>
<p>Apps can easily record the last time they were closed or lost focus. If the app then checks this time when it is next launched, it can tell how long it has been since the user last used it. If that time is past some constant, say a few hours, the user state should be cleared and they should be presented with the main screen with empty input fields.</p>
<p>If the app in question requires the user to enter more than a few values, a flight booking app for example, then a history view should be employed if the user wishes to return to a previous query. The app should still launch on the main screen with the user input fields blank.</p>
<p>Games should always save the state once they lose focus. They should still make use of Temporal Awareness to decide how to present the saved state to the user. If it has been less than a few hours, simply putting the user back into the game with a resume button is fine. If it has been longer, then presenting them with the main screen of the game, but with an option to continue from their last session.</p>
<h2>The Offenders</h2>
<h3>Maps</h3>
<p>How many times have you opened the built-in Maps app only to find that it is on a detail screen from a business you looked up weeks ago? Preserving this level of depth into the app would have been incredibly helpful if this was half an hour after you began planning the trip. Maps saves its state to disk because it was created long before iOS had multitasking. This was a nice stopgap, but it should be updated to be temporally aware.</p>
<h3>Safari</h3>
<p>After a few days of iPhone usage, you&#8217;ll end up with many pages in Safari that aren&#8217;t relevant. Since Safari is saving these URLs to disk, you will eventually be required to close them all by hand. What&#8217;s worse is Safari&#8217;s behavior once you close them all by hand and then return to the app later. The bookmarks modal view is displayed, requiring the user to dismiss this view if they just wanted to search Google or open a website that wasn&#8217;t bookmarked. Safari should be aware of the last time the user made use of the app, and display a startup view accordingly.</p>

]]></content:encoded>
			<wfw:commentRss>http://pileofturtles.com/2011/05/temporal-awareness-fixing-multitasking/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://pileofturtles.com/2011/05/temporal-awareness-fixing-multitasking/</feedburner:origLink></item>
		<item>
		<title>Framer – An iOS Screenshot Creator</title>
		<link>http://feedproxy.google.com/~r/TurtleLog/~3/wIjRJ9yZye0/</link>
		<comments>http://pileofturtles.com/2011/04/framer-an-ios-screenshot-creator/#comments</comments>
		<pubDate>Sat, 23 Apr 2011 12:18:53 +0000</pubDate>
		<dc:creator>Jeremy Mack</dc:creator>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[idevblogaday]]></category>

		<guid isPermaLink="false">http://pileofturtles.com/?p=415</guid>
		<description><![CDATA[I thought it was time to finally give something back to the wonderful iOS / Mac developer community. Acorn, the awesome image editor created by Gus Mueller, inspired me to make something. He just released version 3.0 a couple weeks ago, and I'm hooked. With layer styles, it's replacing Photoshop for all of my development needs...]]></description>
				<content:encoded><![CDATA[
<p><a href="http://pileofturtles.com/wp-content/uploads/2011/04/Framer_Header.jpg"><img class="aligncenter size-full wp-image-417" title="Framer" src="http://pileofturtles.com/wp-content/uploads/2011/04/Framer_Header.jpg" alt="" width="578" height="160" /></a></p>
<p>I thought it was time to finally give something back to the wonderful iOS / Mac developer community. <a href="http://flyingmeat.com/acorn/">Acorn</a>, the awesome image editor created by <a href="http://twitter.com/#!/ccgus">Gus Mueller</a>, inspired me to make something. He just released version 3.0 a couple weeks ago, and I&#8217;m hooked. With layer styles, it&#8217;s replacing Photoshop for all of my development needs.</p>
<p>What surprised me the most about Acorn is the awesome <a href="http://flyingmeat.com/acorn/docs/">documentation</a>. Seriously, go look at it. Screenshots on every page, heaven. While reading through the documentation, I discovered that it is possible to <a href="http://flyingmeat.com/acorn/docs/automation.html">script Acorn</a> to do almost anything. What surprised me even more was that one of the scripting languages supported was JavaScript. It&#8217;s a customized version of JavaScript called <a href="http://jstalk.org/">JSTalk</a>, which Gus also put together. It even comes with an IDE!</p>
<h2>The Inspiration</h2>
<p>I had just got done releasing the 2.0 update for <a href="http://bit.ly/nodiceapp">No Dice &#8211; The Magic Assistant</a>. As with all app updates, there are release notes to create, descriptions to update, screenshots to make, and websites to tweak. One particularly frustrating part about updating the website is creating new pictures. It&#8217;s easy to take screenshots, but it&#8217;s tedious use to Photoshop to put screenshots inside the device frame and then export them in different sizes and filetypes.</p>
<p>That&#8217;s when inspiration struck. Acorn could do this, and better yet, Acorn can do this without any human interaction required. I decided to write a JSTalk script to create my framed screenshots for the <a href="http://nodiceapp.com">No Dice website</a>.</p>
<h2>The Creation</h2>
<p>In no time at all I had a <a href="https://github.com/mutewinter/Framer/blob/master/framer.jstalk">prototype command line script</a>, written in JSTalk, that took one screenshot as an argument and spit out the framed image. I only ran into one hiccup when trying to figure out how to center the screenshot layer, which <a href="http://twitter.com/#!/ccgus/status/59778799063154688">Gus promptly answered</a> on Twitter. The only thing it lacked was batch image processing.</p>
<p>That&#8217;s where Python entered the ring. I needed a way to iterate through files in a folder, something JavaScript doesn&#8217;t do since it wasn&#8217;t written with the intention of dealing with files on a disk. I made a <a href="https://github.com/mutewinter/Framer/blob/master/framer.py">Python wrapper</a> that allowed me to specify a directory containing many screenshots.</p>
<p>After getting the batch processing working, I added the ability to detect landscape and portrait screenshots, and use the proper Acorn file. Finally, I added support for the iPhone 4. Since I&#8217;ve got an iPhone app on the way, I figured it&#8217;d be nice to automate the creation of its screenshots also.</p>
<h2>The Code</h2>
<p>You can go check out the code on github right now!</p>
<p><a href="https://github.com/mutewinter/Framer"><img class="nohover" style="display: block; margin-left: auto; margin-right: auto;" title="Github_Button.png" src="http://pileofturtles.com/wp-content/uploads/2011/04/Github_Button.png" border="0" alt="Github Button" width="150" height="32" /></a></p>
<p>Of course, you&#8217;ll need <a href="http://flyingmeat.com/acorn/">Acorn</a> to make this all work. Go grab a copy while it&#8217;s still on sale for <strong>30 bucks</strong>! Also, be sure to download JSTalk and put it in your path (or the same folder with Framer) before running the script.</p>
<p><a href="https://github.com/mutewinter/Framer">Framer</a> currently supports iPhone and iPad screenshots in landscape and portrait orientations. The home button is assumed to be on the right side of the device for landscape. Retina iPhone screenshots are scaled by 50% to fit inside of the 320&#215;480 screen. Framer is configurable by modifying the constants in the script. You can turn the creation of thumbnails on and off, and tweak the size and filetype of the output files.</p>
<h2>Screenshot</h2>
<p><img style="display: block; margin-left: auto; margin-right: auto;" title="It's life-changing" src="http://pileofturtles.com/wp-content/uploads/2011/04/framer_info.jpg" border="0" alt="Framer info" width="450" height="550" /></p>
<h2>Special Thanks</h2>
<p><a href="https://github.com/mutewinter/Framer">Framer</a> wouldn&#8217;t be possible without:</p>
<p>- <a href="http://twitter.com/#!/ccgus">Gus Mueller</a>, who made <a href="http://flyingmeat.com/acorn/">Acorn</a> so freaking awesome.<br />
- <a href="http://twitter.com/#!/maxdicapua">Max Di Capua</a>, who made an awesome <a href="http://maxdicapua.tumblr.com/post/3619140813">iPad 2 PSD</a>.<br />
- <a href="http://twitter.com/#!/teehanlax">teehan+lax</a>, who broke their backs making the canonical <a href="http://www.teehanlax.com/blog/2010/06/14/iphone-gui-psd-v4/">iPhone 4 PSD</a>.</p>
<p>&nbsp;</p>

]]></content:encoded>
			<wfw:commentRss>http://pileofturtles.com/2011/04/framer-an-ios-screenshot-creator/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://pileofturtles.com/2011/04/framer-an-ios-screenshot-creator/</feedburner:origLink></item>
		<item>
		<title>Smelly Languages</title>
		<link>http://feedproxy.google.com/~r/TurtleLog/~3/8tcmDGtBDv0/</link>
		<comments>http://pileofturtles.com/2011/04/smelly-languages/#comments</comments>
		<pubDate>Sat, 09 Apr 2011 12:20:18 +0000</pubDate>
		<dc:creator>Jeremy Mack</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[idevblogaday]]></category>

		<guid isPermaLink="false">http://pileofturtles.com/?p=407</guid>
		<description><![CDATA[Why do some programming languages smell? They make us grimace at the thought of writing code using them. Maybe we spent too many sleepless nights with one of them in the computer lab for a college project. Perhaps it was the language we used to code an application for a client that turned out to be a real jackass. Whatever the reason, some programming languages carry a stigma with them for no good reason...]]></description>
				<content:encoded><![CDATA[
<p><img style="display: block; margin-left: auto; margin-right: auto;" title="Smelly-Languages.jpg" src="http://pileofturtles.com/wp-content/uploads/2011/04/Smelly-Languages.jpg" border="0" alt="Smelly Languages" width="578" height="160" /></p>
<p>Why do some programming languages smell? They make us grimace at the thought of writing code using them. Maybe we spent too many sleepless nights with one of them in the computer lab for a college project. Perhaps it was the language we used to code an application for a client that turned out to be a real jackass. Whatever the reason, some programming languages carry a stigma with them for no good reason.</p>
<p>It&#8217;s easy to find a new programming language or framework for the next project. Had a terrible time trying to script PowerPoint automation with Python? That&#8217;s fine, just use Ruby! Besides, learning a new language is fun and makes us better programmers.</p>
<h2>The Downside</h2>
<p>The downside comes when a particular programming language is the one that is best suited for a project. Say your company has a ton of C# code that already accomplishes 90% of the project, but you really have an aversion for anything Microsoft. Since you&#8217;re a programmer extraordinaire you decide to rewrite everything in Java! Some of your coworkers take notice that your project repository doesn&#8217;t open in Visual Studio and come to your desk to ask you about it. What ensues is a three hour discussion about why C# sucks and Java is the best programming language every invented.</p>
<p>We lose sight of the goal when our <a href="http://sethgodin.typepad.com/seths_blog/2010/01/quieting-the-lizard-brain.html">lizard brain</a> makes us believe a certain programming language is the plague of the earth. Instead of realizing that nearly every language can be used to accomplish the same problems, we quibble over why the lack of switch statements makes it impossible for us to code.</p>
<h2>Mending Hurt Feelings</h2>
<p>The one sure fire way to get over the irrational hatred of a programming language is to, <em>gasp</em>, write something new with it. Oh man, that sucks. I have to download this abomination of a language and clutter up my pristine system with yet another compiler? Okay fine, maybe you don&#8217;t. There is another way. This way is harder, and requires some internal dialog. You&#8217;ve got to constantly remind yourself that just because you don&#8217;t like something doesn&#8217;t mean it sucks for everyone.</p>
<p>If it is the best language for the job, you&#8217;re going to need to overcome your fears. Your co-workers will love you for it and you&#8217;ll have added another tool to your arsenal.</p>
<h2>The Real Problem</h2>
<p>I think the real problem is that when we dislike a certain language, we haven&#8217;t used it recently. The important thing to remember is that we get better at programming every time we write code. This means that we can better map abstract problems to code and data structures. It&#8217;s hard to admit, but sometimes it&#8217;s our own stupidity that causes us to have a hard time with a programming language.</p>
<p>Lets see if this is true for you.</p>
<p>1. What was the first programming language you learned in college / at your first job?<br />
2. Do you dislike that programming language?<br />
3. How long has it been since you&#8217;ve used it for a project?</p>
<p>If you said no to question two, then you&#8217;re already on the path to enlightenment. If not, was it more than a year ago? I bet you&#8217;ve gotten much better a programming since then. In fact, I bet if you looked at the code you wrote back then you&#8217;d be surprised at how many things you&#8217;d do differently now. It&#8217;s especially hard to overcome this bias when you&#8217;re in an environment where you&#8217;ll never to write code in that language again. The important thing is that you need to be aware that you have this predisposition and not let it color your opinion of some project or someone.</p>
<p>It&#8217;s hard for us to imagine someone using a programming language we suck at to accomplish something great. We&#8217;re computer nerds, we solve problems. We want to solve their problem for them.</p>
<h2>Conclusion</h2>
<p>I&#8217;m not perfect either. I have held a hatred inside of me for many programming languages. I have spent countless hours arguing with co-workers, friends, and animals about why their language sucks and why mine requires half the code and runs 11 times faster. I wrote post to myself, as a way to finally hammer home that no programming language truly sucks. Yes, some languages aren&#8217;t suited for certain jobs (a JavaScript C compiler comes to mind), but they all have their place. Some of them have a place in history, we may not use architectures that lend themselves to those languages anymore, but they were still a great tool to solve problems in their day. That doesn&#8217;t mean we should hate them.</p>
<p><em>P.S. If you&#8217;re not a programmer, but you go this far, copy the entire text of this article into a text editor. Replace &#8216;programming language&#8217; with a technology you frequently interact with (operating systems, mobile phones, and web browsers come to mind). Less hate = more love.</em></p>

]]></content:encoded>
			<wfw:commentRss>http://pileofturtles.com/2011/04/smelly-languages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://pileofturtles.com/2011/04/smelly-languages/</feedburner:origLink></item>
		<item>
		<title>How I Became Productive</title>
		<link>http://feedproxy.google.com/~r/TurtleLog/~3/vmj3le-9ujo/</link>
		<comments>http://pileofturtles.com/2011/03/how-i-became-productive/#comments</comments>
		<pubDate>Sat, 26 Mar 2011 16:00:35 +0000</pubDate>
		<dc:creator>Jeremy Mack</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[idevblogaday]]></category>

		<guid isPermaLink="false">http://pileofturtles.com/?p=384</guid>
		<description><![CDATA[Last summer I stumbled onto a book called The 4-Hour Work Week. I decided I could risk one of my Audible credits after seeing it praised many times. It was really a case of the Rule of Seven working flawlessly. I started listening to the audio book while driving home from a long weekend. After listening to the book for an hour I pulled my car onto the shoulder of the highway and took a picture of the mile marker...]]></description>
				<content:encoded><![CDATA[
<p><img style="display: block; margin-left: auto; margin-right: auto;" title="How-I-Became-Productive.jpg" src="http://pileofturtles.com/wp-content/uploads/2011/03/How-I-Became-Productive.jpg" border="0" alt="How I Became Productive" width="578" height="160" /></p>
<p>This is my first post as part of <a href="http://idevblogaday.com/">iDevBlogADay</a>, a fantastic site hosted by <a href="http://twitter.com/mysterycoconut">@mysterycoconut</a> to encourage developers to blog more. I have been waiting excitedly on the list for the last few months, and I&#8217;m happy I finally have a chance to deface his site with my ramblings.</p>
<p>Last summer I stumbled onto a book called <a href="http://amzn.to/gloDdT">The 4-Hour Work Week.</a> I decided I could risk one of my Audible credits after seeing it praised many times. It was really a case of the <a href="http://thebabyboomerentrepreneur.com/258/what-is-the-rule-of-seven-and-how-will-it-improve-your-marketing/">Rule of Seven</a> working flawlessly. I started listening to the audio book while driving home from a long weekend. After listening to the book for an hour I pulled my car onto the shoulder of the highway and took a picture of the mile marker.</p>
<p><img style="display: block; margin-left: auto; margin-right: auto;" title="Small Mental Break.png" src="http://pileofturtles.com/wp-content/uploads/2011/03/Small-Mental-Break.png" border="0" alt="Screen shot 2011 03 24 at 8 07 40 PM" width="523" height="485" /></p>
<p>I wanted to capture this moment, to remember this moment forever. The book made me think about my life. It made ask myself some uncomfortable questions, and realize that I had many things I wanted to do before I died. It woke me up and made me realize that I won&#8217;t ever have this much free time again in my life. I felt the strong urge to finally use the MacBook I had bought a few months earlier to actually build something for the iPad, which was the original plan.</p>
<p><span style="text-decoration: underline;">The 4-Hour Work Week</span> helped me immensely. It helped me figure out that I didn&#8217;t need to get better at multitasking, nor did I need to plan every minute of every day. What I needed to do was to remove distractions and enable myself to focus on what is actually important to me. The biggest impact on my productivity was the &#8220;information diet.&#8221;</p>
<blockquote><p>No newspapers, magazines, audiobooks, or nonmusic radio &#8230; No news websites whatsoever &#8230; No television at all, except one hour of pleasure viewing each evening &#8230; No web surfing at the desk unless it is necessary to complete a work task&#8230;</p></blockquote>
<p>Timothy Ferris suggests imposing this diet for five days as a way to shock your system into being productive. I imposed it on myself until I completed my first iPad app. I knew that my biggest time wasters were things like reddit, RSS readers, and links from Twitter. It was hard, but four months later I published my first app, <a href="http://nodiceapp.com">No Dice</a>, on November 12th. To this day, I still don&#8217;t use an RSS reader. I found that I simply cannot be productive when I have 300 news items to digest every day.</p>
<h2>Only The First Step</h2>
<p>After finally giving birth to my app baby, I was ready for some serious goofing off. I had a decadent TV, video game, and news binge that lasted for a few weeks. But something strange was niggling in the back of my head, something had changed. I didn&#8217;t enjoy goofing off as much as before, I yearned to built something again.</p>
<p>During my information binge, I discovered that I really liked the iOS developer community. Reading inspirational stories like those of <a href="http://struct.ca/2010/the-story-so-far/">Matt Rix</a>, <a href="http://tapity.com/iphone-app-marketing/success/">Jeremy Olson</a>, and <a href="http://gamesfromwithin.com/the-power-of-free">Noel Llopis</a> made me really want to join the community. I made this blog and started to capture some of my thoughts about programming and programmer culture.</p>
<h2>Productivity Porn</h2>
<p><span style="text-decoration: underline;">The 4-Hour Work Week</span> isn&#8217;t the be-all end-all of productivity. <a href="http://amzn.to/eaIwrt">Getting Things Done</a> by David Allen and the <a href="http://5by5.tv/b2w">Back to Work podcast</a> with the lovable Merlin Mann are two other great resources that dip further into the mechanics of completing projects. Merlin is particularly good at cutting through the nonsense that you think is keeping you from working and telling you to get the fuck to work.</p>
<h2>What&#8217;s Next?</h2>
<p>Now that I have conquered my white whale I&#8217;m working on my next projects. That&#8217;s right, projects. 37Signals posted a <a href="http://37signals.com/svn/posts/908-tiny-projects-keep-it-new">great article</a> a few years back about keeping projects small to make them stay interesting and accomplishable. I decided to try it out and I now have three partially completed apps to show for it, and I&#8217;m incredibly happy about it. The interesting thing was, once I got to the third app I found I had actually hit something I really wanted to make. I lost sleep thinking about new features and woke up before my alarm went off in the morning because I wanted to code so badly.</p>
<p>I think that this is the really interesting part about small projects, they let you keep trying new things until you find something you really love to work on. Assuming that the first project you come up with has to be the one you ship can lead to working on something you don&#8217;t love. You&#8217;re not very likely to fix bugs or add features to something you don&#8217;t enjoy. Find something you love and it won&#8217;t feel like work anymore.</p>

]]></content:encoded>
			<wfw:commentRss>http://pileofturtles.com/2011/03/how-i-became-productive/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://pileofturtles.com/2011/03/how-i-became-productive/</feedburner:origLink></item>
		<item>
		<title>iPad App Store Pricing Error</title>
		<link>http://feedproxy.google.com/~r/TurtleLog/~3/EYnS40d6KTg/</link>
		<comments>http://pileofturtles.com/2011/02/ipad-app-store-pricing-error/#comments</comments>
		<pubDate>Sat, 19 Feb 2011 15:29:04 +0000</pubDate>
		<dc:creator>Jeremy Mack</dc:creator>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://pileofturtles.com/?p=362</guid>
		<description><![CDATA[Recently, Apple added the ability to indicate if an app has been previously installed by a user. It indicates this by switching the purchase button, which previously displayed the app's price, to show the word INSTALL. I was very happy to see this new feature added to the App Store, as previously it required searching through your email receipts from iTunes or using some arcane wish list tricks...]]></description>
				<content:encoded><![CDATA[
<p><a href="http://pileofturtles.com/wp-content/uploads/2011/02/iPad-Pricing-Error.jpg"><img class="aligncenter size-full wp-image-372" title="Oh Crap" src="http://pileofturtles.com/wp-content/uploads/2011/02/iPad-Pricing-Error.jpg" alt="" width="578" height="160" /></a></p>
<p>Recently, Apple <a href="http://www.148apps.com/news/update-ipad-app-store-brings-refined-search-previously-installed-items/">added the ability</a> to indicate if an app has been previously installed by a user. It indicates this by switching the purchase button, which previously displayed the app&#8217;s price, to show the word INSTALL. I was very happy to see this new feature added to the App Store, as previously it required searching through your email receipts from iTunes or using some <a href="http://uneasysilence.com/archive/2010/09/15321/">arcane wish list tricks</a>.</p>
<p>This morning, I decided to search the iPad App Store for Things, an app I had been considering purchasing recently. I opened up the App Store and went up to the search field. I typed in &#8220;things&#8221; and tapped Search. A few seconds later, my search was completed. I saw the app I was interested in, <a href="http://culturedcode.com/things/ipad/">Things by Cultured Code</a>, listed in the search results. However, something seemed to be a bit off&#8230;</p>
<p style="text-align: center;"><a href="http://pileofturtles.com/wp-content/uploads/2011/02/iPad_App_Store_Error.jpg"><img class="size-full wp-image-364  aligncenter" title="iPad App Store Error" src="http://pileofturtles.com/wp-content/uploads/2011/02/iPad_App_Store_Error.jpg" alt="" width="461" height="614" /></a></p>
<p>Wow, I must buy a lot of apps! Actually, I only own two of the apps in this listing (Evernote and 2Do). The other apps show up with the word INSTALL. <strong>Even apps I don&#8217;t own!</strong> I tapped Things to investigate further&#8230;</p>
<p style="text-align: center;"><a href="http://pileofturtles.com/wp-content/uploads/2011/02/Correct_Things_Listing.jpg"><img class="aligncenter size-full wp-image-370" title="Correct Things Listing" src="http://pileofturtles.com/wp-content/uploads/2011/02/Correct_Things_Listing.jpg" alt="" width="461" height="614" /></a></p>
<p style="text-align: left;">Hmm, now the app has a price. I executed the search again, and sadly the results still show with no price and only the INSTALL button. I hope this error gets correctly swiftly, as it could easily create mistrust of the App Store&#8217;s listings.</p>
<p style="text-align: left;"><em>Note: I executed these searches on a iPad connected to a trusted Wi-Fi hotspot. My iPad is not jailbroken and is running iOS 4.2.1.</em></p>

]]></content:encoded>
			<wfw:commentRss>http://pileofturtles.com/2011/02/ipad-app-store-pricing-error/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://pileofturtles.com/2011/02/ipad-app-store-pricing-error/</feedburner:origLink></item>
		<item>
		<title>The PlayStation’s Interface Sucks</title>
		<link>http://feedproxy.google.com/~r/TurtleLog/~3/PLuMmUiB2i8/</link>
		<comments>http://pileofturtles.com/2011/02/the-playstations-interface-sucks/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 18:42:37 +0000</pubDate>
		<dc:creator>Jeremy Mack</dc:creator>
				<category><![CDATA[Video Games]]></category>
		<category><![CDATA[critique]]></category>
		<category><![CDATA[playstation]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://pileofturtles.com/?p=335</guid>
		<description><![CDATA[When I first starting writing this post it was going to be titled Comparing Console UIs. The article was going to be about the Xbox 360 and PlayStation 3 interfaces. I wanted to highlight what they did right and what they did wrong. After writing a glowing review of the Xbox 360 interface I moved on to the PS3. Within a few minutes I realized the article would essentially be trashing the PS3 interface and lauding the Xbox 360. I decided to cut out the Xbox 360 part (since really, who cares about praise) and just trash the PS3!]]></description>
				<content:encoded><![CDATA[
<p><img class="alignnone size-full wp-image-337" title="The PlayStation Interface Sucks" src="http://pileofturtles.com/wp-content/uploads/2011/02/The-PlayStation-Interface-Sucks.jpg" alt="" width="578" height="160" /></p>
<p>When I first starting writing this post it was going to be titled <em>Comparing Console UIs</em>. The article was going to be about the Xbox 360 and PlayStation 3 interfaces. I wanted to highlight what they did right and what they did wrong. After writing a glowing review of the Xbox 360 interface I moved on to the PS3. Within a few minutes I realized the article would essentially be trashing the PS3 interface and lauding the Xbox 360. I decided to cut out the Xbox 360 part (since really, who cares about praise) and just trash the PS3!</p>
<h2>Sucking Long and Hard</h2>
<p>No, not that kind. No. This kind of sucking involves years of refinement. The PlayStation 3 has been updated many times since it was released. Some of these updates have brought refinements to the interface. Yet still, the interface doesn&#8217;t come close to being intuitive or easy to use.</p>
<h2>The XrossMediaBar</h2>
<p><img title="PlayStation_XMB.jpg" src="http://pileofturtles.com/wp-content/uploads/2011/02/PlayStation_XMB.jpg" border="0" alt="PlayStation XMB" width="400" height="223" /></p>
<p>Yea, that&#8217;s what it&#8217;s really called. <a href="http://en.wikipedia.org/wiki/XrossMediaBar">Look it up</a>. It&#8217;s normally shortened to XMB, and for good reason. This is the main interface that you see every time you boot up the PS3. It&#8217;s meant to be a hub for all the activities you can perform on the PS3. Even after <a href="http://us.playstation.com/support/systemupdates/ps3/history/">oodles of updates</a>, navigating the rows and columns with the analog sticks feels awkward. The selection scrolls too quickly with even a slight nudge of the analog stick, making it difficult to make a precise choice. The XMB is also too touchy when differentiating between up/down scrolling and left/right scrolling.</p>
<h3>Duplicate Entries</h3>
<p>In the current iteration of the XMB, the PlayStation Store icon shows up in two separate columns. What&#8217;s worse is the icon and text are the same, but they behave differently.</p>
<p><img title="PlayStation_Store_Game.jpg" src="http://pileofturtles.com/wp-content/uploads/2011/02/PlayStation_Store_Game.jpg" border="0" alt="PlayStation Store Game" width="400" height="226" /></p>
<p>The store icon in the Game column shows a grid of currently hot items in the store.</p>
<p><img title="PlayStation_Store_PSN.jpg" src="http://pileofturtles.com/wp-content/uploads/2011/02/PlayStation_Store_PSN.jpg" border="0" alt="PlayStation Store PSN" width="400" height="226" /></p>
<p>In contrast, the store icon located in the PlayStation Network column has a description of what the store has to offer. When the X button is pressed, these two store icons also behave differently.</p>
<p><img title="PlayStation_Store_Grid.jpg" src="http://pileofturtles.com/wp-content/uploads/2011/02/PlayStation_Store_Grid.jpg" border="0" alt="PlayStation Store Grid" width="400" height="219" /></p>
<p>The Game column store icon enters the grid view, allowing the user to select from the highlighted items or press X again to enter the main store. The PlayStation Network column store icon enters the store when the X button is pressed.</p>
<p>I have been using the XMB for some time and never realized that there were two separate store icons until recently. I had always wondered why it sometimes had a grid of new items next to it and sometimes didn&#8217;t.</p>
<h3>Disappearing Button Hints</h3>
<p><img title="PlayStation_XMB_Fade.jpg" src="http://pileofturtles.com/wp-content/uploads/2011/02/PlayStation_XMB_Fade.jpg" border="0" alt="PlayStation XMB Fade" width="400" height="225" /></p>
<p>In some situations, icons in the XMB have further options that can be opened using the ▲ button. Sadly, the only way to know if an item has extra options to view is to catch the popup in the lower right corner before it disappears.  The popup in the corner only sticks around for three seconds. The only way to get it back is to scroll away from the item you have selected and back.</p>
<h2>The PlayStation Store</h2>
<h3>I don&#8217;t own a fucking PSP</h3>
<p>That&#8217;s the title for a checkbox I&#8217;d like to see on the bottom of the main PlayStation Store screen.</p>
<p><img title="PlayStation_Store_PSP.jpg" src="http://pileofturtles.com/wp-content/uploads/2011/02/PlayStation_Store_PSP.jpg" border="0" alt="PlayStation Store PSP" width="400" height="234" /></p>
<p>No matter where you go on the PlayStation Store, PSP content is laced in with PS3 content. Want to look at newly added demos? Sure, we&#8217;ll show you a chronological list of all the new demos that are available. We&#8217;ll just sprinkle demos for the PSP in with them. Not only that, but we&#8217;ll also let you download those demos even if you don&#8217;t have a PSP. Son of a bitch.</p>
<h3>I want to try that demo</h3>
<p>Okay, so you&#8217;ve sifted through all the PSP demos and found a demo you want to download. You press X on the download button and are taken to a screen that resembles a shopping cart page.</p>
<p><img title="PlayStation_Store_Cart.jpg" src="http://pileofturtles.com/wp-content/uploads/2011/02/PlayStation_Store_Cart.jpg" border="0" alt="PlayStation Store Cart" width="400" height="227" /></p>
<p>At first I thought the Continue Shopping button would allow me to queue up a bunch of downloads before executing them. In actuality, the Continue Shopping button just exits the download page, nothing is saved. The only way past this screen is to press X again while the download is selected. That was a completely necessary step.</p>
<p><img title="PlayStation_Store_Popup.jpg" src="http://pileofturtles.com/wp-content/uploads/2011/02/PlayStation_Store_Popup.jpg" border="0" alt="PlayStation Store Popup" width="400" height="208" /></p>
<p>Next you&#8217;re presented with a transparent popup that shows a widely inaccurate download time and a single button labeled, &#8220;Download in Background.&#8221; Why would I want to stare at this progress bar instead of doing something else? Press X again.</p>
<p><img title="PlayStation_Store_Wait.jpg" src="http://pileofturtles.com/wp-content/uploads/2011/02/PlayStation_Store_Wait.jpg" border="0" alt="PlayStation Store Wait" width="400" height="232" /></p>
<p>&#8220;Preparing&#8230; Please wait.&#8221; Suddenly the preparing popup goes away and you are taken back to the cart. The cart still contains your demo. Did your download get put in the background or did it fail? There was no notification that it succeeded. Clicking download again brings up the same transparent popup with a download bar. You click Download in Background again. You&#8217;re brought back to the shopping cart screen again. RAAAAGE!</p>
<p><img title="PlayStation_XMB_Swirl.jpg" src="http://pileofturtles.com/wp-content/uploads/2011/02/PlayStation_XMB_Swirl.jpg" border="0" alt="PlayStation XMB Swirl" width="400" height="276" /></p>
<p>You exit the store to the XMB and scroll around looking for the active download. You finally see a strange swirly icon next to a triangle with two dots above it. That&#8217;s got to be active downloads, so obvious! Pressing X reveals both of your downloads.</p>
<p><img title="PlayStation_XMB_Dupe.jpg" src="http://pileofturtles.com/wp-content/uploads/2011/02/PlayStation_XMB_Dupe.jpg" border="0" alt="PlayStation XMB Dupe" width="400" height="175" /></p>
<p>Wait, <em>both</em> of them? Dammit, apparently that first time you pressed Download in Background did actually succeed. You press X to try and find a way to cancel the download.</p>
<p><img title="PlayStation_XMB_Detail.jpg" src="http://pileofturtles.com/wp-content/uploads/2011/02/PlayStation_XMB_Detail.jpg" border="0" alt="PlayStation XMB Detail" width="400" height="315" /></p>
<p>Your are brought to a screen containing the title, size, and status of the download. Approximately three more bytes of information than was on the previous screen. No further options except to go back with the O button. In a rage you scroll up and down a few times and finally, a small tooltip appears in lower right corner of the screen.</p>
<p><img title="PlayStation_XMB_Option_Button.jpg" src="http://pileofturtles.com/wp-content/uploads/2011/02/PlayStation_XMB_Option_Button.jpg" border="0" alt="PlayStation XMB Option Button" width="314" height="179" /></p>
<p>You press ▲ and an options screen appears.</p>
<p><img title="PlayStation_XMB_Options.jpg" src="http://pileofturtles.com/wp-content/uploads/2011/02/PlayStation_XMB_Options.jpg" border="0" alt="PlayStation XMB Options" width="400" height="222" /></p>
<p>Once again your&#8217;e allowed to choose status, which brings you to the same screen as before. You click cancel, then confirm, and your bastard clone download is finally dead.</p>
<h3>Uncompressing Downloads</h3>
<p>Wahoo! Your download completed and you can play the demo now! You go back to the downloads section of the Network column on the XMB. The section is completely gone. Where the heck did it go? You scroll around and finally find it in the Game menu, still curiously inside a transparent capsule.</p>
<p><img title="PlayStation_XMB_Compressed.jpg" src="http://pileofturtles.com/wp-content/uploads/2011/02/PlayStation_XMB_Compressed.jpg" border="0" alt="PlayStation XMB Compressed" width="400" height="201" /></p>
<p>You press X to start your demo and are presented with this lovely screen.</p>
<p><img class="alignnone size-full wp-image-354" title="PlayStation XMB Uncompressing" src="http://pileofturtles.com/wp-content/uploads/2011/02/PlayStation_XMB_Uncompressing1.jpg" alt="" width="400" height="161" /></p>
<p>In the fetal position now, you wait 7 minutes and 17 seconds for the decompression to complete. You may now play your demo.</p>
<h2>Trophies</h2>
<p>I recently decided that I wanted to browse the trophies I had collected and also compare them with my friend to see what games we had in common. Trophies were added in the 2.40 update that was released on July 2nd, 2008.</p>
<h3>Trophy Sync</h3>
<p>I select the Trophy Collection icon from the Game column of the XMB. I&#8217;m presented with another progress bar.</p>
<p><img title="PlayStation_XMB_Trophy_Sync.jpg" src="http://pileofturtles.com/wp-content/uploads/2011/02/PlayStation_XMB_Trophy_Sync.jpg" border="0" alt="PlayStation XMB Trophy Sync" width="400" height="244" /></p>
<p>After waiting a few minutes my trophy information was finally available. Why this information isn&#8217;t synced and updated in the background I have no idea. Now that I had perused my trophy information I was ready to compare it to the trophies my friend had to see how we stacked up. Once I found his gamer card and clicked the trophy section.</p>
<p><img class="alignnone size-full wp-image-357" title="PlayStation XMB Trophy Compare" src="http://pileofturtles.com/wp-content/uploads/2011/02/PlayStation_XMB_Trophy_Compare.jpg" alt="" width="400" height="351" /></p>
<p>Screw it.</p>
<h2>Conclusion</h2>
<p>The PlayStation 3 has been receiving updates since November 2006. Updates to the XMB have been few and far between. As an example, the trophy UI was added in July 2008 and it didn&#8217;t receive the ability to sort by the date the trophy was awarded until <a href="http://blog.eu.playstation.com/2010/04/22/ps3-3-30-system-software-update/">April 2010</a>! It&#8217;s almost as if the PS3 UI team gets shuffled around from project to project, barely getting to complete new features. This leads to awkward and unfinished interfaces that aren&#8217;t consistent or intelligent.</p>
<p>I&#8217;ve only scratched the surface of the PS3 UI and I haven&#8217;t even touched on the web browser or PlayStation Home. I have never used either for an extended period of time and I have a feeling the criticism would be so harsh I might actually receive death threats from those involved in their creation. Maybe another time.</p>

]]></content:encoded>
			<wfw:commentRss>http://pileofturtles.com/2011/02/the-playstations-interface-sucks/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		<feedburner:origLink>http://pileofturtles.com/2011/02/the-playstations-interface-sucks/</feedburner:origLink></item>
		<item>
		<title>Genesis of Modern FPS Conventions</title>
		<link>http://feedproxy.google.com/~r/TurtleLog/~3/lJ_Ndv9Sl90/</link>
		<comments>http://pileofturtles.com/2011/01/genesis-of-modern-fps-conventions/#comments</comments>
		<pubDate>Mon, 24 Jan 2011 23:48:07 +0000</pubDate>
		<dc:creator>Jeremy Mack</dc:creator>
				<category><![CDATA[Video Games]]></category>
		<category><![CDATA[cod]]></category>
		<category><![CDATA[game mechanics]]></category>
		<category><![CDATA[halo]]></category>

		<guid isPermaLink="false">http://pileofturtles.com/?p=282</guid>
		<description><![CDATA[Lots of new shooters come out every year, but game mechanic innovations are rare. When they come, they are often awesome enhancements that make a stagnating genre fun again. I think it's worth pointing out the innovators, the games that first popularized new mechanics that will get borrowed for years to come...]]></description>
				<content:encoded><![CDATA[
<p><a href="http://pileofturtles.com/wp-content/uploads/2011/01/Genesis-of-Modern-FPS-Conventions.jpg"><img class="alignnone size-full wp-image-299" title="Genesis of Modern FPS Conventions" src="http://pileofturtles.com/wp-content/uploads/2011/01/Genesis-of-Modern-FPS-Conventions.jpg" alt="" width="578" height="160" /></a></p>
<p><a href="http://pileofturtles.com/wp-content/uploads/2011/01/Genesis-of-Modern-FPS-Conventions.jpg"></a>Lots of new shooters come out every year, but game mechanic innovations are rare. When they come, they are often awesome enhancements that make a stagnating genre fun again. I think it&#8217;s worth pointing out the innovators, the games that first popularized new mechanics that will get borrowed for years to come. First person shooters have reached a point where the newest iteration of a franchise is <em>expected</em> to borrow features made popular by competing franchises. This feature competition and borrowing is good, and it&#8217;s a whole lot better than ending up in a Madden monopoly. Just imagine if a single publisher could own the rights to publishing games about World War II.</p>
<h2>Noteworthy Mechanics</h2>
<p>It&#8217;s hard to call any game mechanic new because it might simply be an enhancement to a feature seen in a game five years ago. What makes a mechanic worth noting is when it is first executed well. The following is a list of the most common game mechanics and what game first did it right.</p>
<h3>Cover System</h3>
<p>The sound as you crunch up against cover, with dust wisping off its surface, is what makes <a href="http://en.wikipedia.org/wiki/Gears_of_War">Gears of War&#8217;s</a> cover system the first awesome one. It is made even more awesome by the fact that the cover system was required, and the best way to fight, not simply tacked on for a feature list. The cover system has become so prolific that games without a cover system stand out more for lacking one. There are threads on <a href="http://www.gamefaqs.com/boards/944199-call-of-duty-world-at-war/46601768">many</a> Call of Duty <a href="http://www.iplaycod.com/forums/14-call-of-duty-modern-warfare-2/1041-cover-system.cod">message boards</a> asking when it will finally get a cover system. I hope never.</p>
<h3>Rebounding Health Meter</h3>
<p>The rebounding health meter has become a staple of the <a href="http://en.wikipedia.org/wiki/Call_of_Duty">Call of Duty</a> games. Implemented just right, by covering the screen in a bloody haze when the player is near death, it ratchets up the anxiety in moments where it is truly needed. A numerical or bar indicator of the player&#8217;s health value can&#8217;t come close to slow losing the ability to hear and see as the player&#8217;s avatar loses consciousness. Other FPSs have adopted it as a lazy way to not include game balance for poorly placed checkpoints. Die three seconds after a checkpoint? That&#8217;s fine, just wait for the reload, dive for cover, wait five seconds, and try again.</p>
<h3>Single Player Scoring System</h3>
<p><a href="http://en.wikipedia.org/wiki/Halo_3">Halo 3</a> made this interesting by showing you the moment you were rewarded points for a kill. This has the same effect as it did in <a href="http://en.wikipedia.org/wiki/Counter-Strike">Counter-Strike</a>, letting you know when you&#8217;ve killed an enemy. Adding the medals from multiplayer for things like double-kills and grenade sticks added icing to the cake. Games that implement a scoring system need to make the player acutely aware of when they are being rewarded for a kill. <a href="http://en.wikipedia.org/wiki/Halo:_Reach">Halo: Reach</a> does an awesome job of this, sticking the number of points rewarded for each kill right next to the crosshair.</p>
<h3>Replay System</h3>
<p>Call of Duty originated the quick replay, and Halo 3 introduced the interactive replay. It&#8217;s hard to say which is better, they both serve to temper the feeling of anger that comes with losing a fight. Halo&#8217;s replay system allows for extended critiquing of the evolution of a match that was lost; while, COD&#8217;s kill cam allows the player to instantly view a replay of how they were bested. Since Halo&#8217;s replay system is entirely optional, I give the medal to COD for providing immediately useful information that can help to root out the sniper that keeps killing you.</p>
<h3>Leveling Up in Multiplayer</h3>
<p><a href="http://en.wikipedia.org/wiki/Call_of_Duty_4:_Modern_Warfare">Call of Duty 4</a> first made this concept work. Having a match you just lost end with a rank up is one of the best ways to keep a player coming back for more. Unlockable and <em>usable</em> items were the true genius of COD4&#8242;s leveling system, something even Halo: Reach didn&#8217;t figure out. Most players don&#8217;t care about the shape of the rectangle on their character&#8217;s armor, but they do care about whether their gun is silenced or not.</p>
<h3>Sticky Aiming</h3>
<p>This felt like a cheat when it was first added to Call of Duty, making it easy to become a <a href="http://en.wikipedia.org/wiki/Enemy_at_the_Gates">Vassili Zaitsev</a> of the battlefield with a few alternations of the left and right triggers. However, after seeing how many enemies you&#8217;re expected to kill within a short time frame, it begins to make sense. The rate at which the player can dispose of enemies is also the rate at which they can be thrown at them. Without the ability to quickly deal with swarms of enemies, first person shooters are force to pace themselves more slowly or hand out mega-weapons that kill entire rooms without any care or skill. Halo also implements sticky aiming nicely, making the player&#8217;s crosshair slow down when crossing over an enemy.</p>
<h2>That&#8217;s Just a Few!</h2>
<p>What are some of the conventions that you&#8217;ve noticed being used widely? What games started them?</p>

]]></content:encoded>
			<wfw:commentRss>http://pileofturtles.com/2011/01/genesis-of-modern-fps-conventions/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://pileofturtles.com/2011/01/genesis-of-modern-fps-conventions/</feedburner:origLink></item>
		<item>
		<title>Reading in the Dark</title>
		<link>http://feedproxy.google.com/~r/TurtleLog/~3/JqNLZ0_NGIA/</link>
		<comments>http://pileofturtles.com/2011/01/reading-in-the-dark/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 16:21:38 +0000</pubDate>
		<dc:creator>Jeremy Mack</dc:creator>
				<category><![CDATA[Life Hacks]]></category>
		<category><![CDATA[power user]]></category>
		<category><![CDATA[reading]]></category>

		<guid isPermaLink="false">http://pileofturtles.com/?p=260</guid>
		<description><![CDATA[I like to read in the dark. I find it soothing to hold a dimly glowing screen to the background of a pitch-black room. It's like WriteRoom's minimal approach to writing. Blocking out all the distractions in the room allows me to entirely focus on reading. Sadly, by default, most websites aren't conducive to reading in the dark. What follows are the best ways I have found to read anything comfortably in the dark.]]></description>
				<content:encoded><![CDATA[
<p><a href="http://pileofturtles.com/wp-content/uploads/2011/01/Reading-in-the-Dark.jpg"><img class="alignnone size-full wp-image-277" title="Reading in the Dark" src="http://pileofturtles.com/wp-content/uploads/2011/01/Reading-in-the-Dark.jpg" alt="" width="578" height="160" /></a></p>
<p>I like to read in the dark. I find it soothing to hold a dimly glowing screen to the background of a pitch-black room. It&#8217;s like <a href="http://www.hogbaysoftware.com/products/writeroom">WriteRoom&#8217;s</a> minimal approach to writing. Blocking out all the distractions in the room allows me to entirely focus on reading. Sadly, by default, most websites aren&#8217;t conducive to reading in the dark. What follows are the best ways I have found to read anything comfortably in the dark.</p>
<h2>White Backgrounds Are Blinding</h2>
<p>Reading in the dark is very difficult when your retinas are being burned by the #FFFFFFucking bright backgrounds. Here are some great ways to read your blogs, books, and all other websites without frequent optometrist visits.</p>
<h3><a href="http://www.instapaper.com">Instapaper</a></h3>
<p>If you&#8217;ve got an <a href="http://www.instapaper.com/iphone">iPad or iPhone</a>, Instapaper&#8217;s dark mode the end all be all of blog and article reading in the dark. Sadly there isn&#8217;t a dark mode for the web version of Instapaper. However, you can combine it with my next suggestion to get the best of both worlds!</p>
<h3><a href="http://lab.arc90.com/experiments/readability/">Readability</a></h3>
<p><a href="http://arc90.com/">Arc90</a> has an awesome little <a href="https://www.readability.com/bookmarklets/">bookmarklet</a> that will instantly transform any website into an ad-free, effortlessly readable, doppelgänger. &#8220;But Mr. Blogger Sir, it may be readable but it&#8217;s still causing eyeball conflagration!&#8221; Never fear Handsome Blog Reader, simply select the dark style after clicking the bookmarklet in the bar that appears on the left.</p>
<h3><a href="http://amzn.to/i6Nt4A">Kindle App</a></h3>
<p>The Kindle App has long been my book reader of choice because it has always supported white text on a black background. The <a href="http://itunes.apple.com/us/app/kindle/id302584613?mt=8">Kindle App for iOS</a> just receieved a nice update that allows for loading non-Kindle ebook files using iTunes. Sadly they only support the .mobi format. However, Wired has a <a href="http://www.wired.com/gadgetlab/2011/01/read-some-of-your-own-books-on-kindle-for-ipad/">great article</a> that details how to convert your books to .mobi using <a href="http://calibre-ebook.com/">Calibre</a>, score!</p>
<h3>All Other Websites</h3>
<p>So you&#8217;ve got web articles and books covered. What about the rest of the websites you visit? Reddit causing eye pain? Facebook making you weep plasma tears? The thought of executing a Google search causing you to wince? There&#8217;s a solution, it&#8217;s called <a href="http://userstyles.org/stylish/">Stylish</a>. Stylish is an extension for <a href="https://addons.mozilla.org/en-US/firefox/addon/stylish/">Firefox</a> and <a href="https://chrome.google.com/extensions/detail/fjnbnpbmkenffdnngjfgmeleoegfcffe">Chrome</a>. Stylish allows users to install themes that reskin websites of their choice with new CSS. Here are some great dark styles:</p>
<ul>
<li><a href="http://userstyles.org/styles/27249">Classic Perfect Dark Google</a></li>
<li><a href="http://userstyles.org/styles/1440">Facebook Dark</a></li>
<li><a href="http://userstyles.org/styles/26923">Youtube Dark (2010 Redesign)</a></li>
<li><a href="http://userstyles.org/styles/19617">The Dark Reddit</a></li>
<li><a href="http://userstyles.org/styles/42766">Hacker News: Dark and Wide</a></li>
<li><a href="http://userstyles.org/styles/38104">Slashdot &#8211; Minimal, Dark / Black</a></li>
</ul>
<p><em>Note that you don&#8217;t even need to install Stylish for Chrome to use the themes, it&#8217;s only for quickly finding and mass-updating your scripts.</em></p>
<h2>Your Hacks</h2>
<p>Do you have a clever way to read in the dark? I&#8217;d definitely love to hear about it, and I&#8217;m sure my readers would too.</p>

]]></content:encoded>
			<wfw:commentRss>http://pileofturtles.com/2011/01/reading-in-the-dark/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://pileofturtles.com/2011/01/reading-in-the-dark/</feedburner:origLink></item>
		<item>
		<title>Your Next Project</title>
		<link>http://feedproxy.google.com/~r/TurtleLog/~3/ltQY_gHVQeI/</link>
		<comments>http://pileofturtles.com/2011/01/your-next-project/#comments</comments>
		<pubDate>Mon, 10 Jan 2011 23:25:31 +0000</pubDate>
		<dc:creator>Jeremy Mack</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[planning]]></category>

		<guid isPermaLink="false">http://pileofturtles.com/?p=253</guid>
		<description><![CDATA[When the haze of the last project has just worn off. When you've finally played enough video games and caught up on your favorite TV shows. When you realize that reading about programming doesn't quite equate to programming. It has come time to decide on what your next project will be...]]></description>
				<content:encoded><![CDATA[
<p><img title="Your-Next-Project.jpg" src="http://pileofturtles.com/wp-content/uploads/2011/01/Your-Next-Project.jpg" border="0" alt="Your-Next-Project.jpg" width="578" height="160" /><br />
When the haze of the last project has just worn off. When you&#8217;ve finally played enough video games and caught up on your favorite TV shows. When you realize that reading about programming doesn&#8217;t quite equate to programming. It has come time to decide on what your next project will be.</p>
<p>Sure, you&#8217;ve learned a lot of lessons from your last project. You&#8217;ll actually define an application statement before you write a single line of code. This time you&#8217;ll actually design the whole interface up front. <a href="http://en.wikipedia.org/wiki/Model%E2%80%93View%E2%80%93Controller">MVC</a> finally makes sense, now that you&#8217;ve completely screwed it up once. You&#8217;ll be thinking about usability from the get go this time. No off the cuff crap like last time.</p>
<h2>Actually Make An Application Definition Statement</h2>
<p>Apple has a nice writeup on what an <a href="http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/AppDesign/AppDesign.html">application definition statement</a> is, go read it if you don&#8217;t already know. The reason apple has the writeup is because they coined the phrase. If you&#8217;ve watched any of their <a href="http://developer.apple.com/videos/">developer videos</a> from <a href="http://developer.apple.com/wwdc/">WWDC</a> then you&#8217;ll be familiar with how much they evangelize good development practices. I particularly like this one, if you keep coming back and looking at it throughout the application&#8217;s development it will help to focus you. It&#8217;s also nice to refer to when a friend asks what you&#8217;re working on. You&#8217;ve got a concise description of your application devoid of technical jargon.</p>
<h2>Design Doesn&#8217;t Come Last</h2>
<p>If you&#8217;ve got a CS degree or just suck at drawing then your first instinct when starting a new project is to open an IDE. That&#8217;s a really great way to end up with a completely useless piece of junk that barely solves your problem. If you want to actually sell your project then you&#8217;re going to want to spend some (preferably the majority) time up front mocking up your entire application. I learned this the hard way when I made <a href="http://nodiceapp.com">No Dice</a>, I only did pencil mockups and never actually made a complete mockup using some sort of design software (Photoshop, Keynote, Omnigraffle, the list goes on).</p>
<p>The reason a complete upfront design is necessary is because once you&#8217;re actually writing code it becomes difficult to do any meaningful interface design. You&#8217;re much more likely to <strong>[UIColor whiteColor]</strong> some backgrounds instead of actually making some nice textures. When the coding part of the brain takes over it wants to complete the prototype and make something work. If you don&#8217;t already have the graphic elements ready it&#8217;s nearly impossible to keep the design pretty and usable.</p>
<h2>Model-View-Controller</h2>
<p>For the longest time I couldn&#8217;t wrap my head around this concept. It took completely coupling data with a view and then needing to save the data to a file to finally realize how important it is. One of the best places to look for good MVC design on the iPhone is Apple&#8217;s own code examples, notably <a href="http://developer.apple.com/library/ios/#samplecode/TheElements/Introduction/Intro.html">The Elements</a>. This periodic table app shows many cases where MVC design can be employed to speed up the application and reduce code bloat.</p>
<h2>Your Resolutions</h2>
<p>What resolutions have you made after completing your last project? I&#8217;d love to hear them because I&#8217;m surely forgetting lots of them.</p>

]]></content:encoded>
			<wfw:commentRss>http://pileofturtles.com/2011/01/your-next-project/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://pileofturtles.com/2011/01/your-next-project/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.464 seconds. --><!-- Cached page generated by WP-Super-Cache on 2013-05-18 19:22:17 -->
