<?xml version="1.0" encoding="utf-8"?>
<!-- generator="wordpress/2.0.4" -->
<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/"
	>

<channel>
	<title>Local Insanity</title>
	<link>http://brian.maybeyoureinsane.net/blog</link>
	<description>The personal blog of Brian Donovan, a web developer interested in Ruby, Rails, JavaScript, Politics, Biology, and a lot more.</description>
	<pubDate>Wed, 05 Nov 2008 17:28:21 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.4</generator>
	<language>en</language>
			<item>
		<title>Election 2008</title>
		<link>http://brian.maybeyoureinsane.net/blog/2008/11/04/election-2008/</link>
		<comments>http://brian.maybeyoureinsane.net/blog/2008/11/04/election-2008/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 01:20:26 +0000</pubDate>
		<dc:creator>brian</dc:creator>
		
	<category>General</category>
		<guid isPermaLink="false">http://brian.maybeyoureinsane.net/blog/2008/11/04/election-2008/</guid>
		<description><![CDATA[For posterity, my votes and some commentary:

UPDATE 11/5: Includes results (for California Propositions and SF Propositions)

President and Vice President

Me: Barack Obama and Joe Biden
US: Barack Obama and Joe Biden (52% of popular vote)

I voted this way because Barack Obama, in my first impression of him and in nearly every one since then, has appeared to [...]]]></description>
			<content:encoded><![CDATA[<p>For posterity, my votes and some commentary:</p>

<p><strong>UPDATE 11/5:</strong> Includes results (for <a href="http://vote.sos.ca.gov/props/index.html">California Propositions</a> and <a href="http://www.smartvoter.org/2008/11/04/ca/sf/prop/">SF Propositions</a>)</p>

<h2>President and Vice President</h2>

<p><strong>Me:</strong> Barack Obama and Joe Biden
<strong>US:</strong> Barack Obama and Joe Biden (52% of popular vote)</p>

<p>I voted this way because Barack Obama, in my first impression of him and in nearly every one since then, has appeared to be a calm, reasonable, intelligent, and well-spoken man. He&#8217;s someone I would actually want to meet and would trust <em>as a human being</em>, meaning I think of him first and foremost as a real and a decent person, not as a politician.</p>

<p>John McCain strikes me as someone who is stiff, reactive, and generally unpleasant. I don&#8217;t want someone with those qualities as my president, nor do I want him to represent us abroad. Eight years of George W. Bush was embarrassing enough, and on foreign policy McCain seems like he might actually be worse. This is all not to mention the terror that is Sarah Palin. As a person, she might be okay. She seems out of her depth, but I would be too, so I can&#8217;t fault her <em>as a person</em>. But that&#8217;s not a quality you want in someone who, as the running mate to the man who would be the oldest first-term president ever, may have to step in as president. Her ideology scares me, not because I disagree with it, but by how closed off and ridgid it seems. In that way, she reminds me of Bush.</p>

<h2>United States Representative</h2>

<p><strong>Me:</strong> Nancy Pelosi
<strong>US:</strong> Nancy Pelosi</p>

<p>Honestly I put very little thought into this. Call it the Brand Name factor.</p>

<h2>State Senator</h2>

<p><strong>Me:</strong> Mark Leno
<strong>Others:</strong> Mark Leno</p>

<p>Again, not much thought here. He&#8217;s a State Legislator already, and he&#8217;s a Democrat.</p>

<h2>Member, State Assembly</h2>

<p><strong>Me:</strong> Tom Ammiano
<strong>Others:</strong> Tom Ammiano</p>

<p>Similar reasons as above.</p>

<h2>Judge of the Superior Court, Seat #12</h2>

<p><strong>Me:</strong> Thomas Mellon
<strong>Others:</strong> Gerardo Sandoval</p>

<p>Already a judge.</p>

<h2>Member, Board of Education</h2>

<p><strong>Me:</strong> Norman Yee
<strong>SF:</strong> Norman Yee</p>

<p>Incumbent. Didn&#8217;t look into this race.</p>

<h2>Member, Community College Board</h2>

<p><strong>Me:</strong> Natalie Berg
<strong>SF:</strong> Natalie Berg</p>

<p>Same as above.</p>

<h1>California State</h1>

<h2>Proposition 1A: Safe, Reliable High-Speed Passenger Train Bond Act</h2>

<p>I would really like this to happen and I didn&#8217;t see any real major deficiencies in the proposition, so I voted for it.</p>

<p><strong>Me:</strong> YES
<strong>Cali:</strong> YES (52%)</p>

<h2>Proposition 2: Standards for Confining Farm Animals</h2>

<p>The arguments against this seemed pretty weak, and I do support more humane treatment of animals, so here&#8217;s another &#8220;yes&#8221;.</p>

<p><strong>Me:</strong> YES
<strong>Cali:</strong> YES (63%)</p>

<h2>Proposition 3: Children&#8217;s Hospital Bond Act</h2>

<p>Voted against it because there was already money allocated to this.</p>

<p><strong>Me:</strong> NO
<strong>Cali:</strong> YES (55%)</p>

<h2>Proposition 4: Waiting Period and Parental Notification Before Termination of Minor&#8217;s Pregnancy</h2>

<p>Honestly this just seems like a stepping stone to attempt to abolish abortion.</p>

<p><strong>Me:</strong> NO
<strong>Cali:</strong> NO (52%)</p>

<h2>Proposition 5: Nonviolent drug offenses. Sentencing, Parole and Rehabilitation</h2>

<p>These offenders just need something better to do with their time, and I&#8217;d rather not pay for them to be in prison, possibly just making them even less useful to society.</p>

<p><strong>Me:</strong> YES
<strong>Cali:</strong> NO (60%)</p>

<h2>Proposition 6: Police and Law Enforcement Funding. Criminal Penalties and Laws</h2>

<p>This seemed like a big collection of changes that make it difficult to swallow all at once. I didn&#8217;t read the full text of the proposition.</p>

<p><strong>Me:</strong> NO
<strong>Cali:</strong> NO (70%)</p>

<h2>Proposition 7: Renewable Energy Generation</h2>

<p>Sets standards for percentage of renewable energy, helps companies get there. Sounds decent.</p>

<p><strong>Me:</strong> YES
<strong>Cali:</strong> NO (65%)</p>

<h2>Proposition 8: Eliminates Right of Same-Sex Couples to Marry</h2>

<p>Marriages between loving, committed same-sex couples do not destroy the &#8220;sanctity of marriage&#8221;. Both heterosexuals and homosexuals in bad marriages do. This proposition is focusing on the wrong thing.</p>

<p><strong>Me:</strong> NO
<strong>Cali:</strong> YES (52%)</p>

<h2>Proposition 9: Criminal Justice System. Victim&#8217;s Rights. Parole</h2>

<p>As a victim of a violent crime in the past, this one interested me. However, I felt that the arguments for it did not adequately make a case for it.</p>

<p><strong>Me:</strong> NO
<strong>Cali:</strong> YES (53%)</p>

<h2>Proposition 10: Alternative Fuel Vehicles and Renewable Energy</h2>

<p>Perhaps I fell victim to the &#8220;Oh noes it be sponsord by a fatkat gasman!&#8221; rhetoric, but it seemed convincing enough.</p>

<p><strong>Me:</strong> NO
<strong>Cali:</strong> NO (60%)</p>

<h2>Proposition 11: Redistricting</h2>

<p>One question: why?</p>

<p><strong>Me:</strong> NO
<strong>Cali:</strong> YES (51%)</p>

<h2>Proposition 12: Veteran&#8217;s Bond Act of 2008</h2>

<p>Arguments against talked about restricting to people who&#8217;d seen actual combat. Besides being, IMHO, very difficult to determine what that really means, I think anyone who decided to go into the military should get this if they choose.</p>

<p><strong>Me:</strong> YES
<strong>Cali:</strong> YES (64%)</p>

<h1>San Francisco City</h1>

<h2>Proposition A: SF General Hospital and Trauma Center Earthquake Safety Bond, 2008</h2>

<p><strong>Me:</strong> YES
<strong>SF:</strong> YES (84%)</p>

<h2>Proposition B: Establishing Affordable Housing Fund Using Set- Asides from Property Taxes</h2>

<p><strong>Me:</strong> NO
<strong>SF:</strong> NO (50.5%)</p>

<h2>Proposition C: Prohibiting City Employees From Serving on Charter Boards and Commissions</h2>

<p><strong>Me:</strong> NO
<strong>SF:</strong> NO (63%)</p>

<h2>Proposition D: Financing Pier 70 Waterfront District Development Plan upon Board of Supervisors’ Approval</h2>

<p><strong>Me:</strong> YES
<strong>SF:</strong> YES (68%)</p>

<h2>Proposition E: Changing the Number of Signatures Required to Recall City Officials</h2>

<p><strong>Me:</strong> NO
<strong>SF:</strong> YES (61%)</p>

<h2>Proposition F: Holding all Scheduled City Elections only in Even-Numbered Years</h2>

<p><strong>Me:</strong> NO
<strong>SF:</strong> NO (55%)</p>

<h2>Proposition G: Allowing Retirement System Credit for Unpaid Parental Leave</h2>

<p><strong>Me:</strong> YES
<strong>SF:</strong> YES (63%)</p>

<h2>Proposition H: San Francisco Setting Renewable Energy Goals; Options for Providing Electric Power; Changing Revenue Bond Authority to Pay for Public Utility Facilities</h2>

<p><strong>Me:</strong> NO
<strong>SF:</strong> NO (59%)</p>

<h2>Proposition I: Creating the Office of an Independent Rate-Payer Advocate</h2>

<p><strong>Me:</strong> YES
<strong>SF:</strong> NO (64%)</p>

<h2>Proposition J: Creating a Historic Preservation Commission</h2>

<p><strong>Me:</strong> NO
<strong>SF:</strong> NO (58%)</p>

<h2>Proposition K: Changing the Enforcement of Laws Related to Prostitution and Sex Workers</h2>

<p><strong>Me:</strong> NO
<strong>SF:</strong> NO (58%)</p>

<h2>Proposition L: Funding the Community Justice Center</h2>

<p><strong>Me:</strong> YES
<strong>SF:</strong> NO (59%)</p>

<h2>Proposition M: Changing the Residential Rent Ordinance to Prohibit Specific Acts of Harassment of Tenants by Landlords</h2>

<p><strong>Me:</strong> YES
<strong>SF:</strong> YES (61%)</p>

<h2>Proposition N: Changing Real Property Transfer Tax Rates</h2>

<p><strong>Me:</strong> NO
<strong>SF:</strong> YES (69%)</p>

<h2>Proposition O: Replacing the Emergency Response Fee with an Access Line Tax and Revising the Telephone Users Tax</h2>

<p><strong>Me:</strong> NO
<strong>SF:</strong> YES (66%)</p>

<h2>Proposition P: Changing the Composition of the San Francisco County Transportation Authority Board</h2>

<p><strong>Me:</strong> NO
<strong>SF:</strong> NO (68%)</p>

<h2>Proposition Q: Modifying the Payroll Expense Tax</h2>

<p><strong>Me:</strong> NO
<strong>SF:</strong> YES (74%)</p>

<h2>Proposition R: Renaming the Oceanside Water Treatment Plant</h2>

<p><strong>Me:</strong> YES
<strong>SF:</strong> NO (69%)</p>

<h2>Proposition S: Policy Regarding Budget Set Asides and Identification of Replacement Funds</h2>

<p><strong>Me:</strong> NO
<strong>SF:</strong> YES (54%)</p>

<h2>Proposition T: Free and Low-Cost Substance Abuse Treatment Programs</h2>

<p><strong>Me:</strong> YES
<strong>SF:</strong> YES (63%)</p>

<h2>Proposition U: Policy Against Funding for Deployment of Armed Forces in Iraq</h2>

<p><strong>Me:</strong> YES
<strong>SF:</strong> YES (60%)</p>

<h2>Proposition V: Policy Against Terminating Junior Reserve Officers’ Training Corps (JROTC) Programs in Public High Schools</h2>

<p><strong>Me:</strong> NO
<strong>SF:</strong> YES (53%)</p>
]]></content:encoded>
			<wfw:commentRSS>http://brian.maybeyoureinsane.net/blog/2008/11/04/election-2008/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Git Scripts Redux</title>
		<link>http://brian.maybeyoureinsane.net/blog/2008/09/25/git-scripts-redux/</link>
		<comments>http://brian.maybeyoureinsane.net/blog/2008/09/25/git-scripts-redux/#comments</comments>
		<pubDate>Fri, 26 Sep 2008 00:05:16 +0000</pubDate>
		<dc:creator>brian</dc:creator>
		
	<category>Git</category>
		<guid isPermaLink="false">http://brian.maybeyoureinsane.net/blog/2008/09/25/git-scripts-redux/</guid>
		<description><![CDATA[In an earlier post I presented a number of rake tasks that were designed to ease git development. They helped mostly with managing branches, pulling from a remote branch (git-svn or plain ol&#8217; git), and with pushing to remote branches. After using them for a while and getting others to use them, I discovered a [...]]]></description>
			<content:encoded><![CDATA[<p>In an <a href="http://brian.maybeyoureinsane.net/blog/2008/01/30/git-sake-tasks/">earlier post</a> I presented a number of rake tasks that were designed to ease git development. They helped mostly with managing branches, pulling from a remote branch (git-svn or plain ol&#8217; git), and with pushing to remote branches. After using them for a while and getting others to use them, I discovered a problem&#8230;</p>

<p><strong>They actually make things harder.</strong> Consider the user who doesn&#8217;t know git that well, is coming from Subversion, and wants something to help ease the transition. A set of rake tasks to make git feel a bit more like Subversion sounds like a good thing, right? Well, yes and no. Yes in that they should allow you to use the more familiar concepts, but no in that, as written, they didn&#8217;t educate you about what they were actually doing under the hood. So you never learned about <code>git-stash</code>, the difference between <code>git-fetch</code> and <code>git-pull</code>, and more of that sort of thing. This is bad because you will become dependent on the tools, which is a problem because&#8230;</p>

<p><strong>Things go wrong.</strong> When a merge conflict happens in a rebase and most of the output is hidden from you, you can&#8217;t fix it because (a) you have very little information about the problem and (b) you don&#8217;t even know what a rebase is! Granted, good tools can and do help with this sort of thing by providing help when things go wrong, but my tasks just didn&#8217;t do it enough. After a while I got to thinking about the tasks as suitable for someone who didn&#8217;t know git, and that was my mistake, because&#8230;</p>

<p><strong>These tools are meant for people who don&#8217;t need them.</strong> Only once I realized this did I start over, drop the <code>sake-git</code> project, stop using the <code>thor-git</code> project, and went back to pure git. After using that for a while, I noticed some of the same patterns that lead me to write the original tasks in the first place, so I decided to write (based on <a href="http://reinh.com/blog/2008/08/27/hack-and-and-ship.html">Rein H&#8217;s hack and ship</a>) <a href="http://gist.github.com/12718">scripts for people who know what they&#8217;re doing</a>, but want to do it faster. They&#8217;re written in <code>bash</code>, they&#8217;re fast, they tell you what&#8217;s going on, they don&#8217;t hide anything, and they&#8217;re a gist with an installer, but nothing else.</p>

<p>Enjoy.</p>
]]></content:encoded>
			<wfw:commentRSS>http://brian.maybeyoureinsane.net/blog/2008/09/25/git-scripts-redux/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>DSLs in JavaScript</title>
		<link>http://brian.maybeyoureinsane.net/blog/2008/04/05/dsls-in-javascript/</link>
		<comments>http://brian.maybeyoureinsane.net/blog/2008/04/05/dsls-in-javascript/#comments</comments>
		<pubDate>Sun, 06 Apr 2008 07:19:16 +0000</pubDate>
		<dc:creator>brian</dc:creator>
		
	<category>JavaScript</category>
		<guid isPermaLink="false">http://brian.maybeyoureinsane.net/blog/2008/04/06/dsls-in-javascript/</guid>
		<description><![CDATA[Here&#8217;s a fun bit of JavaScript inspired by Yehuda Katz&#8217;s jspec. It lets you call a function with a particular scope, making it ideal for calling functions that depend on a particular scope, but for whatever reason you don&#8217;t want to set up that scope statically.


function callWithScope(fn, context, scope) {
  var fn_body = fn.toString().match(/^[^\{]*\{((.*\n*)*)\}/m)[1];
 [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a fun bit of JavaScript inspired by Yehuda Katz&#8217;s <a href="http://github.com/wycats/jspec/tree/master">jspec</a>. It lets you call a function with a particular scope, making it ideal for calling functions that depend on a particular scope, but for whatever reason you don&#8217;t want to set up that scope statically.</p>

<pre>
function callWithScope(fn, context, scope) {
  var fn_body = fn.toString().match(/^[^\{]*\{((.*\n*)*)\}/m)[1];
  fn = new Function('__scope__', 'with(__scope__){\n' + fn_body + '\n}');
  return fn.call(context, scope);
}
</pre>

<p>How might this be used? When writing a JavaScript spec, allowing the <code>describe</code> callback function to call <code>it</code>.</p>

<pre>
describe("callWithScope", function() {
  it("should not retain the original function scope", function() {
    ...
  })
})
</pre>

<p>Notice that <code>it</code> doesn&#8217;t appear to come from anywhere. When the callback passed to <code>describe</code> is given to <code>callWithScope</code>, the call might look something like this:</p>

<pre>
callWithScope(callback, this, {it: function(name, body) { ... }})
</pre>

<p>The <code>describe</code> callback function is turned into a string and turned into a new function of one argument, the scope. It makes it look something like this, though this isn&#8217;t entirely accurate:</p>

<pre>
describe("callWithScope", function(__scope__) {
  with(__scope__) {
    it("should not retain the original function scope", function() {
      ...
    })
  }
})
</pre>

<p>I&#8217;m using this in one project to call functions defined in some external scripts that expect certain objects and functions to be available. Also, since I can pass in my custom scope, I don&#8217;t have to do the work of ensuring that every function that needs that scope is declared within it. This allows me to abstract out a lot of shared code.</p>

<p>I&#8217;m sure there are a lot of uses for this I haven&#8217;t thought of. What&#8217;s yours?</p>
]]></content:encoded>
			<wfw:commentRSS>http://brian.maybeyoureinsane.net/blog/2008/04/05/dsls-in-javascript/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Git Sake Tasks</title>
		<link>http://brian.maybeyoureinsane.net/blog/2008/01/30/git-sake-tasks/</link>
		<comments>http://brian.maybeyoureinsane.net/blog/2008/01/30/git-sake-tasks/#comments</comments>
		<pubDate>Thu, 31 Jan 2008 14:21:46 +0000</pubDate>
		<dc:creator>brian</dc:creator>
		
	<category>Ruby</category>
	<category>Git</category>
		<guid isPermaLink="false">http://brian.maybeyoureinsane.net/blog/2008/02/02/git-sake-tasks/</guid>
		<description><![CDATA[Update: I&#8217;m ditching Sake for Thor. These tasks have been ported to thor and are available on github.

I&#8217;ve started using Git as my SCM of choice for Subversion projects over the last several months and have found that, while I don&#8217;t want to use Subversion anymore, there are some things it makes easier than git. [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update</strong>: I&#8217;m ditching Sake for <a href="http://github.com/wycats/thor">Thor</a>. These tasks have been ported to thor and are available <a href="http://github.com/cypher/thor-git">on github</a>.</p>

<p>I&#8217;ve started using <a href="http://git.or.cz/">Git</a> as my SCM of choice for Subversion projects over the last several months and have found that, while I don&#8217;t want to use Subversion anymore, there are some things it makes easier than git. For example, let&#8217;s say you&#8217;re working on something and you want to pull in the changes from other people on your team. With svn it&#8217;s simply:</p>

<pre>
$ svn up
</pre>

<p>With git things are different, since it only merges changesets and not locally changed files. This was a pain before <a href="http://linux.die.net/man/1/git-stash">git-stash</a> came along, since I&#8217;d have to back out a change, update, and then reapply it. Even with git-stash things are a bit more painful. Here&#8217;s the equivalent to the above for a <a href="http://linux.die.net/man/1/git-svn">git-svn</a> project:</p>

<pre>
$ git stash
$ git svn rebase
$ git stash apply
</pre>

<p>Oh, and that&#8217;s only if you&#8217;re on the master branch. If you&#8217;re on another one (and you should be), then here&#8217;s what it looks like if you want to keep master up to date too:</p>

<pre>
$ git stash
$ git checkout master
$ git svn rebase
$ git checkout mybranch
$ git rebase master
$ git stash apply
</pre>

<p>Whew! Note that this mostly applies to git-svn projects. For regular git projects a git-pull will do nicely.</p>

<p>I got sick of this, and I noticed that the <a href="http://rubini.us/">Rubinius project</a> uses a Rakefile to handle a fair number of the git commands, including updating and pushing. <a href="http://pastie.caboo.se/147964">Here&#8217;s</a> a <a href="http://errtheblog.com/posts/60-sake-bomb">Sake</a> script that gives you two tasks: git:update and git:push which automatically check whether the project is a git-svn project and do the right thing. Install it like so:</p>

<pre>
$ sake -i http://pastie.caboo.se/147964.txt
</pre>

<p>And now we&#8217;re back to a one-liner:</p>

<pre>
$ sake git:update
</pre>

<p><strong>Update:</strong> I just added <code>git:open</code> and <code>git:close</code> which you should think of as opening and closing issues. They just create and delete branches and can be used like this:</p>

<pre>
$ sake git:open
* Name your branch: ofx
* Switching to master
Switched to branch "master"
Switched to a new branch "ofx"
</pre>

<pre>
$ sake git:close
* Switching to master
* Deleting branch ofx
</pre>

<p>And don&#8217;t worry, <code>git:close</code> is safe and won&#8217;t destroy your work if you haven&#8217;t merged it yet:</p>

<pre>
$ sake git:close
* Switching to master
* Deleting branch ofx
* Branch ofx isn't a strict subset of master, quitting
</pre>

<p><strong>Update:</strong> I gave this its own repo <a href="http://github.com/eventualbuddha/sake-git/tree/master">on github</a>, so go forth, and git.</p>
]]></content:encoded>
			<wfw:commentRSS>http://brian.maybeyoureinsane.net/blog/2008/01/30/git-sake-tasks/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Make Git Play Nice with Custom Scripts</title>
		<link>http://brian.maybeyoureinsane.net/blog/2007/12/21/make-git-play-nice-with-custom-scripts/</link>
		<comments>http://brian.maybeyoureinsane.net/blog/2007/12/21/make-git-play-nice-with-custom-scripts/#comments</comments>
		<pubDate>Fri, 21 Dec 2007 17:41:52 +0000</pubDate>
		<dc:creator>brian</dc:creator>
		
	<category>Git</category>
	<category>Zsh</category>
		<guid isPermaLink="false">http://brian.maybeyoureinsane.net/blog/2007/12/21/make-git-play-nice-with-custom-scripts/</guid>
		<description><![CDATA[Git is split up into a whole bunch of executables like git-commit and git-status, but you can also run them by doing git commit and git status. Cool, right? But it doesn&#8217;t work with your own scripts, so you can&#8217;t just put git-wip in your PATH and have it work. To fill this need I [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://git.or.cz/">Git</a> is split up into a whole bunch of executables like <code>git-commit</code> and <code>git-status</code>, but you can also run them by doing <code>git commit</code> and <code>git status</code>. Cool, right? But it doesn&#8217;t work with your own scripts, so you can&#8217;t just put <code>git-wip</code> in your PATH and have it work. To fill this need I cooked up a <a href="http://www.zsh.org/">Zsh</a> function that does what <code>git</code> should be doing itself:</p>

<pre>
    git() {
      for p in $(echo $PATH | tr ':' '\n'); do
        if [[ -x "$p/git-$1" ]]; then
          eval "$p/git-$1 $argv[2,-1]" &#038;&#038; return
        fi
      done

      eval "/usr/bin/env git $argv"
    }
</pre>

<p><strong>Update:</strong> The above function has the annoying side-effect that if the git command fails or any <em>valid</em> reasons (such as canceling a commit by not providing any message), it&#8217;ll try to run it again. For that reason, and since Coda <a href="http://brian.maybeyoureinsane.net/blog/2008/01/31/git-sake-tasks/#comments">showed me how to shell out</a> with git aliases, I recommend not using this function.</p>
]]></content:encoded>
			<wfw:commentRSS>http://brian.maybeyoureinsane.net/blog/2007/12/21/make-git-play-nice-with-custom-scripts/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Time Machine vs. File Vault</title>
		<link>http://brian.maybeyoureinsane.net/blog/2007/12/19/time-machine-vs-file-vault/</link>
		<comments>http://brian.maybeyoureinsane.net/blog/2007/12/19/time-machine-vs-file-vault/#comments</comments>
		<pubDate>Wed, 19 Dec 2007 19:22:47 +0000</pubDate>
		<dc:creator>brian</dc:creator>
		
	<category>General</category>
		<guid isPermaLink="false">http://brian.maybeyoureinsane.net/blog/2007/12/19/time-machine-vs-file-vault/</guid>
		<description><![CDATA[Now that I&#8217;ve had Leopard for a while I think I&#8217;ve settled the dispute between Time Machine and File Vault. Time Machine won out.

The problem was that FileVault works by setting up an encrypted disk image that is mounted in the /Users directory, rather than /Volumes where things you mount yourself (like DMGs) go. This [...]]]></description>
			<content:encoded><![CDATA[<p>Now that I&#8217;ve had Leopard for a while I think I&#8217;ve settled the dispute between <a href="http://en.wikipedia.org/wiki/Time_Machine_%28Apple_software%29">Time Machine</a> and <a href="http://en.wikipedia.org/wiki/FileVault">File Vault</a>. Time Machine won out.</p>

<p>The problem was that FileVault works by setting up an encrypted disk image that is mounted in the /Users directory, rather than /Volumes where things you mount yourself (like DMGs) go. This allows you to pretty much transparently interact with your files, blissfully unaware that they&#8217;re being encrypted/decrypted on the fly, however to Time Machine your whole home folder is just <strong>one</strong> file. So while I&#8217;ve heard something about being able to access stuff by digging around in the bowels of the directory structure that Time Machine sets up on the external hard drive, you can&#8217;t use Finder&#8217;s interactive file restore system, making it much less useful IMO. After all, backup is an old problem that has solutions, but the whole point of Time Machine is to make it easy enough to actually use.</p>

<p>So my solution was to instead put everything that I wanted encrypted into an <em>actual</em> encrypted disk image that I just mount myself. This also had the benefit of slightly speeding up my system, especially login.</p>
]]></content:encoded>
			<wfw:commentRSS>http://brian.maybeyoureinsane.net/blog/2007/12/19/time-machine-vs-file-vault/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Inbox Zero, Ruby, Spaces, and 3rd party apps on Leopard</title>
		<link>http://brian.maybeyoureinsane.net/blog/2007/10/30/inbox-zero-ruby-spaces-and-3rd-party-apps-on-leopard/</link>
		<comments>http://brian.maybeyoureinsane.net/blog/2007/10/30/inbox-zero-ruby-spaces-and-3rd-party-apps-on-leopard/#comments</comments>
		<pubDate>Wed, 31 Oct 2007 05:21:37 +0000</pubDate>
		<dc:creator>brian</dc:creator>
		
	<category>Apple</category>
		<guid isPermaLink="false">http://brian.maybeyoureinsane.net/blog/2007/10/30/inbox-zero-ruby-spaces-and-3rd-party-apps-on-leopard/</guid>
		<description><![CDATA[I upgraded to Leopard over the weekend after borrowing a friend&#8217;s copy, since I just couldn&#8217;t wait for mine to arrive (thanks Coda!), and it&#8217;s been overall a Good Thing. Leopard has brought us new versions of just about every app in OS X. The most notable ones, for me, are Mail, iCal, Terminal, Spaces, [...]]]></description>
			<content:encoded><![CDATA[<p>I upgraded to <a href="http://www.apple.com/macosx/">Leopard</a> over the weekend after borrowing a friend&#8217;s copy, since I just couldn&#8217;t wait for mine to arrive (thanks Coda!), and it&#8217;s been overall a Good Thing. Leopard has brought us new versions of just about every app in OS X. The most notable ones, for me, are Mail, iCal, Terminal, Spaces, and Stacks.</p>

<h2>Mail.app</h2>

<p>Mail got an iTunes-like sidebar and a little Mail Activity status area (yes, there are other things like Notes and Todos, but I haven&#8217;t bothered to use them yet). The update coincided with GMail&#8217;s addition of IMAP, a long-awaited feature &#8212; especially for us iPhone users. My previous solution of forwarding all my accounts to a <a href="http://fastmail.fm/">fastmail.fm</a> account is pretty much defunct. Setting up GMail&#8217;s IMAP on two accounts with a combined message count of 17,904 was not a fun experience. Now that I&#8217;ve set it up and tweaked a few things it seems to be humming along quite nicely, <a href="http://inboxzero.com/">Inbox Zero</a> style. Here&#8217;s what I recommend you do if you&#8217;re going to set up IMAP with GMail:</p>

<ol>
<li>Log into gmail.com</li>
<li>Archive everything (except stuff you haven&#8217;t dealt with yet)</li>
<li>Delete all your labels (maybe, see below for an explanation)</li>
<li>Enable IMAP under Settings</li>
<li>Add the GMail account to Mail.app (I&#8217;ll call it &#8220;Personal&#8221;)</li>
<li>On the sidebar in Mail select Personal → [Gmail] → Sent Mail, then choose the Mailbox → Use This Mailbox For → Sent</li>
<li>Do the same for Trash, Junk, and Drafts</li>
<li>Install <a href="http://www.indev.ca/MailActOn.html">Mail Act-On</a> (might require some Terminal tweaking)</li>
<li>Create an archive rule called &#8220;Act-On: y | Archive&#8221; and say that if it&#8217;s in &#8220;Personal&#8221; to move the message to Personal → [Gmail] → All Mail</li>
<li>Repeat #9 for each other account you have</li>
</ol>

<p>Now you&#8217;ll have the ability to get to that holy grail of email, Inbox Zero, with more ease than before. Under this setup you&#8217;ll have an inbox, but it&#8217;ll be empty most of the time. The email you&#8217;ve dealt with will be archived and will be visible in Mail under Personal → [Gmail] → All Mail and under All Mail on gmail.com. Oh, and about step #3.. when GMail first came out and told us &#8220;search, don&#8217;t sort&#8221; and gave us labels I thought I understood what to do, but what I ended up doing was pretty much sorting email into labels, going totally against how GMail is set up. What I discovered is that <em>labels should only be for emails that you still have an active interest in</em>, otherwise you&#8217;re just sorting and filing. In GTD-speak that&#8217;s <em>only use labels for emails that still have an action associated with them</em>. By the way, this applies locally to Mail.app as well. Get rid of your folders. You only need Smart Mailboxes and search. Try it, you&#8217;ll like it.</p>

<h2>iCal</h2>

<p>The only thing that looks the same (almost) in this version of iCal is the events view. Everything else has been tweaked. The mini-calendar is more legible and larger. The list of calendars has, like Mail, been iTunes-ified. The biggest change is the dropping of the edit drawer in favor of a popup. My only complaint with it is that I don&#8217;t understand why they went with a drop shadow under the text boxes inside rather than a fuzzy blue border like in Safari.</p>

<h2>Terminal</h2>

<p>So Terminal has real preferences now, and tabs. The former is nice, but I&#8217;ve already set things up so I doubt it&#8217;ll have much effect. The latter has been mitigated by the fact that I use <a href="http://www.gnu.org/software/screen/">screen</a>. Oh well, they&#8217;re welcome additions anyway. Thanks Apple!</p>

<h2>Spaces</h2>

<p>This is probably the best new feature in Leopard as far as I&#8217;m concerned. Don&#8217;t get me wrong, I&#8217;m excited about Time Machine, but mostly because it&#8217;ll encourage <em>other people</em> to back up more, making the Mac ecosystem a better place to be. Most of the other things in Leopard are not really big-ticket items, but are nevertheless cool to have. I&#8217;m still noticing little things, like the fact that ⌘⇧4 (grab selection) now has coordinates and dimension numbers &#8212; nice touch!</p>

<p>Anyway, Spaces is exactly what Virtue Desktops and Desktop Manager should have been. The animation is exactly right (windows slide off the screen in the direction of motion, the pager comes onto the screen with the arrow inside the old space pointing to the new one), windows that live on all spaces are supported and predictably stay put when switching spaces. Dragging apps around when viewing all spaces is dead simple, and Exposé even works in that view. All-in-all, I&#8217;m very impressed with their implementation of virtual desktops.</p>

<h2>Stacks</h2>

<p>I&#8217;ve only got the default stacks in my dock right now (Downloads and Documents), but I&#8217;m digging this feature already &#8212; enough to make me leave the Dock visible and put it on the left side. So now the Dock does have a use for me: My Active Stuff. I removed all apps from it, so only running ones show up. I can easily click on the stacks in the dock, pull out the thing I want to mess with, and either open it or drag it to an application (usually opening folders in TextMate).</p>

<h2>Ruby</h2>

<p>Despite the <a href="http://trac.macosforge.org/projects/ruby/wiki/WhatsNewInLeopard">best laid plans of mice and men</a>, Ruby is still broken under Leopard. Not as broken as Tiger, mind you, but broken is broken. So I&#8217;m sticking with my Tiger setup of using <a href="http://www.macports.org/">MacPorts</a> for everything. Oh well.</p>

<h2>3rd-Party Apps</h2>

<ul>
<li><a href="http://spanningsync.com/">Spanning Sync</a> went bonkers and now wants to delete all my iCal events. <em>sigh</em></li>
<li><a href="http://1password.com/">1Password</a> refused to work at first, but has been updated for Leopard and now works just as before</li>
<li><a href="http://www.versiontracker.com/dyn/moreinfo/macosx/29606">Pyro</a> and Safari 3 are feuding, and as a result you can&#8217;t upload files in Pyro</li>
</ul>

<p>So all in all I&#8217;m quite pleased with the upgrade, and I recommend you check out the <a href="http://arstechnica.com/reviews/os/mac-os-x-10-5.ars">Ars Technica review</a> for more. It has already changed the way I work for the better, though how much of that is coincident I&#8217;m not sure yet.</p>
]]></content:encoded>
			<wfw:commentRSS>http://brian.maybeyoureinsane.net/blog/2007/10/30/inbox-zero-ruby-spaces-and-3rd-party-apps-on-leopard/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>iPhone Suggestions</title>
		<link>http://brian.maybeyoureinsane.net/blog/2007/10/09/iphone-suggestions/</link>
		<comments>http://brian.maybeyoureinsane.net/blog/2007/10/09/iphone-suggestions/#comments</comments>
		<pubDate>Tue, 09 Oct 2007 21:15:27 +0000</pubDate>
		<dc:creator>brian</dc:creator>
		
	<category>iPhone</category>
		<guid isPermaLink="false">http://brian.maybeyoureinsane.net/blog/2007/10/09/iphone-suggestions/</guid>
		<description><![CDATA[Firstly, one feature that Mobile Safari on the iPhone has is the ability to double-tap a portion of the page to have that take up the whole screen. This is really great for reading articles on blogs and other news sites, and I thought that it would be a great addition to Safari (or any [...]]]></description>
			<content:encoded><![CDATA[<p>Firstly, one feature that Mobile Safari on the iPhone has is the ability to double-tap a portion of the page to have that take up the whole screen. This is really great for reading articles on blogs and other news sites, and I thought that it would be a great addition to Safari (or any other browser) since it allows you to focus on just that part of the page you want, ignoring the ads etc.</p>

<p>Second, it&#8217;s stupid that I can&#8217;t view the picture for a contact in full screen unless they&#8217;re calling me or I&#8217;m editing the picture. I should be able to tap on the photo when viewing the contact to see it full screen.</p>
]]></content:encoded>
			<wfw:commentRSS>http://brian.maybeyoureinsane.net/blog/2007/10/09/iphone-suggestions/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Money Matters</title>
		<link>http://brian.maybeyoureinsane.net/blog/2007/09/24/money-matters/</link>
		<comments>http://brian.maybeyoureinsane.net/blog/2007/09/24/money-matters/#comments</comments>
		<pubDate>Tue, 25 Sep 2007 05:47:58 +0000</pubDate>
		<dc:creator>brian</dc:creator>
		
	<category>Finance</category>
	<category>Helio</category>
		<guid isPermaLink="false">http://brian.maybeyoureinsane.net/blog/2007/09/25/money-matters/</guid>
		<description><![CDATA[I&#8217;ve been away for the last 10 days or so on a well-deserved vacation. Here are a few updates that all have to do with money:


The Fed lowered the Prime Rate, and ING Direct lowered their interests rates the next day
Helio finally gave me the $272 they owed me (which after 9 months they should [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been away for the last 10 days or so on a well-deserved vacation. Here are a few updates that all have to do with money:</p>

<ol>
<li>The Fed lowered the <a href="http://en.wikipedia.org/wiki/Prime_rate">Prime Rate</a>, and <a href="http://ingdirect.com/">ING Direct</a> lowered their interests rates the next day</li>
<li><a href="http://helio.com/">Helio</a> finally gave me the $272 they owed me (which after 9 months they should owe me $10 interest, but whatever)</li>
<li>I now work for <a href="http://wesabe.com/">wesabe.com</a>, a personal finance website</li>
<li>I&#8217;m switching to <a href="http://everbank.com/">EverBank</a> from ING&#8217;s Orange Savings and Wells Fargo&#8217;s checking</li>
</ol>

<p>I&#8217;m really excited about the new job, in part because I think it&#8217;s a cool company with a good product, but also because I&#8217;ll still get to do <a href="http://www.rubyonrails.org/">Rails</a> work with some pretty cool people, like <a href="http://blog.codahale.com/">Coda Hale</a> and <a href="http://arko.net/">Andre Arko</a>. <a href="http://www.attendio.com/">Attendio</a> was a good learning experience for me, and I wish them luck in the future, but I think it was time for me to move on and I think I made the right decision.</p>

<p>Number 1 doesn&#8217;t bother me so much because of number 4, as EverBank has yet to lower their rates (which stand at 5.01% APY vs. ING&#8217;s 4.20% APY for Money Market and 3.65% APY vs. WellsFargo&#8217;s 0.00% APY on checking). EverBank also lets you send electronic (or paper) checks, though you can&#8217;t write them yourself &#8212; you do it online &#8212; and you get an ATM card which you can use at <a href="http://www.bankofamerica.com/">BofA</a>, <a href="http://www.wellsfargo.com/">Wells Fargo</a>, and more and they will reimburse you up to $6/mo in fees from other banks, which I estimate to be about two withdraws per month &#8212; more than I ever make.</p>

<p>The Helio thing came four days after my last conversation with them (9/17 to 9/21), indicating that perhaps the only way to get your refund back is to be a persistent and bitchy thorn in their side. I&#8217;m glad that chapter in my life is closed.</p>
]]></content:encoded>
			<wfw:commentRSS>http://brian.maybeyoureinsane.net/blog/2007/09/24/money-matters/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>iPhone Feature Requests</title>
		<link>http://brian.maybeyoureinsane.net/blog/2007/09/24/iphone-feature-requests/</link>
		<comments>http://brian.maybeyoureinsane.net/blog/2007/09/24/iphone-feature-requests/#comments</comments>
		<pubDate>Mon, 24 Sep 2007 22:56:05 +0000</pubDate>
		<dc:creator>brian</dc:creator>
		
	<category>Apple</category>
		<guid isPermaLink="false">http://brian.maybeyoureinsane.net/blog/2007/09/24/iphone-feature-requests/</guid>
		<description><![CDATA[I finally found, after about two months, a couple things I want the iPhone to do that it doesn&#8217;t do:


Upload to Flickr
Play music over an Airport Express


The first may be taken care of with a third-party app, like Pushr or iFlickr. The latter is a bit more tricky, or at least would be if we [...]]]></description>
			<content:encoded><![CDATA[<p>I finally found, after about two months, a couple things I want the iPhone to do that it doesn&#8217;t do:</p>

<ol>
<li>Upload to Flickr</li>
<li>Play music over an Airport Express</li>
</ol>

<p>The first may be taken care of with a third-party app, like Pushr or iFlickr. The latter is a bit more tricky, or at least would be if we wanted it done right (as part of the iPod app &#8212; hint, hint Apple). But hey, give me a simple interface to browse songs and I&#8217;d be satisfied for a first attempt.</p>
]]></content:encoded>
			<wfw:commentRSS>http://brian.maybeyoureinsane.net/blog/2007/09/24/iphone-feature-requests/feed/</wfw:commentRSS>
		</item>
	</channel>
</rss>
