<?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>Stephen Huenneke&#039;s Blog</title>
	<atom:link href="http://sdh.skarilla.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://sdh.skarilla.com</link>
	<description>Thoughts on traveling, software development and other assorted topics.</description>
	<lastBuildDate>Thu, 02 Feb 2012 16:31:32 +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>I hate my TODO list</title>
		<link>http://sdh.skarilla.com/2012/02/i-hate-my-todo-list/</link>
		<comments>http://sdh.skarilla.com/2012/02/i-hate-my-todo-list/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 16:31:32 +0000</pubDate>
		<dc:creator>skastel</dc:creator>
				<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://sdh.skarilla.com/?p=99</guid>
		<description><![CDATA[There it sits, with three things on it: Call Ryan Email Mom Go get prints framed And every time I look at it, I avoid it.  It&#8217;s not like these are complicated, deep-thinking, back-breaking kind of issues.  They&#8217;re just reminders &#8230; <a href="http://sdh.skarilla.com/2012/02/i-hate-my-todo-list/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>There it sits, with three things on it:</p>
<ul>
<li>Call Ryan</li>
<li>Email Mom</li>
<li>Go get prints framed</li>
</ul>
<p>And every time I look at it, I avoid it.  It&#8217;s not like these are complicated, deep-thinking, back-breaking kind of issues.  They&#8217;re just reminders to do some basic things that tend to slip through the crack when I spend all day in front of a computer reading or writing or staring at cat pictures.  Yet I still can&#8217;t help but reimagine these simple, and sometimes enjoyable tasks, as homework assignments.  The curse of the internet is the allure of the &#8220;new&#8221; just around every corner.  Oh a new Clojure article? Did Crockford give another interview about speed vs. readability in modern JavaScript? Did a new ROM for my phone come out?</p>
<p>Once in a while I&#8217;m able to construct a todo list and not view it as an assault on my personal freedom to do what I want, when I want.  Those few times I feel I&#8217;ve truly dedicated myself to the tasks at hand, so it seems fruitless to have expended the energy of making the list at all.  I would have been hard at work regardless of the piece of paper with little scribbles on it.  Maybe I&#8217;ll start doing this regularly and it will become more natural, but I&#8217;m not overly optimistic since it means the first item at the top of my mental todo list every day will be &#8220;write todo list for today.&#8221; I think I&#8217;ll do that after I have coffee and catch up on any funny cat pictures I missed.</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=I+hate+my+TODO+list+http%3A%2F%2Fsdh.skarilla.com%2F%3Fp%3D99" title="Post to Twitter"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=I+hate+my+TODO+list+http%3A%2F%2Fsdh.skarilla.com%2F%3Fp%3D99" title="Post to Twitter">Tweet This</a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://sdh.skarilla.com/2012/02/i-hate-my-todo-list/&amp;t=I+hate+my+TODO+list" title="Post to Facebook"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://sdh.skarilla.com/2012/02/i-hate-my-todo-list/&amp;t=I+hate+my+TODO+list" title="Post to Facebook">Post to Facebook</a> <a target="_blank" rel="nofollow" class="tt" href="http://reddit.com/submit?url=http://sdh.skarilla.com/2012/02/i-hate-my-todo-list/&amp;title=I+hate+my+TODO+list" title="Post to Reddit"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/reddit/tt-reddit.png" alt="Post to Reddit" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://reddit.com/submit?url=http://sdh.skarilla.com/2012/02/i-hate-my-todo-list/&amp;title=I+hate+my+TODO+list" title="Post to Reddit">Post to Reddit</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://sdh.skarilla.com/2012/02/i-hate-my-todo-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The foggy season has arrived</title>
		<link>http://sdh.skarilla.com/2011/12/the-foggy-season-has-arrived/</link>
		<comments>http://sdh.skarilla.com/2011/12/the-foggy-season-has-arrived/#comments</comments>
		<pubDate>Sat, 31 Dec 2011 16:00:08 +0000</pubDate>
		<dc:creator>skastel</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://sdh.skarilla.com/?p=84</guid>
		<description><![CDATA[Tweet This Post to Facebook Post to Reddit]]></description>
			<content:encoded><![CDATA[<div id="attachment_89" class="wp-caption alignnone" style="width: 650px"><a href="http://sdh.skarilla.com/blog/wp-content/uploads/2011/12/instamatic-fog.jpg"><img class="size-large wp-image-89" title="instamatic-fog" src="http://sdh.skarilla.com/blog/wp-content/uploads/2011/12/instamatic-fog-1024x681.jpg" alt="instamatic camera in front of foggy background" width="640" height="425" /></a><p class="wp-caption-text">The fog is getting denser every morning</p></div>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=The+foggy+season+has+arrived+http%3A%2F%2Fsdh.skarilla.com%2F%3Fp%3D84" title="Post to Twitter"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=The+foggy+season+has+arrived+http%3A%2F%2Fsdh.skarilla.com%2F%3Fp%3D84" title="Post to Twitter">Tweet This</a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://sdh.skarilla.com/2011/12/the-foggy-season-has-arrived/&amp;t=The+foggy+season+has+arrived" title="Post to Facebook"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://sdh.skarilla.com/2011/12/the-foggy-season-has-arrived/&amp;t=The+foggy+season+has+arrived" title="Post to Facebook">Post to Facebook</a> <a target="_blank" rel="nofollow" class="tt" href="http://reddit.com/submit?url=http://sdh.skarilla.com/2011/12/the-foggy-season-has-arrived/&amp;title=The+foggy+season+has+arrived" title="Post to Reddit"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/reddit/tt-reddit.png" alt="Post to Reddit" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://reddit.com/submit?url=http://sdh.skarilla.com/2011/12/the-foggy-season-has-arrived/&amp;title=The+foggy+season+has+arrived" title="Post to Reddit">Post to Reddit</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://sdh.skarilla.com/2011/12/the-foggy-season-has-arrived/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Technical Austerity</title>
		<link>http://sdh.skarilla.com/2011/12/technical-austerity/</link>
		<comments>http://sdh.skarilla.com/2011/12/technical-austerity/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 16:00:40 +0000</pubDate>
		<dc:creator>skastel</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://sdh.skarilla.com/?p=65</guid>
		<description><![CDATA[I&#8217;ve been reading a lot of economics articles recently and have been thinking about our current debt crisis. From a Keynesian perspective, the government should be heavily investing anywhere it can to offset the lack of private investment. The politically &#8230; <a href="http://sdh.skarilla.com/2011/12/technical-austerity/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been reading a lot of economics articles recently and have been thinking about our current debt crisis. From a Keynesian perspective, the government should be heavily investing anywhere it can to offset the lack of private investment. The politically popular austerity movements in Europe and the US argue that the fundamental problem is lack of savings, and that higher deficits will not raise short-term demand, but bring long term ruin to these economies. Macroeconomic policy is way to complex of a topic for me to comment on, but I can say a thing or two about Technical Debt and the investment parallel.</p>
<p>Technical Debt, unlike personal debt, is essentially something your organization owes its future self. Much like government savings bonds purchsed during WWII to finance infrastructure and military buildup, you promise your future self that you&#8217;ll do some amount of work in exchange for cutting a corner now. When you look at it not as something the developers are borrowing from someone else, but as something you&#8217;re borrowing from yourself, you have to weight it accordingly. There will always be hidden or unexpected costs for having taken the easy way out of some problem, but at least take the time to carefully consider the known problems you&#8217;ll likely face. So what happens when you&#8217;re faced with insurmountable debt?</p>
<p>The parallel for crushing personal debt is declaring bankruptcy, but is this the right approach? Bankruptcy, in this case, means a rewrite. Maybe not ground up, but it does mean you&#8217;ll face a lot of second system problems. Rewrites are so alluring to developers, managers and pretty much everyone. However, they also strand your current product in its current state. If you intend to keep updating the old product, while you build a new replacement, you&#8217;ll have to saddle a bunch of your developers, probably some of your best ones, with the <em>enviable</em> task of maintaining a dying code base. One that you&#8217;ve decided is so bad that it&#8217;s unrecoverable and isn&#8217;t worth trying to fix. Truly, these engineers you&#8217;ve assigned this task will be grateful for the opportunity to &#8220;just keep the lights on&#8221; while other teams tackle building the replacement.</p>
<p>The other option is to hunker down and fix bugs. No new features until X bugs have been fixed. No more critical path bugs, no more middle of the night downtime, etc. Usually, management will declare this as the stated goal, and it sounds like such a miserable existence because it is. In the financial parallel, we think of it as the individual paying themselves out of debt month by month. In reality it&#8217;s more like a stagnant national economy which isn&#8217;t investing in itself. Remember, you owe yourself this time to do things right. Fixing bugs on an individual level isn&#8217;t the same as repaying your technical debt. Say you took a shortcut somewhere and built a quick version of a message system to keep two in-house systems in sync. In time, you needed to generalize it, but due to constraints you had to just copy/paste configuration files and code between projects without really abstracting things neatly.</p>
<p>Another aspect of long-term debt is that over time inflation rises can decrease the real burden of debt. If your one-off message bus turned out to be built for a feature users didn&#8217;t want in the end, it can die, and your debt is absolved painlessly. You saved the effort, accrued debt and over time, it became trivial that you had accumulated it. Technical debt matters most in high-interest scenarios, e.g. your core products and the libraries that comprise them.</p>
<p>What do you think, have you accumulated meaningful debt? Can you pay down your debt by dropping features that aren&#8217;t used or necessary? Or is it time to set aside resources and engineers for reinvestment to offset your debt?</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Technical+Austerity+http%3A%2F%2Fsdh.skarilla.com%2F%3Fp%3D65" title="Post to Twitter"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Technical+Austerity+http%3A%2F%2Fsdh.skarilla.com%2F%3Fp%3D65" title="Post to Twitter">Tweet This</a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://sdh.skarilla.com/2011/12/technical-austerity/&amp;t=Technical+Austerity" title="Post to Facebook"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://sdh.skarilla.com/2011/12/technical-austerity/&amp;t=Technical+Austerity" title="Post to Facebook">Post to Facebook</a> <a target="_blank" rel="nofollow" class="tt" href="http://reddit.com/submit?url=http://sdh.skarilla.com/2011/12/technical-austerity/&amp;title=Technical+Austerity" title="Post to Reddit"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/reddit/tt-reddit.png" alt="Post to Reddit" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://reddit.com/submit?url=http://sdh.skarilla.com/2011/12/technical-austerity/&amp;title=Technical+Austerity" title="Post to Reddit">Post to Reddit</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://sdh.skarilla.com/2011/12/technical-austerity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why I love (and hate) working from home</title>
		<link>http://sdh.skarilla.com/2011/11/why-i-love-and-hate-working-from-home/</link>
		<comments>http://sdh.skarilla.com/2011/11/why-i-love-and-hate-working-from-home/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 01:19:14 +0000</pubDate>
		<dc:creator>skastel</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://sdh.skarilla.com/?p=72</guid>
		<description><![CDATA[Since moving to San Francisco a few months ago I&#8217;ve been working out of my house. It&#8217;s pretty awesome, I have done it once before for an extended period of time so I kind of know my way around the &#8230; <a href="http://sdh.skarilla.com/2011/11/why-i-love-and-hate-working-from-home/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Since moving to San Francisco a few months ago I&#8217;ve been working out of my house. It&#8217;s pretty awesome, I have done it once before for an extended period of time so I kind of know my way around the home office thing.  You need to setup routines, get out occaisionally, and generally dedicate some time to stepping away from work to keep yourself sane. This time has been more difficult because it&#8217;s coincided with a <a title="Cross country adventure" href="http://sdh.skarilla.com/2011/08/cross-country-adventure/">cross-country move</a>, which brought its own set of challenges. Now that the dust has settled and the boxes are unpacked I&#8217;ve fallen into a pretty good routine. Of course, extended periods of WFH time result in little joys and annoyances that may not surface when you spend a day a week in the home office. Here&#8217;s just a few of my favorites.</p>
<ul>
<li><strong>You (completely) control your environment</strong><br />
This is one of the things I love most about working from home. You can throw that new LP you wanted to listen to (I&#8217;m a big fan of vinyl, which you can&#8217;t lug to an office). The temperature is too cold? Turn up the heat a little. You don&#8217;t like the shirt you&#8217;re wearing today? Go change. Of course, this also means that you can easily end up being drawn into one after another thing to get yourself settled. I can easily spend an hour making coffee, taking a shower, shaving, getting dressed and milling around the house before I actually sit down and start working. So you have to learn to block out the home distractions same as the office distractions.</li>
<li><strong>No one bothers you</strong><br />
There&#8217;s probably not as many people in your house as a typical office during the daytime. This lack of people results in the surprisingly easy ability to work, uninterrupted, for hours at a time. No one bugs you to go get coffee, or to tell you about their new kitten, or  how adorable their kid was last night in the school play.  These distractions are there in the workplace, all the time, and you can&#8217;t avoid them entirely unless you&#8217;re physically absent. Once you go a few weeks without this forced interaction you&#8217;ll be so psyched at your productivity increase, but you may find yourself somewhat unable to cope with these basic distractions when you do go into an office or other busy environment. Force yourself to get out and go to a coffee shop or coworking space to get that base level of social interaction that we all require to function like human beings!</li>
<li><strong>Insane productivity</strong><br />
Getting into the The Zone is difficult in an office, but at home it can be really easy. You&#8217;re comfortable, you know your surroundings well, and you can concentrate and really focus like nowhere else.  Then all of a sudden you&#8217;re done. Not done in the way you are at the end of the day at work. You&#8217;re really done, you&#8217;ve burned through two or three days worth of work in an hour and a half. Now you need to get the next thing done. Sure there&#8217;s always more work, but I always find myself uninspired to move on to the next thing when my brain is still so fully focused on the last thing.</li>
<li><strong>You chose what you pay attention</strong><br />
Procrastination really is lurking around every corner at your house. Instead of getting to those emails, why not play with the cat for a while? Maybe make an epic sandwich for an early lunch? How about watching that TV show you recorded last week? It&#8217;s all waiting for you the moment you stop trying to get work done. Your awesome productivity can nicely offset this danger, but it sucks when you realize you wasted half your day waiting to get started because you just didn&#8217;t feel like really paying attention to anything work-related.</li>
</ul>
<p>In general, I feel like it&#8217;s an uphill battle and you have to really pay attention to what you&#8217;re doing and how on or off task you are. It doesn&#8217;t mean you have to be working every moment of the day. The productivity boost means you can actually relax and take a nap, or actually watch that TV show you recorded last week. But if you aren&#8217;t aware of what you&#8217;re doing, you&#8217;ll quickly see your time slip away and you&#8217;ll have just spent the day in your pajamas watching all the episodes of BBC&#8217;s The Prisoner back-to-back&#8230;not that there&#8217;s anything wrong with that.</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Why+I+love+%28and+hate%29+working+from+home+http%3A%2F%2Fsdh.skarilla.com%2F%3Fp%3D72" title="Post to Twitter"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Why+I+love+%28and+hate%29+working+from+home+http%3A%2F%2Fsdh.skarilla.com%2F%3Fp%3D72" title="Post to Twitter">Tweet This</a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://sdh.skarilla.com/2011/11/why-i-love-and-hate-working-from-home/&amp;t=Why+I+love+%28and+hate%29+working+from+home" title="Post to Facebook"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://sdh.skarilla.com/2011/11/why-i-love-and-hate-working-from-home/&amp;t=Why+I+love+%28and+hate%29+working+from+home" title="Post to Facebook">Post to Facebook</a> <a target="_blank" rel="nofollow" class="tt" href="http://reddit.com/submit?url=http://sdh.skarilla.com/2011/11/why-i-love-and-hate-working-from-home/&amp;title=Why+I+love+%28and+hate%29+working+from+home" title="Post to Reddit"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/reddit/tt-reddit.png" alt="Post to Reddit" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://reddit.com/submit?url=http://sdh.skarilla.com/2011/11/why-i-love-and-hate-working-from-home/&amp;title=Why+I+love+%28and+hate%29+working+from+home" title="Post to Reddit">Post to Reddit</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://sdh.skarilla.com/2011/11/why-i-love-and-hate-working-from-home/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test Driven Refactoring</title>
		<link>http://sdh.skarilla.com/2011/10/test-driven-refactoring/</link>
		<comments>http://sdh.skarilla.com/2011/10/test-driven-refactoring/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 20:54:24 +0000</pubDate>
		<dc:creator>skastel</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://sdh.skarilla.com/?p=67</guid>
		<description><![CDATA[I was working on refactoring and updating some code that was written by another team of developers today and eventually found myself in the whack-a-mole cycle of &#8220;Commit-Ship to QA-Find Bugs-Commit&#8221; for a few iterations. The project had unit tests, &#8230; <a href="http://sdh.skarilla.com/2011/10/test-driven-refactoring/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was working on refactoring and updating some code that was written by another team of developers today and eventually found myself in the whack-a-mole cycle of &#8220;Commit-Ship to QA-Find Bugs-Commit&#8221; for a few iterations. The project had unit tests, but they somehow didn&#8217;t cover the cases that were coming up after a few shared methods signatures had changed. I realized that through the (correct at the time) use of mock objects to get tests working at all, the tests had managed to diverge from its actual runtime behavior. It&#8217;s not just the responsibility of the initial developers to write unit tests to verify their work, it should be the responsibility of everyone who works on a project. You&#8217;ll never get perfect coverage, but if you keep it up to date, and enforce that tests must pass for the project to ship, you might have a chance at keep your code maintainable!</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Test+Driven+Refactoring+http%3A%2F%2Fsdh.skarilla.com%2F%3Fp%3D67" title="Post to Twitter"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Test+Driven+Refactoring+http%3A%2F%2Fsdh.skarilla.com%2F%3Fp%3D67" title="Post to Twitter">Tweet This</a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://sdh.skarilla.com/2011/10/test-driven-refactoring/&amp;t=Test+Driven+Refactoring" title="Post to Facebook"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://sdh.skarilla.com/2011/10/test-driven-refactoring/&amp;t=Test+Driven+Refactoring" title="Post to Facebook">Post to Facebook</a> <a target="_blank" rel="nofollow" class="tt" href="http://reddit.com/submit?url=http://sdh.skarilla.com/2011/10/test-driven-refactoring/&amp;title=Test+Driven+Refactoring" title="Post to Reddit"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/reddit/tt-reddit.png" alt="Post to Reddit" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://reddit.com/submit?url=http://sdh.skarilla.com/2011/10/test-driven-refactoring/&amp;title=Test+Driven+Refactoring" title="Post to Reddit">Post to Reddit</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://sdh.skarilla.com/2011/10/test-driven-refactoring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Finding an apartment is even harder than they said</title>
		<link>http://sdh.skarilla.com/2011/08/finding-an-apartment-is-even-harder-than-they-said/</link>
		<comments>http://sdh.skarilla.com/2011/08/finding-an-apartment-is-even-harder-than-they-said/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 15:27:52 +0000</pubDate>
		<dc:creator>skastel</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://sdh.skarilla.com/?p=61</guid>
		<description><![CDATA[Back in June I attended O&#8217;Reilly Velocity in San Jose and on the first night amidst all the great Ignite talks, there was one titled &#8220;How to find a place to live in San Francisco&#8220;.  As with most Ignite talks, it &#8230; <a href="http://sdh.skarilla.com/2011/08/finding-an-apartment-is-even-harder-than-they-said/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Back in June I attended <a href="http://velocityconf.com/velocity2011">O&#8217;Reilly Velocity</a> in San Jose and on the first night amidst all the great Ignite talks, there was one titled &#8220;<a href="http://velocityconf.com/velocity2011/public/schedule/detail/21116">How to find a place to live in San Francisco</a>&#8220;.  As with most Ignite talks, it was fast paced, witty and actually offered some meaningful (if slightly sarcastic) advice on the topic. His summary: bring every piece of info about yourself and a deposit check and just pray you get the place, not exactly uplifting, but I figured this was hyperbole for the sake of entertainment on the presenter&#8217;s part. By that point both my employer and I knew I was moving out here and my girlfriend and I had started the daily ritual of combing through apartment listings on craigslist to imagine our lives out here.</p>
<p>Fast forward to July, my girlfriend and I have been constantly trolling craigslist and we&#8217;re finally ready to pack it up and make the move happen.  We have temporary residence with relatives outside San Francisco proper, but that&#8217;s temporary.  So we start putting open houses on the calendar, and we&#8217;re both excited at the prospect of finding our dream apartment in our dream city. Oh to be young(er) and naive(also -er)!</p>
<p>Turns out, there&#8217;s a <strong>LOT</strong> of other people also trying to get apartments around here!  We were early for a few different showings and each time, the place was rented within 15minutes.  We started to become a big dejected.  Looking at apartments we didn&#8217;t like was becoming a necessity because at least the possibility of a home was there, even if it wasn&#8217;t perfect.  I think the lowest moment was after we&#8217;d been looking for about 10 days, been to a couple of showings in one day and all of them were in big, uncharming buildings with crappy hallways and they had all been cattle calls.  50+ people showed for a 15min look at an apartment in the Valencia corridor in the Mission.  All had checkbooks and pre-filled applications.  The place was probably rented before we event made it up to the apartment to look.</p>
<p>A few days later we see an *amazing* apartment come up on craigslist.  We email minutes after its posted (as did almost 100 other people we later found out).  But we were the first, and the man leasing the flat turned out to be rather principled and fair!  So we saw the apartment (bringing of course, all our credit history, pay stubs, bank info, mortgage statements, DNA profile, family criminal history, proof of residency, proof of whateveryouwantjustgiveusthisapartmentplease). It was worth it, we were prepared and on the cusp of full-throttle desperation we convinced the owner to allow us, our two cats and our rabbit to all move in starting in September!</p>
<p><a href="http://sdh.skarilla.com/blog/wp-content/uploads/2011/08/kitchen.jpg"><img class="alignnone size-medium wp-image-62 aligncenter" title="Our New Kitchen" src="http://sdh.skarilla.com/blog/wp-content/uploads/2011/08/kitchen-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>So a few weeks and a lot of awful apartments and one glimmer of hope at the end of it all can lead you to your dream apartment in San Francisco, but patience and hard work are probably the only real tips other than be prepared I can offer.  Good luck, it&#8217;s a jungle out there.</p>
<p>&nbsp;</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Finding+an+apartment+is+even+harder+than+they+said+http%3A%2F%2Fsdh.skarilla.com%2F%3Fp%3D61" title="Post to Twitter"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Finding+an+apartment+is+even+harder+than+they+said+http%3A%2F%2Fsdh.skarilla.com%2F%3Fp%3D61" title="Post to Twitter">Tweet This</a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://sdh.skarilla.com/2011/08/finding-an-apartment-is-even-harder-than-they-said/&amp;t=Finding+an+apartment+is+even+harder+than+they+said" title="Post to Facebook"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://sdh.skarilla.com/2011/08/finding-an-apartment-is-even-harder-than-they-said/&amp;t=Finding+an+apartment+is+even+harder+than+they+said" title="Post to Facebook">Post to Facebook</a> <a target="_blank" rel="nofollow" class="tt" href="http://reddit.com/submit?url=http://sdh.skarilla.com/2011/08/finding-an-apartment-is-even-harder-than-they-said/&amp;title=Finding+an+apartment+is+even+harder+than+they+said" title="Post to Reddit"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/reddit/tt-reddit.png" alt="Post to Reddit" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://reddit.com/submit?url=http://sdh.skarilla.com/2011/08/finding-an-apartment-is-even-harder-than-they-said/&amp;title=Finding+an+apartment+is+even+harder+than+they+said" title="Post to Reddit">Post to Reddit</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://sdh.skarilla.com/2011/08/finding-an-apartment-is-even-harder-than-they-said/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cross country adventure</title>
		<link>http://sdh.skarilla.com/2011/08/cross-country-adventure/</link>
		<comments>http://sdh.skarilla.com/2011/08/cross-country-adventure/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 22:20:22 +0000</pubDate>
		<dc:creator>skastel</dc:creator>
				<category><![CDATA[Moving]]></category>
		<category><![CDATA[driving]]></category>
		<category><![CDATA[moving]]></category>
		<category><![CDATA[road trip]]></category>

		<guid isPermaLink="false">http://sdh.skarilla.com/?p=57</guid>
		<description><![CDATA[My lovely girlfriend and I have made it to California!  We did it Cannonball Run style, three days of driving 18+ hours.  A few stops for food, gas and bathrooms each day.  One less-than enjoyable motel in Illinois, and one &#8230; <a href="http://sdh.skarilla.com/2011/08/cross-country-adventure/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>My lovely girlfriend and I have made it to California!  We did it <a href="http://www.imdb.com/title/tt0082136/">Cannonball Run</a> style, three days of driving 18+ hours.  A few stops for food, gas and bathrooms each day.  One less-than enjoyable motel in Illinois, and one rather nice, cheap hotel in Wyoming.  Lots of beautiful scenery and some really cool transitions.</p>
<p>Quick stats:</p>
<ul>
<li>3210 miles in three days</li>
<li>~140 gallons of gas</li>
<li>23mpg average</li>
<li>63 mph average</li>
</ul>
<p>Now on to the actual apartment search.  We&#8217;re staying outside the city until we actually find a spot, but we&#8217;re going to start blitzing open houses with all the piles of required documentation (employment letter, credit history, paystubs, rental app, blood type, recent personal internet usage history, etc).</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Cross+country+adventure+http%3A%2F%2Fsdh.skarilla.com%2F%3Fp%3D57" title="Post to Twitter"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Cross+country+adventure+http%3A%2F%2Fsdh.skarilla.com%2F%3Fp%3D57" title="Post to Twitter">Tweet This</a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://sdh.skarilla.com/2011/08/cross-country-adventure/&amp;t=Cross+country+adventure" title="Post to Facebook"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://sdh.skarilla.com/2011/08/cross-country-adventure/&amp;t=Cross+country+adventure" title="Post to Facebook">Post to Facebook</a> <a target="_blank" rel="nofollow" class="tt" href="http://reddit.com/submit?url=http://sdh.skarilla.com/2011/08/cross-country-adventure/&amp;title=Cross+country+adventure" title="Post to Reddit"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/reddit/tt-reddit.png" alt="Post to Reddit" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://reddit.com/submit?url=http://sdh.skarilla.com/2011/08/cross-country-adventure/&amp;title=Cross+country+adventure" title="Post to Reddit">Post to Reddit</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://sdh.skarilla.com/2011/08/cross-country-adventure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moving across the country</title>
		<link>http://sdh.skarilla.com/2011/06/moving-across-the-country/</link>
		<comments>http://sdh.skarilla.com/2011/06/moving-across-the-country/#comments</comments>
		<pubDate>Tue, 07 Jun 2011 01:19:58 +0000</pubDate>
		<dc:creator>skastel</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[moving]]></category>
		<category><![CDATA[san francisco]]></category>

		<guid isPermaLink="false">http://sdh.skarilla.com/?p=55</guid>
		<description><![CDATA[Expect some rather exciting and nerve wracking updates coming in the next few months as my lovely girlfriend, our two cats and of course our ever-dignified rabbit move across the country! I&#8217;m from the Cambridge area and have lived here &#8230; <a href="http://sdh.skarilla.com/2011/06/moving-across-the-country/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Expect some rather exciting and nerve wracking updates coming in the next few months as my lovely girlfriend, our two cats and of course our ever-dignified rabbit move across the country! I&#8217;m from the Cambridge area and have lived here pretty much my entire life and am quite excited to find new favorite coffee shops, new secret spots to explore and most of all, to finally get a chance to experience year-round wonderful weather. We&#8217;ll be keeping our jobs at HubSpot while moving and will be looking for coworking spaces once we get out there, but for now, the focus is on renting our condo, finding a place in San Francisco (Noe Valley or Mission ideally) and packing up all of our things.</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Moving+across+the+country+http%3A%2F%2Fsdh.skarilla.com%2F%3Fp%3D55" title="Post to Twitter"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Moving+across+the+country+http%3A%2F%2Fsdh.skarilla.com%2F%3Fp%3D55" title="Post to Twitter">Tweet This</a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://sdh.skarilla.com/2011/06/moving-across-the-country/&amp;t=Moving+across+the+country" title="Post to Facebook"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://sdh.skarilla.com/2011/06/moving-across-the-country/&amp;t=Moving+across+the+country" title="Post to Facebook">Post to Facebook</a> <a target="_blank" rel="nofollow" class="tt" href="http://reddit.com/submit?url=http://sdh.skarilla.com/2011/06/moving-across-the-country/&amp;title=Moving+across+the+country" title="Post to Reddit"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/reddit/tt-reddit.png" alt="Post to Reddit" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://reddit.com/submit?url=http://sdh.skarilla.com/2011/06/moving-across-the-country/&amp;title=Moving+across+the+country" title="Post to Reddit">Post to Reddit</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://sdh.skarilla.com/2011/06/moving-across-the-country/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fearlessness is a good thing, sometimes.</title>
		<link>http://sdh.skarilla.com/2011/05/fearlessness-is-a-good-thing-sometimes/</link>
		<comments>http://sdh.skarilla.com/2011/05/fearlessness-is-a-good-thing-sometimes/#comments</comments>
		<pubDate>Tue, 31 May 2011 11:16:58 +0000</pubDate>
		<dc:creator>skastel</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rewrite]]></category>

		<guid isPermaLink="false">http://sdh.skarilla.com/?p=40</guid>
		<description><![CDATA[In the world of startups the short deadlines and shifting business requirements seem to result in some pretty gnarly code in your organization&#8217;s repository. Eventually, you&#8217;ll have the unfortunate task of adding a feature or fixing a bug in this &#8230; <a href="http://sdh.skarilla.com/2011/05/fearlessness-is-a-good-thing-sometimes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In the world of startups the short deadlines and shifting business requirements seem to result in some pretty gnarly code in your organization&#8217;s repository. Eventually, you&#8217;ll have the unfortunate task of adding a feature or fixing a bug in this code. If you&#8217;re really unfortunate, you&#8217;ll either have never worked on said code, or only worked on it a long time ago. Every place I&#8217;ve worked at has <em>that code.</em> It&#8217;s something that turned out to be a critical, but somewhat static piece of the product. There&#8217;s a lot of manifestations of this: it&#8217;s written in a different language than the current standard, or it&#8217;s using old conventions, or it&#8217;s just written by a more naive or rushed programmer (e.g. yourself, a few years previous).  When you look at it you just know it&#8217;s wrong. Every time someone opens up these files, they sigh quietly to themselves and try to do as little damage as possible and get out of there as quickly and quietly as possible. The fear of making this critical piece of software break overpowers every good programmer&#8217;s urges to fix it. Your task, should you chose to accept it, is to stop being afraid and start fixing things.</p>
<p>First, take the opportunity to learn more about the code you&#8217;re trying to fix. Maybe it&#8217;s got that weird syntax for a reason, or maybe you&#8217;re processing some funky legacy data. Ask around for help (or try to remember why you wrote it) and you might suddenly find that it&#8217;s not broken at all. Look at old commits to your source control repo (you always write useful check-in messages right?). If the logic behind the weird/bad/ugly code turns out to be missing entirely, you might find that it&#8217;s just bad code because everyone is afraid to fix it. That&#8217;s the cue to dig in and set things right.</p>
<p>Refactor the existing code by splitting big methods up into smaller ones.  Introduce new classes and files to fix broken patterns, but try to leave the existing logic in place where that important business logic is handled. Add comments explaining the code as you see it and more importantly, find our who wrote it (<em>svn blame</em> ftw) and what they intended it to do. Along the way introduce some sane(r) unit tests to actually verify that your code is a drop-in replacement for the existing one. Once you&#8217;ve made the world a saner place, you can confidently add that new feature or fix that bug. Best of all, you&#8217;ve left it a little better than when you got there. Being a good programmer is often about being a good citizen, and your source code is your community. If you don&#8217;t pick up the trash, then who will?</p>
<p>The biggest victory this brings about is that you&#8217;ll better understand the intricacies of your product and you&#8217;ll have more maintainable and understandable code. This will pay dividends well past the current project or the next few sprints and help improve velocity for anyone touching this code. Most importantly, it tears down imagined barriers that prevent good developers from fixing problems they know about. So don&#8217;t be afraid to do the right thing, especially if you have unit tests to back you up <img src='http://sdh.skarilla.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Fearlessness+is+a+good+thing%2C+sometimes.+http%3A%2F%2Fsdh.skarilla.com%2F%3Fp%3D40" title="Post to Twitter"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Fearlessness+is+a+good+thing%2C+sometimes.+http%3A%2F%2Fsdh.skarilla.com%2F%3Fp%3D40" title="Post to Twitter">Tweet This</a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://sdh.skarilla.com/2011/05/fearlessness-is-a-good-thing-sometimes/&amp;t=Fearlessness+is+a+good+thing%2C+sometimes." title="Post to Facebook"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://sdh.skarilla.com/2011/05/fearlessness-is-a-good-thing-sometimes/&amp;t=Fearlessness+is+a+good+thing%2C+sometimes." title="Post to Facebook">Post to Facebook</a> <a target="_blank" rel="nofollow" class="tt" href="http://reddit.com/submit?url=http://sdh.skarilla.com/2011/05/fearlessness-is-a-good-thing-sometimes/&amp;title=Fearlessness+is+a+good+thing%2C+sometimes." title="Post to Reddit"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/reddit/tt-reddit.png" alt="Post to Reddit" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://reddit.com/submit?url=http://sdh.skarilla.com/2011/05/fearlessness-is-a-good-thing-sometimes/&amp;title=Fearlessness+is+a+good+thing%2C+sometimes." title="Post to Reddit">Post to Reddit</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://sdh.skarilla.com/2011/05/fearlessness-is-a-good-thing-sometimes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building scalable data systems</title>
		<link>http://sdh.skarilla.com/2011/05/building-scalable-data-systems/</link>
		<comments>http://sdh.skarilla.com/2011/05/building-scalable-data-systems/#comments</comments>
		<pubDate>Mon, 23 May 2011 00:51:54 +0000</pubDate>
		<dc:creator>skastel</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[databases]]></category>
		<category><![CDATA[scalable systems]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[system design]]></category>

		<guid isPermaLink="false">http://sdh.skarilla.com/?p=34</guid>
		<description><![CDATA[In my tenure at HubSpot I&#8217;ve been on teams that have built and rebuilt various data systems and every time we&#8217;ve tried to construct &#8220;scalable&#8221; solutions. We&#8217;ve hit the mark on some projects and been wildly off on others. I&#8217;m on &#8230; <a href="http://sdh.skarilla.com/2011/05/building-scalable-data-systems/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In my tenure at <a title="HubSpot - Inbound Marketing Software" href="http://www.hubspot.com/">HubSpot</a> I&#8217;ve been on teams that have built and rebuilt various data systems and every time we&#8217;ve tried to construct &#8220;scalable&#8221; solutions. We&#8217;ve hit the mark on some projects and been wildly off on others. I&#8217;m on another such project and a few things I&#8217;ve learned seemed important enough to share, or at least write down to remind myself later.</p>
<p><strong>Make an API</strong>. Whether you&#8217;re creating a new <a title="Representational State Transfer" href="http://en.wikipedia.org/wiki/Representational_State_Transfer" target="_blank">REST</a>ful HTTP service or using <a title="Protocol Buffers" href="http://code.google.com/p/protobuf/" target="_blank">ProtoBuf</a>/<a title="Apache Thrift" href="http://thrift.apache.org/" target="_blank">Thrift</a> it&#8217;s worth it to put a layer between your raw data source and your consumers. By creating a layer between your consumers and your data system, you can insulate client code from all sorts of issues related to data management.  You can add cache layers, shard databases, even switch the entire data storage system behind the API while the client stays blissfully unmodified. All of these things put you on the hook for making a fast and reliable API, but the benefits of being able to swap moving parts behind the scenes are invaluable. Furthermore, by making an API for your data, you also make it easier for other developers (internal and external) to make use of your data. Internal consumers will be able to build tighter integration between systems within your product(s). External developers can start to use your systems data to build plugins and add-ons that add value for your customers in ways you hadn&#8217;t thought of yet. Of course with all these other developers and teams accessing your data now&#8230;</p>
<p><strong>What you expect to happen is not what will happen.</strong> In rebuilding some other parts of the Lead storage system my team at also built a RESTful API to modify and retrieve lead data. We thought it would receive relatively moderate usage internally and very light usage externally. A pair of load-balanced tomcat servers could easily handle the 10,000 requests per day we were expecting. Instead we saw internal usage spike well over 100,000 requests in the first few weeks, forcing us to modify and add capacity to the &#8220;scalable&#8221; system in a variety of ways. Now over a year later we have over 200 HubSpot customers and dozens of internal customers tallying over 1 million requests and serving up a couple gigs worth of data per day. This isn&#8217;t what we had expected for this API, and as such it&#8217;s got a lot of rough edges, some which have been sanded down, others which still pose hazards to internal and external users.</p>
<p><strong>Over-engineering vs under-delivering</strong>. If your system takes a year to design and another to build a first version and its &#8220;infinitely&#8221; scalable, your business better be capable of making that investment and continuing to run in the meantime. If you&#8217;re like just about every other company smaller than Google or Microsoft, your development team can&#8217;t wait that long. Google&#8217;s <a title="BigTable Data System" href="http://labs.google.com/papers/bigtable.html">BigTable</a> is an amazing work of computer science and software engineering, but I doubt few established companies and even fewer startups can sustain the rest of their business while waiting on a team to deliver such an amazing work. The other side to the coin is under-delivering.  Designing to your current volume of traffic and requests is a sure way to waste your time.  At the very least plan for double, if not an order of magnitude more, requests/traffic/data than your current system sustains. If you&#8217;re building something entirely green field, consider what would happen if you opened up access to this data through an API layer to external developers. Would you see 10 requests per day? 100? 100,000? Think big enough to know that you won&#8217;t be up until 3am every night patching your system in a desperate attempt to keep it efficient and high-performing as usage grows.</p>
<p><span style="color: #000000;"><strong>Experiment to solve problems, not for the sake of experimenting</strong></span>. There&#8217;s so many cool new NoSQL or Key-Value data storage projects out now that want to replace your relational database. In the world of developing data-driven web applications, there are a lot of applications of this new technology. However, it doesn&#8217;t mean that every project is well suited for this model. Building an in-browser IM client? Key value stores sound like a great way to go for storing the messages for quick retrieval. Building a white-label inventory management console? It could still work ok, but you&#8217;re in the gray area. That new CRM for non-profit dog walking businesses? You&#8217;re sounding more like you&#8217;re in the relational model&#8217;s sweet spot. Shiny new things are shiny, and new, but many successful technologies are successful because they&#8217;ve been proven to work very well for a wide range of applications.</p>
<p>This is by no means the blueprint to successful data system design, its just the start of some guidelines I intend to use as I build new, bigger systems to replace the ones I&#8217;ve already built. We&#8217;re working on some awesome new stuff at HubSpot and I can&#8217;t wait to post more about what we build. I&#8217;m sure we&#8217;ll try some new stuff that won&#8217;t fit either because we don&#8217;t sufficiently understand it or because its ill suited for our data model. I&#8217;ll try keep this blog updated as we come across cool new findings (of which expect there will be many).</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Building+scalable+data+systems+http%3A%2F%2Fsdh.skarilla.com%2F%3Fp%3D34" title="Post to Twitter"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Building+scalable+data+systems+http%3A%2F%2Fsdh.skarilla.com%2F%3Fp%3D34" title="Post to Twitter">Tweet This</a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://sdh.skarilla.com/2011/05/building-scalable-data-systems/&amp;t=Building+scalable+data+systems" title="Post to Facebook"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook.png" alt="Post to Facebook" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://sdh.skarilla.com/2011/05/building-scalable-data-systems/&amp;t=Building+scalable+data+systems" title="Post to Facebook">Post to Facebook</a> <a target="_blank" rel="nofollow" class="tt" href="http://reddit.com/submit?url=http://sdh.skarilla.com/2011/05/building-scalable-data-systems/&amp;title=Building+scalable+data+systems" title="Post to Reddit"><img class="nothumb" src="http://sdh.skarilla.com/blog/wp-content/plugins/tweet-this/icons/en/reddit/tt-reddit.png" alt="Post to Reddit" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://reddit.com/submit?url=http://sdh.skarilla.com/2011/05/building-scalable-data-systems/&amp;title=Building+scalable+data+systems" title="Post to Reddit">Post to Reddit</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://sdh.skarilla.com/2011/05/building-scalable-data-systems/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

