<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Zach Goldstein</title><link>/</link><description>Recent content on Zach Goldstein</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Fri, 06 Mar 2026 00:00:00 -0500</lastBuildDate><atom:link href="/index.xml" rel="self" type="application/rss+xml"/><item><title>DBT-Powered Production Tests</title><link>/posts/dbt-production-tests/dbt-production-tests/</link><pubDate>Fri, 06 Mar 2026 00:00:00 -0500</pubDate><guid>/posts/dbt-production-tests/dbt-production-tests/</guid><description>With my team, I&amp;rsquo;ve been exploring a new strategy for detecting bugs in production. We&amp;rsquo;ve found this to be very effective in flagging issues that slip through more traditional test suites and observability efforts. I wanted to quickly document this approach and write up what we&amp;rsquo;ve discovered after using this in production with hundreds of thousands of users for the better part of a year.
In a nutshell, we use DBT to write SQL queries that test for incorrect state, and every night the test suite runs and posts to Slack with each test that crosses specific warn/error thresholds.</description></item><item><title>In Defense of Crusty Old Swiss Army Knives</title><link>/posts/crusty-knives/crusty-knives/</link><pubDate>Tue, 14 Mar 2023 09:53:44 -0400</pubDate><guid>/posts/crusty-knives/crusty-knives/</guid><description>I’m a fan of crusty old knives.
There’s a cold familiarity to them; you know what they’re good for and what they’re not, and despite their age, they remain largely the same as how you left them. In software, there aren’t a lot of tools that are allowed to get old. I feel like the default state is just a drop-off into obscurity.
But Django got old! Its twentieth birthday is almost here.</description></item><item><title>HTMX with a fake backend - hypermedia-server</title><link>/posts/hypermedia-server/hypermedia-server/</link><pubDate>Fri, 20 Jan 2023 14:53:31 -0500</pubDate><guid>/posts/hypermedia-server/hypermedia-server/</guid><description>HTMX is an awesome tool to quickly add some dynamic behaviour to the frontend of applications, without alot of the machinery associated with feature rich frameworks like react, svelte or vue.
When starting projects, I’m often looking to translate a rough design or flow into interactive pages. Figma can be great first step to move towards a clickable prototype, but what’s the next? HTMX fits in really nicely to this stage, where I’d like to shift over into real markup and begin fleshing out some of the high-level model objects.</description></item><item><title>Making Crystals Come Alive With Resin Prints, Itty Bitty Boards and OpenSCAD</title><link>/posts/glowycrystals/glowycrystals/</link><pubDate>Tue, 01 Nov 2022 13:19:04 -0400</pubDate><guid>/posts/glowycrystals/glowycrystals/</guid><description>I started as simple as I could Then I threw a protoboard on it Blue tack does not get you far, off to KiCAD People Liked Them! Taking it further with openSCAD Testing out a variety of different hull thicknesses for diffusion I love building little art projects, especially for events. It’s a great way to experiment with physical projects and explore new ideas. This summer, I had a lot of fun building some stuff ahead of Hyperborea (and Hypoborea, the subsequent event scheduled after a site conflict cancelled the original gathering).</description></item><item><title>MechaTarot - The Self-Serve Tarot Machine</title><link>/posts/mechatarot/mechatarot/</link><pubDate>Thu, 22 Sep 2022 12:22:38 -0400</pubDate><guid>/posts/mechatarot/mechatarot/</guid><description>The Inciting Incident So What Is This? Kicking Things Off Thermal Printer Bitamp Adventures Moving To Protoboard Mechanical Design The Cards Protoboard To PCB The Event What’s Next For This Project? This summer, I built a fun little machine that does Tarot readings! This is the story of how it came to be, warts and all. I learned a ton about how to piece together a project spanning mechanical and electrical systems.</description></item><item><title>Work Experience</title><link>/posts/previouswork/</link><pubDate>Fri, 05 Jul 2019 15:27:11 -0400</pubDate><guid>/posts/previouswork/</guid><description>Recurse Center Participant Jan 2023 – Mar 2023 Participated in Recurse Center, an educational retreat designed to make people dramatically better programmers. Alongside an incredible batch of people, explored a variety of technical ideas within the self-directed environment of RC. Explored HTMX and Django in detail, trying to understand the possibilities and limits of using minimal JS libraries with battle-hardened python frameworks. https://zachgoldstein.engineering/posts/crusty-knives/crusty-knives/ Completed the Fly.io gossip glomers challenges in Go.</description></item><item><title>Technical Talks</title><link>/posts/talklisting/</link><pubDate>Fri, 05 Jul 2019 13:55:19 -0400</pubDate><guid>/posts/talklisting/</guid><description>Here&amp;rsquo;s a listing of technical talks I&amp;rsquo;ve done in the past:
Recurse Center March 2023 In Defense of Crusty Old Swiss Army Knives - Exploring Django and HTMX Polyhack March 2018 - Simple, Minimal, Production-Ready RPC in Golang with Twirp Polyhack July 2018 - Trippy triangles with ThreeJS TorontoJS Workshop November 2018 - Building a penrose triangle in ThreeJS GoTO October 2018 - Writing Slackbots With Goroutines MelbJS 2014 - Meteor 101 Decompress AU 2014</description></item><item><title>Writing Slackbots With Goroutines</title><link>/posts/slackbots/slackbots/</link><pubDate>Thu, 12 Jul 2018 13:20:19 -0400</pubDate><guid>/posts/slackbots/slackbots/</guid><description>It all started with a meme.
This one involved created an insult from everybody’s favorite abusive television chef, Gordon Ramsay, by picking a value from three columns.
First, you take your month of birth and match it up with an aggressive statement. So let’s say you were born in November, your statement would be “Get a Grip!”. Then take the first letter of your first name and do the same. If your name is Sam, then the next part would be “You Proud”.</description></item><item><title>Simple, minimal, production-ready RPC in golang with twirp</title><link>/posts/rpctwirp/rpcwithtwirp/</link><pubDate>Tue, 12 Jun 2018 13:11:29 -0400</pubDate><guid>/posts/rpctwirp/rpcwithtwirp/</guid><description>The more code you write, the greater the surface for potential bugs. In traditional REST APIs, you often get stuck writing lots of routing and serialization code, which can often get out of sync as your application grows. RPC (Remote Procedure Call) libraries come to the rescue here, generating a lot of this client &amp;amp; server code for you so you can focus on your implementations.
Previously, RPC usage in golang was centered around a couple larger libraries, gokit and grpc.</description></item><item><title>Safely Carving Away a Snappy Golang Service from a Javascript Monolith</title><link>/posts/golangcarving/golangcarving/</link><pubDate>Thu, 12 Apr 2018 11:37:47 -0400</pubDate><guid>/posts/golangcarving/golangcarving/</guid><description>In a 2015 post, good ol&amp;rsquo; Martin Fowler put it well:
Almost all the successful microservice stories have started with a monolith that got too big and was broken up (https://martinfowler.com/bliki/MonolithFirst.html)
So what does that process look like? In this post, we&amp;rsquo;re going to go on a little journey and carve away a high-performance service from a very simple node app. We&amp;rsquo;ll do load testing to verify our bottleneck, create a protobuf file to clearly communicate the service boundary, and then integrate a golang server implemented with an RPC library called Twirp.</description></item><item><title/><link>/posts/glowycrystals/making-crystals-come-alive-with-resin-prints-itty-6c71bcb68b364d6db9021e9e143cc85a/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/posts/glowycrystals/making-crystals-come-alive-with-resin-prints-itty-6c71bcb68b364d6db9021e9e143cc85a/</guid><description>Making Crystals Come Alive With Resin Prints, Itty Bitty Boards and OpenSCAD [REVIEW DRAFT] Reading time: 5 min 36 sec
20220518_220210_1_1.mov
I love building little art projects, especially for events. It’s a great way to experiment with physical projects and explore new ideas. This summer, I had a lot of fun building some stuff ahead of https://www.tohyperborea.ca/ (and Hypoborea, the subsequent event scheduled after a site conflict cancelled the original gathering).</description></item></channel></rss>