<?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>incrementalism.net &#187; Technology</title>
	<atom:link href="http://incrementalism.net/tag/tech/feed" rel="self" type="application/rss+xml" />
	<link>http://incrementalism.net</link>
	<description></description>
	<lastBuildDate>Tue, 30 Aug 2011 04:44:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<cloud domain='incrementalism.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>Making a Symbolic Link or a New Text File from the Finder</title>
		<link>http://incrementalism.net/tech/making-a-symbolic-link-or-a-new-text-file-from-the-finder</link>
		<comments>http://incrementalism.net/tech/making-a-symbolic-link-or-a-new-text-file-from-the-finder#comments</comments>
		<pubDate>Sat, 09 Apr 2011 15:18:00 +0000</pubDate>
		<dc:creator>Tim Moore</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Finder]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[services]]></category>

		<guid isPermaLink="false">http://incrementalism.net/?p=219</guid>
		<description><![CDATA[I was reading through some instructions on the Dropbox wiki for syncing things outside of the Dropbox folder and ran across a useful system service for Snow Leopard. Nick Zitzmann&#8217;s Symbolic Linker provides a way to create symbolic links from within the Finder. There have been a few times where I found myself wanting to [...]]]></description>
			<content:encoded><![CDATA[<p>I was reading through <a href="http://wiki.dropbox.com/TipsAndTricks/SyncOtherFolders#MacOSX">some instructions on the Dropbox wiki</a> for syncing things outside of the Dropbox folder and ran across a useful system service for Snow Leopard.</p>
<p>Nick Zitzmann&#8217;s <a href="http://seiryu.home.comcast.net/~seiryu/symboliclinker.html">Symbolic Linker</a> provides a way to create symbolic links from within the Finder. There have been a few times where I found myself wanting to create a symbolic link from outside the Terminal, so I gave it a try. It puts an item in the &#8220;Services&#8221; sub-menu that appears in the Finder&#8217;s application menu, and it also shows up in contextual menus and the &#8220;Action&#8221; button in the Finder toolbar (the one with the gear icon).</p>
<p><span id="more-219"></span></p>
<p>The icon in the Services menu is a bit plain, though.</p>
<p><a href="http://static.incrementalism.net/wp-content/uploads/2011/04/make-symlink-noicon.png"><img src="http://static.incrementalism.net/wp-content/uploads/2011/04/make-symlink-noicon.png" alt="The original &quot;Make Symbolic Link&quot; service uses a generic application icon" title="&quot;Make Symbolic Link&quot; Without a Custom Icon" width="480" height="236" class="size-full wp-image-224" /></a></p>
<p>Luckily, it&#8217;s <a href="http://github.com/nickzman/symboliclinker">open source</a>, so I was able to <a href="https://github.com/TimMoore/symboliclinker">fork it</a> and add a <a href="https://github.com/TimMoore/symboliclinker/raw/51e27f4f350580ed7bd42df2af1defdccb27f36b/Symbolic%20Linker%20Service%20Icon.png">simple icon</a> modelled after the arrow overlay that the Finder stamps onto aliases and symlinks.</p>
<p><a href="http://static.incrementalism.net/wp-content/uploads/2011/04/make-symlink-icon.png"><img src="http://static.incrementalism.net/wp-content/uploads/2011/04/make-symlink-icon.png" alt="This &quot;Make Symbolic Link&quot; service uses an icon" title="&quot;Make Symbolic Link&quot; With a Custom Icon" width="480" height="236" class="size-full wp-image-225" /></a></p>
<p>It won&#8217;t win any design awards, but it does the trick.</p>
<p>I opened a <a href="https://github.com/nickzman/symboliclinker/pull/1">pull request</a>, so hopefully he&#8217;ll take the change and release a new version, but the project hasn&#8217;t been active in a while, so if you&#8217;d like to grab this in the meantime, you can <a href="https://github.com/downloads/TimMoore/symboliclinker/SymbolicLinker2.0v2+icon.dmg">download my patched version</a>.</p>
<p><strong>Update, 10 April 2011:</strong> Nick has <a href="https://github.com/nickzman/symboliclinker/pull/1#issuecomment-978016">accepted the patch</a>. That was quick! Thanks, NIck.</p>
<p>While on the topic of useful services that are trivial to do in the Terminal but a little annoying when you&#8217;ve already got a Finder window open, sometimes I find myself wanting to create an empty text file in a folder that I&#8217;ve got open in the Finder. Opening a text editor, then saving the file and having to navigate back to the folder is a little tedious. I went looking for a Finder service that could do this for me, and found <a href="http://hints.macworld.com/article.php?story=20100509134904820">an article from Mac OS X Hints</a> that explains how to create one.</p>
<p>Why they didn&#8217;t just provide a file to download is beyond me, but if you want to save yourself the effort of going through the instructions, you can <a href="http://static.incrementalism.net/software/New%20Text%20File%20Service.dmg">download the one I made</a>, also with a custom icon.</p>
<p><strong>Update, 10 April 2011:</strong> <a href="https://twitter.com/#!/ellenbeldner/status/56869922625687552">via Ellen Beldner on Twitter</a>, today I coincidentally discovered <a href="http://code.google.com/p/cdto/">cdto</a>, which lets you add a toolbar button to the Finder to open the current window in a terminal. So for all of those other things that are more convenient to do with a quick command line, there you go.</p>
]]></content:encoded>
			<wfw:commentRss>http://incrementalism.net/tech/making-a-symbolic-link-or-a-new-text-file-from-the-finder/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPad</title>
		<link>http://incrementalism.net/tech/ipad</link>
		<comments>http://incrementalism.net/tech/ipad#comments</comments>
		<pubDate>Tue, 06 Apr 2010 13:14:03 +0000</pubDate>
		<dc:creator>Tim Moore</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPad]]></category>

		<guid isPermaLink="false">http://incrementalism.net/?p=211</guid>
		<description><![CDATA[I was only a couple of years too early.]]></description>
			<content:encoded><![CDATA[<p><a href="/tech/macworld-2008-predictions">I was only a couple of years too early.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://incrementalism.net/tech/ipad/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Centering Windows in Mac OS X with AppleScript</title>
		<link>http://incrementalism.net/tech/centering-windows-in-mac-os-x-with-applescript</link>
		<comments>http://incrementalism.net/tech/centering-windows-in-mac-os-x-with-applescript#comments</comments>
		<pubDate>Mon, 20 Jul 2009 01:17:42 +0000</pubDate>
		<dc:creator>Tim Moore</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[AppleScript]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[obsession]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://incrementalism.net/?p=124</guid>
		<description><![CDATA[I can be a little OCD with the windows on my screen. I tend to line them up at the edges or try to center them in the display. Maybe it&#8217;s a bad habit, but it&#8217;s one I&#8217;m probably not going to shake any time soon, so the least I can do is try to [...]]]></description>
			<content:encoded><![CDATA[<p>I can be a little OCD with the windows on my screen.  I tend to line them up at the edges or try to center them in the display. Maybe it&#8217;s a bad habit, but it&#8217;s one I&#8217;m probably not going to shake any time soon, so the least I can do is try to avoid wasting too much time on it.</p>
<p><span id="more-124"></span></p>
<p>I found <a href="http://github.com/wycats/osx-window-sizing/blob/80973de9772cffce57621fc27a74b693701c35fa/center.applescript">an AppleScript on GitHub</a> for centering the frontmost window. It didn&#8217;t do quite what I wanted, so here&#8217;s my slightly-modified version, which will center the window in your screen horizontally without changing the vertical position or size.</p>
<pre class="brush: applescript; class-name: applescript; title: ; notranslate">
tell application &quot;Finder&quot;
	set screenSize to bounds of window of desktop
	set screenWidth to item 3 of screenSize
end tell

tell application &quot;System Events&quot;
	set myFrontMost to name of first item of ¬
		(processes whose frontmost is true)
end tell

try
	tell application myFrontMost
		set windowSize to bounds of window 1
		set windowXl to item 1 of windowSize
		set windowYt to item 2 of windowSize
		set windowXr to item 3 of windowSize
		set windowYb to item 4 of windowSize

		set windowWidth to windowXr - windowXl

		set bounds of window 1 to {¬
			(screenWidth - windowWidth) / 2.0, ¬
			windowYt, ¬
			(screenWidth + windowWidth) / 2.0, ¬
			windowYb}
	end tell
end try
</pre>
<p>Paste this into Script Editor or <a href='http://static.incrementalism.net/wp-content/uploads/2009/07/Center-Window.scpt'>download the script file</a>. Put the file in ~/Library/Scripts. Make sure you&#8217;ve got the Script menu turned on in the AppleScript Utility application. It will show up in there, and should work in most Mac applications.</p>
<p>I have found a couple of limitations. It doesn&#8217;t seem to work at all with Firefox, which doesn&#8217;t have very complete AppleScript support. It&#8217;s likely that there are other applications out there with missing or incomplete AppleScript support that this won&#8217;t work for either. The second problem is that there&#8217;s <a href="http://openradar.appspot.com/5765608">a bug in the Terminal application</a> that moves the window upwards, even though the script is written in a way that&#8217;s supposed to preserve the vertical position. It would be possible to work around this, but I decided that it didn&#8217;t bother me enough to clutter up the code. If you want a workaround, post a comment and I&#8217;ll give it a shot.</p>
<p>The original script doesn&#8217;t specify a license, so I hope it&#8217;s OK to modify and share it. I figure that, since it&#8217;s published on GitHub, and the author releases a lot of open source code under very liberal licenses, that he&#8217;s probably not intending to keep very tight control over it. My changes are offered to the public domain.</p>
<p>I&#8217;m just as obsessive with making sure objects are lined up straight on my (real life) desk top. Sadly, AppleScript can&#8217;t help me there.</p>
<p><strong>Update, 15-Nov-2010:</strong> This continues to be a fairly popular post, which a lot of people seem to come across through search engines. See the comments below for tips about ensuring that the window size doesn&#8217;t change, and for centering vertically as well. I&#8217;ve also noticed that this fails on multi-display setups, centering between the two screens instead of on the current screen. I&#8217;ll try to come up with a fix for that.</p>
]]></content:encoded>
			<wfw:commentRss>http://incrementalism.net/tech/centering-windows-in-mac-os-x-with-applescript/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>The Difficulty of Keeping Focus</title>
		<link>http://incrementalism.net/personal/the-difficulty-of-keeping-focus</link>
		<comments>http://incrementalism.net/personal/the-difficulty-of-keeping-focus#comments</comments>
		<pubDate>Thu, 23 Apr 2009 06:15:18 +0000</pubDate>
		<dc:creator>Tim Moore</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[eyeglasses]]></category>
		<category><![CDATA[GTD]]></category>
		<category><![CDATA[objectives]]></category>
		<category><![CDATA[OmniFocus]]></category>
		<category><![CDATA[organization]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Things]]></category>

		<guid isPermaLink="false">http://incrementalism.net/?p=92</guid>
		<description><![CDATA[A few weekends ago, through a combination of stupidity and bad luck, I managed to leave my eyeglasses on a train. Without them I can see about three feet in front of me pretty clearly, and beyond that, everything is pretty much a blurry haze. To make the situation worse, I was traveling for work [...]]]></description>
			<content:encoded><![CDATA[<p>A few weekends ago, through a combination of stupidity and bad luck, I managed to leave my eyeglasses on a train. Without them I can see about three feet in front of me pretty clearly, and beyond that, everything is pretty much a blurry haze.</p>
<p>To make the situation worse, I was traveling for work at the time, 2,812 miles from home and my extra pair of specs. Luckily, I was in the second-least-horrible place in the world this could have happened: Washington DC. I grew up just outside the city, worked in it for six years, and spent most of my free time between June 1998, when I left school in Pittsburgh, and April 2005, when I moved to San Francisco, in the neighborhood where my hotel happened to be. I still know the city well enough that I was able to stumble my way around and find food for two more days without being able to read any of the street signs or storefronts until I was just about right on top of them. But it was <em>not</em> fun, especially when it came time to try to navigate the airports on my way home.</p>
<p><span id="more-92"></span></p>
<p>This is just the latest example of my notorious absent-mindedness. Just as with my eyesight, I have immense trouble keeping my attention focused without artificial aid. This plagues me in all sorts of different ways, from losing possessions, to chronic tardiness, to hobbies and projects that never really get off the ground. I&#8217;ve always been better at dreaming up ambitious plans than following through with them. I started writing this blog post over a month ago!</p>
<p>So, it was with complete earnestness and good intention that I published <a href="http://incrementalism.net/personal/objectives-for-2009">my personal objectives for 2009</a>, and I made a good start on all of them, early in the year. As is often the case for New Year&#8217;s resolutions, I fell off quickly. I haven&#8217;t given up, though, I&#8217;ve just changed my approach.</p>
<p>I think it was a mistake to try to do all of them at once. Embarking on five projects at once is a great way to avoid focusing on any of them. I have to force myself to tackle one at a time.</p>
<p>The natural place to start is by getting myself organized. Without a good system for keeping track of all of the things that I want to do (or <em>have</em> to do), I tend to fall back on doing whatever occurs to me in the moment&#8230; and later stressing out about the things that I&#8217;ve forgotten during moments that I can&#8217;t do anything about them. As I mentioned in my last post, I&#8217;ve tried using systems based on paper or index cards for this before, but they never felt right. I really need the ability to sort, filter, and edit without having to spread things out across a table and keep a pile of blank cards on my person all the time.</p>
<p>I briefly tried some web-based applications, but they didn&#8217;t feel right either. I think it&#8217;s important to be able to capture ideas very quickly, at any time, with minimal interruption of my concentration. Requiring an internet connection&#8212;absent on the train and unreliable at other times&#8212;makes this impractical at times, and even when a fast connection <em>is</em> available, needing to go to my web browser, open a new tab, and load a site before being able to enter a new task is just enough of a context switch to make me lose my focus on what I&#8217;m doing.</p>
<p>So I quickly carved my choices down to the two most popular OS X tools: <a href="http://www.omnigroup.com/applications/omnifocus/">OmniFocus</a> and <a href="http://culturedcode.com/things/">Things</a>. On their face, they are similar in more ways than they&#8217;re different. Both have a Mac application and and an iPhone companion that can sync with it. Both allow you to organize tasks around multiple dimensions (for example, the project it belongs to and the context you need to be in to do it). Both support repeating tasks, on-hold projects, deferred tasks and notes. Both have a quick entry window that can be called up with a keyboard shortcut to capture tasks without switching contexts. Both were built to support the <a href="http://www.davidco.com/what_is_gtd.php">GTD</a> system, but also to be flexible enough to adapt to individual users. They each have devoted fans and a lot to recommend.</p>
<p>Things is a little newer, and has some great visual design. The user interface is simple and appealing, and it&#8217;s been promoted by its fans as the less complicated alternative. It supports flexible tagging of items, and has a very intuitive filter bar to limit your view to the items with the tags that apply right now. It&#8217;s also less expensive than OmniFocus.</p>
<p>OmniFocus, on the other hand, is a little more heavyweight, but also felt a little more stable and polished. It&#8217;s not quite as pretty as Things, but the UI feels more natural to me. It is a lot easier to use by keyboard, and it&#8217;s heritage as a descendant of outlining software makes it a really great way to organize thoughts that might start out as unstructured notes, jotted down in the middle of doing something else, and are later organized into multi-stage projects with smaller projects inside them. It may be more complex than Things, but the complexity mirrors the projects you&#8217;re using it to organize. It doesn&#8217;t need to be more complicated than you want it to be, but it doesn&#8217;t impose artificial simplicity on you either.</p>
<p>OmniFocus also has much better support for syncing across multiple computers than Things does. I switch between three different computers and an iPhone on a regular basis. OmniFocus handles syncing across the internet very well&#8230; maybe a little more slowly than I&#8217;d like, but with very few conflict problems and little effort required. For the most part, it &#8220;just works.&#8221; Things requires syncing to your phone over wi-fi, rather than syncing both the phone and the computer to an internet file server. This means you need to remember to sync your phone any time you make changes to your computer, or else you might find yourself at the grocery store with only half of your shopping list. The situation for syncing multiple computers is even worse: it requires use of a third-party syncing service such as <a href="https://www.getdropbox.com/">Dropbox</a>, and reports from users indicate that forgetting to close Things on one computer before opening it on another can result in a corrupt database. Ouch. Put those two problems together, and it makes it seem like syncing Things would require constant diligence and attention&#8230; in other words, I&#8217;d have to work around the software&#8217;s deficiencies rather than the other way around. That&#8217;s pretty much the opposite of the reason I&#8217;m interested in the software in the first place. Cultured Code, the company that makes Things, has said that better multi-computer syncing is their top priority for the next release, but I&#8217;ve learned in technology not to count your chickens before they hatch.</p>
<p>What&#8217;s more, during my trial of Things, I ran into a number of UI glitches and other bugs. It may <em>look</em> nicer in the pictures and screencasts, but OmniFocus felt more robust. This is not to disparage Things. It&#8217;s a new product and a few glitches are inevitable. But OmniFocus has the benefit of more maturity (though it&#8217;s only a couple of years old itself) and it&#8217;s still progressing pretty quickly. I had pretty much decided to buy a copy of OmniFocus when a <a href="http://daringfireball.net/linked/2009/03/13/omnifocus">15% discount</a> rolled into my RSS reader, courtesy of Daring Fireball. Sold!</p>
<p>A month later, I already feel like it&#8217;s helping, although I&#8217;m really only just getting started. One of the key insights in David Allen&#8217;s methodology is that the separation of capturing, processing, and acting on information helps to reduce overload. OmniFocus is really ideal for putting that into practice, and I realize now that the main problem with everything I&#8217;ve tried in the past is that they&#8217;ve only really covered capturing. Processing the information is too tedious with pencil and paper or basic to-do list applications, and it&#8217;s difficult to focus on the items that are currently relevant from one moment to the next.</p>
<p>Which isn&#8217;t to say that I feel totally in control yet. I still have much more that I want to do than I have the time and energy for, but what I&#8217;m hoping is that I can get better about juggling those things with the things that I <em>need</em> to do but don&#8217;t particular enjoy, and especially the things that I may think I need to do, but turn out not to be so important in the end.</p>
]]></content:encoded>
			<wfw:commentRss>http://incrementalism.net/personal/the-difficulty-of-keeping-focus/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Of Names</title>
		<link>http://incrementalism.net/tech/of-names</link>
		<comments>http://incrementalism.net/tech/of-names#comments</comments>
		<pubDate>Thu, 04 Dec 2008 10:06:46 +0000</pubDate>
		<dc:creator>Tim Moore</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[domain]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[incrementalism]]></category>
		<category><![CDATA[name]]></category>

		<guid isPermaLink="false">http://incrementalism.net/?p=9</guid>
		<description><![CDATA[I&#8217;ve always liked my name. Tim Moore: it&#8217;s short, easy to spell and not often mispronounced. Even when expanded to its formal entirety &#8212; Timothy Marcus Moore &#8212; it&#8217;s hard to get it wrong. What my name has going for it in simplicity, however, it lacks in uniqueness. Although my Googleability has risen quickly in [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve always liked my name. Tim Moore: it&#8217;s short, easy to spell and not often mispronounced. Even when expanded to its formal entirety &#8212; Timothy Marcus Moore &#8212; it&#8217;s hard to get it wrong.</p>
<p>What my name has going for it in simplicity, however, it lacks in uniqueness. Although my Googleability has risen quickly in the last year and a half or so, if you search for <a href="http://www.google.com/search?q=%22tim+moore%22">&#8220;Tim Moore&#8221;</a> you&#8217;ll tend to come across Amos &rsquo;n&rsquo; Andy actor <a href="http://www.geocities.com/~jimlowe/tmoore/tmoordex.html">Tim Moore</a>, &#8217;70s AM radio soft pop singer <a href="http://www.artistdirect.com/nad/store/artist/album/0,,134137,00.html">Tim Moore</a>, Michigan Republican Representative <a href="http://www.gophouse.com/welcome.asp?District=97">Tim Moore</a>, or British travel writer <a href="http://books.google.com/books?q=%22tim+moore%22">Tim Moore</a> before you find any mention of yours truly. The <a href="http://en.wikipedia.org/wiki/Tim_Moore">Wikipedia disambiguation page</a> for my name doesn&#8217;t even mention me among the nine &#8220;people called Tim Moore.&#8221;</p>
<p><span id="more-9"></span></p>
<p>Besides the pseudo-famous Tim Moores of the world, I run into other like-named individuals pretty regularly. On two separate occasions during childhood I went to schools with other students named Tim Moore. Once I met a Tim Moore in a bar in DC. It&#8217;s gotten worse in the internet era. I&#8217;ve been mistaken on IRC for Common Lisp luminary <a href="http://www.cliki.net/Tim%20Moore">Tim Moore</a>. Even working at Atlassian, I was surprised to discover some <a href="http://forums.atlassian.com/message.jspa?messageID=257287890#257287890">posts on our forums</a> that I didn&#8217;t remember writing, only to realize that I have <a href="http://forums.atlassian.com/profile.jspa?userID=11197">a customer namesake there</a> as well.</p>
<p>This is the reason, I suppose, that most people with common names &#8212; especially if they&#8217;re as geeky as I am &#8212; invent some kind of <a href="http://www.google.com/search?q=wonderyort">internet handle</a> early on in their online lives. I&#8217;ve never been able to commit to one; it always seems too cheesy to me. My <a href="http://www.google.com/search?q=djresistor">one past attempt</a> feels regrettable now, and it looks like <a href="http://www.myspace.com/djresistor">it&#8217;s been hijacked</a> now by some other guy in Brisbane anyway.</p>
<p>So when I decided to buy my first personal domain name in 2002, I couldn&#8217;t think of anything to register other than my own name. Most variations of tmoore.com, timmoore.com, timothymoore.com, etc. were unavailable, but a new <a href="http://en.wikipedia.org/wiki/.name">.name</a> top-level domain had recently become available, and it seemed like exactly what I wanted. The way .name domains worked at the time, you couldn&#8217;t buy a second-level domain. Instead, second-level domains were reserved for surnames, and were shared between all registrants that have that name. Your first name was registered to you as a third-level domain, and an email alias was set up so firstname@lastname.name forwards to another address of your choosing. Unfortunately, tim.moore.name was already taken, so I registered timothy.moore.name and began to use timothy at moore.name as my preferred email address.</p>
<p>It&#8217;s been a great convenience using a forwarding alias for my primary email address. I&#8217;ve moved between several email providers in the last six years, and most of the people who send me email have been none the wiser. I haven&#8217;t had to update the dozens of web site accounts and mailing list subscriptions that are sending to my .name address, and for the most part, it&#8217;s pretty easy for people to remember.</p>
<p>I say &#8220;for the most part&#8221; because it hasn&#8217;t been without the occasional headache. For one thing, most people aren&#8217;t aware of .name domains; they haven&#8217;t exactly been a raging success. And for people who think all domain names have to end in .com, .net or .org &#8212; trust me, there are more than you&#8217;d think &#8212; sometimes it can be hard to convince them that, yes, that&#8217;s actually my email address. Even worse are the poorly implemented form validation schemes used by an unfortunate number of websites. In that case, no amount of convincing will help, and I&#8217;m forced to give out another, more conventional address.</p>
<p>Mostly I could live with these drawbacks, directing my frustrations towards the ignorant people that failed to understand how domain names work, rather than my own choice of an unusual email address. In any case, it was easier to work around the occasional misunderstanding than to change the address I had been using for so long. But a few months ago I decided to finally transfer all of my domains off of the tacky godaddy.com registrar and discovered that things were worse than I realized.</p>
<p>The .name top-level domain experiment has mostly been a failure for the <a href="http://www.gnr.name/">Global Name Registry</a> &#8212; the company that administers these domains. There are few registrars that support them at all, and even fewer that support inbound transfers. The scheme was so unpopular that they decided years ago to abandon the restriction on registering second-level names &#8212; the &#8220;moore&#8221; in &#8220;timothy.moore.name&#8221; &#8212; and allow unused ones to be bought and sold freely.  In fact, most of the .name domains that have been sold since 2004 are of the second-level type, and of the small number of registrars that accept incoming .name transfers, an even smaller portion of them can handle the third-level domain transfer that I needed.</p>
<p>I found one, <a href="http://www.gandi.net/">Gandi.net</a>, that looked nice enough, so I started the transfer from Go Daddy. Once the transfer completed, I decided to change my email alias &#8212; it pointed to a Gmail account that I&#8217;m trying to move off of, and I figured that while I was in the middle of making changes, I might as well go through with that one too. The only problem was that I couldn&#8217;t find the place in the Gandi admin UI where the forwarding address is set. To my dismay, their tech support confirmed that there isn&#8217;t one. It turns out that the registration and transfer of the third-level .name domain email aliases is a completely separate process from the domain itself, supported by an even tinier fraction of .name registrars, not including Gandi. Even worse, the Global Name Registry&#8217;s <a href="http://www.gnr.name/nav-extensive.html">confusing table of registrar capabilities</a> incorrectly listed Gandi as supporting the email aliases, an error that has since been corrected after I alerted Gandi to the problem.</p>
<p>So I found <a href="http://www.123registration.com">one of the few registrars</a> that <em>does</em> support the email aliases and once again transfered the domain. The only problem is that somewhere in the switch from Go Daddy to Gandi to 123 Registration, the email registration got lost. None of the sites seems to be aware that I own it; Go Daddy no longer shows me the option to transfer it out, and 123 doesn&#8217;t seem to have received it during the inbound transfer. The mail is still being forwarded to my Gmail address correctly for the time being, but I have no way to change the address that it forwards <em>to</em>.</p>
<p>It&#8217;s possible that I could get this sorted out if I go through negotiations between Go Daddy, 123 Registration and the Global Name Registry, but at this point, I give up. Dot Name is a failure and a giant hassle. I&#8217;m still registered until 2010, but I&#8217;m phasing the address out. Luckily, I&#8217;ve got this incrementalism.net domain running here at DreamHost. It&#8217;s been working out pretty well for me, so I&#8217;m officially changing all of my personal email over to tmoore at this domain. If you ever send me email, update your address books now, because timothy at moore.name will be going away once the domain expires. I&#8217;ve been slowly switching over all of my online accounts to use the new address, and it really is a big headache, so I hope I don&#8217;t ever have to do this again.</p>
<p>You may be wondering, &#8220;why incrementalism?&#8221; Well, I&#8217;ve had a long interest in incremental processes, in software development, project planning, public policy, self-improvement, music, biology, economics, cosmology&#8230; the list goes on. In many ways, it seems that it&#8217;s the key to reliable improvement in the world, and on a personal level I find that incremental thinking is the only way I can ever get anything accomplished. Which is not to say that it&#8217;s the most natural way for me to think. On the contrary, I all too easily get wrapped up in ambitious, overreaching ideas and endless preparation for projects that I rarely start, much less finish. So I chose the name not to describe myself, but to remind myself of what I want to become, and that it&#8217;s OK to make only small, slow progress towards my goals for now, as long as I can start again later and keep going.</p>
<p>Quoting artist Chuck Close, via <a href="http://www.43folders.com/2008/01/11/working-close">Merlin Mann&#8217;s 43 Folders</a>:</p>
<blockquote><p>
What I found that one of the nice things [about] working incrementally is that I don&#8217;t have to reinvent the wheel every single day. Today I did what I did. You can pick it up and put it down. I don&#8217;t have to wait for inspiration. There are no good days or bad days. Every day essentially builds positively on what I did the day before
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://incrementalism.net/tech/of-names/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Infallible APIs</title>
		<link>http://incrementalism.net/tech/infallible-apis</link>
		<comments>http://incrementalism.net/tech/infallible-apis#comments</comments>
		<pubDate>Fri, 07 Mar 2008 16:22:26 +0000</pubDate>
		<dc:creator>Tim Moore</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[API design]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://incrementalism.net/tech/infallible-apis</guid>
		<description><![CDATA[Fellow Atlassian Charles Miller recently wrote an amusing post about methods and constructors in Java that declare a checked exception, but can be called in a way that is required by the specification not to fail. A common example involves string encodings: This code is the result of two conflicting factors. On one hand, since [...]]]></description>
			<content:encoded><![CDATA[<p>Fellow Atlassian Charles Miller recently wrote <a href="http://fishbowl.pastiche.org/2008/03/07/jsr666_extension_unthrowable_exceptions">an amusing post</a> about methods and constructors in Java that declare a checked exception, but can be called in a way that is required by the specification not to fail. A common example involves string encodings:</p>
<blockquote>
<pre class="brush: java; title: ; notranslate">
try {
    s = new String(byteArray, &quot;UTF-8&quot;);
} catch (UnsupportedEncodingException e) {
    throw new Error(&quot;UTF-8 is missing??&quot;);
}
</pre>
<p>This code is the result of two conflicting factors. On one hand, since the constructor in question takes an arbitrary character encoding, the case of the encoding being unavailable must be taken into account. On the other hand, 90% of code that calls this constructor will be explicitly invoking a character set that is required to be provided with the Java Runtime Environment, and its absence would be an error serious enough to justify terminating the VM entirely.
</p></blockquote>
<p>The unnecessary exception-handling code is ugly, and obscures the actual intent of the method in which it appears. Charles jokingly proposes adding a &#8220;yoda&#8221; statement to Java to tell the JVM, &#8220;do, or do not; there is no try.&#8221;</p>
<p><span id="more-16"></span></p>
<h4>Another Solution</h4>
<p>Usually, code smells like this indicate a poorly-designed API. If you know the method can be called in a way such that failure would mean there&#8217;s an internal error, then it shouldn&#8217;t be throwing a checked exception. As is often the case, you could solve this problem with stronger types:</p>
<pre class="brush: java; title: ; notranslate">
public class Charset {
    public static Charset findByName(String charsetName)
        throws UnsupportedEncodingException {
        // implementation left as an exercise for the reader...
    }
    // ...
    public static class Standard {
        public static final Charset UTF_8 = //...
        public static final Charset US_ASCII = //...
        // etc.
    }
}
</pre>
<p>Then give String a new constructor:</p>
<pre class="brush: java; title: ; notranslate">
    public String(byte[] bytes, Charset charset) {
        // no exception declared!
        //...
    }
</pre>
<p>Now you&#8217;ve got a few different ways to use this. When you know you want to use a built-in encoding:</p>
<pre class="brush: java; title: ; notranslate">
    String s = new String(byteArray, Charset.Standard.UTF_8);
    // no checked exception here!
</pre>
<p>When you want to use a variable encoding, that may or may not be defined in this VM:</p>
<pre class="brush: java; title: ; notranslate">
    Charset charset;
    try {
        charset = Charset.findByName(charsetName);
    } catch (UnsupportedEncodingException e) {
        System.err.println(&quot;Unknown charset: &quot; + charsetName
            + &quot;; falling back to US-ASCII&quot;);
        charset = Charset.Standard.US_ASCII;
    }
    String s = new String(byteArray, charset);
</pre>
<p>And the original <code>String</code> constructor could remain&#8212;rewritten to use the new <code>Charset</code> facilities&#8212;as a convenience for the case where you really do want to use an unknown encoding, and fail if it&#8217;s not present:</p>
<pre class="brush: java; title: ; notranslate">
    try {
        String s = new String(byteArray, charsetName);
    } catch (UnsupportedEncodingException e) {
        System.err.println(&quot;Unknown charset: &quot; + charsetName
            + &quot;; ignoring&quot;);
    }
</pre>
<h4>The Worst Part of it All</h4>
<p>As it happens, Sun, <em>did</em> add a <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/nio/charset/Charset.html"><code>Charset</code></a> class to Java in 1.4, as part of the NIO framework. Astonishingly, they still did not define constant implementations of <code>Charset</code> for the set of required standard ones. So you still have to look them up by name, and you still have to catch an exception! Worse yet, they invented some new exceptions for the purpose, <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/nio/charset/UnsupportedCharsetException.html"><code>UnsupportedCharsetException</code></a> and <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/nio/charset/IllegalCharsetNameException.html"><code>IllegalCharsetNameException</code></a>. These exceptions are unchecked runtime exceptions, which avoids the problem of having to clutter your code with exception handling code in the cases where you are using a standard charset, but makes it easier to mishandle cases where you aren&#8217;t.</p>
<p>The kicker, though, is that <code>String</code> does not have a constructor that accepts a <code>Charset</code> object! Instead, you&#8217;re supposed to use the <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/nio/charset/CharsetDecoder.html"><code>CharsetDecoder</code></a> class or the <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/nio/charset/Charset.html#decode(java.nio.ByteBuffer)"><code>decode</code></a> method of <code>Charset</code>, which wraps everything in <code>Buffer</code> objects, making you jump through a few hoops to accomplish the same things:</p>
<pre class="brush: java; title: ; notranslate">
    String s =
        Charset.forName(charsetName)
               .decode(ByteBuffer.wrap(byteArray))
               .toString();
    // this might throw an exception, but it's unchecked
    // so we don't need to catch it unless we want to handle it
</pre>
<p>Ick.</p>
<p>Still, though, the NIO charset handling is a little bit better than what we had before, and it gives you some flexibility that wasn&#8217;t there in the previous implementation (for example, you can control how to handle unmappable byte sequences). It wouldn&#8217;t be too hard to add in a few utility methods to smooth over the rough edges here. I&#8217;ll leave that as an exercise for the reader.</p>
]]></content:encoded>
			<wfw:commentRss>http://incrementalism.net/tech/infallible-apis/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Macworld 2008 Predictions</title>
		<link>http://incrementalism.net/tech/macworld-2008-predictions</link>
		<comments>http://incrementalism.net/tech/macworld-2008-predictions#comments</comments>
		<pubDate>Tue, 15 Jan 2008 07:42:45 +0000</pubDate>
		<dc:creator>Tim Moore</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Macworld]]></category>

		<guid isPermaLink="false">http://incrementalism.net/tech/macworld_2008_predictions</guid>
		<description><![CDATA[This year, even more than ever before it seems, everyone has a pet theory on what Steve Jobs will be announcing at tomorrow&#8217;s Macworld Expo keynote session. Since I&#8217;ve got my own ideas and have been trying to get myself to write on this site more often, I&#8217;ll throw in my two cents on the [...]]]></description>
			<content:encoded><![CDATA[<p>This year, even more than ever before it seems, everyone has a pet theory on what Steve Jobs will be announcing at tomorrow&#8217;s Macworld Expo keynote session. Since I&#8217;ve got my own ideas and have been trying to get myself to write on this site more often, I&#8217;ll throw in my two cents on the matter. I don&#8217;t have much that hasn&#8217;t already been said by many others, so I&#8217;ll try to keep this interesting.</p>
<p><span id="more-6"></span></p>
<p>My money is on wireless as the keynote&#8217;s theme. Obviously I&#8217;m not the first to say this, and the <a href="http://arstechnica.com/journals/apple.ars/2008/01/11/macworld-ars-first-banner-up-at-moscone-center">banners in the Moscone Center</a> are a big clue, but you&#8217;ll just have to take my word that I&#8217;ve suspected this for a while now. It&#8217;s clear to me that Jobs and Apple&#8217;s industrial design team must not be big fans of lots of cables hanging off a computer (and who is?) so it wouldn&#8217;t surprise me at all if there are teams of engineers trying to build a perfectly cable-free computer at Apple. I don&#8217;t know if they&#8217;ve gone quite that far yet, but I bet that the sub-notebook that they&#8217;re almost certainly announcing tomorrow will be pretty close.</p>
<p>I&#8217;m typing this right now on a rev A 12&#8243; PowerBook G4 that I bought in May of 2003. It&#8217;s reaching the end of its life &#8212; it won&#8217;t actually run on batteries anymore, so I need to keep it tethered to a wall &#8212; but five years ago, this was an incredible machine. It was compact, lightweight, fast, full-featured, and beautifully designed; it was one of the best computers Apple had ever created, and still is.</p>
<p>There&#8217;s absolutely no way that the notebook computer Apple is announcing tomorrow will be anything like the 12&#8243; G4. That is, they&#8217;re not putting a MacBook in a smaller package. If they were planning to do that, it would have already happened. The MacBook Pro is a fairly incremental update to the same basic design that started with the Aluminum PowerBooks, and a smaller version of those would not be noteworthy enough to headline the keynote presentation.</p>
<p>Instead, I think we&#8217;ll see a radically new computer that not only looks like nothing we&#8217;ve seen before, but presents us with an entirely new way of using and even thinking about portable computers.</p>
<p>Many of the rumor sites have reported that the new design will not include a built-in optical drive. The assumption is that it will be available as an external unit, but I&#8217;m not so sure. I find it just as likely, or even more likely, that Apple will instead announce a shift to fully electronic software distribution, perhaps even selling third-party software, probably leveraging the iTunes Store. This rumored MacBook Air will receive all of its updates wirelessly.</p>
<p>I would not be surprised if there are no peripheral ports at all on the device. External devices will use Bluetooth. Backups will use wi-fi with an Airport Extreme AirDisk, a feature present in the Leopard development versions of Time Machine that slipped from the final release, but will very likely return tomorrow, maybe even with a new, Apple-branded <a href="http://daringfireball.net/2008/01/macworld_expo_predictions">hard drive or RAID array with integrated wireless</a>. I am more hesitant to believe the rumors that they will announce ubiquitous wireless networking using WiMax, EDGE or EVDO, but it&#8217;s not out of the question and it would surely be welcome.</p>
<p>In the cases where you do need removable storage, the solution is literally right in front of most of us. I don&#8217;t think it was happenstance that many of the new features of Leopard were oriented around easier network setup, more flexible sharing, and remote access. I&#8217;ve got a feeling that the MacBook Air will be a computer that is explicitly designed as a companion device &#8212; one that is not intended to stand alone as your primary work machine, but to provide a portable window into the desktop machine that you most likely have sitting on your desk already at home or at work.</p>
<p>The pieces fit together perfectly: with Leopard&#8217;s Back to My Mac, Apple has already solved the problem of sharing files across the Internet, meaning that a portable device only needs to be powerful enough to get onto the network, connect to a host computer, and sync over whatever data you need here and now, or maybe even just act as a dumb terminal using screen sharing to control the desktop Mac directly. The limited need for speed, memory, storage and expansion ports then frees the hardware engineers to optimize for battery life, wireless performance, and weight. It could all add up to something pretty revolutionary: a truly ultra-portable computer that would not need to be much larger than a magazine but could potentially provide the power of a Mac Pro wherever you are.</p>
<p>Now, it&#8217;s pretty likely that a lot of my &#8220;prediction&#8221; is really more like projection. The fact is, this is exactly the kind of computer that I&#8217;d really like right now. I&#8217;ve got Mac desktops at home and at work, and I&#8217;m completely happy with them except on the occasions where I go out of town&#8230; or just feel like blogging from a cafe or browsing Google Reader on the couch. It&#8217;s hard to justify buying a full-featured laptop for those occasions, not just because of the price, but because of the hassle of keeping my data in sync, not to mention lugging it around in my bag. If the MacBook Air turns out to be anything like I hope, Apple will surely get more of my money tomorrow.</p>
]]></content:encoded>
			<wfw:commentRss>http://incrementalism.net/tech/macworld-2008-predictions/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced
Database Caching 3/33 queries in 0.255 seconds using disk: basic
Object Caching 676/741 objects using disk: basic
Content Delivery Network via static.incrementalism.net

Served from: incrementalism.net @ 2012-02-05 23:52:03 -->
