<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Tim&#039;s Blog</title>
	<atom:link href="http://timclem.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://timclem.wordpress.com</link>
	<description>Hack everything</description>
	<lastBuildDate>Mon, 10 Oct 2011 18:12:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='timclem.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Tim&#039;s Blog</title>
		<link>http://timclem.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://timclem.wordpress.com/osd.xml" title="Tim&#039;s Blog" />
	<atom:link rel='hub' href='http://timclem.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Hardware Hacking in Vim</title>
		<link>http://timclem.wordpress.com/2011/10/10/hardware-hacking-in-vim/</link>
		<comments>http://timclem.wordpress.com/2011/10/10/hardware-hacking-in-vim/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 18:12:44 +0000</pubDate>
		<dc:creator>Tim Clem</dc:creator>
				<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://timclem.wordpress.com/?p=363</guid>
		<description><![CDATA[We love our hardware hacking here at GitHub and with the recent upgrade in space at the new office we&#8217;ve been holding weekly hardware hacking workshops with the illustrious Matt Ganucheau. In those sessions the crew has been messing with sensors and actuators, bots and quad copter drones, mesh networks and octocat powered kinects&#8230; We are [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timclem.wordpress.com&amp;blog=8340878&amp;post=363&amp;subd=timclem&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We love our hardware hacking here at GitHub and with the recent upgrade in space at the new office we&#8217;ve been holding weekly hardware hacking workshops with the illustrious <a href="https://github.com/mganucheau" target="_blank">Matt Ganucheau</a>. In those sessions the crew has been messing with sensors and actuators, bots and quad copter drones, mesh networks and octocat powered kinects&#8230;</p>
<p style="text-align:center;"><a href="http://timclem.files.wordpress.com/2011/10/img_0153.jpg"><img class="aligncenter size-full wp-image-364" title="Hardware Hacking" src="http://timclem.files.wordpress.com/2011/10/img_0153.jpg?w=367&#038;h=367" alt="" width="367" height="367" /></a></p>
<p>We are huge fans of the <a href="http://www.arduino.cc/" target="_blank">Arduino</a> stack which is hosted on <a href="https://github.com/arduino/Arduino" target="_blank">GitHub</a>, and there are dozens of Arduino <a href="http://www.sparkfun.com/products/9950" target="_blank">boards</a> running around the office. The beauty of writing code for the Arduino is that you rarely end up writing a lot of it and once you&#8217;ve written a sketch, it runs on a whole variety of compatible boards. Compared to how microcontroller prototyping was done 5 years ago, this is a serious breath of fresh air. There are some of us, however, who would rather continue to write code in vi (<a href="https://github.com/b4winckler/macvim" target="_blank">MacVim</a> in my case), so I came up with a nice hack&#8230;</p>
<p>Enter <a href="https://github.com/tclem/vim-arduino" target="_blank">vim-arduino</a>.</p>
<p>This is my first attempt at getting Arduino IDE functionality into MacVim. Right now you can compile, deploy and open a serial port. The board for deployment always defaults to &#8216;uno&#8217;, but you can override that by putting the name of the board  on the first line of your sketch like so (any board found in boards.txt is valid):</p>
<pre>// board: atmega328</pre>
<p><span class="Apple-style-span" style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:13px;line-height:19px;white-space:normal;">Compiling code can be done like so: </span>&lt;Leader&gt;ac</p>
<p><span class="Apple-style-span" style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:13px;line-height:19px;white-space:normal;">Compiling and the deploying is done like so: </span>&lt;Leader&gt;ad</p>
<p><span class="Apple-style-span" style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:13px;line-height:19px;white-space:normal;">You can also open a serial port for debugging like this: </span>&lt;Leader&gt;as</p>
<p>The goal here is to be 100% compatible with existing Arduino sketches and to take advantage of the rest of the Arduino environment. Your hardware hacking peers should never know you are secretly rocking vi.</p>
<p>Checkout the <a href="https://github.com/tclem/vim-arduino" target="_blank">README</a> to get things setup and bug me on <a href="http://twitter.com/#!/timothyclem" target="_blank">Twitter</a> if you find any of this useful.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timclem.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timclem.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timclem.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timclem.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timclem.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timclem.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timclem.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timclem.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timclem.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timclem.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timclem.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timclem.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timclem.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timclem.wordpress.com/363/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timclem.wordpress.com&amp;blog=8340878&amp;post=363&amp;subd=timclem&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://timclem.wordpress.com/2011/10/10/hardware-hacking-in-vim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2f4861b27dc35663ed271d39f5358261?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timclem</media:title>
		</media:content>

		<media:content url="http://timclem.files.wordpress.com/2011/10/img_0153.jpg" medium="image">
			<media:title type="html">Hardware Hacking</media:title>
		</media:content>
	</item>
		<item>
		<title>Code First, Ask Questions Later</title>
		<link>http://timclem.wordpress.com/2011/09/09/code-first-ask-questions-later/</link>
		<comments>http://timclem.wordpress.com/2011/09/09/code-first-ask-questions-later/#comments</comments>
		<pubDate>Fri, 09 Sep 2011 19:20:03 +0000</pubDate>
		<dc:creator>Tim Clem</dc:creator>
				<category><![CDATA[Talks]]></category>

		<guid isPermaLink="false">http://timclem.wordpress.com/?p=346</guid>
		<description><![CDATA[I gave this talk at Rocky Mountain Ruby in Boulder CO on Sept 1, 2011. Abstract Ever wonder how software is designed and developed at GitHub? Are you curious about how new features are deployed to the site? (Hint: ask the robot.) Want to know why we don&#8217;t have any managers and don&#8217;t track vacation days? This [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timclem.wordpress.com&amp;blog=8340878&amp;post=346&amp;subd=timclem&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I gave this talk at <a href="http://rockymtnruby.com" target="_blank">Rocky Mountain Ruby</a> in Boulder CO on Sept 1, 2011.</p>
<h2>Abstract</h2>
<p>Ever wonder how software is designed and developed at GitHub? Are you curious about how new features are deployed to the site? (Hint: ask the robot.) Want to know why we don&#8217;t have any managers and don&#8217;t track vacation days?</p>
<p>This talk will explore running your company like an open source project and give some insight into how GitHub continues to leverage ruby and other open source tools to keep up with massive data loads and a growing community of users.</p>
<h2>Slides</h2>
<p><a href="http://speakerdeck.com/u/tclem/p/code-first-ask-questions-later">http://speakerdeck.com/u/tclem/p/code-first-ask-questions-later</a></p>
<p><span class="Apple-style-span" style="font-size:20px;font-weight:bold;">Video</span></p>
<p><del>I know there was AV taken at the conference and I will post a link once it is available.</del></p>
<p><del></del><a href="http://confreaks.net/videos/723-rockymtnruby2011-code-first-ask-questions-later">http://confreaks.net/videos/723-rockymtnruby2011-code-first-ask-questions-later</a></p>
<p><span class="Apple-style-span" style="font-size:20px;font-weight:bold;">Credits</span></p>
<p>The font in my presentation is called <a href="http://www.theleagueofmoveabletype.com/fonts/1-junction" target="_blank">Junction</a> and can be found on the <a href="http://www.theleagueofmoveabletype.com/" target="_blank">League of Movable Type</a>. Many of the photographs are my own or from the GitHub <a href="http://instagr.am/" target="_blank">Instagram</a> stream. A couple of them are from <a href="http://www.flickr.com/" target="_blank">flickr</a> under the creative commons license: <a href="http://www.flickr.com/photos/bravo213/376781221/" target="_blank">easy button</a>, <a href="http://www.flickr.com/photos/japokskee/4401869800" target="_blank">just do it</a>, <a href="http://www.flickr.com/photos/flysi/183272970/" target="_blank">robot</a>. The grainy robot attacking image is actually from <a href="http://www.hulu.com/watch/2340/saturday-night-live-old-glory" target="_blank">SNL</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timclem.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timclem.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timclem.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timclem.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timclem.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timclem.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timclem.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timclem.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timclem.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timclem.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timclem.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timclem.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timclem.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timclem.wordpress.com/346/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timclem.wordpress.com&amp;blog=8340878&amp;post=346&amp;subd=timclem&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://timclem.wordpress.com/2011/09/09/code-first-ask-questions-later/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2f4861b27dc35663ed271d39f5358261?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timclem</media:title>
		</media:content>
	</item>
		<item>
		<title>Explaining GitHub Part 2</title>
		<link>http://timclem.wordpress.com/2011/04/19/explaining-github-part-2/</link>
		<comments>http://timclem.wordpress.com/2011/04/19/explaining-github-part-2/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 15:50:48 +0000</pubDate>
		<dc:creator>Tim Clem</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://timclem.wordpress.com/?p=308</guid>
		<description><![CDATA[If you just tuned in, I&#8217;m attempting to explain Git and GitHub to the layman. The previous post was all about Git. This one focuses on what GitHub actually does. Part 2: GitHub Okay, now we can move on to GitHub. Unlike writing a paper, software developers rarely write code all by themselves in a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timclem.wordpress.com&amp;blog=8340878&amp;post=308&amp;subd=timclem&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>If you just tuned in, I&#8217;m attempting to explain Git and GitHub to the layman. The <a title="Explaining GitHub" href="http://timclem.wordpress.com/2011/04/15/explaining-github/">previous post</a> was all about Git. This one focuses on what GitHub actually does.</p>
<p style="text-align:center;"><img class="aligncenter size-full wp-image-327" title="Secure source code hosting and collaborative development - GitHub" src="http://timclem.files.wordpress.com/2011/04/secure-source-code-hosting-and-collaborative-development-github.jpg?w=700&#038;h=237" alt="" width="700" height="237" /></p>
<p><strong>Part 2: GitHub</strong></p>
<p>Okay, now we can move on to GitHub. Unlike writing a paper, software developers rarely write code all by themselves in a closet. Well, some <a href="http://msdn.microsoft.com/en-us/" target="_blank">do</a>&#8230; but most of us collaborate on our software projects. GitHub provides a meeting place for software developers to collaborate around code and the different versions of that code. It stretches the analogy, but imagine that your paper with all the different snapshots you took along the way was available for other people not just to read, but to derive new papers from. You would always be credited as the original author, but everyone can create derivative works and if someone added a really nice abstract you could pull just that change back into your version of the paper. GitHub acts like a digital room where everyone hangs out to share their projects, ideas, and most importantly their code. The same way that Facebook provides a medium for people to hang out digitally and share status, photos, notes, etc &#8211;GitHub provides a medium for programmers to share code.</p>
<p>Code is a very abstract notion to people who don&#8217;t program for a living, and this is where I think the idea of writing a paper as an analogy for writing code is very helpful. Just as you could have written your paper in Spanish or French or English, code can be written in any number of languages. The primary purpose of code is to communicate something to a computer. You can think of it like writing an instruction manual. In 3rd grade, I remember, we did an activity where we had to explicitly write out the instructions for making a peanut butter and jelly sandwich. The teacher then took our written instructions and followed them to a tee. If you wrote &#8220;Take two pieces of bread&#8221;, she would literally tear off two very small pieces of bread to start making the sandwich. If you didn&#8217;t explain how to open the jelly jar, there would be no jelly on your sandwich. If you didn&#8217;t explicitly say that the jelly and peanut butter sides of the bread should be touching in the middle, you would get a sandwich with jelly and peanut butter on the outside. This is what it is like when you have to communicate with a computer. At the lowest level, computers are really dumb; they can only do what they are told, so your instructions (code) must tell the machine exactly what you want it to do.</p>
<p>As you can probably imagine, writing all this code can get very unwieldy. Not only because of the sheer amount of code that it takes to develop a complex system like the <a href="https://github.com/android" target="_blank">Android operating system</a>, but because that code is written by a large number of programmers (think lots of people editing the same paper all at once). This is where GitHub really shines. GitHub provides the ability for developers to publish and share code, solicit collaboration from other programmers, gain reputation in the community and discover/contribute to other code projects of interest. In many ways it is a realization of the original intent of the internet. To throw out yet another metaphor, GitHub creates a framework for the evolutionary improvement of software in real time. Like the evolution of species, software is allowed to mutate and change over time creating new variants, symbiotic relationships (sometimes even parasitic ones!), and a dazzling array of constructs and programs. GitHub is like primordial soup in which all these software projects are interacting, growing and changing. And instead of eons, this all happens at the speed of the <a href="http://xkcd.com/181/" target="_blank">interwebs</a>.</p>
<p>If you want to learn more about GitHub, you know where to <a href="http://github.com" target="_blank">go</a>.</p>
<p>If things are still fuzzy, then all you need to know is that we run a web site&#8230;. And we sell these cute little creatures that are a cross between a cat and an octopus&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timclem.wordpress.com/308/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timclem.wordpress.com/308/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timclem.wordpress.com/308/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timclem.wordpress.com/308/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timclem.wordpress.com/308/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timclem.wordpress.com/308/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timclem.wordpress.com/308/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timclem.wordpress.com/308/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timclem.wordpress.com/308/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timclem.wordpress.com/308/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timclem.wordpress.com/308/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timclem.wordpress.com/308/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timclem.wordpress.com/308/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timclem.wordpress.com/308/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timclem.wordpress.com&amp;blog=8340878&amp;post=308&amp;subd=timclem&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://timclem.wordpress.com/2011/04/19/explaining-github-part-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2f4861b27dc35663ed271d39f5358261?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timclem</media:title>
		</media:content>

		<media:content url="http://timclem.files.wordpress.com/2011/04/secure-source-code-hosting-and-collaborative-development-github.jpg" medium="image">
			<media:title type="html">Secure source code hosting and collaborative development - GitHub</media:title>
		</media:content>
	</item>
		<item>
		<title>Explaining GitHub</title>
		<link>http://timclem.wordpress.com/2011/04/15/explaining-github/</link>
		<comments>http://timclem.wordpress.com/2011/04/15/explaining-github/#comments</comments>
		<pubDate>Fri, 15 Apr 2011 15:10:31 +0000</pubDate>
		<dc:creator>Tim Clem</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://timclem.wordpress.com/?p=306</guid>
		<description><![CDATA[GitHub is well beyond being just another startup, but I still find myself explaining over and over again what it is that GitHub actually does. My brother posted this link on Facebook the other day with a comment that he still has no idea what we do, but has so far surmised that it has &#8220;something to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timclem.wordpress.com&amp;blog=8340878&amp;post=306&amp;subd=timclem&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>GitHub is well beyond being just another startup, but I still find myself explaining over and over again what it is that GitHub actually does. My brother posted this <a href="http://gigaom.com/2011/04/09/githubs-sold-out-codeconf-could-be-first-of-many/" target="_blank">link</a> on Facebook the other day with a comment that he still has no idea what we do, but has so far surmised that it has &#8220;something to do with a cat and an octopus&#8221;.</p>
<p>So here, presented in two parts, is the crash course for the layman:</p>
<p><img class="aligncenter" title="Octobiwan" src="http://octodex.github.com/images/octobiwan.jpg" alt="" width="500" height="456" /></p>
<p><span class="Apple-style-span" style="font-size:15px;font-weight:bold;">Part 1: Git</span></p>
<p>We have to start with Git. Git and GitHub are two different things. Git is a <a href="http://en.wikipedia.org/wiki/Revision_control" target="_blank">version control</a> system. You don&#8217;t need to know anything about it other than it is amazing.</p>
<p>Okay, maybe I&#8217;ll tell you a little more than that. If you have ever typed a paper into a computer (or written one by hand) you have probably used a low fidelity form of version control. Say you are working on a big paper and at certain points you want to save off a version or draft. You might do this for many reasons. Maybe it is an important paper and you want to put a copy somewhere else safe. Maybe you add a `01` to the filename and later a `02` and so on (or you might use today&#8217;s date `ImportantPaper_4_13_2011.txt`). Maybe you need to turn in a draft or pass a draft off for editing. These activities are all analogous to creating a snapshot of what your paper looks like at a certain point in time and saving it off. Another good example of why having snapshots is important is if you are going to completely re-write your conclusion. Having a saved version of your old conclusion lets you go back to it at any time to see what you wrote or even to revert back because your new conclusion turned out to be a bad idea.</p>
<p>Software developers are usually focused on code instead of papers, but they have the same problems. You need to be able to quickly and easily take snapshots of the current state of your code base (along with some comments about that revision) and have the ability to come back to that point in history at any time. You might also want to compare the current state of your code with any previous state. Programmers call the solution to this problem version control. Just as you could write your paper in any number of document editing systems (Word, Pages, text files, Quark, LaTeX, etc) there are many different version control systems. Git is one of those systems. Developers write programs in a variety of computer languages and these programs are sort of like big papers, but vastly more complex. Having the ability to take snapshots frequently and travel back in history to see how a code file changed over time is an essential activity.</p>
<p>If you are really interested in learning more about Git you can download and learn about it <a href="http://git-scm.com/" target="_blank">here</a>. I would also highly recommend my friend Scott Chacon&#8217;s book <a href="http://progit.org/book/" target="_blank">Pro Git</a>.</p>
<p>If you have stuck around just for the Octocats, then I suggest you head over to the <a href="http://octodex.github.com/" target="_blank">octodex</a> until part 2 comes out.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timclem.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timclem.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timclem.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timclem.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timclem.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timclem.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timclem.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timclem.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timclem.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timclem.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timclem.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timclem.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timclem.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timclem.wordpress.com/306/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timclem.wordpress.com&amp;blog=8340878&amp;post=306&amp;subd=timclem&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://timclem.wordpress.com/2011/04/15/explaining-github/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2f4861b27dc35663ed271d39f5358261?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timclem</media:title>
		</media:content>

		<media:content url="http://octodex.github.com/images/octobiwan.jpg" medium="image">
			<media:title type="html">Octobiwan</media:title>
		</media:content>
	</item>
		<item>
		<title>Hello SF</title>
		<link>http://timclem.wordpress.com/2011/03/09/hello-sf/</link>
		<comments>http://timclem.wordpress.com/2011/03/09/hello-sf/#comments</comments>
		<pubDate>Wed, 09 Mar 2011 17:03:41 +0000</pubDate>
		<dc:creator>Tim Clem</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://timclem.wordpress.com/?p=284</guid>
		<description><![CDATA[Well, it is official. I&#8217;m not sure the dust has really settled, and there are a few lurking boxes in the house and plenty more filling the garage -but we have made the move to San Francisco! The downsizing has been therapeutic (2500 sq. ft. to 1000 sq. ft.) and the adjustment to living in a big [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timclem.wordpress.com&amp;blog=8340878&amp;post=284&amp;subd=timclem&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Well, it is official. I&#8217;m not sure the dust has really settled, and there are a few lurking boxes in the house and plenty more filling the garage -but we have made the move to San Francisco! The downsizing has been therapeutic (2500 sq. ft. to 1000 sq. ft.) and the adjustment to living in a big city as so far been very positive. Even the cat seems to have settled in and is friendlier and calmer than we remember her being in Colorado.</p>
<p>I took a new position as a developer at <a href="http://github.com" target="_blank">GitHub</a> working out of their main San Francisco office and couldn&#8217;t be more excited about it. The culture is ideal, my co-workers are some of the smartest people I have worked with yet, I&#8217;m learning a ton, and I have big plans for all the amazing things this company is going to do in the next few years. Ramping up in a new job is always exciting, with all the new things to learn and people to meet. Finding your way around a new city just adds to the excitement: where to live, where to eat, where to buy crap you need. I cannot speak more highly of the SF GitHub peeps who have gone out of their way to make my family and I feel welcome. From driving us around all weekend to find an apartment, to offering rides, to supplying blankets &amp; pillows &amp; air mattresses for sleeping in newly rented apartments, to dinner invites and insights about living in SF &#8211;we have been enthusiastically ushered into the community.</p>
<p>As far as what I&#8217;m working on at GitHub, here is just a taste (more to come later, I promise)&#8230;</p>
<p>Tom and I are working hard to extend the reach of our campfire robot (hubot) into the physical world. It still needs some <a href="http://instagr.am/p/B2TzO/" target="_blank">better packaging</a>, but version 1 of &#8220;Door Me&#8221; is up and running; allowing GitHub scros to never leave their seats to answer the door buzzer again.</p>
<p>I&#8217;m also jamming on <a href="http://libgit2.github.com/" target="_blank">libgit2</a> &#8211;building out <a href="https://github.com/libgit2/objective-git" target="_blank">objective-c bindings</a>, contributing to <a href="https://github.com/libgit2/rugged" target="_blank">rugged</a> and some of the other language bindings. If you aren&#8217;t familiar with the project, you should check it out. It is probably one of the best examples of TDD on a C project that I&#8217;ve seen recently.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timclem.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timclem.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timclem.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timclem.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timclem.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timclem.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timclem.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timclem.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timclem.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timclem.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timclem.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timclem.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timclem.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timclem.wordpress.com/284/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timclem.wordpress.com&amp;blog=8340878&amp;post=284&amp;subd=timclem&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://timclem.wordpress.com/2011/03/09/hello-sf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2f4861b27dc35663ed271d39f5358261?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timclem</media:title>
		</media:content>
	</item>
		<item>
		<title>$35 for Reflector</title>
		<link>http://timclem.wordpress.com/2011/02/02/35-for-reflector/</link>
		<comments>http://timclem.wordpress.com/2011/02/02/35-for-reflector/#comments</comments>
		<pubDate>Wed, 02 Feb 2011 21:43:45 +0000</pubDate>
		<dc:creator>Tim Clem</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://timclem.wordpress.com/?p=275</guid>
		<description><![CDATA[In lieu of my past complaining about Reflector&#8217;s new owners you might expect some outrage about the announcement today that redgate will be charging $35 for this product starting in March. Your current free version will stop working shortly thereafter forcing you to buy the upgrade or find another tool. I can&#8217;t say, however, that I&#8217;m all that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timclem.wordpress.com&amp;blog=8340878&amp;post=275&amp;subd=timclem&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In lieu of my past complaining about Reflector&#8217;s new owners you might expect some outrage about the <a href="http://www.red-gate.com/products/dotnet-development/reflector/announcement" target="_blank">announcement</a> today that redgate will be charging $35 for this product starting in March. Your current free version will stop working shortly thereafter forcing you to buy the upgrade or find another tool. I can&#8217;t say, however, that I&#8217;m all that surprised. The .net ecosystem is a place where tools cost money. Visual Studio costs money. SQL Server costs money. Sure there are ways to write C# code in notepad++ and run the compiler on the command line, but I don&#8217;t know too many developers who operate like that. And $35 is small fries compared to what I pay for a control set like DevExpress. I say vote with your wallet. If you find value in the tool at that price &#8211; great! Otherwise, find an alternative or build your own. As for me, I&#8217;m holding out for <a href="http://blogs.jetbrains.com/dotnet/2011/02/reflections-on-recent-news/" target="_blank">this</a> - especially since I&#8217;m already a customer and love what they put out.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timclem.wordpress.com/275/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timclem.wordpress.com/275/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timclem.wordpress.com/275/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timclem.wordpress.com/275/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timclem.wordpress.com/275/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timclem.wordpress.com/275/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timclem.wordpress.com/275/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timclem.wordpress.com/275/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timclem.wordpress.com/275/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timclem.wordpress.com/275/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timclem.wordpress.com/275/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timclem.wordpress.com/275/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timclem.wordpress.com/275/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timclem.wordpress.com/275/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timclem.wordpress.com&amp;blog=8340878&amp;post=275&amp;subd=timclem&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://timclem.wordpress.com/2011/02/02/35-for-reflector/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2f4861b27dc35663ed271d39f5358261?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timclem</media:title>
		</media:content>
	</item>
		<item>
		<title>Why programmers love to climb</title>
		<link>http://timclem.wordpress.com/2011/01/10/why-programmers-love-to-climb/</link>
		<comments>http://timclem.wordpress.com/2011/01/10/why-programmers-love-to-climb/#comments</comments>
		<pubDate>Mon, 10 Jan 2011 17:09:07 +0000</pubDate>
		<dc:creator>Tim Clem</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://timclem.wordpress.com/?p=266</guid>
		<description><![CDATA[Why do programmers love to climb? Actually, I don&#8217;t think it is specifically constrained to programmers, but anyone in a math, science or engineering role. This is by no means a scientific survey but more just my personal observation of how a love for solving problems in the abstract relates to the skills and mentality [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timclem.wordpress.com&amp;blog=8340878&amp;post=266&amp;subd=timclem&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Why do programmers love to climb? Actually, I don&#8217;t think it is specifically constrained to programmers, but anyone in a math, science or engineering role. This is by no means a scientific survey but more just my personal observation of how a love for solving problems in the abstract relates to the skills and mentality required to love climbing rocks.</p>
<p>Rock climbing (and especially <a href="http://en.wikipedia.org/wiki/Bouldering">bouldering</a> which is what I do the most of) involves solving problems and this, I think, is at the root of the correlation. You might think that at the end of a day of writing code, the last thing you&#8217;d want to be faced with is another set of problems to solve. But there is something very refreshing about the mental and physical challenges associated with climbing that compliment a day job lived in the abstract. The rock is real, the goal is fixed. You need a combination of mental awareness, physical strength, dexterity, technique and lots of plain old perseverance to get up a rock face. There is also a individual/collaborate dichotomy to climbing similar to the world of math, science, and programming. At the end of the day, it is you the individual that must solve the problem and climb the route. No one is there to help you and it comes down to how well you execute the sequence of movements required to accomplish the climb. However, in the background there is a constant community of collaboration going on. <a href="http://en.wikipedia.org/wiki/Beta_(climbing)">Beta</a> is exchanged. Technique is discussed. Methods of training or recovery debated. Different movements are tried over and over again with subtle variation and the results are communicated to the group.</p>
<blockquote><p>If you get your thumb fully engaged and pinch while you are crimping off the top of that left hand you can gain enough pull to make that high move. But you have to keep that right toe on or it is all over.</p></blockquote>
<p>Beta often doesn&#8217;t work for everyone though. Height, <a href="http://en.wikipedia.org/wiki/Ape_index">ape index</a> and a variety of other physical factors determine how you go about climbing a particular problem and in many cases a friend&#8217;s method will be of no help to you. One of my peers is tall enough that I almost always have to come up with a different set of beta for climbing the same problems because I just can&#8217;t reach the holds and keep my feet where he does. Another friend is so much stronger than I that he doesn&#8217;t worry about his feet too much and is very adept at jumping for holds and then catching and stabilizing his swing. I&#8217;m a much more cerebral and technique based climber. I&#8217;m not overly strong, so I rely on body position, using my feet, maximum efficiency of movement and subtle leverage points to get up the rock. One of things I&#8217;m trying to learn now as I have progressed to harder climbs is actually how to move very dynamically on the rock by jumping and <a href="http://vimeo.com/13752590">pogo</a>-ing to catch holds while using my core to contain swing and stay put after I come back in contact with the rock again.</p>
<p>As a developer moving from the abstract world of 1&#8242;s and 0&#8242;s to the physical world of rock, sweat and sometimes blood it seems there is endless entertainment in the realm of conquering boulders and cliffs. The same way I sometimes wake up in the morning with the solution to a programming challenge appearing in my head, I will often dream about a particular bouldering problem I&#8217;m working on. Or I&#8217;ll be driving to work, visualizing the movements in my head of a particularly hard climb, my hands sweating on the steering wheel. When I come back to that problem the next day things click that weren&#8217;t working the day before and I&#8217;ll find myself  sending what previously felt impossible.</p>
<p>I&#8217;ve taken a few of my fellow developers climbing and have been fascinated by the reaction to the sport. For someone who has never climbing before (and especially if they are particularly strong or adept at another sport) climbing for the first time can be a very frustrating activity. Traditional strength does you nothing in climbing until you learn how to use it. And often it is forearm and contact strength that matters way more than your ability to bench press. You legs also matter much more than your arms do and some of the most common climbing advise heard is to climb with your legs, not your arms. One of these developers in particular impressed me. Not necessarily with his climbing ability, but with his persistence in solving the problems. I think he spent the entire night on a single bouldering problem. He worked every move. He listened intently to any guidance that I offered and then was back at it with renewed vigor. And by the end of the night he made it all the way up! What is really interesting is that over the years of working with this guy, I&#8217;ve noticed that this is the same way he tackles programming problems: with quiet persistence and a never die attitude. I learned it is equally important to check in on him and make sure he has what he needs to be productive or give some piece of guidance, but at the end of the day he delivers.</p>
<p>I think software engineering is much like this situation where you are constantly being thrown at problems that you don&#8217;t know enough about. You are continually learning new things and being asked to communicate where you are in solving the problem and when it will be done. You need a combination of a love for what you are doing, maybe some base talent, the ability to learn new skills on the fly, and a whole lot of persistence. Your attitude as you approach the inevitable road blocks and set backs matters more than anything else. That is why programmers love climbing. Because they thrive off those situations of solving hard problems, dealing with set backs and ultimately accomplishing great things. It isn&#8217;t burdensome to us, it is drives us forward and onto the next challenge. We thrive off it.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timclem.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timclem.wordpress.com/266/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timclem.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timclem.wordpress.com/266/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timclem.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timclem.wordpress.com/266/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timclem.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timclem.wordpress.com/266/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timclem.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timclem.wordpress.com/266/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timclem.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timclem.wordpress.com/266/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timclem.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timclem.wordpress.com/266/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timclem.wordpress.com&amp;blog=8340878&amp;post=266&amp;subd=timclem&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://timclem.wordpress.com/2011/01/10/why-programmers-love-to-climb/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2f4861b27dc35663ed271d39f5358261?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timclem</media:title>
		</media:content>
	</item>
		<item>
		<title>mobile 311</title>
		<link>http://timclem.wordpress.com/2010/12/14/mobile-311/</link>
		<comments>http://timclem.wordpress.com/2010/12/14/mobile-311/#comments</comments>
		<pubDate>Tue, 14 Dec 2010 22:27:51 +0000</pubDate>
		<dc:creator>Tim Clem</dc:creator>
				<category><![CDATA[Mobility]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://timclem.wordpress.com/?p=258</guid>
		<description><![CDATA[I just finished releasing updates to the mobile 311 application into the iPhone App Store and Windows Phone Marketplace and felt inclined to write a bit about my experiences. To give some brief background: Advanced Mobile 311 is a new product for Blue Dot that is providing the ability for citizens to easily report issues [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timclem.wordpress.com&amp;blog=8340878&amp;post=258&amp;subd=timclem&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I just finished releasing updates to the mobile 311 application into the iPhone App Store and Windows Phone Marketplace and felt inclined to write a bit about my experiences.</p>
<p>To give some brief background: Advanced Mobile 311 is a new product for Blue Dot that is providing the ability for citizens to easily report issues in their communities. 311 is a phone number set aside in the US for reporting non-emergency problems and our applications take this concept into the hands of smart phone users allowing them to mark the location of problems on a map (possibly using GPS), take a picture and submit a specific service request to their city or municipality. We certainly aren&#8217;t the only one doing this and some US cities like <a href="http://www.sf311.org/" target="_blank">San Fransisco</a> and <a title="NYC 311 iPhone App" href="http://itunes.apple.com/us/app/nyc-311/id324897619?mt=8" target="_blank">New York</a> have already implemented and been running crowd sourcing 311 solutions for a while now. <a href="http://www.citysourced.com/default.aspx" target="_blank">City Sourced</a> is working hard at this same problem with limited partnerships around the US. Much more can be said around the business models and players in the Gov 2.0 movement, but for now I&#8217;m more interested in the process of writing and delivering consumer applications which is something very new for me.</p>
<p>While it will take a week or so for the application updates I just submitted to make it through the review process in their respective store, you can check out the existing apps both in the iPhone <a href="http://itunes.apple.com/us/app/mobile-311/id377887590?mt=8" target="_blank">App Store</a> and the Windows <a href="http://social.zune.net/redirect?type=phoneApp&amp;id=fc4fb7b8-edda-df11-a844-00237de2db9e" target="_blank">Marketplace</a> (requires Zune unfortunately). Both are free of charge so feel free to try them out! By in large it has been a positive experience developing both applications.</p>
<p>Prior to this, I had no real experience developing applications on a mac, using Xcode or writing Objective-c. Once I got over the C# to Objective-c transition and understood the basic paradigms of the development framework I was quite productive in creating the iPhone version of the application. I have been a mac user for a long time (really since I was a kid) so the OS is familiar to me and I intuitively understand the UX. The API and maturity of the iOS SDK is really very impressive and the 311 application fit very well into what the platform was designed to do. I actually created the iPhone app first (as Windows Phone 7 was just a rumor at this time) so it was a good exercise to have to think in another language. I think the one thing that I struggled with the most was memory management specifically around the didReceiveMemoryWarning and viewDidUnload paradigm. Debugging programs and understanding errors in Xcode is kinda like taking a step back in time when you are used to Visual Studio and .net development. The maturity of the iOS platform also means that you have to deal with supporting multiple devices and multiple versions of the operating system along with new devices like the iPad which have a different form factor and require a different set of graphics. All that said, it was quite pleasurable developing on my mac and the speed of the iPhone simulator is a breath of fresh air after using the WM emulator. The tools felt lightweight, high performing and easy to work with. I even dove in and did some of the graphic design for the internal menu icons and status bubbles.</p>
<p>Submitting to the App Store was really no big deal. Instructions to properly build and sign your application were straightforward. The only thing that bites me each time is that I chose to have a space in my application&#8217;s name &#8220;Mobile 311&#8243; and this seems to be a continued source of  problems when uploading to the Store (there are workarounds &#8211; comment if you are interested).</p>
<p>On the Windows Phone side of things we were lucky enough to be on the white list for applications that came out with the release of the physical phone. The Microsoft stack is really where Blue Dot feels at home and the development experience on the Windows Phone was very impressive (especially since I was basically working on a pre-release tool set and a version 1.0 product with limited access to real devices and all the other interesting things that come with being an early adopter). I must say that Microsoft was very supportive in this process, even providing consulting resources when necessary (although most of my issues were resolved by waiting for the next release of the tools). Development for Windows Phone applications is done in Visual Studio 2010 and in C# &amp; Silverlight. I had never done any WPF or Silverlight development before, but the ramp up was pretty easy and I must say that it is a huge improvement over WinForms development. Visual Studio is a truly first class development environment and VS 2010 only raises the bar. The new wp7 emulator is fantastic (MS obviously took a page from Apple&#8217;s book here) &#8211; it loads very quickly and makes it easy to develop and debug your application. I struggled a little bit with things like the camera functionality (which does not work on the emulator) and understanding how the Task system works. It is really nice not to have to worry about memory management and the debugging tools are far superior to those in Xcode. Overall, it was very fun to re-create this application in another tool set/environment. I tried to make the app feel like a windows phone app and not an iPhone port and was pretty happy with how things turned out.</p>
<p>Submitting to the Marketplace was a very similar process to App Store submittal. The only thing that annoys me here is that the Marketplace holds all sorts of other stuff (not just phone apps) and you can only view things in the store you have Zune installed.</p>
<p>We are considering creating apps for the other leading smartphone operating systems, but until that happens I also created a <a href="http://mobile311.cloudapp.net/m" target="_blank">mobile optimized web site</a> that is reachable by any browser for submitting service request. Obviously there is no way to use things like GPS, but you can still submit requests to the system.</p>
<p>Finally, all of the server components are now up and running in <a href="http://www.microsoft.com/windowsazure/" target="_blank">Windows Azure</a>, which is Microsoft&#8217;s cloud OS. Our server is architect-ed in a way that it can run both in a traditional hosted model and on Azure. The difference between our 311 system and some of the other offerings right now is that we are pre-integrated into some of the major ERP systems that cities already use to mange service requests. And by having our infrastructure in Azure we can offer a data stream to anyone without them having to purchase and provision servers or worry about physically infrastructure.</p>
<p>Go check out the apps! <a href="http://itunes.apple.com/us/app/mobile-311/id377887590?mt=8" target="_blank">iPhone</a>, <a href="http://social.zune.net/redirect?type=phoneApp&amp;id=fc4fb7b8-edda-df11-a844-00237de2db9e" target="_blank">Windows Phone</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timclem.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timclem.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timclem.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timclem.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timclem.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timclem.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timclem.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timclem.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timclem.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timclem.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timclem.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timclem.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timclem.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timclem.wordpress.com/258/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timclem.wordpress.com&amp;blog=8340878&amp;post=258&amp;subd=timclem&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://timclem.wordpress.com/2010/12/14/mobile-311/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2f4861b27dc35663ed271d39f5358261?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timclem</media:title>
		</media:content>
	</item>
		<item>
		<title>Reflector Woes</title>
		<link>http://timclem.wordpress.com/2010/05/07/reflector-woes/</link>
		<comments>http://timclem.wordpress.com/2010/05/07/reflector-woes/#comments</comments>
		<pubDate>Fri, 07 May 2010 16:00:23 +0000</pubDate>
		<dc:creator>Tim Clem</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://timclem.wordpress.com/?p=254</guid>
		<description><![CDATA[Reflector has gone south. Lutz Roeder recently passed ownership of this free Utility to Red Gate Software and the new Reflector under Red Gate&#8217;s direction sucks big time. The first annoyance is that the auto update feature forces you to go get Red Gate&#8217;s version. You run reflector and it says: This version of .NET [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timclem.wordpress.com&amp;blog=8340878&amp;post=254&amp;subd=timclem&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Reflector has gone south.</p>
<p>Lutz Roeder recently passed ownership of this free Utility to Red Gate Software and the new Reflector under Red Gate&#8217;s direction sucks big time. The first annoyance is that the auto update feature forces you to go get Red Gate&#8217;s version. You run reflector and it says:</p>
<blockquote><p>This version of .NET Reflector is out of date. Do you want to update automatically?</p></blockquote>
<p>It used to be if you said &#8216;No&#8217; you&#8217;d just get to run the version you already have. Now the program just quits. No Reflector for you! If you say &#8216;Yes&#8217; you are alerted that Reflector cannot be automatically updated and that you need to go to the Red Gate site to download the new version. Brilliant, now I&#8217;ve completely lost the context of what i was using Reflector for in the first place, the auto update appears to be purposely broken, and I need to do a manual install of the new version to even be able to use Reflector again. And because I&#8217;m running reflector via TDD.NET&#8217;s VS plugin I have to go searching my hard drive for where the actually reflector exe is located (C:\Users\&lt;username&gt;\AppData\Roaming\Mutant Design\TestDriven.NET 2.0\Reflector if you are interested).</p>
<p>And that&#8217;s not the end of it. Once you do get the new version installed you get dragged into a trial of the &#8216;Pro&#8217; version which has VS integration and all sorts of fancy features. The problem with this we realized a few days later and after a lot of hair pulling is that it massively slows down .NET CF builds. Once you open a visual designer in a .NET CF project the new &#8216;Pro Reflector&#8217; is doing something crazy in the background that takes a long time (30-40 seconds) causing your build times to sky rocket and the <a href="http://xkcd.com/303/" target="_blank">hallway sword fights</a> to commence. Thanks to my friend AB for figuring all that out after disabling each of his VS plugins one by one to sort out the issue.</p>
<p>I used to recommend this tool to everyone, but with Red Gate at the wheel, I&#8217;m not so sure anymore. Anyone know of some alternatives? I miss Lutz&#8217;s version.</p>
<p>Seems like I&#8217;m not the only one with this gripe:</p>
<p><a href="http://wiert.wordpress.com/2010/04/06/net-reflector-catch-22/" target="_blank">http://wiert.wordpress.com/2010/04/06/net-reflector-catch-22/<br />
</a><a href="http://apps.red-gate.com/messageboard/viewtopic.php?p=27756&amp;sid=daab8e6756fbb5ce571073443d41a71c" target="_blank">http://apps.red-gate.com/messageboard/viewtopic.php?p=27756&amp;sid=daab8e6756fbb5ce571073443d41a71c</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timclem.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timclem.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timclem.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timclem.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timclem.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timclem.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timclem.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timclem.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timclem.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timclem.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timclem.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timclem.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timclem.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timclem.wordpress.com/254/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timclem.wordpress.com&amp;blog=8340878&amp;post=254&amp;subd=timclem&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://timclem.wordpress.com/2010/05/07/reflector-woes/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2f4861b27dc35663ed271d39f5358261?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timclem</media:title>
		</media:content>
	</item>
		<item>
		<title>erlang: off and running</title>
		<link>http://timclem.wordpress.com/2010/04/13/erlang-off-and-running/</link>
		<comments>http://timclem.wordpress.com/2010/04/13/erlang-off-and-running/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 03:27:04 +0000</pubDate>
		<dc:creator>Tim Clem</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://timclem.wordpress.com/?p=237</guid>
		<description><![CDATA[I&#8217;ve been reading through Armstrong&#8217;s book about Erlang as I mentioned last week, and decided to actually get my hands dirty and write some code. One the suggested exercises in the book is to write a ring benchmark program where you create a ring of N process and pass a message around that ring M times. The [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timclem.wordpress.com&amp;blog=8340878&amp;post=237&amp;subd=timclem&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been reading through Armstrong&#8217;s <a href="http://www.pragprog.com/titles/jaerlang/programming-erlang">book</a> about Erlang as I mentioned last week, and decided to actually get my hands dirty and write some code. One the suggested exercises in the book is to write a ring benchmark program where you create a ring of N process and pass a message around that ring M times. The program should accept different values of N and M to vary both the number of processes in the ring and the number of times the message is passed around the ring. I decided I was going to do this both in Erlang and then in C# (which I&#8217;m much more experienced in) and compare both the code and some performance metrics.</p>
<p>I started writing the erlang program first because I wanted to try and solve the problem from an Erlang perspective and I though it would be interesting to try and think in a new language. Now, no laughing at my code, this is literally the first Erlang program I&#8217;ve ever written and I&#8217;m sure there are ways to improve this. Here is what the code looks like: (<a href="http://gist.github.com/365370#file_ring.erl">link to gist</a>)<br />
<a href="http://timclem.files.wordpress.com/2010/04/screen-shot-2010-04-13-at-8-34-09-pm.png"><img class="size-full wp-image-241 alignnone" title="ring.erl in Erlang" src="http://timclem.files.wordpress.com/2010/04/screen-shot-2010-04-13-at-8-34-09-pm.png?w=600&#038;h=548" alt="" width="600" height="548" /></a></p>
<p>About 39 lines of code including white space and a couple of commented out lines. Next, I attempted to solve this same problem in C# and here is where I need to give some disclaimers and caveats. I knew going into this that there was no way that directly creating threads in C# was going to compete with the lightweight erlang processes. However, creating a solution that overcame this hurdle was a bit outside what I was trying to accomplish here so my end implementation in C# actually creates a thread for each node and uses and AutoResetEvent to provide a locking mechanism that allows the very basic passing of a message from one node to the next. I am sure there are issues with this, but here&#8217;s what I came up with. Actually the program is so much larger that it is hard to capture in a screen shot so here is a <a href="http://gist.github.com/365370#file_ring.cs">link to the gist</a> if you want to see it in a better format. All in all it is about 140 lines including whitespace and my default C# formatting that I have setup with my Reshaper profile.</p>
<p><a href="http://timclem.files.wordpress.com/2010/04/screen-shot-2010-04-13-at-8-46-53-pm.png"><img class="alignnone size-full wp-image-243" title="ring.cs C#-1" src="http://timclem.files.wordpress.com/2010/04/screen-shot-2010-04-13-at-8-46-53-pm.png?w=582&#038;h=295" alt="" width="582" height="295" /></a></p>
<p><a href="http://timclem.files.wordpress.com/2010/04/screen-shot-2010-04-13-at-8-48-37-pm.png"><img class="alignnone size-full wp-image-244" title="ring.cs C#-2" src="http://timclem.files.wordpress.com/2010/04/screen-shot-2010-04-13-at-8-48-37-pm.png?w=600&#038;h=863" alt="" width="600" height="863" /></a></p>
<p><a href="http://timclem.files.wordpress.com/2010/04/screen-shot-2010-04-13-at-8-50-15-pm.png"><img class="alignnone size-full wp-image-245" title="ring.cs C#-3" src="http://timclem.files.wordpress.com/2010/04/screen-shot-2010-04-13-at-8-50-15-pm.png?w=600&#038;h=831" alt="" width="600" height="831" /></a></p>
<p><a href="http://timclem.files.wordpress.com/2010/04/screen-shot-2010-04-13-at-8-50-27-pm.png"><img class="alignnone size-full wp-image-246" title="ring.cs C#-4" src="http://timclem.files.wordpress.com/2010/04/screen-shot-2010-04-13-at-8-50-27-pm.png?w=150&#038;h=90" alt="" width="150" height="90" /></a></p>
<p>Now for some metrics! I&#8217;ll just present the basics here and you can run things on your own if you are curious. Just for the record, I took all these measurements on my Dell desktop (Windows 7 64bit, Xeon dual core 2.0 GHz, 8 GB RAM) although I did actually develop the erlang program on my mac (which was even faster than what I&#8217;m showing below).</p>
<p><a href="http://timclem.files.wordpress.com/2010/04/screen-shot-2010-04-13-at-8-54-45-pm.png"><img class="alignnone size-full wp-image-247" title="erlang metrics" src="http://timclem.files.wordpress.com/2010/04/screen-shot-2010-04-13-at-8-54-45-pm.png?w=600&#038;h=400" alt="" width="600" height="400" /></a></p>
<p><a href="http://timclem.files.wordpress.com/2010/04/screen-shot-2010-04-13-at-8-57-17-pm.png"><img class="alignnone size-full wp-image-248" title="C# ring metrics" src="http://timclem.files.wordpress.com/2010/04/screen-shot-2010-04-13-at-8-57-17-pm.png?w=600&#038;h=401" alt="" width="600" height="401" /></a></p>
<p>Just a few words of explanation here. For the Erlang program, I wasn&#8217;t even able to measure a time in milliseconds until I got above 500 nodes in the process ring which is why there are no values there. The times for 10-100 nodes are in the microsecond range and aren&#8217;t worth showing on these graphs. For the C# program I started get OutOfMemory Exceptions when I got above 1000 nodes which is obviously due to the overhead of having 1 thread / node. Because of this there is no data beyond 1000 nodes. You can see that there is a massive difference between these two implementations even at the levels where the data does cross over. Creating 1000 processes in Erlang and passing a message around all 1000 processes 10 times took about 16 ms. Doing the same thing with threads in C# took almost 25 seconds.</p>
<p>If I were to spend more time with the C# program I could move to using the thread pool instead of discrete threads, and doing a better job of simulating message passing. However, the point is that Erlang has these ideas of concurrency built into the language constructs whereas in C# I&#8217;d have to create my own infrastructure to support similar features.</p>
<p>My last word on all this is about the difference between writing programs in the two languages. I uses Visual Studio and C# day in and day out, so writing that program wasn&#8217;t particularly difficult (plus I did it after solving the problem already once in Erlang). I do feel like programming in C# is often like writing a novel. The tools and intellisense are nice, but there is SO much typing that you have to do to get things done. Lots of files, lots of classes, many lines of codes. Even with intellisense, I often feel like my thoughts race ahead of what my fingers (and especially visual studio) are capable of doing. As much as I like VS, I do wait on it a lot.</p>
<p>I wrote my Erlang program in Emacs, which is a completely new editor for me (and fun to learn new key bindings after knowing vi, textmate and VS bindings) and it felt more like writing a piece of poetry than a novel. I though hard about the problem and the code I was writing, but did very little typing. Part of my slowness is obviously a lack of experience with the language, but in the end I felt like the language itself led me to solving the problem in a very koan like way.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timclem.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timclem.wordpress.com/237/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timclem.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timclem.wordpress.com/237/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timclem.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timclem.wordpress.com/237/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timclem.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timclem.wordpress.com/237/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timclem.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timclem.wordpress.com/237/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timclem.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timclem.wordpress.com/237/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timclem.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timclem.wordpress.com/237/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=timclem.wordpress.com&amp;blog=8340878&amp;post=237&amp;subd=timclem&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://timclem.wordpress.com/2010/04/13/erlang-off-and-running/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2f4861b27dc35663ed271d39f5358261?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timclem</media:title>
		</media:content>

		<media:content url="http://timclem.files.wordpress.com/2010/04/screen-shot-2010-04-13-at-8-34-09-pm.png" medium="image">
			<media:title type="html">ring.erl in Erlang</media:title>
		</media:content>

		<media:content url="http://timclem.files.wordpress.com/2010/04/screen-shot-2010-04-13-at-8-46-53-pm.png" medium="image">
			<media:title type="html">ring.cs C#-1</media:title>
		</media:content>

		<media:content url="http://timclem.files.wordpress.com/2010/04/screen-shot-2010-04-13-at-8-48-37-pm.png" medium="image">
			<media:title type="html">ring.cs C#-2</media:title>
		</media:content>

		<media:content url="http://timclem.files.wordpress.com/2010/04/screen-shot-2010-04-13-at-8-50-15-pm.png" medium="image">
			<media:title type="html">ring.cs C#-3</media:title>
		</media:content>

		<media:content url="http://timclem.files.wordpress.com/2010/04/screen-shot-2010-04-13-at-8-50-27-pm.png" medium="image">
			<media:title type="html">ring.cs C#-4</media:title>
		</media:content>

		<media:content url="http://timclem.files.wordpress.com/2010/04/screen-shot-2010-04-13-at-8-54-45-pm.png" medium="image">
			<media:title type="html">erlang metrics</media:title>
		</media:content>

		<media:content url="http://timclem.files.wordpress.com/2010/04/screen-shot-2010-04-13-at-8-57-17-pm.png" medium="image">
			<media:title type="html">C# ring metrics</media:title>
		</media:content>
	</item>
	</channel>
</rss>
