Posted by Kevin D Smith @ 4:23 am on September 3rd 2007

Moving to Oklahoma: Day One

It was time for my wife and I to head out of Colorado and make way for Oklahoma where we’ll spend at least one year living. Rather than hiring a moving company like we did for our last move, we decided to rent a truck and move ourselves. This decision was made based mainly on the thought of having to live without our possessions for at least two weeks while the moving truck made it’s way to all of its destinations before coming to our place. Since the trip from Colorado to Oklahoma was mostly freeway the entire way, it would be an easy drive as well. Easy for someone who is experienced at driving a truck that is.

Out with a Bang… Literally

This would be my first experience driving a rental truck. I have driven tractors and wagons, cars with trailers, large vans and large pickups, but nothing quite like a large U-Haul truck. The main difference is that in a U-Haul truck, you can’t see a thing behind you, which I learned the hard way. After picking up the truck and getting back to our townhouse to load the truck, I thought I would back the truck up to the sidewalk to make it easier to load. The driveway to the townhouses in our neighborhood are pretty tight, but it looked like there would be room to do it. Apparently, there was a medium sized high-voltage box right next to the parking spots that I was trying back into. As I wheeled around to bring to truck into the spot, I backed right into it. When I looked back to see what it was that I hit, I finally saw it. At first I thought that I just put a small dent in it, but when I took a second look I realized that I had knocked the metal box off of its mounts so that it was sitting at an angle with the cables inside exposed. This was not a good start to the move…

I got out of the truck to take a closer look. It didn’t look like any major damage had been done. Yes, the box wasn’t mounted to the ground correctly, but it appeared as though all of the electrical equipment was intact. I certainly wasn’t about to touch anything, so we ended up calling the electric company to come take a look. Meanwhile, our hired hands had showed up to load the truck.

After a couple of hours, the electric company showed up and verified my evaluation of the damage. They took down my name and address so they knew where to send the bill and proceeded to put the box back onto its base. The procedure was basically the reverse of my procedure for pushing it off: hook a cable to the box and yank it with the truck. Five minutes later, they were gone. I’m curious to see what they’ll charge for something like that; I guess I’ll find out soon enough.

On the Road

It took about three hours to load the truck. Not too bad, although it wasn’t the best packing job as we would find out later. Now with my nerves all frazzled about running into things with the truck, we headed out. The plan was pretty simple: take I-25 to E-470 to I-70 into Kansas. I’m happy to say that this went without a hitch.

It took a few uneventful hours to get to Kansas through eastern Colorado. This is desolate ground, and I could tell that it was going to be a long drive. Western Kansas was more of the same. I lived in Michigan for most of my life and I’m used to seeing a lot of farmland, but nothing like Kansas. The whole state is farmland. The odd thing is that I didn’t see that many farms. My history of watching horror movies started getting the best of me out there. The sky was cloudy and gray, there was nothing but farmland for hundreds of miles in every direction, and there were only two radio stations, both Christian. If those stations had been preaching fire and brimstone, I think that might have been too much for me. I have seen way too many horror movies that start out this way. Even when towns did pass by, I was creeped out by it. Take Goodland, KS for instance, with the town motto “We’re waiting for you.” No, I am not making this up.

One of the finer landmarks on the way through Kansas was Prairie Dog Town which was advertised about 100 miles on either side. Prairie Dog Town featured such sights as a Russian wild boar, a 5-legged steer, and best of all, the largest prairie dog in the world! Unfortunately, it was late enough in the day that we figured Prairie Dog Town was closed for the night; or maybe my wife just wanted me to think that it was closed.

After driving about six hours, we decided to stop in Hays, KS, the largest town in Northwest Kansas: population 20,000. If you haven’t been to Kansas before, this should give you an idea of what it’s like. The largest town in the entire Northwest quadrant of the state only has 20,000 people in it! After getting there, I think that 20,000 was an optimistic count.

Overall, after hitting the high-voltage box and missing out on Prairie Dog Town, the day was uneventful. And if you know my luck at all, you’re well aware that my life runs in two modes: uneventful and freak-accident. I’ll take uneventful any day.

Posted by Kevin D Smith @ 10:26 pm on August 14th 2007

