Hi, I'm Jon. I'm an avid runner of mountains, trail, and ultra distances, and I work as an Analytics Engineer for
Apple's AI/ML division.
This blog has been going off and on since 2012.
In its digital pages, you'll find writings about technology, programming, running, Georgia Tech football, bike
building, homebrewing, and some personal philosophy.
These days, it's mostly running.
- Training Log - July 6, 2024
- 2024 San Diego 100 Race Report
- Niwot's Challenge 2024 Race Report
- 2023 Running Year In Review
- Ring the Springs 100 Race Report
- Jon's Paella Recipe
- Niwot's Challenge 2023 Race Report
- Barkley Marathons 2023 Race Report
- 2022 Running Year In Review
- Teanaway Country 100 Race Report
- How my first employer screwed me
- Data Engineering Lessons
- 2022 Niwot's Challenge
- 2021 Running Year In Review
- Niwot's Challenge 2021
- 2020 Running Year In Review
- 2021 Barkley Application Essay
- The 6th Annual Hallowed Hundred
- All Things End
- Why I run
- Race Report: 2020 Niwot's Challenge
- Why You Need a Data Catalog
- The Hardest Part of Running
- How I didn't run 100 miles
- Butterflies in the Woods
- Mile 78
- Race Report: Quad Rock 50 Miler
- Thoughts on Kafka Connect
- Race Report: Moab Trail Marathon
- Managing a microservice cluster
- Microservices: Documenting Inter-Service APIs
- Microservices: The Version Problem
- The Great State of Web Development
- CSP Channels in Type Theory
- Common Type Theory Abstractions
- Core.async Helpers
- A Guide to Native PostgreSQL Foreign Data Wrappers
- Reductions in Software and Startup Culture
- Providing DevOps Modernization Services
- fyra and Functional Relational Programming
- Freelancing
- Film Review: Tulane at Georgia Tech
- Film Review: Alcorn State at Georgia Tech Offense
- Pitstop: A Deferred Message Microservice
- I don't like talks about your stack
- The Dream of DevOps
- Savannah's Singlespeed
- Bikes Page
- Teaching, RefactorU, and Functional Programming
- Done with linode maintenance
- A note on the new blog
- Professional ADD
- Dockerizing Development Environments
- Auto-building Docker Images with private git submodules
- Jon's Fixie
- Javascript Concurrency Patterns
- My perfectly scalable system
- Simplicity of Form and Function
- Making Clean and Reusable Salt States
- Programming is Math
- Pebble Discs - deconstructed
- Mantra: Get shit done
- Stripe CTF3 Recap
- Rewriting haskell-spsa to be monadic
- Tethr.io - Something I'm working on
- Asset Trading in Haskell
- Haskell SPSA
- Converting a callback-based function into an ES6 Generator
- Why startups should use whatever database they want
- A recommendations algorithm in one query
- Piping uploads direct to S3 with node.js and express
- I joined Rafflecopter
- Choosing an Enterprise Service Bus
- Building a Recommendation Engine
- My mongorc file
- Turn markdown into beautiful presentations
- MongoDB Indexing @ Baltimore MongoDB Meetup
- Golang and default values
- SPSA in Go
- Diagonal Lines in Sass
- Golang Itertools
- Bold Hour (Pebble Watch Face)
- A d3.js demo with TSP
- Generators from Python to Go
- My First Pebble App
- A Sublime Text 2 Bash Completion Script
- We can't please everybody
- Follow up to the fan-in concurrency pattern
- The fan-in concurrency pattern in node.js
- Iterators using channels in Go
- Deployments at Under Armour Part 2
- The Scalable Choice: Key-Value Store
- pycodejam - A CodeJam solution runner for python
- Concurrency Models: Go vs Erlang
- Creating a content lock in MongoDB
- Stripe Capture The Flag
- Creating a web app with Go
- Taking a Leap
- My Untappd Code of Ethics
- Why I like Go
- The Second Baltimore Hackathon
- A Makefile for Go Projects
- Introducing People to Sabermetrics
- Orchestral Composition and Software Development
- New Blog