<?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'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 write software, I like music and I'm mildly(?) OCD.</description>
	<lastBuildDate>Mon, 21 Dec 2009 19:02:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<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/</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 would [...]]]></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&#8217;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&#8217;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&#8217;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&#8217;m trying to cancel my Lingo service&#8230; what a joke. As I started writing this I&#8217;d been on hold for exactly one hour.</p>
<p><strong>Friday, December 17th:</strong></p>
<ul>
<li><strong>11:30am</strong> &#8211; 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> &#8211; 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> &#8211; He&#8217;s going to transfer me to the cancellation department.</li>
<li><strong>11:52a</strong> &#8211; 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&#8217;t want to continue paying for service that I&#8217;m not using. He&#8217;s going to try again so I go back on hold.</li>
<li><strong>12:02p</strong> &#8211; He still can&#8217;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> &#8211; The manager is too busy to speak to me. I tell guy that I&#8217;ll hold for the manager.</li>
<li><strong>12:06p</strong> &#8211; 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> &#8211; I&#8217;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> &#8211; Lingo wins this round. It&#8217;s easy for me to sit on hold while I&#8217;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> &#8211; Called Lingo back. Went through their menu system and am on hold again.</li>
<li><strong>9:20a</strong> &#8211; 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&#8217;ve been open for over two hours already today (Mon &#8211; Fri: 9AM &#8211; 9PM EST)&#8230; this is normal business hours!</li>
<li><strong>9:21a</strong> &#8211; I call back and am again placed on hold.</li>
<li><strong>9:33a</strong> &#8211; 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&#8230;</li>
</ul>
<p>Gotta love their &#8220;<a href="https://www.lingo.com/resources/jsp/terms_conditions.jsp" target="_blank">Terms and Conditions</a>&#8220;:</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&#8217;t answer calls to that phone.</p>
<ul>
<li><strong>9:44a</strong> &#8211; 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> &#8211; Disconnected again. Called back again. I guess that it&#8217;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> &#8211; Disconnected again. Called back again. At least I was smart enough to route the calls through Google Voice this time so I&#8217;m not using my cell&#8217;s minutes.</li>
<li><strong>10:17a</strong> &#8211; Disconnected again. Calling back again. I think I&#8217;ll try connecting to the billing department again (that&#8217;s who I spoke with last Friday). They still put me on hold for the Cancellations Department but at least I didn&#8217;t have to keep calling back.</li>
<li><strong>10:26a</strong> &#8211; 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 &#8220;just in case we&#8217;re disconnected.&#8221; What a joke.</li>
<li><strong>10:32a</strong> &#8211; a manager is on the line. She said that since I&#8217;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&#8217;t have the authority to cancel an account. I don&#8217;t understand her logic for finally accepting the cancellation but I really don&#8217;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> &#8211; 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&#8217;t signup for service with Lingo. It&#8217;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/</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&#8217;ve only tested this on Ubuntu 9.04 (Jaunty) server.

