<?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>zobie&#039;s blog &#187; Technology</title>
	<atom:link href="http://blog.zobie.com/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.zobie.com</link>
	<description>I create software, I like music and I&#039;m mildly(?) OCD.</description>
	<lastBuildDate>Thu, 13 Oct 2011 14:32:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>zVision is the future!</title>
		<link>http://blog.zobie.com/2011/10/zvision-is-the-future/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=zvision-is-the-future</link>
		<comments>http://blog.zobie.com/2011/10/zvision-is-the-future/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 14:27:33 +0000</pubDate>
		<dc:creator>zobie</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[saas]]></category>
		<category><![CDATA[soa]]></category>
		<category><![CDATA[srs]]></category>
		<category><![CDATA[srswp]]></category>

		<guid isPermaLink="false">http://blog.zobie.com/?p=258</guid>
		<description><![CDATA[This internal memo was sent to SRS Software this morning. The points are important enough that I wanted to cross-post here. Team, I know there has been a lot of frustration over the last year as we have been working on zVision, the web platform, and ReEn. The shift we are making takes us from [...]]]></description>
			<content:encoded><![CDATA[<p>This internal memo was sent to SRS Software this morning. The points are important enough that I wanted to cross-post here.<br />
</p>
<hr />
<br />
Team,</p>
<p>I know there has been a lot of frustration over the last year as we have been working on zVision, the web platform, and ReEn. The shift we are making takes us from creating products to the creation of a platform.</p>
<p>So far, most have only felt the pain of the transition and have not seen the advantages. I promise you that this transition will be worth the pain and frustration. We are on the cusp of realizing a payout and it will be huge!</p>
<p>A guy who worked at Amazon and is currently at Google recently posted what was intended to be an internal memo on this topic. <strong><em>Everyone should take time to study the attached memo (<a href="http://steverant.pen.io">http://steverant.pen.io</a>) and understand the points that are made.</em></strong></p>
<p>Here are a couple of threads where people are discussing Stevey’s memo that you may find useful:</p>
<ul>
<li><a href="https://plus.google.com/112678702228711889851/posts/eVeouesvaVX">https://plus.google.com/112678702228711889851/posts/eVeouesvaVX</a></li>
<li><a href="http://www.reddit.com/r/programming/comments/l9ehj/steves_google_platform_rant/">http://www.reddit.com/r/programming/comments/l9ehj/steves_google_platform_rant/</a></li>
</li>
</ul>
<p>I will continue to do everything I can to clearly communicate the amazing direction we are headed.</p>
<ul>
<li>zVision puts us at the forefront of the technology industry!</li>
<li>zVision is the platform we need to carry us for the next 10+ years!</li>
<li>zVision will give SRS the flexibility and agility to dominate in our chosen market!</li>
</li>
</ul>
<p>You are welcome to send me questions or comments privately. Alternatively, I have cross-posted this to my blog and you are also welcome to publically comment there.</p>
<ul>
<li><a href="http://blog.zobie.com">http://blog.zobie.com</a></li>
</ul>
<p>- Nate</p>
<p>Nate Zobrist | VP of Software Architecture<br />
Service Repair Solutions, Inc. — Revolutionizing the Delivery of Service and Repair&trade;</p>
<p>770 East Technology Avenue, Building F | Orem, Utah 84097<br />
Phone: (801) 437-5846 | Fax: (801) 437-5899 | Cell: (801) 788-4789<br />
www.servicerepairsolutions.com</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zobie.com/2011/10/zvision-is-the-future/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Creating Apps Should Be Trivial!</title>
		<link>http://blog.zobie.com/2011/09/creating-apps-should-be-trivial/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=creating-apps-should-be-trivial</link>
		<comments>http://blog.zobie.com/2011/09/creating-apps-should-be-trivial/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 21:07:43 +0000</pubDate>
		<dc:creator>zobie</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[archiecture]]></category>
		<category><![CDATA[soa]]></category>
		<category><![CDATA[srs]]></category>
		<category><![CDATA[srswp]]></category>

		<guid isPermaLink="false">http://blog.zobie.com/?p=243</guid>
		<description><![CDATA[At Dreamforce '11, a presentation I particularly enjoyed was given by Ryan Smith from Heroku. Titled Designing for the Cloud: The 12 Factor App, Ryan discussed some fundamental design patterns and practices that have made Heroku successful. An interesting analogy that was made compares applications to swiss army knives. The analogy is relevant to SRS [...]]]></description>
			<content:encoded><![CDATA[<p>At Dreamforce '11, a presentation I particularly enjoyed was given by <a href="http://twitter.com/ryandotsmith">Ryan Smith</a> from <a href="http://heroku.com">Heroku</a>. Titled <em><a href="https://dreamevent.my.salesforce.com/a093000000CeqeV">Designing for the Cloud: The 12 Factor App</a></em>, Ryan discussed some fundamental design patterns and practices that have made Heroku successful.</p>
<p>An interesting analogy that was made compares applications to swiss army knives. The analogy is relevant to SRS and provides a great visual depiction of the work we are doing as part of our SaaS and SRSWP initiatives.</p>
<p><img class="alignright" style="border-style: initial; border-color: initial; border-width: 0px;" src="http://blog.zobie.com/wp-content/uploads/2011/09/swiss_army_knife_giant.png" alt="swiss_army_knife_giant.png" width="250" height="185" border="0" />Historically our applications were designed as large, monolithic beasts. Like this knife, every feature that could be imagined was rolled into one of our flagship products. This design meant:</p>
<ul>
<li>Duplicated effort because there were no shared components between product lines.</li>
<li>Intense effort required to join the team due to the large, interconnected designs.</li>
<li>Even small changes were risky and had the potential of destabilizing anentire product.</li>
<li>Management of each product line required enormous effort to tightly coordinate development and release of new features.</li>
</ul>
<p><img class="alignright" style="border-style: initial; border-color: initial; border-width: 0px;" src="http://blog.zobie.com/wp-content/uploads/2011/09/swiss_army_classic.png" alt="swiss_army_classic.png" width="250" height="169" border="0" />Contrast that complexity with a design where:</p>
<ul>
<li>Components are small, independent apps that work together (like Linux tools).</li>
<li>Each component delivers specific functionality.</li>
<li>Touch points between components are<a href="http://blog.zobie.com/2011/09/contract-definition-and-stability">well-defined contracts</a>.</li>
</ul>
<p>The workflow enabled by this component-based architecture is truly liberating.</p>
<ul>
<li>Small teams (perhaps even a single-person team) can build on top of the shared platform to quickly create new products.
<ul>
<li>Most products do not need to worry about operational infrastructure, databases, etc.</li>
<li>Products can take advantage of shared services to quickly enable powerful features in innovative ways.</li>
<li>Products can tap into shared repositories of both customer-generated and catalog data.</li>
</ul>
</li>
<li>Existing products are simpler to maintain and introducing change is far less risky.
<ul>
<li>A smaller codebase means that the project is much easier to grok.</li>
<li>Well-defined contracts that have robust automated tests written against them mean that each component can be released independently with confidence.</li>
</ul>
</li>
<li>Teams can work more efficiently by choosing technologies and frameworks that are tailored to fit specific needs.
<ul>
<li>Using standards-compliant web services for an API means that apps written in Java, Ruby on Rails or Node.js can access shared services as easily as a legacy, .NET application.</li>
</ul>
</li>
</ul>
<p>Following a component-based approach will make the creation of new apps a trivial exercise. It will free us to focus on solving interesting problems rather than being bogged down by operational overhead. The quality of our offering will increase as we become much more responsive to customers.</p>
<p>Applying these principles means something different for each of our existing projects and teams. What remains to be done for your team to fully benefit from this component-based design? What new functionality would you like to see exposed by the SRSWP?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zobie.com/2011/09/creating-apps-should-be-trivial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trying to Close a Lingo Account: My Horror Story</title>
		<link>http://blog.zobie.com/2009/12/trying-to-close-a-lingo-account/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=trying-to-close-a-lingo-account</link>
		<comments>http://blog.zobie.com/2009/12/trying-to-close-a-lingo-account/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 19:37:56 +0000</pubDate>
		<dc:creator>zobie</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[incompetence]]></category>

		<guid isPermaLink="false">http://blog.zobie.com/?p=191</guid>
		<description><![CDATA[I used Lingo for a few years without any problem. I never had any reason to contact their customer support until deciding to cancel my account. Canceling my Lingo account was an absolute nightmare. In the end I spent nearly three hours on the phone before I was finally able to speak to someone who [...]]]></description>
			<content:encoded><![CDATA[<p>I used <a href="http://www.lingo.com/">Lingo</a> for a few years without any problem. I never had any reason to contact their customer support until deciding to cancel my account.</p>
<p>Canceling my Lingo account was an absolute nightmare. In the end I spent nearly three hours on the phone before I was finally able to speak to someone who would process the cancellation.</p>
<p>I never spoke to anyone in their Cancellation Department. Honestly, I'm not sure that that department has any employees. In the end it came down to a war of attrition. I had to wait on hold and complain vigorously enough that they finally decided I was serious about wanting to close the account.</p>
<p>Many companies understand that when a customer calls to cancel, they have an opportunity to save that account. After this dreadful experience not only will I refuse to do business with Lingo again, I'll tell everyone I can to avoid them like the plague.</p>
<p>Below is the log that I kept while trying to cancel my account. I've done a little grammatical cleanup from the notes I originally posted during the phone calls.</p>
<hr />
<p>Several weeks ago I made the decision to close my voip account with <a href="http://www.lingo.com/">Lingo</a> in favor of just using my cell phone. I got a new cell phone for my house and transferred my phone number from Lingo to my cell provider. Now I'm trying to cancel my Lingo service... what a joke. As I started writing this I'd been on hold for exactly one hour.</p>
<p><strong>Friday, December 17th:</strong></p>
<ul>
<li><strong>11:30am</strong> - I first called Lingo. I listen to the recorded message and navigate their menu system to talk to Customer Service.</li>
<li><strong>11:46am</strong> - I waited on hold for 16 minutes before talking to a guy who took my account information and put me back on hold.</li>
<li><strong>11:47a</strong> - He's going to transfer me to the cancellation department.</li>
<li><strong>11:52a</strong> - The guy asked for a callback number. The cancellation department is too busy to take my call. From the way that he is talking about it it sounds like the cancellation department is one person who is out to lunch. He said that someone would try to call me back in the next 48 hours. I told him that this was unacceptable because I don't want to continue paying for service that I'm not using. He's going to try again so I go back on hold.</li>
<li><strong>12:02p</strong> - He still can't transfer me because no one is available to take the call. I ask to speak to a manager and am placed back on hold.</li>
<li><strong>12:03p</strong> - The manager is too busy to speak to me. I tell guy that I'll hold for the manager.</li>
<li><strong>12:06p</strong> - I finally get to speak to a supervisor. I express frustration about this situation and ask what she can do to help. She is very nice but absolutely no help at all. She says that there is nothing she can do except continue trying to transfer my call. Because I have no other options, I agree.</li>
<li><strong>12:37p</strong> - I've been on this call for over an hour now and am still on hold. I should have used a landline for this call. This is chewing through my cell minutes.</li>
<li><strong>12:50p</strong> - Lingo wins this round. It's easy for me to sit on hold while I'm working at my desk but I have to go to a meeting. I am <em>extremely</em> frustrated!</li>
</ul>
<p><strong>December 22nd:</strong> my second attempt</p>
<ul>
<li><strong>9:09am</strong> - Called Lingo back. Went through their menu system and am on hold again.</li>
<li><strong>9:20a</strong> - got a recorded message saying that they are too busy to take my call and asking me to please call back during normal business hours. According to their website, they've been open for over two hours already today (Mon - Fri: 9AM - 9PM EST)... this is normal business hours!</li>
<li><strong>9:21a</strong> - I call back and am again placed on hold.</li>
<li><strong>9:33a</strong> - I got the recorded message again and was disconnected. I called back immediately. I really wish that their hold music had more than just one song being played over and over and over...</li>
</ul>
<p>Gotta love their "<a href="https://www.lingo.com/resources/jsp/terms_conditions.jsp" target="_blank">Terms and Conditions</a>":</p>
<blockquote><p>Cancellations will only be accepted via phone through Lingo’s Account Management Department at the toll-free number listed on the first page of your invoice, and will be effective upon the date that you cancel with a Lingo Account Management Representative. You will be given a cancellation confirmation number by the representative. Service cancellation requests by mail, e-mail, fax, equipment return, or any other form of non-telephonic communication requests will not be accepted.</p></blockquote>
<p>We only accept cancellations by phone. Also, we don't answer calls to that phone.</p>
<ul>
<li><strong>9:44a</strong> - Disconnected again. Called back again. I guess that their system is programmed to hang up on me every 11 minutes.</li>
<li><strong>9:55a</strong> - Disconnected again. Called back again. I guess that it's more likely that the system hangs up on me after being on hold for 10 minutes. The extra minute is probably just the time it takes me to call and get back in the queue.</li>
<li><strong>10:06a</strong> - Disconnected again. Called back again. At least I was smart enough to route the calls through Google Voice this time so I'm not using my cell's minutes.</li>
<li><strong>10:17a</strong> - Disconnected again. Calling back again. I think I'll try connecting to the billing department again (that's who I spoke with last Friday). They still put me on hold for the Cancellations Department but at least I didn't have to keep calling back.</li>
<li><strong>10:26a</strong> - Spoke to a Customer Support Representative. She verified my information and then put me back on hold. She gave me instructions on how to call back "just in case we're disconnected." What a joke.</li>
<li><strong>10:32a</strong> - a manager is on the line. She said that since I've been on hold for so long and since I had spoken to a manager on Friday that she would cancel the account for me. On Friday I was told that the manager I spoke with didn't have the authority to cancel an account. I don't understand her logic for finally accepting the cancellation but I really don't care. Just close this account! I asked her for a confirmation number and was put back on hold while she processes the cancellation.</li>
<li><strong>10:36a</strong> - The manager processed the account and I have just sent me an email with the cancellation confirmation. This process has been an absolute joke!</li>
</ul>
<p>The moral of this story: Don't signup for service with Lingo. It's not worth it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zobie.com/2009/12/trying-to-close-a-lingo-account/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing RMagick on Ubuntu 9.04 (Jaunty)</title>
		<link>http://blog.zobie.com/2009/07/installing-rmagick-on-ubuntu-904-jaunty/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installing-rmagick-on-ubuntu-904-jaunty</link>
		<comments>http://blog.zobie.com/2009/07/installing-rmagick-on-ubuntu-904-jaunty/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 06:41:36 +0000</pubDate>
		<dc:creator>zobie</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.zobie.com/?p=183</guid>
		<description><![CDATA[Installing the RMagick gem can be a huge headache. Reading the HOWTO on the RMagick site is enough to make anyone nervous. Thankfully the process is much easier on ubuntu however; you only need three commands. DISCLAIMER: I've only tested this on Ubuntu 9.04 (Jaunty) server. $ sudo aptitude install -y imagemagick $ sudo aptitude [...]]]></description>
			<content:encoded><![CDATA[<p>Installing the RMagick gem can be a huge headache. Reading the <a href="http://rmagick.rubyforge.org/install2-linux.html">HOWTO on the RMagick site</a> is enough to make anyone nervous. Thankfully the process is much easier on ubuntu however; you only need three commands.</p>
<p>DISCLAIMER: I've only tested this on Ubuntu 9.04 (Jaunty) server.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">aptitude</span> <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #660033;">-y</span> imagemagick
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">aptitude</span> <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #660033;">-y</span> libmagick9-dev
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> rmagick</pre></div></div>

<p>And you're done! You can verify the installation using this irb command, taken from the RMagick HOWTO:</p>

<div class="wp_syntax"><div class="code"><pre class="rails" style="font-family:monospace;">$ sudo irb <span style="color:#006600; font-weight:bold;">-</span>rubygems <span style="color:#006600; font-weight:bold;">-</span>r RMagick
irb<span style="color:#006600; font-weight:bold;">&#40;</span>main<span style="color:#006600; font-weight:bold;">&#41;</span>:001:<span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&gt;</span> <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#6666ff; font-weight:bold;">Magick::Long_version</span>
This is RMagick 2.10.0 <span style="color:#006600; font-weight:bold;">&#40;</span>$Date: <span style="color:#006666;">2009</span><span style="color:#006600; font-weight:bold;">/</span>06<span style="color:#006600; font-weight:bold;">/</span><span style="color:#006666;">19</span> <span style="color:#006666;">22</span>:07:05 $<span style="color:#006600; font-weight:bold;">&#41;</span> Copyright <span style="color:#006600; font-weight:bold;">&#40;</span>C<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006666;">2009</span> by Timothy P. <span style="color:#9900CC;">Hunter</span>
Built with ImageMagick 6.4.5 <span style="color:#006666;">2009</span><span style="color:#006600; font-weight:bold;">-</span>06<span style="color:#006600; font-weight:bold;">-</span>04 Q16 OpenMP http:<span style="color:#006600; font-weight:bold;">//</span>www.<span style="color:#9900CC;">imagemagick</span>.<span style="color:#9900CC;">org</span>
Built <span style="color:#9966CC; font-weight:bold;">for</span> ruby 1.8.7
Web page: http:<span style="color:#006600; font-weight:bold;">//</span>rmagick.<span style="color:#9900CC;">rubyforge</span>.<span style="color:#9900CC;">org</span>
Email: rmagick@rubyforge.<span style="color:#9900CC;">org</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0000FF; font-weight:bold;">nil</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.zobie.com/2009/07/installing-rmagick-on-ubuntu-904-jaunty/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Installing git on Ubuntu 9.04 (Jaunty)</title>
		<link>http://blog.zobie.com/2009/07/installing-git-on-ubuntu-904-jaunty/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installing-git-on-ubuntu-904-jaunty</link>
		<comments>http://blog.zobie.com/2009/07/installing-git-on-ubuntu-904-jaunty/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 00:06:47 +0000</pubDate>
		<dc:creator>zobie</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://blog.zobie.com/?p=179</guid>
		<description><![CDATA[Last night I was working on a new ubuntu 9.04 server on ec2 (it was ami-0d729464 from http://alestic.com if you're interested). Installing git via aptitude would have given me an older version so here's what I did. $ sudo apt-get build-dep git-core git-doc libssl-dev $ wget http://kernel.org/pub/software/scm/git/git-1.6.3.3.tar.gz $ tar -xzf git-1.6.3.3.tar.gz $ cd git-1.6.3.3/ $ [...]]]></description>
			<content:encoded><![CDATA[<p>Last night I was working on a new ubuntu 9.04 server on ec2 (it was ami-0d729464 from http://alestic.com if you're interested). Installing git via aptitude would have given me an older version so here's what I did.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> build-dep git-core git-doc libssl-dev
$ <span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>kernel.org<span style="color: #000000; font-weight: bold;">/</span>pub<span style="color: #000000; font-weight: bold;">/</span>software<span style="color: #000000; font-weight: bold;">/</span>scm<span style="color: #000000; font-weight: bold;">/</span>git<span style="color: #000000; font-weight: bold;">/</span>git-1.6.3.3.tar.gz
$ <span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xzf</span> git-1.6.3.3.tar.gz
$ <span style="color: #7a0874; font-weight: bold;">cd</span> git-1.6.3.3<span style="color: #000000; font-weight: bold;">/</span>
$ .<span style="color: #000000; font-weight: bold;">/</span>configure
$ <span style="color: #c20cb9; font-weight: bold;">make</span> all doc
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span> install-doc
$ <span style="color: #c20cb9; font-weight: bold;">git</span> <span style="color: #660033;">--version</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> version 1.6.3.3</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.zobie.com/2009/07/installing-git-on-ubuntu-904-jaunty/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Changing the default shell on iPhone</title>
		<link>http://blog.zobie.com/2009/05/changing-the-default-shell-on-iphone/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=changing-the-default-shell-on-iphone</link>
		<comments>http://blog.zobie.com/2009/05/changing-the-default-shell-on-iphone/#comments</comments>
		<pubDate>Tue, 12 May 2009 05:59:57 +0000</pubDate>
		<dc:creator>zobie</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://blog.zobie.com/?p=172</guid>
		<description><![CDATA[I wanted to change the default shell on my iPhone. Unfortunately chsh wasn't available. &#91;10:40&#93;&#91;root@iPhone:~&#93;$ chsh -bash: chsh: command not found I next thought to modify /etc/passwd but, according to the file's header, that's not going to help. &#91;10:41&#93;&#91;root@iPhone:~&#93;$ cat /etc/passwd # # 4.3BSD-compatable User Database # # Note that this file is not consulted [...]]]></description>
			<content:encoded><![CDATA[<p>I wanted to change the default shell on my iPhone. Unfortunately chsh wasn't available.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">10</span>:<span style="color: #000000;">40</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>iPhone:~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ <span style="color: #c20cb9; font-weight: bold;">chsh</span>
-bash: <span style="color: #c20cb9; font-weight: bold;">chsh</span>: <span style="color: #7a0874; font-weight: bold;">command</span> not found</pre></div></div>

<p>I next thought to modify <code>/etc/passwd</code> but, according to the file's header, that's not going to help.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">10</span>:<span style="color: #000000;">41</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>iPhone:~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ <span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">passwd</span> 
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># 4.3BSD-compatable User Database</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Note that this file is not consulted for login.</span>
<span style="color: #666666; font-style: italic;"># It only exisits for compatability with 4.3BSD utilities.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># This file is automatically re-written by various system utilities.</span>
<span style="color: #666666; font-style: italic;"># Do not edit this file.  Changes will be lost.</span>
<span style="color: #666666; font-style: italic;">#</span>
nobody:<span style="color: #000000; font-weight: bold;">*</span>:-<span style="color: #000000;">2</span>:-<span style="color: #000000;">2</span>:Unprivileged User:<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>empty:<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">false</span>
root:<span style="color: #000000; font-weight: bold;">*</span>:<span style="color: #000000;">0</span>:<span style="color: #000000;">0</span>:System Administrator:<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>root:<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">sh</span>
mobile:<span style="color: #000000; font-weight: bold;">*</span>:<span style="color: #000000;">501</span>:<span style="color: #000000;">501</span>:Mobile User:<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>mobile:<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">sh</span>
daemon:<span style="color: #000000; font-weight: bold;">*</span>:<span style="color: #000000;">1</span>:<span style="color: #000000;">1</span>:System Services:<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>root:<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">false</span>
_securityd:<span style="color: #000000; font-weight: bold;">*</span>:<span style="color: #000000;">64</span>:<span style="color: #000000;">64</span>:securityd:<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>empty:<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">false</span>
_mdnsresponder:<span style="color: #000000; font-weight: bold;">*</span>:<span style="color: #000000;">65</span>:<span style="color: #000000;">65</span>:mDNSResponder:<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>empty:<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">false</span>
_sshd:<span style="color: #000000; font-weight: bold;">*</span>:<span style="color: #000000;">75</span>:<span style="color: #000000;">75</span>:sshd Privilege separation:<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>empty:<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">false</span>
_unknown:<span style="color: #000000; font-weight: bold;">*</span>:<span style="color: #000000;">99</span>:<span style="color: #000000;">99</span>:Unknown User:<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>empty:<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">false</span></pre></div></div>

<p>Finally I found <code>/etc/master.passwd</code>. I just modified root and mobile to use <code>/bin/bash</code> instead of <code>/bin/sh</code> and on my next login I was using bash!</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">10</span>:<span style="color: #000000;">41</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>iPhone:~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ <span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>master.passwd 
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;"># User Database</span>
<span style="color: #666666; font-style: italic;"># </span>
<span style="color: #666666; font-style: italic;"># This file is the authoritative user database.</span>
<span style="color: #666666; font-style: italic;">##</span>
nobody:<span style="color: #000000; font-weight: bold;">*</span>:-<span style="color: #000000;">2</span>:-<span style="color: #000000;">2</span>::<span style="color: #000000;">0</span>:<span style="color: #000000;">0</span>:Unprivileged User:<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>empty:<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">false</span>
root:5IS3K.2i<span style="color: #000000; font-weight: bold;">/</span>ciLw:<span style="color: #000000;">0</span>:<span style="color: #000000;">0</span>::<span style="color: #000000;">0</span>:<span style="color: #000000;">0</span>:System Administrator:<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>root:<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">bash</span>
mobile:NhbBgPU3IOnek:<span style="color: #000000;">501</span>:<span style="color: #000000;">501</span>::<span style="color: #000000;">0</span>:<span style="color: #000000;">0</span>:Mobile User:<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>mobile:<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">bash</span>
daemon:<span style="color: #000000; font-weight: bold;">*</span>:<span style="color: #000000;">1</span>:<span style="color: #000000;">1</span>::<span style="color: #000000;">0</span>:<span style="color: #000000;">0</span>:System Services:<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>root:<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">false</span>
_securityd:<span style="color: #000000; font-weight: bold;">*</span>:<span style="color: #000000;">64</span>:<span style="color: #000000;">64</span>::<span style="color: #000000;">0</span>:<span style="color: #000000;">0</span>:securityd:<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>empty:<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">false</span>
_mdnsresponder:<span style="color: #000000; font-weight: bold;">*</span>:<span style="color: #000000;">65</span>:<span style="color: #000000;">65</span>::<span style="color: #000000;">0</span>:<span style="color: #000000;">0</span>:mDNSResponder:<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>empty:<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">false</span>
_sshd:<span style="color: #000000; font-weight: bold;">*</span>:<span style="color: #000000;">75</span>:<span style="color: #000000;">75</span>::<span style="color: #000000;">0</span>:<span style="color: #000000;">0</span>:sshd Privilege separation:<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>empty:<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">false</span>
_unknown:<span style="color: #000000; font-weight: bold;">*</span>:<span style="color: #000000;">99</span>:<span style="color: #000000;">99</span>::<span style="color: #000000;">0</span>:<span style="color: #000000;">0</span>:Unknown User:<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>empty:<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">false</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.zobie.com/2009/05/changing-the-default-shell-on-iphone/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Strange Crash in OS X: securityd</title>
		<link>http://blog.zobie.com/2009/03/strange-crash-in-os-x-securityd/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=strange-crash-in-os-x-securityd</link>
		<comments>http://blog.zobie.com/2009/03/strange-crash-in-os-x-securityd/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 05:52:32 +0000</pubDate>
		<dc:creator>zobie</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[crash]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://blog.zobie.com/?p=135</guid>
		<description><![CDATA[A few days ago my Mac started having problems. I would be in the middle of some task when it would suddenly refuse to launch any new applications. Whenever I tried to launch any app, it would bounce a few times in the dock then exit. As far as I could tell, any apps that [...]]]></description>
			<content:encoded><![CDATA[<p>A few days ago my Mac started having problems. I would be in the middle of some task when it would suddenly refuse to launch any new applications. Whenever I tried to launch any app, it would bounce a few times in the dock then exit.</p>
<p>As far as I could tell, any apps that were running when I got into this problem state would continue working fine. The OS would never completely freeze but I noticed that my CPU started being monopolized by CrashReporter. I tried killing that process but it would just immediately relaunch and peg the CPU again. I looked inside <code>/Library/Logs/CrashReporter/</code> and saw that a new crash log was being created about every three seconds. The crash logs were for many different applications but none of the stack traces was useful. I had trouble spotting a pattern to what might trigger the problem.</p>
<p>Once my box was in the bad state I tried to ssh in to see if I could gather any useful information. SSH would prompt me for a password but it always denied access saying that I had entered an invalid password.</p>
<p>The only way out of this state was to restart the machine. When I tried to reboot, OS X would successfully log out but then get stuck on a blue screen. I would see the indeterminate NSProgressIndicator for a few seconds then it would disappear for a few seconds then come back again. I was forced to power cycle the machine.</p>
<p>I finally noticed that when this problem occurred, the first crash log was always for securityd. <code>/Library/Logs/CrashReporter/securityd_2009-03-23-204700_macpro.crash</code>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">Process:         securityd <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">22</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
Path:            <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>securityd
Identifier:      securityd
Version:         ??? <span style="color: #7a0874; font-weight: bold;">&#40;</span>???<span style="color: #7a0874; font-weight: bold;">&#41;</span>
Code Type:       X86 <span style="color: #7a0874; font-weight: bold;">&#40;</span>Native<span style="color: #7a0874; font-weight: bold;">&#41;</span>
Parent Process:  launchd <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
Date<span style="color: #000000; font-weight: bold;">/</span>Time:       <span style="color: #000000;">2009</span>-03-<span style="color: #000000;">23</span> <span style="color: #000000;">20</span>:<span style="color: #000000;">47</span>:<span style="color: #000000;">00.211</span> <span style="color: #660033;">-0600</span>
OS Version:      Mac OS X 10.5.6 <span style="color: #7a0874; font-weight: bold;">&#40;</span>9G55<span style="color: #7a0874; font-weight: bold;">&#41;</span>
Report Version:  <span style="color: #000000;">6</span>
&nbsp;
Exception Type:  EXC_BAD_ACCESS <span style="color: #7a0874; font-weight: bold;">&#40;</span>SIGSEGV<span style="color: #7a0874; font-weight: bold;">&#41;</span>
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000001000000
Crashed Thread:  <span style="color: #000000;">0</span></pre></div></div>

<p>This information finally led me to the solution.
</p>
<p>The problem was that securityd would crash then any app that needed to authenticate was unable to do so. One newsgroup noted that the problem could be temporarily solved by relaunching the process:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ launchctl load <span style="color: #000000; font-weight: bold;">/</span>System<span style="color: #000000; font-weight: bold;">/</span>Library<span style="color: #000000; font-weight: bold;">/</span>LaunchDaemons<span style="color: #000000; font-weight: bold;">/</span>com.apple.securityd.plist</pre></div></div>

</p>
<p>After a bit more searching I found a permanent answer in a mailing list archive: <a href="http://lists.apple.com/archives/apple-cdsa/2008/Jul/msg00035.html" target="_blank">Keychain access crashing on SecKeychainFindGenericPassword</a>. The solution was incredibly simple (and completely unintuitive). I had to remove the file <code>/var/db/CodeEquivalenceDatabase</code> and reboot. That's it!</p>
<p><a href="http://lists.apple.com/archives/apple-cdsa/2008/Jul/msg00035.html" target="_blank">The thread</a> offers more details but basically, "that file [<code>/var/db/CodeEquivalenceDatabase</code>] has gotten corrupted and runs securityd into an endless memory-eating loop that (usually) ends up running your system out of memory and into the ground."</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zobie.com/2009/03/strange-crash-in-os-x-securityd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Seriously? Microsoft defends return to DRM</title>
		<link>http://blog.zobie.com/2009/01/seriously-microsoft-defends-return-to-drm/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=seriously-microsoft-defends-return-to-drm</link>
		<comments>http://blog.zobie.com/2009/01/seriously-microsoft-defends-return-to-drm/#comments</comments>
		<pubDate>Fri, 23 Jan 2009 03:52:55 +0000</pubDate>
		<dc:creator>zobie</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[incompetence]]></category>

		<guid isPermaLink="false">http://blog.zobie.com/?p=103</guid>
		<description><![CDATA[When I read "Microsoft defends return to DRM" I honestly thought the article was going to be a parody. As far as I'm concerned there are only two possible outcomes when sticking DRM on music: Your customers understand DRM and are frustrated because they have to waste time getting around the "protection." Your customers don't [...]]]></description>
			<content:encoded><![CDATA[<p>When I read "Microsoft defends return to DRM" I honestly thought the article was going to be a parody. As far as I'm concerned there are only two possible outcomes when sticking DRM on music:
<ol>
<li>Your customers understand DRM and are frustrated because they have to waste time getting around the "protection."</li>
<li>Your customers <em>don't</em> understand DRM and are mad because their music doesn't work the way it should.</li>
</ol>
<p>But as far as I can tell the article is legit. The answers were given by Hugh Griffiths, Head of Mobile at Microsoft UK. In retrospect he probably wishes that he had referred the interviewer to someone in the PR department.</p>
<p>Most surprisingly, Mr. Griffiths makes absolutely no attempt to spin DRM as being beneficial or to try to justify its use. You might want to read the <a href="http://www.pcpro.co.uk/news/245859/qa-microsoft-defends-return-to-drm.html">full article</a>, these are just a few things that jumped out at me.</p>
<blockquote><p><strong>Why has Microsoft gone back to DRM when the vast majority of music services have ditched it?</strong></p>
<p>It's a first step.</p>
</blockquote>
<p><strong>Translation:</strong> We've always been extremely forthright about our intentions to gain monopoly power over every aspect of your digital life. This plays a small part in that larger initiative.</p>
<blockquote><p>[Customers] certainly tell us that they like listening to music while they are out and about, on their mobile phones.</p>
</blockquote>
<p><strong>Translation:</strong> Everyone listens to music on iPods and we're not making any money from that.</p>
<blockquote><p><strong>What is your message to consumers - why should I come to you instead of Amazon or iTunes? What do you offer that none of your competitors do?</strong></p>
<p>There's a whole bunch of people who are very loyal to MSN on the web...</p>
</blockquote>
<p><strong>Translation:</strong> Being a monopoly has provided us with a butt-load of customers, most of whom aren't savvy enough to realize that there are options.</p>
<blockquote><p><strong>The fee for downloading tracks - £1.50 - is relatively high compared to 79p on iTunes and less than that on certain Amazon tracks. Why is that?</strong></p>
<p>We're constantly reviewing our pricing and if we feel this price point is incorrect, we'll look to amend it.</p>
</blockquote>
<p><strong>Translation:</strong> I just told you, our customers are <em>du-umb</em>! I'm pretty sure that we're going to raise the price to £3.00 after the first couple of weeks. We'll just explain that we need to charge more to cover the cost of... something. Our customers genuinely appreciate the opportunity to pay a premium.</p>
<blockquote><p><strong>If I buy these songs on your service - and they're locked to my phone - what happens when I upgrade my phone in six months' time?</strong></p>
<p>Well, I think you know the answer to that.</p>
</blockquote>
<p><strong>Translation:</strong> Yeah, we're screwing our customers. So what? I buy all my music from Amazon so it really doesn't affect me.</p>
<p>Seriously Microsoft? Seriously?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zobie.com/2009/01/seriously-microsoft-defends-return-to-drm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>So, you want to work for a startup?</title>
		<link>http://blog.zobie.com/2009/01/so-you-want-to-work-for-a-startup/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=so-you-want-to-work-for-a-startup</link>
		<comments>http://blog.zobie.com/2009/01/so-you-want-to-work-for-a-startup/#comments</comments>
		<pubDate>Sat, 17 Jan 2009 06:31:40 +0000</pubDate>
		<dc:creator>zobie</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[startup]]></category>

		<guid isPermaLink="false">http://blog.zobie.com/?p=97</guid>
		<description><![CDATA[I recently came across an interesting quote: The first thing that one needs to know when joining a startup is to understand how they work... make sure you understand what you are getting into. Here are some things to consider startups are not for the faint hearted startups are not a "get rich quick" scheme [...]]]></description>
			<content:encoded><![CDATA[<p>I recently came across an interesting quote:</p>
<blockquote><p>
The first thing that one needs to know when joining a startup is to understand how they work... make sure you understand what you are getting into. Here are some things to consider</p>
<ul>
<li>startups are not for the faint hearted</li>
<li>startups are not a "get rich quick" scheme</li>
<li>startups require sacrifices from everyone including you the candidate (pay/effort/etc)</li>
<li>if you put your heart &amp; soul and are part of the right team there is good chance you will succeed</li>
<li>success is not guaranteed, it has to be achieved!</li>
<li>remember its a journey, so if you are thinking about jumping ship often - dont even bother!</li>
<li>startups are a small community and if you play dirty the word WILL get around</li>
</ul>
<p><span style="text-align: right; display: block; width: 100%;"><a href="http://blog.taazza.com/2009/01/06/so-you-want-to-work-for-a-startup">Taazza newsroom</a>, January 6, 2009</span>
</p></blockquote>
<p>Some time ago I made an important discovery about myself: I love startups. I thrive in these fast paced environments. To me, participating in the design of a new product and creating the first iterations of the software is like a fix to a junkie. Working with new, cutting-edge technologies is exciting to me. It is exhilarating to interact with other intelligent people when we are all passionately fixated on achieving our mutual goal. It's awesome!</p>
<p>All that said, working at a startup company is definitely not for everyone. Be prepared for a few ups and a whole lot of downs. Be prepared to bet against the odds. It's fun to dream about a huge IPO but if that's your sole focus...</p>
<p>I'm not going to deny that a large payout would be great. But in the meantime, I'm content to enjoy the adventure. You should checkout <a href="http://blog.taazza.com/2009/01/06/so-you-want-to-work-for-a-startup">the full article</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zobie.com/2009/01/so-you-want-to-work-for-a-startup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What&#8217;s so great about git?</title>
		<link>http://blog.zobie.com/2009/01/whats-so-great-about-git/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=whats-so-great-about-git</link>
		<comments>http://blog.zobie.com/2009/01/whats-so-great-about-git/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 06:00:46 +0000</pubDate>
		<dc:creator>zobie</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[cvs]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://blog.zobie.com/?p=93</guid>
		<description><![CDATA[Over the last few days, I have been asked several times why I like git. Many explanations and detailed comparisons exist that discuss how git compares to other version control systems. I'm not going to try and duplicate any of that work. These are just some thoughts about features in git that allow me to [...]]]></description>
			<content:encoded><![CDATA[<p>Over the last few days, I have been asked several times why I like git. <a href="http://git-scm.com/about">Many</a> <a href="http://www.youtube.com/watch?v=4XpnKHJAok8">explanations</a> <a href="http://www.youtube.com/watch?v=8dhZ9BXQgc4">and</a> <a href="http://git.or.cz/gitwiki/GitSvnComparsion">detailed</a> <a href="http://whygitisbetterthanx.com">comparisons</a> exist that discuss how git compares to other version control systems. I'm not going to try and duplicate any of that work. These are just some thoughts about features in git that allow me to work more productively.</p>
<p>I didn't immediately grok git because it is fundamentally different from subversion. Subversion tracks the history of files whereas Git tracks the history of content. That difference may seem minor, but the shift brings a lot of flexibility. You can expect a small learning curve, but don't give up! If git works as well for you as it does for me, you will not want to go back to subversion.</p>
<p>So, what are my favorite things about git?</p>
<ul>
<li><strong>Branching:</strong> Coming from a CVS/SVN background, I didn't think git's "cheap branching" would matter to me. I am not exaggerating when I say that it has dramatically changed the way I work. Because branching and merging are so easy, I create a new branch for each feature or bug I'm working on. I am never tempted to check in broken code just because I want a checkpoint.</li>
<li><strong>The index:</strong> It is really nice to be able to just check in a portion of the changes in my code rather than having to commit the entire file.</li>
<li><strong>git stash:</strong> If I'm in the middle of some big change and need to fix a small bug, I can hide my outstanding changes, make the fix and restore my changes without a checkin.</li>
<li><strong>git rebase:</strong> Sometimes it is really handy to be able to rewrite history.</li>
<li><strong>Git is a <a href="http://en.wikipedia.org/wiki/Distributed_revision_control">DVCS</a>:</strong> My work isn't crippled when I am not connected to the network. I can check code in and out. I can branch and merge. I have a full history of the repository. Awesome!</li>
<li><strong>Very flexible workflow:</strong> With git I can push/pull to a central server like CVS or SVN. Alternatively, changes can bypass the server and be sent directly between working repositories.</li>
<li><strong>Git is fast:</strong> Neither CVS nor SVN come close to git's speed.</li>
</ul>
<p>Is git perfect? No. Off the top of my head, here are some things that I would really like to have in git:</p>
<ul>
<li><strong>git checkout -i:</strong> Sometimes I want to rollback a few changes in a file. I imagine this would work very similarly to 'git add -i'.</li>
<li><strong>git stash -i:</strong> Sometimes I only want to stash some of my changes. This too would work like 'git add -i'.</li>
<li><strong>Local tags:</strong> Local branches are great; local tagging would be too.</li>
<li><strong>Track empty directories:</strong> I understand why this doesn't currently happen, but it can be obnoxious.</li>
<li><strong>Comments on branches:</strong> It is easy to make a lot of branches but unless your branch names are super descriptive (and therefore super long), it is also easy to forget what each of them is for.</li>
<li><strong>Better/more documentation:</strong> In general I am able to find what I'm looking for, but I still don't know what the "fetch-all" in <code>git svn fetch --fetch-all</code> actually does.</li>
<li><strong>Windows support:</strong> Not that I've actually tried it, I've just heard that it doesn't work well.</li>
<li><strong>GUI options:</strong> Most of the time I work in the cli but sometimes a gui is more convienent. I've heard multiple people ask for a tool that would allow them to branch and tag without checking out code. <a href="http://www.kernel.org/pub/software/scm/git/docs/gitk.html">gitk</a> and <a href="http://wiki.github.com/pieter/gitx">gitx</a> just don't offer all the flexibility that some other tools do (e.g. <a href="http://www.wincvs.org/">WinCVS</a>, <a href="http://www.syntevo.com/smartsvn/">SmartSVN</a>, <a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a>, etc.).</li>
</ul>
<p>Why do you like (or hate) git?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zobie.com/2009/01/whats-so-great-about-git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

