<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/atom10full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://boredzo.org/blog/wp-atom.php">
	<title type="text">Domain of the Bored</title>
	<subtitle type="text">The personal weblog of Peter Hosey.</subtitle>

	<updated>2008-06-27T02:40:40Z</updated>
	<generator uri="http://wordpress.org/" version="2.5.1">WordPress</generator>

	<link rel="alternate" type="text/html" href="http://boredzo.org/blog" />
	<id>http://boredzo.org/blog/feed/atom</id>
	

			<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /><link rel="self" href="http://feeds.feedburner.com/domainofthebored" type="application/atom+xml" /><entry>
		<author>
			<name>Peter Hosey</name>
						<uri>http://boredzo.org./</uri>
					</author>
		<title type="html"><![CDATA[New tool: sednames]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/domainofthebored/~3/316696684/new-tool-sednames" />
		<id>http://boredzo.org/blog/?p=679</id>
		<updated>2008-06-21T05:33:37Z</updated>
		<published>2008-06-21T05:21:10Z</published>
		<category scheme="http://boredzo.org/blog" term="Creations" /><category scheme="http://boredzo.org/blog" term="Programming" /><category scheme="http://boredzo.org/blog" term="Toolchain" /><category scheme="http://boredzo.org/blog" term="Version control" />		<summary type="html"><![CDATA[What if you could use sed to rename files?

Well, now you can.

sednames is a utility that lets you specify a program for sed on the command-line, which it then uses to rename the files that you also specify on the command-line.

The twist is that, unlike other batch-renamers, sednames also supports your VCS. For the most [...]]]></summary>
		<content type="html" xml:base="http://boredzo.org/blog/archives/2008-06-20/new-tool-sednames">&lt;p&gt;What if you could use &lt;a href="x-man-page://1/sed"&gt;sed&lt;/a&gt; to rename files?&lt;/p&gt;

&lt;p&gt;Well, now you can.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://boredzo.org/sednames"&gt;sednames&lt;/a&gt; is a utility that lets you specify a program for sed on the command-line, which it then uses to rename the files that you also specify on the command-line.&lt;/p&gt;

&lt;p&gt;The twist is that, unlike other batch-renamers, sednames also supports your VCS. For the most common cases (&lt;a href="http://subversion.tigris.org/"&gt;svn&lt;/a&gt;, &lt;a href="http://selenic.com/mercurial"&gt;hg&lt;/a&gt;, &lt;a href="http://bazaar-vcs.org/"&gt;bzr&lt;/a&gt;, and &lt;a href="http://git.or.cz/"&gt;git&lt;/a&gt;), there's a &lt;span style="white-space: nowrap"&gt;--vcs&lt;/span&gt; option:&lt;/p&gt;

&lt;pre&gt;&lt;tt&gt;% &lt;kbd&gt;sednames -e 's/Replace/Mix/' --vcs=hg *&lt;/kbd&gt;&lt;/tt&gt;&lt;/pre&gt;

&lt;p&gt;This command-line will use Mercurial (&lt;kbd&gt;hg mv&lt;/kbd&gt;) to rename every file by replacing “Replace” with “Mix”. Of course, if a name doesn't contain “Replace”, then that name will be unchanged and sednames is smart enough to not try to rename that file.&lt;/p&gt;

&lt;p&gt;Not only that, but just in case you're using some oddball VCS (or you want to copy instead of rename, or something), sednames supports using &lt;em&gt;any&lt;/em&gt; program to rename your files, as long as it accepts both the before and after names in its arguments. The &lt;span style="white-space: nowrap"&gt;--help&lt;/span&gt; output is more specific, but to put it simply, it works similarly to &lt;a href="x-man-page://1/find"&gt;find&lt;/a&gt;'s &lt;span style="white-space: nowrap"&gt;-exec&lt;/span&gt; option.&lt;/p&gt;

&lt;p&gt;You can &lt;a href="http://boredzo.org/sednames/hg/index.cgi/raw-file/tip/sednames.py"&gt;download the current revision directly&lt;/a&gt;, or use &lt;a href="http://boredzo.org/sednames/hg"&gt;the Mercurial repository&lt;/a&gt; to follow or contribute to its development.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=5mRVcI"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=5mRVcI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=tAOdri"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=tAOdri" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/domainofthebored/~4/316696684" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://boredzo.org/blog/archives/2008-06-20/new-tool-sednames#comments" thr:count="4" />
		<link rel="replies" type="application/atom+xml" href="http://boredzo.org/blog/archives/2008-06-20/new-tool-sednames/feed/atom" thr:count="4" />
		<thr:total>4</thr:total>
	<feedburner:origLink>http://boredzo.org/blog/archives/2008-06-20/new-tool-sednames</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Peter Hosey</name>
						<uri>http://boredzo.org./</uri>
					</author>
		<title type="html"><![CDATA[Free stuff on iTunes: Cable TV]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/domainofthebored/~3/314084015/free-stuff-on-itunes-cable-tv" />
		<id>http://boredzo.org/blog/?p=678</id>
		<updated>2008-06-17T21:07:19Z</updated>
		<published>2008-06-17T21:06:47Z</published>
		<category scheme="http://boredzo.org/blog" term="iTunes/iPod" />		<summary type="html"><![CDATA[From the podcast directory, some free cable TV talk shows. All of these carry (what appear to be) full episodes:


Bill Moyers Journal (PBS)
Countdown with Keith Olbermann (MSNBC)
Fox News Sunday (Fox News)
Late Edition with Wolf Blitzer (CNN)
The McLaughlin Group (PBS)
Real Time with Bill Maher (HBO)
Washington Week with Gwen Ifill (PBS)


Note: I don't endorse any of these [...]]]></summary>
		<content type="html" xml:base="http://boredzo.org/blog/archives/2008-06-17/free-stuff-on-itunes-cable-tv">&lt;p&gt;From the podcast directory, some free cable TV talk shows. All of these carry (what appear to be) full episodes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="itms://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=272520089"&gt;Bill Moyers Journal&lt;/a&gt; (PBS)&lt;/li&gt;
&lt;li&gt;&lt;a href="itms://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=280946540"&gt;Countdown with Keith Olbermann&lt;/a&gt; (MSNBC)&lt;/li&gt;
&lt;li&gt;&lt;a href="itms://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=162101813"&gt;Fox News Sunday&lt;/a&gt; (Fox News)&lt;/li&gt;
&lt;li&gt;&lt;a href="itms://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=170271927"&gt;Late Edition with Wolf Blitzer&lt;/a&gt; (CNN)&lt;/li&gt;
&lt;li&gt;&lt;a href="itms://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=174906145"&gt;The McLaughlin Group&lt;/a&gt; (PBS)&lt;/li&gt;
&lt;li&gt;&lt;a href="itms://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=98746009"&gt;Real Time with Bill Maher&lt;/a&gt; (HBO)&lt;/li&gt;
&lt;li&gt;&lt;a href="itms://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=83324702"&gt;Washington Week with Gwen Ifill&lt;/a&gt; (PBS)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note: I don't endorse any of these shows, and purposefully listed them in alphabetical order.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=Ba1x8I"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=Ba1x8I" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=ggBkji"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=ggBkji" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/domainofthebored/~4/314084015" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://boredzo.org/blog/archives/2008-06-17/free-stuff-on-itunes-cable-tv#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://boredzo.org/blog/archives/2008-06-17/free-stuff-on-itunes-cable-tv/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://boredzo.org/blog/archives/2008-06-17/free-stuff-on-itunes-cable-tv</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Peter Hosey</name>
						<uri>http://boredzo.org./</uri>
					</author>
		<title type="html"><![CDATA[What to do if Python says “character mapping must return integer, None or unicode”]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/domainofthebored/~3/313489677/what-to-do-if-python-says-%e2%80%9ccharacter-mapping-must-return-integer-none-or-unicode%e2%80%9d" />
		<id>http://boredzo.org/blog/?p=677</id>
		<updated>2008-06-17T03:14:15Z</updated>
		<published>2008-06-17T03:14:13Z</published>
		<category scheme="http://boredzo.org/blog" term="Documentation" /><category scheme="http://boredzo.org/blog" term="Programming" /><category scheme="http://boredzo.org/blog" term="Python" />		<summary type="html"><![CDATA[So you're using the unicode class's translate method, and it says:

TypeError: character mapping must return integer, None or unicode

You may be wondering what causes this. After all, you're duly using the string.maketrans function. Surely this should be valid?

Well, no: You can only use string.maketrans with str.translate. For unicode.translate, you must use a different kind of [...]]]></summary>
		<content type="html" xml:base="http://boredzo.org/blog/archives/2008-06-16/what-to-do-if-python-says-%e2%80%9ccharacter-mapping-must-return-integer-none-or-unicode%e2%80%9d">&lt;p&gt;So you're using the &lt;code&gt;unicode&lt;/code&gt; class's &lt;code&gt;translate&lt;/code&gt; method, and it says:&lt;/p&gt;

&lt;blockquote&gt;&lt;tt&gt;TypeError: character mapping must return integer, &lt;code&gt;None&lt;/code&gt; or &lt;code&gt;unicode&lt;/code&gt;&lt;/tt&gt;&lt;/blockquote&gt;

&lt;p&gt;You may be wondering what causes this. After all, you're duly using the &lt;code&gt;string.maketrans&lt;/code&gt; function. Surely this should be valid?&lt;/p&gt;

&lt;p&gt;Well, no: You can only use &lt;code&gt;string.maketrans&lt;/code&gt; with &lt;code&gt;&lt;em&gt;str&lt;/em&gt;.translate&lt;/code&gt;. For &lt;code&gt;&lt;em&gt;unicode&lt;/em&gt;.translate&lt;/code&gt;, you must use a different kind of translation table:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;… a mapping of Unicode ordinals to Unicode ordinals [&lt;code&gt;int&lt;/code&gt;], Unicode strings [&lt;code&gt;unicode&lt;/code&gt;] or &lt;code&gt;None&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;cite href="http://docs.python.org/lib/string-methods.html"&gt;— &lt;a href="http://docs.python.org/lib/string-methods.html"&gt;3.6.1 String Methods&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;

&lt;p&gt;In &lt;a href="http://boredzo.org/localization_helper/"&gt;Localization Helper&lt;/a&gt;, I had to replace my &lt;code&gt;string.maketrans&lt;/code&gt; call with this code:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;dict(zip(map(ord, u'\a\b\t\n\v\f\r'), u'abtnvfr'))
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Note that I need to call &lt;code&gt;ord&lt;/code&gt; on each key character, because keys must be &lt;code&gt;int&lt;/code&gt;s.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=XiUJQI"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=XiUJQI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=xyaCWi"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=xyaCWi" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/domainofthebored/~4/313489677" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://boredzo.org/blog/archives/2008-06-16/what-to-do-if-python-says-%e2%80%9ccharacter-mapping-must-return-integer-none-or-unicode%e2%80%9d#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://boredzo.org/blog/archives/2008-06-16/what-to-do-if-python-says-%e2%80%9ccharacter-mapping-must-return-integer-none-or-unicode%e2%80%9d/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://boredzo.org/blog/archives/2008-06-16/what-to-do-if-python-says-%e2%80%9ccharacter-mapping-must-return-integer-none-or-unicode%e2%80%9d</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Peter Hosey</name>
						<uri>http://boredzo.org./</uri>
					</author>
		<title type="html"><![CDATA[New tool: Localization Helper]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/domainofthebored/~3/313145744/new-tool-localization_helper" />
		<id>http://boredzo.org/blog/?p=676</id>
		<updated>2008-06-17T03:31:06Z</updated>
		<published>2008-06-16T16:48:05Z</published>
		<category scheme="http://boredzo.org/blog" term="Creations" /><category scheme="http://boredzo.org/blog" term="Programming" /><category scheme="http://boredzo.org/blog" term="Toolchain" />		<summary type="html"><![CDATA[One thing that I noticed a few days ago while working on Growl 1.1.4 is that some strings aren't translated in a couple of the localizations. I reported this on our localization mailing list, but it got me thinking: I could really use a program that would scan a tree of source code and tell [...]]]></summary>
		<content type="html" xml:base="http://boredzo.org/blog/archives/2008-06-16/new-tool-localization_helper">&lt;p&gt;One thing that I noticed a few days ago while working on Growl 1.1.4 is that some strings aren't translated in a couple of the localizations. I reported this on our localization mailing list, but it got me thinking: I could really use a program that would scan a tree of source code and tell me of problems like this.&lt;/p&gt;

&lt;p&gt;So I wrote one.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://boredzo.org/localization-helper/"&gt;Localization Helper&lt;/a&gt; is a command-line tool to walk a tree of source code looking for .strings files, and compare different localizations of them. It reports duplicate (not-translated) strings, and will soon (maybe by the time you read this) report strings that are missing altogether.&lt;/p&gt;

&lt;p&gt;Currently, it only compares all other languages to one primary language, which defaults to English. I didn't feel like making it compare every language to every other language. ☺&lt;/p&gt;

&lt;p&gt;The program scans every directory you specify on the command-line. If you don't give it any arguments, it scans the current working directory. Also, it has some options, which you can see with the --help option.&lt;/p&gt;

&lt;p&gt;Here are some excerpts of its output for the Growl 1.1.3 source code:&lt;/p&gt;

&lt;blockquote&gt;&lt;pre&gt;*** Found problems in Core/Resources/*.lproj/Localizable.strings
Duplicate strings in Localizable.strings between English.lproj and cs.lproj:
"User went idle" = "User went idle";
"You are now considered idle by Growl" = "You are now considered idle by Growl";
"No activity for more than %d seconds." = "No activity for more than %d seconds.";
"Growl was unable to create the socket for Network notifications." = "Growl was unable to create the socket for Network notifications.";
"You are no longer considered idle by Growl" = "You are no longer considered idle by Growl";
⋮&lt;/pre&gt;&lt;/blockquote&gt;

&lt;blockquote&gt;&lt;pre&gt;!!! Warning: Localized file Extras/GrowlSafari/de.lproj/InfoPlist.strings is missing
!!! Warning: Localized file Extras/GrowlSafari/ja.lproj/InfoPlist.strings is missing

*** Could not read plist file at path Extras/GrowlSafari/de.lproj/Localizable.strings
*** Could not read plist file at path Extras/GrowlSafari/ja.lproj/Localizable.strings
*** Could not read plist file at path Extras/GrowlSafari/pt_BR.lproj/Localizable.strings
*** Could not read plist file at path Extras/GrowlSafari/sv.lproj/Localizable.strings&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;You'll need to have either Leopard or Python 2.5 + PyObjC (Leopard comes with both) to use the program. (BTW: PyObjC rocks.)&lt;/p&gt;

&lt;p&gt;Until I release it sometime later this week (hopefully), I provide two ways to get the program:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You can &lt;a href="http://boredzo.org/localization-helper/hg/index.cgi/raw-file/tip/localization_helper.py"&gt;download it directly&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;You can clone my repository:
&lt;kbd&gt;hg clone http://boredzo.org/localization-helper/hg/&lt;/kbd&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Of course, if you clone your repository, then you can easily get updates by running &lt;kbd&gt;hg pull&lt;/kbd&gt;.&lt;/p&gt;

&lt;p&gt;Also, there's a &lt;a href="http://boredzo.org/localization-helper/hg/index.cgi/atom-log"&gt;commits feed&lt;/a&gt;, in case you want to stay on top of localization_helper's development using your feed reader.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=46LcVI"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=46LcVI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=9mvibi"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=9mvibi" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/domainofthebored/~4/313145744" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://boredzo.org/blog/archives/2008-06-16/new-tool-localization_helper#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://boredzo.org/blog/archives/2008-06-16/new-tool-localization_helper/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://boredzo.org/blog/archives/2008-06-16/new-tool-localization_helper</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Peter Hosey</name>
						<uri>http://boredzo.org./</uri>
					</author>
		<title type="html"><![CDATA[Growl 1.1.3]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/domainofthebored/~3/306407048/growl-113" />
		<id>http://boredzo.org/blog/?p=675</id>
		<updated>2008-06-06T22:30:10Z</updated>
		<published>2008-06-06T22:30:10Z</published>
		<category scheme="http://boredzo.org/blog" term="Growl" />		<summary type="html"><![CDATA[I just released version 1.1.3 of Growl. Some highlights from the version history:


Worked around conflict with Logitech Control Center 2.4, and implemented countermeasures in case another input-manager hack in the future has the same bug
Show notifications on every Space (Leopard)
Rewrote GrowlMail to fix conflict between it and Leopard, and make it much more robust for [...]]]></summary>
		<content type="html" xml:base="http://boredzo.org/blog/archives/2008-06-06/growl-113">&lt;p&gt;I just released version 1.1.3 of &lt;a href="http://growl.info/"&gt;Growl&lt;/a&gt;. Some highlights from the &lt;a href="http://growl.info/versionhistory.php"&gt;version history&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Worked around conflict with Logitech Control Center 2.4, and implemented countermeasures in case another input-manager hack in the future has the same bug&lt;/li&gt;
&lt;li&gt;Show notifications on every Space (Leopard)&lt;/li&gt;
&lt;li&gt;Rewrote GrowlMail to fix conflict between it and Leopard, and make it much more robust for the future&lt;/li&gt;
&lt;li&gt;Updated GrowlSafari to work with Safari 3.0 and later (thanks to Ben Willmore)&lt;/li&gt;
&lt;li&gt;Fixed growlnotify to actually send the notification on Leopard&lt;/li&gt;
&lt;li&gt;Fixed a hang on changing the default display&lt;/li&gt;
&lt;li&gt;Fixed displaying a close widget on mouse-over&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those aren't the only improvements, but they're the most major. Growl and its extras are finally completely Leopard-ready.&lt;/p&gt;

&lt;p&gt;You can download 1.1.3 either from the About tab in the Growl preference pane, or from the website.&lt;/p&gt;

&lt;p&gt;In other news, this is my first release as the Lead Developer of Growl. I'm replacing Brian Ganninger, who was (IIRC) Lead Developer for the entire 1.1 series. Let us all thank him for his excellent work, and wish him well for the future.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=qS1jFI"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=qS1jFI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=0N4dvi"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=0N4dvi" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/domainofthebored/~4/306407048" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://boredzo.org/blog/archives/2008-06-06/growl-113#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://boredzo.org/blog/archives/2008-06-06/growl-113/feed/atom" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://boredzo.org/blog/archives/2008-06-06/growl-113</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Peter Hosey</name>
						<uri>http://boredzo.org./</uri>
					</author>
		<title type="html"><![CDATA[WWDC Survival Guide]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/domainofthebored/~3/305757415/wwdc-survival-guide" />
		<id>http://boredzo.org/blog/?p=674</id>
		<updated>2008-06-06T12:53:22Z</updated>
		<published>2008-06-06T02:46:58Z</published>
		<category scheme="http://boredzo.org/blog" term="Apple" />		<summary type="html"><![CDATA[I'm not attending WWDC this year (sorry!), but I did attend last year, so I have some advice for those of you attending for the first time (and I hear there are a lot of you).


Walk.
San Francisco isn't designed to handle car traffic—it's optimized for pedestrians, in several ways:

Most streets are one-way, meaning that a [...]]]></summary>
		<content type="html" xml:base="http://boredzo.org/blog/archives/2008-06-05/wwdc-survival-guide">&lt;p&gt;I'm not attending WWDC this year (sorry!), but I did attend last year, so I have some advice for those of you attending for the first time (and I hear &lt;a href="http://www.macworld.com/article/133468/2008/05/wwdcsoldout.html"&gt;there are a lot of you&lt;/a&gt;).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;h3&gt;Walk.&lt;/h3&gt;
&lt;p&gt;San Francisco isn't designed to handle car traffic—it's optimized for pedestrians, in several ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Most streets are one-way, meaning that a car must take a longer route than a pedestrian can.&lt;/li&gt;
&lt;li&gt;The walk/don't walk signals don't have buttons, because you don't need them. When drivers get the green light, pedestrians get the walk signal—every time.&lt;/li&gt;
&lt;li&gt;Almost all parking costs money per hour. Walking is free.&lt;/li&gt;
&lt;li&gt;Parking is so sparse that you'll walk one or more blocks anyway.
So, if you can walk from your hotel to Moscone and back, do so. You'll get there faster and more cheaply.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;h3&gt;Don't eat the lunch.&lt;/h3&gt;
&lt;p&gt;The objects that Moscone serves as lunch are not food. Food, by definition, is edible. Eat out.&lt;/p&gt;

&lt;p&gt;Note that I'm only talking about &lt;em&gt;lunch&lt;/em&gt;. Moscone serves food at other times of day: a mid-afternoon snack, and dinner. These are OK, and sometimes even pretty good. Only the lunch is inedible.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;h3&gt;Attend parties, or make your own.&lt;/h3&gt;
&lt;p&gt;If you're at WWDC with some friends or colleagues, you may be able to work on some code with them at the conference. This is a lot of fun, especially if you can get together around a power strip.&lt;/p&gt;
&lt;p&gt;Either way, you may want to attend other parties. &lt;a href="http://upcoming.yahoo.com/tag/wwdc/"&gt;Some parties are listed on Upcoming&lt;/a&gt;. Additionally, there's &lt;a href="http://theocacao.com/document.page/577"&gt;CocoaHeads meeting at the Apple Store on Stockton St on Tuesday&lt;/a&gt;. If you know any others, please post a comment here and I'll link to them. (However, I'd stay away from the Thirsty Bear pub. The acoustics in that place are terrible. Forget conversation.)&lt;/li&gt;
&lt;li&gt;&lt;h3&gt;Bring your (US) AC adapter.&lt;/h3&gt;
&lt;p&gt;They have charging stations at the conference, but the week I was there, the MBP chargers were broken. They never did get them fixed. I ended up buying a second AC adapter at the Apple Store.&lt;/p&gt;
&lt;p&gt;Additionally, &lt;a href="https://twitter.com/timburks/statuses/828153321"&gt;Tim Burks recommends bringing a power strip&lt;/a&gt;—a good idea if you and your friends/colleagues intend to hack code together at the conference. More specifically, &lt;a href="https://twitter.com/bobtiki/statuses/828168197"&gt;Mark Boszko recommends&lt;/a&gt; Monster Cable's (yes, them) &lt;a href="http://www.monstercable.com/productdisplay.asp?pin=3842"&gt;Outlets to Go&lt;/a&gt;. &lt;a href="https://twitter.com/bobtiki/statuses/828167434"&gt;He also notes the existence of 3- and 6-outlet versions&lt;/a&gt;, which you may prefer, depending on how much space you have in your bag.&lt;/li&gt;
&lt;li&gt;&lt;h3&gt;Grab a copy of The Onion.&lt;/h3&gt;
&lt;p&gt;You may or may not know this, but &lt;a href="http://theonion.com/"&gt;The Onion&lt;/a&gt; is not just a website and series of books—it really does exist as a newspaper. It's available &lt;em&gt;for free&lt;/em&gt; in newspaper racks in select cities, including San Francisco. I'm sorry, but I don't remember where the rack I got mine from was—I think it was on Market Street, but I don't remember the cross-street.&lt;/p&gt;
&lt;/ol&gt;

&lt;p&gt;Some good eating places:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=801+mission,+san+francisco,+ca&amp;amp;sll=37.786225,-122.404282&amp;amp;sspn=0.004053,0.004753&amp;amp;layer=c&amp;amp;ie=UTF8&amp;amp;ll=37.788251,-122.403917&amp;amp;spn=0.008106,0.009506&amp;amp;z=16&amp;amp;cbll=37.784196,-122.404651&amp;amp;panoid=n4KLJJBQOcO1BqvYq0bAew&amp;amp;cbp=1,120.2660231619392,,0,-0.16918083009952903"&gt;Mel's Diner&lt;/a&gt;, on Mission, southwest of 4th&lt;/li&gt;
&lt;li&gt;The aforementioned &lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=3rd+and+howard,+san+francisco,+ca&amp;amp;sll=37.789625,-122.399046&amp;amp;sspn=0.008106,0.009506&amp;amp;layer=c&amp;amp;ie=UTF8&amp;amp;ll=37.789625,-122.398961&amp;amp;spn=0.008106,0.009506&amp;amp;z=16&amp;amp;cbll=37.785577,-122.399778&amp;amp;panoid=gRrXQdT0tPWo3JWvo0hlsw&amp;amp;cbp=1,137.21698257501478,,0,-2.0334927941978043"&gt;Thirsty Bear Brewing Company&lt;/a&gt;, on Howard, northeast of 3rd.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=4th+and+mission,+san+francisco,+ca&amp;amp;sll=37.794796,-122.402201&amp;amp;sspn=0.03242,0.038023&amp;amp;layer=c&amp;amp;ie=UTF8&amp;amp;ll=37.788132,-122.404046&amp;amp;spn=0.008106,0.009506&amp;amp;z=16&amp;amp;cbll=37.784087,-122.404783&amp;amp;panoid=BXkzpTleQ49m09FIJw_1Sw&amp;amp;cbp=1,324.1230383952922,,1,7.957797970284188"&gt;Denny's&lt;/a&gt;, on Mission, southwest of 4th. (I haven't actually eaten at this specific Denny's, but I do enjoy the ones here in Orange County, CA.)&lt;/li&gt;
&lt;li&gt;The &lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=3rd+and+howard,+san+francisco,+ca&amp;amp;sll=37.789625,-122.399046&amp;amp;sspn=0.008106,0.009506&amp;amp;layer=c&amp;amp;ie=UTF8&amp;amp;cbll=37.78355,-122.40234&amp;amp;panoid=NyutduMoX_mZshiY4syPnA&amp;amp;cbp=1,125.22142509778054,,0,1.3826743715334755&amp;amp;ll=37.787607,-122.4016&amp;amp;spn=0.008106,0.009506&amp;amp;z=16"&gt;Yerba Buena Gardens&lt;/a&gt;, at the southeast corner of 3rd and Howard, but only on Thursday. (That's the WWDC Beer Bash. It's open to all, but if you want alcoholic beverages, you'll need to be 21 or over—not only is it the law, but they &lt;em&gt;will&lt;/em&gt; check your ID.)&lt;/li&gt;
&lt;li&gt;The Carl's Jr. restaurants on Market Street. There are two:
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=4th+and+market,+san+francisco,+ca&amp;amp;sll=37.788658,-122.4016&amp;amp;sspn=0.008106,0.009506&amp;amp;layer=c&amp;amp;ie=UTF8&amp;amp;ll=37.787047,-122.407544&amp;amp;spn=0.008106,0.009506&amp;amp;z=16&amp;amp;cbll=37.784319,-122.408429&amp;amp;panoid=tpNMWlBNBV1hIqsydJGklw&amp;amp;cbp=1,263.39484317401934,,1,-3.470101519310649"&gt;On Cyril Magrin St., north of Market&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=carl's+jr+near+market+st,+san+francisco,+ca&amp;amp;sll=37.77916,-122.42007&amp;amp;sspn=1.037651,1.216736&amp;amp;layer=c&amp;amp;ie=UTF8&amp;amp;ll=37.779873,-122.414201&amp;amp;spn=0.002027,0.002376&amp;amp;t=h&amp;amp;z=18&amp;amp;cbll=37.779724,-122.413467&amp;amp;panoid=1cyFOTaW8qa7YJnYQZKnkQ"&gt;Somewhere in the United Nations Plaza, near Hyde and Market&lt;/a&gt;. Sorry, but there's no Street View for that one.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Enjoy the WWDC!&lt;/p&gt;

&lt;p&gt;Also, &lt;strong&gt;be sure to read the comments on this post!&lt;/strong&gt; Already, Jonathan Wight has made two very wise suggestions. You may also want to check back periodically so you don't miss any.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=0fAG5I"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=0fAG5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=2DWeNi"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=2DWeNi" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/domainofthebored/~4/305757415" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://boredzo.org/blog/archives/2008-06-05/wwdc-survival-guide#comments" thr:count="11" />
		<link rel="replies" type="application/atom+xml" href="http://boredzo.org/blog/archives/2008-06-05/wwdc-survival-guide/feed/atom" thr:count="11" />
		<thr:total>11</thr:total>
	<feedburner:origLink>http://boredzo.org/blog/archives/2008-06-05/wwdc-survival-guide</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Peter Hosey</name>
						<uri>http://boredzo.org./</uri>
					</author>
		<title type="html"><![CDATA[Things your ReadMe must include]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/domainofthebored/~3/294102273/things-your-readme-must-include" />
		<id>http://boredzo.org/blog/?p=672</id>
		<updated>2008-05-24T16:09:50Z</updated>
		<published>2008-05-20T08:23:27Z</published>
		<category scheme="http://boredzo.org/blog" term="Best practices" /><category scheme="http://boredzo.org/blog" term="Documentation" /><category scheme="http://boredzo.org/blog" term="Programming" /><category scheme="http://boredzo.org/blog" term="Software distribution" />		<summary type="html"><![CDATA[
The name of your application
What it does
How to configure the application, if necessary (note: does not include installation)
Simple overview of how to use the software, once it's configured (detailed manual should be in the Help menu)
How to uninstall the software, if necessary (i.e., if it isn't an application)
FAQ
What it costs, if it's not free
How to [...]]]></summary>
		<content type="html" xml:base="http://boredzo.org/blog/archives/2008-05-20/things-your-readme-must-include">&lt;ul&gt;
&lt;li&gt;The name of your application&lt;/li&gt;
&lt;li&gt;What it does&lt;/li&gt;
&lt;li&gt;How to configure the application, if necessary (note: does not include installation)&lt;/li&gt;
&lt;li&gt;Simple overview of how to use the software, once it's configured (detailed manual should be in the Help menu)&lt;/li&gt;
&lt;li&gt;How to uninstall the software, if necessary (i.e., if it isn't an application)&lt;/li&gt;
&lt;li&gt;FAQ&lt;/li&gt;
&lt;li&gt;What it costs, if it's not free&lt;/li&gt;
&lt;li&gt;How to register it&lt;/li&gt;
&lt;li&gt;A link to your website (in case a magazine distributes your app on its CD)&lt;/li&gt;
&lt;li&gt;Contact information for support questions&lt;/li&gt;
&lt;li&gt;Contact information for sales (registration/pricing/currency) questions&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Things that you may want to include, but aren't necessary&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Screenshots&lt;/li&gt;
&lt;li&gt;Troubleshooting information&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Things that you shouldn't include&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Installation instructions: If it's a plain app, you don't need an installer; otherwise, make an Installer .pkg. In either case, you shouldn't need instructions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Formats I approve&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;RTF or RTFd&lt;/li&gt;
&lt;li&gt;HTML or webarchive&lt;/li&gt;
&lt;li&gt;Plain text&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You may also want to provide a trampoline application to open a localized version of your ReadMe (for example, see the ReadMe on the Mac OS X DVD). Bonus points if you create a kit to make these, for the benefit of other developers.&lt;/p&gt;

&lt;h3&gt;Formats I disapprove&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Word or OOXML format: Many people don't have Word, and everything else handles these documents imperfectly. Use RTF instead.&lt;/li&gt;
&lt;li&gt;OpenOffice format: Many (probably most) people don't have OpenOffice. Use RTF instead.&lt;/li&gt;
&lt;li&gt;PDF: Use PDF either for vector graphics (inside your app) or for documents you expect someone to print. If the user is going to have to print your ReadMe, you need an interface overhaul.&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;p&gt;As usual, I invite suggestions, rebuttals, and amendments.&lt;/p&gt;

&lt;p&gt;&lt;span class="update"&gt;UPDATE 2008-05-24:&lt;/span&gt; Recommended including contact information, as suggested by ssp.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=bn1M5H"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=bn1M5H" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=CSmO6h"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=CSmO6h" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/domainofthebored/~4/294102273" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://boredzo.org/blog/archives/2008-05-20/things-your-readme-must-include#comments" thr:count="5" />
		<link rel="replies" type="application/atom+xml" href="http://boredzo.org/blog/archives/2008-05-20/things-your-readme-must-include/feed/atom" thr:count="5" />
		<thr:total>5</thr:total>
	<feedburner:origLink>http://boredzo.org/blog/archives/2008-05-20/things-your-readme-must-include</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Peter Hosey</name>
						<uri>http://boredzo.org./</uri>
					</author>
		<title type="html"><![CDATA[What I want: A “best of” plug-in]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/domainofthebored/~3/293255007/what-i-want-a-%e2%80%9cbest-of%e2%80%9d-plug-in" />
		<id>http://boredzo.org/blog/?p=671</id>
		<updated>2008-05-19T05:36:00Z</updated>
		<published>2008-05-19T05:36:00Z</published>
		<category scheme="http://boredzo.org/blog" term="This blog" />		<summary type="html"><![CDATA[I want a plug-in for WordPress that will do two, or maybe three, things:


Put a “flag as best of” button on any post that I've authored. (I would have to be logged in.)
Provide a function to insert a div containing n=10 random best-of posts. I could then call this function from the sidebar.
(Optional) Provide a [...]]]></summary>
		<content type="html" xml:base="http://boredzo.org/blog/archives/2008-05-18/what-i-want-a-%e2%80%9cbest-of%e2%80%9d-plug-in">&lt;p&gt;I want a plug-in for WordPress that will do two, or maybe three, things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Put a “flag as best of” button on any post that I've authored. (I would have to be logged in.)&lt;/li&gt;
&lt;li&gt;Provide a function to insert a div containing &lt;var&gt;n&lt;/var&gt;=10 random best-of posts. I could then call this function from the sidebar.&lt;/li&gt;
&lt;li&gt;(Optional) Provide a single public page containing a link to every best-of post.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Does a plug-in like this exist already? If not, I'm not afraid to write it.&lt;/p&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=Kqi96H"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=Kqi96H" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=KtQzeh"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=KtQzeh" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/domainofthebored/~4/293255007" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://boredzo.org/blog/archives/2008-05-18/what-i-want-a-%e2%80%9cbest-of%e2%80%9d-plug-in#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://boredzo.org/blog/archives/2008-05-18/what-i-want-a-%e2%80%9cbest-of%e2%80%9d-plug-in/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://boredzo.org/blog/archives/2008-05-18/what-i-want-a-%e2%80%9cbest-of%e2%80%9d-plug-in</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Peter Hosey</name>
						<uri>http://boredzo.org./</uri>
					</author>
		<title type="html"><![CDATA[New app: Apple Extended Keyboard II Overlay Generator]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/domainofthebored/~3/285201447/aek2-overlay-generator" />
		<id>http://boredzo.org/blog/?p=667</id>
		<updated>2008-05-09T14:54:26Z</updated>
		<published>2008-05-07T07:46:27Z</published>
		<category scheme="http://boredzo.org/blog" term="Apple" /><category scheme="http://boredzo.org/blog" term="Creations" /><category scheme="http://boredzo.org/blog" term="Mac OS X" /><category scheme="http://boredzo.org/blog" term="Apple Extended Keyboard II" /><category scheme="http://boredzo.org/blog" term="keyboards" /><category scheme="http://boredzo.org/blog" term="Nimitz" />		<summary type="html"><![CDATA[Last week, John Gruber and Dan Benjamin released episode 20 of their podcast, The Talk Show. It was devoted to the Apple Extended Keyboard (the Saratoga) and Apple Extended Keyboard II (the Nimitz). This renewed my interest in bringing my own Nimitz back into service using a Griffin iMate.

The Nimitz is the greatest keyboard ever [...]]]></summary>
		<content type="html" xml:base="http://boredzo.org/blog/archives/2008-05-06/aek2-overlay-generator">&lt;p&gt;Last week, John Gruber and Dan Benjamin released episode 20 of their podcast, &lt;a href="http://thetalkshow.net/"&gt;The Talk Show&lt;/a&gt;. It was devoted to the Apple Extended Keyboard (the Saratoga) and Apple Extended Keyboard II (the Nimitz). This renewed my interest in bringing my own Nimitz back into service using a &lt;a href="http://griffintechnology.com/products/imate"&gt;Griffin iMate&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The Nimitz is the greatest keyboard ever made for the Macintosh. It has the best keys, the best height adjustment, the best Caps Lock key (it physically locks down!)—everything.&lt;/p&gt;

&lt;p&gt;One of its distinctive features is a couple of pegs near the top of the keyboard—one near the Escape key, and another near the Power key.&lt;/p&gt;

&lt;p&gt;The Saratoga had, printed under the F1 through F4 keys, the words “undo”, “cut”, “copy”, and “paste”. Because these definitions were useless (not to say confusing) to most Mac users, the Nimitz moved these labels to a plastic overlay that came with the keyboard. Those who actually needed it could put it on, which they did by hanging it on those two pegs, and everyone else could simply leave it in the box.&lt;/p&gt;

&lt;p class="image"&gt;&lt;a href="http://flickr.com/photos/penmachine/2457661040/"&gt;&lt;img width="451" height="243" alt="This is a photo by Flickr user penmachine (Derek K. Miller) of an Apple Extended Keyboard II with Apple's overlay, cropped to show the corner of the overlay hanging around the Power key." src="http://boredzo.org/aek2-overlay/AEK2-AppleOverlay-Cropped2.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That overlay is even more useless today. But I think the idea of an overlay defining the function keys is a good one, especially as Mac OS X has made the function keys actually useful.&lt;/p&gt;

&lt;p&gt;So I decided to make a new overlay.&lt;/p&gt;

&lt;p class="image"&gt;&lt;a href="http://flickr.com/photos/boredzo/2471179444/"&gt;&lt;img width="384" height="288" alt="This one does not have the seldom-useful F1–F4 labels. What is &lt;em&gt;does&lt;/em&gt; have is labels under F9–F12, listing their default Mac OS X actions (the three kinds of Exposé, plus Eject)." src="http://boredzo.org/aek2-overlay/AEK2-MacOSXOverlay-3-Cropped.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My original plan was to distribute the EPS file for this overlay, and provide instructions on how to customize it.&lt;/p&gt;

&lt;p&gt;After writing that it's easy to edit the file, followed by an entire page of instructions on how to do that properly, I decided it would be better to write an application to do it for you. I call this application the &lt;a href="http://boredzo.org/aek2-overlay"&gt;Apple Extended Keyboard II Overlay Generator&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I've included with the application two ready-made overlays: a replica of the classic Apple overlay; and my Mac OS X overlay. You also have the option of editing them or creating your own from scratch.&lt;/p&gt;

&lt;p&gt;Assembly instructions (among other information) and the download are on the webpage.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=QfFKQH"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=QfFKQH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=C9Jv2h"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=C9Jv2h" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/domainofthebored/~4/285201447" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://boredzo.org/blog/archives/2008-05-06/aek2-overlay-generator#comments" thr:count="10" />
		<link rel="replies" type="application/atom+xml" href="http://boredzo.org/blog/archives/2008-05-06/aek2-overlay-generator/feed/atom" thr:count="10" />
		<thr:total>10</thr:total>
	<feedburner:origLink>http://boredzo.org/blog/archives/2008-05-06/aek2-overlay-generator</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Peter Hosey</name>
						<uri>http://boredzo.org./</uri>
					</author>
		<title type="html"><![CDATA[Blog spam count: 2008-04]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/domainofthebored/~3/281852141/blog-spam-count-2008-04" />
		<id>http://boredzo.org/blog/?p=666</id>
		<updated>2008-05-02T03:57:34Z</updated>
		<published>2008-05-02T03:57:34Z</published>
		<category scheme="http://boredzo.org/blog" term="This blog" />		<summary type="html"><![CDATA[Spam comments blocked by Negative Turing Test in April 2008:

44,573

]]></summary>
		<content type="html" xml:base="http://boredzo.org/blog/archives/2008-05-01/blog-spam-count-2008-04">&lt;p&gt;Spam comments blocked by &lt;a href="http://code.google.com/p/negative-turing-test"&gt;Negative Turing Test&lt;/a&gt; in April 2008:&lt;/p&gt;

&lt;p style="text-align: center; font-size: 300%"&gt;44,573&lt;/p&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=0UqHVH"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=0UqHVH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=qMkU7h"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=qMkU7h" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/domainofthebored/~4/281852141" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://boredzo.org/blog/archives/2008-05-01/blog-spam-count-2008-04#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://boredzo.org/blog/archives/2008-05-01/blog-spam-count-2008-04/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://boredzo.org/blog/archives/2008-05-01/blog-spam-count-2008-04</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Peter Hosey</name>
						<uri>http://boredzo.org./</uri>
					</author>
		<title type="html"><![CDATA[Blog spam count: 2007-11 through 2008-03]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/domainofthebored/~3/262187390/blog-spam-count-2007-11-through-2008-03" />
		<id>http://boredzo.org/blog/?p=663</id>
		<updated>2008-04-01T20:10:51Z</updated>
		<published>2008-04-01T20:10:51Z</published>
		<category scheme="http://boredzo.org/blog" term="This blog" />		<summary type="html"><![CDATA[Average number of spam comments blocked by Negative Turing Test in per month from the start of November 2007 through the end of March 2008:

6,529.8

Total number of spam comments blocked by Negative Turing Test in the same time period:

32,649

Note that this is only on my blog, not any other blogs that use NTT.
]]></summary>
		<content type="html" xml:base="http://boredzo.org/blog/archives/2008-04-01/blog-spam-count-2007-11-through-2008-03">&lt;p&gt;Average number of spam comments blocked by &lt;a href="http://code.google.com/p/negative-turing-test"&gt;Negative Turing Test&lt;/a&gt; in per month from the start of November 2007 through the end of March 2008:&lt;/p&gt;

&lt;p style="text-align: center; font-size: 300%"&gt;6,529&lt;sup style="font-size:50%"&gt;.8&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Total number of spam comments blocked by Negative Turing Test in the same time period:&lt;/p&gt;

&lt;p style="text-align: center; font-size: 300%"&gt;32,649&lt;/p&gt;

&lt;p&gt;Note that this is only on my blog, not any other blogs that use NTT.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=pHp8SbG"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=pHp8SbG" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=Ss5mpNg"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=Ss5mpNg" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/domainofthebored/~4/262187390" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://boredzo.org/blog/archives/2008-04-01/blog-spam-count-2007-11-through-2008-03#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://boredzo.org/blog/archives/2008-04-01/blog-spam-count-2007-11-through-2008-03/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://boredzo.org/blog/archives/2008-04-01/blog-spam-count-2007-11-through-2008-03</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Peter Hosey</name>
						<uri>http://boredzo.org./</uri>
					</author>
		<title type="html"><![CDATA[The Targus Laptop Chill Mat is a piece of crap]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/domainofthebored/~3/261114624/targus-laptop-chill-mat" />
		<id>http://boredzo.org/blog/?p=662</id>
		<updated>2008-03-31T07:14:34Z</updated>
		<published>2008-03-31T07:12:14Z</published>
		<category scheme="http://boredzo.org/blog" term="Reviews" />		<summary type="html"><![CDATA[

Under my MacBook Pro, I use a Targus Laptop Chill Mat. The Chill Mat is an active-cooling pad: it contains two fans that suck in air at the top (i.e., between the laptop and the mat) and thrust it out the back.

And it is a piece of crap.

I'm currently on my second Chill Mat. The [...]]]></summary>
		<content type="html" xml:base="http://boredzo.org/blog/archives/2008-03-30/targus-laptop-chill-mat">&lt;p class="image" style="float: right"&gt;&lt;a href="http://flickr.com/photos/boredzo/2375977887/"&gt;&lt;img width="200" height="240" alt="" src="http://farm3.static.flickr.com/2265/2375977887_97d666bec7_m.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Under my MacBook Pro, I use a &lt;a href="http://www.targus.com/us/product_details.asp?sku=PA248U"&gt;Targus Laptop Chill Mat&lt;/a&gt;. The Chill Mat is an active-cooling pad: it contains two fans that suck in air at the top (i.e., between the laptop and the mat) and thrust it out the back.&lt;/p&gt;

&lt;p&gt;And it is a piece of crap.&lt;/p&gt;

&lt;p&gt;I'm currently on my second Chill Mat. The first one died when the connector in the mat went loose, so that the cable's connector no longer made a good connection with it. I sent that one in for warranty service, and got back the one I was using up until a few days ago. The way this one died is that the inline power switch on the cable is now permanently off, and just flops around; I cannot turn it on.&lt;/p&gt;

&lt;p&gt;Looking at the website in preparation for this post, I noticed that the Chill Mat shown on the website looks different from mine. Maybe they've redesigned it, and the hardware is more reliable now. I intend to investigate this.&lt;/p&gt;

&lt;p&gt;But, if that fails, I have three choices:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Send this thing in for warranty service &lt;em&gt;again&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Surgically remove the inline switch, and hope the connector doesn't flake out.&lt;/li&gt;
&lt;li&gt;Get a different active-cooling pad.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I'm seriously considering #3, but I'm not sure of my options. (I am definitely &lt;em&gt;not&lt;/em&gt; open to passive-cooling solutions such as Targus' &lt;a href="http://www.targus.com/us/product_details.asp?sku=AWE09US"&gt;coat rack&lt;/a&gt;.) Having made one bad choice before, I now turn the decision over to you.&lt;/p&gt;

&lt;p&gt;Can you recommend a good USB-powered active-cooling pad for a 15″ MacBook Pro?&lt;/p&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=N7GgKRF"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=N7GgKRF" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=Qdjls1f"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=Qdjls1f" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/domainofthebored/~4/261114624" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://boredzo.org/blog/archives/2008-03-30/targus-laptop-chill-mat#comments" thr:count="4" />
		<link rel="replies" type="application/atom+xml" href="http://boredzo.org/blog/archives/2008-03-30/targus-laptop-chill-mat/feed/atom" thr:count="4" />
		<thr:total>4</thr:total>
	<feedburner:origLink>http://boredzo.org/blog/archives/2008-03-30/targus-laptop-chill-mat</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Peter Hosey</name>
						<uri>http://boredzo.org./</uri>
					</author>
		<title type="html"><![CDATA[“Photoshop sucks” updated]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/domainofthebored/~3/256768752/%e2%80%9cphotoshop-sucks%e2%80%9d-updated" />
		<id>http://boredzo.org/blog/archives/2008-03-23/%e2%80%9cphotoshop-sucks%e2%80%9d-updated</id>
		<updated>2008-03-24T01:34:56Z</updated>
		<published>2008-03-24T01:33:51Z</published>
		<category scheme="http://boredzo.org/blog" term="Graphics" /><category scheme="http://boredzo.org/blog" term="This blog" />		<summary type="html"><![CDATA[Upon inspiration by a comment, I've just updated my rant from a couple years ago, “Photoshop sucks”, to include a list of alternatives. Topping the list, of course, is Acorn; also included are Core Image Fun House, Pixelmator, DrawIt, and Iris.

I'm very glad that there are now solutions to the problem that is Photoshop. I [...]]]></summary>
		<content type="html" xml:base="http://boredzo.org/blog/archives/2008-03-23/%e2%80%9cphotoshop-sucks%e2%80%9d-updated">&lt;p&gt;Upon inspiration by a comment, I've just updated my rant from a couple years ago, &lt;a href="http://boredzo.org/blog/archives/2006-02-20/photoshop-sucks"&gt;“Photoshop sucks”&lt;/a&gt;, to include a list of alternatives. Topping the list, of course, is Acorn; also included are Core Image Fun House, Pixelmator, DrawIt, and Iris.&lt;/p&gt;

&lt;p&gt;I'm very glad that there are now solutions to the problem that is Photoshop. I dislike bitching about something without a solution to offer; now I have six to offer, so that rant is now complete.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=LGLxUmF"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=LGLxUmF" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=Air7jRf"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=Air7jRf" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/domainofthebored/~4/256768752" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://boredzo.org/blog/archives/2008-03-23/%e2%80%9cphotoshop-sucks%e2%80%9d-updated#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://boredzo.org/blog/archives/2008-03-23/%e2%80%9cphotoshop-sucks%e2%80%9d-updated/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://boredzo.org/blog/archives/2008-03-23/%e2%80%9cphotoshop-sucks%e2%80%9d-updated</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Peter Hosey</name>
						<uri>http://boredzo.org./</uri>
					</author>
		<title type="html"><![CDATA[Apple Bug Friday! 75]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/domainofthebored/~3/255881005/apple-bug-friday-75" />
		<id>http://boredzo.org/blog/archives/2008-03-21/apple-bug-friday-75</id>
		<updated>2008-03-22T03:44:44Z</updated>
		<published>2008-03-22T03:44:43Z</published>
		<category scheme="http://boredzo.org/blog" term="@Uncategorized" />		<summary type="html"><![CDATA[This bug is TN2083 doesn't document all known Session types. It was filed on 2008-01-19 at 16:44 PST.




Summary:
TN2083 lists only four of the five session types that the launchctl(1) manpage lists.

Steps to Reproduce:

Load up manpage for launchctl.
Load up the launchd Agent section of the technote.


Expected Results:
launchctl(1) lists the known session types as “Aqua, LoginWindow, Background, [...]]]></summary>
		<content type="html" xml:base="http://boredzo.org/blog/archives/2008-03-21/apple-bug-friday-75">&lt;p&gt;This bug is &lt;a href="rdar://problem/5696521"&gt;TN2083 doesn't document all known Session types&lt;/a&gt;. It was filed on 2008-01-19 at 16:44 PST.&lt;/p&gt;

&lt;span id="more-660"&gt;&lt;/span&gt;
&lt;hr /&gt;

&lt;h3&gt;Summary:&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://developer.apple.com/technotes/tn2005/tn2083.html"&gt;TN2083&lt;/a&gt; lists only four of the five session types that the launchctl(1) manpage lists.&lt;/p&gt;

&lt;h3&gt;Steps to Reproduce:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Load up &lt;a href="x-man-page://1/launchctl"&gt;manpage for launchctl&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Load up the launchd Agent section of &lt;a href="http://developer.apple.com/technotes/tn2005/tn2083.html%23SECLAUNCHDAGENT"&gt;the technote&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Expected Results:&lt;/h3&gt;
&lt;p&gt;launchctl(1) lists the known session types as “Aqua, LoginWindow, Background, StandardIO and System.” The table of session types defines Aqua, StandardIO, Background, LoginWindow, and System.&lt;/p&gt;

&lt;h3&gt;Actual Results:&lt;/h3&gt;
&lt;p&gt;launchctl(1) lists the known session types as “Aqua, LoginWindow, Background, StandardIO and System.” The table of session types defines Aqua, StandardIO, Background, and LoginWindow.&lt;/p&gt;

&lt;p&gt;System is left out.&lt;/p&gt;

&lt;h3&gt;Regression:&lt;/h3&gt;
&lt;p&gt;Tiger had a different set of session types entirely, and its manpage for launchctl did not name them (because launchctl did not have any options that accepted session types). TN2083 also does not list Tiger's session types.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=92R49kF"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=92R49kF" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=zsdJfaf"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=zsdJfaf" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/domainofthebored/~4/255881005" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://boredzo.org/blog/archives/2008-03-21/apple-bug-friday-75#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://boredzo.org/blog/archives/2008-03-21/apple-bug-friday-75/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://boredzo.org/blog/archives/2008-03-21/apple-bug-friday-75</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Peter Hosey</name>
						<uri>http://boredzo.org./</uri>
					</author>
		<title type="html"><![CDATA[UTI Property List Helper 1.0]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/domainofthebored/~3/255666433/uti-property-list-helper-10" />
		<id>http://boredzo.org/blog/archives/2008-03-21/uti-property-list-helper-10</id>
		<updated>2008-03-21T18:34:39Z</updated>
		<published>2008-03-21T18:33:15Z</published>
		<category scheme="http://boredzo.org/blog" term="Creations" /><category scheme="http://boredzo.org/blog" term="Programming" /><category scheme="http://boredzo.org/blog" term="Toolchain" />		<summary type="html"><![CDATA[For a forthcoming blog post, I was recently writing a test app that displays images. This had me once again slogging through the list of System-Declared Uniform Type Identifiers and assembling type declarations for the image types by hand.

I'm tired of doing that. So I wrote a new application called UTI Property List Helper.



This application [...]]]></summary>
		<content type="html" xml:base="http://boredzo.org/blog/archives/2008-03-21/uti-property-list-helper-10">&lt;p&gt;For a forthcoming blog post, I was recently writing a test app that displays images. This had me once again slogging through the list of &lt;a href="http://developer.apple.com/documentation/Carbon/Conceptual/understanding_utis/utilist/chapter_4_section_1.html"&gt;System-Declared Uniform Type Identifiers&lt;/a&gt; and assembling type declarations for the image types by hand.&lt;/p&gt;

&lt;p&gt;I'm tired of doing that. So I wrote a new application called &lt;a href="http://boredzo.org/uti-plist-helper"&gt;UTI Property List Helper&lt;/a&gt;.&lt;/p&gt;

&lt;p class="screenshot"&gt;&lt;img width="476" height="391" alt="The main window consists of a table view, in which you enter UTIs, and two text views displaying chunks of Info.plist XML data." src="http://boredzo.org/uti-plist-helper/UTI_Plist_Helper.png" /&gt;&lt;/p&gt;

&lt;p&gt;This application automatically updates the CFBundleDocumentTypes and UTImportedTypeDeclarations arrays in its window with information on the types you enter, obtained from Launch Services' database of all types registered by any app on your system.&lt;/p&gt;

&lt;p&gt;No more searching for that OSType, or leaving it out because it's too much work—this app does all the grunt work for you. Enjoy.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=Ynuu3ZF"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=Ynuu3ZF" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/domainofthebored?a=Ii42BLf"&gt;&lt;img src="http://feeds.feedburner.com/~f/domainofthebored?i=Ii42BLf" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/domainofthebored/~4/255666433" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://boredzo.org/blog/archives/2008-03-21/uti-property-list-helper-10#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://boredzo.org/blog/archives/2008-03-21/uti-property-list-helper-10/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://boredzo.org/blog/archives/2008-03-21/uti-property-list-helper-10</feedburner:origLink></entry>
	</feed><!-- Dynamic Page Served (once) in 0.257 seconds -->
