Thursday, November 30, 2006


Computer Case Transplant

In my quest to make my Windows PC quieter, I decided to try a new case. A Fry's just opened a mile away from me, and they had the Antec Solo "quiet mini-tower case" on sale, so I figured I'd give it a try.

(Unfortunately, I lost my receipt, so I couldn't apply for the rebate by the deadline, so I ended up paying full price. Oh, well...)

Removing all the components from my old case and installing them in the new case should have only taken a couple of hours, but it turned into a three-evening project for me. The first evening, I got the motherboard installed in the new case, but was so frustrated after messing with all those little screws and poor lighting on my living-room floor that I decided to call it a night. On Night Two, I didn't touch it. So, it wasn't until Night Three that I moved all the drives to the new case and got all the wires plugged in.

I spent a very long time getting the floppy drive aligned flush with the front of the case. The whole time, I kept asking myself when the last time was that I used a floppy. I may never, ever need it, but since this is the only floppy drive I own, I figured I should keep it functional. (If I had a reel-to-reel tape drive, I'd be keeping that functional too.)

The case is pretty nice. Full reviews are easily findable for those who are interested, so I won't go into any detail here. My impressions are as generally positive as those of the reviewers I read.

The result is a noticeably quieter PC, but it's still not as quiet as I'd like. The Solo seems to have good sound-proofing on its sides, but the back of the case is just a thin layer of metal with a lot of vents, so there's still a lot of sound getting out. There is a high-pitched whine that really bugs me. I think the next step is to try replacing the CPU fan. (Fry's has those too.)

The only outstanding issue is that the power LED on the front doesn't light. The disk I/O light is fine, and all the front-panel switches work. I'm pretty sure I have the power LED cable plugged in to the right place, and it worked on the old case. Maybe I have a bad LED or a bad wire. I can certainly live without the light, but I may spend some time troubleshooting this.

After replacing the case, I think the only original equipment in this PC (which was my first Windows machine) is the CD-ROM drive and a few cables and screws. Is this really the same PC? As far as Windows OEM licensing goes, my answer is "Yes."

Wednesday, November 29, 2006


Reviews of My New Haircut

"Don't let him [the barber] cut it that short again."

"What the hell happened?"

"You look like that guy in Forrest Gump. Say something about shrimp."

"You don't look like Kris anymore. I'm going to call you 'Sonic the Hedgehog.'"

"You need some thick glasses, with masking tape around the bridge."

"I wanted to do that myself, buy my wife wouldn't let me."

"I like it. It gives you a more youthful look."

(I'm going to cling to that last one.)


Staying the Course

A couple of weeks ago, I wrote about an opportunity for a high-pay high-responsibility job. I decided to pass.

It was really a pretty easy decision, once I stopped asking myself "What would be the smart thing to do?" and just asked myself "What do I want to do?" I do want a job like that someday, but I'm not ready to take one now. If I really deserve such an opportunity, I'll get another one.

I had a few sleepless nights over the decision. My fear was that my programming career has already "peaked," but that I've been reluctant to recognize that fact. I've dismissed that fear. After 25 years of programming, I still haven't written a program I'm really proud of, so I must still be on the way up.

Besides, I like being the president, director, and sole shareholder of a corporation. I'd have to give all that up if I took a real job.

Sunday, November 26, 2006


The Best Version of Microsoft Office

I needed to create an Excel spreadsheet while sitting at my desktop machine, and was surprised to discover that I didn't have Microsoft Office installed on it. I installed a new hard drive and reinstalled all my software on this machine some time last year, but I overlooked Office. I usually run Office on my Mac, or on laptops I get from work, so I never noticed that it was missing here.

I dug out my box of old CD-ROMs and found my Office 97 disc. That's right: Office 97. It's ten years old, but I prefer it to any of the "upgrades" that Microsoft has provided in the past decade. It does everything I need, and doesn't confuse me with a lot of options I don't need or with Microsoft's nonsensical user-interface improvements.

Microsoft's UI gurus are always bragging about the zillions of dollars they spend on research to improve their interfaces and make them easier to use. However, every description of the process I've read seems to come down to this:

  1. Put non-expert users in front of a computer.
  2. Ask the users to perform some task.
  3. Watch what the users do to try to figure out how to do the task.
  4. Re-design the software so that the untrained users' random mouse clicks and menu selections would have done what was desired.

Maybe I'm just an old fuddy-duddy, but I remember the good old days when user interface designers would design an interface that made sense, and then explain the principles in a manual. I like things that have an underlying logic to them. But Microsoft's approach is to just watch users stumble around in the dark, and arrange things to minimize the amount of tripping.

Office 97 fits on one CD. That's right: one CD! No need for a modern stack of CDs or a DVD-ROM to hold it all. The entire installation process takes less than a minute.

Of course, I also downloaded the service packs for Office 97. I was worried that they may not be available any more, but MS still provides them. The last update was in 1999, but that's okay with me.

Now I just need to figure out how to kill Clippy.

Monday, November 20, 2006


One Year as a Pilot

I missed the opportunity to write myself a self-congratulatory post on November 18, which marked the one-year anniversary of my private pilot checkride. So I'll do it today.

Since the checkride, I've logged 20 flights, for a total of 36.2 hours. The first nine of those flights were during the first two months after the checkride; since then, they have become rarer. I try to fly at least once a month to stay sharp, but due to work, weather, and other circumstances, I've gone as long as eight weeks between flights.

My typical "practice flight" is to fly to an airport that is just over 50 nautical miles away, do a few touch-and-goes there, and then if there is enough time remaining, I'll spend some time in the practice area doing stalls and steep turns before returning home. Frankly, that's getting pretty boring.

I've been checked out in the school's glass-cockpit Archer, but I haven't flown it since. The instructors have suggested that I get checked out in the school's Arrow, which would get me my complex airplane endorsement, but I haven't gotten around to that yet.

I've only given one passenger a ride so far. My Mom was brave enough to fly with me a few days after my checkride. Since then, all flights have been solo, except for the Archer checkout. One of my co-workers has taken up photography and wants to fly with me, but I can't get the weight-and-balance to work out. I need a bigger plane, or smaller friends.

I've only taken one "real trip," meaning that I actually had something to do at the other end of the flight. A friend of mine was spending Christmas in Anniston, AL with his family, so I flew over there to have lunch and spend a few hours with him. I almost had an opportunity to visit someone over in Charlotte, NC, but that didn't work out. (Women . . .)

For a while, I was studying for the written test for an Instrument Rating, but I've concluded that I'm not going to pursue that. I can barely find time for VFR flights—when will I find time for instrument lessons?

If I do pursue more pilot training, it will probably be in a helicopter. Being a private helicopter pilot is even less practical than being a private airplane pilot, but boy, I sure would feel cool.

I don't have any interesting flying anecdotes to tell. I think that's a good thing. Most of the anecdotes I've heard include sentences like "So there I was, with a total electrical failure, zero visibility, low fuel, and my kids sitting in the back seat." I'm happy to keep my flying uninteresting.

Sunday, November 19, 2006


My TV Schedule

My mother is always shocked to discover that I'm not watching "Dancing with the Stars," "Survivor," "Deal or No Deal," or other popular shows that she thinks everybody watches. "What do you watch?" she asks, as if I'm from another planet.

I wish I could say that I have a wide variety of other interests that prevent me from wasting time watching television. Unfortunately, that't not true. I watch a lot of TV, and I wonder why I never have time to do anything else.

Anyway, here are the shows I'm watching regularly, in no particular order:

Aside from those regularly scheduled programs, I also watch a lot of old movies on Turner Classic Movies (TCM). Basically, every week, I use my TiVo to go through the upcoming week's schedule, and I record every movie with a three-star-or-better rating which I have not already seen and which is not a musical. I don't watch most of what I record, but I've always got something available.

I also have a Netflix account, so I watch two or three DVDs a week. About half of those DVDs are movies; the other half are classic TV shows. Upcoming DVDs in my queue are Hammer horror films and Babylon 5 episodes.

Any time HBO replays episodes of "Deadwood," I'm there.

I'd estimate I watch about 30 hours of TV per week. That means the real number is probably 40-50. Yes, I know: I need to get a life.

Saturday, November 18, 2006


Really, Really Short Hair

My last haircut was a bit of a shock at first, but I started to like it after a few days, and it got good reviews from other people. So, back in my home town with my regular barber, I asked for another short hair cut.

My Dad had told my barber the story of my haircut a few weeks ago, and the barber told him to let me know that he'd be glad to "fix it" whenever it grew back out. However, today the barber told me he had often thought about suggesting a shorter cut. My hair is very fine and straight, so it tends to stand on end as if I'm touching a Van de Graaff generator. I have to use gel or other products to keep it from doing that. Cutting it really short is a simpler solution to the problem.

The NYC stylist had left the top and front of my hair at its normal length, so there was still something there to part and style a bit. My barber suggested a uniform short length. That made sense to me. What the hell, it's only hair.

So my barber took out his clippers and sheared me.

I haven't decided whether I like the result. While my last haircut was basically a really short version of the cut I've had for the past 20 years, the new cut is a more radical change. The shape and silhouette of my head is different. I joked about looking like a Marine after my last haircut—now I really do look like a Marine.

One of my mannerisms is to sweep my hand through my hair. Now that there is nothing to sweep, I feel silly every time I do it. I hope I can break that habit.

A benefit of the new cut is that my head feels really nice. The short fine hair is like having a fur coat on top of my head. I hope women will have uncontrollable urges to run their fingers through my hair.

The other benefits are that I will no longer need to comb my hair, or apply gel, or do anything else with it. I probably won't even need to shampoo it more than a couple of times a week.

My Mom doesn't like it. I'll have to solicit some more opinions. But as before, there will be no pictures on this site.



The two biggest complaints I usually have when I start working with a new codebase are (a) functions and methods that are too long, and (b) lack of abstractions. The two complaints are related: overly long functions usually come about because the writer doesn't use any abstractions. Why don't programmers want to use abstractions?

Some programmers believe that code with a lot of "layers of abstraction" will be less efficient than code "written for the bare metal." This belief is often false. For an explanation of how code with good abstractions can be more efficient than low-level bit-banging code, see Bill Venners's interview with Bjarne Stroustrup. Stroustrup's FAQ debunks some other myths about the relationships between C++'s higher-level features and efficiency. If you are one of those people who thinks that using a C-style array is better than using a std::vector, std::list, or std::map, please read those articles.

Some programmers just don't know how to use abstractions. They think in terms of moving bytes around in memory; they don't think in higher-levels, and their code reflects that thinking. It's difficult to change the way people think, but there are some techniques one can use to recognize opportunities for abstraction.

A rule that works well for me is "Every time you make a design decision, express it in code as an abstraction." For example, if you decide you need a list of employee ID's in your application, and the employee IDs will each fit in a 32-bit unsigned integer type, don't just sprinkle uses of std::list<unsigned int> everywhere. Instead, put these definitions in your code:

    typedef unsigned int EmployeeID;
    typedef std::list<EmployeeID> EmployeeIDList;

Many programmers think that doing something like this just provides a convenient shorthand for writing code that uses the list, and it makes it easy to change the representation later. But convenience is not the only benefit. Here, we have documented in code the decisions to represent an employee ID as an unsigned int and to use a std::list as a container for them.

All programmers make dozens or hundreds of design decisions every day. Whenever you make one, try to make the code reflect your thinking, rather than just writing a comment (or writing nothing at all). Often, this will lead to definition of a new class, or a new function, or some other abstraction that makes the intent obvious.

Another good rule is "Keep functions to ten lines or less." I am truly amazed when I find functions that are hundreds (or thousands) of lines long. I'm amazed because the people who write them must have god-like intelligence if they can actually understand what they have written. I can't understand such functions until I start breaking them apart into bite-sized chunks.

There are exceptions to the "ten lines or less" rule, but they are rare. Any time somebody has to hit Page Up or Page Down to try to comprehend what a function does, the writer of that function has screwed up.

A related rule is "Don't indent more than two levels in a function." For example, when I see this:

    for (int i = 0; i < NUM_COLS; ++i) {
        for (int j = 0; j < NUM_ROWS; ++j) {
            if (a[i][j] < 0) {
                if (IsOdd(a[i][j])) {
                    a[i][j] = -(a[i][j]);

I'd like to rewrite it like this:

    for (int i = 0; i < NUM_COLS; ++i) {

And then I'd add a ProcessColumn function, which in turn would call a ProcessElement function to handle the innermost operation.

Some people would say this is making things too complicated, because you'll end up with more functions and more lines of code, but I think the result is a lot easier to understand, and a lot easier to verify as correct. That's what abstractions do for you.

Thursday, November 16, 2006



I like the self-employed contract programmer lifestyle, but two months into that new career, I'm being tempted with a permanent position. It's a high-paying management job, with lots of authority.

I hate opportunities like this.

I hate them because, deep down, I know I need to grow up and accept a job like this someday. I keep getting such offers, and I keep turning them down. I'm not ready to take one yet, but I wonder how many times I can say "No" before people stop asking.

I'm not dead-set against becoming a manager. I like the idea of having more control over what goes on around me and sharing my "wisdom" with a larger group of people. The problem is that I think I still have a lot to learn about being a computer programmer, and I don't want to abandon my craft when I feel I'm just starting to get good at it.

So why not just keep being a programmer? My fear is that I'll become one of those programmers in their forties or fifties who, despite impressive skill and experience, can't find work. Too many employers assume that middle-aged programmers haven't learned anything since 1985, and that their decades of experience are not worth the high pay rates they expect. Developing managerial skills and experience now would provide some insurance against such an end to my career.

I've been lucky to work with people who do place high value on skill and experience. But I know that lucky is the important factor. There are a lot of people who are just as smart and hard-working as I am, but who have not found their niche. My niche could disappear at any time.

Taking a job like this is the Smart Thing to do. If I had a family to take care of, it would be a no-brainer. As a single guy with no responsibilities except to himself, however, I want to do what I want to do, even if it does put my future at risk.

On the other hand, I know that staying within the bounds of known-competence is preventing me from experiencing other things. Maybe I can be a good manager. If not, then I'll just accept the generous severance package and be back where I started.

I'm going to be forty in a couple of months. Is it time for me to grow up?

Wednesday, November 08, 2006


Update on the NYC Building Plane Crash

Here's the NTSB's update on the Cirrus crash in New York:

I've seen headlines in newspapers that say the problem was that the plane was blown into the building by wind. The wind was a factor, but the NTSB's press release indicates that even if there had been no wind, the plane might have had trouble making the turn at the speed it was flying.

Tuesday, November 07, 2006


Second Contracting Gig

I finished my first gig last Friday. I hope I did more good than harm.

Monday I started my second gig. I am doing work for my former employer—the employer I left two months ago.

Why am I going back to them? Won't I hate working for them as much as I did before? I think it will work out. I'll be making more money, working whatever hours I want, often at home, and being a contractor means I can say "No" to assignments easier than I could before. I'll get to work with people I know I like to work with, and I'll have more freedom while doing it.

In spite of the fact that I just left two months ago, I still had to go through a background check, drug screen, etc. After two days, I still don't have access to the company network, because they are still waiting for the background check to be completed. This is frustrating, because I've been asking for a few weeks whether there was any more paperwork to do, and they didn't tell me anything until last week.

The office is quieter than it used to be. The company has had layoffs during the past couple of weeks, so there are a lot of empty cubicles, and the remaining employees aren't talking much. Maybe after time passes, things will get lively again.

I've been assigned to lead the re-design and re-implementation of some communications infrastructure software. The guys who have been handling its maintenance tell me "It's really horrible." That sounds very familiar.

Saturday, November 04, 2006


Toshiba Tecra M7 Tablet PC

I guess I'm getting jaded. After buying a new laptop, I just left it in the box unopened for several hours before forcing myself to take the time to set it up. I just can't get excited about Windows laptops anymore. I've gone through half a dozen of them in the past ten years. They are no longer "new toys;" they are just tools that I know will be sources of frustration.

The main reasons I chose the Tecra M7 over other available models were the following:

As I bought a MacBook just a couple of months ago, it is unavoidable that I am going to compare the Tecra to that. Please don't dismiss me as just another Apple fanboy: I've got these two machines side by side on my coffee table, and I use them both each day, so to not note the differences would be silly.


I bought the Tecra from ToshibaDirect. It arrived well-packed with a minimal amount of excess box volume, styrofoam, plastic bags, and other stuff. Unfortunately, it also did not have a printed manual. It has a "Quick Tour" card that explains how to plug it in to AC power and tells you what all the ports are. The only other printed documentation is an "Instruction Manual for Safety and Comfort" which tells you how to avoid electrocution, burns, and repetitive stress injuries. Toshiba provides a PDF user's guide, but obviously you can't read that unless you've already got the PC up and mostly running.

Turning it on for the first time brings up the standard Windows new installation setup wizard, asking for a user name, machine name, etc. One annoying aspect to this was that on onscreen keyboard popped up, presumably so that somebody can answer all the questions with a pen, without needing the keyboard. Unfortunately, the onscreen keyboard is pretty big, so you have to keep moving the keyboard around to see the text entry fields underneath. I couldn't find any way to close or hide the onscreen keyboard.

It was amusing that after telling me it couldn't connect to a network, the setup program then asked whether I wanted to register online with Microsoft and Toshiba.

I had no problems connecting to my wireless network after entering the proper WEP key (which actually took me about five minutes, using the pen). I used Windows Update and Microsoft Update to get all the current patches.

I bought Microsoft Office Small Business Edition 2003 with this notebook. When I first started Word, it asked for the 25-digit product key. It's annoying that after plunking down $300 to get this preinstalled, they can't take care of the product key for you. Even more annoying was the fact that I had to go find a magnifying glass to read the product key on the disk that came with the system.

It also includes Microsoft OneNote, which is some sort of "put all your stuff into this one application" thing designed for tablets. It has a separate product key, which is equally microscopic. Microsoft, if you are going to insist on making us enter these things, could you please (a) use a bigger font, and (b) find a way to make the characters 'B' and '8' more distinct?

Like most PCs, it comes with a lot of pre-installed vendor-specific utilities, trial software, and links to Toshiba's online store. If there are any PC manufacturers who don't do that, please tell me about them so that I can start buying their products.


The display has the grainy appearance that all tablets have. Otherwise, I have no complaints about it. There is also an analog video output port, allowing you to use an external monitor as either a secondary display or in place of the built-in display.

The trackpad seems small, especially compared with the MacBook's. The surface feels rougher than other trackpads, and seems to be less sensitive. The left and right buttons seem small as well; I often miss them when I try to click them.

The keyboard feels pretty good. The keys feel more solid than the average laptop keyboard. The only problem is that the tilde/backquote key is in a non-standard place. This won't bother most people, as tilde and backquote are not common characters in typical English writing, but if you use UNIX-like systems a lot, it's a significant annoyance.

The fingerprint reader is supposed to let you log-in without typing a password, which would theoretically save time. However, I generally have to run my finger past the reader half a dozen times before I get a successful read, so using the keyboard to type in my password is usually faster. Maybe after some more practice, I'll get the hang of the fingerprint reader.

I upgraded the RAM from 1GB to 2GB myself (I saved about 50 bucks by buying the second gigabyte at the local Fry's). The procedure wasn't difficult, but it's more difficult than simply opening a panel in back—you have to remove the keyboard to access the memory slots.

I bought the docking station/port replicator. It seems pretty expensive for what it does, but I think the same is true of other notebook manufacturers. It has both analog and digital video outputs, which briefly gave me hope that I might be able to set up a triple-monitor display, but as far as I can tell, you still only have the option of built-in monitor plus one external monitor. The dock is designed to hold the notebook in typical landscape layout; there was apparently no thought given to mounting it so you can dock it as a tablet in the portrait configuration.

Tecra as Tablet

I used the physical keyboard for that initial setup stuff, but once Windows proper started, I flipped the display around and tried to exclusively use the pen interface for everything. A few tutorials are provided to introduce the user to the pen techniques. I'll write a separate entry about the Tablet PC user interface. But I have a few comments about pen use with the Tecra.

First, I think the Tecra M7 is really too big to be an effective tablet. It is too heavy to comfortably hold like a clipboard. With the large screen, your hand has to travel long distances to get to the menu bar, the start menu, scroll bars, and other controls. If I wanted to get serious about using a notebook as a tablet, I think I'd go with a 13-inch screen.

I still haven't found a really comfortable position to hold the tablet in my lap while sitting on my couch or in a chair. You have to keep the screen at exactly the right angle, or it becomes difficult to see. At some angles, you can see the top of the screen but not the bottom, or vice versa. Then you have to consider the need to move your hand to any position on the screen, which means you need complete freedom of movement of your arm and shoulder. Again, a smaller screen would probably be easier to deal with.

Using the tablet at a desk is awkward. Something like a drafting table is needed to provide a good viewing right angle. Laying it flat is acceptable for taking notes during a meeting, but it is not good for reading.

The stylus that comes with the Tecra is okay. Not great, but okay. It doesn't feel very solid, and the internal pieces rattle a bit when you shake it, but it's serviceable. It has a fingertip button and an eraser.

I also bought the "reserve pen," a PDA-sized stylus that you can stow in the battery compartment and bring out if you lose the main stylus. The Toshiba manuals don't tell you anything about how to stow the reserve pen; I had to search the Internet to find out that there are little clips inside the battery compartment designed to hold the stylus. I don't think I'll become so dependent upon the stylus that losing the main stylus would be a problem, so the peace-of-mind I get from the spare may not be worth the $20 it cost.

Writing on the screen feels pretty good. The screen has some texture to it, so dragging the stylus across it feels enough like pen-on-paper that it feels natural. I even have the tendency to try to brush away rubber crumbs after using the eraser.

The Tecra has a little four-direction joystick-kinda-thingy and four other buttons next to the screen. By default, the four-direction joystick acts like the up/down/left/right cursor keys, and the other buttons do things that I find useless (changing monitor mode and Ctrl-Alt-Del, for example). The buttons are easy to accidentally press when simply holding the tablet, and the cursor keys aren't very useful when you aren't also using a keyboard. I'd prefer having just Page Up and Page Down buttons so that I can easily read documents in tablet mode. There seems to be a way to re-program the buttons for other functions, but my attempts to change the functions have failed.

The battery only lasts about three hours, give or take an hour. This means you can't use the tablet to take notes during a long day of meetings, unless there is a power outlet nearby and you don't mind having the power cable jamming itself into your right leg once in a while.

Overall Impression

In re-reading some of the above, it might sound like I really don't like this machine. That's not true. As Windows notebooks go, it's not bad. But the more I use the Tecra, the more I appreciate my MacBook.

As a tablet, I think it leaves a lot to be desired. If you really intend to take advantage of tablet functionality, I'd recommend looking for a smaller, lighter model with longer battery life.

This page is powered by Blogger. Isn't yours?