<?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-2009 Shaun Inman</copyright>
<generator>Shaun Inman&#8217;s Bookend</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<lastBuildDate>Fri, 03 Jul 2009 01:27:26 GMT</lastBuildDate>

<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>
<item>
	<title>Launch Ness Monster</title>
	<description><![CDATA[<p>So you&#8217;ve had a <a href="http://shauninman.com/archive/2008/08/19/sign_up_ness">temporary sign-up page</a> out there for a couple months and you&#8217;ve been testing the site proper on a secret, <a href="http://marcamos.com/password-protect-a-subdomain-with-plesk/">password-protected subdomain</a>. Now you&#8217;re ready to make sure everything works in situ before opening it up to the world. Use this handy <code>mod_rewrite</code> rule to redirect everyone but you to a temporary directory until everything is perfect.</p>

<h2>The Switch</h2>

<p>First things first, move or copy your sign-up form and all support files into the new temporary directory. I use <code>/ingsoon/</code> which uses the TLD to spell out &#8220;Coming Soon.&#8221; Make sure to update any non-relative paths that may have changed including paths to stylesheets, images and JavaScript.</p>

<p>Next add the following to an <code>.htaccess</code> file in <code>/ingsoon/</code> and any other directory that you want to remain accessible to others (eg. your <a href="http://haveamint.com/">Mint</a> installation):</p>

<pre><code>&lt;IfModule mod_rewrite.c&gt;
    RewriteEngine   off
&lt;/IfModule&gt;
</code></pre>

<p>Then add the following to your root <code>.htaccess</code> file, changing the IP address to <a href="http://www.whatismyip.com/">your own</a> (don&#8217;t forget to escape the dots with a backslash):</p>

<pre><code>&lt;IfModule mod_rewrite.c&gt;
    RewriteEngine   on

    # Coming Soon redirect
    RewriteCond     %{REMOTE_ADDR}      !^(192\.168\.1\.101)$
    RewriteRule     .* /ingsoon/ [R,L]
&lt;/IfModule&gt;
</code></pre>

<p>Lastly, update your Campaign Monitor settings to reflect the new path. Go to &#8220;Manage Subscribers,&#8221; then click on the list associated with your sign-up form. In the sidebar under &#8220;Capturing and Processing&#8221; you need to update the path in both &#8220;Customize subscribe process&#8221; and &#8220;Unsubscribe settings.&#8221;</p>

<p>Now get back to work, you&#8217;re <a href="http://feedafever.com/">so close</a>!</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2009%2F06%2F15%2Flaunch_ness_monster&amp;seed_title=Launch+Ness+Monster</link>
	<guid isPermaLink="false">1469@http://www.shauninman.com/</guid>
	<category>Web</category>
	<pubDate>Mon, 15 Jun 2009 11:42:00 GMT</pubDate>
</item>
<item>
	<title>PXR + Cufon = Pxfon</title>
	<description><![CDATA[<p>Back in 2006 I created (but never released) <a href="http://shauninman.com/tmp/pxr/">PXR</a>, a pixel-based alternative to IFR. I built a tool that could convert specially prepared gifs into a format that could then be used by the PXR JavaScript to generate and layout the pixel typeface. It was cute but impractical.</p>

<p>Fast-forward three years. <a href="http://cufon.shoqolate.com/">Cufón</a> is <a href="http://novemberborn.net/sifr3">sIFR</a>&#8217;s heir apparent. But in my quick tests Cufón wasn&#8217;t up to the challenge of generating a <code>font.js</code> from any of my pixel fonts. Even if it had, the result would probably have been marred by a pixel&#8217;s worst enemy, anti-aliasing.</p>

<p>So yesterday I cracked open a couple of Cufón-generated <code>font.js</code> files and the un-minified <code>cufon.js</code> to figure out how the pieces fit together. I was able to successfully reverse engineer the format and modify my original PXR generator to output Cufón-compatible <code>font.js</code> files.</p>

<p>You can play around with the <a href="http://pixel-portraits.com/pxfon/">generator</a> on <a href="http://pixel-portraits.com/">Pixel Portraits</a>. I haven&#8217;t added any sort of error checking and the current outline tracing algorithm is remedial at best; it can only see characters one row at a time. That means it&#8217;s especially inefficient on larger pixel typefaces (anything greater than 18px tall). But it&#8217;s good enough for me. </p>

<p>With <a href="http://pixel-portraits.com/pxfon/">Pxfón</a> I might even be able to carry over the pixel aesthetic from my new <a href="http://shauninman.com/pact/">splash page</a> to the entire site. That would be sure to confound the average Googler.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2009%2F04%2F17%2Fpxr_cufon_pxfon&amp;seed_title=PXR+%2B+Cufon+%3D+Pxfon</link>
	<guid isPermaLink="false">1446@http://www.shauninman.com/</guid>
	<category>CSS</category><category>Design</category><category>Inman Flash Replacement</category><category>JavaScript</category>
	<pubDate>Fri, 17 Apr 2009 15:10:00 GMT</pubDate>
</item>
<item>
	<title>Eye of the Abhorrer</title>
	<description><![CDATA[<p>These game design notes pick up where <a href="/archive/2009/02/03/horror_vacui_game_design">The Horror</a> left off.</p>

<p>I chose an 8-bit aesthetic for <a href="/horrorvacui/">Horror Vacui</a> (<a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=303753394&amp;mt=8">iTunes App Store link</a>) for a couple reasons. Nostalgia was one. It&#8217;s <a href="/archive/2009/01/02/an_8bit_2008">no secret</a> that I&#8217;m a bigger fan of consoles past their prime than I am of the current generation. Another significant motivation was inexperience with the game development process. The self-imposed graphic and audio limitations allowed me to focus on figuring out all the invisible things that make a game tick while hiding any gaps in the fit-and-finish. And since the first games I really enjoyed playing were on the NES it seemed logical to open with an 8-bit game of my own.</p>

<h2>The Cards You&#8217;re Dealt</h2>

<p>Once I nailed down the game play using my <a href="http://www.flickr.com/photos/shauninman/3193675199/in/set-72157612473364891/">rudimentary paper prototype</a>, I did some quick sketches to work out the basics of the card design. The only thing that really changed from <a href="http://www.flickr.com/photos/shauninman/3255408139/in/set-72157612473364891/">these sketches</a> was the addition of a colored border that indicates the Temperature of a card which is the same regardless of the element/player the card represents.</p>

<p>The original Wii sprites actually had a lot more detail at first. Water cards had bubbles and Earth cards had pebbles with larger rocks embedded beneath the surface. These details looked great when you examined each card individually but on even a half-full board the extra detail proved too visually noisy and made it difficult to scan the Vacuum quickly.</p>

<p>I sketched out <a href="http://www.flickr.com/photos/shauninman/3256238802/in/set-72157612473364891/">the logo</a> hastily, playing with the art-world definition of horror vacui (a fear of whitespace) and the established card design. The incorporation of the two normal elements helped break up what would have otherwise been flat, irregular type.</p>

<p>The game&#8217;s <a href="http://www.flickr.com/photos/shauninman/3221957834/in/set-72157612473364891/">Default.png</a> pays homage to the <a href="http://en.wikipedia.org/wiki/Kill_screen">Pacman kill screen</a>. I knew going in that this intentionally glitchy screen was going to cause confusion (and it already has) but the smile-in-the-mind it gives players who are in the know makes it worth it.</p>

<p>For both the <a href="http://wiibrew.org/wiki/Horror_Vacui">Wii</a> and iPhone versions I created all the art at half-size and then resized to 200% with Nearest Neighbor resampling during export. I did the same for the pixel iPhone and App Store badge for the <a href="/horrorvacui/">mini-site</a>. All the graphics were mindful of the 4 colors-per-sprite limitations of the medium I was imitating (with the exception of the logo which combines the palettes of two sprites plus a highlight to make it pop).</p>

<h2>Hearing Aid</h2>

<p>All the music and sound effects were composed on the Korg DS-10. The main theme started as a demonstration of the Nintendo DS software for my aunt Suzanne this past holiday season. Because of its origins I dubbed it &#8220;Gameboy Named Suz.&#8221; The start chime is actually an ascending melodic run playing at 220bpm. The flipping sound is straight noise. The other sound effects are just the result of experimenting with various percussive sounds and fiddling with knobs.</p>

<p>Audio was imported by patching the headphone jack of the DS to the microphone jack on my MacBook Pro. I used <a href="http://www.versiontracker.com/dyn/moreinfo/macosx/17392">Audio Recorder</a> to capture the audio and save it as an AIF. I used <a href="http://audacity.sourceforge.net/">Audacity</a> to trim, in some cases amplify and then export the individual sound files.</p>

<p>Keeping with game music tradition I&#8217;ve created a Horror Vacui Original Sound Version soundtrack EP:</p>

<ol>
<li><a href="/assets/music/hv/01%20Gameboy%20Named%20Suz.mp3">Gameboy Named Suz</a></li>
<li><a href="/assets/music/hv/02%20Grover.mp3">Grover</a></li>
</ol>

<h2>Play with yourself</h2>

<p>One of the most interesting parts of developing the game was creating the CPU opponent AI. It required really thinking about and formalizing my own play strategy and figuring out a way for the CPU to pick the best available option.</p>

<p>One of the fun side effects of developing this AI is that once I worked out the kinks I was able to pit the CPU against itself. This proved handy when it came time to <a href="http://twitter.com/shauninman/statuses/1146661848">eliminate memory leaks</a> and suggested the player-free demo that starts if you stay on the title screen for more than 15 seconds.</p>

<p>The CPU AI is not as robust as it could be but should keep a novice on their toes for a couple plays. The real magic is playing against a human opponent. There&#8217;s nothing like having a friend draw an Ice Age or Inferno card on their last and (what would otherwise have been) winning turn and then taking the game from them.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2009%2F02%2F05%2Fbeauty_is_in_the_eye_of_the_abhorrer&amp;seed_title=Eye+of+the+Abhorrer</link>
	<guid isPermaLink="false">1408@http://www.shauninman.com/</guid>
	<category>Apple</category><category>Design</category><category>Gaming</category>
	<pubDate>Thu, 05 Feb 2009 19:00:00 GMT</pubDate>
</item>
<item>
	<title>The Horror</title>
	<description><![CDATA[<p>While waiting for Apple to approve the <a href="/horrorvacui/">iPhone/iPod touch port</a> of my Wii hombrew game <a href="http://wiibrew.org/wiki/Horror_Vacui">Horror Vacui</a> I thought I would jot down some notes on the evolution of the game mechanics. (Keep in mind that these are notes on the process and are not intended as an explanation of how to play the game. Many of the terms and rules continued to evolve after this initial exercise.)</p>

<h2>Conception</h2>

<p>The idea for this game started as incoherent, late-night scribbles about water and earth and their opposing natures at different temperatures; somewhat inspired by the element spell/enemy pairs in Final Fantasy games. I had a vague notion that it should be a two player <a href="http://en.wikipedia.org/wiki/Abstract_strategy_game">abstract strategy</a> board game (conceptually, if not physically).</p>

<p>As good a place as any to start but the idea was still very abstract. Games need goals and rules. So I decided players should take turns (obvious) placing pieces representing their element on a 4x4 grid (arbitrary) that when filled the player with the most pieces on the board wins (traditional).</p>

<p>Goals are easy. When combined with the initial concept, the goal suggested a name for the game, <em>Horror Vacui</em>, from the <a href="http://en.wikipedia.org/wiki/Horror_vacui">antiquated theory</a> that &#8220;Nature abhors a vacuum.&#8221; So the board became known as The Vacuum. The rules of how the two players&#8217; pieces interact took a bit longer to suss out.</p>

<h2>Opposites Detract</h2>

<p>For a while I toyed with ideas about the different physical states of the element (in addition different temperatures). Both have vapor, liquid and solid states. Water with mist, water and ice. Earth with dust, lava and earth. But this extra level of detail only confused how the two elements should interact (eg. water&#8217;s liquid state is at normal temperature while lava is molten earth&#8212;never mind having to map dust to cold). </p>

<p>After eliminating that tangent I decided that on each player&#8217;s turn they would select a card from a deck that would randomly determine whether their next piece played would be normal temperature, hot or cold. When placed, its temperature would affect any adjacent pieces&#8212;of both players. Matching extremes would eliminate the adjacent piece and opposing would normalize the temperature of adjacent pieces.</p>

<p>I also created two wild cards labeled &#8220;Cold Wind&#8221; and &#8220;Heat Wave.&#8221; These would move across the board in a predefined pattern (a straight line for Cold Wind, a sawtooth wave for Heat Wave) with a location determined by the player (who would not set a piece for that turn).</p>

<h2>Rules are made to be broken</h2>

<p>With the rules ironed out I started to build a prototype with jQuery but quickly decided against going straight into code. I remembered reading about paper prototyping for games (probably on Danc&#8217;s <a href="http://lostgarden.com/">Lost Garden</a> or SCAD professor&#8217;s <a href="http://bbrathwaite.wordpress.com/">Brenda Brathwaite&#8217;s blog</a>) so I <a href="http://twitter.com/shauninman/status/1099753609">gave that a go</a> (despite the hand cramp it was fun not staring at a screen for the hour it took to color and cut the pieces). Only to find that the rules (and goal) I laid out <a href="http://twitter.com/shauninman/status/1100279594">didn&#8217;t work so well</a>.</p>

<p>For one, draws were extremely frequent since it was a two player game on a board with an even number of cells with occupant majority determining which player wins. Apparently goals aren&#8217;t so easy after all. Also, it was too easy for the two players to cancel out each other&#8217;s previous move without moving the game forward. This resulted in many interminable games. Finally, explaining the Heat Wave wild card to a second player (as opposed to a computer which would just draw a preview of the moves effect) proved difficult.</p>

<p>The Draw problem could have been solved two ways. I could increase the size of the board giving it an odd number of cells or institute a fallback rule that gives the win to the player with the most normal temperature pieces (which are more stable in terms of gameplay). The second option didn&#8217;t eliminate the problem but suggests and encourages a good way to approach the game. In order to play effectively it&#8217;s best to balance &#8220;attacking&#8221; your opponent&#8217;s pieces with normalizing the temperature of your own&#8212;making them less susceptible to &#8220;attack.&#8221; I&#8217;m actually glad I made a mistake in arbitrarily choosing a grid size&#8212;it gave me useful insight into how the game actually works.</p>

<p>The Wild Card problem was the easiest to resolve. Wild cards should affect all of the pieces on the board. They were renamed to &#8220;Ice Age&#8221; and &#8220;Fire Storm&#8221; to reflect their new all-encompassing nature. Matching extremes are eliminated, normal temperatures switch to the extreme and opposing extremes revert to normal temperature. The results can be absolutely devastating to one or both players and creates an incentive to normalize your pieces.</p>

<h2>Are we there yet?</h2>

<p>Resolving the Interminable Game problem proved to be a bit harder. Because temperature is determined randomly there is always a chance that plugging the last hole in the board will open the board back up&#8212;sometimes requiring a player to eliminate one or more of their own pieces. I considered limiting the number of pieces played but that conflicts with the goal and the concept of the game.</p>

<p>Over the course of a couple of hours play-testing the paper prototype I refined some of the interaction rules and added some new ones to minimize the occurrence of interminable games. First, when an extreme has an impact on an adjacent piece, the incoming piece is restored to normal temperature. This provides positive feedback for playing offensively or defensively depending on the situation. It also reduces the number of &#8220;fragile&#8221; extreme pieces on the board at any given time making it less likely for a newly added piece to be picked off on the next turn since a normal piece requires two &#8220;attacks&#8221; before it is eliminated while an extreme piece needs only one.</p>

<p>A new Sacrifice Rule was added that allows a player to sacrifice a freshly drawn extreme element to normalize an opposing extreme piece already on the board. This allows players to avoid weakening their own pieces or strengthening an opponents piece simply to play a given piece. It also adds another level of strategy when combined with the final revision to the goal.</p>

<p>The new goal (on a 5x5 board) is to fill the board with the most <em>normalized</em> pieces. In the event of a tie the player with the most pieces on the board overall wins. </p>

<h2>Continue?</h2>

<p>With those revisions made I had a playable and more importantly enjoyable game design. The entire concept and prototyping process took about two days. The next day was spent designing the old school 8-bit graphics. By the end of the following day I had a playable Wii version of my paper prototype. It lacked music and sound effects, animation, title/game over screens and a CPU opponent but with two Wiimotes in hand I could watch the game unfold onscreen in real-time based on the rules and goals I had established.</p>

<p>See also, <a href="/archive/2009/02/05/beauty_is_in_the_eye_of_the_abhorrer">Eye of the Abhorrer</a>, notes on the visual and audio design of Horror Vacui. <strong>Thank you for reading but our princess is in another <a href="/archive/2009/02/05/beauty_is_in_the_eye_of_the_abhorrer">article</a>!</strong></p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2009%2F02%2F03%2Fhorror_vacui_game_design&amp;seed_title=The+Horror</link>
	<guid isPermaLink="false">1405@http://www.shauninman.com/</guid>
	<category>Design</category><category>Gaming</category>
	<pubDate>Tue, 03 Feb 2009 16:04:00 GMT</pubDate>
</item>
<item>
	<title>GlimmerMonkey</title>
	<description><![CDATA[<p>A couple weeks ago I came across <a href="http://glimmerblocker.org/">GlimmerBlocker</a>, a proxy-based ad-blocking System Preference for OS X. I&#8217;ve been using <a href="http://safariadblock.sourceforge.net/">Safari AdBlock</a> for as long as I can remember so I wasn&#8217;t that interest in its ad-blocking features. What caught my attention was that, even though it was designed for Safari, because it acts as a proxy, any browser that supports proxies can benefit from it&#8217;s rules. And GlimmerBlocker&#8217;s rules are quite powerful. </p>

<p>You can use <a href="http://www.regular-expressions.info/">regular expressions</a> to match urls. Then depending on the url, inject site-specific (or not) CSS and JavaScript. But not just CSS/JavaScript designed to block ads. It&#8217;s essentially a cross-browser <a href="http://www.greasespot.net/">GreaseMonkey</a>. If you use WebDAV or MobileMe you can publish the rules you create and share them with other GlimmerBlocker users.</p>

<p>Unfortunately, I have access to neither but the rules are easy enough to share even without. Here&#8217;s two to get you started.</p>

<p>The first adds a fixed position Mint icon to the bottom right corner of the browser window if <a href="http://haveamint.com/">Mint</a> is installed on the current site. (Handy for seeing if you&#8217;ve missed any pages on your site.) Open up the GlimmerBlocker System Preference pane and click on the Filters tab. Add a new filter named &#8220;Mint.&#8221; Then add a new rule to &#8220;Mint.&#8221; Under the Rule tab change the Action to &#8220;Whitelist/modify content.&#8221; Change Host to &#8220;all hosts&#8221; and add a description to Comments. Mine reads, &#8220;Adds icon to sites that have a Mint.&#8221; Then click on the Transform tab. and paste the contents of <a href="/assets/downloads/glimmerblocker/minted.txt">minted.txt</a> into the text field making sure &#8220;Only for content-type&#8221; is set to &#8220;html.&#8221; I&#8217;ve been using the Transform tab rather than the dedicated CSS or JavaScript tabs because they don&#8217;t seem to play nice with partial documents like Ajax requests. Save and you&#8217;re done.</p>

<p>The second is probably more interesting for the non-Mint junkies. It adds two new options to the navigation column on <a href="http://twitter.com/">Twitter</a>. It adds a link to your profile page on <a href="http://textism.com/favrd/about/">Favrd</a> and a search form for <a href="http://search.twitter.com/">search.twitter.com</a>&#8212;prepopulated to search out indirect @replies. Follow the same steps as above to create a Twitter Filter and rule. Set the Host to &#8220;java regexp&#8221; and its value to <code>(www\\.)?twitter\\.com</code>. This time paste the contents of <a href="/assets/downloads/glimmerblocker/twitter-ego.txt">twitter-ego.txt</a> into this rule&#8217;s Transform tab. Save and you&#8217;re done.</p>

<p>At this point both rules should be working in Safari. To enable them in Firefox, open up its Preferences and select the Advanced tab. Click on the Network tab. Then click on the &#8220;Settings&#8230;&#8221; button under Connection. Choose &#8220;Manual proxy configuration.&#8221; HTTP Proxy should be <code>localhost</code> and by default GlimmerBlocker runs on Port <code>8228</code>. Click Okay and Firefox is now using GlimmerBlocker as well.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2009%2F01%2F29%2Fglimmermonkey&amp;seed_title=GlimmerMonkey</link>
	<guid isPermaLink="false">1403@http://www.shauninman.com/</guid>
	<category>Apple</category><category>CSS</category><category>JavaScript</category><category>Mint</category><category>Web</category>
	<pubDate>Thu, 29 Jan 2009 23:38:00 GMT</pubDate>
</item>
<item>
	<title>Parallelogram</title>
	<description><![CDATA[<p>I&#8217;ve always wanted to make a game. Correction: I&#8217;ve always wanted to make a 16-bit console JRPG. But I&#8217;m not <a href="http://www.bobsgame.com/">Bob</a>; I never actually did anything about this desire. Developing a game of Final Fantasy&#8217;s scope is an <a href="http://www.youtube.com/watch?v=RDMWp1oLoA0#t=3m40">enormous undertaking</a>. I was daunted. Until I looked at it like this: I never wanted to make <a href="http://haveamint.com/">an application</a>. At least not until I was already 90% of the way there.</p>

<p><a href="http://haveamint.com/">Mint</a> didn&#8217;t appear fully formed from the ether. Way before it was an application it was an idea. It became an experiment. Then a simple script. Then a slightly more elegant script. And so on. Mint is the result of literally years of iteration and experimentation. But before even the idea there were years of experimenting with the technology that would make it possible.</p>

<p>So I&#8217;ve decided to start small, mapping that organic process onto the new problem of making a game. I&#8217;ll be releasing something for the homebrew <a href="http://wiibrew.org/wiki/Homebrew_Channel">channel</a>/<a href="http://wiibrew.org/wiki/Homebrew_Browser">browser</a> and writing more about the process later this week. It will be the weeklong effort of a novice but it&#8217;s a start.</p>

<p><strong>Update:</strong> I&#8217;ve posted the Wii game, <a href="http://wiibrew.org/wiki/Horror_Vacui">Horror Vacui</a>, and some <a href="http://www.flickr.com/photos/shauninman/sets/72157612473364891/">photos/screenshots</a>. Then I ported the game to the <a href="/horrorvacui/">iPhone/iPod touch</a> and Apple <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=303753394&amp;mt=8">released it</a> (link opens in iTunes).</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2009%2F01%2F10%2Fparallelogram&amp;seed_title=Parallelogram</link>
	<guid isPermaLink="false">1389@http://www.shauninman.com/</guid>
	<category>Gaming</category>
	<pubDate>Sat, 10 Jan 2009 13:48:00 GMT</pubDate>
</item>
<item>
	<title>An 8-bit &#8216;08</title>
	<description><![CDATA[<p>Before 2008 goes completely cold here&#8217;s eight of my favorite 8-bit (and related) things from the past year.</p>

<h2>8-bit Café</h2>

<p>Suggested by <a href="http://www.jamesbowskill.com/">James Bowskill</a> this <a href="http://8bitcafe.net/">&#8216;80&#8217;s gaming-themed café</a> was cool enough to revisit during my November-long trip to Tokyo. On the return visit my pal (and host) <a href="http://ninjaflavor.com/">Jon</a> discovered a wonderful little drink called the <a href="http://flickr.com/photos/jonsiegel/3081350297/">Dr. Mario</a>. I&#8217;m a little fuzzy on the ingredients but this Dr. Pepper-based cocktail is served in a beaker with a vial of multi-colored jelly pills on the side. As great as it was I&#8217;m sure there were plenty of other gems hidden in the Japanese-only menu.</p>

<h2>Mega Man 9</h2>

<p>Mega Man &#8220;Jump! Jump!&#8221;ed the shark on the 32-bit Saturn/Playstation more than ten years ago with Mega Man 8. Fortunately Capcom decided to go back to the franchise&#8217;s roots with <a href="http://en.wikipedia.org/wiki/Mega_Man_9">Mega Man 9</a> for the current-gen systems&#8212;quartering the bits in the process. It looks, sounds and plays like Mega Man 4-8 never happened. The pixels are the size of fingernails. The music chirps along. Pattern identification, memorization and reflexes are absolutely required. In other words, it&#8217;s a perfect way to burn the midnight holiday oil.</p>

<h2>Nestopia</h2>

<p><a href="http://bannister.org/">Richard Bannister</a> is the prodigious, undisputed king of emulation on the Mac. While I&#8217;ve been using <a href="http://bannister.org/software/nestopia.htm">Nestopia</a> (and about half his other emulators with <a href="http://bannister.org/software/ee.htm">Emulation Enhancer</a>) for years, this past year Nestopia saw a lot of use&#8212;especially after Mega Man 9 started an insatiable desire to play unforgiving platformers.</p>

<h2>Metroid: Zero Mission</h2>

<p>While not exactly 8-bit and not released this year, <a href="http://en.wikipedia.org/wiki/Metroid:_Zero_Mission">Metroid: Zero Mission</a> for the Gameboy Advance found it&#8217;s way into Slot-2 of my DS Lite quite a bit this year and introduced me to the <a href="http://en.wikipedia.org/wiki/Speed_running">speed-running</a> scene. Imagine the original Metroid streamlined and refined by the team responsible for Super Metroid. Super, indeed.</p>

<h2>Information Chase</h2>

<p>Bit Shifter released <a href="http://www.last.fm/music/Bit+Shifter/Information+Chase">Information Chase</a> in 2006 on <a href="http://www.8bitpeoples.com/discography/8BP059">8bitpeoples</a>. I downloaded it with a bunch of other releases but never got around to really listening to it until this year when it was brought to my attention by the chiptune documentary <a href="http://www.2playerproductions.com/">Reformat the Planet</a>&#8212;which takes its name from one of the tracks on this beautiful, 8-bit EP.</p>

<h2>8-bit Jesus</h2>

<p>In the same vein (and spirit of the season) Doctor Octoroc gave us <a href="http://www.doctoroctoroc.com/video-games/8-bit-jesus-full-album-release/">8-bit Jesus</a>. Eighteen holiday favorites individually recrafted in the musical style of familiar NES games. I will definitely be breaking this out next year when the rote, unsolicited holiday music begins its annual assault. Like in October.</p>

<h2>Korg DS-10</h2>

<p>Or maybe I&#8217;ll cook up my own 8-bit tunes with the <a href="http://www.korgds10synthesizer.com/">Korg DS-10</a>. Two melodic channels, four percussive, and up to eight DSes linked over WiFi. In a word: rad. Or you could just let these original square waveforms do the talking:</p>

<ul>
<li><a href="/assets/music/korg-ds-10/01%20Bouncy.mp3">Bouncy (mp3)</a></li>
<li><a href="/assets/music/korg-ds-10/02%20Ravey.mp3">Ravey (mp3)</a></li>
</ul>

<h2>Super Potato</h2>

<p>Wandering through <a href="http://en.wikipedia.org/wiki/Akihabara">Akihabara</a> unguided it&#8217;d be easy to miss <a href="http://www.akihabaranews.com/en/review-78-Super+Potato,+THE+place+for+gamers,+HDTV.html">Super Potato</a>. So I <a href="http://www.flickr.com/photos/shauninman/3037507541/">took notes</a>. Two floors filled with used retro consoles, games, OST CDs, guides and accessories, it&#8217;s a miracle I made it back from Tokyo with a yen to my name. I did pick up a Super Famicom, two controllers, Final Fantasy IV, Final Fantasy VI, Star Ocean and Super Street Fighter II&#8212;all for under a hundred bucks. I had a boxy <a href="http://en.wikipedia.org/wiki/File:Super_Nintendo_Entertainment_System-USA.jpg">Super Nintendo</a> growing up so I was always envious of the ergonomic design of the Super Famicom/<a href="http://en.wikipedia.org/wiki/File:SNES_800.jpg">European Super Nintendo</a>.</p>

<p>Now I have one of my very own to enjoy in the New Year.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2009%2F01%2F02%2Fan_8bit_2008&amp;seed_title=An+8-bit+%26%238216%3B08</link>
	<guid isPermaLink="false">1388@http://www.shauninman.com/</guid>
	<category>Gaming</category>
	<pubDate>Sat, 03 Jan 2009 03:05:00 GMT</pubDate>
</item>
<item>
	<title>Rabbit</title>
	<description><![CDATA[<p>For those unfamiliar with the original, <a href="http://www.last.fm/music/UNKLE/Psyence+Fiction/Rabbit+in+Your+Headlights">Rabbit in Your Headlights</a> is Thom Yorke&#8217;s 1998 collaboration with DJ Shadow for UNKLE&#8217;s <a href="http://www.pitchforkmedia.com/article/record_review/22865-unkle-psyence-fiction">debut</a> (and <a href="http://www.pitchforkmedia.com/article/record_review/22866-unkle-never-never-land">sadly</a>, <a href="http://www.pitchforkmedia.com/article/record_review/44366-unkle-war-stories">only</a> <a href="http://www.pitchforkmedia.com/article/record_review/145877-unkle-end-titlesstories-for-film">listenable</a>) album <a href="http://www.last.fm/music/UNKLE/Psyence+Fiction">Psyence Fiction</a>. Its <a href="http://www.youtube.com/watch?v=Z3ClCwcCvdQ">video</a> by <a href="http://en.wikipedia.org/wiki/Jonathan_Glazer">Jonathan Glazer</a> is equally memorable with diegetic sounds and a concussive conclusion. Both the song and video were instant favorites.</p>

<p>It only took me ten years and a change of instrument to get beyond the beautifully dense production and uncover the song&#8217;s simple but sturdy bones.</p>

<div class="image"><a href="/assets/images/rabbit-500.png"><img src="/assets/images/rabbit.jpg" width="334" height="334" alt="" /></a></div>

<p>I made <a href="/assets/music/covers/01%20Rabbit%20in%20Your%20Headlights.mp3">this recording</a> in one take with my MacBook Pro&#8217;s built-in mic using the basic <a href="http://www.versiontracker.com/dyn/moreinfo/macosx/17392">Audio Recorder</a> (which I usually use for &#8220;sketching&#8221; song ideas). I dropped the resulting recording onto Garage Band to trim, reduce ambient noise, and tidy up a flubbed guitar note in the last measure. I didn&#8217;t have a copy of Jacob&#8217;s Ladder handy, so I &#8220;sampled&#8221; myself using a second track in Garage Band.</p>

<h2>Tab</h2>

<p>And here&#8217;s the tab for my arrangement (more for Future Shaun than any other reason):</p>

<pre><code>Verse                     Chorus         Post-chorus       Bridge             

   Em  E/D#m  Am  Bm         A  Amaj7       E  C#m  A                          
e --------------------    e ----------   e ------------    e ------------------
b ---8---7------1---3-    b ----5-----   b ----9-------    b ------------------
G ---9---8------2---4-    G -6--6-----   G ----9----6--    G ------------------
D ---9---8------2---4-    D -7--6-----   D ---------7--    D ------------------
A ---7---7----0---2---    A -7--------   A -7-------7--    A ---------4--------
E -0---0--------------    E -5--5-----   E ----9----5--    E -2-2-5-2---5-2-5--
</code></pre>

<p>Track artwork includes a <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/deed.en">cc&#8217;d</a> photo by <a href="http://www.adoptioncurve.net/about">Tim Duckett</a>.</p>

<p><a href="/assets/music/covers/01%20Rabbit%20in%20Your%20Headlights.mp3">Enjoy!</a></p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2008%2F09%2F28%2Frabbit&amp;seed_title=Rabbit</link>
	<guid isPermaLink="false">1351@http://www.shauninman.com/</guid>
	<category>Original Music</category>
	<pubDate>Mon, 29 Sep 2008 00:20:00 GMT</pubDate>
</item>
<item>
	<title>Julep</title>
	<description><![CDATA[<div class="image"><img src="/assets/images/fluid-mint-dock.png" width="334" height="120" alt="" /></div>

<p>There&#8217;s been some <a href="http://flickr.com/photos/maxvoltar/2867880814/">recent</a> <a href="http://flickr.com/photos/-sam/2867969406/">Flickring</a> about mixing <a href="http://haveamint.com/">Mint</a> with <a href="http://fluidapp.com/">Fluid</a>. Sam reminded me that I still haven&#8217;t posted the giant Mint Fluid icon I made to complement the <a href="http://feedafever.com/">Fever</a> Fluid icon created for the beta testers. <a href="/assets/downloads/fluid-mint.png">Consider it done</a>.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2008%2F09%2F19%2Fmint_plus_fluid_equals_julep&amp;seed_title=Julep</link>
	<guid isPermaLink="false">1347@http://www.shauninman.com/</guid>
	<category>Apple</category><category>Mint</category>
	<pubDate>Fri, 19 Sep 2008 14:25:00 GMT</pubDate>
</item>
<item>
	<title>Mint: Third Year&#8217;s a Charm</title>
	<description><![CDATA[<p>This past Labor Day marks the third year since <a href="/archive/2005/09/06/green_means_go">releasing</a> <a href="http://haveamint.com/">Mint</a>. A quick annual review has become sort of <a href="/archive/2006/09/06/mint_a_year_in_green">a tradition</a> around <a href="/archive/2007/09/20/mint_year_2_in_review">these parts</a>.  </p>

<p>Three years out Mint has established itself as a mature <a href="http://haveamint.com/peppermill/">analytics platform</a>. On average ten new people fall in love with Mint every day. Twenty-five percent of all <a href="/archive/2008/01/18/mint_popular_with_the_internets">Mint users</a> like it so much they buy additional licenses for themselves, their friends and their clients. And they&#8217;re still writing rave reviews about it&#8212;both <a href="http://shawnblanc.net/2007/the-full-mint-y/">thorough</a> and <a href="http://twitter.com/philippbosch/statuses/914927278">concise</a>.</p>

<p>As a mature platform, Mint and its users definitely require less hand-holding. <a href="http://haveamint.com/forum/">Support</a> only consumes about an hour a day, with a bit more on Mondays. Mint only required four maintenance updates this past year with more regular updates and feature additions reserved for the various <a href="http://haveamint.com/peppermill/official_pepper/">official Pepper</a>. The past year also saw the introduction of two new official Pepper and a sub-app:</p>

<ul>
<li><a href="http://haveamint.com/peppermill/pepper/66/visits_diff/">Visits Diff</a> displays how each of the timeframes displayed by the Visits pane performed over the previous period. </li>
<li><a href="http://haveamint.com/peppermill/pepper/68/directories/">Directories</a> groups pages and hits by directory.</li>
<li><a href="http://haveamint.com/peppermill/other/65/leaves/">Leaves</a> provides device-appropriate views for multiple Mint installations.</li>
</ul>

<p>Third-party <a href="http://haveamint.com/forum/pepper_development/">Pepper developers</a> <a href="http://haveamint.com/peppermill/third_party_pepper/">contributed</a> another twelve Pepper and 64 updates to their various offerings.</p>

<p>Off-screen, Mint appeared in a <a href="http://www.flickr.com/photos/shauninman/2234495711/in/set-72157606869155092/">bare-all</a> piece written by <a href="http://elliotjaystocks.com/blog/archive/2008/create-the-perfect-logo-feature-in-net-magazine/">Elliot Jay Stocks</a> for .Net magazine and on the <a href="http://flickr.com/photos/maxvoltar/2835904941/">chests</a> of about sixty SXSW 2008 attendees, friends and family.</p>

<p>With Mint finally reaching an age where it can entertain itself, there&#8217;s more time to work on a <a href="http://feedafever.com/">new project</a> or <a href="http://shortwaveapp.com/">two</a>&#8212;both of which have generated ideas that will be making their way back into Mint.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2008%2F09%2F17%2Fmint_third_years_a_charm&amp;seed_title=Mint%3A+Third+Year%26%238217%3Bs+a+Charm</link>
	<guid isPermaLink="false">1346@http://www.shauninman.com/</guid>
	<category>Personal</category><category>Mint</category><category>Event</category>
	<pubDate>Wed, 17 Sep 2008 16:27:00 GMT</pubDate>
</item>
<item>
	<title>Architecture v. Carpentry</title>
	<description><![CDATA[<div class="image"><img src="/assets/images/architecture-v-carpentry.png" width="334" height="209" alt="" /></div>

<p><a href="/archive/2008/08/28/application_anatomy">More</a> design calisthenics resulting from another restless night. <a href="/assets/downloads/architecture-v-carpentry-1680x1050.png">Getcher 1680x1050 here!</a></p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2008%2F09%2F04%2Farchitecture_v_carpentry&amp;seed_title=Architecture+v.+Carpentry</link>
	<guid isPermaLink="false">1337@http://www.shauninman.com/</guid>
	<category>Design</category>
	<pubDate>Thu, 04 Sep 2008 13:58:00 GMT</pubDate>
</item>
<item>
	<title>Next On&#8230;</title>
	<description><![CDATA[<p>In talking about the <a href="http://googleblog.blogspot.com/2008/09/fresh-take-on-browser.html">Google Chrome</a> <a href="http://www.google.com/googlebooks/chrome/index.html">introductory comic</a> Jon Hicks <a href="http://www.hicksdesign.co.uk/journal/google-chrome">mentions</a> a feature of <a href="http://www.omnigroup.com/applications/omniweb/">Omniweb</a> that&#8217;s completely new to me:</p>

<blockquote>
  <p>The comic site itself highlights another web problem&#8212;loads of &#8216;next&#8217; links, something Omniweb solves with a magical press of the enter key, and I&#8217;d love to see implemented in other browsers.</p>
</blockquote>

<p>Keen. Until those other browsers implement such a feature I&#8217;ve thrown together two simple JavaScript bookmarklets that when invoked (say via the <code>command + [1-9]</code> key command in Safari) go to the url specified by any detected next or previous links.</p>

<p><a href="javascript:var%20links=document.getElementsByTagName(%27a%27);for%20(var%20i=0;i<links.length;i++){if%20(links[i].innerHTML.match(/\\bprev(ious)?\\b/i)||links[i].title.match(/\\bprev(ious)?\\b/i)){window.location.href=links[i].href;};};" onclick="alert('Drag this link onto your browser bookmarks bar.'); return false;" title="Previous">Prev</a> and <a href="javascript:var%20links=document.getElementsByTagName(%27a%27);for%20(var%20i=0;i<links.length;i++){if%20(links[i].innerHTML.match(/\\bnext\\b/i)||links[i].title.match(/\\bnext\\b/i)){window.location.href=links[i].href;};};" onclick="alert('Drag this link onto your browser bookmarks bar.'); return false;" title="Next">Next</a></p>

<p>I have them mapped to <code>command + 3</code> and <code>command + 4</code> respectively in Safari.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2008%2F09%2F02%2Fnext_on&amp;seed_title=Next+On%26%238230%3B</link>
	<guid isPermaLink="false">1335@http://www.shauninman.com/</guid>
	<category>JavaScript</category>
	<pubDate>Tue, 02 Sep 2008 14:28:00 GMT</pubDate>
</item>
<item>
	<title>Application Anatomy</title>
	<description><![CDATA[<div class="image"><img src="/assets/images/aa-design.gif" width="334" height="209" alt="" /></div>

<p>The other night while falling asleep my brain was mulling over the  different aspects of application development. While I feel quite capable in the individual disciplines, I think the hardest part for me is the process of tying all those aspects together into a cohesive whole.</p>

<p>The next morning I started off the day with some design calisthenics. This series of <a href="/assets/downloads/application-anatomy-1680x1050.zip">desktop wallpapers</a> are the result. The archive includes black-on-white and white-on-black versions at 1680x1050.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2008%2F08%2F28%2Fapplication_anatomy&amp;seed_title=Application+Anatomy</link>
	<guid isPermaLink="false">1334@http://www.shauninman.com/</guid>
	<category>Design</category>
	<pubDate>Thu, 28 Aug 2008 14:39:00 GMT</pubDate>
</item>
<item>
	<title>Widon&#8217;t 2.1.1</title>
	<description><![CDATA[<p><a href="http://www.bradkovach.com/">Brad Kovach</a> submitted a tiny update for the Widon&#8217;t Wordpress plugin that prevents non-Administrative users from accessing the Plugins page. Thanks Brad!</p>

<p><a href="http://shauninman.com/assets/downloads/si-widont-2.1.1.zip">Download the Widon&#8217;t 2.1.1 Wordpress plugin</a>, unzip and upload <code>si-widont.php</code> to <code>/wp-content/plugins/</code>. Activate the plugin from within Wordpress and optionally click on the &#8220;Widon&#8217;t Options&#8221; menu link to input additional tags you want widon&#8217;ted.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2008%2F08%2F25%2Fwidont_2_1_1&amp;seed_title=Widon%26%238217%3Bt+2.1.1</link>
	<guid isPermaLink="false">1332@http://www.shauninman.com/</guid>
	<category>Wordpress</category><category>Widon't</category>
	<pubDate>Mon, 25 Aug 2008 18:02:00 GMT</pubDate>
</item>
<item>
	<title>Sign-upness</title>
	<description><![CDATA[<p>The other day my pal <a href="http://sam.brown.tc/">Sam</a> asked me how I managed the <a href="http://feedafever.com/">Fever</a> notification sign-up page. He wanted to do something similar for <a href="http://remindness.com/">a new project</a> he&#8217;s working on. So I sent Sam my source code and we decided that others might benefit from this simple solution.</p>

<div class="image"><a href="http://feedafever.com/"><img src="/assets/images/fever-not-ready-yet.gif" width="334" height="205" alt="Fever" /></a></div>

<h2>The States</h2>

<p>My sign-up pages usually have three states:</p>

<ol>
<li>The sign-up form</li>
<li>The status message for subscribers</li>
<li>The unsubscribe message for the dearly departed</li>
</ol>

<p>All three states are served from the same page. Which state is displayed depends on an optional query string and the presence of a cookie.</p>

<h2>The Workhorse</h2>

<p>I&#8217;ve been using <a href="http://campaignmonitor.com/">Campaign Monitor</a> ever since <a href="http://haveamint.com/">Mint</a>&#8217;s user base outgrew PHP&#8217;s native <code>mail()</code> function. It&#8217;s a great service, reliable, easy to use and reasonably priced.</p>

<p>Campaign Monitor provides a simple HTML form that you can copy/paste into your code and allows you to specify urls for custom subscribe and unsubscribe confirmation pages&#8212;which conveniently covers all three states. There&#8217;s even a <a href="http://www.haveamint.com/peppermill/pepper/80/campaign_monitor_subscribers/">Campaign Monitor Subscribers Pepper</a> (created by <a href="http://slimkiwi.com/">Mark J. Reeves</a>), which is handy if you&#8217;re Minted.</p>

<p>When you grab your form HTML from Campaign Monitor, set your subscribe confirmation page to the url of your sign-up page plus <code>?subscribed</code> and your unsubscribe confirmation page to the url plus <code>?unsubscribe</code> (no <code>d</code>).</p>

<h2>The Glue</h2>

<p>Copy the sample PHP file below, fill with your own wit and beauty (taking care not to disturb the cookie setting and PHP conditionals) and get back to work on that not-so-secret-anymore project we&#8217;re all dying to learn more about.</p>

<pre><code>&lt;?php

if (isset($_GET['subscribed']))
{
    setcookie('subscribed', 1, time() +  60 * 60 * 24 * 365);
}
else if (isset($_GET['unsubscribe']))
{
    setcookie('subscribed', '', time() -  60 * 60 * 24 * 365);
}

?&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&gt;
&lt;head&gt;
&lt;meta http-equiv="content-type" content="text/html; charset=utf-8" /&gt;
&lt;title&gt;&lt;!-- TITLE --&gt;&lt;/title&gt;
&lt;!-- STYLESHEETS, JAVASCRIPT, MINT! --&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;!-- HEADER, ETC. --&gt;

&lt;?php if (isset($_GET['unsubscribe'])): ?&gt;

    &lt;!-- UNSUBSCRIBE MESSAGE HERE --&gt;

&lt;?php elseif (isset($_GET['subscribed']) || isset($_COOKIE['subscribed'])):?&gt;

    &lt;!-- STATUS MESSAGE FOR SUBSCRIBERS --&gt;

&lt;?php else:?&gt;

    &lt;!-- SIGN-UP FORM COPY/PASTED FROM CAMPAIGN MONITOR --&gt;

&lt;?php endif;?&gt;

&lt;!-- FOOTER, ETC. --&gt;

&lt;/body&gt;
&lt;/html&gt;
</code></pre>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2008%2F08%2F19%2Fsign_up_ness&amp;seed_title=Sign-upness</link>
	<guid isPermaLink="false">1327@http://www.shauninman.com/</guid>
	<category>PHP</category>
	<pubDate>Wed, 20 Aug 2008 03:33:00 GMT</pubDate>
</item>
</channel>
</rss>