<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>ShaunInman.com</title>
<link>http://www.shauninman.com/</link>
<description></description>
<copyright>Copyright 2001-2010 Shaun Inman</copyright>
<generator>Shaun Inman&#8217;s Bookend</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<lastBuildDate>Thu, 02 Sep 2010 15:08:35 GMT</lastBuildDate>

<item>
	<title>SMRT</title>
	<description><![CDATA[<p>Safari 5&#8217;s new &#8220;Smart&#8221; Auto-Complete  has <a href="http://twitter.com/shauninman/status/22100777360">bothered me</a> since the <a href="http://twitter.com/shauninman/status/15952624268">first</a> <a href="http://twitter.com/shauninman/status/15952681833">day</a> I updated. While this feature has been available in one form or another in previous versions of Safari it never ranked page titles over the urls when auto-completing and there was always a <code>defaults write</code> option to <a href="http://caiustheory.com/safari-4-hidden-preferences">override the behavior</a>.</p>

<p>While searching for a solution I came across an extension called TitleCorruptor by <a href="http://tomholland.co.uk/">Tom Holland</a> that cleverly inserts an invisible character between every character in the page title which prevents Safari from matching them as you type a url. There were two tiny problems with the extension. </p>

<p>First, it required clearing the browser history before installing (so that Safari doesn&#8217;t use the previously cached page titles when auto-completing in the future) so I no longer have a link to the extension to share. (Tom&#8217;s contact form is linked from the extension&#8217;s settings which is how I found his blog. The extension isn&#8217;t available there. I found the extension in Apple&#8217;s Discussions forums but now I can&#8217;t find the thread it was posted in.)</p>

<p>Second (and more importantly to me as a user), the invisible character that was being inserted was only invisible in the browser title bar and appeared as a normal space in the list accompanying the auto-completed url. </p>

<p>So I created my own version of the extension called <a href="http://www.youtube.com/watch?v=DhrfhjLd9e4">SMRT</a> that uses a true <a href="http://www.fileformat.info/info/unicode/char/200b/index.htm">zero-width space</a> that&#8217;s invisible in the auto-complete list as well as the page title. Just so there&#8217;s no confusion, this is Tom&#8217;s clever idea&#8212;I just cleaned up the implementation a bit.</p>

<p><a href="http://shauninman.com/assets/downloads/SMRT.safariextz"><img src="/assets/images/smrt.png" width="64" height="64" alt="" style="float: left;margin:-10px 8px 0 0;" /></a><a href="http://shauninman.com/assets/downloads/SMRT.safariextz">Download SMRT</a>, clear your history and install to regain control of your Safari address bar.</p>

<h2>Caveats</h2>

<ul>
<li>You must delete your history once before installing for the extension to work properly</li>
<li>Ditto for previously saved bookmarks (but who doesn&#8217;t use a web-based bookmarking service?)</li>
<li>Bookmarklets that grab document.title might need to be updated to strip the zero-width spaces this extension inserts (a simple <code>document.title.replace(/\u200b/g, '');</code> does the trick)</li>
<li>In Croatian/Serbian, &#8220;smrt&#8221; means &#8220;death.&#8221; It works on so many levels. Smrt to Smart Auto-Complete! (<a href="http://twitter.com/nevenmrgan/status/22120097902">via</a>)</li>
</ul>

<h2>Addendum</h2>

<p>After all that I remembered that you can Get Info on a downloaded file to find the source url. D&#8217;oh! Here&#8217;s a direct link to the <a href="http://tomholland.co.uk/TitleCorruptor.safariextz.zip">original extension</a> and the <a href="http://discussions.apple.com/thread.jspa?threadID=2456976">Apple Discussions</a> thread I found it in.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2010%2F08%2F25%2Fsmrt&amp;seed_title=SMRT</link>
	<guid isPermaLink="false">1521@http://www.shauninman.com/</guid>
	<category>Apple</category>
	<pubDate>Wed, 25 Aug 2010 18:05:00 GMT</pubDate>
</item>
<item>
	<title>Incominggg!</title>
	<description><![CDATA[<div class="image"><img src="/assets/images/incominggg.png" width="334" height="252" alt="" /></div>

<p>Earlier today I released a Safari Extension for Dribbble called Incoming! that adds Twitter-like, real-time notification to your <a href="http://dribbble.com/players/shauninman/activity/incoming">Incoming Activity</a> page. There were two unforeseen issues with the release.</p>

<p>First, I didn&#8217;t know of <a href="http://clickontyler.com/">Tyler Hall</a>&#8217;s Twitter search application of the same name (and punctuation) <a href="http://clickontyler.com/incoming/">Incoming!</a>. </p>

<p>No problem. Just lean on the Dribbble brand a little harder, triple a consonant, then push out an update using Safari&#8217;s built-in extension update mechanism.</p>

<p>Enter issue two. It turns out that while <code>!</code> may be a <a href="http://www.w3.org/Addressing/rfc1738.txt" title="Second to last paragraph of section 2.2">valid unencoded url character</a>, Safari&#8217;s update mechanism chokes when it encounters one in the url for an extension&#8217;s update manifest. </p>

<p>So in order to receive any automatic updates to the extension in the future you&#8217;ll need to uninstall the current version and install the renamed and updated <a href="http://shauninman.com/assets/downloads/Incominggg.safariextz">Incominggg!</a></p>

<h2>Addendum</h2>

<p>I appreciate that not everyone on Dribbble uses Safari but since Safari is my primary browser and this extension meets my needs I have no plans of porting this extension to any other browsers.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2010%2F08%2F23%2Fincominggg&amp;seed_title=Incominggg%21</link>
	<guid isPermaLink="false">1520@http://www.shauninman.com/</guid>
	<category>Apple</category><category>Design</category><category>JavaScript</category><category>Web</category>
	<pubDate>Mon, 23 Aug 2010 17:15:00 GMT</pubDate>
</item>
<item>
	<title>MML Bundle &amp; Multi-song NSF</title>
	<description><![CDATA[<p>I&#8217;ve updated my <a href="/archive/2010/02/13/an_mml_bundle_for_textmate">Textmate MML bundle</a> to include creation of multi-song NSFs (which I&#8217;m using for the background music in <a href="http://blog.mimeoverse.com/">Mimeo and the Kleptopus King</a>). The updated bundle includes two new Commands &#8220;Build All&#8221; and &#8220;Run All&#8221; that compile all MML files in the same directory as the currently open MML file into a single NSF.</p>

<p>This bundle is unsupported but here&#8217;s some things to keep in mind:</p>

<ul>
<li>Songs are included in alphabetical (directory listing) order.  You can control this order by prefixing the MML file name with a number (eg. <code>01 jaunt.mml</code>, <code>02 slink.mml</code>, <code>03 fortress.mml</code>, <code>04 king.mml</code>, etc ).</li>
<li>Envelope names (eg. <code>@v0</code>, <code>@v1</code>, <code>@MP0</code>, etc) are shared across the entire NSF so songs that use the same envelope names will use the version of the envelope that was defined last. This is a limitation of <code>ppmckc</code> (the library used to compile MML).</li>
<li>The title of the last song becomes the title of the NSF in a player (like <a href="http://bannister.org/software/ao.htm">Audio Overload</a>). Again, this is just the way <code>ppmckc</code> works. I simply add a second <code>#TITLE</code> to the bottom of the last song before compiling.</li>
<li>If an NSF is not created select the Command you&#8217;re trying to use in the Textmate Bundle Editor and change it&#8217;s &#8220;Output&#8221; to &#8220;Create New Document&#8221; and try again. This will show the output of the binaries used to compile the NSF. You probably have a <code>Bank overflow</code>. This output can tell you which file is the culprit. Adding a  <code>#BANK-CHANGE</code> should <a href="http://shauninman.com/assets/downloads/ppmck_guide.html?caught#L661">fix the issue</a>.</li>
</ul>

<p><a href="/assets/downloads/MML.zip">Download</a> the updated bundle.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2010%2F07%2F06%2Fmml_bundle_now_creates_multi_song_nsfs&amp;seed_title=MML+Bundle+%26amp%3B+Multi-song+NSF</link>
	<guid isPermaLink="false">1517@http://www.shauninman.com/</guid>
	<category>Music</category><category>Gaming</category>
	<pubDate>Tue, 06 Jul 2010 13:54:00 GMT</pubDate>
</item>
<item>
	<title>8-bit iPhone Game Development</title>
	<description><![CDATA[<p>A lot of people have been asking how I got to where I currently am with <a href="http://blog.mimeoverse.com/">Mimeo and the Kleptopus King</a>. Despite starting out with a very clear goal in mind (a pixelated, console-inspired game on the iPhone and iPod touch), there wasn&#8217;t an obvious path to that goal. This is a brief review of my circuitous journey.</p>

<p>First I had to get a handle on the core languages of C and Objective-C. Plain old C was relatively easy to  pick up with a PHP/JavaScript background though occasional Google searches (usually ending up on Stack Overflow) are still required to fill in the gaps in my knowledge. Aaron Hillegass&#8217; <a href="http://www.amazon.com/Cocoa-Programming-Mac-Third-ebook/dp/B00139XSRO/?tag=iamsooobuyingthis-20">Cocoa Programming for Mac OS X</a> was an excellent introduction to Objective-C and the Cocoa Framework (as well as Apple&#8217;s developer tools, Xcode and Interface Builder).</p>

<p>Simon Maurice wrote a number of articles that helped me get up to speed with OpenGL on the iPhone. Unfortunately, due to a conflict with his employer these articles have since been taken down. I wish I had had the foresight to archive a local copy. <strong>Update</strong>: reader Max found a <a href="http://www.cocoachina.com/wiki/index.php?title=Category:Simon_Maurice_iPhone_OpenGL_ES">mirror</a> of these articles (including Chinese translations). Huzzah!</p>

<p>Then I did an audit of various game engines to gain an understanding of how a game works from a high-level architectural point of view as well as the low-level solutions to problems unique to games. The two that proved most informative were <a href="http://code.google.com/p/cocos2d-iphone/">Cocos2d iPhone</a> (Cocoa/iPhone) and <a href="http://flixel.org/">Flixel</a> (ActionScript/Flash).</p>

<p>Even with all of <a href="http://delicious.com/shauninman/gamedev">this research</a> behind me I was still a bit lost. I went through a number of subpar iPhone and game development books before O&#8217;Reilly&#8217;s <a href="http://www.amazon.com/iPhone-Game-Development-Developing-Objective-C/dp/0596159854/?tag=iamsooobuyingthis-20">iPhone Game Development</a> was published. While a bit thin overall the chapters on Game Engine Anatomy and the 2D Game Engine were invaluable; without this book I&#8217;m not sure I would have been able to put all the pieces together and translate the knowledge and understanding I had acquired into an actual piece of playable software.</p>

<p>And the learning continues, most recently figuring out how to <a href="http://shauninman.com/archive/2010/02/13/an_mml_bundle_for_textmate">compose music for the NES sound chip</a> for <a href="http://www.flickr.com/photos/shauninman/4414021911/">use in the game</a>.</p>

<p>Despite this review reading like a sequential process, it was anything but. There were a lot of missteps, horrible books, and overlapping content in between but it&#8217;s the wrong decisions that make you appreciate the right ones. </p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2010%2F03%2F11%2F8_bit_iphone_game_development&amp;seed_title=8-bit+iPhone+Game+Development</link>
	<guid isPermaLink="false">1511@http://www.shauninman.com/</guid>
	<category>Apple</category><category>Books</category><category>Design</category><category>Personal</category><category>Gaming</category>
	<pubDate>Thu, 11 Mar 2010 15:56:00 GMT</pubDate>
</item>
<item>
	<title>Mimeo and the Kleptopus King</title>
	<description><![CDATA[<p>As anyone on <a href="http://dribbble.com/">Dribbble</a> already knows, I have been hard at work on my next iPhone/iPod touch game for the <a href="http://dribbble.com/players/shauninman/tags/mimeo">past two months</a>. With the public launch of Dribbble imminent (I haven&#8217;t heard anything more concrete than &#8220;soonish&#8221;) I thought the <a href="http://mimeoverse.com/">Mimeoverse</a> could use a proper introduction.</p>

<p><img src="/assets/images/mimeo-woods.png" alt="Mimeo in the Wood" title="" /></p>

<p>Early last year, I applied for a <a href="http://createhere.org/blog/meet_the_2009_makework_grant_recipients/">MakeWork grant</a> from local Chattanooga arts initiative <a href="http://createhere.org/">CreateHere</a>. In May (thanks in part to generous recommendation letters from the talented Messrs. <a href="http://unstoppablerobotninja.com/">Marcotte</a> and <a href="http://superfluousbanter.org/">Rubin</a> and some handsome illustrations by <a href="http://www.bearskinrug.co.uk/">Mr. Cornell</a>) I was awarded partial funding for my proposal to create a faux 16-bit game engine. My new game designs are far more ambitious than my inaugural effort, <a href="/horrorvacui/">Horror Vacui</a>, aspiring to multiple worlds and levels, various unique power-ups and hand-crafted pixel graphics, all of Super Nintendo caliber.</p>

<p>A few months after the release of <a href="http://feedafever.com/">Fever</a> I started on the engine. This past December I took a whole week off from support to make one last uninterrupted push and finished the core components of asset management, audio/visual output, a unique touch-based input method, and tile-based animated sprites and maps. I also built out an HTML-prototype map editor. It may sound like I took a vacation to get some work done but when you&#8217;re doing what you love, it&#8217;s really <a href="http://www.humblepied.com/jessica-hische/">not work</a>.</p>

<p>A simple proof of concept was required to iron out any kinks in the finished frameworks. That concept proved more interesting than the original game I set out to create.</p>

<h2>Pushing Pixels</h2>

<p>Before I get to Mimeo, I want to address my love of pixels. The aesthetics of Mimeo (and Horror Vacui before it) are not born solely from nostalgia. Good pixel art strikes the perfect balance between appreciable craftsmanship and the gestalt. A single pixel out of place, one too few or too many, ruins the illusion. There&#8217;s an unmuddied, economy of expression, the thankless result of the limitations of cartridge-based consoles.</p>

<p>At its core, play, and by extension video games, is learning. Call it discovery or mastery but a good game introduces new ideas (teaches), leverages existing ones (reviews) and layers them to create unique challenges (tests). Teaching, at its core, is communicating. Verbosity is an academic sleeping pill. A game&#8217;s graphics are the player&#8217;s teacher and a good teacher is consistent, clear, and concise. Like good pixel art.</p>

<h2>Super Mimeo Bros.</h2>

<p>Mimeo (even the name) started as a Mario clone with a twist: instead of power-ups affecting the player, they affect the entire game world. A story and mythos quickly developed. The so-called Mimeoverse consists of two 16-bit demiverses sharing 32-bits between them. When the evil Kleptopus King, an 8-bit octopus with an inferiority complex, discovers a portal into Mimeo&#8217;s realm and begins to syphon off its bits, Mimeo is sucked in and down-sampled to 2-bit. So begins Mimeo&#8217;s quest to restore balance to the demiverses.</p>

<p><img src="/assets/images/mimeo-hoodies.png" alt="Mimeo in the Hood" title="" /></p>

<p>Mimeo collects carts to upscale himself and the game world and enables switching between acquired resolutions to solve platforming puzzles. He will find guidance from nearest-neighbor and native rabbit Gaido. Collected bits translate into 1ups. Disposing of certain types of enemies leaves behind hoodies that grant Mimeo special abilities. The Quantum Glove puts Mimeo&#8217;s bits in a state of quantum superposition; enemies can&#8217;t hit him but they can&#8217;t dodge him either. &#8220;It&#8217;s so bad.&#8221;</p>

<h2>8-bit Hits</h2>

<p>In addition to creating the scenario, programming and designing all the graphics I&#8217;m also composing and producing all the music. The game uses a Nintendo NES 2A03 APU sound chip emulator (courtesy of <a href="http://www.fly.net/~ant/libs/audio.html#Nes_Snd_Emu">Blargg</a>) for authentic sounds that will keep pace with the game&#8217;s graphics. Here&#8217;s some sample mp3s of the foreboding Fortress:</p>

<ul>
<li><a href="/assets/music/mimeo/Fortress%20(2-bit%20NSF).mp3">2-bit bass</a> </li>
<li><a href="/assets/music/mimeo/Fortress%20(4-bit%20NSF).mp3">4-bit hi-hat</a></li>
<li><a href="/assets/music/mimeo/Fortress%20(8-bit%20NSF).mp3">8-bit melody</a> </li>
<li><a href="/assets/music/mimeo/Fortress%20(16-bit%20NSF).mp3">16-bit counter melody</a> </li>
</ul>

<p>I&#8217;m using a combination of <a href="http://www.milkytracker.net/">MilkyTracker</a> with the nespack.s3m samples for composing, Garageband for arranging, and <a href="/archive/2010/02/13/an_mml_bundle_for_textmate">MML</a> for producing the final NSFs used in the game.</p>

<h2>Resolution</h2>

<p>I&#8217;m aiming for a 2010 holiday season release. There is still much work to be done as every asset exists in 4 different resolutions (I said this project was ambitious) but the majority of core pieces are already in place.</p>

<p>You can catch up on past progress <a href="http://dribbble.com/players/shauninman/tags/mimeo">on Dribble</a> once it goes public and follow along with the unfolding process on <a href="http://blog.mimeoverse.com/">Mimeo in the Tumbleverse</a>, a development diary. Over the course of development I uploaded some short <a href="http://www.flickr.com/photos/shauninman/tags/mimeo/">demo videos</a> to Flickr and this slightly longer executive summary progress report to Vimeo:</p>

<p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9671195&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9671195&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object></p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2010%2F02%2F23%2Fmimeo_and_the_kleptopus_king&amp;seed_title=Mimeo+and+the+Kleptopus+King</link>
	<guid isPermaLink="false">1508@http://www.shauninman.com/</guid>
	<category>Design</category><category>Personal</category><category>Gaming</category>
	<pubDate>Tue, 23 Feb 2010 13:35:00 GMT</pubDate>
</item>
<item>
	<title>An MML Bundle for Textmate</title>
	<description><![CDATA[<p>As much as I <a href="/archive/2009/01/02/an_8bit_2008">love the Korg DS-10</a> its inability to edit/record more than one bar at a time is a bit of drag when composing. Especially with the comparative ease of musical typing in Garageband with YMCK&#8217;s <a href="http://shaun.in/g/5g">Magical 8bit Plug</a>. Unfortunately YMCK&#8217;s plugin doesn&#8217;t produce the most authentic sounds with no control over vibrato and pops between continuous notes (even with release increased slightly from <code>0</code> to <code>0.01</code>). So my search continued.</p>

<p>I dabbled with Neil Baldwin&#8217;s <a href="http://dutycyclegenerator.com/nijuu/nijuu.html">Nijuu</a>. It turns out I&#8217;m just not comfortable <em>that</em> close to assembly language. (See also, Neil&#8217;s native NES tracker <a href="http://blog.ntrq.net/?page_id=2">NRTQ</a>) I finally (as of this writing) settled on MML or <a href="http://en.wikipedia.org/wiki/Music_Macro_Language">Music Macro Language</a>. Nullsleep&#8217;s <a href="http://www.nullsleep.com/treasure/mck_guide/">MCK/MML Beginners Guide</a> proved a very non-threatening introduction but neonempyr&#8217;s <a href="http://www.neonempyr.org/ppmck_guide.html">Ultimate PPMCK MML Reference</a> definitely won the thoroughness round. (The latter went missing the day after posting this. Fortunately I downloaded a copy for offline use. Here is my mirror of the <a href="/assets/downloads/ppmck_guide.html">Ultimate PPMCK MML Reference</a>)</p>

<p>MML looked like a manageable language but it seemed none of the tools designed to compile MML into the requisite .nes or .nsf files were available on OS X. All of the links to the OS X versions had either 404&#8217;d or fallen prey to squatters. After a day of searching I finally found a copy of <a href="http://clogging.web.fc2.com/husic/">ezMML</a>, an editor/compiler built&#8212;or rather thrown together&#8212;for OS X. Oh sure, you can resize the editor window but it doesn&#8217;t resize the texteara. I can forgive an unpolished UI if the utility is there but when a crash during an incremental save wiped out an entire morning&#8217;s work (the post-crash saved file was completely empty) it was time to move on.</p>

<p>I use Textmate for the majority of my non-iPhone programming and text editing needs. I don&#8217;t recall it ever crashing (except having to force quit the occasional 30MB SQL file). So I spent the afternoon hacking together rudimentary MML syntax coloring as well as the Build and Run commands. </p>

<p>Now I have a reliable (and resizable) MML editor with a single key-command to compile an .nsf and automatically launch <a href="http://bannister.org/software/ao.htm">Audio Overload</a>. I can listen to my composition as easily as I can preview my HTML in a browser.</p>

<div class="image"><img src="/assets/images/mml-bundle.png" width="334" height="228" alt="" /></div>

<p><a href="/assets/downloads/MML.zip">This bundle</a> perches precariously on the shoulders of giants and is offered as-is, as always. You might be happy to know it can also now compile <a href="/archive/2010/07/06/mml_bundle_now_creates_multi_song_nsfs">multiple MML files into a single NSF</a>.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2010%2F02%2F13%2Fan_mml_bundle_for_textmate&amp;seed_title=An+MML+Bundle+for+Textmate</link>
	<guid isPermaLink="false">1507@http://www.shauninman.com/</guid>
	<category>Music</category><category>Gaming</category>
	<pubDate>Sun, 14 Feb 2010 02:14:00 GMT</pubDate>
</item>
<item>
	<title>The Muggle Coder</title>
	<description><![CDATA[<p>It&#8217;s no secret that I&#8217;m <a href="http://twitter.com/shauninman/status/6274989029">not a fan</a> of frameworks. As I mention in a recent <a href="http://www.techradar.com/news/internet/the-brains-behind-the-mint-web-stats-app-652209">.Net interview</a>:</p>

<blockquote>
  <p>I don&#8217;t like magic. I like knowing how something works. </p>
  
  <p>I don&#8217;t like taking things for granted because if magic breaks, unless it&#8217;s your own trick, you don&#8217;t know how to fix it.</p>
</blockquote>

<p>And nothing in recent experience is as magical as the iPhone SDK. I&#8217;m sure the Objective-C language and Apple&#8217;s dependent frameworks solve a lot of problems encountered by experienced software developers. As an inexperienced developer without the context of those problems, these clever pre-made solutions seem like unnecessary hoops erected for the sole purpose of jumping.</p>

<p>Compounding this confusion are NIBs, XIBs, and <a href="http://twitter.com/shauninman/status/6334805134">Interface Builder</a>. Interface Builder allows you to create and connect visual interface elements to your Objective-C classes. These interfaces are stored precompiled in a NIB or as XML in a XIB. It sounds like a brilliant idea&#8212;and it is&#8212;but as a software solution it&#8217;s a confounding mess. Especially when you&#8217;re developing software that doesn&#8217;t require standard UI elements (like <a href="http://shauninman.com/horrorvacui/">an 8-bit game</a>).</p>

<p>So the first thing I do when creating a new iPhone project in Xcode is sever any connection with Interface Builder or dependence on XIBs. I prefer to start with a Window-based Application and immediately Delete (Also Move to Trash) <code>Resources/MainWindow.xib</code>. Then in <code>Resources/&lt;AppName&gt;-Info.plist</code> I delete the &#8220;Main nib file base name&#8221; row and save. Finally I copy the AppDelegate class name from  <code>Classes/&lt;AppName&gt;AppDelegate.h</code> (deleting the no-longer-necessary <code>IBOutlet</code> from the <code>@property</code> declaration while I&#8217;m in there) and paste it in as the <code>NSString</code> fourth argument of <code>UIApplicationMain</code> in <code>Other Sources/main.m</code> like so:</p>

<pre><code>UIApplicationMain(argc, argv, nil, @"&lt;AppName&gt;AppDelegate");
</code></pre>

<p>I can then create my window programmatically in the <code>applicationDidFinishLaunching</code> method with:</p>

<pre><code>windowFrame = [[UIScreen mainScreen] bounds];
window = [[UIWindow alloc] initWithFrame: windowFrame];
</code></pre>

<p>With no IBRabbits in my HatDelegate or Trick Referencing Outlets up my SleeveController I can go about the business of making my own mistakes and learning from them; so that one day all of this might make sense.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2009%2F12%2F04%2Fthe_muggle_coder&amp;seed_title=The+Muggle+Coder</link>
	<guid isPermaLink="false">1506@http://www.shauninman.com/</guid>
	<category>Objective-C</category>
	<pubDate>Fri, 04 Dec 2009 13:46:00 GMT</pubDate>
</item>
<item>
	<title>Tweetie2 &amp; Lessn</title>
	<description><![CDATA[<p>With the upgrade to 2.0 <a href="http://www.atebits.com/tweetie-iphone/">Tweetie</a> for the iPhone and iPod touch now supports <a href="http://developer.atebits.com/tweetie-iphone/custom-shortening/">custom url shorteners</a>. I&#8217;ve received a couple of emails and tweets (Twitter != Support) about using <a href="http://shauninman.com/archive/2009/09/14/less_n_go">Lessn</a> with Tweetie 2. Here&#8217;s the easiest way to set it up:</p>

<ol>
<li>On your desktop, copy your API key (found on <code>http://yourdomain.com/lessn/-/</code>) and paste it into the following url:
<code>http://yourdomain.com/lessn/-/?api=&lt;API key&gt;&amp;url=%@</code></li>
<li>Email the completed url to yourself</li>
<li>On the device, copy the url you emailed yourself and launch Tweetie 2 (the url can be constructed on the device but it takes some back and forth application switching)</li>
<li>On the Accounts screen, click the Settings button. Click &#8220;URL Shortening&#8221; then &#8220;Custom&#8230;&#8221;</li>
<li>Paste the url and click Save</li>
</ol>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2009%2F10%2F12%2Ftweetie_2_and_less_n&amp;seed_title=Tweetie2+%26amp%3B+Lessn</link>
	<guid isPermaLink="false">1504@http://www.shauninman.com/</guid>
	<category>Lessn</category>
	<pubDate>Mon, 12 Oct 2009 18:53:00 GMT</pubDate>
</item>
<item>
	<title>Lessn&#8217;go</title>
	<description><![CDATA[<p><a href="/archive/2009/08/17/less_n">Lessn</a> has been updated to <a href="/assets/downloads/lessn.zip">1.0.5</a> and supports two new arguments when Lessning a url:</p>

<ul>
<li><code>api</code>: returns just the Lessn&#8217;d url as plaintext. Example usage, <code>http://yourdomain.com/lessn/-/?url=&lt;long url&gt;&amp;api=&lt;API key&gt;</code></li>
<li><code>redirect</code>: allows you to create custom redirects. <code>%l</code> in the value of <code>redirect</code> is replaced with the Lessn&#8217;d url. Example usage, <code>http://yourdomain.com/lessn/-/?url=&lt;long url&gt;&amp;redirect=http%3A%2F%2Ftwitter.com%2F%3Fstatus%3D%l</code></li>
</ul>

<p>If you want to tweet a Lessn&#8217;d url from <a href="http://feedafever.com/">Fever</a> you could replace the default Twitter service url in your Preferences Sharing tab with the following: <code>http://yourdomain.com/lessn/-/?url=%u&amp;redirect=http%3A%2F%2Ftwitter.com%2F%3Fstatus%3D%t%2520%l</code></p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2009%2F09%2F14%2Fless_n_go&amp;seed_title=Lessn%26%238217%3Bgo</link>
	<guid isPermaLink="false">1497@http://www.shauninman.com/</guid>
	<category>PHP</category><category>Lessn</category>
	<pubDate>Mon, 14 Sep 2009 20:07:00 GMT</pubDate>
</item>
<item>
	<title>Quieteque (Idioteque)</title>
	<description><![CDATA[<div class="image"><img src="/assets/images/quieteque.png" width="334" height="334" alt="" /></div>

<p>Like <a href="/archive/2008/09/28/rabbit">Rabbit in Your Headlights</a>, Idioteque is a song I&#8217;ve been a fan of for almost a decade but only recently (um, last night) worked out how to play on the guitar.</p>

<p>This arrangement is a brisk two minutes and twelve seconds (so short you might have to listen to it twice to hear the whole thing) and plays a bit like an Iron &amp; Wine cover (if you&#8217;re being generous). I recorded the guitar and vocals together with one mic in one go. The backing harmony (which is actually just the melody in its original octave) was recorded twice and panned slightly left and right. </p>

<p>For posterity (more for future-me than current-anybody-else), the four two-note chords:</p>

<pre><code>e ----------------   e  ---------------
b ----------------   a# --0--4--12--9--
G --3--7--15--12--   G  --0--3--12--8--
D ----------------   D  ---------------
A ----------------   A  ---------------
E --3--6--15--11--   E  ---------------
</code></pre>

<p>The track artwork was inspired by Thom Yorke&#8217;s Eraser-era album art but retains the lo-fi aesthetic of the Kid A-era with the requisite touch of (modified) DIN Black. </p>

<p>Download <a href="/assets/music/quieteque/01%20Quieteque.mp3">Quieteque (Idioteque)</a>.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2009%2F09%2F10%2Fquieteque_idioteque&amp;seed_title=Quieteque+%28Idioteque%29</link>
	<guid isPermaLink="false">1494@http://www.shauninman.com/</guid>
	<category>Original Music</category>
	<pubDate>Thu, 10 Sep 2009 22:50:00 GMT</pubDate>
</item>
<item>
	<title>Again</title>
	<description><![CDATA[<div class="image"><img src="/assets/images/again.png" width="334" height="334" alt="" /></div>

<p>An ode to the rinse and repeat relationships of small ponds everywhere. <a href="/assets/music/again/01%20Again.mp3">Download Again</a>.</p>

<blockquote>
  <p>you were the one<br />
  who left me for the one<br />
  who left you for the one  </p>
  
  <p>and now you&#8217;re back here<br />
  whispering in my ear<br />
  &#8220;you were the one<br />
  I was wrong&#8221;  </p>
  
  <p>it wasn&#8217;t said in so many words<br />
  but like a fool that&#8217;s what I heard<br />
  I was tired and alone<br />
  now you&#8217;ve come and gone<br />
  again  </p>
  
  <p>you were the one<br />
  who left me for the one<br />
  &#8230;I never moved on  </p>
  
  <p>so now you&#8217;re back here<br />
  and whispering in my ear<br />
  &#8220;you are the one<br />
  I was wrong&#8221;  </p>
  
  <p>it didn&#8217;t have to be said in so many words<br />
  &#8216;cause like a fool that&#8217;s what I heard<br />
  I was tired and alone<br />
  now you&#8217;ve come and gone<br />
  again  </p>
  
  <p>this time I hope you stay gone<br />
  for good, for all that you&#8217;ve done<br />
  won&#8217;t you just let me move on.</p>
</blockquote>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2009%2F09%2F03%2Fagain&amp;seed_title=Again</link>
	<guid isPermaLink="false">1492@http://www.shauninman.com/</guid>
	<category>Original Music</category>
	<pubDate>Thu, 03 Sep 2009 13:33:00 GMT</pubDate>
</item>
<item>
	<title>A Wave by Any Other Title</title>
	<description><![CDATA[<p>Apparently mid to late summer is Shortwave season and <a href="http://yoast.com/">Joost</a> has been putting in some serious time on the beach. Another update to Shortwave recommended by the Pin-Striped One allows you to capture the title of a page for use in commands with the new <code>%t</code> token. </p>

<p>With the new token comes a new default Email Link command that will create a new email in your default mail program with the current page&#8217;s title as the subject plus any text that follows the trigger (or selected text) appended by the current url as the message body. Then all you need to do is enter an email address and hit send. This new token should also be handy for custom bookmarking, reblogging and tweeting commands.</p>

<p>As with the previous <a href="/archive/2009/08/21/wave_selection">two</a> <a href="/archive/2008/08/09/new_wave">updates</a>, this change couldn&#8217;t be made solely on the server-side so if you want this new functionality you will need to grab/create an <a href="http://shortwaveapp.com/">updated bookmarklet</a>.</p>

<p><strong>Update:</strong> The latest version of Safari on OS X seems to be inserting &#8220;localhost/&#8221; at the end of the message body. This has nothing to do with the <code>e</code> trigger or the new <code>%t</code> token but instead the way Safari handles header-based redirects using the <code>mailto:</code> pseudocol. Looking into it.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2009%2F08%2F24%2Fa_wave_by_any_other_title&amp;seed_title=A+Wave+by+Any+Other+Title</link>
	<guid isPermaLink="false">1489@http://www.shauninman.com/</guid>
	<category>JavaScript</category><category>Shortwave</category>
	<pubDate>Mon, 24 Aug 2009 20:17:00 GMT</pubDate>
</item>
<item>
	<title>Wave Selection</title>
	<description><![CDATA[<p>Based on a suggestion and sample implementation from <a href="http://yoast.com/">Joost de Valk</a> a new, updated <a href="http://shortwaveapp.com/">Shortwave bookmarklet</a> allows you to select text and have it automatically used as your search term. Now all you need to do is select some text, invoke Shortwave, type a trigger and hit enter. (Don&#8217;t forget that in Safari the items in your bookmark bar are mapped to &#x2318;+[1-9].)</p>

<p>As with the <a href="/archive/2008/08/09/new_wave">last update</a>, this change couldn&#8217;t be made on the server-side so if you want this new functionality you will need to <a href="http://shortwaveapp.com/">grab/create an updated bookmarklet</a>.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2009%2F08%2F21%2Fwave_selection&amp;seed_title=Wave+Selection</link>
	<guid isPermaLink="false">1487@http://www.shauninman.com/</guid>
	<category>Collaborations</category><category>JavaScript</category><category>Shortwave</category>
	<pubDate>Fri, 21 Aug 2009 16:59:00 GMT</pubDate>
</item>
<item>
	<title>Lessn</title>
	<description><![CDATA[<p>I <a href="http://twitter.com/shauninman/statuses/2811201085">recently</a> purchased <a href="http://shaun.in/">shaun.in</a> (ooh, dynamically generated SVG). Because the domain itself is so short (compared to the verbose shauninman.com) and in light of the <a href="http://joshua.schachter.org/2009/04/on-url-shorteners.html">current</a> <a href="http://blog.tr.im/post/159489555/tr-im-to-december-31-2009">volatility</a> <a href="http://blog.tr.im/post/160697842/tr-im-resurrected">exhibited</a> by third-party url shorteners, I thought I would try my hand at rolling my own shortener. A few people have inquired about it so here we are.</p>

<div class="image"><img src="/assets/images/lessn.png" width="334" height="128" alt="" /></div>

<p>Lessn is an extremely simple, personal url shortener written in PHP with MySQL and mod_rewrite. Download the latest version of <a href="/assets/downloads/lessn.zip">Lessn</a> and check out the included <code>README.txt</code> for installation instructions. I&#8217;m not sure about minimum requirements but I&#8217;ve been using it with PHP <code>5.2.6</code> and MySQL <code>5.0.41</code> and users have reported success with PHP <code>4.4.8</code> and MySQL <code>4.1.25</code>.</p>

<p>Lessn is offered free, as is, sans support and without warranty (but is really not as scary as all that).</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2009%2F08%2F17%2Fless_n&amp;seed_title=Lessn</link>
	<guid isPermaLink="false">1486@http://www.shauninman.com/</guid>
	<category>PHP</category><category>Lessn</category>
	<pubDate>Mon, 17 Aug 2009 18:05:00 GMT</pubDate>
</item>
<item>
	<title>All Along the Watchtower</title>
	<description><![CDATA[<p>A cover of a cover. Written by Bob Dylan, popularized by Jimi Hendrix, arranged by Dave Matthews and recently renewed by Bear McCreary, I&#8217;ve been playing this song for more than a decade. <a href="/assets/music/covers/All%20Along%20the%20Watchtower.mp3">This recording</a> was banged out this morning using the built-in mic on my MacBook Pro. Adjust expectations accordingly.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2009%2F08%2F13%2Fwatchtower&amp;seed_title=All+Along+the+Watchtower</link>
	<guid isPermaLink="false">1485@http://www.shauninman.com/</guid>
	<category>Music</category><category>Original Music</category>
	<pubDate>Thu, 13 Aug 2009 16:31:00 GMT</pubDate>
</item>
<item>
	<title>Fever: Black, White and Read Hot All Over</title>
	<description><![CDATA[<p>Mint has a new baby sister! Earlier this morning I released <a href="http://feedafever.com/">Fever</a>, a cure for the common feed reader. Born of (almost) a decade of accumulating and failing to keep up with hundreds of feeds, Fever is a self-hosted recommendation engine for content you&#8217;re already subscribed to built atop a full-featured feed reader.</p>

<h2>Peeriodicals</h2>

<p>About a year and a half ago, shortly after releasing <a href="http://haveamint.com/">Mint 2</a>, I had a stats-inspired epiphany: What if, instead of mentally processing hundreds of headlines your feed reader did that heavy&#8212;we&#8217;re talking pre-coffee&#8212;lifting and just told you what everyone was collectively talking about? And what if it weighted those &#8220;hot&#8221; topics and aggregated the ensuing discussions in your feeds together? </p>

<p>You could check in once a day&#8212;once a week even&#8212;and not miss a beat. You could follow new feeds with abandon, the more you fed it, the more effective it would get. Like a personalized, passive Digg catering to your unique interests.</p>

<p>That&#8217;s Fever in a nutshell. For more details check out <a href="http://feedafever.com/">feedafever.com</a> and don&#8217;t miss the <a href="http://feedafever.com/#demo">screencast</a> (those 5 minutes consumed 48 excruciating hours of my life).</p>

<h2>The Village</h2>

<p>It&#8217;s true what they say, it takes a village to raise a child and Fever wouldn&#8217;t exist in its current form without the timely input of a handful of generous and insightful beta testers. We built this city.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2009%2F06%2F17%2Ffever_black_white_and_read_hot_all_over&amp;seed_title=Fever%3A+Black%2C+White+and+Read+Hot+All+Over</link>
	<guid isPermaLink="false">1470@http://www.shauninman.com/</guid>
	<category>Fever</category>
	<pubDate>Wed, 17 Jun 2009 10:05:00 GMT</pubDate>
</item>
</channel>
</rss>