The Story Of DeltaGraph

Nov 23, 2014

DeltaGraph is the one Macintosh application I led the development of that is still alive today, 26 years after I wrote the first line of code. It's also still the original codebase, likely heavily modified (now at version 7, my last version was 3) but never rewritten. You can still buy it today from the current owner RedRock.

I shudder to think what the source code looks like today. There are likely few commercial apps still alive today that were first written in the late 80's and never had a rewrite.

Even though the timeframe is a long time ago, it's still an interesting tale. Given the popularity of my post What Writing - And Selling - Software Was Like In The 80's, I guess one more story is in order.

We had written Trapeze which was released in January of 1987, a spreadsheet like application, which had extensive charting functions. After we sold it to a company called Access Technologies, we started a new company to just write software and our first customer was the author of Persuasion, which at the time was just a MacDraw clone. He wanted to turn it into a presentation application like Powerpoint, and like Cricket Presents which was in beta I think. He wanted built in charts and data handling (which Powerpoint didn't do) so this was our second app to do charts in. It shipped in August of 1988 at Macworld Boston.

Remember that in the late 80's Windows was not a viable platform and all new apps debuted on the Mac.

Cricket Software had been selling Cricket Graph for a while, and it owned most of the chart market. They had been approached by Microsoft who tried to buy them but were rebuffed (I heard this secondhand so I don't remember the exact details). Cricket was so focused on new software that Graph was not being heavily updated in the absence of competition.

So the new guys at Deltapoint, who had split off from Access Technologies with all the Mac products including Trapeze, sat down with us in the exhibitor tent at Boston MacWorld where Persuasion has just been released. They had the idea that it was a ripe time to attack Cricket Graph, and wanted to know what we thought about doing it. We had a lot of ideas about how to do a charting only app and we all agreed to start immediately. Deltapoint agreed to pay us by the hour and we hoped to be able to get it done in a year. We had 4 programmers and soon hired a QA person. Deltapoint would continue to sell Trapeze and their other products and hoped the revenue was enough to get the new app done.

The key idea we came up with was figuring out how to build all the charts resolution independent. Cricket Graph and most other charting applications including Microsoft's (Excel did not have built in charts yet) used Quickdraw to output the charts, which was basically just screen resolution. People in the newspaper, magazine, scientific journals, etc, industries really needed Postscript quality charts so they could print at their normal resolution and quality. The Wall Street Journal for example used a mainframe to build their charts. They would become a key supporter.

So the killer feature would be Postscript output, in addition to screen, with a fully built Postscript driver. MacOS would allow you to add Postscript comments to a picture to add some better resolution but it wasn't the same. At the time only a few apps went all the way including Pagemaker, Illustrator and Freehand. While working on the Postscript code (which I had to learn with no tools other than a printer and reams of paper) I saw that I might be able to reverse engineer Illustrator's file format, which was conveniently text and all in Postscript. This format would ultimately become PDF. Other than Freehand I don't think anyone else had done this.

When I started the UI code I asked two questions of Deltapoint (1) will this code ever be ported to Windows (2) do you want to support multiple documents open at a time. The answer to both was no. Windows was still too primitive to care about and multiple open documents was fairly uncommon.

We started to build an engine to construct arbitrary charts, store complex attributes (almost everything in Deltagraph is adjustable), and manage an army of dialog boxes.

As far as process went, we were doing what today would be called Lean. The project manager at Deltapoint and I talked every day, we sent releases continuously from Texas to California via Fedex. Each feature was put into the actual app and tested by them, giving feedback which we would then include. It was about as agile as you can get, sometimes things were simply removed and sometimes just revised repeatedly until we were all happy. Lots of features were actually in progress at the same time. We didn't even have a source code repository at the time. I think we got email finally in 1989 but I don't remember if we could even send a binary yet.

One thing we did internally was have our QA person test the entire app all day long every day; sometimes she focused on new things, but I've always liked the idea of holistic testing: it's amazing how many clunky or stupid features are discovered when you do them over and over again. It allowed us to quickly try things and still keep the whole app stable enough to test.

As I was building the output code, I realized that I needed to convert the internal chart structures into (1) Quickdraw for the screen (2) Quickdraw with embedded Postscript (3) raw Postscript (4) Illustrator and (5) EPS. I had years before read the famous Byte Magazine issue that introduced so many people to Object Oriented programming, and thought that it might be a way to make this easier.

Of course I had no OO language, C++ didn't really exist yet and all we had was plain C. I came up with a weird switch state dispatching mechanism, primitive polymorphism and inheritance. No actual objects. Today its pretty laughable, and I dread thinking it's still being used. It worked however and made supporting multiple output formats manageable. In those days you did what you had to with whatever you had!

By the end of the year we were getting closer but still needed a couple more months. Deltapoint was about out of money and we agreed to forgo any payments until money came in assuming we got it finished. Eventually it got to be $150,000 (probably double today) which was painful but we knew this product would be a hit. The beta testers such as the Wall Street Journal were really pumped. Deltapoint by this time was down to I think 3 or 4 people.

When we finished it just in time for Macworld SF which I think was in January it took off like a rocket. Almost overnight we wiped out Cricket Graph entirely, capturing virtually all of the charting users. Cricket hung on for a while but couldn't compete with us, or Powerpoint and Persuasion. It was pretty fun to have worked on something that was so successful so quickly. The killer feature of Postscript output, combined with Illustrator output of every feature meant that print users could get high quality output and still have their artists doll up the charts if desired.

Of course the first new feature for version 1.5 was multiple documents open at a time. I had used globals for the UI, and now the problem was how to deal with multiple documents. I found I could swap the globals in very few places and manage the document switch easily. Today of course I would have never written it this way, but that was a long time ago!

We worked on versions 1.5, 2.0, 2.5 and the last and largest update which was 3.0. For 3.0 I wrote the core of a new word processing engine (though we only used a portion of it) and Deltapoint contributed some additional programmers in California. By this time they had grown to almost 70 people, and Deltagraph was bringing in millions every year.

One time General Motors had said that if we supported a certain chart type they would buy 10,000 copies. Of course we quickly added it and then they decided not to after all. It turned out the Japanese loved these so it turned out OK. We added every chart type we ever saw which added to Deltagraph's dominance.

With 3.0 they actually began to port it to Windows 3.1, and it was an immense pain to do. I had spent no time trying to worry about cross platform issues as I had asked up front and been told no. Of course Windows was now becoming important. The port was never very stable as a result and I think it actually became a separate code base, making new features hard to do.

When 3.0 shipped we tried to talk them into rewriting the whole thing in C++, which was finally available, as we suspected the codebase was now too large to maintain. They didn't want to do this, and we amiably went our separate ways. Soon they decided to get into internet tools, and did a reverse public offering, merging with a defunct public company.

We were shocked when they sold Deltagraph for only $1 Million to SPSS, which really seemed too cheap. Not long thereafter they actually went under, the internet tools business wasn't there yet and they had little revenue. I assumed Deltagraph would languish at SPSS (which it did) and assumed it would also die.

Eventually a consulting company named RedRock bought it and they are still the folks maintaining it today. I am still surprised that code I wrote in 1988 could still be sold despite around 15 major releases of MacOS and OSX. Until a couple of years ago they still had the same crappy icons in the toolbar I drew in Hypercard in 1988 which were supposed to be temporary. Temporary for 24 years anyway!

I have no idea what the source code looks like today after 20 years and who knows how many engineers having touched it. If they knew who I was, I always imagined my name would be in a dart board with lots of holes in it. Yet it's impossible to write code and assume someone will still be maintaining it decades later and be able to predict the future direction of languages and operating systems. After 5 years we were ready to start over for sure. After 26 years it must be massive pain to work on unless major refactoring was done.

Still, it's amazing to think that something me and my partners put so much effort into is still alive today. How great it is as a product today I have no idea. Today charts and graphs are so common you can get sophisticated open source packages in almost every language out there. But what we built at the time was unique in what it could do.

I still remember after I had added a feature to allow you to embed graphics into a chart element (imagine a stack of barrels in a bar chart). I built a sample file which appeared to show 3D tubes in a 2D Bar chart. One day I was reading the Wall Street Journal, and there on page two was my tube chart sample as is! Its pretty rewarding to see things you worked on actually be used and benefit your customers.

DeltaGraph was probably the most fun thing I ever worked on, so many challenges to overcome and so well received. We built something the size of Excel with a team a tenth the size of theirs (as far as I know). I only hope the folks working on it today don't poke too many holes in that dart board!