HI THERE!!
I'm Jon and this is my website! Here's my Github and here's my resume.
Take a look at the sections above, or browse some of my more interesting posts here:
The Best Comment System is No Comment System...It's a Bluesky Thread
I’ve been running this blog for a while, and I’ve always wanted a better way to engage with readers. The problem with most comment systems is that they either require users to create yet another account, are bloated with ads and trackers, or require a significant amount of infrastructure to self-host. Not worth IMO.
IncentivizeThis: the Carrot and the Click
“The Internet is dead. The Internet remains dead. And we have killed it.”
A bit dramatic? Maybe. But let’s be honest, online advertising is broken. For most businesses, especially smaller ones, the options are bleak. You can pour your budget into the coffers of giants like Google and Meta for clicks and “engagement” that often feel disconnected from real results. Or, you can navigate the complex world of influencer marketing, which is difficult to measure, hard to scale, and often comes with its own set of authenticity problems.
DuckLake: Generally Regarded as a Good Idea
Back again! I came across an interesting YouTube video about DuckLake. If you want to know about DuckLake, watch/read that content; I’m not going to regurgitate it here (I simply cannot do it justice). The gist can be summarized by this snippet from the manifesto “Once a database has entered the Lakehouse stack anyway, it makes an insane amount of sense to also use it for managing the rest of the table metadata! "
No Time for Caution: Getting Started with TimescaleDB
TimescaleDB. Is. Dope.
Back in the bad ol’ days when I worked on transient astronomy, all my timeseries data fit in memory. I’d store it in a CSV and not give it a second thought. But if you want to build a web application that leverages timeseries data, that won’t fly. You might think “I can’t store my timeseries data in a relational database, I need to stand up a whole new database for my timeseries stuff and I need to learn a whole new tsdb system and blah blah blah…”
Go and Postgres Listen/Notify or: How I Learned to Stop Worrying and Love PubSub
I was reading HackerNews a few months ago and came across this post. It demystified something I’d long wondered about but hadn’t investigated myself: PubSub with PostgreSQL. Most PubSub implementations I’ve seen rely on some sort of message broker like Redis. To be fair, the Redis PubSub interface is pretty easy to work with (I think I have a post or two showing just how easy), and if you were purely working in memory, it would be totally fine. However, most applications rely on some sort of SQL database. In that case, in order to “publish”, you have to write to the database and then notify listeners over your message broker. You end up having to maintain two systems and it’s kind of annoying.
Bringing it Together: Go, SQL, Code Gen
Hot damn, I think I have the PERFECT workflow to building an application!!! Ok, probably not, BUT I have settled on what I think is a pretty straightforward process that lets you build things real fast. In the end, you be able to build:
Kubernetes: Part 1
Welp, I finally took the Kubernetes (K8s) dive. This post is basically going to be my “lab notes” from the experience, so don’t expect too much expository prose.
Workflow Series: Apache Airflow
Good day to all! My release schedule is a bit all over the place, so this is either the first or second post in my Workflow Series that shows you how to get up and running with popular workflow engines. I have another post in the works using Temporal, but the topic of this post is going to be Apache Airflow.
Observable Plot for Fast EDA
Hello again! I’m really excited for this post; I’m going to be showing off a powerful visualization package called Plot (docs here), which is a JavaScript plotting library that came out of Observable.
Python Geographic Plotting
G’day everyone! The topic of this post focuses on geography related plotting strategies. Specifically, I’m going to show you how to get started making your own beautiful visualizations in Python so you can avoid the methods that require heftier buy-in like D3 or some dashboarding toolkits. This post is going to loosely follow this excellent guide.
Snippets: JWTs and Go
Hello again. To start off the new year, I’m going to do a “Snippets” post focused on using JWTs in Go.
Go Adapter Pattern Part 2: Router Middleware
This is the second in my series of posts showcasing how to use the “adapter pattern” in Go. If you missed Part 1, be sure to check it out because we’re going to be building on that here. For this post I’m going to show how you can adapt routes on your HTTP server with middleware functions. The inspiration for this post comes from Mat Ryer’s middleware post here.