CVS, Sourceforge, and Authentication

I’ve been using SourceForge to host some of my open source projects for a while. One thing that has been annoying to me is typing in passwords whenever I do any CVS commands. It hasn’t annoyed me enough to automate the process though. However, I recently started working with a new editor called Editra, and I’m creating a project management plugin that handles source control which needs automatic logins.

I figured that there must be an automatic login procedure for repositories in SourceForge because there had to be someone that was annoyed enough with password prompts to implement it. I searched the documentation on the site, but that was fruitless. While there is a lot of documentation on SourceForge’s web site, it was just too much to sort through to find the one little piece that I needed. So I started searching the web for a simple solution and came across this page.

The solution is rather easy, especially for someone who already has SSH keys. Simply log into your SourceForge account, go to http://sourceforge.net/account/editsshkeys.php, and paste in your ~/.ssh/id_dsa.pub key.

Posted by Kevin D Smith @ 7:34 am on July 31st 2007

The Ultimate Web Application Development Environment?

I’ve decided to team up with a friend of mine to create a new application that will be implemented on the web. This is the first commercial venture that I’ve ever taken up personally, but it sounded interesting enough to take a crack at it. My friend actually brought up the idea. He has the domain knowledge and industry connections, but not enough programming experience to pull it off on his own. I have a vague idea of the domain and quite a bit of programming under my belt, so it seemed like a good pairing.

In making the decision on how to implement this software, it was decided to do it in a web application as a service rather than as shrink-wrapped software. This actually has benefits for our company as well as the customer. The customers don’t ever have to upgrade, worry about backing up data, and the interface will be platform independent. Our company benefits by having a constant stream of income from the subscriptions.

Since all of my prior programming work has been in existing company environments, or open source projects hosted on SourceForge, I never had to set up a complete development environment of my own. Since this is my company and I get to pick whatever I want, I thought I’d share what I think is the ultimate web application development environment.

Source Control

I’ve been using CVS both at work and in my open source projects for years. However, Subversion is getting very popular nowadays. After reading the documentation, it seems to solve a lot issues with CVS and has a nice programmable interface.

Bug Tracking

While I’m doing the programming and know that there won’t be many bugs to track, I figure I might as well have some bug tracking software around just for kicks. ;) I didn’t really find any free solutions that got my attention, so I decided to look at some commercial products. I finally decided on FogBugz. I’ve been reading Joel’s website for quite a while, and have also read his books. I figure I’d see if he’s really all he’s cracked up to be and try out some of his software. Plus, it’s not really that expensive.

Backups

If you’ve read my previous blog entries, you’d know that I am a big fan of backups. I’ll still be using SuperDuper! for my mirrored backups, but I’ll definitely want to have remote backups as well. For remote backups, I’ll probably use a combination of Mozy and rsync.

Web Application Software

If you do any work in web applications today, Ruby on Rails is probably on the short list of tools to use. Well, I’ve been using Python as my main language (for personal projects) for quite a few years now and haven’t found any of the benefits of Ruby to be significant enough over Python to take the time to learn it; so I think I’ll stick with Python. In the Python world there are three major players in the web application framework ring: Zope, Django, and Turbogears.

I was a big fan of Zope many, many years ago. In fact, I started learning Python just for the purpose of using Zope. I even wrote several websites using Zope for work and for personal use. It offers a huge number of features and management capabilities, but it is a big pill to swallow. When you get into the world of Zope, you pretty much have to take-it-all, or leave it. While I do still like Zope, I think I’m going to pass for this project.

Django was the next candidate. I don’t really know that much about Django, but I just didn’t feel right when I read the documentation on the website. I also don’t like the fact that they use their own template language (aren’t there enough already). So on to Turbogears…

Turbogears has a philosophy that I really relate to: take a bunch of really good, open source tools and combine them into something cool. The documentation on the website was nice, and there is a book as well. It also supports various types of page templates (much like my LaTeX processing framework, plasTeX)! Overall, Turbogears looks like the framework for me.

Database

