I had spent my high school years in the PC world on my IBM PCjr, but decided to head off to college with a clean slate. It was there that I had my first Macintosh experiences and eventually succumbed to teaching myself Mac programming 101. With my newfound skills, I began writing and releasing shareware, which eventually landed me my first “proper” job in New York City, baby!
After finishing high school, I moved from Toledo to Chicago to attend the University of Chicago. I was not equipped with a computer, but rather had received a dedicated word processor as a graduation gift. I decided this was probably for the best, since easy access to a computer could easily impact my studies.
Once there, however, my eyes were opened to the Macintosh world. UChicago was a heavily Mac-oriented campus at the time. Prior to this, my only experience with a Mac had been ooing and aahing at the fine DPI on the original black & white Mac Plus at the local Abacus One computer store. In the intervening years, Macs had gotten way cooler.
They now had 256 color displays standard, and looked significantly better than PCs of the era. They also had support for odd monitor sizes, like the portrait display that graced the desk of one of my dorm mates. A full page document on screen all at once!
Powering that amazing display down the hall was a Mac IIcx running at a blazing 16MHz, with 8MB (megabytes!) of RAM and an 80MB hard drive. With easy access to such great computing hardware, I was sorely tempted to try my hand at Mac programming.
However, I was there to learn physics, and decided not to get involved with programming so that I could focus on my studies. I did, however, get involved with the owner of the Mac IIcx, a lovely girl from Rochester, NY.
I stuck to my self-imposed moratorium for 2 years. I didn’t do any programming, took no computer courses, and fell deeply in love with the girl from Rochester. Since we spent a lot of time together, I ended up using her Mac for a lot of non-programming tasks: getting familiar with the internet, playing games, writing the occasional paper, etc.
Then she informed me that she was going to study in Paris for a year. I was crushed. We had been joined at the hip since the first few weeks of freshman year, and now we were going to be apart for a year. What was I going to do with myself?
It was the need to distract myself from the fact that my girlfriend was gone that led to my teaching myself Macintosh programming on her computer, which she conveniently left behind for me to care for during her year overseas.
I soon found that most Mac software was written in either Pascal or C. Since I already knew Pascal, I decided that it would be useful to learn C instead. Fortunately it wasn’t too hard to pick up after using Turbo Pascal on my PCjr and Modula-2 on the Amiga in high school.
In a nice bit of serendipity, Apple released the first version of QuickTime at the end of 1991, and I was curious to know what it could do. I soon discovered it had a built-in JPEG codec, and decided that one of my first C programs would involve displaying JPEG images on the screen.
One of JPEGView’s key innovations was that it automatically scaled images to fit your screen, rather than displaying them at 100% and forcing you to scroll around. It may seem dead obvious now, but at the time it was unheard of, mostly because scaling could be slow.
The first version of JPEGView was released in 1991 as “postcardware”. I simply asked people to send me a postcard if they liked the software. By the time I released the last version in 1995, I had received over 5,000 from all over the world.
Shortly after releasing JPEGView a strange thing happened: I was in the right place at the right time. The internet was really starting to take off. Web pages were just starting to appear. The ability to view images was quickly becoming very important, and JPEGView was there to fill the void.
Because of the automatic scaling, plus the simple, uncluttered interface (and the fact that it was effectively free), early web browsers like NCSA Mosaic adopted JPEGView as their default image viewer. If you wanted to browse the web on a Mac in the early 1990’s, you probably had a copy of JPEGView on your system somewhere.
I was starting to offer site licenses (a lot of businesses had problems with it being free software, go figure) and sell nice bound manuals to users who registered. I probably could have made some decent cash off of the endeavor, but I was honestly far happier to see it being used all over the place.
My JPEGView credentials ultimately helped me to land my first “real” job after I graduated: Lead Macintosh Programmer at Cornell University Medical College. The medical college, unlike the university proper, was located in New York City, so we packed our belongings into a U-Haul and traveled across the country.
In my spare time, I continued to work on improving JPEGView, releasing several more versions. I improved the standard Floyd-Steinberg dithering algorithm on 256-color displays to reduce odd color pixels. I also made sure that JPEGView was one of the first free utilities that shipped with a native PowerPC binary.
In 1994, I received an Apple “Cool Tools” award for my work on JPEGView: a swanky new Power Macintosh 7100. After all the time I put into developing free software, that sure was a nice vindication of my efforts, and great to see Apple explicitly supporting independent freeware and shareware authors.
In 1996, I received the MacUser Rising Star Editor’s Choice (“Eddy”) award, which is an impressive hunk of metal still sitting on my bookshelf. If I ever need a weapon... (it was Mr. Giles, in the Study, with the Eddy Award!)
I also began writing some other MacOS utilities. My second semi-well-known program was called uuUndo. Its purpose was take uuencoded emails and Usenet postings, sort them, stitch them together, and decode them into binary files. The primary use of this tool was as a companion to John Norstad’s NewsWatcher newsreader.
As an amusing a very good stress test, he and I would test our programs together by going to a popular, um, risqué binary newsgroup, selecting all the articles, and then extracting all binaries there. The command key shortcuts for those two actions were Cmd-A (select all) and Cmd-B (extract binaries). We jokingly called it the “All Bods” command sequence.
It was during this period where I also developed an unreleased Q*Bert-style game called “Phred”, which featured 3D-rendered characters hopping on an isometric collection of cubes. I developed it as far as getting to run well, and also designed a level editor, but I never felt that it was good enough for release, so now it is sadly lost forever to time.