April 2009

Server Fault Private Beta Begins

Server Fault is a new Q&A website for system administrators and IT professionals, brought to us by the folks who brought us Stack Overflow.

It just started its private beta, which is open to any Stack Overflow user with a reputation score of 100 or higher, or anyone with an OpenID who submits a request. See the Stack Overflow blog entry for details.

I'm in the process of setting up an Ubuntu web server on a Xen VPS, so I expect to have a lot of questions to post on Server Fault. It arrived at the perfect time.

Menubar Countdown Suggestions

Since releasing Menubar Countdown, my little Mac OS X timer app, I've received some nice feedback and suggestions for improvement. I'm going to list them here, both so that I can find them later, and to let others leave their own suggestions.

  • Repeat the alarm until the user acknowledges it. (Currently, the alarm just goes off once.)
  • Support Growl notifications
  • Allow user to choose an alert sound other than the default system alert sound.
  • Provide option to log out and/or shutdown when timer expires.
  • Provide option to launch an application or an AppleScript when timer expires.
  • Add a days field.
  • Allow user to specify the output format (so that a user could, for example, have it display "4m, 3s" instead of 00:04:03.
  • One-click start: bypass the Settings dialog
  • Animated "alarm is going off" display
  • Allow user to specify an ending date and time, rather than a time interval
  • Provide option to not display seconds (continuous animation is distracting to some, and removing seconds would save some menubar real estate)

I'm not going to implement very many of these, if any. What I like about Menubar Countdown is its simplicity, both in terms of user interface and in terms of implementation. It's only a couple hundred lines of code, and I'd like to keep it that way.

Lumpkin 400 Storage Rocks!

I want to give a quick plug to Lumpkin 400 Storage in Dahlonega, Georgia. (My recommendation probably doesn't carry much weight, but maybe this will help their Google PageRank by some tiny amount.)

I showed up on Saturday afternoon, asking to rent a U-Haul. Todd Cannon, one of the owners, didn't have any trucks available, but asked me what I needed to move. I told him I had a broken riding lawnmower that I needed to take back to Home Depot.

Todd apolgized that he didn't have any trucks available (the end of the month is a busy time), but he'd have his trailer with him on Monday, so I should call him and he'd give me and a mower a ride. No charge. We got the mower moved this morning, and I forced him to take twenty bucks.

I would definitely recommend doing business with Lumpkin 400 Storage. Friendly people, awesome service.

Migrating Blog Posts

I looked around for an easy way to migrate all the content from my old blog to this new one. While some automated solutions for moving from Blogger to Drupal are available, I decided it would be better to do it all by hand. This gives me a chance to pick only the Best of Undefined Value, and to do some editing.

It's not really that hard. Just click the edit button for the old post, select all, copy, click my "Create Story" bookmark, paste.

The only tedious part is setting the date. The old site has dates in MM/DD/YYYY HH:MM:SS AM/PM format, whereas Drupal wants YYYY-MM-DD HH:MM:SS, so I can't just copy and paste.

Luckily, there's not much good stuff on the old site, so I hope to have the Monthly archive block on the left filled in a few weeks.

Fisher Bullet Space Pen: Almost Perfect

When I was a kid, while visiting the Kennedy Space Center my parents bought me a Fisher Space Pen. At the time, I thought it was cool because it could write upside down, and because it had been designed for astronauts. I don't know where that first pen is now.

Over the past year, I've been eyeing the "bullet" Space Pens whenever I go into Office Depot. Spending twenty bucks on a ballpoint pen seemed like an unnecessary extravagance, so I held out for a long time. However, seeing the pen mentioned on 43 Folders pushed me over the edge, and I finally bought one, in chrome.

It's almost perfect. I love the size and shape: it easily goes into and out of a pocket. When you remove the cap and put it on the other end, the result is a full-size nicely weighted and balanced pen. It feels good in the hand. Holding it and looking at it just makes me smile, as it is such a nice example of elegant engineering.

The only thing I don't like about it is the ballpoint cartridge. I don't find myself in zero G or underwater very often, so I don't really need the whole pressurized-magic-ink thing. I find I have to press down a little harder than I'd like to get the ink to flow while writing. It's better than the typical 25¢ disposable ballpoint, but when I'm scribbling on an index card, I'd like smoother ink flow.

It's too bad they can't offer a terrestrial version of the Space Pen, with the same form factor but with gel ink. (Maybe I'll experiment with putting a Pilot G2 cartridge into my Space Pen.)

But that's really a minor quibble. The Bullet Space Pen is easily worth the twenty bucks, and I'll probably buy another as a backup. We astronauts value redundancy, you know.

By the way, whenever the topic of the Space Pen comes up, some know-it-all will note that the American space program spent millions of dollars developing a high-tech pen that writes in zero-G vacuum while the Russians decided to simply use pencils. The story is not true: see Snopes.com for the truth.


Update: A commenter provided a link to http://www.scarysharp.com/?p=441, which provides a solution for those who would like gel ink in their bullet pens.

I notice that I'm getting a lot of traffic from The Pen Addict. It's nice to know that others share my trivial obsessions.

Thanks for the Confirmation

I thought the iPhone App Store's review policy was unnecessarily opaque, but Apple tops it with its Apple Downloads submission process:

This email confirms we have received your submission. Apple reviews all submissions and reserves the right, at its discretion, to omit, edit, or reject submissions for inclusion on the Mac OS X Downloads website at:

<http://www.apple.com/downloads/macosx/>.

This is the only notification you will receive. If you do not see your product listed on Mac OS X Downloads after 90 days, you may resubmit it for consideration.

89 days to go...

Update: It only took one day. Menubar Countdown is now available at <http://www.apple.com/downloads/macosx/productivity_tools/menubarcountdown.html>.

Menubar Countdown 1.1 for Mac OS X Released

I've released an update to my Menubar Countdown application.

See http://capablehands.net/story/menubarcountdown/announce/v1.1 for details.

NutriSystem Review

I've lost almost twenty pounds after a month-and-a-half on NutriSystem. I'm not a paid shill. I figured I'd post my thoughts about it, in case others are considering it.

There are many, many diets and weight-loss programs out there. I'm not an expert on any of them; I'm just a guy who wanted his pants to fit again. Here are the things that made me choose NutriSystem:

  • It's easy: they send me food, and I eat it. I don't have to count calories, carbs, fat grams, etc. I don't have to spend time preparing special meals.
  • It's not a radical diet. The basic idea is to eat small portions, and avoid saturated fat and "bad carbs" (sugar, white bread, etc.). You supplement the food they send you with fruits, vegetables, and whole-grain breads and cereals. It's normal food.
  • No meetings or counseling required. I'm sure social support is great for a lot of people, but that kind of thing is a big negative for me.

It works for me because it takes advantage of my laziness. I don't have to plan meals. I don't have to look at nutritional labels. I don't have to spend time cooking, other than popping something into the microwave for 90 seconds. All I have to do is pull my next meal out of a box every few hours.

Despite the fact that I'm eating only about a thousand calories a day, I rarely feel hungry. On the plan, you eat a meal six times per day, so even though the portions are small, you always feel like you've just eaten.

Some people complain about the cost (over three hundred dollars a month), but it's actually cheaper than the company cafeteria and restaurant fare I used to eat daily.

Some people simply can't stand the food. I'm not a picky eater, so I don't mind. With the extra fruit and vegetables, I'm actually eating much tastier food than I did when my meals came from restaurants. It may not be the best-tasting food in the world, but it's not bad, and I like the results.

I recently took a week-long vacation, and ate "normally" during that week (that is, I didn't eat the NutriSystem stuff). I didn't lose any weight that week, but I didn't gain any either, so I'm optimistic that I'm developing good eating habits as a result of the plan, and will be able to keep the weight off when I reach my goal.

I've lost about twenty pounds so far. I've got about thirty more pounds to lose to reach my goal weight. I'll let you know if NutriSystem gets me there.

Drupal Rocks

I first dabbled in web development back in the mid 1990's. Back in those dark times, you created web sites by writing raw HTML, or by writing C or Perl CGI scripts. You spent about 1% of your time creating interesting content and behavior, and 99% of your time dinking with site layout, page layout, link updates, database administration, and other "plumbing" issues. I decided web development wasn't for me.

As years have passed, I've dabbled with some of the techologies that were supposed to make web development better: ASP, JSP, PHP, ASP.NET, Rails, Django, etc. While these eliminated some of the tedium of development, they also added a lot of complexity. Those technologies give you tools for building a web site, but they don't give you a web site. You still spent 1% of your time on creativity and 99% of your time on plumbing. A "real web site" still required a team of programmers, designers, and editors to create and maintain.

I've set up a few wikis. Those are nice in that they are easy to set up, and then the users can create content. Wikis are awesome for providing a collaborative publishing environment. The downside is that they all look ugly; you wouldn't want to use them for general-public web sites.

So, I've stuck with writing raw HTML for my personal web sites. This caused my sites to suffer, because writing raw HTML for an entire site sucks, especially if you want to provide navigation links, multi-column layout, headers and footers, and other niceties. My Capable Hands Technologies, Inc. web site kept its "Under Construction" home page for two years, because it just didn't seem to be worth the effort to put something there.

But then a few months ago, a friend told me he had set up a site using Drupal, and it was pretty cool. I finally tried it out a couple of weeks ago, and I am amazed.

All you do is unpack a tarball on a web site, create a MySQL database, fill in a few parameters (site name, logo, etc.), and bingo!, you have a real web site, with a nice layout, front page, navigation menus, articles, RSS feed, user accounts, multi-user blogs, forums, file uploads, and a zillion other things I haven't even looked at yet.

Drupal provides a great out-of-the-box experience, but there is a whole community providing additional modules (site features), themes (look-and-feel), and other stuff. So without writing any HTML or Perl, you can extensively customize your site with practically any feature you need.

The Drupal web site has a lot of documentation, but as with a lot of open-source projects, the documentation is not well organized, the tutorials are many-versions-old, and finding what you are looking for often takes forever. So I recommend that any new Drupal user read the book Using Drupal or something else like it.

The only downside to Drupal is that it is written in PHP, which is one of those programming languages which is wildly popular but which also sucks tremendously. But I understand that the Drupal codebase is one of the few examples of well-written, well-structured PHP, so I may tinker with the code a bit to learn some things.

Of course, Drupal is not the only "content management system" out there. WordPress or MovableType may meet your needs if you have a blog, or you may want something like Joomla or Zope instead of Drupal. The real lesson (for me) is that writing whole pages in HTML is something we don't need to do anymore.

Anyway, this old dog has learned some new tricks, and Undefined Value is now running on Drupal. As I learn more about Drupal, I'll be adding features. I apologize in advance for anything I screw up.

For Mac Users Who Use Firefox

If you use Firefox on a Mac, you must change its theme to GrApple Delicious (blue) right now.

That is all.

The New Focus

I've been thinking a lot about what I want Undefined Value to be. These are the reasons I have this blog:

  • I enjoy writing and I like to practice.
  • I want to make contact with other people who care about the things I care about.
  • I want to be able to go back and review what I was thinking in the past.
  • For potential clients and employers, I want to have a collection of writings that demonstrate that I'm smart and that I take my work very seriously.
  • I want to exercise my rudimentary website design and administration skills.

I don't expect to become a top blogger or generate ad revenue or become an influential thought leader. However, I do want people to read what I write, so I want to attract readers and keep the quality high.

To that end, I have decided to narrow the focus of this blog. Up to now, I think the audience of Undefined Value has consisted of these segments:

  1. Software developers
  2. People who are not software developers, but who are interested in software and information technology
  3. Private pilots
  4. Friends and family

Going forward, I'm going to concentrate on the first two groups. I haven't flown for a couple of years, so I don't have much to say to pilots anymore. The friends and family can be served via Facebook or my personal website.

That doesn't mean I won't occasionally post a picture of my dogs or re-tell a good fart joke I overheard. It just means that I'm going to focus on things that are of interest to "technology people."

I want to be both a teacher and a learner, so I'll be posting articles that share what I've learned but which also invite commentary.

Thanks for reading, and let me know what you want me to write about.

Undefined Value Takes a Flying Leap

For the last five years, http://kristopherjohnson.blogspot.com/ has been the home of my blog, Undefined Value. Blogspot is a great free platform for bloggers to get their feet wet, but I've decided I want to have a "real blog" on a website I control, so Undefined Value now lives at http://undefinedvalue.com/.

I intend to get more serious about blogging. We'll see how that goes.

I'm going to try to get all the content from from the old blog moved over here. Again, we'll see how that goes.

Thanks to everyone who has read and commented on my blog over the years, and I hope you enjoy the new look. Feel free to leave feedback about the new site. I'm sure I've configured some things incorrectly, so if you have trouble navigating or leaving comments or doing anything else that you should be able to do on a "real blog," I really do want to know about it.

About Me

Kris developed an early interest in computers. His father worked for IBM, and Kris fondly remembers visits to Daddy's office to see all the glowing screens. At the age of 13, Kris received an Atari 800 computer for Christmas, and quickly taught himself Basic and assembly language so that he could create videogames and make fun of Commodore users.

During college, Kris got a Macintosh SE/30, which is the greatest personal computer of all time.

Kris has been a professional software developer since 1992. Right out of college, he went to work for a traffic-engineering firm, and worked on traffic control and monitoring systems for New York City, New York State, Maryland, the County of Los Angeles, and other state and local governments. He got a lot of experience writing cross-platform code for heterogeneous environments that included OpenVMS, UNIX, OS/2, VxWorks, and Windows.

For the past few years, Kris has been working in the gaming industry, developing systems for lotteries, race tracks, and casinos. Most of this work has been in C++, but he's also done some work in C# and Python.

In 2006, Kris founded Capable Hands Technologies, Inc.. Since then, the bulk of his time has been spent doing contract work for a former employer, but he's made a little money doing other things.

When he is not working for employers or clients, Kris likes to experiment with a lot of programming languages and design techniques. Most of these experiments have no direct relation to "real work," but Kris knows that exposure to different paradigms improves programming and problem-solving abilities in all contexts.

Kris is currently concentrating on learning more about Mac OS X Cocoa and iPhone Cocoa Touch development. He has sold and distributed iPhone applications through Apple's App Store. This hasn't made him rich yet, but he's optimistic.

In 2007, Kris met a wonderful woman named Pebble, and in 2008 they married. Kris currently lives in northern Georgia with Pebble, stepson Bailey, and five little dogs. He's very happy there.

Kris enjoys writing about himself in the third person.

Menubar Countdown 1.0 for Mac OS X Released

Lately, I've been experimenting with the Pomodoro Technique for time management. The basic idea is that you work in focused 25-minute bursts, with short breaks between bursts. You are supposed to use a kitchen timer to avoid getting distracted by looking at the clock.

Of course, as a computer guy I'd like my timer to be on my computer. I looked around for a Mac application that would provide an unobtrusive 25-minute countdown timer, but I didn't find any that I liked. So I decided to write my own.

Menubar Countdown is the result of that effort. It displays a countdown timer on the right side of the menu bar. It has menu items that allow you the user to start, stop, or resume the timer.

There are three options for what you want to happen when the timer reaches 00:00:00:

  • Play the system alert sound (which I never notice).
  • Display an alert window (which is effective, but you may not like the abrupt interruption).
  • Speak. This is my favorite option. You can specify what you want the application to say.

It's free software, distributed under the terms of the GNU General Public License.

Source code is included. Other neophyte Cocoa programmers might find it useful as an example of using such classes as NSStatusBar, NSStatusItem and NSUserDefaultsController, or for measuring absolute time in a Mac application.

You can download the application from my snazzy new corporate web site: Menubar Countdown product page.