$ sudo aptitude install -y imagemagick
$ sudo aptitude install -y libmagick9-dev
$ [...]]]></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&#8217;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&#8217;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>3</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/</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&#8217;re interested). Installing git via aptitude would have given me an older version so here&#8217;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/
$ ./configure
$ make all doc
$ sudo [...]]]></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&#8217;re interested). Installing git via aptitude would have given me an older version so here&#8217;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
$ git <span style="color: #660033;">--version</span>
git 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>9</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/</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&#8217;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&#8217;s header, that&#8217;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 for login.
# It only exisits for compatability [...]]]></description>
			<content:encoded><![CDATA[<p>I wanted to change the default shell on my iPhone. Unfortunately chsh wasn&#8217;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&#8217;s header, that&#8217;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>1</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/</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 were [...]]]></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&#8217;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, &#8220;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.&#8221;</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/</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 &#8220;Microsoft defends return to DRM&#8221; I honestly thought the article was going to be a parody. As far as I&#8217;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 &#8220;protection.&#8221;
Your customers don&#8217;t understand DRM [...]]]></description>
			<content:encoded><![CDATA[<p>When I read &#8220;Microsoft defends return to DRM&#8221; I honestly thought the article was going to be a parody. As far as I&#8217;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 &#8220;protection.&#8221;</li>
<li>Your customers <em>don&#8217;t</em> understand DRM and are mad because their music doesn&#8217;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&#8217;s a first step.</p>
</blockquote>
<p><strong>Translation:</strong> We&#8217;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&#8217;re not making any money from that.</p>
<blockquote><p><strong>What is your message to consumers &#8211; 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&#8217;s a whole bunch of people who are very loyal to MSN on the web&#8230;</p>
</blockquote>
<p><strong>Translation:</strong> Being a monopoly has provided us with a butt-load of customers, most of whom aren&#8217;t savvy enough to realize that there are options.</p>
<blockquote><p><strong>The fee for downloading tracks &#8211; £1.50 &#8211; is relatively high compared to 79p on iTunes and less than that on certain Amazon tracks. Why is that?</strong></p>
<p>We&#8217;re constantly reviewing our pricing and if we feel this price point is incorrect, we&#8217;ll look to amend it.</p>
</blockquote>
<p><strong>Translation:</strong> I just told you, our customers are <em>du-umb</em>! I&#8217;m pretty sure that we&#8217;re going to raise the price to £3.00 after the first couple of weeks. We&#8217;ll just explain that we need to charge more to cover the cost of&#8230; something. Our customers genuinely appreciate the opportunity to pay a premium.</p>
<blockquote><p><strong>If I buy these songs on your service &#8211; and they&#8217;re locked to my phone &#8211; what happens when I upgrade my phone in six months&#8217; time?</strong></p>
<p>Well, I think you know the answer to that.</p>
</blockquote>
<p><strong>Translation:</strong> Yeah, we&#8217;re screwing our customers. So what? I buy all my music from Amazon so it really doesn&#8217;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/</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&#8230; 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 &#8220;get rich quick&#8221; scheme
startups require sacrifices from [...]]]></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&#8230; 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 &#8220;get rich quick&#8221; 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 &#8211; 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&#8217;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&#8217;s fun to dream about a huge IPO but if that&#8217;s your sole focus&#8230;</p>
<p>I&#8217;m not going to deny that a large payout would be great. But in the meantime, I&#8217;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/</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&#8217;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&#8217;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&#8217;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&#8217;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&#8217;t think git&#8217;s &#8220;cheap branching&#8221; 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&#8217;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&#8217;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&#8217;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&#8217;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 &#8216;git add -i&#8217;.</li>
<li><strong>git stash -i:</strong> Sometimes I only want to stash some of my changes. This too would work like &#8216;git add -i&#8217;.</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&#8217;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&#8217;m looking for, but I still don&#8217;t know what the &#8220;fetch-all&#8221; in <code>git svn fetch --fetch-all</code> actually does.</li>
<li><strong>Windows support:</strong> Not that I&#8217;ve actually tried it, I&#8217;ve just heard that it doesn&#8217;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&#8217;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&#8217;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>
		<item>
		<title>Setting up OpenID using my personal domain</title>
		<link>http://blog.zobie.com/2009/01/setting-up-openid-using-my-personal-domain/</link>
		<comments>http://blog.zobie.com/2009/01/setting-up-openid-using-my-personal-domain/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 19:28:00 +0000</pubDate>
		<dc:creator>zobie</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[openid]]></category>

		<guid isPermaLink="false">http://blog.zobie.com/?p=84</guid>
		<description><![CDATA[If you haven&#8217;t seen the site before, go take a look at Stack Overflow. Imagine digg hooking up with wikipedia and having a baby that looks kinda like a forum. Stack Overflow is that baby. It is designed as a place for software developers to collaborate and get questions answered. Very cool idea. Excellent implementation.
I&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<p>If you haven&#8217;t seen the site before, go take a look at <a href="http://stackoverflow.com">Stack Overflow</a>. Imagine digg hooking up with wikipedia and having a baby that looks kinda like a forum. Stack Overflow is that baby. It is designed as a place for software developers to collaborate and get questions answered. Very cool idea. <em>Excellent</em> implementation.</p>
<p>I&#8217;ve been a lurker on Stack Overflow since it opened up. Well, I dunno&#8230; my uid = 6937 so it was fairly early on. Anyway, a few times I&#8217;ve wanted to participate in the community, but I&#8217;ve always held back. I have never really gotten in to the whole <a href="http://openid.net/">OpenID</a> thing, and OpenID is the only authentication that Stack Overflow uses.</p>
<p>Yes, I know that I already have OpenID accounts (obviously, since I was able to register with Stack Overflow), and it is really cool that my existing accounts with WordPress, Blogspot, Flickr, Google and WhateverElse.com are already setup as OpenIDs. The problem is that I am not really committed to any of those services. I registered zobie.com several years ago, and I use it for all of my permanent communication. Those other accounts, they&#8217;re pretty much disposable.</p>
<p>I sign up for every new service I encounter just so I can check it out. (Yes, I use a different randomly generated password for each site.) Most of these websites never even get a second visit. Even the accounts I use frequently, like Gmail, aren&#8217;t &#8220;permanent&#8221; identities in my mind.</p>
<p>What if Yahoo goes bankrupt and closes down Flickr? What if Gmail suddenly becomes really uncool, and people laugh at me for using it (like we laugh at people who still use Hotmail)? I was afraid that I&#8217;d start using one of these OpenIDs and then I wouldn&#8217;t want to use that service any more. Fortunately for me, I figured out how to use my personal domain as an OpenID. It was really easy.</p>
<p>Before anyone points out my logical fallacy, I realize that, because I&#8217;m not actually hosting my own stuff, if <a href="http://www.myopenid.com/">myOpenID</a> goes down, I&#8217;ll still lose all of that data. Somehow, the risk doesn&#8217;t seem as big if I&#8217;m using my own domain. I never claimed that my fear was rational. <img src='http://blog.zobie.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Here&#8217;s how easy it was to set up:</p>
<ol>
<li>Signup for a free account at <a href="http://www.myopenid.com/">http://myOpenID.com</a></li>
<li>Click on the &#8220;Your Domains&#8221; link on the right of the screen enter your domain name</li>
<li>Decide what url structure you want to use (either <code>http://domain.com/user</code> or <code>http://user.domain.com</code>)</li>
<li>Before you can actually use your new OpenID, you&#8217;ll need to verify that you own the domain. I just had to point some randomly generated subdomain at myopenid.com</li>
<li>That&#8217;s it!</li>
</ol>
<p>And now, life is good. I can log in to any OpenID enabled website using my own domain. I can start participating in the Stack Over community!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zobie.com/2009/01/setting-up-openid-using-my-personal-domain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Managing WordPress Updates with Git</title>
		<link>http://blog.zobie.com/2008/12/managing-wordpress-updates-with-git/</link>
		<comments>http://blog.zobie.com/2008/12/managing-wordpress-updates-with-git/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 06:00:35 +0000</pubDate>
		<dc:creator>zobie</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.zobie.com/?p=64</guid>
		<description><![CDATA[WordPress 2.7 was recently released so I started the process of updating the handful of WP instillations that I manage. Git has made this process a breeze! Here&#8217;s how I do it.

To start a new project, use subversion to download the latest stable release of WordPress
Add that entire directory, including the .svn folders, to git. [...]]]></description>
			<content:encoded><![CDATA[<p>WordPress 2.7 was recently released so I started the process of updating the handful of WP instillations that I manage. Git has made this process a breeze! Here&#8217;s how I do it.</p>
<ul>
<li>To start a new project, use subversion to download the latest stable release of WordPress</li>
<li>Add that entire directory, including the .svn folders, to git. To keep subversion happy, make sure that all of the svn tmp directories are in git (use an empty .gitignore file to force git to add empty directories)</li>
<li>Before you make any changes, create a new branch in git called wordpress_base. You should never do anything with this branch other than update the WordPress code from subversion.</li>
<li>Switch back to master and change whatever needs changing (e.g. add themes, plugins, etc.). To make upgrades go as smoothly as possible you shouldn&#8217;t modify the base WordPress files more than you absolutely have to but, adding themes and plugins should be no problem.</li>
<li>When everything is tested and ready to deploy, commit everything to git and push to the webserver</li>
</ul>
<p>The command line will look something like this:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>Downloads
$ <span style="color: #c20cb9; font-weight: bold;">svn</span> <span style="color: #c20cb9; font-weight: bold;">co</span> http:<span style="color: #000000; font-weight: bold;">//</span>svn.automattic.com<span style="color: #000000; font-weight: bold;">/</span>wordpress<span style="color: #000000; font-weight: bold;">/</span>branches<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2.6</span><span style="color: #000000; font-weight: bold;">/</span> new_blog
$ <span style="color: #7a0874; font-weight: bold;">cd</span> new_blog
$ git init
$ git add .
$ git commit <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;Import WordPress 2.6&quot;</span>
$ git branch wordpress_base
<span style="color: #666666; font-style: italic;">## Get the site completely setup, commit everything to git and</span>
<span style="color: #666666; font-style: italic;">## push everything up to the server.</span></pre></div></div>

</p>
<p>When you&#8217;re ready to update WordPress:</p>
<ul>
<li>Checkout the wordpress_base branch</li>
<li>Either &#8217;svn up&#8217; or &#8217;svn switch&#8217; to get the newest code</li>
<li>Check all of the changes in to git</li>
<li>Merge wordpress_base back in to master (I generally rebase then merge)</li>
<li>After everything in git has been committed, push, pull or do whatever fits your process to get the updated code from your development machine to the server</li>
<li><strong>Don&#8217;t forget to upgrade your blog database</strong> after the new code has been deployed by going to: http://myblog.com/wp-admin/upgrade.php</li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ git checkout wordpress_base
$ <span style="color: #c20cb9; font-weight: bold;">svn</span> switch http:<span style="color: #000000; font-weight: bold;">//</span>svn.automattic.com<span style="color: #000000; font-weight: bold;">/</span>wordpress<span style="color: #000000; font-weight: bold;">/</span>branches<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2.7</span>
$ git add . <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> git ls-files <span style="color: #660033;">--deleted</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">xargs</span> git <span style="color: #c20cb9; font-weight: bold;">rm</span>
$ git commit <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;Updated WordPress to version 2.7&quot;</span>
$ git checkout <span style="color: #660033;">-b</span> integration
$ git rebase master
$ git checkout master
$ git merge integration
$ git branch <span style="color: #660033;">-d</span> integration
<span style="color: #666666; font-style: italic;">## Make sure all conflicts have been resolved, test the new site and</span>
<span style="color: #666666; font-style: italic;">## update plugins. Commit changes to git and push them to the server.</span></pre></div></div>
</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zobie.com/2008/12/managing-wordpress-updates-with-git/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
