<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>ben tsai</title>
	<atom:link href="http://bentsai.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://bentsai.wordpress.com</link>
	<description>The &#039;t&#039; in this case stands for &#039;technology&#039;</description>
	<lastBuildDate>Fri, 27 Jan 2012 20:32:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='bentsai.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>ben tsai</title>
		<link>http://bentsai.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://bentsai.wordpress.com/osd.xml" title="ben tsai" />
	<atom:link rel='hub' href='http://bentsai.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Vintage mode in Sublime Text</title>
		<link>http://bentsai.wordpress.com/2012/01/27/vintage-mode-in-sublime-text/</link>
		<comments>http://bentsai.wordpress.com/2012/01/27/vintage-mode-in-sublime-text/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 20:32:34 +0000</pubDate>
		<dc:creator>bentsai</dc:creator>
				<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://bentsai.wordpress.com/?p=673</guid>
		<description><![CDATA[Sublime Text is one of the hot new text editors these days. It has some innovative features like minimap, and it is cross-platform. And I just discovered that it has vintage mode, which means I can use vi keybindings to navigate and edit text. This bears further investigation&#8230;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bentsai.wordpress.com&amp;blog=3832739&amp;post=673&amp;subd=bentsai&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sublime Text is one of the hot new text editors these days. It has some innovative features like minimap, and it is cross-platform. And I just discovered that it has <a href="http://www.sublimetext.com/docs/2/vintage.html">vintage mode</a>, which means I can use vi keybindings to navigate and edit text. This bears further investigation&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bentsai.wordpress.com/673/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bentsai.wordpress.com/673/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bentsai.wordpress.com/673/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bentsai.wordpress.com/673/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bentsai.wordpress.com/673/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bentsai.wordpress.com/673/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bentsai.wordpress.com/673/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bentsai.wordpress.com/673/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bentsai.wordpress.com/673/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bentsai.wordpress.com/673/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bentsai.wordpress.com/673/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bentsai.wordpress.com/673/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bentsai.wordpress.com/673/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bentsai.wordpress.com/673/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bentsai.wordpress.com&amp;blog=3832739&amp;post=673&amp;subd=bentsai&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bentsai.wordpress.com/2012/01/27/vintage-mode-in-sublime-text/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">bentsai</media:title>
		</media:content>
	</item>
		<item>
		<title></title>
		<link>http://bentsai.wordpress.com/2012/01/26/671/</link>
		<comments>http://bentsai.wordpress.com/2012/01/26/671/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 18:35:48 +0000</pubDate>
		<dc:creator>bentsai</dc:creator>
				<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://bentsai.wordpress.com/?p=671</guid>
		<description><![CDATA[I don&#8217;t need to do git svn fetch because the rebase does this already.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bentsai.wordpress.com&amp;blog=3832739&amp;post=671&amp;subd=bentsai&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t need to do <code>git svn fetch</code> because the <code>rebase</code> does this already.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bentsai.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bentsai.wordpress.com/671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bentsai.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bentsai.wordpress.com/671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bentsai.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bentsai.wordpress.com/671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bentsai.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bentsai.wordpress.com/671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bentsai.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bentsai.wordpress.com/671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bentsai.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bentsai.wordpress.com/671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bentsai.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bentsai.wordpress.com/671/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bentsai.wordpress.com&amp;blog=3832739&amp;post=671&amp;subd=bentsai&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bentsai.wordpress.com/2012/01/26/671/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">bentsai</media:title>
		</media:content>
	</item>
		<item>
		<title>Using Mercurial as ad-hoc local version control</title>
		<link>http://bentsai.wordpress.com/2012/01/26/using-mercurial-as-ad-hoc-local-version-control-2/</link>
		<comments>http://bentsai.wordpress.com/2012/01/26/using-mercurial-as-ad-hoc-local-version-control-2/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 18:35:39 +0000</pubDate>
		<dc:creator>bentsai</dc:creator>
				<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://bentsai.wordpress.com/?p=669</guid>
		<description><![CDATA[Let&#8217;s assume you&#8217;re working at a company using Perforce or Subversion as source control, and you&#8217;re tasked to fix a bug on the main branch of development. You&#8217;d prefer not to commit anything into the repository that breaks, lest the build master (who may be yourself) get on your case and you&#8217;re additionally tasked to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bentsai.wordpress.com&amp;blog=3832739&amp;post=669&amp;subd=bentsai&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s assume you&#8217;re working at a company using Perforce or Subversion as<br />
source control, and you&#8217;re tasked to fix a bug on the main branch of<br />
development. You&#8217;d prefer not to commit anything into the repository that<br />
breaks, lest the build master (who may be yourself) get on your case and<br />
you&#8217;re additionally tasked to buy donuts for the group.</p>
<p>If the bug/change you&#8217;re trying to make is anything beyond the most trivial<br />
task, it would be great to have your sources under version control so you have<br />
the freedom to try things and backtrack—you know, one of the basic ideas<br />
behind version control. So, now you&#8217;re stuck. There&#8217;s too much overhead to<br />
create a whole new branch just for this one fix. Do you resort to renaming<br />
files and folders and moving back and forth on your editor&#8217;s undo buffer?<br />
C&#8217;mon now, behave.</p>
<p>When the tools aren&#8217;t working for you, find a new tool! Enter<br />
<a href="http://www.selenic.com/mercurial/wiki/">Mercurial</a>. I won&#8217;t get into the<br />
interminable debate between Mercurial and <a href="http://git.or.cz/">Git</a> and other<br />
DVCS&#8217;s. Suffice it to say that they are all the NBT, and distributed VCS are a<br />
superset of centralized ones. I&#8217;ve chosen Mercurial for pragmatic reasons: 1)<br />
works well on Windows and 2) is implemented primarily in<br />
<a href="http://www.python.org/">Python</a>.</p>
<p>The basic idea is, you can use Mercurial on top of your current, centralized<br />
version control system. This way, you get all of your local sources under<br />
version control independent of what the rest of your company uses. It&#8217;s a<br />
simple idea, but it frees you from worrying about how to manage changes you&#8217;re<br />
making in your local area. Another situation I frequently find this useful in<br />
is when I&#8217;m writing a one-off script that I&#8217;m not sure if I want to commit to<br />
the repository. But, the script is complex enough that I&#8217;ll need to iterate a<br />
few times. Wouldn&#8217;t it be great to have it under version control? Here&#8217;s how:</p>
<h1>Install Mercurial</h1>
<p>I&#8217;m on Windows, so I just go for the <a href="http://mercurial.berkwood.com/">Windows binary<br />
package</a> where Python and everything is all<br />
wrapped up for you. You can also install it with cygwin, if that&#8217;s your bag.<br />
Make sure C:\Mercurial (or wherever you installed it) is in your path.</p>
<p>Now, you&#8217;re good to go. The executable name is &#8220;hg&#8221; (get it?) and if you type<br />
that without any arguments at command prompt, you will see a list of basic<br />
commands. All the concepts of version control that you&#8217;re familiar with are<br />
all there. Let&#8217;s walk through an example of putting your sources under version<br />
control and making some changes.</p>
<h1>Create a new repository</h1>
<p>The first thing you&#8217;ll do is create a new repository from your current<br />
sources. Let&#8217;s say you&#8217;re working on on a project in C:\projects\GoogleKiller.<br />
Navigate to that directory, and type:</p>
<pre><code>&gt; hg init
</code></pre>
<p>That command should return silently. It generated a .hg folder in that<br />
directory where the metadata is stored. You&#8217;ve just created a repository. You<br />
can now do:</p>
<pre><code>&gt; hg status
? GoogleKiller.py
? GoogleKillerTests.py
? README.TXT
</code></pre>
<p>This tells you that mercurial sees three files, but none of them are tracked.<br />
To start tracking them, simply:</p>
<pre><code>&gt; hg add
adding GoogleKiller.py
adding GoogleKillerTests.py
adding README.TXT
</code></pre>
<p>Without specifying any files to &#8220;hg add&#8221;, you&#8217;ve added all the files in the<br />
directory. Now, the last step to getting these sources in the repository is:</p>
<pre><code>hg commit -m "Initial checkin!"
</code></pre>
<p>The -m argument is the log message for the checkin. You can track the history<br />
of commits with the log command:</p>
<pre><code>&gt; hg log
changeset:   0:8c047c4da9a4
tag:         tip
user:        bentsai@example.com
date:        Fri May 30 17:32:17 2008 -0400
summary:     Initial checkin!
</code></pre>
<p>Now you&#8217;re ready to roll with local version control:)</p>
<h1>Start coding</h1>
<p>The commandline help for mercurial is pretty good. The basic commands you&#8217;ll<br />
care about are:</p>
<ul>
<li><code>hg status</code> (to see what files have been modified)</li>
<li><code>hg diff</code> (which prints out a unified diff of what&#8217;s changed)</li>
<li><code>hg revert</code> (for backing out of changes)<br />
To get more details on these commands, just type &#8220;hg help &#8220;. There<br />
are other tweaks you can make to the usage (the [documentation](http://hgbook<br />
.red-bean.com/hgbook.html) is good), but that&#8217;s the general idea. Now you&#8217;re<br />
free to get on with coding!</li>
</ul>
<p>The process for getting up and running is pretty low on friction, which is why<br />
I like it. This doesn&#8217;t even begin to touch the real boon of DVCS&#8217;s—actually<br />
collaborating with others. But this technique takes advantage of Mercurial&#8217;s<br />
speed, easy-of-use, and unobtrusiveness for a rapid solution to a fairly<br />
common problem.</p>
<p><strong>Update (June 1, 2008):</strong> I should note that using Mercurial for version control isn&#8217;t limited to code. Any situation you&#8217;re keen on rolling back changes, this could work. Before I found out about Mercurial, I thought about using Subversion for such a purpose. But the pain was setting up a server &#8211; with Mercurial, there is no centralized server to setup. The only thing Mercurial does is add an &#8220;.hg&#8221; folder in the root. Once you have it installed on your computer, you&#8217;ve got localized <a href="http://www.apple.com/macosx/features/timemachine.html">Time Machine</a>-like powers at your fingertips.</p>
<p><strong>Update (June 2, 2008):</strong> Here&#8217;s someone who&#8217;s <a href="http://www.dehora.net/journal/2008/01/05/using-mercurial-with-perforce/">using Mercurial specifically with Perforce</a> and described his workflow more extensively than I have.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bentsai.wordpress.com/669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bentsai.wordpress.com/669/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bentsai.wordpress.com/669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bentsai.wordpress.com/669/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bentsai.wordpress.com/669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bentsai.wordpress.com/669/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bentsai.wordpress.com/669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bentsai.wordpress.com/669/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bentsai.wordpress.com/669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bentsai.wordpress.com/669/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bentsai.wordpress.com/669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bentsai.wordpress.com/669/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bentsai.wordpress.com/669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bentsai.wordpress.com/669/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bentsai.wordpress.com&amp;blog=3832739&amp;post=669&amp;subd=bentsai&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bentsai.wordpress.com/2012/01/26/using-mercurial-as-ad-hoc-local-version-control-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">bentsai</media:title>
		</media:content>
	</item>
		<item>
		<title>Opening files recursively in Vim</title>
		<link>http://bentsai.wordpress.com/2012/01/26/opening-files-recursively-in-vim/</link>
		<comments>http://bentsai.wordpress.com/2012/01/26/opening-files-recursively-in-vim/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 15:33:35 +0000</pubDate>
		<dc:creator>bentsai</dc:creator>
				<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://bentsai.wordpress.com/?p=667</guid>
		<description><![CDATA[I wanted to open all the project files in my solution folder in Vim. Here&#8217;s how: :n **/*.csproj<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bentsai.wordpress.com&amp;blog=3832739&amp;post=667&amp;subd=bentsai&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I wanted to open all the project files in my solution folder in Vim. Here&#8217;s how:</p>
<pre><code>:n **/*.csproj
</code></pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bentsai.wordpress.com/667/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bentsai.wordpress.com/667/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bentsai.wordpress.com/667/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bentsai.wordpress.com/667/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bentsai.wordpress.com/667/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bentsai.wordpress.com/667/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bentsai.wordpress.com/667/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bentsai.wordpress.com/667/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bentsai.wordpress.com/667/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bentsai.wordpress.com/667/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bentsai.wordpress.com/667/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bentsai.wordpress.com/667/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bentsai.wordpress.com/667/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bentsai.wordpress.com/667/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bentsai.wordpress.com&amp;blog=3832739&amp;post=667&amp;subd=bentsai&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bentsai.wordpress.com/2012/01/26/opening-files-recursively-in-vim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">bentsai</media:title>
		</media:content>
	</item>
		<item>
		<title>Being a Better Programmer</title>
		<link>http://bentsai.wordpress.com/2012/01/26/being-a-better-programmer-3/</link>
		<comments>http://bentsai.wordpress.com/2012/01/26/being-a-better-programmer-3/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 14:22:20 +0000</pubDate>
		<dc:creator>bentsai</dc:creator>
				<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://bentsai.wordpress.com/?p=665</guid>
		<description><![CDATA[I saw this in my twitter feed: Highly polished and impressive videos on the Essentials of Programming: hillelcoren.com/coder &#8212; Scott Hanselman (@shanselman) January 20, 2012 I watched through the whole thing, and it is indeed an impressive collection of tips to becoming a better programmer. The videos cover a breadth of topics in a short [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bentsai.wordpress.com&amp;blog=3832739&amp;post=665&amp;subd=bentsai&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I saw this in my twitter feed:</p>
<blockquote class="twitter-tweet"><p>Highly polished and impressive videos on the Essentials of Programming: <a href="http://t.co/vLqAO7R4" title="http://hillelcoren.com/coder">hillelcoren.com/coder</a></p>
<p>&mdash; Scott Hanselman (@shanselman) <a href="https://twitter.com/shanselman/status/160447302899732480">January 20, 2012</a></p></blockquote>
<p>I watched through the whole thing, and it is indeed an impressive collection of tips to becoming a better programmer. The videos cover a breadth of topics in a short period of time. To give you a taste, the first unit covers managing complexity, the single responsibility principle, separation of concerns, TDD and design patterns. And that&#8217;s only the first 2 minutes. The total running time is 20 minutes, so you should watch them:</p>
<span style="text-align:center; display: block;"><a href="http://bentsai.wordpress.com/2012/01/26/being-a-better-programmer-3/"><img src="http://img.youtube.com/vi/ngSDsY7VqRg/2.jpg" alt="" /></a></span>
<span style="text-align:center; display: block;"><a href="http://bentsai.wordpress.com/2012/01/26/being-a-better-programmer-3/"><img src="http://img.youtube.com/vi/VBysCfzflvA/2.jpg" alt="" /></a></span>
<p>The videos have a strange feel to them, since they use public domain clips overlaid with After Effects-generated titles and effects. The visuals are not crucial and more often than not, result in curious juxtapositions of software wisdom with campy footage. Regardless, the content is great.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bentsai.wordpress.com/665/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bentsai.wordpress.com/665/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bentsai.wordpress.com/665/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bentsai.wordpress.com/665/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bentsai.wordpress.com/665/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bentsai.wordpress.com/665/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bentsai.wordpress.com/665/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bentsai.wordpress.com/665/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bentsai.wordpress.com/665/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bentsai.wordpress.com/665/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bentsai.wordpress.com/665/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bentsai.wordpress.com/665/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bentsai.wordpress.com/665/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bentsai.wordpress.com/665/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bentsai.wordpress.com&amp;blog=3832739&amp;post=665&amp;subd=bentsai&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bentsai.wordpress.com/2012/01/26/being-a-better-programmer-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">bentsai</media:title>
		</media:content>
	</item>
		<item>
		<title>Being a Better Programmer</title>
		<link>http://bentsai.wordpress.com/2012/01/23/being-a-better-programmer-2/</link>
		<comments>http://bentsai.wordpress.com/2012/01/23/being-a-better-programmer-2/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 10:47:16 +0000</pubDate>
		<dc:creator>bentsai</dc:creator>
				<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://bentsai.wordpress.com/?p=663</guid>
		<description><![CDATA[Highly polished and impressive videos on the Essentials of Programming: hillelcoren.com/coder &#8212; Scott Hanselman (@shanselman) January 20, 2012 I watched through the whole thing, and it is indeed an impressive collection of tips to becoming a better programmer. The videos cover a breadth of topics in a short period of time. To give you a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bentsai.wordpress.com&amp;blog=3832739&amp;post=663&amp;subd=bentsai&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote class="twitter-tweet"><p>Highly polished and impressive videos on the Essentials of Programming: <a href="http://t.co/vLqAO7R4" title="http://hillelcoren.com/coder">hillelcoren.com/coder</a></p>
<p>&mdash; Scott Hanselman (@shanselman) <a href="https://twitter.com/shanselman/status/160447302899732480">January 20, 2012</a></p></blockquote>
<p>I watched through the whole thing, and it is indeed an impressive collection of tips to becoming a better programmer. The videos cover a breadth of topics in a short period of time. To give you a taste, the first unit covers managing complexity, the single responsibility principle, separation of concerns, TDD and design patterns. And that&#8217;s only 2 minutes. It&#8217;s only about 20 minutes total, so you should watch them:</p>
<span style="text-align:center; display: block;"><a href="http://bentsai.wordpress.com/2012/01/23/being-a-better-programmer-2/"><img src="http://img.youtube.com/vi/v86fZZ0YpQs/2.jpg" alt="" /></a></span>
<span style="text-align:center; display: block;"><a href="http://bentsai.wordpress.com/2012/01/23/being-a-better-programmer-2/"><img src="http://img.youtube.com/vi/fSWlf56SiW8/2.jpg" alt="" /></a></span>
<p>The videos have a strange feel to them, since they use public domain clips overlaid with After Effects-generated titles and effects. The visuals are not crucial and more often than not, result in curious juxtapositions of software wisdom with campy footage. Regardless, the content is great.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bentsai.wordpress.com/663/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bentsai.wordpress.com/663/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bentsai.wordpress.com/663/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bentsai.wordpress.com/663/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bentsai.wordpress.com/663/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bentsai.wordpress.com/663/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bentsai.wordpress.com/663/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bentsai.wordpress.com/663/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bentsai.wordpress.com/663/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bentsai.wordpress.com/663/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bentsai.wordpress.com/663/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bentsai.wordpress.com/663/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bentsai.wordpress.com/663/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bentsai.wordpress.com/663/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bentsai.wordpress.com&amp;blog=3832739&amp;post=663&amp;subd=bentsai&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bentsai.wordpress.com/2012/01/23/being-a-better-programmer-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">bentsai</media:title>
		</media:content>
	</item>
		<item>
		<title>How to retrieve an off-screen window</title>
		<link>http://bentsai.wordpress.com/2012/01/23/how-to-retrieve-an-off-screen-window-3/</link>
		<comments>http://bentsai.wordpress.com/2012/01/23/how-to-retrieve-an-off-screen-window-3/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 10:47:11 +0000</pubDate>
		<dc:creator>bentsai</dc:creator>
				<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://bentsai.wordpress.com/?p=661</guid>
		<description><![CDATA[Currently, I&#8217;m working on a bug fix for the case when you&#8217;ve closed our application on a secondary monitor, then disable that monitor (e.g. when undocking a laptop), and then start up the app again. The problem is, we try to restore the window position, and it ends up off-screen and completely hidden from the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bentsai.wordpress.com&amp;blog=3832739&amp;post=661&amp;subd=bentsai&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Currently, I&#8217;m working on a bug fix for the case when you&#8217;ve closed our application on a secondary monitor, then disable that monitor (e.g. when undocking a laptop), and then start up the app again. The problem is, we try to restore the window position, and it ends up off-screen and completely hidden from the user.</p>
<p>This happens occasionally with apps that don&#8217;t behave politely. As a workaround, you can retrieve the window like this:</p>
<p><code>Alt-Space M &lt;any arrow key&gt;</code>, then use the mouse to move the window.</p>
<p>What this does is open the command window and select the <code>Move</code> option. The arrow key then allows the mouse to take over the move.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bentsai.wordpress.com/661/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bentsai.wordpress.com/661/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bentsai.wordpress.com/661/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bentsai.wordpress.com/661/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bentsai.wordpress.com/661/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bentsai.wordpress.com/661/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bentsai.wordpress.com/661/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bentsai.wordpress.com/661/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bentsai.wordpress.com/661/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bentsai.wordpress.com/661/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bentsai.wordpress.com/661/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bentsai.wordpress.com/661/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bentsai.wordpress.com/661/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bentsai.wordpress.com/661/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bentsai.wordpress.com&amp;blog=3832739&amp;post=661&amp;subd=bentsai&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bentsai.wordpress.com/2012/01/23/how-to-retrieve-an-off-screen-window-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">bentsai</media:title>
		</media:content>
	</item>
		<item>
		<title>What does the &#8220;d&#8221; in `git svn dcommit` stand for?</title>
		<link>http://bentsai.wordpress.com/2012/01/23/what-does-the-d-in-git-svn-dcommit-stand-for-3/</link>
		<comments>http://bentsai.wordpress.com/2012/01/23/what-does-the-d-in-git-svn-dcommit-stand-for-3/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 10:47:05 +0000</pubDate>
		<dc:creator>bentsai</dc:creator>
				<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://bentsai.wordpress.com/?p=659</guid>
		<description><![CDATA[Apparently, it stands for &#8220;delta&#8221; (via @DaveWilkinsonII). But I like this answer better: @bentsai &#8220;d&#8221;amn it why am i still using svn — Ben Lowery (@blowery) January 17, 2012<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bentsai.wordpress.com&amp;blog=3832739&amp;post=659&amp;subd=bentsai&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Apparently, <a href="http://stackoverflow.com/questions/3722672/what-is-the-origin-of-the-name-dcommit-in-git-svn-dcommit">it stands for &#8220;delta&#8221;</a> (via <a href="https://twitter.com/#!/DaveWilkinsonII/status/159383178551885824">@DaveWilkinsonII</a>). But I like this answer better:</p>
<blockquote class="twitter-tweet"><p>@<a href="https://twitter.com/bentsai">bentsai</a> &#8220;d&#8221;amn it why am i still using svn</p>
<p>— Ben Lowery (@blowery) <a href="https://twitter.com/blowery/status/159382928097415169">January 17, 2012</a></p></blockquote>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bentsai.wordpress.com/659/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bentsai.wordpress.com/659/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bentsai.wordpress.com/659/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bentsai.wordpress.com/659/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bentsai.wordpress.com/659/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bentsai.wordpress.com/659/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bentsai.wordpress.com/659/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bentsai.wordpress.com/659/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bentsai.wordpress.com/659/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bentsai.wordpress.com/659/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bentsai.wordpress.com/659/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bentsai.wordpress.com/659/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bentsai.wordpress.com/659/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bentsai.wordpress.com/659/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bentsai.wordpress.com&amp;blog=3832739&amp;post=659&amp;subd=bentsai&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bentsai.wordpress.com/2012/01/23/what-does-the-d-in-git-svn-dcommit-stand-for-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">bentsai</media:title>
		</media:content>
	</item>
		<item>
		<title>CSS background opacity</title>
		<link>http://bentsai.wordpress.com/2012/01/23/css-background-opacity-3/</link>
		<comments>http://bentsai.wordpress.com/2012/01/23/css-background-opacity-3/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 10:47:03 +0000</pubDate>
		<dc:creator>bentsai</dc:creator>
				<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://bentsai.wordpress.com/?p=657</guid>
		<description><![CDATA[How to adjust the opacity of the background of a div without affecting child elements: .alpha60 { /* Fallback for web browsers that doesn't support RGBa */ background: rgb(0, 0, 0); /* RGBa with 0.6 opacity */ background: rgba(0, 0, 0, 0.6); }<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bentsai.wordpress.com&amp;blog=3832739&amp;post=657&amp;subd=bentsai&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>How to <a href="http://robertnyman.com/2010/01/11/css-background-transparency-without-affecting-child-elements-through-rgba-and-filters/">adjust the opacity of the background of a div without affecting child elements</a>:</p>
<pre><code>.alpha60 {
    /* Fallback for web browsers that doesn't support RGBa */
    background: rgb(0, 0, 0);
    /* RGBa with 0.6 opacity */
    background: rgba(0, 0, 0, 0.6);
}
</code></pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bentsai.wordpress.com/657/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bentsai.wordpress.com/657/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bentsai.wordpress.com/657/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bentsai.wordpress.com/657/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bentsai.wordpress.com/657/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bentsai.wordpress.com/657/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bentsai.wordpress.com/657/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bentsai.wordpress.com/657/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bentsai.wordpress.com/657/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bentsai.wordpress.com/657/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bentsai.wordpress.com/657/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bentsai.wordpress.com/657/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bentsai.wordpress.com/657/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bentsai.wordpress.com/657/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bentsai.wordpress.com&amp;blog=3832739&amp;post=657&amp;subd=bentsai&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bentsai.wordpress.com/2012/01/23/css-background-opacity-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">bentsai</media:title>
		</media:content>
	</item>
		<item>
		<title>Reducing friction and Scriptogram&#8217;s new text editor</title>
		<link>http://bentsai.wordpress.com/2012/01/23/reducing-friction-and-scriptograms-new-text-editor-3/</link>
		<comments>http://bentsai.wordpress.com/2012/01/23/reducing-friction-and-scriptograms-new-text-editor-3/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 10:47:03 +0000</pubDate>
		<dc:creator>bentsai</dc:creator>
				<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://bentsai.wordpress.com/?p=655</guid>
		<description><![CDATA[I&#8217;m really loving how Scriptogram has been pumping out useful, high-quality features. I&#8217;m typing this post in the new text editor, which lets you compose a post directly from the browser. When I first saw that this was on the upcoming feature list, my impression was that this shouldn&#8217;t be a high priority. One major [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bentsai.wordpress.com&amp;blog=3832739&amp;post=655&amp;subd=bentsai&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m really loving how <a href="http://scriptogr.am">Scriptogram</a> has been pumping out useful, high-quality features. I&#8217;m typing this post in the new text editor, which lets you compose a post directly from the browser. When I first saw that this was on the upcoming feature list, my impression was that this shouldn&#8217;t be a high priority. One major advantage of having posts be synced from Dropbox files is that you can use whatever text editor you want locally.</p>
<p>But what this feature does is <strong>reduce the friction</strong> of writing posts even more, and that is a powerful idea. Even though the text editor is fairly bare bones (no support for links, no HTML preview, no auto-save), it eliminates the overhead of navigating the file system, creating and naming a new text file, and typing in the proper header. <a href="http://www.johndcook.com/">John D. Cook</a> wrote a post explaining this concept that <a href="http://www.johndcook.com/blog/2008/04/09/a-little-simplicity-goes-a-long-way/">a little simplicity goes a long way</a>:</p>
<blockquote>
<p>Sometimes making a task just a little simpler can make a huge difference. Making something 5% easier might make you 20% more productive. Or 100% more productive.</p>
</blockquote>
<p>This is a huge reason why I&#8217;m so enamored by these <a href="http://scriptogr.am/bentsai/post/markdown-blogging-dropbox-oh-my">blogging services that use Dropbox</a>. There are plenty of blogging tools and services out there that make it easy to blog: Posterous, wordpress, tumblr, etc. Indeed, they&#8217;ve done a remarkable job of lowering the barrier of entry. But why do I like Scriptogram the most? It&#8217;s a <em>little bit</em> easier and simpler. There may actually be the same number of steps, but another component is the <em>cognitive</em> overload that it reduces. With Scriptogram, I&#8217;m simply editing a text file on my computer using Markdown. I&#8217;m limited by Markdown&#8217;s formatting abilities, which is a good thing. That <em>little bit</em> has been the deal-breaker and the reason for more posts as of late.</p>
<p>This also partly touches on why &#8220;simple&#8221; apps are all the rage and the notion that &#8220;less is more.&#8221; From <a href="http://gettingreal.37signals.com/ch10_Less_Software.php">37 Signals&#8217; <em>Less Software</em> chapter from <strong>Getting Real</strong></a>:</p>
<ul>
<li>Less software is easier to manage.</li>
<li>Less software reduces your codebase and that means less maintenance busywork (and a happier staff).</li>
<li>Less software lowers your cost of change so you can adapt quickly. You can change your mind without having to change boatloads of code.</li>
<li>Less software results in fewer bugs.</li>
<li>Less software means less support.</li>
</ul>
<p>Software is incredibly complex. I want to have the minimum possible. It&#8217;s always a victory to me when I can get rid of code.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bentsai.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bentsai.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bentsai.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bentsai.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bentsai.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bentsai.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bentsai.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bentsai.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bentsai.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bentsai.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bentsai.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bentsai.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bentsai.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bentsai.wordpress.com/655/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bentsai.wordpress.com&amp;blog=3832739&amp;post=655&amp;subd=bentsai&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bentsai.wordpress.com/2012/01/23/reducing-friction-and-scriptograms-new-text-editor-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">bentsai</media:title>
		</media:content>
	</item>
	</channel>
</rss>
