I am a software architect, engineer, and manager with over thirty years of experience building teams and products of all sizes. I have worked at small startups and big companies, with the common thread being a passion for helping people work together to achieve their career and technical goals.
My job as a software architect tends to consist of:
- Helping people feel more confident in their work. Usually by asking questions, working with people to discover (and address) unknowns, putting people in touch with others in similar problem spaces, and by being a resource that teams can go to when they are not sure what to do next.
- Reducing the cognitive load of systems. Distributed systems by their nature tend to be inherently complex, but you also have a lot of agency in where and how that complexity surfaces in the design. Sometimes making one component more complicated means that the system as a whole becomes simpler to manage and understand. Those tradeoffs are easier to see when specific members of your team (like architects!) are tasked with operating at the system level instead of at the component level. Conversely, as engineers we can be more effective in the day-to-day when we do not have to deal with systemic complexity as part of building those components.
- Planning for the future. Key to accomplishing both of the above goals is to stay abreast of which technologies and architectural patterns are likely to become widespread in the future. Everyone needs time to move towards a new paradigm, and it’s easier to make that happen when you take a stepwise approach to change instead of trying to change everything all at once.
I love learning new things, and those explorations often turn into side projects of all shapes and sizes. Some of my favorites are linked below:
- MFORTH is the Forth environment I created as an excuse to buy the TRS-80 Model 100 laptop I always wanted as a kid. It even includes a full assembler and multitasker, all in 12KB of ROM! Later, I created Enforth as a way to bring interactive development to the Arduino environment.
- Empty Magic was my first large-scale desktop app and was a fun way to get to know the ins and outs of the Elektron Machinedrum.
- eioMAIL.com was the culmination of fifteen years of study into the design and implementation of email systems. Still my favorite email system, but sadly not commercially-viable enough to still be in operation.
- I am more programmer than artist, so programming artwork has been a fun way to experiment in both spaces; La vie en cloj is a ClojureScript experiment for generative art.
- More recently I have been building projects in Rust and open-sourcing the various tools I use to power Rust-based services: Ground Control is a UNIX process manager for Docker systems and micro-VMs; Super Guppy is a private crate registry; and dialtun is like ngrok, if ngrok’s mission statement consisted solely of the “YOLO” emoji.