Projects
The public ones worth pointing at, all on github.com/czabriskie. Some of it I use every day, some of it existed to answer one question, and the rest is what I teach from.
Tools I use
Built because I wanted the thing, and I still run all four of them.
-
obsidian-confluence-plugin
TypeScriptTwo-way sync between a folder in my Obsidian vault and a Confluence space. The vault is the master for structure, so creates, moves, and deletes only flow one direction, while edits to pages already being tracked flow both ways. It hashes content so it can skip API calls nothing changed for, re-creates pages that got deleted on the Confluence side, and links to an existing page instead of falling over when a title collides.
-
obsidian-cloud-sync
ShellWhat lets a Claude Code cloud session read my notes. Obsidian Sync is end-to-end encrypted and has no API, so there is nothing to call remotely; instead the container becomes a sync device using the official headless client, and a SessionStart hook pulls the vault at the start of every cloud session. Locally it does nothing, because the desktop app is already syncing there and running both at once causes conflicts.
-
camzabriskie.com
AstroThis site. Static Astro, no client-side framework, one stylesheet, deployed to GitHub Pages on push to main. Posts are plain markdown files and their byte numbers get worked out at build time from the date order, so I never have to hand-assign one.
-
mcp-server
PythonA small Model Context Protocol server I wrote to understand the protocol from the inside, with a current-time tool and weather alert and forecast resources. There is a setup script that writes the Claude Desktop config for you, on macOS or through WSL, which was most of where I learned something.
Things I built
Some of these answered a question I had, some of them I just wanted to exist. None of them are anyone's job.
-
researcher
Python · Terraform · ReactAgentic lead discovery for bank sales teams going after equipment loans. You hand it a research task in plain language, an orchestrator Lambda has Claude plan the steps, and worker Lambdas run them in order: search, scrape, normalize, then score each lead with an LLM. Results land in Aurora Serverless and show up in a React frontend with CSV export. Every bit of the AWS side is Terraform.
-
A dependency-free site for browsing NASA's EPIC imagery, which is Earth photographed from a million miles out at the L1 point. Coverage is irregular, so the calendar grays out the days with no imagery before you go hunting for a date that was never captured. Day view animates a whole day of frames, range view is a filmstrip, compare view puts two dates side by side, and every view has a shareable URL.
-
The Python client underneath the EPIC work. Command-line tools for pulling images and metadata for a given date and collection, either into a local directory or straight to S3, with Lambda integration for running it on a schedule.
-
invoke-bedrock-agents
PythonA small CLI for talking to an AWS Bedrock agent, with session handling and every conversation logged with timestamps. Partly an excuse to keep the tests, linting, type checking, and CI honest on something small enough to see all of.
-
follicle-force-3000
FlaskA parody late-night infomercial for a hair growth product that does not exist, complete with a countdown timer that changes at random and testimonials that wobble when you click them. Flask and SQLite behind it, Packer building the AMI it deploys onto. The joke is fake and the deployment path is real.
Teaching examples
Course material for IS 3600, the cloud computing class I teach at Utah State. Each one is deliberately the smallest thing that still demonstrates the idea, because students have to be able to read all of it in one sitting.
- microservices-application-example a Flask message board and Postgres wired together into one application
- lambda-practice a containerized Lambda you can run locally against the runtime emulator first
- github-actions-practice a file-encoding CLI, there to give the pipeline something real to test and lint
- code-deploy-practice Actions packaging the repo to S3 and handing the bundle off to CodeDeploy
- simple-packer baking a tagged Ubuntu AMI with a script provisioned onto it
- simple-glue-athena querying flight data sitting in S3 with SQL, from Python, into a DataFrame
- lazy-loading a DynamoDB app with a Redis cache you can switch off to watch the latency come back