This site wouldn’t exist without open-source tools. To name just a few:
Thank you all for making such great tools, and for making them free!
About Desert Moon Consulting, LLC
I'm Mitch Chapman, the owner of Desert Moon Consulting, LLC. Here's how I've earned my living.
Systems Control Technology, Inc.
I graduated from Wright State University in 1986, with a B.S. in Computer Science, Magna Cum Laude. Shortly afterwards I started my first full-time job, providing software support for human-aircraft interface research at Wright-Patterson AFB, Dayton, OH.
My work involved maintaining Fortran software for modeling aircraft performance, developing Pascal-based aeromodel code running on an RS-232 "network" of 80286 microcomputers, and creating graphics card device drivers for Microvaxen running Ultrix.
Frontier Technology, Inc.
Within three years I found myself in Linköping, Sweden, helping automate testing of the electronic flight control system for the Saab JAS-39 Gripen. I was tech lead for a small team, working in C and X Windows on SunOS, building simulation test control and monitoring software.
It was an interesting time to be in Europe. Our first visit coincided with the fall of the Berlin Wall, and my last business trip came just months after the dissolution of the Soviet Union.
Ohio Electronic Engravers, Inc.
I joined Ohio Electronic Engravers, Inc. in 1993. While there I developed graphical user interfaces for control of rotogravure equipment and for soft-realtime visualization of prepress layouts. I also developed object persistence frameworks for C++ and multi-threaded drivers for widebody inkjet printers.
In 1999 I became a senior software engineer at Bioreason, where I helped create GUI applications to help chemists analyze biological and chemistry screening data.
Shortly after joining the company I created a couple of prototype applications that shifted the company’s product focus from unguided browsing to interactive search and ﬁltering. I also helped reduce the computational complexity of Bioreason’s core molecular structure analysis algorithms.
Most of Bioreason’s software was written in Python. It ran on various flavors of Unix and, later, Windows NT. The user interfaces were built using Gtk+ and Borland Delphi, and the applications used first MySQL and then ZODB for persistent storage.
Prediction Company, LLC
From 2004-2005 at Prediction Company I was involved in developing user interfaces for realtime monitoring and control of stock trading systems. Those interfaces, running on Solaris, were built with wxPython.
Desert Moon Consulting, LLC
In 2004 I incorporated Desert Moon Consulting, in order to perform work for Mesa Analytics & Computing. The first projects were to create Python extension modules wrapping Mesa’s C++-based fingerprinting and distance measure libraries.
Mesa Analytics & Consulting, Inc.
I joined Mesa Analytics & Computing in March, 2005, becoming the lead software engineer. For just over six years I managed Mesa’s revision control, problem-tracking and build systems, and developed dynamic web applications. I also created new user interfaces for cheminformatics applications, whether they were web-based (Django, jQuery, Sqlite) or for the desktop (Qt, C++).
Working for Mesa was a great experience, from the start in 2005 until the end in May, 2011. Mesa’s owners, John and Norah MacCuish, are good people in both a technical and a personal sense.
I worked at Numerix, LLC as a senior software engineer from June, 2011, through November, 2012. During that time I helped maintain CrossAsset and its various SDK wrappers (C++, C# and Java, mainly on Windows, Linux and Solaris) and assisted in the creation of the LiquidAsset SDK.
Figure 8, LLC
In 2011 a friend from OEE and I incorporated Figure 8, LLC. We were interested in exploring the possibilities of user interaction on multi-touch devices; so we built applications for mobile devices. We worked mainly with iOS, and mainly on color management apps.
I’m proud of the speed and responsiveness of our Paint Pro app, especially when compared to the slow vendor-specific paint matching apps available at the time. I also enjoyed learning a bit about Bluetooth LE: many of our applications integrated with the NODE+Chroma from Variable Technologies, LLC.
At the end of 2017 we dissolved the company. I blame paperwork (tax preparation) and an excess of negotiations with prospective clients. But we had fun before it was over, branching out into 3D visualizations and a couple of Android applications.
BendixKing by Honeywell
Late in 2013 I joined BendixKing by Honeywell, in Albuquerque. They offered a chance to work on mobile applications for private pilots, supporting iOS and Android. The job promised to be very interesting.
By the time I started priorities had shifted. My assignments centered on embedded firmware for aircraft instrument prototypes. I also got to help with development of embedded software for certified avionics.
The work was slow at times, owing to the safety-criticality of certified avionics (or in other words, DO-178C). But the people were technically excellent and friendly, and I was routinely amazed at the power and versatility of modern microcontrollers.
For a software developer and an inactive private pilot it's hard to think of a more appealing work environment.
Numerix, LLC part 2
I returned to Numerix in September, 2014. Much of my time there has been spent maintaining the build system for the CrossAsset SDK.
When I arrived, the build system consisted of a set of ancient Visual Studio 2003 solutions and packages; a set of Python 2 scripts to parse the VS files and to write out corresponding Makefiles; and a Makefile to drive the whole process. Builds for all platforms used this system, running under control of TeamCity.
One of my first assignments was to rewrite the system, using Python 3 and the Visual Studio 2015 solutions and packages that developers were actually using day to day, so we could retire the VS 2003 files.
Just as that work was completed, the decision was made to migrate to CMake. I helped bring the new build system to production.
I've also migrated linux builds from ancient RedHat 4.5 VMs to docker images based on CentOS 6 and Ubuntu 18.04.
I've helped maintain the CrossAsset C++, Java and C# SDKs and have been the primary maintainer for the CrossAsset Python SDK. The last of these, built using pybind11, has been the most enjoyable to maintain; it has also given me a chance to demonstrate the value of revision-controlled unit tests ;)
Fun with Languages
I like learning about new programming methodologies, tools and languages. In the past couple of years I've been using small hobby projects to learn a bit about Go and Rust.
Last year curiosity about SwiftUI sent me back to Xcode and Swift. I'm liking Swift more and more: even where the language seems at first to be lacking, I soon find the included library facilities provide everything I need.
Multi-threading is a great case in point. Sometime I should write about the elegance of copy-on-write struct semantics, concurrent dispatch queues and dispatch groups.
That said, defining protocols with associated types still gives me grief. The syntax is so similar to Python type annotations, and the semantics are so different, that I spend embarrassing amounts of time failing to define protocols.
A Long Journey with Python
My day job pays me to work mainly in C++ and Python.
My first encounter with C++ was in the mid-1980s, on VAX/VMS. That early compiler gave almost unprecedented power to a single user – to crash an entire VAX 11/750 and make thirty other students late with coursework. (For the record, I was one of the thirty other students.) My opinion of C++ has improved, slightly, since that time.
I've been using Python since 1996. For much of that time my favorite developer tools have consisted of a text editor (first GNU Emacs, then Textmate, then Sublime Text 3), a unit testing framework (unittest from the standard library) and a revision control system (CVS, Subversion, Bazaar, Mercurial, Git).
In the past few years, and especially since PyCon 2018, I've come to appreciate Visual Studio Code, PyCharm, flake8, mypy, black, and the no-longer-too-magical pytest.
The Python ecosystem and community have made my professional life much better than it would otherwise have been.
March, 2010 - poster presented at PyCon 2010
The poster demonstrates one way to integrate jQuery's QUnit unit testing framework with Python's unittest package. jQuery tests execute in configured browsers, and the results are reported as the outcomes of unittest.TestCase methods.
Panther, Python and CoreGraphics
March, 2004 - O'Reilly Mac DevCenter
This article summarizes the capabilities of the Python CoreGraphics module and shows how to use CoreGraphics to rescale and decorate images for publication to the Web.
(Reprinted in "Mac OS X Panther Hacks", O'Reilly and Associates, June, 2004)
Create User Interfaces with Glade
July, 2001 - Linux Journal
This article shows how to use gnome-python's libglade binding to build Python-based GUI applications with little manual coding.
Examining the PyGtk Toolkit
April, 2000 - Dr. Dobb's Journal - Co-authored with Brian Kelley
James Henstridge's Python wrapper for the Gtk+ toolkit makes a productive GUI prototyping tool.
Desert Moon Consulting, LLC
145 Solana Drive
Santa Fe, NM 87501