Emacs on Leopard

Every year or so, I go through a similar dance. I’ve upgraded my OS, or replaced a machine, or been generally dissatisfied with my existing Emacs install, and so I begin casting about for a good, GUI version of Emacs to run under OS X. I’ve used Auqamacs and Carbon XEmacs and probably a couple of other precompiled binaries with varying degrees of success, and I’ve compiled my own at least once or twice. Given the size of Emacs, and my relative inexperience with the internals – I have no reason to need to compile my own – I prefer a simple precompiled binary. OS X comes with a command-line only Emacs install, which is certainly usable, but I prefer the GUI version for the colors and fonts.

Having recently replaced the old G5 when it died with a new 24″ iMac, I again this morning found myself in search of an Emacs. I stumbled across Michael O’Brien’s blog post Emacs.app on Mac OS X Leopard, and found exactly what I was looking for. I’ll admit, it took me a couple of minutes to understand exactly what Michael was doing. He starts by downloading the Emacs source distribution, but instead of compiling Emacs, he simply copies Emacs.app from the ./mac folder in the source distribution. What? Emacs source ships with OS X compiled binaries? No, this is where I initially misunderstood.

All OS X application bundles (“.app” files) aren’t really files, they are directories. A .app directory contains not only the actual application binary, but also the icon, a file containing the text for menus, etc, and sometimes other support files for the app. The Emacs.app in the source distribution is the set of files and directories, minus the compiled emacs binary. Once you compile emacs, you can install it as a GUI application, which is where the Emacs.app folder is used.

Instead, Michael copied the Emacs.app folder to the Applications folder, and then created a symlink inside the Emacs.app folder linking to the system emacs that ships with Leopard. This symlink is essentially an alias, and it exists in the same place inside the Emacs.app folder that the compiled binary would go. Instead, there’s an alias, or symlink, so that when OS X tries to run the binary Emacs.app/Contents/MacOS/emacs, it really runs the system Emacs, aka /usr/bin/emacs. And when the system Emacs is launched from inside the Emacs.app, lo and behold, it presents the GUI!

If you are looking for a simple way to run Emacs with the GUI on Leopard, go follow Michael’s instructions. He even offers the Emacs.app folder for direct download, to save both you and GNU some bandwith. One note regarding his instructions: his next to last step, in which you create the symlink, starts with ln -s. You will probably need to prefix this command with sudo like the lines before and after.

It’s that time of Yarrrr! again…

That’s right ye scallywags, today do be Talk Like a Pirate Day. Be sure to plunder someone you love!

The Twitter!

Grumpy-old-man rant (money quote: “Damned kids! Stay off my lawn!”) aside, I finally signed up for The Twitter a few weeks ago. I can think of no good reason why you should follow me.

Don’t know what The Twitter is, or don’t know why all these damned fools won’t shut up about it? Internationally Beloved Technology Pundit Andy Ihnatko gives a gentle introduction to The Twitter in Apple Phone Show #53.

Upgrading to WordPress 2.5.1

After weeks of putting it off, I’ve upgraded to WordPress 2.5.1. I’ve been putting off the upgrade to WP 2.5.x because my WP install was a bit old (2.1.something, I think), and because I had a nagging suspicion (but no solid recollection) that I had mucked about in the WP source to make something work (bad idea), and I was concerned the upgrade might break it. This morning I decided to bite the bullet. If I did have custom changes to the WP source that I have lost, I haven’t noticed any ill effects. Which is not to say that everything went off without a hitch. Herewith some notes, hints, and suggestions on the upgrade.

First off I wanted to be sure I had good backups, because Murphy and I go way back. I host this site on DreamHost, and used their One-Click Installer option to set up WP originally. Because of this, I was able to upgrade with the One-Click Installer, which offers automatic backup of the entire WP directory tree, including your plugins, themes, etc. The whole tree is copied to a .old directory before any changes are made. Excellent. That only left backing up the database.

WordPress uses MySql , and there are a number of ways to backup a MySql database. Because my hosting account includes shell access (all DreamHost accounts do), I just did a full dump from the command line, which is dead simple and wicked fast:

mysqldump --opt -p -uMySqlUsername -h MySqlServername MyDBName > backup.sql

