The more technically-focused items in this post are mostly about how we can learn from the past. Two related fallacies in historical analysis are urdummheit (the stupidity of the ancients) and urwissenheit (the wisdom of the ancients). Either society reached some prelapsarian peak and we've all forgotten the knowledge of our forebears and now live as savages, or society marches ever forward toward perfection and whatever is new must, ipso facto, be better than whatever is old.

We see this a lot in object-oriented programming. You can identify two camps: one is that the Smalltalk folks got it and that everyone since did not get it and has doomed software to the dark ages; the other that you need no more evidence that OOP is bad than that today's blog posts are about functional programming. In fact, like any approach to thinking, OOP contains both baby and bathwater.

I have (at least on [objc retain];, possibly elsewhere) described NeXT Computer and NeXTStep as one of the best compromises in our industry, from a technical perspective at least. You want to make a 3M (megabytes of RAM, MIPS of processing, Megapixel display) workstation like the Xerox Alto, using ethernet networking, laser printing, and Smalltalk objects. You see a future where everyone's data is ephemerally detached from their physical computer: wherever they are, their applications and data are there too.

But you have a startup budget. What do you do? You compromise: you build that vision out of off-the-shelf parts. A UNIX-like OS gives customers a familiar workstation but can't support Smalltalk objects, so put Objective-C on the top. Laser printers need hefty CPUs and expensive Adobe licenses, so borrow the CPU and license from the central computer: using the same PostScript technology to print as to drive that megapixel display. A combination of a networked identity service (NetInfo), networked file system (NFS), and removable storage (magneto-optical disks) gives you the semblance of ubiquitous computing.

Various factors, including attempts to stay out of Apple's turf to avoid a lawsuit over poaching their staff, meant that the NeXT computer didn't really become a low-cost version of the Alto until March 2001. But we learned a lot along the way. Thus in this issue we explore nil messaging and how SwiftUI is a modern WebObjects: in a similar vein we explore REXX and the duopoly of mobile platforms.

And then the rest of the article is about personal knowledge management. Being a software engineer requires a lot of knowledge, both retained and rapidly discovered. How to cope with that is still an open question, and one I struggle with a lot.



Around the web