<?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>The Art of Software</title>
	<atom:link href="http://orionseven.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://orionseven.com/blog</link>
	<description>It takes a lot more than code to make software.</description>
	<lastBuildDate>Tue, 12 Feb 2013 04:57:05 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Parsing DateTime Strings in Objective-C</title>
		<link>http://orionseven.com/blog/2013/02/11/parsing-datetime-strings-in-objective-c/</link>
		<comments>http://orionseven.com/blog/2013/02/11/parsing-datetime-strings-in-objective-c/#comments</comments>
		<pubDate>Tue, 12 Feb 2013 04:49:29 +0000</pubDate>
		<dc:creator>Bryan Smith</dc:creator>
				<category><![CDATA[iOS Development]]></category>

		<guid isPermaLink="false">http://orionseven.com/blog/?p=412</guid>
		<description><![CDATA[In my current project I found that I was coming back to the same section of code repeatedly and that I needed to refactor it out as well to maintain it, as I new that I would be back here quite a bit. The particular section of code was used for parsing date time strings [...]]]></description>
				<content:encoded><![CDATA[<p>In my current project I found that I was coming back to the same section of code repeatedly and that I needed to refactor it out as well to maintain it, as I new that I would be back here quite a bit. The particular section of code was used for parsing date time strings into NSDate objects, the strings coming from RSS and Atom XML.</p>
<p>I had come across a few articles on <a href="https://developer.apple.com/library/ios/#qa/qa2010/qa1480.html">parsing internet dates</a> doing just this already and had seen a bit of code on GitHub doing this task as well. But what I didn&#8217;t find is a project doing just this on GitHub.</p>
<p>So I made one.</p>
<p>You can see it here. <a href="https://developer.apple.com/library/ios/#qa/qa2010/qa1480.html">https://github.com/OrionSeven/BSNSDate-InternetDateParsing</a></p>
<p>This isn&#8217;t my first project on GitHub, but it is my first Objective-C one, and once more it&#8217;s something I actually need and hope others will too. To use it simply add the files in your project, include the header file and:</p><pre class="crayon-plain-tag">NSString *dateTimeString = @"2013-02-01T10:52:00Z";
NSDate *date = [NSDate dateFromInternetDateTimeString:dateTimeString];</pre><p>Or if you think you know the format used for your date you can give it a hint:</p><pre class="crayon-plain-tag">NSString *dateTimeString = @"Mon Feb 11 2013 12:53:19 GMT-0800 (PST)";
NSDate *date = [NSDate dateFromInternetDateTimeString:test5 FormatHint:RFC2822];</pre><p>The NSDate Category supports parsing RFC 2822 and 3339 formatted dates. Right now it&#8217;s just the few common ones I&#8217;ve come across, but it handles the heavy lifting in a nice manner for you.</p>
<p>This is in large part based on Apples documentation about <a href="https://developer.apple.com/library/ios/#qa/qa2010/qa1480.html">NSDateFormatter and Internet Dates</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://orionseven.com/blog/2013/02/11/parsing-datetime-strings-in-objective-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code 365: Day 39 &#8211; 42</title>
		<link>http://orionseven.com/blog/2013/02/11/code-365-day-39-42/</link>
		<comments>http://orionseven.com/blog/2013/02/11/code-365-day-39-42/#comments</comments>
		<pubDate>Tue, 12 Feb 2013 04:27:27 +0000</pubDate>
		<dc:creator>Bryan Smith</dc:creator>
				<category><![CDATA[Code 365]]></category>
		<category><![CDATA[iOS Development]]></category>

		<guid isPermaLink="false">http://orionseven.com/blog/?p=410</guid>
		<description><![CDATA[Day 39 &#8211; A bit of this and that type of work. Day 40-41: Zip Zilch Nada Day 42: Finally got my NSDate Category for Internet Date Time parsing in objective-c up on GitHub! Take a look at it here. https://github.com/OrionSeven/BSNSDate-InternetDateParsing Weekly Update Tough week, my youngest has a pretty bad injury from snowboarding. Thought it [...]]]></description>
				<content:encoded><![CDATA[<p><strong>Day 39</strong> &#8211; A bit of this and that type of work.</p>
<p><strong>Day 40-41</strong>: Zip Zilch Nada</p>
<p><strong>Day 42</strong>: Finally got my NSDate Category for Internet Date Time parsing in objective-c up on GitHub! Take a look at it here. <a href="https://github.com/OrionSeven/BSNSDate-InternetDateParsing">https://github.com/OrionSeven/BSNSDate-InternetDateParsing</a></p>
<h5>Weekly Update</h5>
<p>Tough week, my youngest has a pretty bad injury from snowboarding. Thought it was a simple fracture (even that&#8217;s lame) but it appears to be more than that. Still I got a few hours in and managed to get my NSDate Category out the door. I&#8217;d love to be able to spend larger chunks on my projects, but the idea was to spend at least an hour a day, and that I&#8217;m still hacking at.</p>
]]></content:encoded>
			<wfw:commentRss>http://orionseven.com/blog/2013/02/11/code-365-day-39-42/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code 365: Day 38</title>
		<link>http://orionseven.com/blog/2013/02/07/code-365-day-38/</link>
		<comments>http://orionseven.com/blog/2013/02/07/code-365-day-38/#comments</comments>
		<pubDate>Thu, 07 Feb 2013 21:45:33 +0000</pubDate>
		<dc:creator>Bryan Smith</dc:creator>
				<category><![CDATA[Code 365]]></category>
		<category><![CDATA[iOS Development]]></category>

		<guid isPermaLink="false">http://orionseven.com/blog/?p=405</guid>
		<description><![CDATA[So my code is extracted into a side project to encapsulate the category stuff I&#8217;ve done for NSDate. I polished it some making it more flexible and allowing for hints (more in a separate post). Being the first piece of objective-c code I&#8217;ve shared, and only being an Objective-C programmer for 2 months I&#8217;m happy [...]]]></description>
				<content:encoded><![CDATA[<p>So my code is extracted into a side project to encapsulate the category stuff I&#8217;ve done for NSDate. I polished it some making it more flexible and allowing for hints (more in a separate post).</p>
<p>Being the first piece of objective-c code I&#8217;ve shared, and only being an Objective-C programmer for 2 months I&#8217;m happy with what I have. This bit of code has been a great learning tool for:</p>
<ul>
<li><span style="line-height: 13px;">Synchronization (NSLock)</span></li>
<li>NSFormatter</li>
<li>Various ways to implement the Singleton Pattern in Objective-C</li>
<li>The quirks of string conversion to dates in Objective-C/Cocoa</li>
<li>How various popular projects organize projects for presentation on GitHub</li>
</ul>
<p>I still need to make a README before I push my code to GitHub, then I&#8217;m back to my main project.</p>
<h4>Project Code 365 Progress</h4>
<p>Doing a checkin now while it&#8217;s on my mind.</p>
<p>I&#8217;m 30 for 38 days, 3 for 5 weekly checkins and now <strong>10% through the year</strong>! I wish I had not missed those two checkins, but I&#8217;m still staying the course on continued work on my project(s). It&#8217;s fun to be doing this and that&#8217;s what still counts.</p>
]]></content:encoded>
			<wfw:commentRss>http://orionseven.com/blog/2013/02/07/code-365-day-38/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code 365: Day 36 &amp; 37</title>
		<link>http://orionseven.com/blog/2013/02/06/code-365-day-36-37/</link>
		<comments>http://orionseven.com/blog/2013/02/06/code-365-day-36-37/#comments</comments>
		<pubDate>Wed, 06 Feb 2013 23:17:00 +0000</pubDate>
		<dc:creator>Bryan Smith</dc:creator>
				<category><![CDATA[Code 365]]></category>
		<category><![CDATA[iOS Development]]></category>

		<guid isPermaLink="false">http://orionseven.com/blog/?p=384</guid>
		<description><![CDATA[Day 36 Worked on extracting some of my code into a new project which is turning into a nice diversion. Mostly learning, not a ton of code. Day 37 I spent a bit of extra time enjoying my little diversion. It&#8217;s requiring me to dig into objective-c and cocoa a bit more, understanding how dates [...]]]></description>
				<content:encoded><![CDATA[<p>Day 36</p>
<p>Worked on extracting some of my code into a new project which is turning into a nice diversion. Mostly learning, not a ton of code.</p>
<p>Day 37</p>
<p>I spent a bit of extra time enjoying my little diversion. It&#8217;s requiring me to dig into objective-c and cocoa a bit more, understanding how dates are handled and understanding more about the common date formats. I&#8217;m building a category for NSDate to handle conversion of strings to dates for the common date formats; I plan on putting it on GitHub once it&#8217;s ready for my own use?</p>
<p>Why go through the trouble of putting something on GitHub?</p>
<ol>
<li><span style="line-height: 13px;">I found that I kept coming back to this section of code and needing it to be more robust.</span></li>
<li>Making something &#8220;good enough to show&#8221; others makes you do it right (or at least what your interpretation of right is).</li>
<li>I&#8217;ve been helped by others who&#8217;ve shared their great libraries as open source.</li>
<li>I couldn&#8217;t find what I needed already (though I was inspired by something coming close).</li>
</ol>
<p>Anyhow, it should be &#8220;good enough to show&#8221; soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://orionseven.com/blog/2013/02/06/code-365-day-36-37/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code 365: Day 34 &amp; 35</title>
		<link>http://orionseven.com/blog/2013/02/04/code-365-day-34-35/</link>
		<comments>http://orionseven.com/blog/2013/02/04/code-365-day-34-35/#comments</comments>
		<pubDate>Tue, 05 Feb 2013 00:20:09 +0000</pubDate>
		<dc:creator>Bryan Smith</dc:creator>
				<category><![CDATA[iOS Development]]></category>

		<guid isPermaLink="false">http://orionseven.com/blog/?p=379</guid>
		<description><![CDATA[Day 34 &#8211; Super Bowl. Enough Said. Day 35 &#8211; My intention was to finish a feature I started Saturday. But instead I discovered a bug to squash! Interesting bug, I&#8217;m not sure how I&#8217;d hit it outside of a development environment, but having your app crash on startup without doing anything is a fun [...]]]></description>
				<content:encoded><![CDATA[<p>Day 34 &#8211; Super Bowl. Enough Said.</p>
<p>Day 35 &#8211; My intention was to finish a feature I started Saturday. But instead I discovered a bug to squash! Interesting bug, I&#8217;m not sure how I&#8217;d hit it outside of a development environment, but having your app crash on startup without doing anything is a fun one.</p>
<p>From there I worked on where I left off with my Testing on Saturday and ended up learning a lot about parsing <a href="https://developer.apple.com/library/ios/#qa/qa2010/qa1480.html">&#8220;Internet Dates&#8221; in objective-c</a>. Which led me to starting a little side project. More on that later.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://orionseven.com/blog/2013/02/04/code-365-day-34-35/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code 365: Day 32 &amp; 33</title>
		<link>http://orionseven.com/blog/2013/02/04/code-365-day-32-33/</link>
		<comments>http://orionseven.com/blog/2013/02/04/code-365-day-32-33/#comments</comments>
		<pubDate>Mon, 04 Feb 2013 23:52:41 +0000</pubDate>
		<dc:creator>Bryan Smith</dc:creator>
				<category><![CDATA[Code 365]]></category>

		<guid isPermaLink="false">http://orionseven.com/blog/?p=376</guid>
		<description><![CDATA[Day 32 was intercepted by a date with my wife and indoor soccer for my kids. Day 33, I worked on some new test code while sitting with my daughter at the ski lodge. I likely wouldn&#8217;t have gotten any programming in if not for her untimely crash on the mountain which resulted in a [...]]]></description>
				<content:encoded><![CDATA[<p>Day 32 was intercepted by a date with my wife and indoor soccer for my kids.</p>
<p>Day 33, I worked on some new test code while sitting with my daughter at the ski lodge. I likely wouldn&#8217;t have gotten any programming in if not for her untimely crash on the mountain which resulted in a doctors visit for her.</p>
]]></content:encoded>
			<wfw:commentRss>http://orionseven.com/blog/2013/02/04/code-365-day-32-33/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code 365: Day 30 &amp; 31</title>
		<link>http://orionseven.com/blog/2013/02/01/code-365-day-30-31/</link>
		<comments>http://orionseven.com/blog/2013/02/01/code-365-day-30-31/#comments</comments>
		<pubDate>Fri, 01 Feb 2013 21:58:34 +0000</pubDate>
		<dc:creator>Bryan Smith</dc:creator>
				<category><![CDATA[Code 365]]></category>

		<guid isPermaLink="false">http://orionseven.com/blog/?p=371</guid>
		<description><![CDATA[Both of these days were no-codes. My schedule didn&#8217;t permit any time unfortunately.]]></description>
				<content:encoded><![CDATA[<p>Both of these days were no-codes. My schedule didn&#8217;t permit any time unfortunately.</p>
]]></content:encoded>
			<wfw:commentRss>http://orionseven.com/blog/2013/02/01/code-365-day-30-31/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code 365: Day 29</title>
		<link>http://orionseven.com/blog/2013/01/29/code-365-day-29/</link>
		<comments>http://orionseven.com/blog/2013/01/29/code-365-day-29/#comments</comments>
		<pubDate>Wed, 30 Jan 2013 00:59:04 +0000</pubDate>
		<dc:creator>Bryan Smith</dc:creator>
				<category><![CDATA[Code 365]]></category>
		<category><![CDATA[iOS Development]]></category>

		<guid isPermaLink="false">http://orionseven.com/blog/?p=369</guid>
		<description><![CDATA[So close, but the current piece of code is stretching my objective-c skills. Code blocks, main dispatch threads, access to variables in my success blocks. Definitely need more than an hour to finish this bit of code, more like 2 or 3. Unfortunately my schedule doesn&#8217;t have room tonight.]]></description>
				<content:encoded><![CDATA[<p>So close, but the current piece of code is stretching my objective-c skills. Code blocks, main dispatch threads, access to variables in my success blocks. Definitely need more than an hour to finish this bit of code, more like 2 or 3. Unfortunately my schedule doesn&#8217;t have room tonight.</p>
]]></content:encoded>
			<wfw:commentRss>http://orionseven.com/blog/2013/01/29/code-365-day-29/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code 365: Day 28</title>
		<link>http://orionseven.com/blog/2013/01/28/code-365-day-28/</link>
		<comments>http://orionseven.com/blog/2013/01/28/code-365-day-28/#comments</comments>
		<pubDate>Tue, 29 Jan 2013 05:07:08 +0000</pubDate>
		<dc:creator>Bryan Smith</dc:creator>
				<category><![CDATA[Code 365]]></category>
		<category><![CDATA[iOS Development]]></category>

		<guid isPermaLink="false">http://orionseven.com/blog/?p=366</guid>
		<description><![CDATA[Went snowboarding today (one of my best days boarding ever if you were asking). Guess that bug was just for the evening, but my kids are still down with it . But coding must be done! I just need do one last feature and I can be done with my Beta!]]></description>
				<content:encoded><![CDATA[<p>Went snowboarding today (one of my best days boarding ever if you were asking). Guess that bug was just for the evening, but my kids are still down with it . But coding must be done! I just need do one last feature and I can be done with my Beta!</p>
]]></content:encoded>
			<wfw:commentRss>http://orionseven.com/blog/2013/01/28/code-365-day-28/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code 365: Day 27</title>
		<link>http://orionseven.com/blog/2013/01/28/code-365-day-27/</link>
		<comments>http://orionseven.com/blog/2013/01/28/code-365-day-27/#comments</comments>
		<pubDate>Tue, 29 Jan 2013 05:04:16 +0000</pubDate>
		<dc:creator>Bryan Smith</dc:creator>
				<category><![CDATA[Code 365]]></category>

		<guid isPermaLink="false">http://orionseven.com/blog/?p=363</guid>
		<description><![CDATA[Had a bug or something last night (now my girls have it) and was zonked out on the sofa by 7.]]></description>
				<content:encoded><![CDATA[<p>Had a bug or something last night (now my girls have it) and was zonked out on the sofa by 7.</p>
]]></content:encoded>
			<wfw:commentRss>http://orionseven.com/blog/2013/01/28/code-365-day-27/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
