<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>/dev/random &#187; Programming</title>
	<atom:link href="http://mcdevzone.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://mcdevzone.com</link>
	<description>iPhone &#38; Macintosh Development</description>
	<lastBuildDate>Fri, 19 Mar 2010 18:58:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Yazzem API is live</title>
		<link>http://mcdevzone.com/2010/02/27/yazzem-api-is-live/</link>
		<comments>http://mcdevzone.com/2010/02/27/yazzem-api-is-live/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 05:48:48 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://mcdevzone.com/?p=5471</guid>
		<description><![CDATA[If you haven&#8217;t heard of Yazzem, it&#8217;s a site similar to Twitter which lets you start topics about anything you want. Unlike Twitter, Yazzem is conversation oriented. You create or join a topic and add comments to the thread. Topics &#038; comments are limited to 200 characters, making them more like a tweet and much [...]]]></description>
			<content:encoded><![CDATA[<p>If you haven&#8217;t heard of <a href="http://www.yazzem.com/">Yazzem</a>, it&#8217;s a site similar to Twitter which lets you start topics about anything you want. Unlike Twitter, Yazzem is conversation oriented. You create or join a topic and add comments to the thread. Topics &#038; comments are limited to 200 characters, making them more like a tweet and much easier to use and more lightweight than a traditional forum. Yazzem was founded by Dustin Snider and Zachary Collins, both 15, and was acquired by Teens In Tech Networks (which I&#8217;m the CTO of).</p>
<p>The Yazzem team has been working on an API which will allow developers to build applications that interact with Yazzem. It will be featured at the <a href="http://hackerdojo.pbworks.com/API-Hackathon">Hacker dojo API hackathon</a> tomorrow.</p>
<p>Read the Yazzem team&#8217;s API announcement <a href="http://blog.yazzem.com/2010/02/26/yazzem-api-is-live/">here</a>. The API is documented at <a href="http://api.yazzem.com/">api.yazzem.com</a>. </p>
<p>For Mac &#038; iPhone developers, I&#8217;ve created a Cocoa wrapper class with both Mac &#038; iPhone demo applications, available at <a href="http://github.com/mike3k/Cocoa-Yazzem">http://github.com/mike3k/Cocoa-Yazzem</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://mcdevzone.com/2010/02/27/yazzem-api-is-live/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Time to drop 2.x support.</title>
		<link>http://mcdevzone.com/2010/02/22/time-to-drop-2-x-support/</link>
		<comments>http://mcdevzone.com/2010/02/22/time-to-drop-2-x-support/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 15:17:34 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[icanhascheezburger]]></category>

		<guid isPermaLink="false">http://mcdevzone.com/?p=5453</guid>
		<description><![CDATA[Pocket Gamer reports that Apple is no longer charging for the 3.x firmware upgrades for iPod Touch. This means that developers can now safely drop support for firmware 2.x and move forward.
I was already planning to make I Can Has Cheezburger 2.0 require firmware 3.x, since Three20 requires it. This makes my decision a lot [...]]]></description>
			<content:encoded><![CDATA[<p>Pocket Gamer <a href="http://www.pocketgamer.co.uk/r/iPhone/Apple+iPhone+30+software/news.asp?c=18486">reports</a> that Apple is no longer charging for the 3.x firmware upgrades for iPod Touch. This means that developers can now safely drop support for firmware 2.x and move forward.</p>
<p>I was already planning to make I Can Has Cheezburger 2.0 require firmware 3.x, since Three20 requires it. This makes my decision a lot easier.</p>
]]></content:encoded>
			<wfw:commentRss>http://mcdevzone.com/2010/02/22/time-to-drop-2-x-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Make web apps act more native</title>
		<link>http://mcdevzone.com/2010/02/21/make-web-apps-act-more-native/</link>
		<comments>http://mcdevzone.com/2010/02/21/make-web-apps-act-more-native/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 05:51:52 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://mcdevzone.com/?p=5446</guid>
		<description><![CDATA[With a simple trick you can make a web-based app look and act more native on an iPhone or iPod Touch.
Adding the following tags to your &#60;HEAD> will make your application open in full screen and hide Safari&#8217;s toolbars. In addition, if you add it to your home screen, it will appear to open without [...]]]></description>
			<content:encoded><![CDATA[<p>With a simple trick you can make a web-based app look and act more native on an iPhone or iPod Touch.</p>
<p>Adding the following tags to your &lt;HEAD> will make your application open in full screen and hide Safari&#8217;s toolbars. In addition, if you add it to your home screen, it will appear to open without Safari and no page will be added to Safari.<br />
<code>
<pre>
&lt;meta name="viewport" id="viewport" content="width=device-width,user-scalable=no,minimum-scale=1.0,maximum-scale=1.0" />
&lt;meta name="apple-mobile-web-app-capable" content="yes" />
&lt;meta name="apple-mobile-web-app-status-bar-style" content="black" />
</pre>
<p></code><br />
The following tags, which should also be added to &lt;HEAD>, will provide an icon for the home screen and a splash screen to be displayed when it opens.<br />
<code>
<pre>
&lt;link rel="apple-touch-icon" href="http://example.com/webclip.png" />
&lt;link rel="apple-touch-startup-image" href="http://example.com/startup.png" />
</pre>
<p></code><br />
The first application I&#8217;ve seen which uses this trick is <a href="http://feedafever.com/">Fever</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://mcdevzone.com/2010/02/21/make-web-apps-act-more-native/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ICHC Update</title>
		<link>http://mcdevzone.com/2009/12/24/ichc-update/</link>
		<comments>http://mcdevzone.com/2009/12/24/ichc-update/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 20:25:40 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[icanhascheezburger]]></category>

		<guid isPermaLink="false">http://mcdevzone.com/?p=5194</guid>
		<description><![CDATA[Good news: there will be an ICanHasCheezburger app update sometime after the holidays. This isn&#8217;t the fabled Three20 based version 2.0, but a minor update which simply changes the feed URL. However, by doing so, it should fix most of the crashes.
Our application uses a &#8217;scraped&#8217; feed generated from the site content rather than the [...]]]></description>
			<content:encoded><![CDATA[<p>Good news: there will be an ICanHasCheezburger app update sometime after the holidays. This isn&#8217;t the fabled Three20 based version 2.0, but a minor update which simply changes the feed URL. However, by doing so, it should fix most of the crashes.</p>
<p>Our application uses a &#8217;scraped&#8217; feed generated from the site content rather than the site&#8217;s own RSS feed. We do this because the standard RSS feed only has a limited number of items and must be loaded in its entirety.  By scraping the site, we can create multiple pages with unlimited items, which load a lot faster since it only loads 10 or fewer items at a time.</p>
<p>The feed scraper was originally developed by the folks at ICHC for their dashboard widget. I later modified it to support all of their sites and change the output from JSON to simplified XML. Unfortunately that feed scraper has a major flaw. It uses regex pattern matching to parse the HTML, which is a <a href="http://www.codinghorror.com/blog/archives/001311.html">Very Bad Thing</a>. The script can easily get confused by changes to the site and often produces invalid data. It also hasn&#8217;t included videos since a format change at the site broke it.</p>
<p>Last night I started hacking at it with PHP&#8217;s XML parser and DOM commands and came up with a much more robust script that uses element classes to identify valid items and to avoid outputting bad data that could crash the application. I&#8217;m also hosting it on my own server at DreamHost, so I can easily fix it myself instead of having to go back and forth for fixes as we do now.</p>
<p>Unfortunately a few Viddler movies still won&#8217;t play, since they must be explicitly enabled for downloading on the site.</p>
]]></content:encoded>
			<wfw:commentRss>http://mcdevzone.com/2009/12/24/ichc-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lack of Manpower May Kill VLC For Mac</title>
		<link>http://mcdevzone.com/2009/12/16/lack-of-manpower-may-kill-vlc-for-mac/</link>
		<comments>http://mcdevzone.com/2009/12/16/lack-of-manpower-may-kill-vlc-for-mac/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 04:22:09 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[Macintosh]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://mcdevzone.com/?p=5181</guid>
		<description><![CDATA[Via Slashdot:
plasmacutter writes &#8220;The Video Lan dev team has recently come forward with a notice that the number of active developers for the project&#8217;s MacOS X releases has dropped to zero, prompting a halt in the release schedule. There is now a disturbing possibility that support for Mac will be dropped as of 1.1.0. As [...]]]></description>
			<content:encoded><![CDATA[<p>Via <a href="http://rss.slashdot.org/~r/slashdot/eqWf/~3/fHC3aOF6GQI/Lack-of-Manpower-May-Kill-VLC-For-Mac">Slashdot</a>:<br />
<blockquote>plasmacutter writes &#8220;The Video Lan dev team has recently come forward with a notice that the number of active developers for the project&#8217;s MacOS X releases has dropped to zero, prompting a halt in the release schedule. There is now a disturbing possibility that support for Mac will be dropped as of 1.1.0. As the most versatile and user-friendly solution for bridging the video compatibility gap between OS X and windows, this will be a terrible loss for the mac community. There is still hope, however, if the right volunteers come forward.&#8221;
</p>
</blockquote>
<p>VLC is one of my favorite applications, so I&#8217;d hate to see it die. Unfortunately I have too many other things going to take on another project, especially an unpaid one, or I would get involved.</p>
]]></content:encoded>
			<wfw:commentRss>http://mcdevzone.com/2009/12/16/lack-of-manpower-may-kill-vlc-for-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ICHC Crashes</title>
		<link>http://mcdevzone.com/2009/09/09/ichc-crashes/</link>
		<comments>http://mcdevzone.com/2009/09/09/ichc-crashes/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 03:12:20 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[fail]]></category>
		<category><![CDATA[icanhascheezburger]]></category>

		<guid isPermaLink="false">http://mcdevzone.com/?p=4970</guid>
		<description><![CDATA[I&#8217;ve been receiving a lot of reports of ICHC crashing recently. I&#8217;ve never been able to duplicate any of those crashes myself, but from looking at the crash logs available in iTunes Connect I have an idea of what&#8217;s crashing them.
The crashes seem to occur when restoring the last viewed item results in an index [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been receiving a lot of reports of ICHC crashing recently. I&#8217;ve never been able to duplicate any of those crashes myself, but from looking at the crash logs available in iTunes Connect I have an idea of what&#8217;s crashing them.</p>
<p>The crashes seem to occur when restoring the last viewed item results in an index out of range. We use a scraped feed (which is hosted on one of ICHC&#8217;s servers) that returns pages of 10 items each, to reduce the load time. I&#8217;ve seen a few instances where items, usually videos, are missing from the scraped feed, and in that case it returns a page of fewer than 10 items. If you happen to have been viewing item 10 the last time you quit and the next time you end up with only 9 items, it will crash.</p>
<p>I&#8217;ve put in some error handling for that case, but if you&#8217;re experiencing that crash, I&#8217;d like to have you test it before I submit the update, so email me your device ID and I&#8217;ll add you to my beta list. Note that Apple can take several weeks to approve an update, so even if I submit it right away, it may be a while before the update becomes available.</p>
<p>This will be the last update to this version. I&#8217;m doing a major rewrite for version 2.0 using Three20, the framework used in the FaceBook app. This will be a free upgrade. </p>
<p>Before I do much on v2.0, I&#8217;m finishing a new application I plan to release first. More about that in the next few weeks.</p>
]]></content:encoded>
			<wfw:commentRss>http://mcdevzone.com/2009/09/09/ichc-crashes/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How 1Password extension loads in 64-bit Safari in Snow Leopard</title>
		<link>http://mcdevzone.com/2009/09/06/how-1password-extension-loads-in-64-bit-safari-in-snow-leopard/</link>
		<comments>http://mcdevzone.com/2009/09/06/how-1password-extension-loads-in-64-bit-safari-in-snow-leopard/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 00:59:05 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[Macintosh]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[cocoa]]></category>

		<guid isPermaLink="false">http://mcdevzone.com/?p=4967</guid>
		<description><![CDATA[Kevin Ballard explains how 1Password is able to load an extention into Safari when running in 64-bit mode:

When Cocoa was introduced, one of the behaviors that every Cocoa application automatically acquired was the loading of Input Managers. These Input Managers were intended to allow developers to extend the text input system of OS X in [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://kevin.sb.org/2009/09/02/1password-extension-loading-in-snow-leopard/">Kevin Ballard</a> explains how 1Password is able to load an extention into Safari when running in 64-bit mode:<br />
<blockquote>
When Cocoa was introduced, one of the behaviors that every Cocoa application automatically acquired was the loading of Input Managers. These Input Managers were intended to allow developers to extend the text input system of OS X in ways that the system did not provide by default. However, these Input Managers were really nothing more than Cocoa bundles that got loaded by every single Cocoa app at launch. This means that it was very quickly abused to become a general plugin mechanism for applications that do not natively support plugins (such as Safari). In recent OS updates, Apple has been deprecating this mechanism, and now in Snow Leopard it’s completely gone for 64-bit apps.</p>
<p>Luckily, the smart folks who make <a href="http://agilewebsolutions.com/products/1Password">1Password</a> came up with a solution for their upcoming 1Password 3.0 (which is in public beta right now).</p>
<p>AppleScript is a rather old technology, first introduced in System 7. It is a human-readable scripting language that can control any application that implements support for it, along with a slew of system functions. Under the hood, it sends Apple events to actually talk to each process.</p>
<p>Scripting additions are bundles that provide additional functionality to AppleScript, generally by installing Apple event handlers or doing Apple event data coercion.</p>
<p>The thing about scripting additions is that they will be potentially loaded by any process on the system. Generally, they get loaded into a process that attempts to use an AppleEvent that the scripting addition handles.</p>
<p>The ability to load a scripting addition into a target process simply by sending it an Apple event is the key mechanism that allows us to restore the old Input Manager functionality. And this is exactly what 1Password does. 1Password includes a scripting addition that handles the ONEP/Load Apple event with a context of “Process”. This handler takes a single argument, the path to a given bundle, and it loads that specified bundle into the target process. The last component is a background daemon called 1PasswordAgent. This daemon sends the ONEP/Load Apple event to Safari immediately after Safari is launched, causing Safari to load the 1Password WebKit plugin.
</p></blockquote>
<p>This actually sounds a lot cleaner than the input manager hack. I hope Apple doesn&#8217;t disable this in the future. Hopefully it will also provide a mechanism for 1Password to work in Opera &#038; Google Chrome.</p>
]]></content:encoded>
			<wfw:commentRss>http://mcdevzone.com/2009/09/06/how-1password-extension-loads-in-64-bit-safari-in-snow-leopard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Easy way to add sound effects to your app</title>
		<link>http://mcdevzone.com/2009/09/03/easy-way-to-add-sound-effects-to-your-app/</link>
		<comments>http://mcdevzone.com/2009/09/03/easy-way-to-add-sound-effects-to-your-app/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 23:04:39 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://mcdevzone.com/?p=4965</guid>
		<description><![CDATA[Every game needs sound effects. A free gem called cxfr makes it easy to create retro video game sound effects and export them for your game. You start with one of their presents like pickup, laser, explosion, hit, jump, or random and adjust the sound to your liking using sliders. You can then export your [...]]]></description>
			<content:encoded><![CDATA[<p>Every game needs sound effects. A free gem called <a href="http://thirdcog.eu/apps/cfxr">cxfr</a> makes it easy to create retro video game sound effects and export them for your game. You start with one of their presents like pickup, laser, explosion, hit, jump, or random and adjust the sound to your liking using sliders. You can then export your sound as a wav file to use in your Mac or iPhone applications.</p>
<div align=center>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/VULldovIhm8&#038;hl=en&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/VULldovIhm8&#038;hl=en&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></div>
]]></content:encoded>
			<wfw:commentRss>http://mcdevzone.com/2009/09/03/easy-way-to-add-sound-effects-to-your-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Changing app store ratings</title>
		<link>http://mcdevzone.com/2009/07/31/changing-app-store-ratings/</link>
		<comments>http://mcdevzone.com/2009/07/31/changing-app-store-ratings/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 19:50:21 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[appstore]]></category>
		<category><![CDATA[fail]]></category>
		<category><![CDATA[icanhascheezburger]]></category>

		<guid isPermaLink="false">http://mcdevzone.com/?p=4915</guid>
		<description><![CDATA[I finally discovered the trick to change the ratings for ICHC, so hopefully Apple can review it now. As long as there&#8217;s a valid binary, iTunes Connect won&#8217;t let you change the ratings. If you reject the binary, you can go to edit information and change the ratings BEFORE you upload a new binary. Once [...]]]></description>
			<content:encoded><![CDATA[<p>I finally discovered the trick to change the ratings for ICHC, so hopefully Apple can review it now. As long as there&#8217;s a valid binary, iTunes Connect won&#8217;t let you change the ratings. If you reject the binary, you can go to edit information and change the ratings BEFORE you upload a new binary. Once you upload that new binary, the ratings are locked out again.</p>
<p>I set the ratings to infrequent/mild for all items, which still only results in a 12+ rating, not the 17+ rating Apple requested. We&#8217;ll see if Apple approves it now.</p>
]]></content:encoded>
			<wfw:commentRss>http://mcdevzone.com/2009/07/31/changing-app-store-ratings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fast image loading with Three20</title>
		<link>http://mcdevzone.com/2009/07/29/fast-image-loading-with-three20/</link>
		<comments>http://mcdevzone.com/2009/07/29/fast-image-loading-with-three20/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 02:00:31 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[icanhascheezburger]]></category>

		<guid isPermaLink="false">http://mcdevzone.com/?p=4901</guid>
		<description><![CDATA[I get a lot of complaints about the slow swipe action in ICHC, as a result of loading each image the first time they appear. Although I added caching in version 1.5, I chose to do it that way to minimize the memory usage and avoid low memory crashes.
I&#8217;ve been looking at ways to improve [...]]]></description>
			<content:encoded><![CDATA[<p>I get a lot of complaints about the slow swipe action in ICHC, as a result of loading each image the first time they appear. Although I added caching in version 1.5, I chose to do it that way to minimize the memory usage and avoid low memory crashes.</p>
<p>I&#8217;ve been looking at ways to improve the speed and one of the best options seems to be to rewrite it using Joe Hewitt&#8217;s <a href="http://github.com/joehewitt/three20/tree/master">Three20</a> framework. As a proof of concept, I wrote a simple test program which loads a pre-defined set of images. The scrolling &#038; image loading performance is excellent.</p>
<div align=center>
<object type="application/x-shockwave-flash" width="204" height="400" data="http://www.flickr.com/apps/video/stewart.swf?v=71377" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="flashvars" value="intl_lang=en-us&#038;photo_secret=553c3aab61&#038;photo_id=3770178643"></param><param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=71377"></param><param name="bgcolor" value="#000000"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=71377" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&#038;photo_secret=553c3aab61&#038;photo_id=3770178643" height="400" width="204"></embed></object></div>
<p>Note this is just a proof of concept. I haven&#8217;t figured out all of the details of how to implement it in the actual application. The major hurdle is that I need to handle mixed photos &#038; videos in a single stream, while the photo browser only handles photos.</p>
<p>Of course there won&#8217;t be any new updates until Apple approves the updates that have been in review for over a month, as well as the new updates I submitted a week ago with.</p>
]]></content:encoded>
			<wfw:commentRss>http://mcdevzone.com/2009/07/29/fast-image-loading-with-three20/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