I’ve used PostgreSQL for various little projects throughout the years mainly because I liked having transactions, sub-selects, and free software. Up until recently, this was the only free database that had all three of those. However, even though PostgreSQL seems to be the more feature-filled database, MySQL is clearly more popular, and better supported on most web hosting sites. MySQL does support transactions and sub-selects now, and even if it didn’t there isn’t much direct manipulation of SQL in Turbogears, so it wouldn’t make much difference. In addition, FogBugz requires MySQL, so I was going to have to have a MySQL server up anyway. Due to all of these reasons, I’m going to pick MySQL for my new project.

Conclusion

There is still more software that I need to evaluate the business end of things like accounting, customer databases, etc., but the development environment appears to be set at this time. While many of these tools are new to me, and it will take some time to get up to speed, I’m looking forward to trying out a combination of tools that I got to hand pick for my own business.

Posted by Kevin D Smith @ 9:07 am on July 26th 2007

Back to the Drawing Board

Well, my evaluation of the Mirra Chair didn’t go as well as I had hoped. While my back did feel better in it, the seat just wasn’t for me. After a couple of hours sitting in the seat, I just couldn’t get comfortable so I had to send it back. I’m not really sure where to go now since I’ve tried out pretty much every high-end, ergonomic chair there is. I guess that leaves the low-end.

I went to Staples to look at the chairs that they had and came across some by Sealy. Yes, that’s the same company that makes mattresses. I was quite impressed with their chairs. While they aren’t as stylish as the high-end models, and didn’t come in as many colors, they did seem very comfortable. Not only that, the prices ranged from only $200 to $300. I haven’t purchased one yet. I would like to sit in Staples for a couple of hours while working on my laptop to see if it would really work out for me, so I’ll probably do that in the next few days.

Posted by Kevin D Smith @ 2:09 am on July 23rd 2007

Quest for the Perfect Chair

I have always strived to have an ergonomic workstation. Even when I didn’t work from home full time, I would spend my own time and money trying to achieve a workplace that was efficient, ergonomically correct, and of course, stylish. Not all of my attempts worked out however.

The first chair that I purchased several years ago was a black leather executive type chair. While it was very comfortable, and very stylish, it didn’t have any back support. After working in that chair for a year or so, I started to develop pain in my legs. I didn’t realize that it was due to the chair until I started trying out other desk chairs. The ergonomic department at the company that I worked for set me up with one of their ergonomic chairs. It had many adjustments and controls, and a lot of lower back support. It wasn’t, however, stylish.

I used this chair for several months and my leg pain did subside. Unfortunately, I started to develop lower back pain. It took me a while to figure out why. I had a good ergonomic chair with lots of adjustments. I thought that would be sufficient. To figure out the problem, an all out chair shopping trip was in order. I researched the web to see what the most popular ergonomic chairs on the market were and set out to evaluate each one.

The front runners for best chair were: the Aeron chair by Herman Miller, the Liberty chair by Humanscale, and the Leap chair by Steelcase.

The first chair that I tried out was the Aeron. This chair is famous for it’s popularity during the dot-com boom in the late ’90s. One thing that attracted me to this chair was the mesh seat and back. I work in a hot climate, and anything that can make me cooler while working is a plus. I went to a local store (actually about an hour away) that carried the Aeron to try one out. Boy was I disappointed. Maybe my expectations were just too high, but I found this chair to be very uncomfortable. In particular, the lumbar support felt like a 2×4 being strapped across my back. This would certainly not do.

While at this store, I also tried out the Leap chair. I was pleasantly surprised by this chair. It was very comfortable, and was nicely adjustable. The Leap chair did have an upholstered seat, but featured a mesh back. I was very impressed with this chair, but it had a problem similar to the Aeron, the lumbar support felt harsh. The amount of lumbar support could be adjusted, but it still felt like a hard object strapped across my back.

After trying out these two chairs, I realized what was wrong with my existing chair. The lumbar support was just too extreme. While you could adjust the position of the back support, the amount was not adjustable and it was just too much. It was like I was trying to brace my back into an unnatural position with the chair back. With these other chairs that I was trying, the position of support and amount of support were adjustable. This change made an immediate improvement.

