<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">

<channel>
	<title>Sphaerula &#187; Computing</title>
	<atom:link href="http://sphaerula.com/wordpress/category/computing/feed/" rel="self" type="application/rss+xml" />
	<link>http://sphaerula.com/wordpress</link>
	<description>A personal journal by Conrad Halling</description>
	<lastBuildDate>Sun, 27 Jun 2010 14:47:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/us/</creativeCommons:license>		<item>
		<title>Relearning PHP</title>
		<link>http://sphaerula.com/wordpress/computing/relearning-php/</link>
		<comments>http://sphaerula.com/wordpress/computing/relearning-php/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 00:58:07 +0000</pubDate>
		<dc:creator>Conrad Halling</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[PHP 5]]></category>

		<guid isPermaLink="false">http://sphaerula.com/wordpress/?p=195</guid>
		<description><![CDATA[The time has come for me to relearn PHP. When I last used PHP, in 2005, I was using PHP 4.4, which had pretty poor support for classes and objects. Compared to Perl, I found PHP pretty awkward. PHP 5 &#8230; <a href="http://sphaerula.com/wordpress/computing/relearning-php/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The time has come for me to relearn PHP. When I last used PHP, in 2005, I was using PHP 4.4, which had pretty poor support for classes and objects. Compared to Perl, I found PHP pretty awkward.</p>
<p>PHP 5 is supposed to provide much better support for object orientation. Exploring the books that are now available for learning PHP, I see many touting PHP 6, although PHP 6 seems to be vapor since it still hasn&#8217;t been released. (Apparently, incorporating complete Unicode support into PHP has turned out to be too difficult.)</p>
<p>Anyway, I&#8217;m going to learn enough about PHP 5 to be able to create classes and objects. The first book I&#8217;ve chosen to work with is <em>PHP in Action: Objects, Design, Agility</em>, by Dagfinn Reiersol, Marcus Baker, and Chris Shiflett. It looks like this book will teach my how to use modern object-oriented techniques for Perl 5.</p>
<p>From the first chapter, I note the following topics that I plan to follow up on as I continue reading the book:</p>
<ul>
<li>Agile methodologies</li>
<li>Object orientation combined with simplicity</li>
<li>Decoupling</li>
<li>Design patterns</li>
<li>Test-driven development (using PHPUnit and SimpleTest)</li>
</ul>
<p>The authors mention two other books I plan to read when I find the time, <em>Refactoring</em>, by Fowler, and <em>Test-Driven Development by Example</em>, by Kent Beck.</p>
]]></content:encoded>
			<wfw:commentRss>http://sphaerula.com/wordpress/computing/relearning-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Random Shuffle Algorithms</title>
		<link>http://sphaerula.com/wordpress/computing/random-shuffle-algorithms/</link>
		<comments>http://sphaerula.com/wordpress/computing/random-shuffle-algorithms/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 21:27:14 +0000</pubDate>
		<dc:creator>Conrad Halling</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://sphaerula.com/wordpress/?p=163</guid>
		<description><![CDATA[A recent slashdot.org thread discussed how a programmer at Microsoft incorrectly implemented a random shuffle algorithm. The discussion was prompted by an article Rob Weir wrote in which he presented a comprehensive analysis of the problem and provided a correct &#8230; <a href="http://sphaerula.com/wordpress/computing/random-shuffle-algorithms/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A recent <a href="http://slashdot.org/" target="_blank">slashdot.org</a> <a href="http://developers.slashdot.org/story/10/02/28/1837223/Schooling-Microsoft-On-Random-Browser-Selection" target="_blank">thread</a> discussed how a programmer at Microsoft incorrectly implemented a random shuffle algorithm. The discussion was prompted by an article <a href="http://www.robweir.com/blog/" target="_blank">Rob Weir</a> wrote in which he presented a <a href="http://www.robweir.com/blog/2010/02/microsoft-random-browser-ballot.html" target="_blank">comprehensive analysis</a> of the problem and provided a correct algorithm. Along the way, he named the botched implementation the “Microsoft shuffle.”</p>
<p>The following points are salient:</p>
<ol>
<li>One can use Pearson’s Chi-squared test to determine if the results are non-random. In Weir’s analysis, the probability that the results were random (the probability that the null hypothesis was true) was p &lt; 2.2e–16, given 10,000 repetitions of the algorithm.</li>
<li>Random shuffle algorithms are so commonly used that this is often an interview question for a programmer.</li>
<li>The <a href="http://en.wikipedia.org/wiki/Fisher-Yates_shuffle" target="_blank">Fisher-Yates shuffle</a> is an excellent random shuffle algorithm of time complexity O(n).</li>
<li>The programmer who implemented the Microsoft shuffle did not understand how a sorting algorithm works.</li>
</ol>
<p>As usual with discussions on slashdot, there were quite a few posters who didn’t understand the problem and why it required an accurate solution.</p>
]]></content:encoded>
			<wfw:commentRss>http://sphaerula.com/wordpress/computing/random-shuffle-algorithms/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Apple’s Tablet Computer</title>
		<link>http://sphaerula.com/wordpress/computing/apple%e2%80%99s-tablet-computer/</link>
		<comments>http://sphaerula.com/wordpress/computing/apple%e2%80%99s-tablet-computer/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 10:24:46 +0000</pubDate>
		<dc:creator>Conrad Halling</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://sphaerula.com/wordpress/?p=157</guid>
		<description><![CDATA[Yesterday Apple Inc. introduced its new tablet computer, the iPad. The best summary of the iPad that I have read is, not surprisingly, written by Adam Engst at tidbits.com. I provide here notes about the features that interest me. The &#8230; <a href="http://sphaerula.com/wordpress/computing/apple%e2%80%99s-tablet-computer/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday Apple Inc. introduced its new tablet computer, the iPad. The best summary of the iPad that I have read is, not surprisingly, written by Adam Engst at <a href="http://db.tidbits.com/article/10954" target="_blank">tidbits.com</a>. I provide here notes about the features that interest me.</p>
<p>The iPad is a computer for content consumers, not content creators. It is ideal for casual web browsing, watching television and movies, reading digital books, and playing games. The touted battery life of 10 hours, although undoubtedly exaggerated, is still long enough for a coast-to-coast flight. (It is not so ideal for listening to music, because I don&#8217;t have a pair of pants with pockets wide enough to hold it, unlike an iPod.)</p>
<p>For content creators, Apple has created new versions of its iWork suite for the creation of text-based documents (Pages), spreadsheets (Numbers), and slide presentations (Keynote). I am interested in learning how well this actually works without a keyboard and mouse.</p>
<p>The iPad has several shortcomings. Surprisingly, it has no camera. Other commentators have wondered whether Steve Jobs couldn&#8217;t decide where the camera should be located. The iPad really needs two cameras, one facing toward the user, for video conferencing, and one on the back for taking stills and videos.</p>
<p>The iPad operating system, which seems to be a variant of the iPhone OS, doesn&#8217;t allow multitasking. This is an annoyance, but I think we can anticipate that a future version of the OS will overcome this limitation.</p>
<p>Like the iPhone and the iPod touch, the iPad doesn&#8217;t support Adobe Flash. This means there is some material on the web that we won&#8217;t be able to view on an iPad. I&#8217;m not a big fan of Flash, because I hate how processor-intensive Flash is. If I want to bog down my old PowerBook G4, I just need to open two or three web pages with Flash animations.</p>
<p>I plan to buy one for use at home and to take with me when I travel. I already use my iPod touch as much as or more than my MacBook Pro when I&#8217;m at home. Other than listening to music and podcasts, I use it to check the weather, Facebook, Twitter, and email, watch movies, and read books. Movie watching and book reading will be more pleasant on the iPad. One thing I&#8217;m eager to test is whether I can read PDFs of scientific papers on an iPad.</p>
]]></content:encoded>
			<wfw:commentRss>http://sphaerula.com/wordpress/computing/apple%e2%80%99s-tablet-computer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>That Expensive Microsoft Experience</title>
		<link>http://sphaerula.com/wordpress/computing/that-expensive-microsoft-experience/</link>
		<comments>http://sphaerula.com/wordpress/computing/that-expensive-microsoft-experience/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 14:25:26 +0000</pubDate>
		<dc:creator>Conrad Halling</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://sphaerula.com/wordpress/?p=154</guid>
		<description><![CDATA[Yesterday I finished reinstalling Vista Business on my MacBook Pro. I say finished, because the reinstallation required two days. I needed to reinstall Vista after I had updated Mac OS X to Snow Leopard (10.6), at which time I had &#8230; <a href="http://sphaerula.com/wordpress/computing/that-expensive-microsoft-experience/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday I finished reinstalling Vista Business on my MacBook Pro. I say finished, because the reinstallation required two days. I needed to reinstall Vista after I had updated Mac OS X to Snow Leopard (10.6), at which time I had wiped out my old Vista partition, which at 25 GB was too small.</p>
<p>I used <a href="http://www.apple.com/support/bootcamp/" target="_blank">Boot Camp Assistant</a> to create a 32-GB partition and reboot my MacBook Pro from the Vista installation DVD. I installed Vista Business from the DVD and then began applying software updates. I should have counted these, but I estimate there were six separate operating system updates that I estimate required six hours to apply. The first update applied 93 individual patches to my system, and I let this run while I slept. If I remember correctly, it reported that it took 90 minutes to complete the update. Later updates updated Vista to SP1 (Service Pack 1) and SP2 (Service Pack 2). (I discovered that I couldn&#8217;t get the SP2 and later updates until I remembered to activate Vista.) One of the updates installed Internet Explorer 8; that one took a long time because I didn&#8217;t realize that it had displayed a dialog window for accepting the EULA. The problem was that the dialog was hidden under the main update window, where I couldn&#8217;t see it.</p>
<p>My question at this point is, why can&#8217;t Microsoft combine all these updates into a single update? Why do I have to install SP1 before I can install SP2? Why can&#8217;t SP2 contain all the changes already in SP1?</p>
<p>After installing Vista, I installed Office 2007 Professional, after which at least two more updates were required to bring it up to date, taking another two hours.</p>
<p>I want to contrast that experience to what happened last fall when I wiped clean my old PowerBook G4 and performed a fresh install of Leopard (Mac OS X 10.5). My install disk installed OS X 10.5 (which you would think would be called version 10.5.0, but Apple doesn&#8217;t begin adding the third numeric field until the first revision is released). When I ran software update, there was a single (massive) update that rolled all changes from 10.5 to 10.5.7 into a single update.</p>
<p>So the Microsoft Experience was six hours of time spent reinstalling Vista, and the Apple Experience was two hours of time spent reinstalling OS X 10.5. If I were doing this for a living, I would bill $75 per hour for my time — $450 for reinstalling Vista, $150 for reinstalling Leopard. The Microsoft Experience cost me an extra four hours of my time or $300 equivalent. This is the primary reason I prefer OS X over Vista — it is less expensive to install and maintain.</p>
<p>Note: What I really wanted to do was install Windows 7, but Apple has been slow in releasing the drivers necessary for full support. Having originally promised the new drivers by the end of 2009, Apple now provides a <a href="http://support.apple.com/kb/HT3920" target="_blank">much more vague estimate</a> of when the drivers will be available.</p>
]]></content:encoded>
			<wfw:commentRss>http://sphaerula.com/wordpress/computing/that-expensive-microsoft-experience/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Solitaire Cryptosystem in “Cryptonomicon”</title>
		<link>http://sphaerula.com/wordpress/books/solitaire-cryptosystem-in-%e2%80%9ccryptonomicon%e2%80%9d/</link>
		<comments>http://sphaerula.com/wordpress/books/solitaire-cryptosystem-in-%e2%80%9ccryptonomicon%e2%80%9d/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 04:09:21 +0000</pubDate>
		<dc:creator>Conrad Halling</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://sphaerula.com/wordpress/?p=150</guid>
		<description><![CDATA[For the past two or three weeks, I&#8217;ve been reading Neal Stephenson&#8217;s Cryptonomicon, a novel published in 1999. Much of the story in the novel concerns cryptography, and page 480 contains a Perl script that can be used to encrypt &#8230; <a href="http://sphaerula.com/wordpress/books/solitaire-cryptosystem-in-%e2%80%9ccryptonomicon%e2%80%9d/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>For the past two or three weeks, I&#8217;ve been reading Neal Stephenson&#8217;s <cite>Cryptonomicon</cite>, a novel published in 1999. Much of the story in the novel concerns cryptography, and page 480 contains a Perl script that can be used to encrypt and decrypt messages using the Solitaire cryptosystem.</p>
<p>As published in the novel, the Perl script is gibberish, impossible to read and understand. Fortunately, the &#8220;verbose version&#8221; of the script is available on Bruce Schneier&#8217;s web site at <a href="http://www.schneier.com/code/sol.pl" target="_blank">www.schneier.com/code/sol.pl</a>. Bruce Schneier provides an explanation of the Solitaire Encryption System at <a href="http://www.schneier.com/solitaire.html" target="_blank">www.schneier.com/solitaire.html</a>. And Neal Stephenson himself discusses the novel and the Perl script at <a href="http://web.mac.com/nealstephenson/Neal_Stephensons_Site/cypherFAQ.html" target="_blank">web.mac.com/nealstephenson/Neal_Stephensons_Site/cypherFAQ.html</a>.</p>
<p><cite>Cryptonomicon</cite> is a brilliant novel, and it reminds me in many ways of <cite>Gravity&#8217;s Rainbow</cite> by Thomas Pynchon, one of my favorite books. It is a book I know I&#8217;ll have to read more than once, because I&#8217;m certain I&#8217;m missing important clues and subtexts in the story that will become apparent only on a rereading.</p>
]]></content:encoded>
			<wfw:commentRss>http://sphaerula.com/wordpress/books/solitaire-cryptosystem-in-%e2%80%9ccryptonomicon%e2%80%9d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Waiting for the Next iPod touch Model</title>
		<link>http://sphaerula.com/wordpress/computing/waiting-for-the-next-ipod-touch-model/</link>
		<comments>http://sphaerula.com/wordpress/computing/waiting-for-the-next-ipod-touch-model/#comments</comments>
		<pubDate>Sun, 03 Jan 2010 19:58:59 +0000</pubDate>
		<dc:creator>Conrad Halling</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://sphaerula.com/wordpress/?p=112</guid>
		<description><![CDATA[Fourteen months ago I traded in my old iPod mini for a new 8-GB iPod touch. I think the price at the time was about $230, but I got a 10% discount for exchanging the old iPod mini. Six weeks &#8230; <a href="http://sphaerula.com/wordpress/computing/waiting-for-the-next-ipod-touch-model/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Fourteen months ago I traded in my old iPod mini for a new 8-GB iPod touch. I think the price at the time was about $230, but I got a 10% discount for exchanging the old iPod mini.</p>
<p>Six weeks later, I dropped the iPod touch from waist height onto brick pavement and broke it; the impact created a dent in the metal back and apparently crushed some of the electronic components inside. (These things are surprisingly delicate.) I took it to the Apple store on Boylston Street in Boston and asked if they could fix it. The answer was no, but they offered me a refurbished unit in exchange for the broken unit and a little under $130. I have been using the refurbished iPod for over a year now.</p>
<p>Since I live in an urban area, I usually have wifi connectivity. (For example, when I&#8217;m waiting for the bus in Kendall Square, I get a good connection to MIT Guest wifi.) This means I don&#8217;t need to buy a smart phone such as the iPhone; I get nearly iPhone-equivalent functionality from two devices, my minimal cell phone ($40 a month with Verizon) and my iPod touch, saving me roughly $40 per month that I can spend on books or music.</p>
<p>I was slow to take advantage of all of the iPod touch&#8217;s capabilities, using it initially for listening to music, podcasts, and audiobooks. I usually commute to work by walking, a 45-minute trip each way. I can listen to two audiobooks per month plus quite a few podcasts during my commuting time.</p>
<p>The first apps I added were news-, information-, and book-related: New York Times, Bloomberg, Yahoo Finance, WeatherBug Elite, Stanza, and Shakespeare Pro. I find that the iPod touch makes for a great electronic book reader (although I still haven&#8217;t found a good app for reading PDFs of research papers).</p>
<p>Lately I&#8217;ve been taking advantage of the iPod touch&#8217;s abilities to act as a small pocket computer. I purchased the American Heritage Deluxe dictionary app ($35), and I feel like I&#8217;ve already gotten my money&#8217;s worth for that app alone because now I have an unabridged dictionary in my pocket and I use it all the time. I also installed the Facebook, LinkedIn, TweetDeck, and WordPress apps for managing my Web 2.0 presence. And recently I set up two new email addresses that I use primarily from the iPod touch with the Mail app.</p>
<p>Lately, I&#8217;ve begun buying movies and TV shows from the iTunes store. The TV shows are, in my opinion, an incredible bargain. I bought the first season (twelve episodes, 10 hours) of HBO&#8217;s Rome for only $20. Recently, I taught myself how to use Handbreak and VLC  to copy my DVDs to mpeg files formatted for the iPod touch.</p>
<p>The result is that my little 8-GB iPod touch is feeling cramped for space. First of all, the 8-GB iPod touch actually has 7.66 GB of storage capacity. (Is the remaining 0.34 GB used for the operating system and included apps?) Second, I have almost 2 GB of apps installed, the dictionary being the largest. Third, I like to carry one or two TV shows or a movie with me, and each of these is roughly 0.6 GB in size. Fourth and finally, I like to carry plenty of music and audiobooks.</p>
<p>Consequently, I&#8217;m ready to buy a new iPod touch. The bigger models have 32 GB and 64 GB of storage and list for $300 and $400, respectively. However, rumor has it that the next model of the iPod touch will include a camera for stills and video, and I would find a camera quite useful. And rumor has it that Apple is about to announce its new tablet computer, allegedly named the iSlate. So I&#8217;ve decided to bide my time to see what Apple might announce in the next few months.</p>
]]></content:encoded>
			<wfw:commentRss>http://sphaerula.com/wordpress/computing/waiting-for-the-next-ipod-touch-model/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Upgrading to Snow Leopard</title>
		<link>http://sphaerula.com/wordpress/computing/upgrading-to-snow-leopard/</link>
		<comments>http://sphaerula.com/wordpress/computing/upgrading-to-snow-leopard/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 13:19:46 +0000</pubDate>
		<dc:creator>Conrad Halling</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://sphaerula.com/wordpress/?p=87</guid>
		<description><![CDATA[I put off upgrading the operating system on my MacBook Pro from Leopard (Mac OS X 10.5) to Snow Leopard (Mac OS X 10.6) until I had free time over the holidays. These are my brief notes about how I &#8230; <a href="http://sphaerula.com/wordpress/computing/upgrading-to-snow-leopard/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I put off upgrading the operating system on my MacBook Pro from Leopard (Mac OS X 10.5) to Snow Leopard (Mac OS X 10.6) until I had free time over the holidays. These are my brief notes about how I performed the upgrade.</p>
<p>I needed to clean up the cruft that had accumulated in my system, and I needed to repartition my internal hard drive to remove a Windows partition and expand the partition devoted to OS X to the entire drive. Because repartitioning my internal drive was going to wipe out all data, I wanted to be very careful in having a complete copy of my old system before performing the upgrade.</p>
<p>I followed the upgrade instructions provided in <a href="http://www.takecontrolbooks.com/snow-leopard-upgrading">Take Control of Upgrading to Snow Leopard</a>, written by Joe Kissell. This e-book is well worth the $10 because it provides detailed advice on every step of upgrading to Snow Leopard.</p>
<p>In brief, I performed the following steps:</p>
<ol>
<li>I cleaned up my directories and files.</li>
<li>I removed software that I no longer use.</li>
<li>I made a record on my backup computer of all license keys in case something went wrong and I needed to completely reinstall my applications.</li>
<li>I made a complete bootable backup of my entire internal drive using <a href="http://www.bombich.com/">Carbon Copy Cloner</a>, and I tested the backup by booting from it.</li>
<li>I booted my MacBook Pro from the install DVD and used Disk Utility from the DVD to remove the old partitions and create a partition spanning the entire internal drive.</li>
<li>I installed Snow Leopard.</li>
<li>I used the installer&#8217;s Migration Assistant to transfer my old applications and files from the backup drive.</li>
<li>I ran Software Update to update the system to OS X 10.6.2.</li>
<li>I created a fresh backup from Snow Leopard using Time Machine, preserving my Leopard backup for the time being on a separate partition of my external drive.</li>
</ol>
<p>The result was an upgrade to Snow Leopard that is, so far, working with zero problems.</p>
<p>My biggest difficulty was in getting a complete backup of my internal drive onto my external drive. I have a Western Digital My Passport Studio 320 GB external drive, and during the weeks I have owned the drive, I have experienced many failures in the backup process where the computer loses its connection with the external drive. Yesterday, I experienced this problem using either the FireWire 800 or the FireWire 400 cable that came with the drive. I decided to try the USB 2.0 cable, and that has worked well so far, with no noticeable loss in speed writing to the disk. In case the problem was caused by bad sectors on the external drive, I erased the 120-GB partition I had created on the drive by writing zeros once using Disk Utility. If I remember correctly, this step will identify bad sectors on the drive and cause the drive to mark them not to be used.</p>
<p><a href="http://www.bombich.com/">Carbon Copy Cloner</a> was so useful that I made a $25 contribution.</p>
]]></content:encoded>
			<wfw:commentRss>http://sphaerula.com/wordpress/computing/upgrading-to-snow-leopard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Boot Mac OS X From a Western Digital My Passport Studio External Drive</title>
		<link>http://sphaerula.com/wordpress/computing/how-to-boot-mac-os-x-from-a-western-digital-my-passport-studio-external-drive/</link>
		<comments>http://sphaerula.com/wordpress/computing/how-to-boot-mac-os-x-from-a-western-digital-my-passport-studio-external-drive/#comments</comments>
		<pubDate>Sun, 27 Dec 2009 14:34:32 +0000</pubDate>
		<dc:creator>Conrad Halling</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://sphaerula.com/wordpress/?p=83</guid>
		<description><![CDATA[I own a Western Digital My Passport Studio 320 GB external hard drive, which I purchased a few weeks ago as a backup drive for my MacBook Pro. The drive came with three cables, a FireWire 800 cable, a FireWire &#8230; <a href="http://sphaerula.com/wordpress/computing/how-to-boot-mac-os-x-from-a-western-digital-my-passport-studio-external-drive/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I own a Western Digital My Passport Studio 320 GB external hard drive, which I purchased a few weeks ago as a backup drive for my MacBook Pro. The drive came with three cables, a FireWire 800 cable, a FireWire 400 cable, and a USB cable. The drive obtains its power through the cable from the FireWire or USB bus. <a href="http://cnet.com/">CNET</a> has a <a href="http://reviews.cnet.com/external-hard-drives/western-digital-my-passport/4505-3190_7-33033134.html">review</a> of an older model of this drive.</p>
<p>I used <a href="http://www.bombich.com/">Carbon Copy Cloner</a> to create a complete backup of my MacBook Pro to the external drive. Unlike Apple’s Time Machine, Carbon Copy Cloner creates a bootable backup. I checked that I could boot my Mac from the external drive by restarting while holding down the option key. However, my external drive did not appear in the list of bootable drives. Perplexed, I performed a google search to see if other people had experienced this problem, and I found <a href="http://forums.macosxhints.com/archive/index.php/t-99059.html">this solution</a> at <a href="http://macosxhints.com/">macosxhints.com</a>.</p>
<p>The solution is to shut down my MacBook Pro and unplug the external drive, then boot while holding down the option key. Once the Mac presents the list of available boot drives, I plug in my external drive, whereupon the Mac adds the external drive to the list of boot drives. I use the arrow keys to select the drive and press the return key to boot from that drive.</p>
<p>After booting, I verified that my external drive had been used as the boot drive by checking that special icons were used for my System, Applications, and other folders. (Generic folder icons are used for these folders when they are present on a drive that was not the boot drive.)</p>
]]></content:encoded>
			<wfw:commentRss>http://sphaerula.com/wordpress/computing/how-to-boot-mac-os-x-from-a-western-digital-my-passport-studio-external-drive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blogging From My iPod touch</title>
		<link>http://sphaerula.com/wordpress/computing/blogging-from-my-ipod-touch/</link>
		<comments>http://sphaerula.com/wordpress/computing/blogging-from-my-ipod-touch/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 01:35:46 +0000</pubDate>
		<dc:creator>Conrad Halling</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://sphaerula.com/wordpress/wordpress/blogging-from-my-ipod-touch/</guid>
		<description><![CDATA[After a long hiatus spent posting tweets on my Twitter account and diving into Facebook, I have decided to get back to posting to my blog. One way to make blogging easier for me is to begin writing posts from &#8230; <a href="http://sphaerula.com/wordpress/computing/blogging-from-my-ipod-touch/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>After a long hiatus spent posting tweets on my Twitter account and diving into Facebook, I have decided to get back to posting to my blog.</p>
<p>One way to make blogging easier for me is to begin writing posts from my iPod touch. During a recent trip to Oregon, I found it necessary to set up email and Facebook access via my iPod touch so I could stay in touch conveniently with a friend I was hoping to meet for breakfast. Unfortunately, we couldn&#8217;t schedule the meeting, but I reached a new level for me in making use of social media.</p>
<p>While setting up my other social media accounts, I discovered the WordPress app for the iPhone and iPod touch. This is my first trial post, composed entirely on my iPod touch.</p>
<p>I have been contemplating purchasing a smart phone. The iPhone seems like the logical choice for me since I&#8217;m an Apple fanboy who has been using Macs since 1987 and iPods since 2004. But I have no interest in doing business again with AT&amp;T, a company with whom I&#8217;ve had problems in the past. So if I were to buy a smart phone, I would get the Droid phone with Verizon, my current wireless carrier.</p>
<p>However, I can&#8217;t justify the additional expense of a data plan when I have a cell phone plan for a base rate of $40 per month on which I use at most 100 minutes per month. I have excellent Internet connectivity at both work and at home, so it&#8217;s only when I travel that I need a wireless connection. But these days it&#8217;s almost always possible to find a coffee shop that provides wireless for free or for a nominal price (e.g., Starbucks).</p>
<p>In fact, on my last trip to Oregon, my mother and I attended a Christmas concert at my brother Laird&#8217;s church. We arrived 45 minutes early to get good seats. To entertain ourselves, I used the church&#8217;s excellent wifi signal to show Mom what I could do with my iPod touch. We ended up on Facebook, where I found my brother&#8217;s wife&#8217;s photo album, and suddenly I was showing several people photos of my brother&#8217;s son. No wallet photos needed, just a connection to the Internet!</p>
<p>So I&#8217;m continuing to experiment with seeing how far I can go using just an iPod touch for email, Twitter, Facebook, and WordPress. As a consequence, I&#8217;ll probably be spending a little more time in coffee shops, and maybe I&#8217;ll be able to make a few recommendations soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://sphaerula.com/wordpress/computing/blogging-from-my-ipod-touch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Book Review: Learning Python, 3rd Edition (1)</title>
		<link>http://sphaerula.com/wordpress/computing/book-review-learning-python-3rd-edition-1/</link>
		<comments>http://sphaerula.com/wordpress/computing/book-review-learning-python-3rd-edition-1/#comments</comments>
		<pubDate>Sun, 06 Apr 2008 02:03:40 +0000</pubDate>
		<dc:creator>Conrad Halling</dc:creator>
				<category><![CDATA[Bioinformatics]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://sphaerula.com/wordpress/computing/book-review-learning-python-3rd-edition-1/</guid>
		<description><![CDATA[Utterly bewitched by this dramatic and thrilling panel from an xkcd.com comic strip, I have decided that it is time I learned the Python programming language. I come to Python as a bioinformatics scientist who is experienced in C, C++, &#8230; <a href="http://sphaerula.com/wordpress/computing/book-review-learning-python-3rd-edition-1/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Utterly bewitched by this dramatic and thrilling panel from an <a title="“Python”" href="http://xkcd.com/353/" target="_blank">xkcd.com</a> comic strip, I have decided that it is time I learned the Python programming language.</p>
<p style="text-align: center"><a href="http://xkcd.com/353/" target="_blank"><img title="Flying with Python, from xkcd.com" src="/images/flying.png" alt="Flying with Python" width="518" height="321" /></a></p>
<p>I come to Python as a bioinformatics scientist who is experienced in C, C++, PHP, Perl, and R. For the past two years, I have used Perl for 95% of the software I have written. But there are days when I grow weary of trying to write object-oriented Perl code in a clear and maintainable way. Perl 5 just isn’t a language designed to support object-oriented programming in a natural way. Hence, I thought I would try Python.</p>
<p>This post is Part 1 of what I plan to be a series of posts about the book <a href="http://www.oreilly.com/catalog/9780596513986/" target="_blank"><cite>Learning Python, 3rd Edition</cite></a>, which was written by Mark Lutz and published in October, 2007, by O’Reilly. This part of my review covers “Part I: Getting Started”, the first 62 pages of the book</p>
<p>In the preface, Mr. Lutz states that <cite>Learning Python</cite> is intended to be an introduction to the Python programming language for programmers and that it deliberately covers only the core Python language without providing guidance on application programming. Mr. Lutz encourages readers to continue on to <a href="http://www.oreilly.com/catalog/python3/" target="_blank"><cite>Programming Python, 3rd Edition</cite></a> (of which he is also the author).</p>
<p>The preface also contains a three-page section, “Preparing for Python 3.0,” which contains a brain-numbing list of features and changes anticipated in Python 3.0. I believe it would have been more appropriate to place this material in an appendix.</p>
<p><cite>Learning Python</cite> is organized into eight major parts:</p>
<ul style="list-style-type: upper-roman">
<li>Getting Started</li>
<li>Types and Operations</li>
<li>Statements and Syntax</li>
<li>Functions</li>
<li>Modules</li>
<li>Classes and OOP (Object Oriented Programming)</li>
<li>Exceptions and Tools</li>
<li>Appendixes</li>
</ul>
<p>The book provides a deliberately bottom-up introduction to Python. This means the reader has to be patient, because Mr. Lutz teaches about each piece of the Python language without showing right away how to use the pieces together to write scripts. Consequently, I have found that I need to jump ahead in the book because I want to begin scripting right away.</p>
<p>Each chapter contains a short quiz, with the answers provided with each quiz. Each part of the book ends with a set of exercises, for which the solutions are provided in Appendix B.</p>
<p>In Chapter 1, Mr. Lutz discusses the strengths and weaknesses of Python. The strengths are many and significant:</p>
<ol>
<li>Python is designed to produce readable code, which makes the code easy to maintain and reuse.</li>
<li>Python is designed up front to support object-oriented programming.</li>
<li>Python code is more succinct than C++ or Java code.</li>
<li>Python is portable and runs on Linux/Unix, Mac OS X, and Windows.</li>
<li>Python comes with a large standard library.</li>
<li>Python works well with other languages.</li>
<li>Python is free.</li>
</ol>
<p>The only weakness that Mr. Lutz acknowledges is that Python sometimes doesn’t run as quickly as compiled C and C++ code. A weakness mentioned by many others is that, contrary to other C-like programming languages (C, C++, Java, C#, Perl, and PHP), white space in Python code has syntactic significance. Many programmers object to this, and it does seem to generate problems with parsing the code.</p>
<p>Chapter 1 devotes a lot of space to discussing the philosphy behind Python.</p>
<blockquote><p>In philosophy, Python adopts a somewhat minimalist approach. This means that although there are usually multiple ways to accomplish a coding task, there is usually just one obvious way&#8230;. In the Python way of thinking, explicit is better than implicit, and simple is better than complex.</p></blockquote>
<p>This discussion provides a sharp contrast to Perl, for which the motto is, <a href="http://en.wikipedia.org/wiki/There_is_more_than_one_way_to_do_it" target="_blank">“There is more than one way to do it”</a> (TIMTOWTDI). Perl contains many language constructs that make commands implicit rather than explicit, and this can make Perl code <a href="/legacy/Perl/Beginning/lesson14.html#obfuscated" target="_blank">difficult to understand</a>.</p>
<p>Mr. Lutz devotes nearly two pages (pp. 16–17) to a sidebar titled “Python is Engineering, Not Art,” in which the author discusses the relative merits of Python and Perl.</p>
<blockquote><p>The short story is this: <em>you can do everything in Python that you can in Perl, but you can read your code after you do it</em>&#8230;. [author’s italics]<em><br />
</em></p>
<p>The somewhat longer story reflects the backgrounds of the designers of the two languages&#8230;. Python’s creator [<a href="http://en.wikipedia.org/wiki/Guido_van_Rossum" target="_blank">Guido van Rossum</a>] is a mathematician by training; as such, he produced a language with a high degree of uniformity—its syntax and toolset are remarkably coherent&#8230;.</p>
<p>By contrast, the creator of the Perl language [<a href="http://en.wikipedia.org/wiki/Larry_Wall" target="_blank">Larry Wall</a>] is a linguist, and its design reflects this heritage. There are many ways to accomplish the same tasks in Perl, and language constructs interact in context-sensitive and sometimes quite subtle ways—much like natural language&#8230;.</p>
<p>But as anyone who has done any substantial code maintenance should be able to attest, freedom of expression is great for art, but lousy for engineering.</p></blockquote>
<p>I am not going to delve into this debate. Since I have studied both linguistics and mathematics, I can easily see the strengths and weaknesses of both points of view, and this will help me decide when I should use Perl and when I should use Python.</p>
<p>Much of the material in Chapter 1, although interesting, is in my opinion unnecessary for a learning book. The entire section, “Is Python a ‘Scripting Language’?”, seems to me more appropriate for the <em>Programming Python</em> book. In my opinion, a learning book should get to writing code as quickly as possible, with philosophical meditations saved for another book.</p>
<p>Chapter 2 discusses how the Python interpreter works to run Python scripts. The chapter directs the reader to Appendix A, which contains instructions for obtaining and installing Python for Windows, Linux, or Unix. (Mac OS X 10.5 comes with Python 2.5.1 already installed.) The remainder of the chapter provides background information about the Python interpreter and can be omitted by the reader in a hurry.</p>
<p>Chapter 3 describes how to run Python scripts. It begins with teaching the reader how to start Python from the shell prompt in order to use Python’s interactive command line. The chapter patiently explains how to do this for each of the major operating systems and problems the reader needs to watch for. Then the chapter explains how to write a short Python script and invoke the script from the command line or by double-clicking its icon, and it explains in detail how to overcome the difficulties with double-clicking an icon in Windows. I found these details in Chapter 3 very useful, and it is clear that Mr. Lutz has learned from his training courses what difficulties the novice user will encounter when first using Python.</p>
<p>Chapter 3 continues with a brief introduction on importing modules using <code>import</code> and the differences between <code>import</code> and <code>reload</code>. The chapter concludes with an introduction to the IDLE user interface and other integrated development environments (IDEs).</p>
<p>Part I concludes with a set of very good exercises. The exercises get the reader started with using the Python command line, the IDLE IDE, and the Python documentation available from the command line and from the <a href="http://www.python.org/doc/" target="_blank">Python web site.</a></p>
<p>Resources:</p>
<ul>
<li> <a href="http://www.oreilly.com/catalog/9780596513986/" target="_blank">Publisher’s web site for <cite>Learning Python, 3rd Edition</cite></a></li>
<li><a href="http://www.rmi.net/~lutz/" target="_blank">Author’s web site</a></li>
<li><a href="http://www.rmi.net/~lutz/about-lp3e.html" target="_blank">Author’s web site for <cite>Learning Python, 3rd Edition</cite></a></li>
<li><a href="http://www.python.org/" target="_blank">Python programming language web site</a></li>
<li><a href="http://activestate.com/Products/activepython/" target="_blank">ActiveState ActivePython distribution</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://sphaerula.com/wordpress/computing/book-review-learning-python-3rd-edition-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Book Review: Web Database Applications with PHP and MySQL</title>
		<link>http://sphaerula.com/wordpress/books/book-review-web-database-applications-with-php-and-mysql/</link>
		<comments>http://sphaerula.com/wordpress/books/book-review-web-database-applications-with-php-and-mysql/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 02:21:43 +0000</pubDate>
		<dc:creator>Conrad Halling</dc:creator>
				<category><![CDATA[Bioinformatics]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://sphaerula.com/wordpress/books/book-review-web-database-applications-with-php-and-mysql/</guid>
		<description><![CDATA[Web Database Applications with PHP and MySQL, 2nd Edition, was written by Hugh E. Williams and David Lane and published by O’Reilly in May, 2004. I purchased this book in 2005 when I was doing some consulting for a microarray &#8230; <a href="http://sphaerula.com/wordpress/books/book-review-web-database-applications-with-php-and-mysql/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.oreilly.com/catalog/webdbapps2/" target="_blank"><cite>Web Database Applications with PHP and MySQL, 2nd Edition</cite></a>, was written by Hugh E. Williams and David Lane and published by O’Reilly in May, 2004.</p>
<p>I purchased this book in 2005 when I was doing some consulting for a microarray company in Massachusetts, where I was adapting the BioArray Software Environment (<a href="http://base1.thep.lu.se/" target="_blank">BASE 1.2</a>), which was written in PHP, to their process. I had set the book aside until recently, when I was motivated to review PHP so I could modify the <a href="http://sphaerula.com/wordpress/computing/on-becoming-a-wordpress-master/" target="_blank">WordPress theme</a> that I use for this blog.</p>
<p><a href="http://www.php.net/" target="_blank">PHP</a> is the programming language usually referred to by the <em>P</em> in the acronym <acronym title="Linux Apache MySQL PHP">LAMP</acronym>, which stands for <em>L</em>inux <em>A</em>pache <em>M</em>ySQL <em>P</em>HP. PHP was designed from the beginning to work closely with the <a href="http://httpd.apache.org/" target="_blank">Apache httpd web server</a> and with the <a href="http://www.mysql.com/" target="_blank">MySQL database management system</a>. PHP code is easily embedded into HTML, and this makes it easy for relative novices to use a three-tier architecture for their web sites.</p>
<p>I found <cite>Web Database Applications with PHP and MySQL</cite> an excellent introduction to PHP and MySQL for someone who is skilled at programming using another language. The introductory material on PHP was just enough to get me started, and I quickly learned to refer to the <a href="http://www.php.net/docs.php" target="_blank">PHP documentation</a> (which is also excellent) when I needed enlightenment. The book also provides several chapters that provide a solid introduction to MySQL 4.1.</p>
<p>The last five chapters of the book are devoted to a complete working example of an online wine store. All source code is available at the authors’ web site, <a href="http://www.webdatabasebook.com/" target="_blank">http://www.webdatabasebook.com/</a>. This is an invaluable resource that can serve as the basis for many other PHP projects.</p>
<p>In my opinion, this book is not appropriate for someone who is learning to program or use databases for the first time. Good alternatives might be <a href="http://www.oreilly.com/catalog/9780596514013/" target="_blank"><cite>Learning PHP &amp; MySQL, 2nd Edition</cite></a>, by Michele E. Davis and Jon A. Phillips (published August, 2007, by O’Reilly), and <a href="http://www.oreilly.com/catalog/learningsql/" target="_blank"><cite>Learning SQL</cite></a>, by Alan Beaulieu (published August, 2005, by O’Reilly). (I read <cite>Learning SQL</cite> recently, and I recommend it highly. Watch for a review at a later date.)</p>
<p>Since the book was published nearly four years ago, some of the material is dated. In 2004, PHP 5.0 was still in beta; PHP has reached 5.2 by now, and support for PHP 4 is about to end. Similarly, the book recommends using MySQL 4.0 or 4.1, whereas today MySQL 5.0 is very stable. The book provides an excellent set of appendices that explain how to install and configure Apache httpd, MySQL, and PHP for Linux, Windows, and Mac OS X. Again, these instructions are now dated, but they should still provide a useful guide.</p>
<p>I found the index somewhat frustrating to use; some items I was interested in are not found there. These include:</p>
<ul>
<li><code>@</code>, the error control operator</li>
<li> <code>&amp;</code> and <code>=&amp;</code>, operators used for working with references to variables</li>
<li>reference, the term referring to a variable that is not passed by value</li>
<li><code>define</code>, the function used to create constants</li>
<li>magic constants, such as <code>__FILE__</code>, <code>__LINE__</code>, <code>__FUNCTION__</code>, <code>__CLASS__</code>, and <code>__METHOD__</code></li>
</ul>
<p>I don’t use PHP in my daily work; rather, I use Perl. (Python is the next language I plan to learn, but that’s another story.) I like how PHP has combined arrays and hashes into a single array type. I like PHP’s Boolean values, <code>true</code> and <code>false</code>. And I like how easy it is to embed PHP into HTML; it makes creating a web page dynamically more intuitive than Perl CGI does. But I dislike the inconsistent and ugly naming of many standard functions  (for example, <code>strtoupper</code>, the PHP equivalent of Perl’s <code>uc</code>), and this seems to be a common complaint about PHP. I also don&#8217;t like the large number of global variables and constants that PHP uses.</p>
<p>There is a BioPHP project (PHP for Bioinformatics), at <a href="http://biophp.org/" target="_blank">http://biophp.org/</a>, but it is not as well developed as the <a href="http://bioperl.org/">BioPerl</a> or <a href="http://biopython.org/" target="_blank">BioPython</a> projects. The only large bioinformatics project that I’m aware of that uses PHP is the BioArray Software Environment (<a href="http://base1.thep.lu.se/" target="_blank">BASE</a>) 1.2. <a href="http://base.thep.lu.se/" target="_blank">Version 2.0 of BASE</a> has been completely rewritten in Java.</p>
]]></content:encoded>
			<wfw:commentRss>http://sphaerula.com/wordpress/books/book-review-web-database-applications-with-php-and-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On Becoming a WordPress Master</title>
		<link>http://sphaerula.com/wordpress/computing/on-becoming-a-wordpress-master/</link>
		<comments>http://sphaerula.com/wordpress/computing/on-becoming-a-wordpress-master/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 03:30:41 +0000</pubDate>
		<dc:creator>Conrad Halling</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://sphaerula.com/wordpress/computing/on-becoming-a-wordpress-master/</guid>
		<description><![CDATA[I hope I won&#8217;t write too many posts about the mechanics of blogging, but I have spent the entire day studying Cascading Style Sheets: The Definitive Guide, 2nd Edition, by Eric A. Meyer, in an effort to solve some minor &#8230; <a href="http://sphaerula.com/wordpress/computing/on-becoming-a-wordpress-master/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I hope I won&#8217;t write too many posts about the mechanics of blogging, but I have spent the entire day studying <a href="http://www.oreilly.com/catalog/css2/" target="_blank"><em>Cascading Style Sheets: The Definitive Guide, 2nd Edition</em></a>, by Eric A. Meyer, in an effort to solve some minor infelicities with the <a title="WordPress › Blog Tool and Weblog Platform" href="http://wordpress.org/" target="_blank">WordPress</a> theme I&#8217;ve been using.</p>
<p>The theme used for this site is based on <a title="Unlimited 1.0 from Land of Free WordPress Themes, by Sadish Bala" href="http://wpthemeland.com/themes/unlimited/" target="_blank">Unlimited 1.0</a>, by <a title="Sadish.NET" href="http://sadish.net/" target="_blank">Sadish Bala</a>. I licensed the Unlimited 1.0 theme for $20 and then began modifying it, mostly by changing the style sheet and providing a new logo image.</p>
<p>Today I discovered that the theme did not handle font-resizing well. For example, a Firefox user on a Mac OS X computer can use command-+ to increase the size of the fonts on a web page. I find that when my eyes get tired, the easiest way to ease them is to enlarge the fonts on the computer screen.</p>
<p>The Unlimited 1.0 theme was designed to use a static width of 900px. When the user enlarges fonts on a static-width page, the structure of the page begins to break down as the browser attempts to render the larger text in an unchanging region. The solution to this problem is to build flexibility into the web page so that when the user enlarges the font, the page is also enlarged to make more room. The way this is done is to specify widths of div elements using em units instead of px units. One em unit corresponds to the height of the letters of the font, so when the size of the font increases, the length of one em also increases, and as a consequence the width of the div element also increases.</p>
<p>I changed the width of the entire page to 70em, with the left column set to 52em total width and the right column to 18em total width. I also fixed minor problems with the menu and footer so that they would resize themselves, too.</p>
<p>If you care to experiment with a standards-compliant browser such as Firefox 2.0 or Safari 3.0, you will see that the web pages for my blog now resize nicely when you make the fonts larger or smaller.</p>
<p>I am also finicky about compliance with XHTML standards, and I discovered that the Links widget provided with WordPress creates multiple li elements with the same ID when you have more than one category in your blogroll. I replaced that widget with the <a title="Moho » LinkBlock" href="http://moho.optera.net/projects/wordpress/linkblock/" target="_blank">LinkBlock plugin</a> written by M. Holger. The LinkBlock plugin allows you to create up to nine blogroll-style widgets in your sidebar. I needed this because I have a blogroll, a podcast roll, and a website roll. The LinkBlock plugin handles the IDs correctly so that an XHTML validator does not complain.</p>
<p>Everyone knows that there are three generic font families that can be used in CSS, serif, sans-serif, and monospace. What I learned today is that there are two more generic font families, cursive and fantasy. This is what these look like:</p>
<p style="font-family: cursive">font-family: cursive<br />
Lorem ipsum, dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam&#8230;</p>
<p style="font-family: fantasy">font-family: fantasy<br />
Lorem ipsum, dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam&#8230;</p>
<p>A note: <em><a href="http://www.oreilly.com/catalog/csstdg3/" target="_blank">CSS, The Definitive Guide, 3rd Edition</a></em>, by Eric A. Meyer, was published in November, 2006. My experience with buying O&#8217;Reilly books is that as soon as I buy one, a new edition is released one or two months later.</p>
<p>Note added on March 4, 2008:</p>
<p>On my Mac OS X computer, the paragraph styled with the cursive font is displayed using Apple Chancery by both Firefox 2.0.0.12 and Safari 3.0.4. (Apple Chancery is the font I used to create the logo for this site.) The paragraph styled with the fantasy font is displayed using Papyrus.</p>
<p>Under Windows XP, the results are different. Firefox 2.0.0.12 uses Comic Sans MS for cursive and Calibri for fantasy. Internet Explorer 6.0.2900 also uses Comic Sans MS for cursive but Algerian, an all upper-case font, for fantasy.</p>
<p>I expect other variations for browsers under Windows Vista and Linux.</p>
]]></content:encoded>
			<wfw:commentRss>http://sphaerula.com/wordpress/computing/on-becoming-a-wordpress-master/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
