<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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"
	>

<channel>
	<title>Talk Funnel</title>
	<atom:link href="http://ramin.firoozye.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ramin.firoozye.com</link>
	<description>Ramin Firoozye's Public Whisperings</description>
	<pubDate>Sun, 04 Jan 2009 23:14:15 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>Building Games for the iPhone (and other platforms)</title>
		<link>http://ramin.firoozye.com/2009/01/02/building-games-for-the-iphone-and-other-platforms/</link>
		<comments>http://ramin.firoozye.com/2009/01/02/building-games-for-the-iphone-and-other-platforms/#comments</comments>
		<pubDate>Sat, 03 Jan 2009 01:45:08 +0000</pubDate>
		<dc:creator>ramin</dc:creator>
		
		<category><![CDATA[Tech]]></category>

		<category><![CDATA[development]]></category>

		<category><![CDATA[games]]></category>

		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://ramin.firoozye.com/?p=92</guid>
		<description><![CDATA[
Almost overnight a lot of apps have popped-up for the iPhone and many of them are games. Quite a few of them look like they were developed by hobbyists over a weekend (not that there&#8217;s anything wrong with that). But developing a quality, professional game for the iPhone is still a time-consuming and difficult task. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ramin.firoozye.com/i/itunesstore.jpg" width="382" height="206" alt="" /></p>
<p>Almost overnight a <a href="http://148apps.com/10000/" target="_blank">lot of apps</a> have popped-up for the iPhone and many of them are games. Quite a few of them look like they were developed by hobbyists over a weekend (not that there&#8217;s anything wrong with that). But developing a quality, professional game for the iPhone is still a time-consuming and difficult task. </p>
<p>Once you&#8217;ve settled on the game concept, you have to create the play logic, then generate the graphic assets and multimedia. And somewhere along the line you actually have to write the code to make it all happen. </p>
<p>To build a serious iPhone game you currently have several choices:</p>
<ol>
<li><b>Create a custom one-off app in Objective-C</b> (or C++): This gives you the most control but it means your game is pretty much going to stay on the iPhone. No desktop version. No Wii. Just iPhone. That might be fine, but if you&#8217;re investing tons of hours in content creation and game design, you may want to think hard about whether it makes business sense to leverage all that work and hit more platforms. Building a custom one-shot app also means that all your development effort is only for that one game. Instead, you may want to&#8230;
</li>
<li><b>Develop a general-purpose iPhone gaming engine</b>: Where the gaming logic and media content are kept separate and defined in configuration files. This way, you can get two, three, maybe even 100 bangs for your buck. Hopefully, the configuration language is expressive enough so you can build a whole class of apps, not just the same thing over and over. You should be mindful, however, that the iPhone SDK prohibits use of scripting languages, so you can&#8217;t embed a Javascript, Lua, or Python interpreter into your code. If you don&#8217;t have the know-how or are short on time, you may want to&#8230;
</li>
<li><b>License a third-party gaming engine</b>: This takes you away from the pleasure of writing raw Objective-C code (I&#8217;m not kidding &#8212; it actually is a lot of fun) but it also gives you support tools like 3D modelers, asset managers, physics engines, networking, etc. so you can focus on the high-level logic instead of low-level coding. Most also support some sort of scripting, but get around the SDK restriction by compiling it into executable code.</li>
</ol>
<p>I have worked on several Objective-C-based iPhone apps so far and developed a custom animation engine for a client, so I have squarely followed options #1 and #2. But I also have ideas for quick, fun entertainment/game apps that I&#8217;d like to whip out quickly without spending months on building a custom animation engine. I&#8217;d rather spend my time on polishing the game logic and generating nice looking multimedia assets instead of working around iPhone Core Animation&#8217;s strange quirks (please, don&#8217;t get me started).</p>
<p>So I decided to look around and see what&#8217;s out there and came up with the following. To be fair, I haven&#8217;t had time to dig too deeply into each one, but as a public service I figured I&#8217;d share what I&#8217;ve found so far. If I&#8217;ve missed any other platforms  or made any factual errors, please feel free to post a comment and I&#8217;ll issue an update.</p>
<p>Here they are (in alphabetic order):</p>
<table border="0" >
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td><a href="http://www.stonetrip.com/shiva/shiva-3d-game-engine.html" target="_blank"><img src="http://ramin.firoozye.com/i/shivalogo.jpg" width="120" height="63" border="0" alt="" /></a></td>
<td><a href="http://www.stonetrip.com/shiva/shiva-3d-game-engine.html" target="_blank">ShiVa</a> (with the <a href="http://www.stonetrip.com/shiva/publish-3d-game-on-iphone.html">iPhone Authoring Tool</a>) from <a href="http://www.stonetrip.com/" target="_blank">StoneTrip</a>.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td><a href="http://www.garagegames.com/products/torque/tgb/" target="_blank"><img src="http://ramin.firoozye.com/i/torquelogo.jpg" width="127" height="49" border="0" alt="" /></a></td>
<td><a href="http://www.garagegames.com/products/torque/tgb/" target="_blank">Torque Game Builder</a> (with the <a href="http://www.garagegames.com/products/torque/iphone">iPhone SDK</a> addition) from <a href="http://www.garagegames.com/" target="_blank">GarageGames</a>.</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td><a href="http://unity3d.com/unity/features/iphone-publishing" target="_blank"><img src="http://ramin.firoozye.com/i/unitylogo.jpg" width="112" height="68" border="0" alt="" /></a></td>
<td><a href="http://unity3d.com/unity/features/iphone-publishing" target="_blank">Unity iPhone</a>.</td>
</tr>
</table>
<p>In terms of features it&#8217;s hard to tell them apart from their spec sheets. They all feature 2D or 3D graphics, support a  variety of media and content (including shaders, sound, movies, etc), handle physics and collision detection, and playback audio and video. On the iPhone, there&#8217;s also support for the accelerometer (for tilt moves). All three engines support server-based multi-user playing which requires licensing their servers (or their hosting services). It&#8217;s not clear at this point whether they support WiFi-based Bonjour peer-to-peer networking which the iPhone and Touch both support.</p>
<p>What differentiates the three engines is what other platforms they support and their pricing model, so let&#8217;s dig into that.</p>
<h3>ShiVa</h3>
<p><img src="http://ramin.firoozye.com/i/shivaeditor.jpg" width="388" height="241" alt="" /></p>
<p><a href="http://www.stonetrip.com/shiva/shiva-3d-game-engine.html" target="_blank">ShiVa</a> comes in three versions, <i>PLE</i>, <i>Advanced</i>, and <i>Unlimited</i> (here&#8217;s the <a href="http://www.stonetrip.com/shiva/comparison.html" target="_blank">feature comparison table</a>). The development platform runs under Windows (or Parallels on the Mac). The <em>PLE</em> version is free and allows you to create an application, but you can&#8217;t publish the output commercially. For publishing you&#8217;ll need the <em>Advanced</em> or <em>Unlimited</em> versions. <i>Advanced</i> costs &euro;169 Euros (approximately $235 at today&#8217;s exchange rate) whereas <i>Unlimited</i> will set you back &euro;1,499 Euros (approximately $2080). </p>
<p>The main difference between the two seems to be that the <em>Unlimited</em> edition has additional benchmarking and optimization tools and supports team development. There is no extra cost for output to iPhone (and it looks like they intend to support Windows Mobile and Symbian). You can also target your game so it can run in a browser, but it requires the user to download and install a plugin. A standalone desktop app generator lets you target Windows, Mac OS X, and Linux. However, you&#8217;ll likely need to repurpose your media to fit the different screen sizes.</p>
<p>As far as console platforms are concerned, not much there yet.</p>
<p>To support multi-player mode, you&#8217;ll need to license the <a href="http://www.stonetrip.com/ston3d-server/ston3d-server.html" target="_blank">Ston3D Server</a> which comes in <i>PLE</i>, <i>INDIE</i> and <i>PRO</i> flavors. PLE is free but is limited to a single application and 6 simultaneous users. Clearly, it&#8217;s intended only for development and testing. The <i>INDIE</i> version runs on Windows, Ubuntu, and FreeBSD, but is limited to 64 sessions (game instances) and 4 sessions per server. It runs &euro;359 Euros (approximately $500) and the PRO server without the session limitations runs &euro;599 Euros (approximately $832). </p>
<p>There are also <a href="http://www.stonetrip.com/stonbox/stonbox.html" target="_blank">extra server-side features</a> like managed hosting, payments module, and direct messaging to the user (via SMS, MMS, and email).</p>
<h3>Torque</h3>
<p><img src="http://ramin.firoozye.com/i/torquesdk.jpg" width="390" height="195" alt="" /></p>
<p><a href="http://www.garagegames.com" target="_blank">GarageGames</a> offers a dizzying array of products and <i>Torque</i> variations, targeted at anything from simple 2D to networked 3D games. The basic 2D package is the <a href="http://www.garagegames.com/products/torque/tgb/" target="_blank">Torque Game Builder</a> which runs $100 for Indie apps (those earning less than $250K per year) or $495 for Commercial version. The <i>Pro</i> version also gives you access to the source code for both the engine and the editing tools ($250 for Indie, $1250 for Pro).</p>
<p>If you want 3D support then there&#8217;s <a href="http://www.garagegames.com/products/torque/tge/" target="_blank">Torque Game Engine</a> ($150 Indie, $749 Commercial). In both cases, you get a lot of tools that support building levels, media, sprites, etc. and take care of a lot of the low-level grunt work for you.</p>
<p>But that&#8217;s not all, Bob. There&#8217;s also <a href="http://www.garagegames.com/products/torque/tgea/" target="_blank">Torque Engine Advanced</a> ($295 Indie, $1495 Commercial). This gets you all the tools to develop advanced 3D games for consoles and desktops. To deploy your game to a console, you&#8217;ll want to look at <a href="http://www.garagegames.com/products/torque/twii/" target="_blank">Torque Wii</a> or <a href="http://www.garagegames.com/products/torque/t360/" target="_blank">Torque 360</a> (for the XBox 360). License fees for these have to be negotiated.</p>
<p>But it&#8217;s the iPhone we care about and to output there, you&#8217;ll want <a href="http://www.garagegames.com/products/torque/iphone" target="_blank">Torque for the iPhone</a>. First you&#8217;ll need a license to one of the existing &#8216;builder&#8217; tools (<i>Tool Builder</i> for 2D, or <i>Engine</i> for 3D). for the 2D version, you pay an additional $500 for an Indie license. That lets you publish a single iPhone title. Each additional title you want to publish requires an additional $100 license fee. You also have to show the GarageGames splash screen when the game starts and mention them in the game credits (and app web-site). 3D game support on the iPhone hasn&#8217;t been released yet so there&#8217;s no price listed.</p>
<p>Want <a href="http://www.garagegames.com/products/27/" target="_blank">server-based networking</a>? The basic server is open-sourced under GPL. If you want to use it in a commercial app, however, the cost is $295 for Indies and $995 for Commercial apps (consoles are separate). This is for games delivered on Windows, Mac, or Linux. It&#8217;s not very clear if networking is supported on the current iPhone version, but I imagine it&#8217;ll be there soon.</p>
<h3>Unity</h3>
<p><img src="http://ramin.firoozye.com/i/unityeditor.jpg" width="388" height="248" alt="" /></p>
<p><a href="http://unity3d.com" target="_blank">Unity</a> supports 2D and 3D content with a visual editor to help you develop and design your game content. The underlying scripting technology is based on C# and Javascript but their <a href="http://unity3d.com/unity/features/iphone-publishing" target="_blank">iPhone Publishing</a> product spits out an XCode project that they claim &#8216;just works,&#8217; compiling the scripting code into fast ARM assembler code (and thus avoiding the iPhone SDK&#8217;s edict against built-in scripting languages).</p>
<p>Under Unity, the Editor is the main point of creating apps. You visually adjust parameters and get live previews, then create scripts to handle game logic. In iPhone &#8216;preview&#8217; mode, you adjust settings on your desktop screen inside the visual editor and watch it update live on the target test iPhone. It&#8217;s a very cool way to quickly adjust and position your objects and verify that they look right on the iPhone screen.</p>
<p>To develop Unity apps, you need the editing system ($199 for Indie developers earning $100K or less &#8212; with free 30-day eval, or $1499 for Pro) which lets you generate output for Mac, Windows, browser plugin, and OS X dashboard widget. To output to the iPhone you can got for the <em>Basic</em> iPhone license for $399 for Indie developers and requires showing the Unity splash screen, or $1499 for the <em>Advanced</em> license. Wii/WiiWare output is separate and carries a hefty license fee ($15K-$30K per title).</p>
<p>The Advanced edition also gets you .NET sockets. This means that you can write your own back-end server and aren&#8217;t locked into theirs, but you don&#8217;t necessarily get Bonjour/WiFi support. You can also stream assets on-demand (which requires an asset-server client license for $499) but I can&#8217;t imagine anyone wanting to stream assets unless the user was on WiFi.</p>
<h3>Risks</h3>
<p>There are inherent risks with using a third-party middleware. Will the platform continue to be supported? Are they actively fixing bugs? What happens if they go out of business and you want to continue developing your app? If these are concerns, then you may want to consider <em>Torque&#8217;s</em> Pro versions since they come with source code.</p>
<p>On a resource-restricted platform like an iPhone there&#8217;s also the matter of having a whole extra layer of runtime between your app and the OS. If your app is going to be pretty media-heavy you may want to roll your own and keep tight control over memory use. </p>
<p>Don&#8217;t be scared by these caveats. For certain classes of games these engines will amply make up for the risks by letting you concentrate on content instead of engine technology and getting your app out that much sooner. If used properly, they can also act as &#8216;force multipliers&#8217; if you are an individual developer or a 2-3-person team. With these tools, you can rapidly create cool apps that would otherwise require a small army of coders and designers.</p>
<h3>Which one?</h3>
<p><img src="http://ramin.firoozye.com/i/puzzled.jpg" width="122" height="112" alt="" /></p>
<p>Which one you choose will depend primarily on what features you need, so the first thing I suggest is to download and try out each package (here are direct download pages for <a href="http://www.stonetrip.com/download/shiva-ple.html" target="_blank">ShiVa</a>, <a href="http://www.garagegames.com/demos/browse/development/?platform=&#038;sort=popular" target="_blank">Torque</a>, and <a href="http://unity3d.com/unity/download" target="_blank">Unity</a>). All three have free or eval versions and offer <i>Indie</i> pricing for small developers. If your app turns into a big hit and brings in enough revenue, it&#8217;s easy to justify the cost of the <i>Pro</i> or <i>Advanced</i> licenses.</p>
<p>If you intend to eventually move to the XBox then <em>Torque</em> is the only way to go. If Wii is where you might be heading, then it&#8217;s <em>Torque</em> vs. <em>Unity</em>. All three platforms support standalone desktop apps. I&#8217;m not sure with the prevalence of Flash in the browser if anyone&#8217;s willing to download and install a browser plugin just to run an application, so I&#8217;ll call web-based delivery a wash. </p>
<p>If licensing fees are a concern, then you may want to go with <em>ShiVa</em>. If you only need 2D support, then <strong>Torque</strong> may work for you (although their iPhone per-app licensing fee is a little too strange for my taste). Mac-only developers will want to look at <em>Unity</em> or <em>Torque Engine Advanced </em>. All others require Windows (but may work under Parallels or VMWare).</p>
<h3>iPhone-only features</h3>
<p><img src="http://ramin.firoozye.com/i/bonjourlogo.jpg" width="81" height="81" alt="" /></p>
<p>At this point, nobody seems to support peer-to-peer Bonjour-based networking on the iPhone. Quite a lot of games support that feature. Unlike a Nintendo-DS which allows two players to form an <i>ad-hoc</i> network just by sitting near each other, this only works when all the players are on the same WiFi subnet. It works pretty well when players are in the same room or dorm floor and doesn&#8217;t require going out to a central server. It&#8217;s especially handy in places where data access is metered and hitting a central server through the cell network can get expensive. Hopefully Bonjour support is something that will be supported soon. </p>
<p>All three engines appear to have decent support for the accelerometer but no mention yet of other iPhone-only features like multi-touch, GPS, or camera. One other thing to keep in mind is that all the license terms and prices listed apply to <i>games only</i>. If you want to develop a social networking or business app you may have to negotiate a separate license.</p>
<h3>Bottom line</h3>
<p>Which one will I use myself? My development environment is currently 100% Mac based and I have a lot of 3D, graphics, and sound production tools there so that will probably influence which way I go. That makes <em>Unity</em> a strong contender for me. However, I&#8217;ll defer final judgment until I&#8217;ve had a chance to seriously beat up each platform.</p>
<p>Remember that regardless of platform, you&#8217;ll need to sign-up separately for Apple&#8217;s iPhone development program (a $99 cost for individuals) to get a distribution certificate. You&#8217;ll also need to do the actual legwork of submitting the application to the app-store. And once the app is out, there&#8217;s the matter of marketing and promoting so your app stands out against <a href="" target="_blank">all those other ones</a> out there. </p>
<p>Ah yes, marketing. Let&#8217;s leave that for a future post&#8230;</p>
<p><b>Update:</b> For those interested in going the open-source route, <a href="http://sio2interactive.com" target="_blank">SIO2</a> and <a href="http://oolongengine.com/" target="_blank">Oolong Game Engine</a> are two 3D gaming engines for the iPhone/iPod Touch. (<i>Many thanks to Justin Hall for the tip.</i>) </p>
<p>Both look plenty capable for iPhone-only game development (NOTE: there&#8217;s no desktop or console output support). Based on a casual first-pass, it looks like SIO2&#8217;s tight integration with <a href="http://www.blender.org/" target="_blank">Blender</a> 3D editor and support for <a href="http://www.lua.org/" target="_blank">Lua scripting</a> makes it easier for those who want to focus on content-creation instead of low-level coding. Oolong, however, is targeted more at C++/Objective-C coders. According to the <a href="http://code.google.com/p/oolongengine/" target="_blank">Oolong source code site</a> it is the technology underlying <em>Torque Game Builder for iPhone</em> (see above). </p>
]]></content:encoded>
			<wfw:commentRss>http://ramin.firoozye.com/2009/01/02/building-games-for-the-iphone-and-other-platforms/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Tilt-shift video</title>
		<link>http://ramin.firoozye.com/2008/12/13/tilt-shift-video/</link>
		<comments>http://ramin.firoozye.com/2008/12/13/tilt-shift-video/#comments</comments>
		<pubDate>Sat, 13 Dec 2008 18:39:40 +0000</pubDate>
		<dc:creator>ramin</dc:creator>
		
		<category><![CDATA[Photography]]></category>

		<guid isPermaLink="false">http://ramin.firoozye.com/?p=84</guid>
		<description><![CDATA[Tilt shift photography is a technique where a photograph&#8217;s focus appears  blurred and only the center of the subject is in focus (there&#8217;s more to it, but that&#8217;s the gist of it). You can simulate it in Photoshop but it&#8217;s probably easier (albeit more expensive) to use special tilt-shift lenses. The effect is pretty [...]]]></description>
			<content:encoded><![CDATA[<p>Tilt shift photography is a technique where a photograph&#8217;s focus appears  blurred and only the center of the subject is in focus (there&#8217;s more to it, but that&#8217;s the gist of it). You can <a href="http://www.tiltshiftphotography.net/photoshop-tutorial.php" target="_blank">simulate it in Photoshop</a> but it&#8217;s probably easier (albeit more expensive) to use special tilt-shift lenses. The effect is pretty cool, as if you&#8217;re photographing a miniature set. Some background on the technique <a href="http://en.wikipedia.org/wiki/Tilt-shift_miniature_faking" target="_blank">here</a> and <a href="http://en.wikipedia.org/wiki/Tilt-shift_photography" target="_blank">here</a> and some beautiful examples <a href="http://www.smashingmagazine.com/2008/11/16/beautiful-examples-of-tilt-shift-photography/" target="_blank">here</a>.</p>
<p>The effect is used to stunning effect in this time-lapse music video made entirely with a tilt-shift lens:</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=2317118&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=2317118&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><br /><a href="http://vimeo.com/2317118">Metal Heart</a> from <a href="http://vimeo.com/keithloutit">Keith Loutit</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>Be interesting to see what would result if you put together the amazing <a href="http://www.usa.canon.com/dlc/controller?act=GetArticleAct&#038;articleID=2326" target="_blank">Canon EOS 5D Mark II HD</a> and a decent TS lens&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://ramin.firoozye.com/2008/12/13/tilt-shift-video/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Easy UIView debugging on the iPhone</title>
		<link>http://ramin.firoozye.com/2008/12/11/easy-uiview-debugging-on-the-iphone/</link>
		<comments>http://ramin.firoozye.com/2008/12/11/easy-uiview-debugging-on-the-iphone/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 07:49:38 +0000</pubDate>
		<dc:creator>ramin</dc:creator>
		
		<category><![CDATA[Tech]]></category>

		<category><![CDATA[cocoa]]></category>

		<category><![CDATA[iphone]]></category>

		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://ramin.firoozye.com/?p=80</guid>
		<description><![CDATA[The user interface of the iPhone is based on a series of nested UIView objects, arranged in a view-subview/parent-child relationship. When building a complex application with a lot of views, sometimes it&#8217;s handy to be able to see exactly what that relationship is.
But if you try to print out the value of a UIView in [...]]]></description>
			<content:encoded><![CDATA[<p>The user interface of the iPhone is based on a series of nested UIView objects, arranged in a view-subview/parent-child relationship. When building a complex application with a lot of views, sometimes it&#8217;s handy to be able to see exactly what that relationship is.</p>
<p>But if you try to print out the value of a UIView in the debugger (or through an <i>NSLog</i> function) you&#8217;ll be sorely disappointed. In this example we have a variable called <i>front</i> that is derived from a UIView. Setting a breakpoint in the XCode debugger, I type in a <code>po</code> (print object) command to show what that variable contains:</p>
<blockquote><p>
<code>(gdb) po _front<br />
&lt;BCCardSideView: 0&#215;106b020&gt;<br />
</code>
</p></blockquote>
<p>What you see is that the variable is of type <code>BCCardSideView</code> and its hex address. Not very helpful.</p>
<p>One solution is to take advantage of the Objective-C dynamic runtime and override UIView&#8217;s default <code>describe</code> method. This is the method that is called every time you try to display the value of an object. Here we have just such an override that recursively walks the view tree and dumps out the values. The code is contained in a file called <code>UIViewExtras.m</code>. All you have to do to enable it is include the file in your XCode project. There are no explicit methods to call. </p>
<p>Here&#8217;s the same output after <code>UIViewExtras.m</code> is included in the project (the indentation is a little messed up because of the column width of this blog. In the debug window, it should look fine):</p>
<blockquote><p>
<code>(gdb) po _front<br />
+ BCCardSideView retain:3 - tag:0 - bgcolor:(r:0 g:0 b:0 a:1.00)<br />
&nbsp;&nbsp;bounds: x:0 y:0 w:130 h:80 - frame: x:5 y:5 w:130 h:80 - center: x:70, y:45<br />
++ BCCardBackgroundView retain:4 - tag:0 - bgcolor:(r:255 g:255 b:0 a:1.00)<br />
&nbsp;&nbsp;&nbsp;bounds: x:0 y:0 w:130 h:80 - frame: x:5 y:5 w:130 h:80 - center: x:70, y:45<br />
++ BCCardTextView retain:4 - tag:0 - bgcolor:(r:0 g:255 b:255 a:1.00)<br />
&nbsp;&nbsp;&nbsp;bounds: x:0 y:0 w:100 h:20 - frame: x:0 y:0 w:100 h:20 - center: x:50, y:10<br />
&nbsp;&nbsp;&nbsp;text (len:4 - color:r:0 g:255 b:0 a:0.00): &#8216;name&#8217;<br />
++ BCCardTextView retain:4 - tag:0 - bgcolor:(r:255 g:255 b:0 a:0.00)<br />
&nbsp;&nbsp;&nbsp;bounds: x:0 y:0 w:100 h:20 - frame: x:0 y:20 w:100 h:20 - center: x:50, y:30<br />
&nbsp;&nbsp;&nbsp;text (len:5 - color:r:0 g:255 b:0 a:0.00): &#8216;title&#8217;<br />
++ BCCardTextView retain:4 - tag:0 - bgcolor:(r:0 g:0 b:255 a:1.00)<br />
&nbsp;&nbsp;&nbsp;bounds: x:0 y:0 w:100 h:20 - frame: x:0 y:40 w:100 h:20 - center: x:50, y:50<br />
&nbsp;&nbsp;&nbsp;text (len:5 - color:r:0 g:255 b:0 a:0.00): &#8216;email&#8217;<br />
++ BCCardTextView retain:4 - tag:0 - bgcolor:(r:255 g:0 b:0 a:1.00)<br />
&nbsp;&nbsp;&nbsp;bounds: x:0 y:0 w:60 h:20 - frame: x:0 y:60 w:60 h:20 - center: x:30, y:70<br />
&nbsp;&nbsp;&nbsp;text (len:7 - color:r:0 g:255 b:0 a:0.00): &#8216;phone.1&#8242;<br />
</code>
</p></blockquote>
<p>For each view object you see:</p>
<ul>
<li>The retain count.
</li>
<li>The tag value (if specified).
</li>
<li>The background color value in RGBA. RGB values are scaled up to 0..255 and alpha is shown as a floating point value between 0 and 1.
</li>
<li>View bounds rectangle (x, y, width, height)
</li>
<li>View frame rectangle (x, y, width, height)
</li>
<li>View center (x, y)
</li>
</ul>
<p>If view is a UILabel or UITextField, you also get:</p>
<ul>
<li>- Length of text
</li>
<li>- RGB value for text itself (vs. the background)
</li>
<li>- Actual value of the &#8216;text&#8217; inside the field.
</li>
</ul>
<p>Subviews are indented by multiple &#8220;+&#8221; (plus) signs. So the top-level has one &#8216;+&#8217; all its subviews have two &#8216;+&#8217; signs, *their* subviews will each have three &#8216;+&#8217; signs etc. </p>
<p>I personally find this handy in debugging views &#8212; especially those created dynamically. I hope you do too.</p>
<p>[ Download: <a href="http://www.firoozye.com/download/UIViewExtras.zip" target="_blank">UIViewExtras.zip</a> ] (<i>Update:</i> Link updated.)</p>
]]></content:encoded>
			<wfw:commentRss>http://ramin.firoozye.com/2008/12/11/easy-uiview-debugging-on-the-iphone/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Thoughts on Professional iPhone Development</title>
		<link>http://ramin.firoozye.com/2008/11/22/thoughts-on-professional-iphone-development/</link>
		<comments>http://ramin.firoozye.com/2008/11/22/thoughts-on-professional-iphone-development/#comments</comments>
		<pubDate>Sat, 22 Nov 2008 06:25:14 +0000</pubDate>
		<dc:creator>ramin</dc:creator>
		
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://ramin.firoozye.com/?p=74</guid>
		<description><![CDATA[
Idea vs. Execution
Raven Zachary in a post on the O&#8217;Reilly Inside iPhone Blog raises the old idea vs. execution argument. *Sigh*. This is the same debate I&#8217;ve been hearing (and having) for the past twenty years and it keeps popping back up again. 
Folks, it&#8217;s not zero-sum / either-or. It&#8217;s both. One hand holding the [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ramin.firoozye.com/i/yinyang.jpg" width="132" height="132" alt="" /></p>
<h3>Idea vs. Execution</h3>
<p>Raven Zachary in a <a href="http://blogs.oreilly.com/iphone/2008/11/turning-ideas-into-application.html" target="_blank">post on the O&#8217;Reilly Inside iPhone Blog</a> raises the old <i>idea</i> vs. <i>execution</i> argument. <i>*Sigh*.</i> This is the same debate I&#8217;ve been hearing (and having) for the past twenty years and it keeps popping back up again. </p>
<p>Folks, it&#8217;s not zero-sum / either-or. It&#8217;s <i>both</i>. One hand holding the other. Yin and yang. It&#8217;s like saying who was more important in your creation: your mother or your father? (OK, some might say it was the Rum and Coke, but remember that&#8217;s just the catalyst.)</p>
<p>A lot of people bandy about the phrase <i>&#8220;Ideas are a multiplier of execution.&#8221;</i> As near as (Google) can tell, this phrase was popularized in a <a href="http://www.oreillynet.com/onlamp/blog/2005/08/ideas_are_just_a_multiplier_of.html" target="_blank">short post by Derek Sivers</a>. What most people ignore is the conclusion he posits:</p>
<blockquote><p><b>To make a business, you need to multiply the two.</b></p></blockquote>
<p>In other words: <i>I * X = success</i></p>
<p>If either <i>I</i> (idea) or <i>X</i> (execution) values are low (or zero) the outcome suffers&#8211;or stays at zero. Without a good idea, the best developers will sit around and play games or post rubbish on Twitter. Without a good implementation the best ideas will sit around till the cows come home. And the converse is true as well (bad idea/bad execution).</p>
<p>Architects can draw as many designs as they want, but without the builders nothing will get built. The builders can build the most fabulous walls but they won&#8217;t quite connect because they don&#8217;t have good plans.</p>
<p>Shall I go on? (<i>NNNNoooo!</i>)</p>
<p>So the next time you discount somebody&#8217;s idea by assigning it a value of $0, you may want to pause and give it another listen. Naturally, there are lot more ideas than implementations, but that doesn&#8217;t mean ideas are worth $0. It just means you need a knack for sifting the good from the bad. And let&#8217;s not forget <i>good</i> and <i>bad</i> are subjective valuations. If it wasn&#8217;t so, all movies and games would be instant hits.</p>
<p>OK, &#8217;nuff said. I&#8217;m sure this isn&#8217;t the last time I&#8217;ll be hearing this debate again.</p>
<h3>Product vs. Project</h3>
<p>On a different topic, if you go by Raven&#8217;s numbers your typical developer making $125/hr working full-time will gross ~$250K a year (most developers I know work only part-time, however). If they write an app, put it on the app-store and it sells, say, 30,000 copies for the year (a conservative estimate) they would need to price it at around $10.99 in order to match the consulting rate. Write a hit (say, 100,000+/yr) and at that price, you&#8217;d be waaay ahead of the hourly rate.</p>
<p>The dilemma most professional iPhone developers will face is whether to take on a consulting project or spend the time working on their own product. I can tell you from personal experience, it&#8217;s pretty damn hard doing both. In a perfect world, you could do one for a while then switch to another. But it rarely works that way. While doing consulting, you&#8217;ll have to battle the constant nagging feeling that you&#8217;re actually <i>losing money</i> by not having your product out there and the opportunity may well slip away when someone else beats you to the market. On the other hand, while working on your product and not generating income, it&#8217;s hard to say no to someone offering you cash.</p>
<p>It&#8217;s a tough choice (and you should drop to your knees and kiss the ground if you&#8217;re lucky enough to be facing such a dilemma.)</p>
<h3>Pricing</h3>
<p>The other thing to keep in mind is that if you&#8217;re planning on writing an app for yourself and pricing it low (say, $0.99) then you&#8217;re looking at a heckuvalot of copies to make it worth not going the consulting route. iPhone developers wanting to do product development for themselves and make a good living at it might want to take <a href="http://www.losingfight.com/blog/2008/11/15/how-to-price-your-iphone-app-out-of-existence/" target="_blank">Andy Finnell&#8217;s sage advice</a> and price their apps at a more reasonable rate&#8211;something that would at least cover their costs and allow them to turn down subsequent time-intensive consulting gigs. </p>
<p>My personal feeling is no competent developer should be putting out $0.99 apps. They&#8217;d only be shortchanging themselves. The iPhone store is in its early stages. It&#8217;s too early to have all the shelves be stocked with apps retailers put in the discount bargain bins.</p>
]]></content:encoded>
			<wfw:commentRss>http://ramin.firoozye.com/2008/11/22/thoughts-on-professional-iphone-development/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Slowing down Time Machine</title>
		<link>http://ramin.firoozye.com/2008/11/08/slowing-down-time-machine/</link>
		<comments>http://ramin.firoozye.com/2008/11/08/slowing-down-time-machine/#comments</comments>
		<pubDate>Sun, 09 Nov 2008 02:35:26 +0000</pubDate>
		<dc:creator>ramin</dc:creator>
		
		<category><![CDATA[Tech]]></category>

		<category><![CDATA[mac]]></category>

		<category><![CDATA[os x]]></category>

		<category><![CDATA[time machine]]></category>

		<guid isPermaLink="false">http://ramin.firoozye.com/?p=64</guid>
		<description><![CDATA[
Time Machine is great, especially if hooked up to a network storage device like Drobo so you can just have it run in the background. In my case the Drobo is connected to a Mac Mini acting as a network file server (yes, I know it&#8217;s not officially supported, but it works fine under Leopard). [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ramin.firoozye.com/i/timemachine.jpg" width="102" height="102" alt="" /></p>
<p>Time Machine is great, especially if hooked up to a network storage device like <a href="http://drobo.com/" target="_blank">Drobo</a> so you can just have it run in the background. In my case the Drobo is connected to a Mac Mini acting as a network file server (yes, I know it&#8217;s not <em>officially</em> supported, but it works fine under Leopard). </p>
<p>However, lately the backups have been taking a lot of system and network resources, rendering the machine (in this case my development laptop) practically unusable while they run. But since Time Machine runs in the background, it&#8217;s OK to lower the backup daemon&#8217;s priority and let it run a little slower.</p>
<p>On Mac OS X Leopard, this is the command that does the trick. From the terminal:</p>
<blockquote><p>
<code>sudo renice +5 -p `ps -axc | grep backupd | awk '{ print \$1 }'`</code>
</p></blockquote>
<p>Here&#8217;s what&#8217;s going on:</p>
<ul>
<li><i>sudo</i> - This runs the command as the root. You will need to enter the administrator password.</li>
<li><i>renice</i> - This is the standard Unix command for changing the priority of a running application.</li>
<li><i>+5</i>: Process priorities under BSD Unix-based systems typicall run from -20 to +20, with +20 being <i>lowest</i> (i.e. running slowest) to -20 being maximum (yes, I know it&#8217;s unintuitively backward, but there&#8217;s an old historical reason for it). What we&#8217;re doing is bumping Time Machine daemon&#8217;s nice priority up by 5 (or any number you want) to let it run slower.</li>
<li><i>-p pid</i> - This is the process id of the process you want to adjust. Since this changes every time Time Machine runs, we have to have a way to find it dynamically at runtime &#8212; which is where the rest of the line enclosed in ` back-quotes come in. On most Unix shells, items enclosed in back-quotes get executed and the result returned back to the command line. So we&#8217;re going to look up the process ID of the current Time Machine server process and return it here.</li>
<li><i>ps -axc</i> - The <i>ps</i> command returns a long list of all running processes on the system. We need to filter out the one we want, which we do by piping the output into a <em>grep</em> filter next&#8230;</li>
<li><i>grep backupd</i> - We&#8217;re taking all the output from the <i>ps</i> command and only keeping those lines that contain the string <i>backupd</i> &#8212; which happens to be the name of the Time Machine server. So we end up with a single line of <i>ps</i> output that looks something like this:<br />
<blockquote><p><code>19041 ??         1:07.48 backupd</code></p></blockquote>
<p>But what we need is the process ID to pass back up to the <i>renice</i> command. In this case, it&#8217;s the  first number on the line. We need a way to extract only that, which is where <i>awk</i> &#8212; the amazing text processing Swiss-Army knife &#8212; comes in&#8230;</li>
<li><i>awk &#8220;{print \$1 }&#8221;</i> - By default, <em>awk</em> splits its input into chunks based on whitespace. We&#8217;re simply asking that the first item be returned. Any time you do this, you should apologize to <i>awk</i> for so massively under-utilizing what it can do. It&#8217;s like driving your Formula-1 car down to the grocery store to buy milk. In this case all we&#8217;re doing is asking it to split up some text and return one item to us, something that <i>awk</i> can do practically in its sleep.</li>
</ul>
<p>When you run this, the <i>sudo</i> part of the command will ask you for your admin password, then proceed to do its thing. Put it all together and you&#8217;ve got yourself a simple way to slow down Time Machine so it&#8217;s not such a CPU hog. </p>
<p>If you&#8217;re enterprising, you can put the whole thing into a shell function and run it over and over. The following code goes inside your <code>.bash_profile</code> file.<br />
<blockquote><code><br />
function tmslow {<br />
        &nbsp;&nbsp;&nbsp;&nbsp;echo &#8220;Reducing Time Machine priority&#8230;&#8221;<br />
        &nbsp;&nbsp;&nbsp;&nbsp;sudo renice +5 -p `ps -axc | grep backupd | awk &#8216;{ print \$1 }&#8217;`<br />
}<br />
</code></p></blockquote>
<p>Start a new terminal session (to make sure the shell function is loaded) then invoke <code>tmslow</code> and enter your admin password. It prints out a little message reminding you what it&#8217;s about to do.</p>
<p>Remember, the <i>renice</i> command doesn&#8217;t stick, so every time you reboot or a new Time Machine session starts, the process goes back to normal priority. There are ways to automate the priority lowering scheme or even make it permanent, but I don&#8217;t recommend doing that. Sometimes, you may want backups to run full-speed.  Unix makes it trivial to do what you want by stringing together some built-in commands.</p>
]]></content:encoded>
			<wfw:commentRss>http://ramin.firoozye.com/2008/11/08/slowing-down-time-machine/feed/</wfw:commentRss>
		</item>
		<item>
		<title>On 50</title>
		<link>http://ramin.firoozye.com/2008/10/30/on-50/</link>
		<comments>http://ramin.firoozye.com/2008/10/30/on-50/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 19:09:38 +0000</pubDate>
		<dc:creator>ramin</dc:creator>
		
		<category><![CDATA[Fun]]></category>

		<category><![CDATA[humor]]></category>

		<guid isPermaLink="false">http://ramin.firoozye.com/?p=60</guid>
		<description><![CDATA[This came through the mail recently. I&#8217;m not quite there yet age-wise, but still found it funny:
Advantages of approaching (or passing) your 50th birthday:

Kidnappers are not very interested in you.

In a hostage situation you are likely to be released first.

No one expects you to run&#8211;anywhere.

People call at 9 pm and ask, did I wake you?

People [...]]]></description>
			<content:encoded><![CDATA[<p>This came through the mail recently. I&#8217;m not quite there yet age-wise, but still found it funny:</p>
<p><b>Advantages of approaching (or passing) your 50th birthday:</b></p>
<ul>
<li>Kidnappers are not very interested in you.
</li>
<li>In a hostage situation you are likely to be released first.
</li>
<li>No one expects you to run&#8211;anywhere.
</li>
<li>People call at 9 pm and ask, did I wake you?
</li>
<li>People no longer view you as a hypochondriac.
</li>
<li>There is nothing left to learn the hard way.
</li>
<li>Things you buy now won&#8217;t wear out.
</li>
<li>You can eat dinner at 4 pm.
</li>
<li>You can live without sex but not your glasses.
</li>
<li>You get into heated arguments about pension plans.
</li>
<li>You no longer think of speed limits as a challenge.
</li>
<li>You quit trying to hold your stomach in no matter who walks into the room.
</li>
<li>You sing along with elevator music.
</li>
<li>Your eyes won&#8217;t get much worse.
</li>
<li>Your investment in health insurance is finally beginning to pay off.
</li>
<li>Your joints are more accurate meteorologists than the national weather service.
</li>
<li>Your secrets are safe with your friends because they can&#8217;t remember them either.
</li>
<li>Your supply of brain cells is finally down to manageable size.
</li>
<li>You can&#8217;t remember who sent you this list.
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ramin.firoozye.com/2008/10/30/on-50/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Notes from the iPhone Tech Talk</title>
		<link>http://ramin.firoozye.com/2008/10/23/notes-from-the-iphone-tech-talk/</link>
		<comments>http://ramin.firoozye.com/2008/10/23/notes-from-the-iphone-tech-talk/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 23:34:52 +0000</pubDate>
		<dc:creator>ramin</dc:creator>
		
		<category><![CDATA[iphone]]></category>

		<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://ramin.firoozye.com/?p=49</guid>
		<description><![CDATA[
I spent all yesterday at Apple&#8217;s first iPhone Tech Talk in San Francisco (technically, Paris was first because of time differences, but we won&#8217;t quibble). After seeing the schedule of events (and having attended WWDC) my expectations for getting new technical information were pretty low. 
Boy, was I wrong.
The talk itself was under NDA so [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ramin.firoozye.com/i/iphonetechtalk.jpg" width="266" height="208" alt="" /></p>
<p>I spent all yesterday at Apple&#8217;s first <a href="http://developer.apple.com/events/iphone/techtalks/" target="_blank">iPhone Tech Talk</a> in San Francisco (technically, Paris was first because of time differences, but we won&#8217;t quibble). After seeing the schedule of events (and having attended WWDC) my expectations for getting new technical information were pretty low. </p>
<p>Boy, was I wrong.</p>
<p>The talk itself was under NDA so I won&#8217;t go into details. But I&#8217;ll point at a couple of items in current examples and documentation that everyone should be aware of:</p>
<ul>
<li>If your app is using audio in any way, you&#8217;ll want to make sure you&#8217;ve read and understood the &#8220;<em>Audio Sessions: Cooperating with Core Audio</em>&#8221; section of the &#8220;<em>Core Audio Overview</em>&#8221; document (it&#8217;s part of your help document set in the SDK).
<p>Of special importance is making sure you declare the proper <em>AudioSessionCategory</em> for your app. Not doing it means that if your app uses sound (input or output) and gets interrupted &#8212; by an incoming phone call, or even by the user plugging and unplugging headphones &#8212; your app&#8217;s sound may not continue playing properly.  There&#8217;s some example code in the <em>SpeakHere</em> example to help point the way.</p>
<p>Here, by the way is what the documentation says:<br />
<blockquote>Ignoring Audio Session Services will not prevent your application from running, but your app may not behave the way you want it to. <strong>Never ship an iPhone or iPod touch application that uses audio without using this interface</strong>.</p></blockquote>
<p>You&#8217;ve been warned.</li>
<li>If you&#8217;re using the accelerometer, you&#8217;ve probably seen the low-pass filter code in the docs and examples. The point of the filter is to smooth the effect of motion &#8216;jitter.&#8217;<br />
<br />
The thing is, the basic low-pass filter formula is &#8212; to put it mildly &#8212; non-functional (aka <em>brain-dead</em>). Again, I can&#8217;t talk about the specifics, but the presenter had graphs that showed how bad that formula behaves. </p>
<p>Actual color graphs, I tell you!!! </p>
<p>If you manage to get your hands on a sample iPhone Apple application called <em>Touch Fighter</em> &#8212; you&#8217;ll want to use the smoothing function there (the app was handed out in WWDC and isn&#8217;t part of the standard SDK example set). </p>
<p>If you can&#8217;t find it, I suggest looking around for source code that handles the Wii remote (they have to deal with similar issues). At some point, I might post a more detailed technical article on this.</li>
<li>Gesture management is <em>still</em> something that Apple leaves to individual developers, instead of including it in the SDK. I have a &#8217;swipe&#8217; detection library (but it&#8217;s only for one-finger swipes, not multi-touch). If there&#8217;s demand for it, I&#8217;ll post it up.
<p>But really, this should be something supported in the OS.</li>
</ul>
<p>Most of the TechTalks are full now. If you happen to have gotten accepted, don&#8217;t skip them. If not, get on the waiting list. It&#8217;s worth it. The sessions on game development and performance tuning are massive info-dumps. Might want to take a lot of notes.</p>
<p><em>P.S.</em> That mod-squad picture on <a href="http://developer.apple.com/events/iphone/techtalks/" target="_blank">the web site</a> (excerpted above) features actual Apple evangelism group members strutting their stuff <img src='http://ramin.firoozye.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://ramin.firoozye.com/2008/10/23/notes-from-the-iphone-tech-talk/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Re-launch</title>
		<link>http://ramin.firoozye.com/2008/10/07/re-launch/</link>
		<comments>http://ramin.firoozye.com/2008/10/07/re-launch/#comments</comments>
		<pubDate>Tue, 07 Oct 2008 15:40:28 +0000</pubDate>
		<dc:creator>ramin</dc:creator>
		
		<category><![CDATA[admin]]></category>

		<category><![CDATA[iphone]]></category>

		<category><![CDATA[Site]]></category>

		<guid isPermaLink="false">http://ramin.firoozye.com/?p=47</guid>
		<description><![CDATA[
I totally blame my absence from this space on Twitter, for sucking away what little time and energy I have to write things. However, with the removal of the iPhone NDA, I&#8217;m going to re-focus on what I&#8217;ve been spending most of my working time these days: iPhone app development.
That is not to say that [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ramin.firoozye.com/i/blame.jpg" width="75" height="114" alt="" /></p>
<p>I totally blame my absence from this space on Twitter, for sucking away what little time and energy I have to write things. However, with the removal of the iPhone NDA, I&#8217;m going to re-focus on what I&#8217;ve been spending most of my working time these days: <b>iPhone app development</b>.</p>
<p>That is not to say that I&#8217;ll stop posting other meanderings. Just that I need a place (other than mailing lists) to post and where better than, you know, my own damn blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://ramin.firoozye.com/2008/10/07/re-launch/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Resetting styles</title>
		<link>http://ramin.firoozye.com/2008/09/11/resetting-styles/</link>
		<comments>http://ramin.firoozye.com/2008/09/11/resetting-styles/#comments</comments>
		<pubDate>Thu, 11 Sep 2008 18:33:16 +0000</pubDate>
		<dc:creator>ramin</dc:creator>
		
		<category><![CDATA[Tech]]></category>

		<category><![CDATA[admin]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://getlo.st/2008/09/11/resetting-styles/</guid>
		<description><![CDATA[Sorry if the blog&#8217;s style keeps switching around. Problem seems to be with the DB and hosting site. It keeps resetting back to the default WordPress style even if I haven&#8217;t posted for a while.
Might just have to give up and leave it there. *sigh*
]]></description>
			<content:encoded><![CDATA[<p>Sorry if the blog&#8217;s style keeps switching around. Problem seems to be with the DB and hosting site. It keeps resetting back to the default WordPress style even if I haven&#8217;t posted for a while.</p>
<p>Might just have to give up and leave it there. *sigh*</p>
]]></content:encoded>
			<wfw:commentRss>http://ramin.firoozye.com/2008/09/11/resetting-styles/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Setting the bar low</title>
		<link>http://ramin.firoozye.com/2008/08/22/setting-the-bar-low/</link>
		<comments>http://ramin.firoozye.com/2008/08/22/setting-the-bar-low/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 20:02:03 +0000</pubDate>
		<dc:creator>ramin</dc:creator>
		
		<category><![CDATA[Tech]]></category>

		<category><![CDATA[Advertising]]></category>

		<category><![CDATA[humor]]></category>

		<category><![CDATA[literacy]]></category>

		<guid isPermaLink="false">http://getlo.st/2008/08/22/setting-the-bar-low/</guid>
		<description><![CDATA[
Ad for an institution of higher learning, currently circulating on national news outlet sites.
]]></description>
			<content:encoded><![CDATA[<p><img src="http://ramin.firoozye.com/i/uofpad.jpg" width="188" height="635" alt="" /></p>
<p>Ad for an institution of <i>higher learning</i>, currently circulating on national news outlet sites.</p>
]]></content:encoded>
			<wfw:commentRss>http://ramin.firoozye.com/2008/08/22/setting-the-bar-low/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