The Liberty chair evaluation came about a week later at a different store since the first store I went to didn’t carry them. Luckily, this store also carried the Aeron and some other chairs that I hadn’t considered yet. The Liberty chair is a very nice looking chair; probably the best looking of all of the chairs that I looked into. This is mostly due to the fact that Liberty has a minimal number of adjustments. Sitting in the chair showed that the seat was definitely comfortable. I also liked the mechanism used for the arm adjustments. However, the seat back didn’t have enough tension in it for my tastes. The chair back would recline too easily with just minor pressure. It also didn’t have any upper back support whatsoever.

This store also had an Aeron, and I thought I would give it another try. How could a chair that was so popular be as uncomfortable as I had found it? Well, the second try didn’t change my mind at all. However, there was another chair there by Herman Miller called the Mirra. It was definitely a unique looking chair. The back was very tall and wide, and made out of a slotted polymer. The mesh seat was very similar the the Aeron. Sitting in the Mirra was very comfortable. The back molded perfectly to my back and was supportive from the lower back all the way up to the shoulders. The Mirra wasn’t as adjustable as the Aeron, but I consider this to be a good thing. The number of controls was enough to fit it to your body, but not enough to be confusing.

After sleeping on it for a couple of nights, I decided to purchase the Mirra chair. It was a difficult decision between the Mirra and the Leap chair, but my wife really liked the Mirra, and the store was 30 minutes closer.

The store that I bought it from was only a showroom, so it had to be delivered. A few days later it arrived. I decided to get the Citron finish because I’m tired of the typical black/gray office chair. The style and color of the chair fit perfectly into my office decor. I haven’t tried the chair out for a full day yet, but the little bit that I have used it, it has been quite comfortable. The only concern that I have is that the pressure on the bottom of the legs isn’t even. The back of the seat is only mesh, but the front does have some foam to protect against the hardware underneath. The seam between the two seat materials sat right across the point on my legs where I had previously had some leg pain. I’ll hold off any real judgments on the chair until I get more time in it. I’ll let you know my final evaluation at that time.

Posted by Kevin D Smith @ 9:10 am on July 8th 2007

Backups - The Next Level

After my recent scare with my computer, I decided that there are still some types of events that my backup scenario won’t cover. All of my backups are located in one location: my home. If, God forbid, my computer equipment was stolen or destroyed in some type of catastrophe, I would still lose everything. That lead me to start looking for off-site backups. While I have heard of people burning DVDs and keeping them in a remote location, or cycling through external hard disks, those sound like plans that I would give up on because they just aren’t convenient.

Another option which doesn’t require so much manual labor is online backup services. Currently, I’m trying out Mozy. Mozy supports the Mac, gives you a 2GB trial service, and unlimited storage for only $5/month. That seems like a pretty good deal. Uploading huge amounts of data over an asynchronous broadband connection isn’t as fast as I’d like, but I’m hoping that after the initial backup the subsequent partial backups won’t take long. I’ll let you know how it works out after a few weeks.

Posted by Kevin D Smith @ 10:39 pm on July 6th 2007

FileMerge and CVS

I’ve been working on improving my workflow in programming lately. This is mainly due to the fact that I now work from home. Working from home poses some new problems since I don’t have a 1Gb connection to my network resources anymore. In the process of rethinking my processes, I decided to play around with FileMerge, one of Apple’s developer tools. FileMerge enables you to visually see the difference between two files and interactively merge them into one final form. This is a very common operation when using CVS and you have a conflict with a push from another developer, or you just want to see the differences between two file revisions. Because I use it in conjunction with CVS so much, I thought I’d add some CVS features to FileMerge.

The result of this work is cvs-opendiff. It’s called cvs-opendiff because Apple supplies a utility called opendiff which invokes FileMerge from the command-line, and cvs-opendiff invokes this command along with various CVS commands to do its work. The feature list for cvs-opendiff is shown below.

  • Compares two files like diff
  • Compares the current working file with the current revision in CVS
  • Compares two file revisions or dates
  • Continues running until FileMerge is exited, or the window containing the file comparison is closed

This last feature is the key feature since the opendiff command exits as soon as it finished invoking FileMerge. This behavior is often undesirable when merging files especially when the merge is invoked by a third tool that expects this behavior.

I’d love to hear your comments and suggestions for cvs-opendiff. I’m planning on starting to work with subversion soon, so I imagine I’ll be updating it to work with that eventually.

