Note: staff-provided content does not represent an official statement from FARGOS Development, LLC. The policy on staff-authored content can be found here.
During my tour of duty with IBM Research, I had the opportunity to be closely involved in developing network management technologies, like XGMON, for the NSFNET, which served as the core of the Internet from 1988 to 1993. If you want to see some of the awards I received, annotated images are on my awards wall. In more recent years, I helped the IBM Systems and Technology Group with their RSCT product and getting ASC Purple out the door. I've then spent several years writing ultra-low-latency infrastructure (such as price feeds, merge logic with synthetic underlyings) and execution engines for options trading on the ISE, CBOE, Eurex, OSE, SGX, etc.
Some selected photos from trips that I've taken are available on my travel page. I have a short list of improbable events that I've experienced; I managed to capture video of one of them that occurred at Kinkaku-ji Temple.
Although I keep a low profile, some external records of a few of my activities inevitably were made. Since these links are external to this site, they may become broken over time.
RFC 1228: SNMP-DPI
RFC 1592: SNMP DPI Version 2
An updated RFC author entry at Network Sorcery
Acknowledgement for contributions to Qt Toolkit
INET99 Paper: Improving the Availability and Performance of Network-Mediated Services
Internet2 Distributed Storage Initiative paper: Increasing the Availability of Internet2 Applications and Services
Internet2 Network Management Working Group membership
Local copies of some previously published papers:
NOMS 2000 paper: Remote Management of Narwhal Clients using TEMP
Globecom 99 paper: Enabling the Management of Everything using TEMP
INET99 Paper: Improving the Availability and Performance of Network-Mediated Services
USENIX LISA VI Paper: Concurrent Network Management with a Distributed Management Tool
The USENIX LISA paper holds special importance in my heart; my friend and colleague Rob Lehman wrote the bulk of it in conjunction with the manager I was blessed to have at the time, N. C. Hien. In those days, most folks seemed to be pursuing glitzy monitoring displays that had minimal function, whereas our focus was on (often novel) functionality. Rob was in charge of the Watson lab's network management and literally stepped away from the idea of using graphic user interfaces for monitoring the network.
Besides being able to awe potential customers, GUIs had one significant benefit when it came to fault isolation: most humans could look at a map of the network and quickly identify where a partition or outage had occurred. Neither Rob, nor IBM Research management, wanted to dedicate staff to just stare at a screen waiting for something to happen, so he pursued having the fault isolation done algorithmically. The intended and achieved goal was to send concise messages to the alphanumeric pagers that the network operations staff carried. The initial detection of a fault triggered invocation of algorithms that identified the location of a fault. Once located, a pager message would normally be generated to inform the appropriate staff. When the problem was resolved, a corresponding message would be sent to close out the event. Effectively, the pagers on their belts became the Network Operations Center GUI.
There were some nuances modeled on XGMON's existing behavior, such as a page would not be sent unless an outage was of minimal duration. XGMON's GUI provided the capability of delaying the announcement of bad news: the display would not alarm and startle the operator unless a fault persisted for a certain minimum number of seconds (which by default would be 0). That feature was present to avoid annoying operators regarding faults that did not violate a service level agreement and were quickly resolved without human intervention. In the case of pager-delivered alerts, it would be even more annoying to receive alerts for problems that would be resolved before you even read the message.
Papers below are either in nearly completed works-in-progress or submitted for consideration for publication. Unlike the papers above, they have not yet successfully completed the process of peer review and competition for selection for presentation at a conference.
Byzantine Fault-Tolerant HTTP Services using FARGOS/VISTA
Notes on Writing High-Performance Code
U.S. Patent 6,748,416 - Client-side method and apparatus for improving the availability and performance of network mediated services. This patent reached its expiration date in 2019, so it can now be practiced freely without one having licensed the IBM (or eBay) patent portfolio. The core concept behind this patent was to allow endpoints to both be monitored to observe the health and load on the network as well as be actively controlled, thus allowing endpoints to be directed to use alternate routes to avoid congested links/service providers or outright outages. While Narwhal may have been the first implementation of the concepts in this patent, in the current era, the concept is referred to as "Software Defined Networking" and OpenFlow was a low-layer specification of a control protocol with a strong emphasis on having a switch make routing decisions.
While most of these were actually developed for the NSFNET, the following products were revenue generators for IBM:
XGMON for AOS 4.3BSD for the RT PC and various flavors of AIX (AIX 2.2.1 on the PC/RT, AIX PS/2 1.1, AIX/370, AIX 3.x for the RISC System/6000).
SNMP Distributed Program Interface (SNMP DPI, see RFC 1228 and RFC 1592) on VM, MVS, OS/2; dpid for AIX. A very slightly modified version was used to extract data out of the TCP/IP Virtual Machine using an IUCV link (and something similar was done for MVS). Modern-day Linux programmers will see similarities in how Netlink is used today.
SNMP Query Engine for VM, MVS, AIX, OS/2 (developed to enable SNMP support for Netview/390, but was used in conjunction with XGMON to create multi-user management clusters).
DRAGONS, which was developed for the management of the National Research and Education Network (NREN) and selected in 1991 as the real-time component of the Open Software Foundation's Distributed Management Environment (OSF DME).
The system monitor and distributed infrastructure for system management of the 9076 SP1 scalable parallel processor (a DRAGONS-based suite of integrated, transparently distributed applications that monitored and controlled both the physical hardware and operating systems on clusters (originally, populations of 8-to-128 machines).
Internet Access Cartridge for Nintendo SNES (the equivalent of WebTV using Nintendo's 16-bit SNES, but done before WebTV existed).
Automated, adaptive configuration management of VLANs using genetic algorithms (global optimization of VLAN configuration based on observed traffic patterns).
The Enterprise Management Protocol (TEMP), a replacement for SNMP that is scalable, event-driven, enables automatic discovery and self-describing agents.
Narwhal (a remotely managed (using TEMP) intermediary that provides fault-tolerant, load-balanced access to SOCKS and HTTP proxy-based services). This did result in a patent, mentioned above that generated revenue for IBM via license fees.
I recently restored a Barrie-of-Edinburgh clock. It turned out nice.
Scripts for implementing a sandbox-based development infrastructure have been made available for downloading. The sandbox tools support multiple target architectures for use with cross-compilers and heterogeneous development nodes. These had their original design influenced by the OSF Open Development Environment and IBM's AIX development environment, but are quite a bit beyond them at this point. One advantage is that they are scripts driven from configuration files rather than compiled executables, which allows them to be easily extended for new targets. The current configuration files support compilers like g++, clang, emscripten and quite a few fundamental target architectures:
They make it trivial to compile with different levels of optimization (including selecting link-time optimization), or generate incompatible builds that enable code coverage, memory leak checking, etc. Some of the auxillary commands are aware of revision control systems; Subversion and git are supported.
A set of sandbox-aware buildbot tools are also available for downloading. As can be seen from its documentation, the tools cover the generation of the buildbot configuration files as well as handling daemon startup and termination.
The map gallery tools that were used to take a collection of photos and/or videos and generate the maps and gallery pages seen on my travel pictures pages are available for download. You can examine the package's README file before downloading. The scripts can be used on Microsoft Windows, but will normally require installation of cygwin; this might eventually change as Microsoft adds shell support to Windows 10, but for now I always install cygwin on my Windows hosts. I tend to use a hybrid approach and browse my source photographs while using Windows and do a drag-and-drop operation when I want to populate a meta-data file that will describe a photograph of interest, but otherwise do all of the batch processing work under Linux.
Note: last updated June 22, 2020.
Instructions how to install Ubuntu on hercules, along with scripts and configuration files were made available.
The Distributed StarShip game has been re-enabled on fargos.net. This has its origins in the Distributed StarShip game I wrote with Bryan Beecher while we were graduate students at the University of Michigan. The C source for that game was ported to DRAGONS and was used at trade shows as a demonstration; staff of other vendors were permitted to run copies of the DRAGONS Display Manager GUI application on their own workstations in their free time and, optionally, also run a DRAGONS Data Engine to contribute to the amount of processing power available in the distributed system. The game served to demonstrate how the workload was automatically balanced across available resources and transactions-in-progress were recovered as machines came and went: fleets of starships cruising between planets and starbases and fighting battles was an intriguing prospect for the target audience, yet simple and concrete enough to get the concepts across. The game got ported with much less effort to the FARGOS/VISTA Object Management Environment around the turn of the century and made use of web browsers to provide the GUI technology (back in the day, the DRAGONS Display Manager was originally a Motif applicaton, then redone in Qt). The first pass was done using Scalable Vector Graphics, but an alternate render using Shockwave Flash was also selectable. Back then, Shockwave Flash was the most widely-supported technology across various browsers and decent support for Scalable Vector Graphics was hard to come by...now Flash has been sunset and reasonable SVG support appears to be everywhere.
Some of the original Z-80 assembler source code for FARGOS is online to examine.
A small package of web pages, CGI scripts and regular shell scripts to track the contents of storage boxes and generate box labels with QR codes is available for downloading. These are useful for performing home inventory or during moving preparation to permit tracking the contents of various containers and subsequently visualize their contents. Preparation of labels with QR codes permits scanning the label affixed to outside of a container to bring up a detail page showing the contents of the interior of the container. The box inventory documentation README can be read prior to downloading.
Know anyone that was surprised when Scotts dropped support for the Blossom sprinkler system controller at the end of 2021 and rendered them inoperable? It is possible to continue to use the Blossom controllers by using a simple interface script in conjunction with Open Sprinkler.
More details are available in this downloadable resume.