Wednesday, December 17, 2008

December 17, 1777

One of my favorite places on the Internet is the This Day in History page at the History.com website. It used to be referred to as the History Channel website because it was supported by the television network of the same name. Today's entry made me stop and think. One of the events they highlighted today was that on this day in 1777, France recognized the United States of America as an independent nation. If this hadn't happened, you have to wonder if we would have won our independence from England.

Of course, our winning our independence depended on a number of things. For one thing, the open support from the French depended on our being able to convince them that we had a chance of winning. The huge victory at Saratoga in October of that year allowed that. Also, the fact that Benjamin Franklin was our "ambassador" helped a lot. He captivated the French with his knowledge and his charm. He was able to convince the important and powerful people in the French court that their helping us was a way to get back at the British for France's defeat and losing its North American territories in the Seven Year's War.

It troubles me that some "super patriots" in our present day are often willing to complain about France when they disagree with us and to put down the French as when they insisted on renaming French Fries to Freedom Fries. Yet they are willing to look back at the American Revolution for guidance in how we should be running our country now. But they forget about the help the French gave the Founding Fathers during the Revolution. We wouldn't have won our freedom without the sacrifice and dedication of the Founding Fathers but we also may not have won our freedom without the help of the French.

Friday, December 12, 2008

Working at home

Actually, I should title this, "Working from home". I've had a real awakening. I've had a desktop computer at home since I built my first one from a HeathKit (PC compatible with an Intel 8088 processor) in the 80's. I could log in to the Unix computer at our office at the US Geological Survey and get some work done after hours or on week-ends. I didn't do it a lot but when something needed to be done or I had a sudden thought about a problem I was working on, it was nice to have the flexibility to do that. When I came to my present job, I couldn't do that but I could still bring work home (on disk or by e-mailing it) but it wasn't as convenient. For years, though, our network administrator has set up a Virtual Private Network so that we could log in from home and use the company network. I haven't had a high powered computer at home for a while, though, and didn't think I could ever do that. But recently, I got a new, fast computer with plenty of memory, a quad-core processor, a large screen and plenty of disk space. So, I was ready to install the VPN client and get to work!

When I tried to install the software, though, I got a rude awakening. My new computer was too advanced. The software couldn't run on my 64-bit operating system (Windows Vista 64 bit - it's not as bad as I'd been led to believe). So, what to do now? Was I reduced to bringing home work on my thumb drive or e-mailing it back and forth?

Well, the network administrators had an idea. They asked me to try Log Me In or as it is usually "spelled" LogMeIn, (my first thought was that it looked like a Chinese noodle dish). I heard about things like this where you can access your computer through a Web browser as if you are at your desk. But I didn't think it would work very well. Boy was I wrong. It's really great. It is literally like you're sitting at your desk at work. There is a little delay as you type or click the mouse but, for the most part, everything just works. I highly recommend this. There is nothing fancy to set up and you don't need to have a high powered computer to use it. I do recommend having at least as large a screen at home as you have on the work computer, though. My screen at home is a 24" wide screen monitor while my screen at work is "only" a 22" wide screen monitor.

But everything just works. I didn't have to worry about connecting to the network. I didn't have to worry about setting up a link to our source control system (we use Subversion). I didn't have to worry about installing the compilers (we mostly program in Java and use IntelliJ but I also use CodeGear's C++ Builder and Delphi) or programming utilities we use like installer makers (we use Inno Setup for Windows applications). Even small things like screen capture and hex editors are already set up. It's amazing how many programs and files you use that make working easier or more efficient that you don't think about needing to be installed on a new computer.

Everything was already set up on my computer at work. I have access to everything from my old familiar Web browser bookmarks to our network as if I was sitting at my desk. Our company doesn't encourage us to work extra hours and I don't plan on abandoning my family to put in more hours at work. What this does is to give me the flexibility to work on something critical or to work on something as I get an inspiration. It also allows me to stay home when I'm feeling just a little sick. Normally, I'd force myself to go in. Now, I can still get work done but not infect everyone else at work.