Posted by Kevin D Smith @ 10:58 pm on July 5th 2007

Fireworks Extravaganza

This was our first Independence Day in Colorado, and it was a memorable one. We went to the free Longmont Symphony concert in Thompson Park. There were a few opening acts featuring local talent, and a best picnic competition. Altogether, very nice. They ended the concert with the traditional 1812 Overture complete with canon fire. I have to say that I was very impressed with the whole event. It was simple and non-commercial.

While at the Longmont celebration, we heard about a great spot to watch fireworks in Boulder. You can drive up to the NCAR Mesa Lab and sit on the side of the mountain to watch the fireworks. Not only does this give you a nice view of the Boulder fireworks, but you can also see the fireworks from the surrounding towns (Longmont, Louisville, Lyons, Broomfield, Loveland, and probably more) off in the distance. It was quite a site to see so many towns setting off fireworks at the same time. If you’re ever in the Bolder, CO area on Independence Day, I highly recommend trying this.

Posted by Kevin D Smith @ 4:21 am on June 29th 2007

Back From the Dead in 60 Minutes or Less

This article could have also been titled, “Bootable Mirrored Backups are a Computer’s Best Friend.” I avoided a small catastrophe today thanks to a bootable mirrored backup created by SuperDuper! Believe it or not, my MacBook crashed (I think due to MacFUSE). In the few times that it has crashed in the past, it usually just takes a reboot to bring the machine back to life. I wasn’t so lucky this time.

When the machine rebooted, I was not greeted with the usual login screen. All I saw was a blank blue screen (not the Blue Screen of Death Windows users are familiar with, but just as ominous). Every few seconds it would flicker as if something was trying to restart. This was not good news. I tried booting into single user mode to see if running fsck on the disk would help, but it was no use. There was something corrupted in a system file that was causing the login screen (and just about everything else in the system) to crash while launching. Luckily, a few months ago I had started a fairly rigorous backup routine.

Every Monday night, I use SuperDuper! to mirror my MacBook’s hard disk. The key to this is that this is a bootable backup. In addition to the mirror, I also do incremental backups of my user files using Apple’s Backup available as part of .Mac. I rebooted the MacBook while holding down the Option key. This allows you to select which drive you want to boot from. I chose my bootable mirror, and it came up just fine. Once I logged in, I was able to copy the System folder from my mirrored backup to the hard drive in my MacBook using the ditto command. At this point, the only thing left to do was restart the MacBook from the internal disk and hope for the best. Lo and behold, it worked perfectly. My machine booted up beautifully, and I was back in business in under an hour.

Please let this be a lesson to you. Always make sure that you have a good backup plan that includes a bootable mirror. If I had only done backups of user files, it would have taken hours to reinstall the operating system, updates, then restore my files.

Posted by Kevin D Smith @ 3:44 am on June 22nd 2007

Construction Ahead

I’m in Wisconsin now for a user group meeting where I am giving a couple of talks about ODS. Anyone that knows me at all knows that bad things always happen to me when I travel: delayed flights, cancelled flights, guaranteed hotel rooms not being available when I get there, etc. If it doesn’t happen to me on the way to my destination, it gets me on the way back. I didn’t figure that this trip to Wisconsin would be any different.

The line at the airline I was at was so long that it actually went through the door to the outside. I made it through the line in about 45 minutes, which was better than I expected. Fortunately, I got through security rather quickly so I made my flight pretty easily. Once I got to Milwaukee, I had a rental car waiting for me. I decided to splurge for the Garmin GPS navigation system since I heard rumors about heavy construction in the area. Boy, am I glad I did. The directions that Google Maps printed ended up being useless because the main exit that I needed was closed. However, the Garmin navigation system easily navigated me around the construction. Absolutely, brilliant!

I got to my hotel for another bit of drama. As I approached the front door to the hotel, I noticed an ambulance right outside the door. Apparently, an elderly woman had fallen on the front steps and she was still laying there. She was conscious, but they had her strapped to a backboard.

While it wasn’t uneventful, my trip here went fairly well. I guess that means I’m in for trouble on the way home.

« Previous PageNext Page »