My journey into personal computer software development in 1983
farrs.substack.com
farrs.substack.com
There was at least SuperCalc, and Multiplan from MS. But those were really still from the 8-bit world. Lotus was able to start again from scratch with the large memory potential of the PC.
MS did a version of Multiplan for the Macintosh. It was amazing! Mice and spreadsheets were a match made in heaven. But it was just a pre-cursor for Excel, and did not last long.
The author said that VisiCalc was written in Lisp and I said "wtf?
Then I reread it and said "seriously, wtaf?"
I've never heard that before. Was the original Apple ][ version written in Lisp?
https://rmf.vc/implementingvisicalc
Edit: Oh - the OP is talking about a later version of VisiCalc. Bricklin and Frankston were both MIT CS grads, so it would make sense. But at what point did VisiCalc get ported to Lisp? You're right—this is burying the lede!
It’s not even worth considering the concept of them writing in some high level proto-lisp that is cross compiled into 6502 from a larger machine.
While a lot of software was cross assembled on larger hardware for microcomputers back in the day, almost nothing of note was written in a high level language. (To wit someone will mention things like the Canon Cat being written in a Forth dialect, which is why I said “almost”.)
Consider that the PDP-10 was effectively around 500khz, and the 704 that lisp was invented on (and gave us the CAR and CDR names) "could execute up to 12,000 floating-point additions per second".
It was a couple of years before Pascal and C really caught on for micro development, but it really wasn't the barren wasteland of raw machine code that you seem to be suggesting...
https://conservancy.umn.edu/bitstream/handle/11299/113026/oh...
Bricklin: Both. We couldn’t afford to spend money on time-sharing. We could buy our own machine. In those days, development – a lot of people did development, as Bob explained, on another machine. And then from that other machine, you loaded to the micro because the development systems on the micros weren’t up to it. That’s how Microsoft Basic was done – that’s how Microsoft ended up having a PDP-10 I think. They eventually used XENIX to do their development. We did the same thing. We developed all our own tools over the years. We improved the tools. We wrote our own implementation language, a higher level language. In fact, that’s one of the issues that eventually came in, is that in the early days of the PC industry, there were so many different machines and you didn’t know which was a winner. You sold to each manufacturer. So you had to port all over the place. That’s what Digital Research was – a porting company. Microsoft was a porting company. That’s what we did. We had to figure out ways to port the same product and cookie cutter it out. And everybody went a little different and you had to fight with them. Otherwise, the costs would go up. So we eventually moved things to a higher level language. We did our version 2 of VisiCalc, in a higher level language.
Ceruzzi: What language?
Bricklin: We wrote it in something we called IL, which is a Lisp derivative. It was like writing in Java or something like that today. An interpreter. Microsoft had a similar type of thing for Multiplan. They wrote in a language which let them use a cookie cutter to put it on many different machines. But the Apple II version of the VisiCalc II (VAV) was written in assembly code. We realized that to port that was going to be so expensive. When we ported from the Apple II and Apple III, doing the IIe was next, then to port to the IBM PC it’s a different code base. The way we did the VisiCalc code base is, since we had our own tools, we hired Seth Steinberg, who had worked at the [MIT] Architectural Machine Group – Media Lab, real experience, real bright guy, helped bring a culture into our company. Free Cokes came from him. He ordered it and all that stuff. Lotus and others all copied this. It helped bring that type of environment from MIT into our company and spread hopefully to others. What Seth did is he said, “I’m going to do an idiomatic translation, basically, from the 6502 code to a Z80 code to do the TRS80.” And what he did was he modified the compiler to list the two sources synced on labels. The compiler we used had macros and it had no ‘go-to’s in it. Basically it was all IF THEN ELSE and stuff. It was a macro assembler"
https://conservancy.umn.edu/bitstream/handle/11299/113026/oh...
- in the pre-PC era, the microcomputer ecosystem was extremely fragmented in terms of architectures, CPUs, and OS's. 6502, z80, 68K, z8000, 8088. DOS, CPM, CPM/86, etc. Our publisher (Personal Software) wanted as much breadth of coverage, as you might imagine
- one strong positive benefit of porting from 6502 assembly to IL and using an interpreter was that it enabled the core code to remain the same while leaving the complex work of paging and/or memory mapping to the interpreter, enabling access to 'extended memory' without touching or needing to re-test the core VisiCalc code. Same goes for display architectures, printer support, file system I/O, etc.
- another strong benefit was the fact that, as the author alludes to, the company was trying to transition to being more than a one hit wonder by creating a symbolic equation solver app - TK!Solver - that shared the interpreter.
Of course, the unavoidable result is that the interpreter - without modern affordances such as JIT compilation - was far less snappy than native code. We optimized the hell out of it and it wasn't unusable, but it did feel laggy.
Fast forward to when I left SoftArts and went across the street to work for my friend Jon Sachs who had just co-founded Lotus with Mitch Kapor. Mitch & Jon bet 100% that the PC would reset the ecosystem, and that the diversity of microcomputers would vanish.
Jon single-handedly wrote 1-2-3 in hand-tuned assembly language. Yes, 1-2-3 was all about creating a killer app out of 1.spreadsheet+2.graphics+3.database. That was all Mitch. But, equally, a killer aspect of 1-2-3 was SPEED. It was mind-blowing. And this was all Jon. Jon's philosophy was that there is no 'killer feature' that was more important than speed.
When things are moving fast and the industry is taking shape, you make the best decisions you can given hunches about the opportunities you spot, and the lay of the technical and market landscape at that moment. You need to make many key technical and business decisions in almost an instant, and in many ways that determines your fate.
Even in retrospect, I think the IL port was the right decision by Dan & Bob given the microcomputing ecosystem at the time. But obviously Mitch & Jon also made the right decision for their own time - just a matter of months later. All of them changed the world.
A spreadsheet on it's own is a thing of technical beauty but for market domination you don't want to keep pouring resources into that one product, you want a suite of complimentary products.
You want to be able to embed your spreadsheet into a document, into a slide presentation. You want cutting and pasting to work sensibly between products. You want consistency in the menus and layouts.
Bill Gates understood all of this from the beginning, the same as he understood that the strength of a PC operating system is not how reliable, memory safe and performant it is, it's in how flashy it looks and how important the windows paradigm is.
I mean, MS made ActiveX and it was a security risk:
https://www.wired.com/1996/11/will-activex-threaten-national...
The premise was that people were already pushing the limits and building incredibly elaborate systems on spreadsheets, so why not go to the next level and leverage the huge processing power of big iron. Actually a very solid idea and I worked with a few progressive customers that bought into it.
My job was as a sales engineer, helping customers adopt it in Europe, particularly Scandanavia. It's Tuesday so it must be Copenhagen. What a great job and a super team in lotus at the time.
Didn't OS/2 fail because it wasn't performant enough, compared to Windows/DOS which could run on pretty shitty PCs ?
Bill Gates was a great businessman. Microsoft succeeded because Gates knew how to make deals with suppliers et al. Much has been written about the good (IBM bundling) and bad (threatening retailers who shipped PCs with alternative operating systems) already though.
However if you want to talk about the UI consistency or flashiness of computers in the 80s and 90s, then you’re better off looking at Apple Macs, Amiga, Acorn Electron, or even Atari before you look at Windows and DOS.
If it were by the original IBM tale, Xerox and others dead companies were thriving. I recommend to read "Idea Man", Paul Allen (Microsoft cofounder) autobiography. You will realize there was an incredible Bill Gates before the IBM deal. Also check the non-official chronicles of Bill Gates in "Hard Drive: Bill Gates and the Making of the Microsoft Empire" [2] (1993).
[1] https://en.wikipedia.org/wiki/Idea_Man
[2] https://www.amazon.com/Hard-Drive-Making-Microsoft-Empire/dp...
You’re also focusing too much on IBM specifically. I didn’t say IBM made Microsoft successful, I said it was an example of a deal Gates successfully negotiated.
I expected Google founders to lead Google but they quit. Jeff Bezos work was also amazing and he continued for long. We have Mark Zuckerberg in Meta, don't doubt he is really smart but the Oculus execution was completely wrong, it is in the business literature. I remember when Microsoft launched Xbox there were a lot of concerns about attracting AAA games like Sony or Nintendo. They did it. Mark launched and maintained the Oculus without a set of apps to play with. Basic mistake: you can show the device to your father and he will be amazed and forget about it next time.
Also I’m old, so have far more experience with early Microsoft than most people. Some of the software I’ve written is probably older than a lot of people who chat on here.
Edit: you’ve added a whole bunch more to your post. It’s now sounding like you took issue that I said Gates was a a great businessman without acknowledging that there are other great business people. Weird thing correct someone on given the mere existence of other companies proves that there have been other great business people. But yeah, Gates isn’t the only one. However we were talking about Microsoft’s success not Facebook/Meta nor any other company.
I don't know. How many?
UI/UX development is a two-way street. The OS includes a basic set of UI controls for common scenarios. But it can't anticipate every situation.
MS Office's Ribbon is designed to show only the actions available given the current selection and document. A toolbar would show available actions, but also have the invalid actions disabled, increasing required screen space. Is there some other standard Windows control that could have worked instead of the custom Ribbon?
First was when the menu bar would show a bezel when you hovered over it, which didn't happen normally in Windows.
The second was when the menu bar became detachable like a tool bar. That also wasn't supported by public Windows APIs.
The third was Ribbon. That I can at least forgive a little more because it's a massive shift in UI/UX. But the first two instances were so subtle that most people wouldn't have noticed, which then begs the question, why even waste resources literally reinventing their own APIs?
Oh the joys of being brown in the Tech Industry.
not to limit this to texans (racism is pretty widespread, especially in the usa) but the especial intensity of racism was one of the things my mother called out as a primary reason she left texas as soon as she could
was this recently
do you suppose he'd heard of sanjay ghemawat or raj reddy
A long way from the git push to CI/CD I did a few times today…
Anyone who's spent time in musician communities will be intimately familiar with the phenomenon.
Anyone who's spent time in musician communities will also understand just how good you need to be if you're still doing it after two decades.
I was actually a pretty decent bassist, way back, when mullets were en vogue, but I also knew that I wasn't good enough to stand out from the crowd.
In actuality, there's a direct relationship between how good a person thinks they are and how good they actually are. Not inverse. The Dunning-Kruger effect is that the people at the low end of the scale tend to rate themselves as slightly better than they are, and people at the high end of the scale tend to rate themselves as slightly worse than they are. The best people know they're good, but they tend to think they're not the best. The worst people know they're bad, but they tend to think they're not the worst.
DK is the most abused pop psych in the world.
There are plenty of incredibly smart folk out there programming giant, indecipherable messes where somebody like me would write something very boring but did the job. My boring code can always be tizzied up, but you can't always fix an awesomely complex abstraction written in some niche language. What scratches your itch as a "super programmer" is often directly at odds with actually solving a problem.
I am kinda tired of inheriting those kinds of messes - the guys that write code that ways inevitably leave when the bug list pile gets too high.
Ask me how I know.
Or even worse, that pile of indecipherable mess runs a good solid business.
Ask me how I know.
Edit: They were CTO, not CEO.
I missed a few red flags.
The CTO had built a pile of indecipherable mess that runs a good solid business. And that's the rub, it was a good business. The CTO had build a steaming pile, but had it all in his head. If others couldn't wade through it, well, it was a good business.
Being a good business, they could afford to run through bodies. I discovered my "coworkers" were all contract. Another red flag.
So as my work extended out into the rest of the system I slowed down, and was eventually moved on. After all the CTO who wrote most of it could handle it, why couldn't I?
I'll take the Lisp over 6502 assembly any day of the week.
Why is this a red flag?
Has this really changed? Sheer size of the base (a billion plus each from China and India) distorts and produces massive survivorship bias. Like soccer or tennis, are there countries that produce ridiculously great programming talent per capita?
Publication Not Available
The page you are attempting to access is unavailable.
(AutoCAD for the original MacOS was compiled on Sun machines, because the Apple compilers were so bad.)
Not sure if such a thing is much better than assembly language in industrial context: it would speed coding up, but you would need to check the results thoroughly. Only the real test can tell if there is a time / quality benefit in sum.
It's hard to remember now, but the original PC was downright primitive, and most didn't have even the full 640k RAM installed!
I assumed a decent lightweight compiler existed, but sounds like not.
In many cases,TP or later Delphi followed as IDE for real apps. Pascal had its issues, but compilation speed was insane. When most people switched to java or c#, we lost this. Authors of both could have not used language so similar to C, but it happened.
I dunno, maybe I need to adjust and think before compiling, or switch to Go.
Wikipedia says the first line of PCs maxed out at 256k of RAM. Except on expansion card. Not until the XT did it support 640k on board.
Also, importantly I meant 8088 above! Not easy to stay accurate after all these years, right? We were reading Petzold's Code recently and it goes on and on about the 8080, and so believe that made its way into my writing.
Not sure why that is, but article content is available at
https://web.archive.org/web/20240420183201/https://farrs.sub...