Mike Schaeffer's Blog

September 15, 2006

I ran Linux for a few years back in college ('94-'97), lapsing back to Windows for professional reasons when I started working full time. After ten years of running Windows full time, I finally got sick of its crap (excuse my French), replaced the 40GB disk on my Dell Inspiron 6000 laptop with a brand new 120GB and installed Ubuntu 6.06. Two partitions: one swap and one ext3. No Windows partition, no dual boot. This happened a couple days ago, and the experience has been almost uniformly positive. To wit:

  • Suspend to memory and (more importantly) suspend to disk both worked properly the first time out of the box, no questions asked. The only 'issue' is that the fit and finish isn't quite as nice as on Windows. Windows has a nice progress bar for the suspend process and on Linux the display goes through a couple corrupt screens full of noise before getting to the desktop.
  • The widescreen 2MP display was recognized immediately. Installing the Ubuntu packages for flgrx got 3-D acceleration on my ATI Radeon X300 working with no trouble at all. All I need to do now is get a nice compositing window manager. Update: ATI's X300 driver deliberately doesn't with the Composite extension necessary to run a compositing window manager. Oh well.
  • WiFi almost worked out of the box, the exception being the Wifi activity light on the laptop's case. It never lights up, which made enabling the radio confusing but doesn't seem to have caused any other problems.
  • The base Ubuntu is pretty sparse, but it was trivial to install 2GB worth of development tools with Synapitics after the install. Synaptics works well enough that I question why bother with Fedora's 5CD install process. (Out of a historical sympathy for Redhat 6, I first tried installing Fedora Core 5 and had a hard time getting Windows XP to do a valid burn of CD 3. This is why I wound up with Ubuntu.)
  • Plugging in USB keys and drives worked out of the box the first time, even for read-only accsss of my NTFS formatted external 120GB disk.
  • A video recorded on my wife's Canon SD400 showed up with a thumbnail in Nautilus and played, with audio, with the default media player.
  • Audio worked out of the box, even the annoying startup sounds.
  • The qemu emulator and tne kqemu accelerator (hopefully, my Windows solution) both compiled and ran easily. Update: All I had to do do boot Windows XP was start qemu with an image created by saying dd if=/dev/sdb of=orig.img. Of course, Windows XP immediately started complaining about not being activated. We'll see if MS lets me reactivate it: I have a license to run XP on this machine, even if the expectation was that I'd run it on raw hardware rather than via emulation. Oh, and it's too soon to really tell about performance, but it looks usable for filling out timecards, etc.
  • I wasn't expecting it, but I've been able to open and work with several work-related Word for Windows documents using OpenOffice.

Of course there are problems, but overall this is amazing. The last time I ran Linux, it took weeks of downloading and compiling source code and extensive script customization to get things to work right. Setting up X11 to not blow up my then brand new $1,300 Sony GDM-17SE1 17 inch monitor gave me night sweats for days. Once it did work, there were half a dozen different widget sets on the screen at any time and your choices for word processing included Andrew ez, groff, and/or TeX. Linux has come a long way.

August 28, 2006

One of the 'downsides' of the way Blosxom is implemented is that is relies on a post file's modification date to assign a date to the post. This makes editing files a little tricky: editing files on a Unix box updates the modification date and therefore promotes the post to the top of the blog. I don't know if there's a better way to do this, but I've written a little script that edits a file, making sure to restore the previous modification date.

The implementation is pretty simple: it uses mktemp to create a temporary file and touch -r to copy the modification dates from the post file to the temporary file and back. Be sure to modify the #! line to point to your installation of bash, should you decide to use this script. A nice generalization of this script would have it prompt for a description of the update and add the text to the post.

#!/usr/local/bin/bash

if [ $# -ne 1 ]
then
  echo
  echo "This script expects a command line argument: the
  echo "name of the post to edit."
  exit 1
fi

DATE_MARKER=`mktemp /tmp/date_marker.XXXXXX` || exit 1

touch -r $1 ${DATE_MARKER}

${EDITOR} $1

touch -r ${DATE_MARKER} $1

rm ${DATE_MARKER}
August 27, 2006

There's a long running joke about Ken Thompson's car. It goes something like this: 'Ken Thompson's car replaces all the confusing gauges with one warning light – the experienced user will know what's wrong when the light goes on.' Ryan is just like that if you replace the 'one warning light' with 'one piercing cry'.

The compensating factor for Ryan's lack of communications skills is that babies don't need or want all that much. It basically boils down to food, clean clothes and diaper, a comfortable enviroment, and some companionship and cuddling. That makes an exhaustive search of all possible 'error conditions' relatively brief. It is frustrating at times (1:00 in the morning and nothing seems to be working), but I don't know if it'll end up more or less frustrating than 15-16 years from now when he's asking for a new sports car or extended curfew.

July 24, 2006

I recently had the opportunity (need?) to do some business through the RentACoder website. If you're not familar with RentACoder, it is an online clearinghouse for contract programming and data entry. It has an interface for potential buyers to submit bids and coders to respond with offers to do the work. If an offer is good enough, it is accepted and payment funds are kept in escrow by RAC. While a bid is in progress RAC provides arbitration services and limited schedule tracking. Communications between the parties can be done through the website, in which case they are considered binding by RAC's arbitration process.

The work I had done through RAC was pretty simple and easy to specify: extract a specific table from each of 1,200 PDF files and translate it to CSV format. The difficulty is that these were scanned PDF files and not generated with embedded text data, which made it a very manual process. Image quality was low enough that OCR software was highly unreliable.

After dividing the work into 11 phases, I submitted a bid request and got around 20 bids within a couple days. The bids all ranged between 50-100% of my maximum amount and, with one exception, were entirely from coders in Pakistan, India, or Romania. The exception, a guy in Colorado, backed out as soon as he saw that the PDF files were scanned rather than textual. If you are an American paying for an American lifestyle, and are considering offering your services through RAC, you ought to consider with whom you're competing. You need to be very specialized or willing to work for low wage rates to be competitive. From the point of view of a buyer on RAC, the coder could be located on Mars and it wouldn't really matter all that much: this is true globalization at work.

Anyway, the rest of my RAC story is that there is no story. Over the course of about a month, I entered and completed RAC contracts for all 11 phases of work plus a re-entry phase for verification. Basically all of the contracts were on time, on budget, and of high quality. RAC did it's job and there were no problems. Admittedly, my bids were for limited, easily specified work, but I'd do it again in a heartbeat.

Older Articles...