Skip to content
View datapointchris's full-sized avatar
🤓
🤓

Block or report datapointchris

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
datapointchris/README.md

Chris Birch

Data engineer — pipelines, warehousing, and the cloud platforms around them.

Most of my data engineering is corporate and lives in private repositories, so it isn't on this profile. What's here is what I build off the clock: a personal software ecosystem, treated as production rather than as throwaway projects — deployed on a homelab, tested, and used every day.

Selected work

Platform

  • ichrisbirch — personal life-management platform and the oldest thing here. FastAPI + PostgreSQL + Vue 3, with Redis, a scheduler service, and a Streamlit chat interface behind Traefik: tasks, habits, books, projects, events, articles, recipes. It deploys blue/green on the homelab, so a push to main swaps container sets with zero downtime, and icb — a Go CLI over the same API — is the front door for scripts and for Claude.
  • dotfiles — one configuration tree for macOS, Arch Linux, and WSL, installed from a per-machine manifest. Configs are written once in common/ and overridden only where a platform forces it. The installer is built for hostile networks: one download failing doesn't abort the run, and the install ends with a report of exactly what's missing and how to install it by hand.

Tools

  • theme — one theme across the whole desktop, not just the terminal. Thirty generators write Ghostty, Kitty, Alacritty, tmux, Neovim, btop, bat, delta, yazi, waybar, rofi, dunst, hyprlock, VS Code, and Firefox from a single theme apply, on macOS, Arch/Hyprland, and WSL. It also generates or recolors the wallpaper to match, so the machine changes look all at once instead of one config at a time.
  • font — the same idea for fonts: one apply writes every terminal on the machine. Every apply, like, dislike, and rejection is logged, so it ranks fonts two ways — by what I said I liked, and by hours actually used. The two lists disagree, which is the interesting part.
  • syncer — checks that every local repo is actually pushed before I switch machines. Fetches all repos concurrently, classifies each branch (ahead, behind, diverged, gone), and reports what a per-machine policy would do; acting on it is opt-in. Output is ordered so the repos needing attention land at the bottom, next to the prompt, rather than scrolling off the top.
  • todoui — Bubble Tea TUI for projects and tasks, on local SQLite with background sync to ichrisbirch. It never blocks on the network: changes made while the API is unreachable queue and retry themselves, and a pending refresh waits while you're mid-edit instead of moving the ground under you.
  • forge — runs commands and managed scripts across every repo in a shared registry. The scripts are embedded in the binary, so a fresh machine gets the entire library from one go install — nothing to clone, sync, or symlink first.
  • toolbox — answers "what did I install six months ago, and why?" Searches a registry of every CLI tool in my dotfiles by name, tag, description, and why-I-use-it note, and reads shell functions and aliases straight out of the dotfiles source, so the listing can't drift from what's installed.
  • goselfupdate — the update command for CLIs released with goreleaser: check GitHub, pick the right asset, replace the running binary, print the changelog. The core package imports only the standard library.

Apps

  • meso — mobile-first training app. Movements compile into workouts, workouts sequence into goal-directed mesocycles, sessions get logged against them. Go API + Go CLI + Vue 3. The CLI is a first-class surface rather than an afterthought, so Claude can read the real session history and help draft the next cycle. Defined as much by what it leaves out — no videos, streaks, badges, or motivational copy.
  • chris-birch — my blog, chris-birch.com. Astro static site with a design system ported from ichrisbirch: 14 themes and 14 self-hosted fonts, switchable at runtime and applied before first paint so there's no flash of the wrong theme.
  • timeline — interactive historical timeline with relationship mapping (Vue 3).

Smaller pieces

  • logsift — LLM-assisted log analysis.
  • shadows — sync files that live in a git repo but shouldn't be committed.
  • typos — passive typing analyzer; captures real prose keystrokes in Neovim.
  • keymap-align — aligns ZMK keymap bindings to the keyboard's physical layout.
  • markdown-toc.nvim — generate and auto-update a table of contents.
  • flexoki-moon-nvim — Neovim colorscheme, dark and purple.
  • webviewrs — Rust webview wrapper.

A few larger pieces stay private: a Proxmox homelab, a content-synthesis engine (relate), semantic search across every repo and note I own (indy), a city-research app (nomad), and a structured-learning tracker.

Skills

Area Technologies
Languages Python · SQL · Go · Bash · TypeScript · Scala
Data & pipelines PySpark · Polars · pandas · Databricks · Iceberg · Parquet · PostgreSQL
Cloud AWS (S3, Redshift, Glue, Lambda, Kinesis, EC2, IAM, RDS, DynamoDB) · Azure (Data Factory, Entra ID, Storage)
Modeling & serving dimensional modeling · FastAPI · Flask · REST APIs · CLI-first tooling
Platform Linux · Docker · Terraform · Traefik · blue/green deploys · git-based workflows

Pinned Loading

  1. syncer syncer Public

    Python

  2. chatter chatter Public

    Python

  3. ichrisbirch ichrisbirch Public

    Python

  4. mask-rcnn-scooters mask-rcnn-scooters Public

    Training the Matterport Mask R-CNN Model to Recognize Electric Scooters

    Jupyter Notebook

  5. dotfiles dotfiles Public

    Dotfiles for the world

    Shell