Note that while many resources will tell you to include you password in the above command by replacing -p with -pMySqlSecretPassword, this is a security risk on any system with more than one user. Don’t do it. Instead, just use -p, and mysqldump will prompt you for your password. The resulting backup.sql is a sql script that you can feed directly to mysql, which will recreate your entire database, data and all. Very nice.

So, precautions properly taken, I asked the One-Click installer to upgrade me. A couple of minutes later, I got an email telling me that my upgrade was successful, and instructing me to follow a link to a special page in my site’s Admin area that would complete the upgrade by updating my database structure. Which is when things took a turn for the worse.

The update database page would not load. The admin login screen would not load. The blog would not load. Half a dimension away, Murphy giggled maniacally as he enforced his Law. Jerk.

The error message indicated that one of my plugins was attempting to redefine a function already defined in one of the core WordPress files. Oops. I’ll just skip ahead here to something I learned after some quality time on The Google: It is recommended that you disable all plugins before upgrading from a pre-2.5 install to 2.5.x. Oops. Annoyingly (but perhaps predictably), the only way to disable a plugin is via the Admin interface. You know, the one that didn’t load. Oops.

Fast-forwards 20 minutes of increasingly irritated Googling, and I had learned that there is an entry in the MySql table wp_options named active_plugins (i.e., where option_name = 'active_plugins'). If you set the option_value field of this row to an empty string, all plugins are disabled. That was enough to let me access the Update Database page, complete the upgrade, and use the Admin interface.

Of course, the blog was still broken, because my theme templates rely on certain functions exposed by various plugins. I proceeded to turn on plugins one at a time, based on the error messages I saw, until things were working. The only problem I ran into was UltimateTagWarrior, which is no longer supported, as of WordPress 2.3. Shutup, Murphy.

The solution was not difficult, although it required a little more Googling than I expected. UTW was discontinued because WP got built-in tagging support in WP 2.3 (I believe). However, anyone who used UTW had theme templates containing calls to UTW-specific functions. In addition, UTW offered a number of tag display options not offered by the core WP install. So the plugin’s author Christine introduced a new plugin, UTW Theme Compatibility Thing, which offers all of the old UTW template functions, but uses WP’s native tagging system as the data source. Once I installed and activated that, everything worked, except that I had no tags on my posts. (Note: If you used icons with your tags, as I do, be sure to check the instructions on the Compatibility Thing wab page or the readme file; there are a couple of extra steps required to make them work.)

This turned out to be an easy fix as well, after more time on The Google. WordPress already includes a tool to convert UTW tags to WP tags. From the Manage tab of the Dashboard, choose Import, and then choose Ultimate Tag Warrior. Five clicks through the wizard later, and you’re all done.

As far as I can tell, everything is working now. If you have any problems using the site, or see anything funny, please drop me an email or a comment.

So far, I really like the new WordPress, and I’m looking forward to trying out the new image uploader and the Gallery. My only complaint so far is that the page preview has been moved out of the Write Post page; you now click to pop open a preview. Do not want. I’ll give it a couple of days to grow on me, and them I’m going to start looking for a plugin to add integrated preview to the Write page.

Parallax Boe-Bot

As I kid, I was fascinated by electronics. I had one of those “150-in-1″ electronics projects kits from Radio Shack, the kind with the springs that you bent to insert wires to connect the components mounted in the kit. I had a well worn copy of Forrest R. Mimms’ Getting Started in Electronics, as well as a number of his “Engineer’s Mini-Notebooks”, which were also sold at Radio Shack, alongside the overpriced component displays. I spent a good deal of my allowance (and later, paper route earnings) on blister packs of resistors, capacitors, and ICs, and soldered together many projects, with varying degrees of success.

Over the past couple of years, this interest has been renewed as I’ve been reading up on microcontrollers and hobby robotics. Bill Bumgarner’s recent posts about experimenting with AVR microcontrollers and the EMSL AtmegaXX8 Target Board have inspired me to make some time to tinker. While I have done some experimenting with AVRs using the 20.00 USD Atmel Butterfly recently, I decided to haul out the Parallax Boe-Bot I purchased a couple of years ago, and never got around to playing with.

