It’s been one heck of a week, so I apologize for the delay in making my entry this week. I haven’t had a 72-hours so packed full since my first 72 in Central Juvenile Hall when I was a kid. For those of you not familiar, Tookie was Central’s patron saint, and you weren’t’ welcomed with an open hand. While this 72 was over 30 years later, it was also in SoCal, and as it happens, it was the perfect introduction for my last entry on language.
Philippe Kahn and my introduction to Objects
When I was a kid under house arrest, I was obsessed with becoming the next software mogul, and I sat and coded all day, after all, what else was a kid to do who couldn’t leave his house except on approval of his probation officer? Philippe Kahn, the iterant, bad-ass, illegal immigrant hacker was my hero. I loved Kahn’s Turbo Pascal platform, and I planned to use it to construct an empire, starting with a massive port and mod of the game Taipan! to the IBM-PC (I was also obsessed with James Clavell and Taipan! was after all Woz’s favorite game). In fact, it was Philippe Kahn that made me a believer in Object-Oriented Software Construction. Just for nostalgia’s sake, take a look at the video below where he gets some of the greatest minds in Computer Science to make cameos.
The year of my house arrest, other than learning about Objects and porting games, “on the side,” I also ported code from the HP-85 to the IBM-PC to do statistical analysis on a science fair experiment, It was with that old HP-85 where my journey with languages really began. It was that little bit of statistical code porting that made me the standout in the biological sciences for the county and Cal State Science Fair. I personally thought the game porting was more difficult, but I went with it and took the accolades when they came. That said, it was during that time when I was out and about with the science fairs that I also met the computer science and math standout, and that was where my whole world view changed.
My First Experience with a Domain-specific Architecture
While I was using Kahn’s IDE and Pascal, this kid had actually developed his own domain-specific language and IDE to build an early version of a real working film post-production system. We quickly became friends, and I firsthand saw brilliance in computer science for the first time. While my project helped get me out of house arrest and recruited by the head of the genetics department at Oregon Health and Science University (OHSU) to be his code monkey, my friend’s project eventually got him a job of running the first computerized post-production in Hollywood, effectively becoming the youngest head of IT for a major studio by the age of 16. This was pure brilliance at play! This interaction was what started my interest in computer languages as a subject, and that leads me back to SLANG and Columbia (how I went from biology to finance is another story).
As I stated previously, when I got to Columbia I had a pack of correspondence with Fisher Black turned over to me. There were a lot of amazing ideas on a wide variety of subjects, but Black wrote a decent amount about computer languages. The core ideas articulated by Black on language were really not that different but just a bit more evolved than the ideas previously articulated by Ichbiah, Kahn, and Meyer (ever notice that almost all the great Cathedral builders are French?). That is why I recognized those ideas so quickly when presented to me so many years ago as I began my graduate studies at Columbia. This was the strength of Black’s ideas–that he was an evolutionary and not a revolutionary. Just as the earlier languages were very much a manifestation of the technology of the time and its limitations, so was Black’s domain-specific language SLANG—specifically, it was and still is limited to single-threaded CISC architecture. As powerful as his core ideas related to data were, the gains made from the language structure started to lag to peter out about 2010, right when Moore’s Law started to peter out.
This situation is made even clearer if one examines the power consumption and how that massively increased right around 2010 due to the inherent limitations of the physics of the chips that we started to experience due to Dennard Scaling kicking in.
Solutions for a world constrained by Physics
Now in the “post-Moore’s Law world” we live in where Dennard Scaling is facing the limits of the physics involved, SLANG simply is not the right language because it hasn’t been and really couldn’t be updated. It’s simply faster to start from something done right and fork it rather than fix SLANG. But that fork is not Python, which is pretty much perfect for quick and dirty analysis but not good for building the Cathedral for Modeling that we needed to get done. As I spent a long time mulling over the issue and regretting that Philippe Kahn or someone like him had not produced an Ada-esque, Turbo Pascal-like, NeXTSTEP-variant capable of utilizing variable hardware platform, an idea hit me. I wasn’t in a bathtub or anything, instead, I was barn working on my tractor.
I had just spent the previous year pushing Python to its limits (not unlike what I had done with Jobs’ NeXT/Improv combination almost 30 years before), and suddenly the idea hit me as I had my tractor in jacked up and unable to work due to a faulty design of my snowblower. You see, as I looked up at my tractor it was fiercely snowing outside and it was supposed to continue for several days–a very serious issue at 8,000 feet (my house is at 8,000 feet altitude). You see, I can’t even get a snow removal service to come to my house since it’s so high–that’s the whole reason I have the tractor.
Make (or Modify) your own Tools
The problem was that I had just figured out that I couldn’t rely on anyone else to solve my problem. I had called every repair guy and tractor shop in the state and they were slammed. That’s fine because I can fix it but I didn’t have the necessary parts. I had also called the manufacturer of the snowblower and they had told me that it would take them two weeks to get me the parts and that still wouldn’t fix my problem for long because there was a design flaw and it would break again. That said, I needed a solution fast before I was buried under six feet of snow. So I spent several hours talking to every part supplier in the state and they also didn’t have what I needed.
As I stared into the abyss, the answer just popped into my head–“make the part.” It was a logical conclusion that I had to fabricate a new part for my tractor, because the snowblower manufacturers part had design flaws I could fix, but I didn’t have a machine shop and that would be a pretty heavy-duty task. With a little thought, I figured out that with the right machine shop I could take another part and have it modified to work for my purposes. Luckily, I had previously had a machine shop in my lab and so this wasn’t so intimidating to me and I immediately started calling shops. Within a few hours, I had a shop willing to quickly modify the part. I had my design and I was traveling down to Salt Lake City, it worked like a charm.
Once this idea hit me, I called an MIT CS Ph.D. I know and told him about my plans. To put it mildly, he said I was crazy. He said Python was fine for him and I should stick with it but I told him that it felt deja vu with my NeXT fiasco. He argued that things were a lot different when I was fourteen and that they have become a lot more complicated now. When he said this, I simply asked how many times had he contributed to the creation of a language, forked a language, or even contributed to a widely used library. The answer was never and I hung up. I then called Hal, who has done all of the above, and he said that forking a language was the only logical solution for the problem facing us and he had been wondering how long it would take me to come to that conclusion. I love Hal, but he’s kind of like that with me, let’s me come to my own conclusions, even if it is really painful.
Argento, a framework for Modeling the Structure of Information
Talking to Hal I said we’d do just as my science fair buddy had done over 30 years ago…a new domain-specific language to accommodate advanced modeling! This was something that took years, including discussions with some very smart people including the head of software engineering at my old hero’s alma mater ETH Zurich. It took me recruiting some of the world’s best to work with us, a real Odyssey—with more than one falling away in the process. Hence one more reason for the name of our project—the ULISSES Project. So how does this relate to my last, intense 72 hours in SoCal this past week?
Well, I went back to LA (yes, this was a “Going back to Cali” story), and I met up with my science fair buddy. We spent 72-hours straight covering our history and what’s happened in 35 years. Among the things that I spent doing during my “SoCal 72” was discussing the language framework and perspective that we’ve been developing since 2015 at Rand Labs and how to bring that to the world. In short, I think that Microsoft got a lot right with the C# framework but because you can’t build something truly secure on Windows, we just couldn’t use it. C++ is great but a bit verbose. It doesn’t have an official name yet, but we refer to it as our “Argento Framework” (props to my man, Dario Argento, the Italian Stephen King) because this idea finally emerged during my own horror movie at 8,000 feet…I guess I could also call it The Shining or King, but both were too pretentious).
Orchard and Argento
So one more comment on this, my dissertation advisor spent several years working on this very problem at Morgan Stanley. He had a billion-dollar budget and ten years to complete the ambitious project. By the time of the Financial Crisis, they spent 4 years and $300 million dollars trying to code up what was needed in a universal financial modeling language in this project. They referred to this project by various names, like ModelWare, and by the top-secret code name Project Orchard. It was never finished and it was finally abandoned during the Financial Crisis, but on reviewing the project, one of the early problems they had was deciding between Java and C++. As it turns out, neither language was the answer, but they were at least thinking about some of the right things in their discussion. They probably would have gotten a lot further, faster if they had the right tool.
So for those of you that are worrying about our language and saying that you don’t have a billion dollars (for some reason investment banks seem to always have grand billion-dollar software projects), don’t worry! We plan on bringing the tools that we’ve developed with our “Titanium Man” language and framework and make it accessible to the world via the magic of Python. This is something I will discuss in a future blog entry, but it’s another great idea from Gamers.