<?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>tadhg.com &#187; web-development</title>
	<atom:link href="http://tadhg.com/wp/tag/web-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://tadhg.com/wp</link>
	<description>Wherein some things Tadhg are discussed</description>
	<lastBuildDate>Fri, 03 Sep 2010 06:52:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>2010 Goals: First Quarter Review</title>
		<link>http://tadhg.com/wp/2010/03/30/2010-goals-first-quarter-review/</link>
		<comments>http://tadhg.com/wp/2010/03/30/2010-goals-first-quarter-review/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 19:12:33 +0000</pubDate>
		<dc:creator>Tadhg</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[CrossFit]]></category>
		<category><![CDATA[exercise]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[goals]]></category>
		<category><![CDATA[MTG]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[roleplaying]]></category>
		<category><![CDATA[web-development]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://tadhg.com/wp/?p=2808</guid>
		<description><![CDATA[Yes, clearly my progress (or lack thereof) needs quarterly reports. And here’s the first one for this year.

I laid out the full list at the start of the year. I’ve accomplished some of them:

Celebrate my birthday. This still seems like a strange goal to have—but putting it on here helped me get it done, and [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, clearly my progress (or lack thereof) needs quarterly reports. And here’s the first one for this year.<br />
<span id="more-2808"></span><br />
I laid out the <a href="http://tadhg.com/wp/2010/01/01/2010-goals/" title="2010 Goals" >full list</a> at the start of the year. I’ve accomplished some of them:</p>
<ul>
<li>Celebrate my birthday. This still seems like a strange goal to have—but putting it on here helped me get it done, and I had a great time and don’t get why I didn’t do this for years. I’ll do it again next year!
</li>
<li>Participate in the CrossFit Sectionals. <a href="http://tadhg.com/wp/2010/03/28/crossfit-games-2010-norcal-sectionals-how-i-did/" title="CrossFit Games 2010 NorCal Sectionals: How I Did" >Done</a>!
</li>
<li>Ten dead-hang pullups. Done; currently my best is 11, and I’m now aiming for 20 before going back to kipping.
</li>
</ul>
<p>I’ve made some progress on these:</p>
<ul>
<li>Revive sfmagic.org. “Some progress” here means I’ve tried to get the code running again and have run into incompatibilities between Pylons versions. So, slightly closer, but not a lot of movement.
</li>
<li>Run a roleplaying campaign. I’ve started it, and two sessions in it’s going well.
</li>
<li>I’m presumably closer to my other fitness-related goals of a 300-pound deadlift, a sub-23:00 5K, and <a class="reference external" href="http://www.crossfit.com/mt-archive2/001129.html">“Murph”</a> in under 50:00.
</li>
<li>It’s hard to judge progress on an amorphous goal like “building a sense of community”, but I think there’s been some.
</li>
</ul>
<p>I’ve made no progress on these:</p>
<ul>
<li>Write at least one draft of the fantasy novel. I feel fine about this, and haven’t really tried to work on it. I know that at some point the desire to do so will resurface, and the key to getting it done is focusing on it when that happens.
</li>
<li>Finish <a class="reference external" href="http://tadhg.com/afbh/"><cite>The Annotated Fantasy Bedtime Hour</cite></a>. Still something I just need to get down to doing&#8230;
</li>
</ul>
<p>Tags: <a href="http://tadhg.com/wp/tag/coding/" rel="tag">coding</a>, <a href="http://tadhg.com/wp/tag/community/" rel="tag">community</a>, <a href="http://tadhg.com/wp/tag/crossfit/" rel="tag">CrossFit</a>, <a href="http://tadhg.com/wp/tag/exercise/" rel="tag">exercise</a>, <a href="http://tadhg.com/wp/tag/games/" rel="tag">games</a>, <a href="http://tadhg.com/wp/tag/goals/" rel="tag">goals</a>, <a href="http://tadhg.com/wp/tag/mtg/" rel="tag">MTG</a>, <a href="http://tadhg.com/wp/tag/personal/" rel="tag">personal</a>, <a href="http://tadhg.com/wp/tag/roleplaying/" rel="tag">roleplaying</a>, <a href="http://tadhg.com/wp/tag/web-development/" rel="tag">web-development</a>, <a href="http://tadhg.com/wp/tag/writing/" rel="tag">writing</a></p><h4 class='related-posts-header'>Related Posts</h4><ul class="related-posts-list"><li class="related-post"><a href="http://tadhg.com/wp/2010/01/01/2010-goals/">2010 Goals</a> <span class="related-post-date timestamp">Fri 01 Jan 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/05/16/sabbatical-close/">sabbatical.close()</a> <span class="related-post-date timestamp">Sun 16 May 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/08/02/three-routines/">Three Routines</a> <span class="related-post-date timestamp">Mon 02 Aug 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/04/01/anaqrest/">Anaq’rest</a> <span class="related-post-date timestamp">Thu 01 Apr 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/03/21/an-introduction-to-roleplaying-games/">An Introduction to Roleplaying Games</a> <span class="related-post-date timestamp">Sun 21 Mar 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/12/31/crossfit-and-coding-and-meat/">CrossFit and Coding (and Meat)</a> <span class="related-post-date timestamp">Thu 31 Dec 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/12/29/2009-goals-review/">2009 Goals Review</a> <span class="related-post-date timestamp">Tue 29 Dec 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/07/30/2009-goals-status/">2009 Goals Status</a> <span class="related-post-date timestamp">Thu 30 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/01/01/2009-goals/">2009 Goals</a> <span class="related-post-date timestamp">Thu 01 Jan 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2007/05/11/sfmagicorg-database-structure/">sfmagic.org Database Structure</a> <span class="related-post-date timestamp">Fri 11 May 2007</span></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tadhg.com/wp/2010/03/30/2010-goals-first-quarter-review/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Internet Illiteracy</title>
		<link>http://tadhg.com/wp/2010/02/11/internet-illiteracy/</link>
		<comments>http://tadhg.com/wp/2010/02/11/internet-illiteracy/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 20:40:28 +0000</pubDate>
		<dc:creator>Tadhg</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[consciousness]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[web-development]]></category>

		<guid isPermaLink="false">http://tadhg.com/wp/?p=2672</guid>
		<description><![CDATA[Rather widespread, apparently. When a ReadWriteWeb article on Facebook’s collaboration with AOL became a highly-ranked Google search result for “facebook login”, hundreds of Facebook users descended on that article and used the Facebook Connect button on that screen—which ReadWriteWeb provides so that people can leave comments using their Facebook account—and then became extremely confused, not [...]]]></description>
			<content:encoded><![CDATA[<p>Rather widespread, apparently. When a <a href="http://www.readwriteweb.com/archives/facebook_wants_to_be_your_one_true_login.php" title="Facebook Wants to Be Your One True Login" >ReadWriteWeb article on Facebook’s collaboration with AOL</a> became a <a class="reference external" href="http://skitch.com/kingsley2/nwa3p/facebook-login-google-search">highly-ranked Google search result for “facebook login”</a>, hundreds of Facebook users descended on that article and used the Facebook Connect button on that screen—which ReadWriteWeb provides so that people can leave comments using their Facebook account—and then became extremely confused, not understanding why they weren’t being brought to their usual Facebook home screen.<br />
<span id="more-2672"></span><br />
So they left comments—lots of comments—complaining, many apparently under the impression that they <em>had</em> logged into Facebook and had been presented with a new design for the Facebook home screen.</p>
<p>Of course it’s amusing, but it’s also rather sad. The fact that users—daily users—of Facebook don’t understand the concept of different sites, don’t pay any attention whatsoever to the URL, and can completely ignore an entire article while scrolling a page looking for the one thing that seems familiar (the Facebook logo with a login widget) is quite depressing. That their habit for logging into Facebook is to search for “facebook login” and then click on the link is one thing, but that they’re unable to understand what happens when presented with a scenario where that doesn’t work is somewhat mind-boggling to me.</p>
<p>That’s part of the problem, though—it’s very difficult for me, a programmer who’s been professionally involved with the web for a long time, to put myself in the mindset of a new (or naive) user. It’s hard for me to pretend that I don’t know what a browser is, that I don’t know what a server is, that I don’t know what a URL is.</p>
<p>Part of that is knowledge, but part of it is also attitude. I don’t know if I could use a browser for any extended period and not start wondering about at least the basics of its operation, not start trying to find answers to questions like “how does this work?” and “what’s going on here?”. This comes back to a fairly familiar argument that’s been present in computing for a long time: should users have to know anything about how things work, or should everything (OS, applications, filesystems, whatever) do whatever the user needs without requiring them to understand anything beyond the extremely narrow confines of what they’re trying to do?</p>
<p>Both sides generally bring out analogies, e.g. people shouldn’t have to know how an internal combustion engine works in order to operate their car. The counterpoint is that having some clue of what’s going on can be incredibly useful—like knowing enough about how a car works so that <a href="http://www.nbcsandiego.com/news/local-beat/Stuck-Accelerator-Blamed-for-Four-Deaths---.html" title=""Stuck" Accelerator Blamed for Four Deaths" >your accelerator gets stuck down</a> you can consider shifting into neutral <a class="footnote-reference" href="#id2" id="id1">[1]</a>. You don’t need to know how a web browser works, or a web site, but you should know that you’re using a web browser, and that a web browser connects to web sites&#8230; but that’s just my opinion.</p>
<p>The problem with that opinion is that it’s a question of degree, and it’s hard to get to agreement. I’ve been in the position of those users, kind of. I’ve been in the position of wanting some piece of software to simply do a task, and of not wanting to know anything about its internals—and sometimes I’ve simply been completely wrong about what the software actually does. I’ve gotten quite irritated at those times, and I would have had no interest in someone telling me that I needed to learn more about some (to me) obscure technology in order to progress. On the other hand, none of those times have involved things I do or use habitually.</p>
<p><a class="reference external" href="http://www.readwriteweb.com/">ReadWriteWeb</a> has a <a href="http://www.readwriteweb.com/archives/open_thread_the_internet_is_hard.php" title="Open Thread: The Internet Is Hard" >followup article</a>, in which they take the stance that the internet has to be made to work for people like those who confused the original article with the Facebook login page. I have no doubt that they’re right from a commercial and/or pragmatic perspective. But is that really the answer? Isn’t ignorance a problem that needs tackling? Isn’t deliberate ignorance something that should be discouraged? I say “deliberate” because, if you have access to a browser and you run into problems like this one, you already have access to most of what you need to learn. ReadWriteWeb argues that the people in question have “chosen to be smart about other things”, which may be true, but isn’t that the same as saying that they’ve chosen not to be smart about how to use the internet? If so, should the internet have to adapt to the consequences of that choice? Or should the users in question have to accept occasional frustration as a consequence of “choosing to be smart” only about other things?</p>
<table class="docutils footnote" frame="void" id="id2" rules="none">
<colgroup>
<col class="label" />
<col /></colgroup>
<tbody valign="top">
<tr>
<td class="label"><a class="fn-backref" href="#id1">[1]</a></td>
<td>This is <strong>not</strong> to say that the driver in this case was at fault; the Lexus was at fault. Nor am I comparing the driver to the confused users commenting on the ReadWriteWeb article; I’m just pointing out that that knowledge could have been useful at the time.
</td>
</tr>
</tbody>
</table>
<p>Tags: <a href="http://tadhg.com/wp/tag/consciousness/" rel="tag">consciousness</a>, <a href="http://tadhg.com/wp/tag/internet/" rel="tag">internet</a>, <a href="http://tadhg.com/wp/tag/usability/" rel="tag">usability</a>, <a href="http://tadhg.com/wp/tag/web-development/" rel="tag">web-development</a></p><h4 class='related-posts-header'>Related Posts</h4><ul class="related-posts-list"><li class="related-post"><a href="http://tadhg.com/wp/2010/05/23/ipad-first-impressions-consumption-machine/">iPad First Impressions: Consumption Machine</a> <span class="related-post-date timestamp">Sun 23 May 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/04/28/how-many-wikipedias/">How Many Wikipedias?</a> <span class="related-post-date timestamp">Mon 28 Apr 2008</span></li><li class="related-post"><a href="http://tadhg.com/wp/2007/02/19/legend-element-annoyances/">Legend Element Annoyances</a> <span class="related-post-date timestamp">Mon 19 Feb 2007</span></li><li class="related-post"><a href="http://tadhg.com/wp/2007/02/15/exploring-html-form-elements/">Exploring HTML form elements</a> <span class="related-post-date timestamp">Thu 15 Feb 2007</span></li><li class="related-post"><a href="http://tadhg.com/wp/2007/02/05/improving-zipcars-user-interface/">Improving Zipcar's User Interface</a> <span class="related-post-date timestamp">Mon 05 Feb 2007</span></li><li class="related-post"><a href="http://tadhg.com/wp/2007/01/09/organizational-state/">Organizational State</a> <span class="related-post-date timestamp">Tue 09 Jan 2007</span></li><li class="related-post"><a href="http://tadhg.com/wp/2006/11/23/power-to-the-users/">Power to the Users</a> <span class="related-post-date timestamp">Thu 23 Nov 2006</span></li><li class="related-post"><a href="http://tadhg.com/wp/2006/11/11/usability-and-swiss-pairings/">Usability and Swiss Pairings</a> <span class="related-post-date timestamp">Sat 11 Nov 2006</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/07/26/the-internet-we-wants-it/">The Internet, We Wants It</a> <span class="related-post-date timestamp">Mon 26 Jul 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/07/20/lifehacker-meditation-guide/">Lifehacker Meditation Guide</a> <span class="related-post-date timestamp">Tue 20 Jul 2010</span></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tadhg.com/wp/2010/02/11/internet-illiteracy/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>jQuery Project</title>
		<link>http://tadhg.com/wp/2010/01/21/jquery-project/</link>
		<comments>http://tadhg.com/wp/2010/01/21/jquery-project/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 07:36:54 +0000</pubDate>
		<dc:creator>Tadhg</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[web-development]]></category>

		<guid isPermaLink="false">http://tadhg.com/wp/?p=2606</guid>
		<description><![CDATA[I’ve been a big fan of jQuery more or less since it came out, and I’m happy to see the launch of The jQuery Project. I’ve used jQueryUI a couple of times and find it fairly useful; I haven’t tried Sizzle yet but it looks great for situations where you’re really concerned about keeping file [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been a big fan of <a class="reference external" href="http://jquery.com/">jQuery</a> more or less since it came out, and I’m happy to see the launch of <a class="reference external" href="http://jquery.org/">The jQuery Project</a>. I’ve used <a class="reference external" href="http://jqueryui.com/">jQueryUI</a> a couple of times and find it fairly useful; I haven’t tried <a class="reference external" href="http://sizzlejs.com/">Sizzle</a> yet but it looks great for situations where you’re really concerned about keeping file sizes low but need decent CSS selector support; and I wish <a class="reference external" href="http://docs.jquery.com/Qunit">QUnit</a> had been around when I was writing a lot of client-side code.</p>
<p>Tags: <a href="http://tadhg.com/wp/tag/coding/" rel="tag">coding</a>, <a href="http://tadhg.com/wp/tag/javascript/" rel="tag">JavaScript</a>, <a href="http://tadhg.com/wp/tag/web-development/" rel="tag">web-development</a></p><h4 class='related-posts-header'>Related Posts</h4><ul class="related-posts-list"><li class="related-post"><a href="http://tadhg.com/wp/2009/10/11/some-javascript-programming-patterns/">Some JavaScript Programming Patterns</a> <span class="related-post-date timestamp">Sun 11 Oct 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/06/26/python-syntax-highlighting-for-star-light/">Python Syntax Highlighting for star-light</a> <span class="related-post-date timestamp">Fri 26 Jun 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/06/13/jquery-improvements/">jQuery Improvements</a> <span class="related-post-date timestamp">Fri 13 Jun 2008</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/02/04/coding-and-concepts-tiebreakers/">Coding and Concepts: Tiebreakers</a> <span class="related-post-date timestamp">Mon 04 Feb 2008</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/01/29/datejs/">Datejs</a> <span class="related-post-date timestamp">Tue 29 Jan 2008</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/01/27/some-minor-software-projects/">Some Minor Software Projects</a> <span class="related-post-date timestamp">Sun 27 Jan 2008</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/01/21/sfmagicorg-rewrite-pod-division/">sfmagic.org Rewrite: Pod Division</a> <span class="related-post-date timestamp">Mon 21 Jan 2008</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/01/15/sfmagicorg-rewrite-planning-data-entry/">sfmagic.org Rewrite: Planning Data Entry</a> <span class="related-post-date timestamp">Tue 15 Jan 2008</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/01/08/sfmagicorg-rewrite-stalledgraphs/">sfmagic.org Rewrite: Stalled/Graphs</a> <span class="related-post-date timestamp">Tue 08 Jan 2008</span></li><li class="related-post"><a href="http://tadhg.com/wp/2007/04/16/ajax-cross-site-scripting-with-apache-rewriterule/"><abbr title='Asynchronous JavaScript and XML'>AJAX</abbr> Cross-Site Scripting with Apache RewriteRule</a> <span class="related-post-date timestamp">Mon 16 Apr 2007</span></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tadhg.com/wp/2010/01/21/jquery-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress 2.9 Upgrade</title>
		<link>http://tadhg.com/wp/2010/01/10/wordpress-2-9-upgrade/</link>
		<comments>http://tadhg.com/wp/2010/01/10/wordpress-2-9-upgrade/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 23:56:30 +0000</pubDate>
		<dc:creator>Tadhg</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[web-development]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://tadhg.com/wp/?p=2579</guid>
		<description><![CDATA[I upgraded this blog to WordPress 2.9 today, and it appeared to go entirely smoothly. Please let me know if you notice any breakage.
Tags: Blog, coding, PHP, tech, web-development, WordPressRelated PostsWordPress 2.8 Upgrade Sun 14 Jun 2009WP Plugins: Recent Commentary and Show Tags in RSS Mon 23 Mar 2009Some RSS Changes Thu 19 Mar 2009New [...]]]></description>
			<content:encoded><![CDATA[<p>I upgraded this blog to <a class="reference external" href="http://codex.wordpress.org/Version_2.9">WordPress 2.9</a> today, and it appeared to go entirely smoothly. Please let me know if you notice any breakage.</p>
<p>Tags: <a href="http://tadhg.com/wp/tag/blog/" rel="tag">Blog</a>, <a href="http://tadhg.com/wp/tag/coding/" rel="tag">coding</a>, <a href="http://tadhg.com/wp/tag/php/" rel="tag">PHP</a>, <a href="http://tadhg.com/wp/tag/tech/" rel="tag">tech</a>, <a href="http://tadhg.com/wp/tag/web-development/" rel="tag">web-development</a>, <a href="http://tadhg.com/wp/tag/wordpress/" rel="tag">WordPress</a></p><h4 class='related-posts-header'>Related Posts</h4><ul class="related-posts-list"><li class="related-post"><a href="http://tadhg.com/wp/2009/06/14/wordpress-2-8-upgrade/">WordPress 2.8 Upgrade</a> <span class="related-post-date timestamp">Sun 14 Jun 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/03/23/wp-plugins-recent-commentary-and-show-tags-in-rss/">WP Plugins: Recent Commentary and Show Tags in RSS</a> <span class="related-post-date timestamp">Mon 23 Mar 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/03/19/some-rss-changes/">Some RSS Changes</a> <span class="related-post-date timestamp">Thu 19 Mar 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/02/23/new-blog-functionality-recent-commentary/">New Blog Functionality: Recent Commentary</a> <span class="related-post-date timestamp">Mon 23 Feb 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/02/13/my-wordpress-development-setup/">My WordPress Development Setup</a> <span class="related-post-date timestamp">Fri 13 Feb 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/07/28/better-rest-wordpress-pipeline/">Better reST–WordPress Pipeline</a> <span class="related-post-date timestamp">Tue 28 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/07/14/blog-workflow-with-restructuredtext/">Blog Workflow with reStructuredText</a> <span class="related-post-date timestamp">Tue 14 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/02/10/related-posts-plugin-and-sql-trickery/">Related Posts Plugin and SQL Trickery</a> <span class="related-post-date timestamp">Tue 10 Feb 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/05/16/sabbatical-close/">sabbatical.close()</a> <span class="related-post-date timestamp">Sun 16 May 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/11/10/html-past-and-future/">HTML Past and Future</a> <span class="related-post-date timestamp">Tue 10 Nov 2009</span></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tadhg.com/wp/2010/01/10/wordpress-2-9-upgrade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2010 Goals</title>
		<link>http://tadhg.com/wp/2010/01/01/2010-goals/</link>
		<comments>http://tadhg.com/wp/2010/01/01/2010-goals/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 16:53:36 +0000</pubDate>
		<dc:creator>Tadhg</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[CrossFit]]></category>
		<category><![CDATA[exercise]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[goals]]></category>
		<category><![CDATA[MTG]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[reading]]></category>
		<category><![CDATA[roleplaying]]></category>
		<category><![CDATA[web-development]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://tadhg.com/wp/?p=2554</guid>
		<description><![CDATA[Happy New Year!
Once again, my goals for the coming year.

Some of these recur from last year, but that’s okay. They’re not really in any order.

Write at least one draft of the fantasy novel.

Revive sfmagic.org. Many of my MTG-playing friends simply don’t believe I’ll ever do this one, but I’m still determined to make it happen, [...]]]></description>
			<content:encoded><![CDATA[<p>Happy New Year!</p>
<p>Once again, my goals for the coming year.<br />
<span id="more-2554"></span><br />
Some of these recur from last year, but that’s okay. They’re not really in any order.</p>
<ul>
<li>Write at least one draft of the fantasy novel.
</li>
<li>Revive sfmagic.org. Many of my MTG-playing friends simply don’t believe I’ll ever do this one, but I’m still determined to make it happen, and right now there are fewer obstacles to doing it than there have been in years.
</li>
<li>Celebrate my birthday. A strange-sounding resolution, perhaps, but I haven’t actually done any significant celebration of my birthday for a couple of years, and that’s just dumb. So this year I’m going to do <em>something</em>. I might need help figuring that something out, we’ll see.
</li>
<li>Participate in the <a class="reference external" href="http://games2010.crossfit.com/qualifiers/">CrossFit sectionals</a>. I don’t expect to qualify, or even come particularly close to qualifying, but I want to take part anyway to see what it’s like, and to give myself a training target. Given that at the end of March last year I was in fairly poor physical condition, competing in them at all will be an achievement.
</li>
<li>I have some miscellaneous fitness-related goals I’ll lump together: break three hundred pounds on the deadlift, get to ten dead-hang pullups, get my shoulders strong enough to safely do kipping pullups again and then get to thirty of those, break 23:00 for the 5K. Just because it’s the first day of the year and I think I should set one of these that’s a lot further away for me, I’ll add this: do <a class="reference external" href="http://www.crossfit.com/mt-archive2/001129.html">“Murph”</a> in under 50:00.
</li>
<li>Finish <a class="reference external" href="http://tadhg.com/afbh/"><cite>The Annotated Fantasy Bedtime Hour</cite></a>. Just five episodes to write up, I simply need to get down to it.
</li>
<li>Run a roleplaying campaign. I haven’t done this in fifteen years, and it’s time to start again. This already looks like it’s going to happen, but starting and finishing are separate things&#8230; this goal is to run at least one story arc, and to make it good (but not worry about it being perfect).
</li>
<li>I don’t like having amorphous goals, but this last one is going in regardless. I need to do something about building a sense of community for myself. I’m not totally sure what this means, and it’s not that I utterly lack a sense of community now, but it’s not quite where I want it, and I need to figure out what it is I want to change and how to do it. I have a post kind-of in my head about this, which I’ll hopefully get down in the next few weeks.
</li>
</ul>
<p>That seems like a good set. I also want to read 80 books, but for some reason this year that doesn’t feel like a goal in the same way as the above.</p>
<p>Tags: <a href="http://tadhg.com/wp/tag/coding/" rel="tag">coding</a>, <a href="http://tadhg.com/wp/tag/community/" rel="tag">community</a>, <a href="http://tadhg.com/wp/tag/crossfit/" rel="tag">CrossFit</a>, <a href="http://tadhg.com/wp/tag/exercise/" rel="tag">exercise</a>, <a href="http://tadhg.com/wp/tag/games/" rel="tag">games</a>, <a href="http://tadhg.com/wp/tag/goals/" rel="tag">goals</a>, <a href="http://tadhg.com/wp/tag/mtg/" rel="tag">MTG</a>, <a href="http://tadhg.com/wp/tag/personal/" rel="tag">personal</a>, <a href="http://tadhg.com/wp/tag/reading/" rel="tag">reading</a>, <a href="http://tadhg.com/wp/tag/roleplaying/" rel="tag">roleplaying</a>, <a href="http://tadhg.com/wp/tag/web-development/" rel="tag">web-development</a>, <a href="http://tadhg.com/wp/tag/writing/" rel="tag">writing</a></p><h4 class='related-posts-header'>Related Posts</h4><ul class="related-posts-list"><li class="related-post"><a href="http://tadhg.com/wp/2010/03/30/2010-goals-first-quarter-review/">2010 Goals: First Quarter Review</a> <span class="related-post-date timestamp">Tue 30 Mar 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/05/16/sabbatical-close/">sabbatical.close()</a> <span class="related-post-date timestamp">Sun 16 May 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/12/29/2009-goals-review/">2009 Goals Review</a> <span class="related-post-date timestamp">Tue 29 Dec 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/07/30/2009-goals-status/">2009 Goals Status</a> <span class="related-post-date timestamp">Thu 30 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/01/01/2009-goals/">2009 Goals</a> <span class="related-post-date timestamp">Thu 01 Jan 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/08/02/three-routines/">Three Routines</a> <span class="related-post-date timestamp">Mon 02 Aug 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/04/01/anaqrest/">Anaq’rest</a> <span class="related-post-date timestamp">Thu 01 Apr 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/03/21/an-introduction-to-roleplaying-games/">An Introduction to Roleplaying Games</a> <span class="related-post-date timestamp">Sun 21 Mar 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/12/31/crossfit-and-coding-and-meat/">CrossFit and Coding (and Meat)</a> <span class="related-post-date timestamp">Thu 31 Dec 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/11/24/book-list/">Book List</a> <span class="related-post-date timestamp">Mon 24 Nov 2008</span></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tadhg.com/wp/2010/01/01/2010-goals/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>2009 Goals Review</title>
		<link>http://tadhg.com/wp/2009/12/29/2009-goals-review/</link>
		<comments>http://tadhg.com/wp/2009/12/29/2009-goals-review/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 01:43:17 +0000</pubDate>
		<dc:creator>Tadhg</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[goals]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[reading]]></category>
		<category><![CDATA[reStructuredText]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[version-control]]></category>
		<category><![CDATA[web-development]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://tadhg.com/wp/?p=2548</guid>
		<description><![CDATA[I had eight goals for 2009, and all of them that I’m going to get done I’ve already completed. Time to review.

Here are the ones I accomplished:

Fix my blog. I resurrected the full blog in January, finishing on 27 Jan 2009. I’m rather happy to have gotten this one out of the way.

Fix my Subversion [...]]]></description>
			<content:encoded><![CDATA[<p>I had <a href="http://tadhg.com/wp/2009/01/01/2009-goals/" title="2009 Goals" >eight goals</a> for 2009, and all of them that I’m going to get done I’ve already completed. Time to review.<br />
<span id="more-2548"></span><br />
Here are the ones I accomplished:</p>
<ul>
<li><strong>Fix my blog</strong>. I resurrected the full blog in January, <a href="http://tadhg.com/wp/2009/01/27/blog-move-steps-part-three-dns-change/" title="Blog Move Steps, Part Three: DNS Change" >finishing on 27 Jan 2009</a>. I’m rather happy to have gotten this one out of the way.
</li>
<li><strong>Fix my Subversion repository</strong>. I’m even more glad I did this, as version control is just too important not to have. It <a href="http://tadhg.com/wp/2009/05/04/version-control-recovery/" title="Version Control Recovery" >took me until 04 May</a> to do this one.
</li>
<li><strong>Finish at least three software projects</strong>. More than three, even if none of them were sfmagic.org. The <a class="reference external" href="http://tadhg.com/wp/2009/07/28/better-rest-wordpress-pipeline/">reST–WordPress pipeline</a>, the various <a class="reference external" href="http://tadhg.com/wp/wordpress-plugins/">WordPress Plugins</a>, and the <a class="reference external" href="http://tadhg.com/wp/2009/09/24/rtf_word_restructuredtext-toolchain/">RTF/Word–reStructuredText Toolchain</a> all qualify.
</li>
</ul>
<p>I <a href="http://tadhg.com/wp/2009/02/27/giving-up-on-a-goal-for-2009/" title="Giving Up On A Goal For 2009" >abandoned</a> the “write a summary/review/synopsis of every book I read” goal fairly early into the year, on 27 Feb. I don’t think I’m going to try that one again, as it just seems that the practice simply isn’t right for me.</p>
<p>That leaves four goals I didn’t accomplish:</p>
<ul>
<li><strong>Write at least one draft of the fantasy novel</strong>. This, for me, is the big one. I didn’t get anywhere close, and in truth I feel like I never really gave it a good effort. I’ll make it a goal again this year.
</li>
<li><strong>Read 80 books</strong>. It was looking great until the middle of the year, when my reading inexplicably dropped off. I’ll be at 56 or 57 by the end of December, which is off by quite a few. I’m really not sure what went wrong with this one, and will probably try it again next year also.
</li>
<li><strong>Finish</strong> <a class="reference external" href="http://tadhg.com/wp/fiction/#pafib"><strong>pafib</strong></a>. Well, I got one, so just five more of those to go&#8230; I might not make that one a goal for next year, and instead I’ll just leave that series hanging around to work on whenever the right mood takes me.
</li>
<li><strong>Finish</strong> <a class="reference external" href="http://tadhg.com/afbh/.._reST–WordPresspipeline:"><strong>The Annotated Fantasy Bedtime Hour</strong></a>. No progress, but I still want to get this one done, and so I’ll probably leave it on there next year as well.
</li>
</ul>
<p>Looking at it as “three out of eight” probably isn’t a great plan. Instead, I’m going to consider it a great thing that I fixed my blog, fixed my Subversion repository (both things quite central to my activities), and wrote quite a few bits of software that I’m happy with. The failure that stings is the fantasy novel, and with that, I must fall back upon the old chestnut of trying again.</p>
<p>Tags: <a href="http://tadhg.com/wp/tag/blog/" rel="tag">Blog</a>, <a href="http://tadhg.com/wp/tag/goals/" rel="tag">goals</a>, <a href="http://tadhg.com/wp/tag/personal/" rel="tag">personal</a>, <a href="http://tadhg.com/wp/tag/reading/" rel="tag">reading</a>, <a href="http://tadhg.com/wp/tag/restructuredtext/" rel="tag">reStructuredText</a>, <a href="http://tadhg.com/wp/tag/software/" rel="tag">software</a>, <a href="http://tadhg.com/wp/tag/version-control/" rel="tag">version-control</a>, <a href="http://tadhg.com/wp/tag/web-development/" rel="tag">web-development</a>, <a href="http://tadhg.com/wp/tag/writing/" rel="tag">writing</a></p><h4 class='related-posts-header'>Related Posts</h4><ul class="related-posts-list"><li class="related-post"><a href="http://tadhg.com/wp/2009/07/30/2009-goals-status/">2009 Goals Status</a> <span class="related-post-date timestamp">Thu 30 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/01/01/2009-goals/">2009 Goals</a> <span class="related-post-date timestamp">Thu 01 Jan 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/05/16/sabbatical-close/">sabbatical.close()</a> <span class="related-post-date timestamp">Sun 16 May 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/01/01/2010-goals/">2010 Goals</a> <span class="related-post-date timestamp">Fri 01 Jan 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/03/30/2010-goals-first-quarter-review/">2010 Goals: First Quarter Review</a> <span class="related-post-date timestamp">Tue 30 Mar 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/09/24/rtf_word_restructuredtext-toolchain/">RTF/Word–reStructuredText Toolchain</a> <span class="related-post-date timestamp">Thu 24 Sep 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/07/28/better-rest-wordpress-pipeline/">Better reST–WordPress Pipeline</a> <span class="related-post-date timestamp">Tue 28 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/07/14/blog-workflow-with-restructuredtext/">Blog Workflow with reStructuredText</a> <span class="related-post-date timestamp">Tue 14 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/07/12/moving-from-word-processors-to-restructuredtext/">Moving From Word Processors to reStructuredText</a> <span class="related-post-date timestamp">Sun 12 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2007/12/11/some-medium-term-plans/">Some Medium-Term Plans</a> <span class="related-post-date timestamp">Tue 11 Dec 2007</span></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tadhg.com/wp/2009/12/29/2009-goals-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GPS, URLs, Math, Python, Featuritis</title>
		<link>http://tadhg.com/wp/2009/12/08/gps-urls-math-python-featuritis/</link>
		<comments>http://tadhg.com/wp/2009/12/08/gps-urls-math-python-featuritis/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 07:53:21 +0000</pubDate>
		<dc:creator>Tadhg</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[web-development]]></category>

		<guid isPermaLink="false">http://tadhg.com/wp/?p=2476</guid>
		<description><![CDATA[Earlier this evening Gever suggested a service dedicated to shortening URLs that had geolocation data in them. My immediate responses were that a) this was a great idea, and b) that I wanted the shortened URLs to still be human-readable in some sense—specifically, I wanted a person to be able to look at two URLs [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier this evening <a class="reference external" href="http://www.gevertulley.com/">Gever</a> suggested a service dedicated to shortening URLs that had geolocation data in them. My immediate responses were that a) this was a great idea, and b) that I wanted the shortened URLs to still be human-readable in some sense—specifically, I wanted a person to be able to look at two URLs returned by this service and have some idea of how close to each other they were.<br />
<span id="more-2476"></span><br />
Gever hadn’t had that feature in mind at all, and so I had added a major feature as soon as I encountered this idea for a service.</p>
<p>We were at <a class="reference external" href="http://www.pywebsf.org/">PyWebSF</a>, so there were a number of programmers present, all of whom liked the idea, and all of whom appeared to have entirely different approaches to implementing it. <a class="reference external" href="http://en.wikipedia.org/wiki/Quadtree">Quadtrees</a> and <a class="reference external" href="http://en.wikipedia.org/wiki/Octree">octrees</a> were mentioned by the more CS-minded, but my approach was more basic (no pun intended): I thought it would be possible simply to encode the numbers in some higher base system and effectively shorten them that way.</p>
<p>I started with base 64, and looked at <a class="reference external" href="http://en.wikipedia.org/wiki/Base64">Base64</a> and at the <a href="http://www.fuyun.org/2009/10/how-to-convert-an-integer-to-base64-in-python/" title="How to convert an integer to Base64 in Python" >relatively easy Python implementation of an encoding system using it</a>, but found that I didn’t like it, for a few reasons. The main one was that the encoding just wasn’t that friendly: incrementing by one wasn’t that trivial, for example, and to me that made comparison of numbers difficult. I decided that the Base64 approach was clearly not designed with human readability in mind, and that one that was would map to base 10 for the numbers 0–9, then go to lowercase letters a–z, with a being 10, b 11 &#8230; z 35, and then uppercase letters A-Z, with A being 36, B 37 &#8230; Z 61. Then I tacked on _ for 62 and * for 63, for no particular reason. Apart from the last two, my choices were based on what I felt most people would grasp easily: numbers were their own values, uppercase letters were more than lowercase letter, and letters progress in alphabetical order.</p>
<p>Of course, that meant implementing my own system for the conversion, which I did in likely inefficient manner using Python <tt class="docutils literal"><span class="pre">dict</span></tt>s and some math for converting base systems in rather hacky fashion.</p>
<p>Given that I wanted the coordinates to remain somewhat readable, I decided to leave the integer parts of them alone. So the coordinates <tt class="docutils literal"><span class="pre">53.10680448323265,</span> <span class="pre">-9.580078125</span></tt> would still have 53 and 9—those numbers are always small enough that there’s not much point changing them to something else. That just left me with the task of compressing the numerals after the decimal point.</p>
<p>I had to account for the possibility of a string of zeroes, and chose a rude hack for this: the first numeral in my compressed number would always represent how many zeroes there were after the decimal point. (I intend to only deal with about 18 digits after the point, so there’s no chance of there being more than 63 zeroes in any data I’m planning to accept.) This means an extra digit in all cases where there are no zeroes, which is unfortunate.</p>
<p>After the zeroes are handled, I convert the rest to a base 64 number—which is really a string composed of the characters <tt class="docutils literal"><span class="pre">[0-9a-zA-Z_*]</span></tt>—using the method of storing the modulo 64 of the number and then dividing by 64 and repeating. I had to look up this method because I’d entirely forgotten how to convert from different base systems.</p>
<p>I got this working, and it converts e.g.</p>
<pre class="literal-block">
53.10680448323265, -9.580078125
</pre>
<p>to:</p>
<pre class="literal-block">
53.02rqYl0X1, -9.0yAQEJ
</pre>
<p>Unfortunately, I’m not that impressed with those results. Yes, we get from 17 to 12 and 12 to 9 characters, but I’m not convinced that’s sufficient progress to make the whole thing worth it.</p>
<p>At this point a certain degree of madness crept into the proceedings.</p>
<p>Clearly, the problem wasn’t with the overall approach, but with the disgraceful paucity of symbols. 64 just wasn’t a large enough base. Using a larger base would ensure fewer characters to represent large numbers. The only problem here is that while progressing from zero to 63 with <tt class="docutils literal"><span class="pre">[0-9a-zA-Z_*]</span></tt> makes at least some logical sense to most people familiar with the English alphabet, how to go beyond that?</p>
<p>I started looking at larger character sets. Unicode can be supported in URLs (e.g. <a class="reference external" href="http://?.ws/??">http://?.ws/??</a>), so why not start using whatever Unicode symbols make sense in a higher base system?</p>
<p>I thought that base 128 would be ideal, but ran into immediate problems. Unfortunately, there doesn’t seem to be any single additional feature or accent that’s available for all of the letters of the English alphabet—I looked for dots, macrons, umlauts, overlines, underlines&#8230; I even looked at the possibility of <a class="reference external" href="http://www.fileformat.info/convert/text/upside-down-map.htm">upside-down letters</a>, but not all of them are supported. If they were, I might have pursued that, but there’s an additional problem: they don’t aid experimentation.</p>
<p>I wanted the user of this shortening system to be able to change the characters with relative ease, and once you get into additional character sets, that’s tricky. Even if the upside-down letters had all been available, and the user realized that the progression was something like zero to nine in numerals, ten to thirty-five in lowercase letters, thirty-six to sixty-one in uppercase letters, sixty-two to eighty-seven in upside-down lowercase letters, eighty-eight to one hundred and thirteen in upside-down uppercase letters, and the remaining fourteen numbers in some pseudo-logical progression through (URL-safe) other symbols, how could they apply this knowledge to manipulate the strings? I don’t know of any OS that supports easily producing any of those upside-down letters. The same goes for any of the other alterations I considered, such as dots, umlauts, etc.</p>
<p>Having spent plenty of time exploring this, I eventually backed off it, and decided that my implementation took my approach about as far as it would go. We’ll see if any of the others end up with a better solution.</p>
<p>Incidentally, one positive aspect of my way of doing it is that unlike with traditional URL shorteners, no storage would be necessary, just a translation service, which could be trivially written in just about any language.</p>
<p>Tags: <a href="http://tadhg.com/wp/tag/coding/" rel="tag">coding</a>, <a href="http://tadhg.com/wp/tag/geolocation/" rel="tag">geolocation</a>, <a href="http://tadhg.com/wp/tag/python/" rel="tag">python</a>, <a href="http://tadhg.com/wp/tag/web-development/" rel="tag">web-development</a></p><h4 class='related-posts-header'>Related Posts</h4><ul class="related-posts-list"><li class="related-post"><a href="http://tadhg.com/wp/2009/11/17/addons-mozilla-org-moving-from-cakephp-to-django/">addons.mozilla.org Moving from CakePHP to Django</a> <span class="related-post-date timestamp">Tue 17 Nov 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/07/28/better-rest-wordpress-pipeline/">Better reST–WordPress Pipeline</a> <span class="related-post-date timestamp">Tue 28 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/07/16/some-character-encoding-gotchas/">Some Character Encoding Gotchas</a> <span class="related-post-date timestamp">Thu 16 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/07/14/blog-workflow-with-restructuredtext/">Blog Workflow with reStructuredText</a> <span class="related-post-date timestamp">Tue 14 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/06/26/python-syntax-highlighting-for-star-light/">Python Syntax Highlighting for star-light</a> <span class="related-post-date timestamp">Fri 26 Jun 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/06/12/pylons-via-apache-port-issues/">Pylons Via Apache Port Issues</a> <span class="related-post-date timestamp">Fri 12 Jun 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/06/09/pywebsf-meetup-for-sf-area-python-web-developers/">PyWebSF: Meetup for SF-Area Python Web Developers</a> <span class="related-post-date timestamp">Tue 09 Jun 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/01/27/some-minor-software-projects/">Some Minor Software Projects</a> <span class="related-post-date timestamp">Sun 27 Jan 2008</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/01/15/sfmagicorg-rewrite-planning-data-entry/">sfmagic.org Rewrite: Planning Data Entry</a> <span class="related-post-date timestamp">Tue 15 Jan 2008</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/01/14/sfmagicorg-rewrite-head-to-head-done/">sfmagic.org Rewrite: Head-to-Head Done</a> <span class="related-post-date timestamp">Mon 14 Jan 2008</span></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tadhg.com/wp/2009/12/08/gps-urls-math-python-featuritis/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>addons.mozilla.org Moving from CakePHP to Django</title>
		<link>http://tadhg.com/wp/2009/11/17/addons-mozilla-org-moving-from-cakephp-to-django/</link>
		<comments>http://tadhg.com/wp/2009/11/17/addons-mozilla-org-moving-from-cakephp-to-django/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 04:43:29 +0000</pubDate>
		<dc:creator>Tadhg</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[web-development]]></category>

		<guid isPermaLink="false">http://tadhg.com/wp/?p=2400</guid>
		<description><![CDATA[This post details why they’re making the move. I find this of interest partly because it’s a move from a very popular web language (PHP) to one that’s become vastly more popular in the last couple of years (Python), and also because Django is the one major Python framework I haven’t tried out yet. Because [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://micropipes.com/blog/2009/11/17/amo-development-changes-in-2010/" title="AMO Development Changes in 2010" >This post</a> details why they’re making the move. I find this of interest partly because it’s a move from a very popular web language (PHP) to one that’s become vastly more popular in the last couple of years (Python), and also because Django is the one major Python framework I haven’t tried out yet. Because of my liking for Python, I have a personal bias that makes me happy to see a prominent project such as this one move to the language.</p>
<p>I find it odd that they’re going from Subversion to git instead of to Mercurial, but I like the fact that they’re moving their documentation to the reStructuredText-based <a class="reference external" href="http://sphinx.pocoo.org/">Sphinx</a>.</p>
<p>Tags: <a href="http://tadhg.com/wp/tag/coding/" rel="tag">coding</a>, <a href="http://tadhg.com/wp/tag/python/" rel="tag">python</a>, <a href="http://tadhg.com/wp/tag/web-development/" rel="tag">web-development</a></p><h4 class='related-posts-header'>Related Posts</h4><ul class="related-posts-list"><li class="related-post"><a href="http://tadhg.com/wp/2009/12/08/gps-urls-math-python-featuritis/">GPS, URLs, Math, Python, Featuritis</a> <span class="related-post-date timestamp">Tue 08 Dec 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/07/28/better-rest-wordpress-pipeline/">Better reST–WordPress Pipeline</a> <span class="related-post-date timestamp">Tue 28 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/07/16/some-character-encoding-gotchas/">Some Character Encoding Gotchas</a> <span class="related-post-date timestamp">Thu 16 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/07/14/blog-workflow-with-restructuredtext/">Blog Workflow with reStructuredText</a> <span class="related-post-date timestamp">Tue 14 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/06/26/python-syntax-highlighting-for-star-light/">Python Syntax Highlighting for star-light</a> <span class="related-post-date timestamp">Fri 26 Jun 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/06/12/pylons-via-apache-port-issues/">Pylons Via Apache Port Issues</a> <span class="related-post-date timestamp">Fri 12 Jun 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/06/09/pywebsf-meetup-for-sf-area-python-web-developers/">PyWebSF: Meetup for SF-Area Python Web Developers</a> <span class="related-post-date timestamp">Tue 09 Jun 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/01/27/some-minor-software-projects/">Some Minor Software Projects</a> <span class="related-post-date timestamp">Sun 27 Jan 2008</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/01/15/sfmagicorg-rewrite-planning-data-entry/">sfmagic.org Rewrite: Planning Data Entry</a> <span class="related-post-date timestamp">Tue 15 Jan 2008</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/01/14/sfmagicorg-rewrite-head-to-head-done/">sfmagic.org Rewrite: Head-to-Head Done</a> <span class="related-post-date timestamp">Mon 14 Jan 2008</span></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tadhg.com/wp/2009/11/17/addons-mozilla-org-moving-from-cakephp-to-django/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>HTML Past and Future</title>
		<link>http://tadhg.com/wp/2009/11/10/html-past-and-future/</link>
		<comments>http://tadhg.com/wp/2009/11/10/html-past-and-future/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 00:04:45 +0000</pubDate>
		<dc:creator>Tadhg</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[web-development]]></category>

		<guid isPermaLink="false">http://tadhg.com/wp/?p=2375</guid>
		<description><![CDATA[Mark Pilgrim, author of the excellent Dive Into Python, is working on Dive Into HTML5, and his draft chapter on HTML5 semantics is an excellent introduction to the advantages of the new HTML standard. It’s unfortunately quite far from becoming a real standard, but as a web developer, I’d like to see it happen as [...]]]></description>
			<content:encoded><![CDATA[<p><a class="reference external" href="http://diveintomark.org/">Mark Pilgrim</a>, author of the excellent <a class="reference external" href="http://diveintopython.org/"><cite>Dive Into Python</cite></a>, is working on <a class="reference external" href="http://diveintohtml5.org/"><cite>Dive Into HTML5</cite></a>, and his <a href="http://diveintohtml5.org/semantics.html" title="What Does It All Mean?" >draft chapter on HTML5 semantics</a> is an excellent introduction to the advantages of the new HTML standard. It’s unfortunately quite far from becoming a real standard, but as a web developer, I’d like to see it happen as soon as possible.</p>
<p>I came across a contrasting Mark Pilgrim article that’s also worth reading: <a class="reference external" href="http://diveintomark.org/archives/2009/11/02/why-do-we-have-an-img-element">“Why do we have an IMG element?”</a>, which goes over the history of that element in HTML, the objections raised at the time, and how it won out over alternatives.</p>
<p>Tags: <a href="http://tadhg.com/wp/tag/coding/" rel="tag">coding</a>, <a href="http://tadhg.com/wp/tag/tech/" rel="tag">tech</a>, <a href="http://tadhg.com/wp/tag/web-development/" rel="tag">web-development</a></p><h4 class='related-posts-header'>Related Posts</h4><ul class="related-posts-list"><li class="related-post"><a href="http://tadhg.com/wp/2010/01/10/wordpress-2-9-upgrade/">WordPress 2.9 Upgrade</a> <span class="related-post-date timestamp">Sun 10 Jan 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/07/28/better-rest-wordpress-pipeline/">Better reST–WordPress Pipeline</a> <span class="related-post-date timestamp">Tue 28 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/07/16/some-character-encoding-gotchas/">Some Character Encoding Gotchas</a> <span class="related-post-date timestamp">Thu 16 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/07/14/blog-workflow-with-restructuredtext/">Blog Workflow with reStructuredText</a> <span class="related-post-date timestamp">Tue 14 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/06/14/wordpress-2-8-upgrade/">WordPress 2.8 Upgrade</a> <span class="related-post-date timestamp">Sun 14 Jun 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/06/12/pylons-via-apache-port-issues/">Pylons Via Apache Port Issues</a> <span class="related-post-date timestamp">Fri 12 Jun 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/06/09/pywebsf-meetup-for-sf-area-python-web-developers/">PyWebSF: Meetup for SF-Area Python Web Developers</a> <span class="related-post-date timestamp">Tue 09 Jun 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/03/12/yahoos-website-performance-rules/">Yahoo!'s Website Performance Rules</a> <span class="related-post-date timestamp">Thu 12 Mar 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/02/13/my-wordpress-development-setup/">My WordPress Development Setup</a> <span class="related-post-date timestamp">Fri 13 Feb 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/03/18/editable-google-maps/">Editable Google Maps</a> <span class="related-post-date timestamp">Tue 18 Mar 2008</span></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tadhg.com/wp/2009/11/10/html-past-and-future/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some JavaScript Programming Patterns</title>
		<link>http://tadhg.com/wp/2009/10/11/some-javascript-programming-patterns/</link>
		<comments>http://tadhg.com/wp/2009/10/11/some-javascript-programming-patterns/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 23:09:18 +0000</pubDate>
		<dc:creator>Tadhg</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[web-development]]></category>

		<guid isPermaLink="false">http://tadhg.com/wp/?p=2291</guid>
		<description><![CDATA[“JavaScript Programming Patterns”, by Klaus Komenda, is an excellent walkthrough of several JS patterns. If you code JavaScript regularly you probably know at least some of these but will likely still find something useful in it—I particularly like the lazy function definition, a pattern originated by Peter Michaux:

var foo = function() {
    [...]]]></description>
			<content:encoded><![CDATA[<p><a class="reference external" href="http://www.klauskomenda.com/code/javascript-programming-patterns/">“JavaScript Programming Patterns”</a>, by <a class="reference external" href="http://www.klauskomenda.com/about/">Klaus Komenda</a>, is an excellent walkthrough of several JS patterns. If you code JavaScript regularly you probably know at least some of these but will likely still find something useful in it—I particularly like the <a class="reference external" href="http://www.klauskomenda.com/code/javascript-programming-patterns/#lazy">lazy function definition</a>, a pattern <a class="reference external" href="http://peter.michaux.ca/articles/lazy-function-definition-pattern">originated by Peter Michaux</a>:</p>
<pre class="javascript literal-block">
var foo = function() {
    var t = new Date();
    foo = function() {
        return t;
    };
    return foo();
};
</pre>
<p>Simple, elegant, solves the problem of making sure that the heavy lifting only gets done once.</p>
<p>Tags: <a href="http://tadhg.com/wp/tag/coding/" rel="tag">coding</a>, <a href="http://tadhg.com/wp/tag/javascript/" rel="tag">JavaScript</a>, <a href="http://tadhg.com/wp/tag/web-development/" rel="tag">web-development</a></p><h4 class='related-posts-header'>Related Posts</h4><ul class="related-posts-list"><li class="related-post"><a href="http://tadhg.com/wp/2010/01/21/jquery-project/">jQuery Project</a> <span class="related-post-date timestamp">Thu 21 Jan 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/06/26/python-syntax-highlighting-for-star-light/">Python Syntax Highlighting for star-light</a> <span class="related-post-date timestamp">Fri 26 Jun 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/06/13/jquery-improvements/">jQuery Improvements</a> <span class="related-post-date timestamp">Fri 13 Jun 2008</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/02/04/coding-and-concepts-tiebreakers/">Coding and Concepts: Tiebreakers</a> <span class="related-post-date timestamp">Mon 04 Feb 2008</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/01/29/datejs/">Datejs</a> <span class="related-post-date timestamp">Tue 29 Jan 2008</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/01/27/some-minor-software-projects/">Some Minor Software Projects</a> <span class="related-post-date timestamp">Sun 27 Jan 2008</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/01/21/sfmagicorg-rewrite-pod-division/">sfmagic.org Rewrite: Pod Division</a> <span class="related-post-date timestamp">Mon 21 Jan 2008</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/01/15/sfmagicorg-rewrite-planning-data-entry/">sfmagic.org Rewrite: Planning Data Entry</a> <span class="related-post-date timestamp">Tue 15 Jan 2008</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/01/08/sfmagicorg-rewrite-stalledgraphs/">sfmagic.org Rewrite: Stalled/Graphs</a> <span class="related-post-date timestamp">Tue 08 Jan 2008</span></li><li class="related-post"><a href="http://tadhg.com/wp/2007/04/16/ajax-cross-site-scripting-with-apache-rewriterule/"><abbr title='Asynchronous JavaScript and XML'>AJAX</abbr> Cross-Site Scripting with Apache RewriteRule</a> <span class="related-post-date timestamp">Mon 16 Apr 2007</span></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tadhg.com/wp/2009/10/11/some-javascript-programming-patterns/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>404 Pages</title>
		<link>http://tadhg.com/wp/2009/09/10/404-pages/</link>
		<comments>http://tadhg.com/wp/2009/09/10/404-pages/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 07:36:15 +0000</pubDate>
		<dc:creator>Tadhg</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[web-development]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://tadhg.com/wp/?p=2188</guid>
		<description><![CDATA[wpbeginner has a list of their favorite WordPress 404 pages. There are some good ones in there, but none of them do what I think they should do—that is, as well as provide helpful links to popular pages, also provide a list of guesses about where the user was actually trying to go. Coincidentally, today [...]]]></description>
			<content:encoded><![CDATA[<p><a class="reference external" href="http://www.wpbeginner.com/">wpbeginner</a> has a <a href="http://www.wpbeginner.com/showcase/best-of-best-wordpress-404-error-page-designs/" title="Best of Best WordPress 404 Error Page Designs" >list of their favorite WordPress 404 pages</a>. There are some good ones in there, but none of them do what I think they should do—that is, as well as provide helpful links to popular pages, also provide a list of guesses about where the user was actually trying to go. Coincidentally, today I also read <a href="http://wordaligned.org/articles/longest-common-subsequence" title="Longest common subsequence" >this excellent article about finding the longest common subsequence between two strings</a>. So, at some point, I’ll improve my blog’s 404 page so that it calls, probably via asynchronous request, a Python script that checks the user’s requested URL against all valid URLs WordPress knows about, and then suggests to the user whatever the closest matches are. I’m somewhat surprised that this isn’t done more often, but it seems that far too many sites are really blasé about 404s.</p>
<p>Tags: <a href="http://tadhg.com/wp/tag/php/" rel="tag">PHP</a>, <a href="http://tadhg.com/wp/tag/python/" rel="tag">python</a>, <a href="http://tadhg.com/wp/tag/web-development/" rel="tag">web-development</a>, <a href="http://tadhg.com/wp/tag/wordpress/" rel="tag">WordPress</a></p><h4 class='related-posts-header'>Related Posts</h4><ul class="related-posts-list"><li class="related-post"><a href="http://tadhg.com/wp/2010/01/10/wordpress-2-9-upgrade/">WordPress 2.9 Upgrade</a> <span class="related-post-date timestamp">Sun 10 Jan 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/07/28/better-rest-wordpress-pipeline/">Better reST–WordPress Pipeline</a> <span class="related-post-date timestamp">Tue 28 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/07/14/blog-workflow-with-restructuredtext/">Blog Workflow with reStructuredText</a> <span class="related-post-date timestamp">Tue 14 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/06/23/pywebsf-site-update/">PyWebSF Site Update</a> <span class="related-post-date timestamp">Tue 23 Jun 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/06/14/wordpress-2-8-upgrade/">WordPress 2.8 Upgrade</a> <span class="related-post-date timestamp">Sun 14 Jun 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/02/13/my-wordpress-development-setup/">My WordPress Development Setup</a> <span class="related-post-date timestamp">Fri 13 Feb 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/05/16/sabbatical-close/">sabbatical.close()</a> <span class="related-post-date timestamp">Sun 16 May 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/12/08/gps-urls-math-python-featuritis/">GPS, URLs, Math, Python, Featuritis</a> <span class="related-post-date timestamp">Tue 08 Dec 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/11/17/addons-mozilla-org-moving-from-cakephp-to-django/">addons.mozilla.org Moving from CakePHP to Django</a> <span class="related-post-date timestamp">Tue 17 Nov 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/07/16/some-character-encoding-gotchas/">Some Character Encoding Gotchas</a> <span class="related-post-date timestamp">Thu 16 Jul 2009</span></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tadhg.com/wp/2009/09/10/404-pages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Social Design Patterns</title>
		<link>http://tadhg.com/wp/2009/08/11/social-design-patterns/</link>
		<comments>http://tadhg.com/wp/2009/08/11/social-design-patterns/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 15:00:45 +0000</pubDate>
		<dc:creator>Tadhg</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[information architecture]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[web-development]]></category>

		<guid isPermaLink="false">http://tadhg.com/wp/?p=2063</guid>
		<description><![CDATA[Via BoingBoing, I came across quite a good article on information architecture and user experience design for social websites. If you&#8217;re at all interested in the area, I recommend it. There&#8217;s also a related wiki that seems to have a great deal of content on it.
Tags: design, information architecture, user experience, web-developmentRelated PostsPyWebSF Site Update [...]]]></description>
			<content:encoded><![CDATA[<p>Via <a class="reference external" href="http://www.boingboing.net/2009/08/07/stupid-pitfalls-of-s.html">BoingBoing</a>, I came across quite a good article on <a href="http://asis.org/Bulletin/Aug-09/AugSep09_Crumlish.html" title="The Information Architecture of Social Experience Design: Five Principles, Five Anti-Patterns and 96 Patterns (in Three Buckets)" >information architecture and user experience design for social websites</a>. If you&#8217;re at all interested in the area, I recommend it. There&#8217;s also a <a href="http://designingsocialinterfaces.com/patterns.wiki/index.php?title=Main_Page#Engagement" title="Designing Social Interfaces patterns wiki" >related wiki</a> that seems to have a great deal of content on it.</p>
<p>Tags: <a href="http://tadhg.com/wp/tag/design/" rel="tag">design</a>, <a href="http://tadhg.com/wp/tag/information-architecture/" rel="tag">information architecture</a>, <a href="http://tadhg.com/wp/tag/user-experience/" rel="tag">user experience</a>, <a href="http://tadhg.com/wp/tag/web-development/" rel="tag">web-development</a></p><h4 class='related-posts-header'>Related Posts</h4><ul class="related-posts-list"><li class="related-post"><a href="http://tadhg.com/wp/2009/06/23/pywebsf-site-update/">PyWebSF Site Update</a> <span class="related-post-date timestamp">Tue 23 Jun 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/06/21/pywebsf-logo-attempt/">PyWebSF Logo Attempt</a> <span class="related-post-date timestamp">Sun 21 Jun 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2007/01/18/why-i-cant-stand-html-email/">Why I Can't Stand HTML Email</a> <span class="related-post-date timestamp">Thu 18 Jan 2007</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/03/30/2010-goals-first-quarter-review/">2010 Goals: First Quarter Review</a> <span class="related-post-date timestamp">Tue 30 Mar 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/03/22/a-triumph-of-design/">&#64;: A Triumph of Design</a> <span class="related-post-date timestamp">Mon 22 Mar 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/03/08/inkscape/">Inkscape</a> <span class="related-post-date timestamp">Mon 08 Mar 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/02/11/internet-illiteracy/">Internet Illiteracy</a> <span class="related-post-date timestamp">Thu 11 Feb 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/01/21/jquery-project/">jQuery Project</a> <span class="related-post-date timestamp">Thu 21 Jan 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/01/10/wordpress-2-9-upgrade/">WordPress 2.9 Upgrade</a> <span class="related-post-date timestamp">Sun 10 Jan 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/01/01/2010-goals/">2010 Goals</a> <span class="related-post-date timestamp">Fri 01 Jan 2010</span></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tadhg.com/wp/2009/08/11/social-design-patterns/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>2009 Goals Status</title>
		<link>http://tadhg.com/wp/2009/07/30/2009-goals-status/</link>
		<comments>http://tadhg.com/wp/2009/07/30/2009-goals-status/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 06:50:46 +0000</pubDate>
		<dc:creator>Tadhg</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[goals]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[reading]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[web-development]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://tadhg.com/wp/?p=1997</guid>
		<description><![CDATA[At the start of the year I laid out some goals for 2009, and it&#8217;s time to review how they&#8217;re going.

Abandoned

Write a summary/review/synopsis of every book I read: I&#8217;ve tried this one before, and failed, and it remains too hard for me.

Accomplished

Fix my blog: Did this early.
Fix my Subversion repository: Done, and I&#8217;ve been happily [...]]]></description>
			<content:encoded><![CDATA[<p>At the start of the year I <a href="http://tadhg.com/wp/2009/01/01/2009-goals/" title="2009 Goals" >laid out some goals for 2009</a>, and it&#8217;s time to review how they&#8217;re going.<br />
<span id="more-1997"></span><br />
<em>Abandoned</em></p>
<ul>
<li><strong>Write a summary/review/synopsis of every book I read</strong>: I&#8217;ve tried this one before, and failed, and it <a href="http://tadhg.com/wp/2009/02/27/giving-up-on-a-goal-for-2009/" title="Giving Up On a Goal for 2009" >remains too hard for me</a>.</li>
</ul>
<p><em>Accomplished</em></p>
<ul>
<li><strong>Fix my blog</strong>: <a href="http://tadhg.com/wp/2009/01/27/blog-move-steps-part-three-dns-change/" title="Blog Move Steps Part Three: DNS Change" >Did this early</a>.</li>
<li><strong>Fix my Subversion repository</strong>: <a href="http://tadhg.com/wp/2009/05/04/version-control-recovery/" title="Version Control Recovery" >Done</a>, and I&#8217;ve been happily using it since.</li>
</ul>
<p><em>Some Progress</em></p>
<ul>
<li><strong>Read 80 books</strong>: Hmm. Might be tough to make it. I&#8217;ve read <a class="reference external" href="http://books.tadhg.user.dev.freebaseapps.com/">35 books so far this year</a>, so would have to read nine per month for the rest of the year. Not impossible, but since March I just haven&#8217;t been reading that much, not sure why.</li>
<li><strong>Finish a writing series of mine called</strong> <a class="reference external" href="http://tadhg.com/wp/fiction/#pafib"><strong>pafib</strong></a>: I&#8217;ve written <a href="http://tadhg.com/wp/2009/05/22/pafib-6/" title="pafib #6" >one part of this, the sixth</a>, and if I get inspired or determined (or both) there&#8217;s some hope of finishing it.</li>
<li><strong>Finish at least three software projects</strong>: I&#8217;ve been doing a bunch of them, and the reStructuredText work certainly counts, as do the <a class="reference external" href="http://tadhg.com/wp/wordpress-plugins/">WordPress plugins</a> I&#8217;ve written. I have not, however, made progress with sfmagic.org, which remains dead.</li>
</ul>
<p><em>No Progress</em></p>
<ul>
<li><strong>Finish</strong> <a class="reference external" href="http://tadhg.com/afbh/"><strong>The Annotated Fantasy Bedtime Hour</strong></a>: Haven&#8217;t touched it. Again, some inspiration and determination are required.</li>
<li><strong>Write at least one draft of the fantasy novel</strong>: No progress. This is where the determination and inspiration, should they show up, should be directed.</li>
</ul>
<p>Overall, not too bad. I need to do more writing, particularly longer projects and especially fiction. At least I&#8217;ve been removing technical barriers to that.</p>
<p>Tags: <a href="http://tadhg.com/wp/tag/blog/" rel="tag">Blog</a>, <a href="http://tadhg.com/wp/tag/goals/" rel="tag">goals</a>, <a href="http://tadhg.com/wp/tag/personal/" rel="tag">personal</a>, <a href="http://tadhg.com/wp/tag/reading/" rel="tag">reading</a>, <a href="http://tadhg.com/wp/tag/software/" rel="tag">software</a>, <a href="http://tadhg.com/wp/tag/web-development/" rel="tag">web-development</a>, <a href="http://tadhg.com/wp/tag/writing/" rel="tag">writing</a></p><h4 class='related-posts-header'>Related Posts</h4><ul class="related-posts-list"><li class="related-post"><a href="http://tadhg.com/wp/2009/12/29/2009-goals-review/">2009 Goals Review</a> <span class="related-post-date timestamp">Tue 29 Dec 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/01/01/2009-goals/">2009 Goals</a> <span class="related-post-date timestamp">Thu 01 Jan 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/01/01/2010-goals/">2010 Goals</a> <span class="related-post-date timestamp">Fri 01 Jan 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/05/16/sabbatical-close/">sabbatical.close()</a> <span class="related-post-date timestamp">Sun 16 May 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/03/30/2010-goals-first-quarter-review/">2010 Goals: First Quarter Review</a> <span class="related-post-date timestamp">Tue 30 Mar 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2007/12/11/some-medium-term-plans/">Some Medium-Term Plans</a> <span class="related-post-date timestamp">Tue 11 Dec 2007</span></li><li class="related-post"><a href="http://tadhg.com/wp/2007/04/08/semantic-editor-application-search/">Semantic Editor Application Search</a> <span class="related-post-date timestamp">Sun 08 Apr 2007</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/08/30/perfectionism-is-hard/">Perfectionism is Hard</a> <span class="related-post-date timestamp">Mon 30 Aug 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/08/02/three-routines/">Three Routines</a> <span class="related-post-date timestamp">Mon 02 Aug 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/09/24/rtf_word_restructuredtext-toolchain/">RTF/Word–reStructuredText Toolchain</a> <span class="related-post-date timestamp">Thu 24 Sep 2009</span></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tadhg.com/wp/2009/07/30/2009-goals-status/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Better reST–WordPress Pipeline</title>
		<link>http://tadhg.com/wp/2009/07/28/better-rest-wordpress-pipeline/</link>
		<comments>http://tadhg.com/wp/2009/07/28/better-rest-wordpress-pipeline/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 07:15:47 +0000</pubDate>
		<dc:creator>Tadhg</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[reStructuredText]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[web-development]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://tadhg.com/wp/?p=1983</guid>
		<description><![CDATA[Last week I posted about my setup for going from reStructuredText to WordPress. It involved a shell script, some Python scripts, and the pbpaste and pbcopy commands. It worked, but it was a little on the convoluted side.
Now I have a slightly better process, and one that I will have used to publish this post.

The [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I posted about <a class="reference external" href="http://tadhg.com/wp/2009/07/14/blog-workflow-with-restructuredtext/">my setup for going from reStructuredText to WordPress</a>. It involved a shell script, some Python scripts, and the <tt class="docutils literal"><span class="pre">pbpaste</span></tt> and <tt class="docutils literal"><span class="pre">pbcopy</span></tt> commands. It worked, but it was a little on the convoluted side.</p>
<p>Now I have a slightly better process, and one that I will have used to publish this post.<br />
<span id="more-1983"></span><br />
The previous version was launched via <a class="reference external" href="http://en.wikipedia.org/wiki/Quicksilver_(software)">Quicksilver</a> and operated on the contents of the clipboard; the new version is run from the command line—or, even better, from within jEdit—and operates on a file. It:</p>
<ul>
<li>Runs the contents of the file through my reST–Wordpress script, which uses <a class="reference external" href="http://unmaintainable.wordpress.com/2008/03/22/using-rst-with-wordpress/"><tt class="docutils literal"><span class="pre">rst2wp</span></tt></a> and some customized other Python scripts.</li>
<li>Submits the transformed text to WordPress via <a class="reference external" href="http://code.google.com/p/python-blogger/"><tt class="docutils literal"><span class="pre">python-blogger</span></tt></a>, a script for doing blog XMLRPC operations in Python.</li>
<li>Runs <tt class="docutils literal"><span class="pre">svn</span> <span class="pre">add</span></tt> on the file.</li>
<li>Opens the WordPress Edit Draft page for the submitted post.</li>
</ul>
<p>So, the previous steps for me were:</p>
<ul>
<li>Write post in reStructuredText in <a class="reference external" href="http://www.jedit.org/">jEdit</a>.</li>
<li>Select all.</li>
<li>Copy.</li>
<li>Invoke a shell script via <a class="reference external" href="http://en.wikipedia.org/wiki/Quicksilver_(software)">Quicksilver</a>.</li>
<li>Switch to WordPress new post tab in Firefox.</li>
<li>Paste.</li>
<li>Fiddle with the post settings slightly.</li>
<li>Post.</li>
</ul>
<p>While the new ones are:</p>
<ul>
<li>Write post in reStructuredText in jEdit.</li>
<li>Save.</li>
<li>Invoke a jEdit macro to run the Python script from within the editor.</li>
<li>Switch to WordPress new post tab in Firefox.</li>
<li>Fiddle with the post settings slightly.</li>
<li>Post.</li>
</ul>
<p>(As a bonus, this version also adds the file to Subversion.)</p>
<p>The jEdit macro seems</p>
<p>These are the components necessary to make it work:</p>
<ul>
<li><a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a>—of course, to handle the reStructuredText</li>
<li><a class="reference external" href="http://unmaintainable.wordpress.com/2008/03/22/using-rst-with-wordpress/"><tt class="docutils literal"><span class="pre">rst2wp</span></tt></a>, which I&#8217;ve modified a little for my own purposes.</li>
<li><a class="reference external" href="http://code.google.com/p/python-blogger/"><tt class="docutils literal"><span class="pre">python-blogger</span></tt></a>, to talk to WordPress in Python.</li>
<li><a class="reference external" href="http://blog.articlemarketingautomation.com/enabling-xml-rpc-on-wordpress">WordPress with XMLRPC enabled</a> so that software can talk to it.</li>
<li>A short script of my own that pulls the pieces together. (This uses <a class="reference external" href="http://docs.python.org/library/subprocess.html"><tt class="docutils literal"><span class="pre">os.subprocess</span></tt></a>, so Python 2.4 or better is required)</li>
<li>A jEdit macro to run the script from the last step within the editor.</li>
</ul>
<p>I&#8217;m pretty happy with it, and I think it should be fairly cross-platform, which is important to me as I&#8217;d like to take this whole setup with me if I switch environments in future.</p>
<p>Tags: <a href="http://tadhg.com/wp/tag/coding/" rel="tag">coding</a>, <a href="http://tadhg.com/wp/tag/personal/" rel="tag">personal</a>, <a href="http://tadhg.com/wp/tag/python/" rel="tag">python</a>, <a href="http://tadhg.com/wp/tag/restructuredtext/" rel="tag">reStructuredText</a>, <a href="http://tadhg.com/wp/tag/software/" rel="tag">software</a>, <a href="http://tadhg.com/wp/tag/tech/" rel="tag">tech</a>, <a href="http://tadhg.com/wp/tag/web-development/" rel="tag">web-development</a>, <a href="http://tadhg.com/wp/tag/wordpress/" rel="tag">WordPress</a></p><h4 class='related-posts-header'>Related Posts</h4><ul class="related-posts-list"><li class="related-post"><a href="http://tadhg.com/wp/2009/07/14/blog-workflow-with-restructuredtext/">Blog Workflow with reStructuredText</a> <span class="related-post-date timestamp">Tue 14 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/05/16/sabbatical-close/">sabbatical.close()</a> <span class="related-post-date timestamp">Sun 16 May 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/09/24/rtf_word_restructuredtext-toolchain/">RTF/Word–reStructuredText Toolchain</a> <span class="related-post-date timestamp">Thu 24 Sep 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/01/27/some-minor-software-projects/">Some Minor Software Projects</a> <span class="related-post-date timestamp">Sun 27 Jan 2008</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/04/29/improving-a-python-word-counting-function/">Improving a Python Word Counting Function</a> <span class="related-post-date timestamp">Thu 29 Apr 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/04/02/clearing-growl-notifications/">Clearing Growl Notifications</a> <span class="related-post-date timestamp">Fri 02 Apr 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/02/16/some-vim-script-implementation-testing-and-hackery/">Some Vim Script Implementation, Testing, and Hackery</a> <span class="related-post-date timestamp">Tue 16 Feb 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/02/14/first-post-with-vim/">First Post With Vim</a> <span class="related-post-date timestamp">Sun 14 Feb 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/01/17/better-word-count-in-vim/">Better Word Count in Vim</a> <span class="related-post-date timestamp">Sun 17 Jan 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/01/10/wordpress-2-9-upgrade/">WordPress 2.9 Upgrade</a> <span class="related-post-date timestamp">Sun 10 Jan 2010</span></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tadhg.com/wp/2009/07/28/better-rest-wordpress-pipeline/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>thesixtyone</title>
		<link>http://tadhg.com/wp/2009/07/26/thesixtyone/</link>
		<comments>http://tadhg.com/wp/2009/07/26/thesixtyone/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 06:08:14 +0000</pubDate>
		<dc:creator>Tadhg</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[web-development]]></category>

		<guid isPermaLink="false">http://tadhg.com/wp/?p=1966</guid>
		<description><![CDATA[thesixtyone is a music site unlike any other I’ve seen. I first heard about it from AlecF’s tweet in June, but only glanced at it then. This week, I was in the mood for finding some new music, and remembered it.
It’s a site where you can browse music, except that it encourages you to try [...]]]></description>
			<content:encoded><![CDATA[<p><a class="reference external" href="http://thesixtyone.com/">thesixtyone</a> is a music site unlike any other I’ve seen. I first heard about it from <a class="reference external" href="http://twitter.com/alecf/status/2363142388">AlecF’s tweet in June</a>, but only glanced at it then. This week, I was in the mood for finding some new music, and remembered it.</p>
<p>It’s a site where you can browse music, except that it encourages you to try out various discovery methods by giving you “quests” and assigning points to you based on your achievements.<br />
<span id="more-1966"></span><br />
Web 2.0 meets browsing in the record store meets MMORPGs meets <a class="reference external" href="http://armorgames.com/play/2893/achievement-unlocked"><cite>Achievement Unlocked</cite></a>.</p>
<p>Quality, obviously, varies, but I’ve found some good stuff there, and <a class="reference external" href="http://www.thesixtyone.com/#/henryhomesweet/song/Until+I+Sleep/54014/">“Until I Sleep”</a> alone has made the whole experience worthwhile. It’s a fantastic idea, and I’d love to see it gain enough traction to ensure a critical mass of good music finding its way there.</p>
<p>It’s definitely worth a look, and might possibly become a major channel for finding new music.</p>
<p>(<a class="reference external" href="http://www.thesixtyone.com/#/erisian/">This is my profile</a>, in case you’re interested.)</p>
<p>Tags: <a href="http://tadhg.com/wp/tag/music/" rel="tag">music</a>, <a href="http://tadhg.com/wp/tag/web-development/" rel="tag">web-development</a></p><h4 class='related-posts-header'>Related Posts</h4><ul class="related-posts-list"><li class="related-post"><a href="http://tadhg.com/wp/2010/09/02/the-devils-music/">The Devil’s Music</a> <span class="related-post-date timestamp">Thu 02 Sep 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/08/19/music-is-weird/">Music is Weird</a> <span class="related-post-date timestamp">Thu 19 Aug 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/08/16/this-might-make-the-other-writers-jealous/">This Might Make the Other Writers Jealous</a> <span class="related-post-date timestamp">Mon 16 Aug 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/07/20/lifehacker-meditation-guide/">Lifehacker Meditation Guide</a> <span class="related-post-date timestamp">Tue 20 Jul 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/03/30/2010-goals-first-quarter-review/">2010 Goals: First Quarter Review</a> <span class="related-post-date timestamp">Tue 30 Mar 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/02/11/internet-illiteracy/">Internet Illiteracy</a> <span class="related-post-date timestamp">Thu 11 Feb 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/01/21/jquery-project/">jQuery Project</a> <span class="related-post-date timestamp">Thu 21 Jan 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/01/10/wordpress-2-9-upgrade/">WordPress 2.9 Upgrade</a> <span class="related-post-date timestamp">Sun 10 Jan 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/01/01/2010-goals/">2010 Goals</a> <span class="related-post-date timestamp">Fri 01 Jan 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/12/29/2009-goals-review/">2009 Goals Review</a> <span class="related-post-date timestamp">Tue 29 Dec 2009</span></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tadhg.com/wp/2009/07/26/thesixtyone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some Character Encoding Gotchas</title>
		<link>http://tadhg.com/wp/2009/07/16/some-character-encoding-gotchas/</link>
		<comments>http://tadhg.com/wp/2009/07/16/some-character-encoding-gotchas/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 18:31:32 +0000</pubDate>
		<dc:creator>Tadhg</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[web-development]]></category>

		<guid isPermaLink="false">http://tadhg.com/wp/?p=1919</guid>
		<description><![CDATA[While scripting my reStructuredText to WordPress workflow, I ran into a bunch of character encoding problems.

The first thing to keep in mind is that character encoding is not a metadata property of a file. That is, unless a file type itself has some metadata that includes encoding, the only way the OS can determing character [...]]]></description>
			<content:encoded><![CDATA[<p>While scripting my <a href="http://tadhg.com/wp/2009/07/14/blog-workflow-with-restructuredtext/" title="Moving From Word Processors to reStructuredText" >reStructuredText to WordPress workflow</a>, I ran into a bunch of character encoding problems.<br />
<span id="more-1919"></span><br />
The first thing to keep in mind is that character encoding is not a metadata property of a file. That is, unless a file type itself has some metadata that includes encoding, the only way the OS can determing character encoding is by reading the file and guessing.</p>
<p>I knew this, but despite having been caught by this before, I “knew” it in the sense that if you had asked me whether or not there&#8217;s some way outside the file for the OS to know what the encoding is, I would have answered “no”. However, that didn&#8217;t stop me from acting as if some such magical property existed.</p>
<p>I started out by playing with <tt class="docutils literal"><span class="pre">rst2html</span></tt> and opening its output in Firefox. As far as character encoding went, that was fine. Then I switched to <tt class="docutils literal"><span class="pre">rst2wp</span></tt>, which outputs a truncated version of the HTML containing essentially just the body text that you&#8217;re going to paste into WordPress. It worked, but the character encodings were screwed up. I spent a lot of time searching for what the difference between the two was in the source code before finding the obvious answer: <tt class="docutils literal"><span class="pre">rst2wp</span></tt> outputs just the body text.</p>
<p>In other words, it outputs to a file that doesn&#8217;t contain this:</p>
<pre class="html literal-block">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;body&gt;
</pre>
<p>Without that, the browser has to guess what the encoding is. Looking at the source code doesn&#8217;t help either, because that source code is also rendered in whatever the browser thinks the encoding is (which makes sense).</p>
<p>After I got past that issue, the next one involved writing to standard output from Python. This was consistently screwed up, and I couldn&#8217;t figure it out because when I sent the output to Terminal, the encodings were fine. But if I ran the same script either piped to another script, or outputting to <tt class="docutils literal"><span class="pre">stdout</span></tt> from within the script, they were wrong. It turns out that <a class="reference external" href="http://drj11.wordpress.com/2007/05/14/python-how-is-sysstdoutencoding-chosen/">you need the <tt class="docutils literal"><span class="pre">LC_CTYPE</span></tt> environment variable</a> to be set appropriately in order for Python to write your desired encoding to <tt class="docutils literal"><span class="pre">stdout</span></tt>, e.g. (for tcsh):</p>
<pre class="literal-block">
setenv LC_CTYPE en_US.utf-8
</pre>
<p>(Substituting <tt class="docutils literal"><span class="pre">en_US.utf-8</span></tt> for your preferred encoding, of course.)</p>
<p>This last one is specific to OS X. I&#8217;m copying to and from the clipboard using <tt class="docutils literal"><span class="pre">pbpaste</span></tt> and <tt class="docutils literal"><span class="pre">pbcopy</span></tt> as well as the usual keyboard shortcuts. When doing that from my scripts, the character encodings would get screwed up. To force OS X to use UTF by default, <a class="reference external" href="http://sigpipe.macromates.com/2005/10/11/clipboard-access-from-shell-utf-8/#comment-114">you need to set <tt class="docutils literal"><span class="pre">defaultStringEncoding</span></tt></a>, which is done in tcsh with:</p>
<pre class="literal-block">
setenv __CF_USER_TEXT_ENCODING 0x1F5:0x8000100:0x8000100
</pre>
<p>Note that <tt class="docutils literal"><span class="pre">0x1F5</span></tt> refers to your <tt class="docutils literal"><span class="pre">uid</span></tt>, in this case 501 expressed in hex.</p>
<p>Hopefully those three tips will save some readers a little pain in their scripting.</p>
<p>Tags: <a href="http://tadhg.com/wp/tag/coding/" rel="tag">coding</a>, <a href="http://tadhg.com/wp/tag/python/" rel="tag">python</a>, <a href="http://tadhg.com/wp/tag/tech/" rel="tag">tech</a>, <a href="http://tadhg.com/wp/tag/web-development/" rel="tag">web-development</a></p><h4 class='related-posts-header'>Related Posts</h4><ul class="related-posts-list"><li class="related-post"><a href="http://tadhg.com/wp/2009/07/28/better-rest-wordpress-pipeline/">Better reST–WordPress Pipeline</a> <span class="related-post-date timestamp">Tue 28 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/07/14/blog-workflow-with-restructuredtext/">Blog Workflow with reStructuredText</a> <span class="related-post-date timestamp">Tue 14 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/06/12/pylons-via-apache-port-issues/">Pylons Via Apache Port Issues</a> <span class="related-post-date timestamp">Fri 12 Jun 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/06/09/pywebsf-meetup-for-sf-area-python-web-developers/">PyWebSF: Meetup for SF-Area Python Web Developers</a> <span class="related-post-date timestamp">Tue 09 Jun 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/05/16/sabbatical-close/">sabbatical.close()</a> <span class="related-post-date timestamp">Sun 16 May 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/04/29/improving-a-python-word-counting-function/">Improving a Python Word Counting Function</a> <span class="related-post-date timestamp">Thu 29 Apr 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/02/16/some-vim-script-implementation-testing-and-hackery/">Some Vim Script Implementation, Testing, and Hackery</a> <span class="related-post-date timestamp">Tue 16 Feb 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/02/14/first-post-with-vim/">First Post With Vim</a> <span class="related-post-date timestamp">Sun 14 Feb 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/01/17/better-word-count-in-vim/">Better Word Count in Vim</a> <span class="related-post-date timestamp">Sun 17 Jan 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/01/10/wordpress-2-9-upgrade/">WordPress 2.9 Upgrade</a> <span class="related-post-date timestamp">Sun 10 Jan 2010</span></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tadhg.com/wp/2009/07/16/some-character-encoding-gotchas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blog Workflow with reStructuredText</title>
		<link>http://tadhg.com/wp/2009/07/14/blog-workflow-with-restructuredtext/</link>
		<comments>http://tadhg.com/wp/2009/07/14/blog-workflow-with-restructuredtext/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 06:57:00 +0000</pubDate>
		<dc:creator>Tadhg</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[reStructuredText]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[web-development]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://tadhg.com/wp/?p=1914</guid>
		<description><![CDATA[I wrote about moving my writing over to reStructuredText on Sunday, and since then I&#8217;ve moved both my morning pages and my blog writing to it. The latter proved more complicated, primarily because I wanted to make the process almost as easy as writing pseudo-HTML (which is more or less WordPress&#8217; native format, and kind [...]]]></description>
			<content:encoded><![CDATA[<p>I wrote about <a href="http://tadhg.com/wp/2009/07/12/moving-from-word-processors-to-restructuredtext/" title="Moving From Word Processors to reStructuredText" >moving my writing over to reStructuredText on Sunday</a>, and since then I&#8217;ve moved both my morning pages and my blog writing to it. The latter proved more complicated, primarily because I wanted to make the process almost as easy as writing pseudo-HTML (which is more or less WordPress&#8217; native format, and kind of mine, too, for the last several years). With some hacky wrangling, I&#8217;ve managed to set that up.<br />
<span id="more-1914"></span><br />
I don&#8217;t write my posts in the browser. That&#8217;s too prone to crashing, and I like my text editor, <a class="reference external" href="http://jedit.org/">jEdit</a>, too much for that. On top of that, I want to be able to use <a class="reference external" href="http://subversion.tigris.org/">Subversion</a> for my posts, as I do for more or less everything I wrote. So for the last couple of years, I would write the posts in jEdit and then copy and paste the finished product into the WordPress new post window.</p>
<p>Since I generally tinker with a few things once I see the post preview, it&#8217;s never been worth it to me to try to do automatic posting from the command line, which I know is theoretically possible with WordPress. I thought I might move in that direction given the reStructuredText move, but it didn&#8217;t work out that way.</p>
<p>One option was to use the <a class="reference external" href="https://launchpad.net/rest-wordpress/">rest-wordpress</a> plugin, which would do the reStructuredText parsing on the blog side, so that my workflow would be to paste the reStructuredText source into the WordPress edit field as usual, and then have it turn it into HTML. While that seemed a reasonable option, I was eager to create some custom directives that would let me make reStructuredText even more useful. Sadly, custom directives aren&#8217;t that easy to add in, and I decided that if I planned to develop those, I should do it locally rather than on the server side.</p>
<p>The old workflow was:</p>
<ul>
<li>Write post in pseudo-HTML in jEdit.</li>
<li>Select all.</li>
<li>Copy.</li>
<li>Switch to WordPress new post tab in Firefox.</li>
<li>Paste.</li>
<li>Fiddle with the post settings slightly.</li>
<li>Post.</li>
</ul>
<p>The new workflow:</p>
<ul>
<li>Write post in reStructuredText in jEdit.</li>
<li>Select all.</li>
<li>Copy.</li>
<li>Invoke a shell script via <a class="reference external" href="http://en.wikipedia.org/wiki/Quicksilver_(software)">Quicksilver</a>.</li>
<li>Switch to WordPress new post tab in Firefox.</li>
<li>Paste.</li>
<li>Fiddle with the post settings slightly.</li>
<li>Post.</li>
</ul>
<p>Just one extra step, and that step consists of hitting <tt class="docutils literal"><span class="pre">Command-Space</span></tt>, typing <tt class="docutils literal"><span class="pre">blog</span></tt>, and hitting return. Given how easy that is, I&#8217;m quite happy with it. Particularly since some of my custom directives make certain kinds of content easier, and because reStructuredText is better to compose in than psuedo-HTML.</p>
<p>In fact, when I <a href="http://tadhg.com/wp/2007/10/11/restructuredtext/" title="reStructuredText" >first wrote about reStructuredText</a>, I complained about the hyperlink format, but having written a blog post or two with it, I find that I actually prefer it. It makes it easier to highlight the links and then go get the actual URLs later, if that&#8217;s what I want to do, and if not the short link syntax is actually fine.</p>
<p>Getting to that workflow turned out to be fairly tricky. I&#8217;m sure that I could have approached it in ways that would have made things easier. The critical components are:</p>
<ul>
<li>A local install of <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a></li>
<li><a href="http://unmaintainable.wordpress.com/2008/03/22/using-rst-with-wordpress/" title="Using ReStructured Text with WordPress" >rst2wp, a WordPress writer for reStructuredText by Matthias Friedrich</a>.</li>
<li>Some pre- and post-processing Python scripts.</li>
<li>The OS X Terminal <tt class="docutils literal"><span class="pre">pbcopy</span></tt> and <tt class="docutils literal"><span class="pre">pbpaste</span></tt> commands, which I wasn&#8217;t really aware of before.</li>
<li>A shell script to tie it all together.</li>
</ul>
<p>This is what happens, thanks to a combination of those components, when I invoke the shell script with Quicksilver, after I&#8217;ve copied the text in jEdit:</p>
<ul>
<li>The shell script pastes the contents of the clipboard to the pre-processor, which strips out some things, like metadata that I have in the file but don&#8217;t want in the post, and puts the newly-cleaned content into the clipboard</li>
<li>The shell script pastes the clipboard to rst2wp, which then puts its output to the clipboard.</li>
<li>The shell script pastes the clipboard to the post-processor, which does some minor rearranging to suit my particular workflow.</li>
</ul>
<p>All of which saves what would be quite a lot of time if I had to do the cleanup by hand.</p>
<p>One of the major obstacles I encountered was, of course, character encoding. I&#8217;ll probably write that up later this week, because the solutions are poorly doumented, and it&#8217;s not a fun thing to bang your head against.</p>
<p>At some point I might try to clean the scripts up and to make the effort to post to WordPress directly. I think the best way for that to work would be to submit the post as a draft, get the id of the draft, and then open a browser window with that draft open for editing. That would save at least a moment or two&#8230; the tricky part, it appears, is getting the tags to submit properly.</p>
<p>I do have some issues with reStructuredText, but need to put a little more thought into how I think they should be fixed before posting about them. I&#8217;m primarily unhappy with how custom directives are handled.</p>
<p>All in all, very much a developer&#8217;s endeavor: lots of effort to make something seem almost exactly the same for benefits that most people wouldn&#8217;t notice or might think of as disadvantages.</p>
<p>Tags: <a href="http://tadhg.com/wp/tag/coding/" rel="tag">coding</a>, <a href="http://tadhg.com/wp/tag/personal/" rel="tag">personal</a>, <a href="http://tadhg.com/wp/tag/python/" rel="tag">python</a>, <a href="http://tadhg.com/wp/tag/restructuredtext/" rel="tag">reStructuredText</a>, <a href="http://tadhg.com/wp/tag/software/" rel="tag">software</a>, <a href="http://tadhg.com/wp/tag/tech/" rel="tag">tech</a>, <a href="http://tadhg.com/wp/tag/web-development/" rel="tag">web-development</a>, <a href="http://tadhg.com/wp/tag/wordpress/" rel="tag">WordPress</a></p><h4 class='related-posts-header'>Related Posts</h4><ul class="related-posts-list"><li class="related-post"><a href="http://tadhg.com/wp/2009/07/28/better-rest-wordpress-pipeline/">Better reST–WordPress Pipeline</a> <span class="related-post-date timestamp">Tue 28 Jul 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/05/16/sabbatical-close/">sabbatical.close()</a> <span class="related-post-date timestamp">Sun 16 May 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2009/09/24/rtf_word_restructuredtext-toolchain/">RTF/Word–reStructuredText Toolchain</a> <span class="related-post-date timestamp">Thu 24 Sep 2009</span></li><li class="related-post"><a href="http://tadhg.com/wp/2008/01/27/some-minor-software-projects/">Some Minor Software Projects</a> <span class="related-post-date timestamp">Sun 27 Jan 2008</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/04/29/improving-a-python-word-counting-function/">Improving a Python Word Counting Function</a> <span class="related-post-date timestamp">Thu 29 Apr 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/04/02/clearing-growl-notifications/">Clearing Growl Notifications</a> <span class="related-post-date timestamp">Fri 02 Apr 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/02/16/some-vim-script-implementation-testing-and-hackery/">Some Vim Script Implementation, Testing, and Hackery</a> <span class="related-post-date timestamp">Tue 16 Feb 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/02/14/first-post-with-vim/">First Post With Vim</a> <span class="related-post-date timestamp">Sun 14 Feb 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/01/17/better-word-count-in-vim/">Better Word Count in Vim</a> <span class="related-post-date timestamp">Sun 17 Jan 2010</span></li><li class="related-post"><a href="http://tadhg.com/wp/2010/01/10/wordpress-2-9-upgrade/">WordPress 2.9 Upgrade</a> <span class="related-post-date timestamp">Sun 10 Jan 2010</span></li></ul>]]></content:encoded>
			<wfw:commentRss>http://tadhg.com/wp/2009/07/14/blog-workflow-with-restructuredtext/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
