Dave's Home Page

Dave Home Juggling Photography Woodworking Professional Blog
Home Page
Photo Album
Ellen's Page
Dave's Page
My current resume.

I have been a software engineer since long before the term software engineer was in common use. Since 1985 I have been continuously employed doing a great variety of different projects. This is probably due more to good luck than anything else. I started off as a compiler writer, then got seduced by graphics and wrote drivers for quite a few years. On the promise of a relocation to Colorado (still the second smartest thing I ever did), I took a job that supposedly was to write graphics drivers for an integrated processor for Cyrix, but as jobs do it morphed into trouble-shooting the x86 core. Some of the Cyrix (later bought by National Semiconductor) experience was with an embedded graphics engine. After a brief stint in e-commerce, I leveraged the embedded experience into a job writing firmware for Giganet.

My passion has always been writing tools to make developer's lives easier and products more robust. I am quite lucky right now the Emulex (who bought Giganet) is allowing me currently to work full time on simulation and test tools.  

The workshop is deliberately kept unheated so that winter can be reserved for recreational computing. I have done a myriad of spare time projects from things to make my life at work easier to stand alone games and graphics programs. I have been working on a Mandelbrot explorer ever since I have gotten involved with graphics. The first version was written in C on an Intergraph workstation. It evolved into a networked version that would take over my coworkers computers  (with their permission, of course) at night to work on images. When I learned C++ and MFC, a Mandelbrot and Julia Set explorer was the first thing I worked on. The infinite beauty of this mathematical curiosity keeps me coming back again and again.
I also have a lifelong fascination for words and word games. A few years back I decided it should be a fairly straightforward task to come up with a C++ class to provide and optimized dictionary search. After securing a word list, the engine took shape pretty quickly. I wrapped it with a simple application I called Word Grabber (and have looked ever since for a better name.) The first tool was a rather trite anagram tool pictured at left. Then came a number of tools to help create and solve word puzzles like the Sunday morning puzzle on NPR's Weekend Edition. I was even lucky enough to play this with Liane and Will once. And, no. I did not use the program to solve that week's puzzle.

The next use of the engine was a program to do the bookkeeping involved in solving transposition ciphers. This eventually evolved into a program capable of guessing the solution.
The last use for this engine is a full-on Scrabble playing program. Since this program has beaten me every time I have played it, I wonder why I invested all that work. And, because of the obvious copyright problems prevent its release in any form, I doubly wonder. At the very least it keeps me sharp so I can give my mom a good game whenever we get a chance to play. And I won a sixpack of beer off of a friend once who bet that it couldn't beat him three times consecutively. The contest was closer than you might imagine because he got to chose the dictionary, and he chose a very limited one. The agreement said that he could challenge any word the computer used that wasn't in his dictionary. It was close, but the program prevailed. Thanks, Eugene. The IPA was delicious!

Currently I am in the process of reworking the user interface and adding networking so I can play friends and family across the internet. Or at least I will when winter sets in.