<?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>Michael Fransen</title>
	<atom:link href="http://michaelfransen.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://michaelfransen.com</link>
	<description></description>
	<lastBuildDate>Sun, 15 Apr 2012 19:10:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>2012 Red Ribbon Ride Contest Winner!</title>
		<link>http://michaelfransen.com/2012/04/15/2012-red-ribbon-ride-contest-winner/</link>
		<comments>http://michaelfransen.com/2012/04/15/2012-red-ribbon-ride-contest-winner/#comments</comments>
		<pubDate>Sun, 15 Apr 2012 19:10:53 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Cycling]]></category>

		<guid isPermaLink="false">http://michaelfransen.com/?p=1243</guid>
		<description><![CDATA[If you haven&#8217;t donated yet, there is still time. Please visit this link to make a donation.]]></description>
			<content:encoded><![CDATA[<span style="text-align:center; display: block;"><a href="http://michaelfransen.com/2012/04/15/2012-red-ribbon-ride-contest-winner/"><img src="http://img.youtube.com/vi/yPg9bDYpgR4/2.jpg" alt="" /></a></span>
<p>If you haven&#8217;t donated yet, there is still time. Please visit this <a href="http://www.redribbonride.org/site/TR/Events/General?px=1233403&#038;pg=personal&#038;fr_id=1110" target="_blank">link</a> to make a donation.</p>
]]></content:encoded>
			<wfw:commentRss>http://michaelfransen.com/2012/04/15/2012-red-ribbon-ride-contest-winner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A smoked ham and bacon wrapped asparagus for Easter dinner!</title>
		<link>http://michaelfransen.com/2012/04/08/a-smoked-ham-and-bacon-wrapped-asparagus-for-easter-dinner/</link>
		<comments>http://michaelfransen.com/2012/04/08/a-smoked-ham-and-bacon-wrapped-asparagus-for-easter-dinner/#comments</comments>
		<pubDate>Sun, 08 Apr 2012 17:17:26 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://michaelfransen.com/?p=1241</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://michaelfransen.com/wp-content/uploads/2012/04/20120408-121644.jpg" rel="lightbox[1241]"><img src="http://michaelfransen.com/wp-content/uploads/2012/04/20120408-121644.jpg" alt="20120408-121644.jpg" class="alignnone size-full" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://michaelfransen.com/2012/04/08/a-smoked-ham-and-bacon-wrapped-asparagus-for-easter-dinner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Always ensure that your cupcakes are properly secured!</title>
		<link>http://michaelfransen.com/2012/04/07/always-ensure-that-your-cupcakes-are-properly-secured/</link>
		<comments>http://michaelfransen.com/2012/04/07/always-ensure-that-your-cupcakes-are-properly-secured/#comments</comments>
		<pubDate>Sat, 07 Apr 2012 15:55:57 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://michaelfransen.com/?p=1238</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://michaelfransen.com/wp-content/uploads/2012/04/20120407-105456.jpg" rel="lightbox[1238]"><img src="http://michaelfransen.com/wp-content/uploads/2012/04/20120407-105456.jpg" alt="20120407-105456.jpg" class="alignnone size-full" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://michaelfransen.com/2012/04/07/always-ensure-that-your-cupcakes-are-properly-secured/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Storing Complex Types Using NSUserDefaults</title>
		<link>http://michaelfransen.com/2012/03/26/storing-complex-types-using-nsuserdefaults/</link>
		<comments>http://michaelfransen.com/2012/03/26/storing-complex-types-using-nsuserdefaults/#comments</comments>
		<pubDate>Mon, 26 Mar 2012 22:52:34 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://michaelfransen.com/?p=1199</guid>
		<description><![CDATA[This week I wanted to store a complex data type using NSUserDefaults. Unfortunately, NSUserDefaults only allows you to store common types. Storing objects using NSUserDefaults can be accomplished by using NSData and NSKeyedArchiver. The code below uses NSKeyedArchiver to archive someObject then store the NSData object in the defaults. To retrieve the object from the [...]]]></description>
			<content:encoded><![CDATA[<p>This week I wanted to store a complex data type using NSUserDefaults. Unfortunately, NSUserDefaults only allows you to store common types. Storing objects using NSUserDefaults can be accomplished by using NSData and NSKeyedArchiver.</p>
<p>The code below uses NSKeyedArchiver to archive someObject then store the NSData object in the defaults.</p>
<pre class="brush: objc; title: ; notranslate">
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:someObject];
[defaults setObject:data forKey:@&quot;someKey&quot;];
[defaults synchronize];
</pre>
<p>To retrieve the object from the user settings, retrieve the NSData object using the same key that was used to store the object. Then use NSKeyedUnarchiver to retrieve the object.</p>
<pre class="brush: objc; title: ; notranslate">
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [defaults objectForKey:@&quot;someKey&quot;];
SomeObject *someObject = [NSKeyedUnarchiver unarchiveObjectWithData:data];
</pre>
<p>The class of the object that is being archived/unarchived must implement these two methods. If the object has a property that is not a common type, then that object must also implement these methods.</p>
<pre class="brush: objc; title: ; notranslate">
-(void)encodeWithCoder:(NSCoder *)encoder
{
    [encoder encodeObject:self.itemId forKey:@&quot;itemId&quot;];
    [encoder encodeObject:self.title forKey:@&quot;title&quot;];
}

-(id)initWithCoder:(NSCoder *)decoder
{
    self.itemId = [decoder decodeObjectForKey:@&quot;itemId&quot;];
    self.title = [decoder decodeObjectForKey:@&quot;title&quot;];
    return self;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://michaelfransen.com/2012/03/26/storing-complex-types-using-nsuserdefaults/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Three of My Favorite iOS Frameworks</title>
		<link>http://michaelfransen.com/2012/02/01/three-of-my-favorite-ios-frameworks/</link>
		<comments>http://michaelfransen.com/2012/02/01/three-of-my-favorite-ios-frameworks/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 12:00:05 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://michaelfransen.com/?p=1168</guid>
		<description><![CDATA[I have been doing iOS development for a few months now and I have come across some nice frameworks to assist in documentation, exception logging, and even a framework to help manage beta testing. I have found the following three frameworks invaluable in my current project: TestFlight is the framework I rely on the most [...]]]></description>
			<content:encoded><![CDATA[<p>I have been doing iOS development for a few months now and I have come across some nice frameworks to assist in documentation, exception logging, and even a framework to help manage beta testing. I have found the following three frameworks invaluable in my current project:</p>
<ol>
<li><a href="https://testflightapp.com" target="_blank">TestFlight</a> is the framework I rely on the most to date. I use it to manage distribution of builds, gain feedback from app testers, analyze crashes, and gain insight into what my users are doing by placing checkpoints throughout the application. The sign-up and setup process took only about 10 minutes. It was very easy to integrate with my project. Integration includes adding a static library to your project and adding one line code in your AppDelegate that contains your API key. Once this in place, data will now be sent to TestFlight and you will be able to see it immediately on TestFlight&#8217;s website. You can see what type of devices your users are using along with the time spent testing. If the app does crash by chance, you will be able to see the stacktrace as well. You can also push new builds out to your users easily. Once you upload your IPA file to TestFlight, they will send an email to your users that will have a link for them to install. If they are in the application while a new build is being pushed out, they will even get an in-app notification that there is an update ready. If your users have feedback for you, they can simply reply to the update notification email and the feedback will be stored with the build. One final thing, you can add checkpoints throughout your app to gain insight into what your users are doing while using your app. Adding a checkpoint is as simple as adding one line of code. I am sure there are more features that I have failed to mention here, but I encourage you to take a look at this framework if you do any sort of beta testing. You won&#8217;t be disappointed.</li>
<li>Before finding TestFlight, I was using <a href="http://www.bugsense.com/" target="_blank">BugSense</a>. First off, they have different purposes. BugSense is an error logger for beta testing or production use, while TestFlight has more functionality to allow for managing distribution and gaining feedback from your users, but is meant for beta testing only. BugSense was also very easy to integrate into my app. BugSense also works for iOS and Android! I used this in our Android application as well and it was very easy to integrate. Bugsense allows you to gain insight into errors that are happening out in the wild. You can mark errors as resolved or not resolved to know which ones have been taken care of. BugSense also groups the errors together so you don&#8217;t have to sift through hundreds of errors. When I was using BugSense it was free. They have started charging for additional features since then. We will need to re-evaluate when we go to production if we are going to utilize it in our application.</li>
<li><a href="http://www.stack.nl/~dimitri/doxygen/" target="_blank">Doxygen</a> is my final favorite framework so far. It is used to auto-generate documentation for your code. For those of you familiar with .NET, this is like XML code comments. It allows you to document classes, properties, and methods by following a certain comment format. It will create HTML pages or you can set it up to integrate your documentation into Xcode. I found Doxygen more difficult to set-up, but I went way out. Instead of just creating the HTML documentation, I set it up so the generated documentation would show up in the organizer in Xcode. I also setup a service so I could just highlight code, right-click, click Doxygenize and voilà, the Doxygen template comment was inserted above my code. It is pretty slick if you are willing to spend the time to set it up. Maybe I will write a post about that another day.</li>
</ol>
<p>Do you have any frameworks you use in your projects (iOS or Android) that you find beneficial? Leave a comment if you feel like sharing one or many!</p>
]]></content:encoded>
			<wfw:commentRss>http://michaelfransen.com/2012/02/01/three-of-my-favorite-ios-frameworks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Write Once, Run Everywhere</title>
		<link>http://michaelfransen.com/2012/01/02/write-once-run-everywhere/</link>
		<comments>http://michaelfransen.com/2012/01/02/write-once-run-everywhere/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 12:00:20 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://michaelfransen.com/?p=1164</guid>
		<description><![CDATA[How Facebook Mobile Was Designed to Write Once, Run Everywhere. I recently read the above article on ReadWriteWeb.com. The article describes the technical architecture of the Facebook mobile applications and the direction they are heading. The article is based on a presentation that a Facebook engineering manager gave. He seems proud of the architecture and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.readwriteweb.com/archives/redux_how_facebook_mobile_was_designed_to_write_once_run.php">How Facebook Mobile Was Designed to Write Once, Run Everywhere</a>.</p>
<p>I recently read the above article on <a href="http://www.readwriteweb.com/" target="_blank">ReadWriteWeb.com</a>. The article describes the technical architecture of the Facebook mobile applications and the direction they are heading. The article is based on a presentation that a Facebook engineering manager gave. He seems proud of the architecture and the so-called progress of the application. In reality, the Facebook application gets worse every day and has gone from being one of the best apps to one of the worst. It isn&#8217;t coincidental that as Facebook has moved from a native app to a more web-based app wrapped as a native app that the user experience has diminished. The app use to feel native, was virtually bug free, responsive, and accurate. Now, the app barely works. Bugs are littered throughout the application from pictures being un-viewable to some friends having profile pictures that are of a different Facebook friend. It&#8217;s classic that this article has &#8220;Write Once, Run Everywhere&#8221; in the title. Java, which is also slow and unresponsive, has used this slogan for years. Writing something once, and running it everywhere often comes with a price and when that price is user experience, it often isn&#8217;t worth it. Is it worth having millions of users pissed off at your unusable product just so you can cut a few developers or so your developers can feel better about having non-redundant code? Facebook can easily afford to have a small team of iOS developers, a small team of Android developers, and a web team for dumb phones. This would have allowed them to keep the best user experience for each operating system until HTML5 was ready enough to support an equal or better user experience.</p>
]]></content:encoded>
			<wfw:commentRss>http://michaelfransen.com/2012/01/02/write-once-run-everywhere/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New Wheels</title>
		<link>http://michaelfransen.com/2011/12/16/new-wheels-2/</link>
		<comments>http://michaelfransen.com/2011/12/16/new-wheels-2/#comments</comments>
		<pubDate>Fri, 16 Dec 2011 20:07:22 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://michaelfransen.com/?p=1150</guid>
		<description><![CDATA[Yesterday I traded in my Jetta for a 2012 VW Tiguan SEL 4Motion. So far, I love it. It is a little bit different getting use to a gasoline engine again after having a diesel for a couple of years. I am excited to drive it to southern Minnesota this weekend. Click on the images [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I traded in my Jetta for a 2012 VW Tiguan SEL 4Motion. So far, I love it. It is a little bit different getting use to a gasoline engine again after having a diesel for a couple of years. I am excited to drive it to southern Minnesota this weekend. Click on the images for a larger view.</p>

<a href='http://michaelfransen.com/2011/12/16/new-wheels-2/img_1008/' title='IMG_1008'><img width="150" height="150" src="http://michaelfransen.com/wp-content/uploads/2011/12/IMG_1008-150x150.jpg" class="attachment-thumbnail" alt="IMG_1008" title="IMG_1008" /></a>
<a href='http://michaelfransen.com/2011/12/16/new-wheels-2/img_1010/' title='IMG_1010'><img width="150" height="150" src="http://michaelfransen.com/wp-content/uploads/2011/12/IMG_1010-150x150.jpg" class="attachment-thumbnail" alt="IMG_1010" title="IMG_1010" /></a>
<a href='http://michaelfransen.com/2011/12/16/new-wheels-2/img_1009/' title='IMG_1009'><img width="150" height="150" src="http://michaelfransen.com/wp-content/uploads/2011/12/IMG_1009-150x150.jpg" class="attachment-thumbnail" alt="IMG_1009" title="IMG_1009" /></a>
<a href='http://michaelfransen.com/2011/12/16/new-wheels-2/img_1005/' title='IMG_1005'><img width="150" height="150" src="http://michaelfransen.com/wp-content/uploads/2011/12/IMG_1005-150x150.jpg" class="attachment-thumbnail" alt="IMG_1005" title="IMG_1005" /></a>

<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://michaelfransen.com/2011/12/16/new-wheels-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>This Sums Up My Weekend</title>
		<link>http://michaelfransen.com/2011/12/04/this-sums-up-my-weekend/</link>
		<comments>http://michaelfransen.com/2011/12/04/this-sums-up-my-weekend/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 00:55:34 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://michaelfransen.com/2011/12/04/this-sums-up-my-weekend/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://michaelfransen.com/wp-content/uploads/2011/12/20111204-185524.jpg" rel="lightbox[1148]"><img src="http://michaelfransen.com/wp-content/uploads/2011/12/20111204-185524.jpg" alt="20111204-185524.jpg" class="alignnone size-full" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://michaelfransen.com/2011/12/04/this-sums-up-my-weekend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Occu-pie Thanksgiving</title>
		<link>http://michaelfransen.com/2011/11/24/occu-pie-thanksgiving/</link>
		<comments>http://michaelfransen.com/2011/11/24/occu-pie-thanksgiving/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 15:57:56 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Funnies]]></category>

		<guid isPermaLink="false">http://michaelfransen.com/2011/11/24/occu-pie-thanksgiving/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://michaelfransen.com/wp-content/uploads/2011/11/20111124-095655.jpg" rel="lightbox[1146]"><img src="http://michaelfransen.com/wp-content/uploads/2011/11/20111124-095655.jpg" alt="20111124-095655.jpg" class="alignnone size-full" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://michaelfransen.com/2011/11/24/occu-pie-thanksgiving/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Life Cycle</title>
		<link>http://michaelfransen.com/2011/11/18/the-life-cycle/</link>
		<comments>http://michaelfransen.com/2011/11/18/the-life-cycle/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 11:30:40 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Cycling]]></category>
		<category><![CDATA[Funnies]]></category>

		<guid isPermaLink="false">http://michaelfransen.com/?p=1139</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://michaelfransen.com/wp-content/uploads/2011/11/life-cycle-AndySinger.jpeg" rel="lightbox[1139]"><img class="aligncenter size-full wp-image-1141" title="life-cycle-AndySinger" src="http://michaelfransen.com/wp-content/uploads/2011/11/life-cycle-AndySinger.jpeg" alt="" width="360" height="454" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://michaelfransen.com/2011/11/18/the-life-cycle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

