I’ve been involved in every aspect of computer systems from designing high-performance computer systems based on bit-slice technology (used in a very early text-to-voice reading system), designing and building VoIP auto-attendant and voice mail system (used in Vonage’s original service offering), part of the design and implementation team for the Eclipse hardware and the AOS operating system and DEC’s CICS knock-off, MCS-10 (deployed at various sites around the world), all the way to designing massive data storage systems and some very early AI work. I worked on the very first electronic cash register (it used a home-grown PDP-8 knockoff). At the same company, I worked on a programmable nuclear medicine system; I wrote the operating system and a Basic-like interpreter for the system.
In 1970, I read Marvin Minsky’s Perceptrons book and got interested in AI. I took what he wrote and generalized it for what I thought would be how brains worked. I developed a few small models using what is today called neural networks. I gave talks at the Illinois Institute of Technology Electrical and Computer Science departments. Later on a few friends and I started a company in the early 2000s to use AI/NN technology to solve real-world problems in the semiconductor industry. We hand-built an NN system that would analyze data from wafer fab machines. The idea was to detect “just before” a wafter fab machine would have “issues” and start producing unusable semiconductor wafers. We worked with Fairchild Semiconductor to prove the idea worked, which it did. Unfortunately for us, we had this belief that a semiconductor manufacturer would trust a company of 10 people after they spent billions on building a wafer fab line. Needless to say, we just couldn’t get anyone to take us seriously, though now it is SOP in the industry.
I led a team to design and develop a series of high-speed CSMA networking boards (before Ethernet was around),. Because of the design, the boards were used in various medical devices (they were optically isolated and, as such, had no cross-current issues), office systems, and remote monitoring devices. My team and I used the underlying technology to build an all-optical ring network.
I designed, wrote, and sold the first portable real-time kernel in 1982 – OS/RT – sold by Destek Group, a company I started in 1981 with a friend out in Sunnyvale, CA. It was used to monitor a nuclear reactor in Georgia, the oil pipeline across Canada, and various other places. It was later expanded to provide some Unix-like features, dynamic memory allocation, a file system, and a Unix System V library. It was the basis for a system being developed by Exxon.
I also led a team of programmers that built some of the very earliest rehostable compilers/interpreters written using tools like YACC and LEX. We built compilers for Basic, C, and Pascal. We built our own rehostable assembler.
I had the pleasure of participating in the implementation of APL both on the IBM 1130/1500 and the 360. I got to meet Ken Iverson (of APL fame) while I was a student intern at Science Research Associates. I later ported a version of APL to the PDP-10 computer system.
The work on the PDP-10 got me to work on a message-switching system for DEC, MCS-10. I was responsible for the core message management and scheduling part of the system. I was also involved in implementing it for various organisations around the world on behalf of Digital Equipment.
In the early 80’s I was one of a handful of people who had the opportunity to test out the very first C++ compiler from Bell Labs. I used it to build a microkernel OS that was used in parts of an SMP system from Kendall Square Research.
In the early 2000s, before Google started talking about massive data stores, I was asked to design and build a storage system that could hold billions of emails. quickly search them and was always ready. This was done for a company in Eastern Massachusetts. It was a cluster-based system based on pizza box computers. You added more storage and processing by adding a new pizza box computer. This work led me to a completely different design, a little later, which was distributed and provided always-available archival data storage. When the company I started was sold to a F100 company, it was deployed over 6 continents and contained multiple petabytes of storage (with an uptime 0f 7 9s).
Later I spent time teaching a class at VCU, for an upper-level CS class., I trained a Tensor model to classify sentences to demonstrate AI to the class. It was to be used as part of a question-and-answer system where the system would learn from a corpus and be able to show what it knew.
Recently, I got involved in designing and building medical devices. I’ve worked on an insulin delivery system. I was doing the testing of the device – both the integrated GUI components and the controlling application. I also designed orthodontic appliances, mostly doing all the backend work and “operator” applications. Finally, I got involved in designing and implementing some of the software for a surgical robot.
While I have used and developed on Windows since Version 1, today I focus on Linux (since 0.99pre1) and various embedded real-time operating systems, including FreeRTOS, RTOS, and OS/RT (when I need something simple, fast, and proven bug-free).
Today, I design and build distributed and embedded systems. I write in Python, C, C++, and occasionally JavaScript and a touch of Erlang. I’ve written in most computer languages: various assembly language systems, Snobol, Icon, Basic, Fortran, Cobol, RPG, PL/I, Python, and on and on.
I have running in my house a 20-node Kubernetes platform on Raspberry PIs and various test platforms for hosting other systems. I host my embedded applications on Linux (Beaglebone and Raspberry Pi), and on a couple of real-time operating systems. When I need a totally tested system, I’ve used the VectorCast software against OS/RT and applications I write.
To prove to some of the classes I taught at various Universities around the area (also in Richmond, VA), I would implement systems in various languages. For instance, I wrote a “drop-in replacement for REDIS in Python (it was so drop-in that I would run the Redis QA tests and end up with the exact same results). I re-wrote OS/RT, originally in C, in Java, and I wrote various SNMP tools in ICON. I loved showing my undergrad students that they can write any system in any language they choose.
I teach classes in operating system design, designing distributed systems, and architectures for medical devices.
My CV:
This blog contains my works and thoughts. Some of this may be covered by source code saved in Git. In those cases, I will point you to the relevant code.