I bought the Boe-Bot because I caught a great deal from Micro Center. Parallax sells the Boe-Bot for 159.95 USD, and you can often find them for sale for about 20 bucks less. I picked mine up for 49.00 USD, which is the Parallax list price for just the BASIC Stamp BS2 Microcontroller included with the kit. The kit also includes 2 Parallax Continuous Rotation Servos, which are actually Futaba S148 Standard Precision Servos which have already been modified for continuous rotation. Parallax sells them for 12.95 USD a piece, which is a good price on these servos, and an even better deal as they are already modified.

In spite of the good deal, I did have some reservations. As a matter of personal preference (and perhaps, programmer’s ego), I would prefer to program the microcontroller directly in C. I believe this provides the most flexibility on limited hardware, as well as the greatest opportunity for learning as I go. This is the primary reason why I avoided the open-source, AVR-based Arduino platform popularized by Make Magazine- the Arduino is programmed in a custom programming language. (Update: In the comments, David A. Mellis explains that the Arduino is programmed in C/C++, and that the Arduino language is a set of helper functions. I sense a purchase in the offing!) The BASIC Stamp 2 used in the Boe-Bot is programmed using Parallax’s custom variant of BASIC called PBASIC. While there are BASIC Stamp clones available from other manufacturers that are programmed with PBASIC variants, much of the details of programming in PBASIC is not directly translatable to the kinds of chips I am interested in, such as the AVR.

Another concern about the Stamp is licensing. While looking for information on programming the Stamp via Linux (Parallax only supplies Windows software), I found the following commentary in a reply to a question on the Ubuntu Forums about using the BStamp tools for Linux (more on this in an upcoming post.):

The package is apparently using two licenses, GNU for the volunteered portion, and PBASIC license. PBASIC Tokenizer Library software is used with hardware that is sold by Parallax. The license to redistribute any programs written is very restrictive, including requiring a driver’s license, and written agreement in the possession of Parallax, and subject to revokations including those mentioned within that package. The source for the library is not provided, and the library file is stripped. It is only useful with their hardware.

When working on personal projects, I prefer to use open source software whenever possible, to allow for the greatest flexibility should I wish to change the software or redistribute my work, but I do not object to closed-sourced software on moral grounds; open source is simply a better value for me. In the case of the BASIC Stamp, I intend to use the Boe-Bot kit as an inexpensive way to experiment with small scale robotics for my own enjoyment. At 49.95 USD, the pros outweigh the cons. If I decide to move on to custom designed projects, I will likely use an AVR or other inexpensive, more programmable microcontroller.