Wednesday, December 03, 2008

The Conjunction of the Moon, Venus and Jupiter


I see lots of pictures around the web of the Moon, Venus and Jupiter when they were recently near each other in the sky. So, I thought, "Why not add my pictures to the mix?" I don't know how it looked on Sunday, November 30, 2008 because it was cloudy here but by Monday, December 1, we had clear skies. I ran out of my office to snap a few pictures just in case the clouds rolled in before I could get home and get my tripod. So, the first picture is a far view of the three object over our office. I found a ladder to rest on but it was not stable and none of my close shots were any good. Look above and to the left of the peak on the front of our office. If you double-click the picture, it should show up full scale.

When I got home, I attached the tripod to my camera but there was a lot of light from cars on the road and the church on our street. Also, we're closer to town and the light from the businesses there drowned out the light a bit. But on the second picture, which is obviously the closer of the two, you can make out the irregularities of the sunlight on the Moon due to the mountains and craters on the moon. The crescent Moon is obvious in the upper left. Near the bottom is Venus and on the right about half-way up is Jupiter. The three brightest objects in the night sky all together as they won't be again (at night) until about 2052. Here's hoping we're all around to see it again!

Tuesday, December 02, 2008

Writing software and building a railroad

There are lots of analogies for writing software. Some people compare it to architecture (is Art Vandelay writing programs on the side?) and others compare it to bridge building. I'm going to compare it to building a railroad in a remote, harsh environment. What brought this to mind is that I've been reading a book by David McCullough called Brave Companions. It is a set of 17 essays on people (and some places) you may not be familiar with but who are important in history. One of the stories is about the building of the railroad across the Isthmus of Panama. As Mr. McCullough develops the story of how difficult a project it was, I started to see parallels between what the builders faced and how a software project is run. Not that we have to deal with danger, disease or hard physical labor but the methods of planning and executing the plan are similar.

First off, there was no support system in Panama for the men (construction workers and engineers) and the machinery (no supplies or repair facilities) so before they could even begin, they had to set up a support base. People had to eat and equipment needed to be sheltered from the elements. Managers like to talk about "building up the infrastructure" and engineers like to talk about building up the "support network" but it's all the same idea - you end up spending as much (if not more) time making things to support the work as you do spending time doing the work itself. In a lot of engineering projects this involves designing a testing system so you know what you're building will work correctly or safely.

Another similarity I noticed was their need to build the railroad so they could build the railroad. This sounds silly but what I mean here is that they used the railroad itself to transport equipment and men to the work area. This involved quickly building a not-ready-for-prime-time track into the wilderness to get rails, ties, ballast (the stones the track rests on), spikes and men that was just good enough to allow a locomotive and cars to run as far into the jungle as possible. Then, in parallel, they would go back and improve the track to bring it up to the level of what the railroad needed to be to operate commercially. We do similar things in our programming. We often write ugly, inefficient code just to get something running so we can test it and to enable us to write other code. Then we go back and make the code more efficient. We add more error checking and handle problems better. We make the user interface look nicer and make it easier to use. One fellow engineer used to joke that when you used the early versions of our software and firmware, it wouldn't run correctly unless you wanted it to work. For example, you had to know that only certain things would work or that certain values had to be entered that would work. Then we would go back and make it more robust.

They finally finished the railroad and it worked well for a long time. It was the most profitable railroad in the world for a long time. They could charge whatever they wanted because there was no competition. Another analogy between the railroad and a software program is the need for maintenance. You might think that once a program is written, it runs forever but that isn't true. The underlying operating system changes. The data the program works with changes. And the people who use the program think of new things they would like to do with the program. A good program is built so that it can be upgraded. Here is an interesting link about the Panama Railroad.

