Note: staff-provided content does not represent an official statement from FARGOS Development, LLC. The policy on staff-authored content can be found here.


Geoff CarpenterGeoff Carpenter Follow on twitter

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.

External Links to Some Past Internet Activities

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

Some Published Papers

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 in Progress

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

Patents

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.

Prior Products

Generally Available Products

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).

Inventions Not Released as Commercial Products

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.

Miscellaneous

Clock Restoration

I recently restored a Barrie-of-Edinburgh clock. It turned out nice.

Sandbox Tools

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.

Buildbot Tools

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.

Photo and Video Gallery With Maps

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.

Installing Ubuntu for zSeries (s390x) on hercules

Instructions how to install Ubuntu on hercules, along with scripts and configuration files were made available.

Distributed StarShip

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.

FARGOS/MP Source

Some of the original Z-80 assembler source code for FARGOS is online to examine.

Box Inventory

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.

Blossom interface for Open Sprinkler

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.

Stuff I Like

Roland V-Drums
Incredible fidelity, perfect for playing one's heart out without bothering the neighbors.
M�rklin Trains
Complete digital control, multi-user operation, with sound, lighting and smoke effects. C-track is very realistic and the stainless steel rails are easy to maintain.
Water Rower
Quiet, but soothing workout equipment. Stores upright to take up minimal space, near silent operation permits use late at night without anyone being able to notice.
Delta Machine Tools
Robust, quality shop tools that have lasted for generations.
Bosch Hand Tools
Heavy duty, elegantly designed power tools that last.
Logitech Squeezebox
Awesome, customizable Internet radio and music players. While Logitech abandoned the product line, the software behind it is still open sourced and I use Squeezeplay on most of my machines and equivalents on my iPads and iPhones. I think Squeezepad works more naturally, but iPeng now works on both the iPhone and iPad. I paid for the addition to allow them to act as players rather than merely graphical remote controls. Years ago I had remote access enabled, but other users reported being attacked by bad actors. In the current era, I use wireguard to provide secure access from my phone and laptops while on the road.
Ozwald Boateng
My tailor since 1999 when the shop was on Vigo Street. I do seem to be missing my invite to Fashion Week as of late, though.

Prior Work

07/2012-03/2018
HAP Capital, LLC
High-performance, low-latency infrastructure for options trading: price and news feeds, exchange connectivity, execution engines, build and development tools, etc.
12/2006-2/2010
Volant Trading, LLC
High-performance, low-latency infrastructure for options trading on ISE, CBOE, OSE, SGX, Eurex, NASDAQ, NYSE, ARCA, etc.: execution engines, price feed layer, exchange connectivity, build and test environment, etc.
5/2003-10/2006
IBM Systems Technology Group
Enhanced Reliable Scalable Clustering Technology (RSCT) product for scaling to support ASC Purple: arbitrary-sized messages carried by PRM, add support for Infiniband to ConfigRM, Linux-based TieBreaker using SCSI, HAGS protocol improvements, etc.
5/1988-7/1999
IBM T. J. Watson Research Center
NSFNET network management (XGMON, DRAGONS); components of the TCP/IP products for VM, MVS, OS/2; SP1 system monitor, etc.
5/1987-4/1988
Computing Center, University of Michigan
Dynamic loader, lightweight process library, persistent applications for SunOS.
1/1986-12/1986
Research Institute for Advanced Computer Science, NASA Ames Research Center
High-performance math kernels for the Cray-2 supercomputer: multithreaded, vectorized implementations hand-crafted in Cray-2 assembler of key mathematical algorithms (e.g., matrix times a matrix plus a matrix, scalar times a vector, vector times a vector) that exploited the faster, static local memory vs. the dynamic global memory, overlap pipelines of the various functional units to maximize the work performed every clock cycle.
Los Alamos National Lab
Algorithm implementation for hypercubes.
5/1985-12/1986
Magnetic Fusion Energy Computer Center at Lawrence Livermore
As above, high-performance math kernels for the Cray-2 supercomputer.
5/1985-2/1986
Cravath, Swaine and Moore
Analysis of the object-code of two programs to determine originality.
6/1982-12/1986
Various, including Metallic Ladder Manufacturing Corporation
General ledger, inventory control, order entry and invoicing, mailing lists, etc.

More details are available in this downloadable resume.

QR VCARD for GCC