The Parallax line is not without its benefits as well. Parallax positions their products not only as hobbyist devices, but also as educational aides. The Boe-Bot kit includes a 340+ page spiral bound manual that explains much more than just construction (which only takes about 15 minutes). There are chapters on servo motors and how they work, robot navigation using dead reckoning, tactile navigation using physical touch sensors (implemented via metal “whiskers”, and non-tactile navigation using both visible light detection and infrared obstacle sensing. The text assumes little knowledge, and explains both the principle and implementation of these features. Most of the information learned from this course is directly applicable to other robotics projects, even if the PBASIC used to implement behaviors is not. If my son ever expresses an interest in microcontrollers or robotics, I will definitely start him with a Parallax kit.

While Parallax may exert strict control over the code to parse and compile PBASIC, they are far more open with their instructional texts. Their Stamps in Class line of kits (which includes the Boe-Bot) includes 9 distint products, which can be used in several progressions. All of the kits are built around the BASIC Stamp and the user’s choice of controller boards. Their are two controllers, the flagship Board of Education and the less expensive HomeWork Board (sold in 10 packs for schools). The starter kits- the Boe-Bot and “What is a Micrcontroller“- include a Board of Education; the other kits act as add-ons, combining a thorough text with additional parts needed to complete the projects and experiments in the books. Best of all, the books are not only available for sale separately, but they are all also available as free PDF downloads from the Parallax website. I’ve browsed several, and the quality appears as good as the Boe-Bot manual. This was a big part of my decision to grab the Boe-Bot when I saw it on sale. The book included with the industrial control kit includes a very good chapter on PID, or Proportional-Integral-Derivative control. This system is used not only in many industrial control scenarios, but also in two-wheeled self-balancing robots such as Larry Borello’s Gyrobot. (Note: After I started writing this post, I learned that the Industrial Control kit is discontinued. I do not know if it will be replaced with an updated version, but the latest manual is still available for download).

I have just begun to play around with the kit, and in truth, I am skimming some of the early material as I already have a firm grasp on the fundamentals of programming. I am also familiar with the basics of small robot design from other reading I have done. I can’t provide a full review as I have not worked my way through all of the material yet. I can say that I it is a well thought-out product and appears to provide a lot of learning opportunity for the beginning roboticist. I will post again in the near future with details on using the Boe-Bot (or other BASIC Stamp product) with Linux, and possibly on more on my experiences with the kit itself.

A Perfectly Cromulent Adjustment

I finally got tired of the narrow columns, so I spent a few minutes to embiggen the layout. Hopefully this will give me enough room for some new posts.

Last-minute Tax Advice

I just finished filing my Federal and State Income Taxes for 2007. Oh, what singular joy.

I filed much later than usual this year. Due to some one-time income, I actually owed money instead of getting a refund this year, for the first time. While paying taxes is never fun, and paying more at tax time is even worse, this year’s tax-paying event was even worse than I anticipated, thanks to Turbo Tax.

I have been using Turbo Tax since at least 1997; possibly longer, but those are the oldest returns files I have. I used the PC version until a few years ago when I decommissioned my old Windows desktop, and I have used the Mac version since. I have always had a good experience with the program, and have recommended it to friends and family.

I cannot recommend the 2007 tax year version without reservations (I used the “Deluxe” version). The entire process felt less polished than in years past. There were a number of forms that I had to hunt down in “Forms Mode” because “Interview Mode” did not ask the right questions, or ignored some possibilities. There were a number of areas where questions were asked that I did not understand; unlike in previous years, the integrated help often did not explain the question thoroughly.

Admittedly, part of the issue may be that I owed taxes this year, and in general had a few details in my return that I haven’t dealt with before. It is possible that the overall quality has not changes, only that I have not used the parts of the program which are less polished in the past due to my filing situation. For example, I had to pay Alternative Minimum Tax this year (which is a whole ‘nother rant); the help and interview questions for the AMT were by far the worst I’ve seen in Turbo Tax. Maybe they have always sucked; I’ve not seen them before. Whatever the reason, the perceived quality of the product was much lower this year than in years past.

Ah, but I promised advice. If you have not completed and filed your returns, and if you are using Turbo Tax, I strongly recommend that you use the “Print for Review” option which is offered just before you finish e-filing. Review the printed pages (and there will be many) carefully. This may seem obvious, but don’t forget this step. You may find something that you didn’t see while using the program. I certainly did… based on my unusually high (one-time!) income, Turbo Tax was going to tell the IRS that I would be making estimated 2008 tax payments of over $3000, four times this year, on top of my paycheck withholding. Fortunately, I caught this when I printed, before I filed, and found the correct section of the interview to fix it. Apparently, the interview originally asked if I wanted to make estimated payments, and when I said no, it ran its own calculations and signed me up.

CSS Naked Day

I can’t find time to write an actual post, but I can sure jump on a meme. April 9, 2008 is the third annual CSS Naked Day. From the site:

The idea behind this event is to promote Web Standards. Plain and simple. This includes proper use of (x)html, semantic markup, a good hierarchy structure, and of course, a good ‘ol play on words. It’s time to show off your .

Twitter Account Sign-up: Poor UI Design Masquerading as Great UI Design

The older I get, the more resistant to change I get. “Because it’s new!” just doesn’t seem like a valid reason to spend time on things like it used to. Maybe it’s not age; maybe it’s just the ongoing lack of free time I suffer. Either way, I’m not nearly the early adopter I once was.

For example, I’ve never used Twitter. It has never struck me as a useful method of communication, and I don’t know anyone (personally) who uses it. It has remained on my radar; many of the bloggers I follow use it and often refer to it, and to “tweets” (twitter messages, for the uninitiated) they have received. It also comes up on a regular basis in the podcasts I listen to. Tonight, I decided to give it a try, if only to follow a few of the folks whose other works I read and listen to on a daily basis.

The Twitter sign up page is elegantly simple- three inputs, the obligatory CAPTCHA, yes-please-email-me checkbox (off by default!) and the submit button, which is labeled as an acceptance of the Terms of Service (omitting the need for a separate checkbox). Each input- username, password, email address- is clearly labeled, with brief help text alongside. What impressed me was the username text box. Below the text box appears the message “No spaces please.” As you begin to type your desired user name, the message is updated to read “That name has been taken. Please choose another.” or “Available!” As I typed, I was impressed – the messages took the guesswork out of choosing a username- a process which is often a pain on any site that requires a domain-specific unique ID. Especially annoying are those sites that clear the password field, or even the whole form, when they tell you that the username you want is already taken.

But all was not as it seemed. My old standbys “jason” and “jclark” both being taken, I tried “jclark.org”. “Available!” declaimed the help text. “Excellent!” I replied. Add a password, supply an email address, squint through a CAPTCHA and… Fail? The page refreshed. The password and email inputs were cleared. The CAPTCHA images were updated, and the CAPTCHA input cleared. The username was still filled in, but the help text now said “Username can only contain letters, numbers and ‘_’”. Wow, that would have been useful knowledge BEFORE I submitted the form. You know, back when you told me my choice was “Available!” in soothing green text. And why was the entire form cleared, forcing me to start over? Well, the entire form *except the field that was invalid*. That field was thoughtfully left populated.

In the space of 2 minutes, my very first interaction with Twitter went from very positive (simple form, sensible defaults, instant feedback) to very negative (misleading instant feedback, clearing of valid data). I don’t know if this will stop me from ever signing up for Twitter. It did stop me from signing up for it tonight.

Four on the Floor

It’s meme time, boys and girls. I broke the chain on the last one and got seven years of bad luck, so I might as well get Rich and Famous! this time. Or something like that. Thanks/a pox on Dave for tagging me.

Four jobs I have had (current job excluded):

  1. Paper Boy. For nearly three years, starting when I was 13, I was a morning paperboy. I’d get up every morning at 4:30 and head out to retrieve, fold, bag or band, and deliver anywhere from 50 to 100 papers, by bicycle. No wonder I hate mornings so. Every two weeks I’d go door to door, collecting (“I want my two dollars!”); nearly no one paid by mail. As much I hated the early mornings, I think I dreaded collecting even more, since it cut into my actual leisure time, such as it was. Still, collecting had its benefits. I made an effort to learn each customer’s preferences (in front of the door, inside the storm door, on the ledge next to the door, “stay off the grass”, etc.). In return, I made pretty good tips, and really cleaned up at Christmas. Wearing the Santa hat while collecting in December helped to remind everyone it was time for the Christmas tip, too.

  2. Dish washer cum Burger Flipper. After years of early mornings, I was ready for a “real” job. The only real options in walking distance when I turned 16 (old enough for a job in Virginia at the time) were McDonald’s and Wendy’s. I worked at Wendy’s for about 4 months, which was plenty of time to realize that “real” jobs suck.

  3. Retail Clerk/Shoe Salesman. When summer started, a friend got a job at Sears at the local mall, and told me they were hiring. At this point I was ready to never see another burger, much less flip one, so I applied. I was initially hired as a clerk in the Men’s department, but in a lucky break got promoted to shoes by the end of the summer. Lucky? Oh yeah… the Shoe department worked on commission.

  4. TV Shopping Channel Order Entry Operator. “Thank you for calling QVC, my name is Jason. May I please have your item number?” Took this one over the summer during college. Boring, boring, boring, but eventually lead (after several other positions in the company) to my first job as a programmer.

Four Films I have Watched Again and Again:

  1. Better Off Dead. Still my favorite John Cusack role. Best quote is a tie: “I want my two dollars!” (see number 1, above) and “Now that’s a real shame when folks be throwin’ away a perfectly good white boy like that.”

  2. The Princess Bride. What a fun, funny movie. My favorite Mandy Patinkin role. Best quote is also a tie: “Hello! My name is Inigo Montoya! You killed my father! Prepare to die!” and “You keep using that word. I do not thin[k] it means what you thin[k] it means.”

  3. Driving Miss Daisy. Morgan Freeman and Jessica Tandy are just fantastic in this film. This is one of those films I will stop and watch any time I find it while flipping channels.

  4. Star Wars. Still a classic, and so much better than episodes 1 through 3. Best Quote: “I’ve got a bad feeling about this.”

Four Places I Have Lived:

  1. Virginia Beach, VA, where I grew up.
  2. Norman, Oklahoma, where I attended the University of Oklahoma, for a time.
  3. Portsmouth, VA, where we first lived after I was married.
  4. Bear, DE, where I first lived when we moved to the greater Philadelphia area.

Four Shows I Love to Watch:

  1. Good Eats. Alton Brown is a genius. I’ve learned more about cooking watching AB than any three other cooking shows combined.
  2. Boston Legal. “Denny Crane.” The role Bill Shatner was born to play.
  3. Heroes. Not only is this a great show, my son and I always watch it and try to figure it out together, which I love.
  4. Star Trek: Deep Space Nine. I tried to limit this list to current shows, but DS9 deserves a mention because it has become my favorite Trek series. Admittedly, I wasn’t that impressed when it first came on, and I only saw about half of the episodes originally. Last summer, Spike ran the entire 7 season series, in order, two shows per day, and I Tivo’d and watched them all. Like many series, it got off to a bit of a slow start, but there was a lot of foundation laid for later character development. DS9 was also much more of a serial than any of the other Trek series, and the ongoing development of characters, relationships, and plot lines made it worth watching end-to-end. I just wish the complete season DVD collections weren’t so expensive.

Four Places I Have Been on Vacation:

  1. Mt. Dessert Island, ME. Home to Bar Harbor, I’ve spent many vacations across the island in Southwest Harbor, where my father grew up. I beautiful place to visit, and I still have lots of family back there.

  2. Outer Banks, NC. I’ve stayed in Nags Head, and Kitty Hawk, and this past summer we rented a house in Duck. I’m not a big fan of the beach like the rest of my family are, but there’s lots to do, and it’s not far from Virginia Beach & Portsmouth, where we have family. Kitty Hawk Kites is always fun place to visit.

  3. Galveston, TX. We spent a long weekend in Galveston this past spring, looking for a warm weather beach destination we hadn’t visited that didn’t require passports, as the kids didn’t have them yet. The weather didn’t really cooperate, but we stayed at a very nice place with a heated pool that included in-pool bar/food service, so I can’t complain too much.

  4. Niagra Falls, Ontario, Canada. Took the kids when they were younger. The falls are an impressive site, but the town is very much like a beach boardwalk, folded into about four square blocks. We had a nice time, but I wouldn’t recommend more than about three days’ stay.

Four of my Favorite Foods:

  1. Coffee. Yes, it’s a food. It nourishes and sustains me.
  2. Donuts. Mmmm. Donuts.
  3. Bacon. Everything is better with bacon.
  4. Oh Boy Doughboy. A doughboy is a fried dough snack, similar to a doughnut rolled flat before frying, found in Maine (and possibly other areas; sometimes under other names); an Oh Boy Doughboy is a variation unique to Maine-ly Delights, a family-run restaurant located across from the Swan’s Island Ferry Terminal in Bass Harbor, Maine. The Oh Boy Doughboy is a freshly fried doughboy topped with a big scoop of vanilla ice cream, and your choice of hot fudge, strawberries, or blueberries. The blueberries are prepared similar to a pie filling, and are clearly the best choice. I’m getting fat just thinking about it. If you visit Bar Harbor during the summer (Maine-ly Delights is only open during the summer), take an afternoon to drive across the island and visit the Bass Harbor Lighthouse, and have lunch (and a doughboy!) at Maine-ly Delights. You can thank me later.

Four of my Favorite Drinks:

  1. Coffee. Yes, it’s a drink too, since I can wash down food with it.
  2. Guiness. My fall/winter beer.
  3. Corona w/Lime. My spring/summer beer.
  4. Jack and Coke.

Four Places I Would Rather Be Right Now:

  1. Edinburgh, Scotland. I’ve made several trips for work, can’t wait to go back again.
  2. Vancouver, BC, Canada. Visited for a weekend for Sean and Marlene‘s wedding, would definitely like more time to explore.
  3. Southwest Harbor, ME. Didn’t get to visit this year.
  4. A Philadelphia Eagles home game. Never been.

Four Suckers Bloggers I’m Tagging:

  1. Doug, who hasn’t issued a Monthly Blogging Challenge in a while (of course, neither have I!).
  2. Uncle Roger, who used to join all the Challenges as well.
  3. Effika, who leaves me nice comments from time to time.
  4. Sean, who bugs me about never posting, and never posts himself.