[Updated, Dec 3, 2008: It turns out that one of my favorite blogs, Coding Horror (it's in my list of "Other Blogs"), has a post about variousg analogies used to describe writing software (or Software Engineering as some people say). It starts by listing some of the other analogies and then adds another, programmers as farmers.]

Tuesday, November 18, 2008

I see where I am wrong

Once again, I've let my blog go too long without an entry. But I'm starting to see what I'm doing wrong. One thing I found out a while ago was that I should never say what my next entry will be about. This would be fine for a real writer who can write on demand. But I'm a poor writer who needs to think about things too long in order to write about them. Realizing this mistake doesn't keep me from making it. I will try to just write what I want to as often as I can. I will try not to limit myself by saying beforehand what I'm going to write about next.

Today I realized another problem - I'm trying to write great, profound pieces each time I write. Again, that would be fine for a good writer but it doesn't work for me. I need to take a cue from my wife's blog and write more often about every day things. She has an entertaining blog and sometimes it is really profound. But she doesn't try to make every entry an opinion piece worthy of The Atlantic. It is nice to be able to look back at her blog and be reminded about something we did. It also helps us remember when we did certain things.

So, paraphrasing something we used to say in the 70's, this is the first blog entry of the rest of my life.

Wednesday, November 05, 2008

My idea to increase voting rates

Well, this election is over and we voted in very high numbers. Some say it was the highest voter turnout in 40 years and others say it was the highest percentage in 100 years. But this was an especially compelling election with big problems to fix and with a big backlash against a very unpopular President. How do we keep these numbers up?

As I was watching the election coverage last night, I thought about how we divide up the electoral votes for each state and how we divide up the number of representatives each state can send to the House of Representatives. They are both based on the relative populations of the states. That's why the Census is very important that we run every ten years. Each state goes to great lengths to make sure all of its people are counted. But I was thinking that, even with the great turnout we had in this election (about 64% according to some), that means we are dividing up our representation by including 36% of the people who don't even vote. And that's on a record breaking year! If they don't care enough to vote, why should they count in deciding representation? Just because someone is sitting there taking up space shouldn't be a reason to give one state more representation than another. How do we get more people to vote?

My idea is to divide up electoral votes and Representatives to the House based on the number of people that voted in the last national election. Then it would be in everyone's interest to go out and vote. The states would do a much better job of encouraging people to vote and to make voting an easier and more pleasant experience. Another advantage to this would be that the representation would be recalculated more often and be closer to the real number. Right now we're working from data that was calculated during the last census in 2000.

One problem with this would be voting fraud. It would be much more important to guard against this and it would be tougher because the state government might be tempted to encourage it or at least not try as hard to stop it. There would have to be better ways to prevent voting fraud. But I think that is a problem that could be overcome. My idea is kind of like when Major League Baseball decided to make the All Star Game mean something by giving the league that won the game the home field advantage for the World Series. Now the players have an additional reason for playing hard in the game.

Anyway - congratulations Mr. Obama. I think you make a fine President and I will be praying for you and your cabinet.

Tuesday, November 04, 2008

A quick story

Yes, yes yes - I know- I've been lazy about my blog. I've got some great stories to tell but there just isn't time. But I just reminded myself of a story that I have to write down before I forget it again.

One of my (minor) responsibilities at work is to handle the installer for our software product for the Apple Macintosh. Whenever we release a new version, I have to make sure we can install it on OS X - the operating system for the Macs. One day, we were having trouble with the installer on a certain version of OS X and we had one test machine with that version. I hadn't used that computer before so I had to create an account for myself. I noticed that two of the other guys in our group already had accounts on this machine and they had small pictures by their name in the start-up screen to help identify their accounts. I liked that and thought I'd add a picture to my account when I was ready.

I went through the set-up procedure and when it was done, it offered a picture for me to use for my account. It was the picture of a not very nice looking old man who seemed to be in a bad mood. "Why in the world would they offer me that picture?", I fumed. Then it dawned on me - this nice, new Mac monitor had a built-in camera and, while I was setting up the new account, it had taken a picture of me setting up the account! It offered my picture as the one to identify the new account.

I shifted from admiration for Apple's software for setting up a new account to disgust for what I've come to look like in unguarded moments. When did I become an old man?