Context Engineering is the New Programming
I used to spend most of my time writing code. Now I spend most of it deciding what the model should know before it writes a single line.
–––– ––––––– –––––––– @maia_analytics
––––– ––––––– –– – –––––––––– –––––– – –––––– –– ––––––––– –––– ––––––
AI geospatial platform
Building the interface between natural language and mapping data. Ask questions, get maps — site selection, solar analysis, location intelligence.
Full-stack AI-native geospatial platform. Ask questions, get maps. LLM orchestration, agentic workflows, property data pipelines.
Personal site as system monitor. Self-hosted Astro SSR on an OptiPlex micro, exposed via Cloudflare Tunnel. Hand-crafted interactive showcases.
300-LED arm gauntlet with 16 rings on a 3D cylindrical mesh. 7 procedural effects: blast, lightning, fire, firework, casimir, twinkle, pew.
Custom split ergonomic keyboard. 7 layers with combos, home row mods, and vim-style navigation. Fully programmable firmware.
Five Spotify automations for Stream Deck. Playlist sorting, genre classification, heart sync, hotkey control, queue management.
Mobile-first dashboard for the Optiplex. CPU, memory, disk, network sparklines, cron job status, Claude sessions — all polled live. Installable PWA over Tailscale.
Version-controlled dev environment. Shell, editor, keybindings, Claude Code skills and hooks — all symlinked and synced across machines.
Routes AI agent requests for secrets (1Password) and sudo commands through Telegram for explicit approval. Claude Code plugin with PreToolUse hooks.
Fetches release notes from GitHub repos and web changelogs, parses with Claude CLI, sends formatted summaries via Telegram. Includes a bot for remote repo control.
LED cloud lamp with procedural lightning bolt generation. Branching algorithms, flashing, fading — all code-driven on an ESP32.
Scrapes Propeller rewards for new concert tickets in LA, SF, and Boulder. Sends Telegram notifications. Runs on cron.
Claude Code skill that displays files, diffs, and command output in a managed tmux side pane. Auto-routes content through Helix, delta, or less.
Classifies liked Spotify songs into existing playlists using audio features. Compares Random Forest, Gradient Boosting, SVMs, and neural networks.
Full-stack AI-native geospatial platform. Ask questions, get maps. LLM orchestration, agentic workflows, property data pipelines.
Personal site as system monitor. Self-hosted Astro SSR on an OptiPlex micro, exposed via Cloudflare Tunnel. Hand-crafted interactive showcases.
300-LED arm gauntlet with 16 rings on a 3D cylindrical mesh. 7 procedural effects: blast, lightning, fire, firework, casimir, twinkle, pew.
Custom split ergonomic keyboard. 7 layers with combos, home row mods, and vim-style navigation. Fully programmable firmware.
Five Spotify automations for Stream Deck. Playlist sorting, genre classification, heart sync, hotkey control, queue management.
Mobile-first dashboard for the Optiplex. CPU, memory, disk, network sparklines, cron job status, Claude sessions — all polled live. Installable PWA over Tailscale.
Version-controlled dev environment. Shell, editor, keybindings, Claude Code skills and hooks — all symlinked and synced across machines.
Routes AI agent requests for secrets (1Password) and sudo commands through Telegram for explicit approval. Claude Code plugin with PreToolUse hooks.
Fetches release notes from GitHub repos and web changelogs, parses with Claude CLI, sends formatted summaries via Telegram. Includes a bot for remote repo control.
LED cloud lamp with procedural lightning bolt generation. Branching algorithms, flashing, fading — all code-driven on an ESP32.
Scrapes Propeller rewards for new concert tickets in LA, SF, and Boulder. Sends Telegram notifications. Runs on cron.
AI geospatial platform
Building the interface between natural language and mapping data. Ask questions, get maps — site selection, solar analysis, location intelligence.
System monitor for my life
Public observability layer for a developer's entire digital system. Self-hosted Astro SSR on an OptiPlex micro, exposed via Cloudflare Tunnel. Every page is hand-crafted — no templates, no generic cards.
Landing beacon. Text-scramble hero intro, gradient identity mark, status pulse showing the system is alive.
Spatial network dashboard. Each project is a live node with 3 expansion states — metro-map routing lines show how everything connects.
Dev activity feed. Git commits, session notes, and build events streamed from the system — what's happening and when.
The operator behind the system. Background, stack, philosophy — why everything is built from scratch on a mini PC in the closet.
Experimental features. Interactive showcases, animation prototypes, statusline configurator — the testing ground before things go live.
Orchestrates agent-deck sessions that build and deploy this site. Every feature starts as a conductor task.
Claude Code sessions run in managed terminals — each feature branch gets its own isolated agent workspace.
Git-backed issue tracker. Tasks, bugs, and features for this site are tracked as beads with dependency chains.
The host machine. CPU, memory, service health — c2k.page will pull live telemetry from the OptiPlex status API.
Experimental page where new components are prototyped before promoting to production pages.
Claude settings, skills, hooks, and shell config — symlinked from dotfiles repo, synced across machines.
Wearable LED instrument
Custom gauntlet with 300 WS2812 LEDs, 5 per-finger buttons, rotary encoder, and OLED display. 15+ effects — blasts, fire rings, lightning, collisions — all switchable in real time.
42-key split keyboard
Custom Corne build running ZMK with urob's config. 7 layers, homerow mods, smart-shift, combos, mod-morphs, tri-state swappers, and app shortcuts — all on 42 keys.
Spotify library automation suite
Collection of Python automations that manage my Spotify library — routing songs between playlists, classifying genres, syncing liked songs, and keeping everything organized via cron.
Server monitoring PWA
Mobile-first dashboard for the Optiplex. CPU, memory, disk, network sparklines, cron job status, Claude sessions — all polled live. Installable PWA over Tailscale.
Developer environment as code
Shell, editor, Claude Code setup, and custom tools — version-controlled and synced across machines via symlinks. One repo powers everything.
Human-in-the-loop approval gate
Routes AI agent requests for secrets (1Password) and sudo commands through Telegram for explicit approval. Ships as a Claude Code plugin with PreToolUse hooks.
Daily tech release digest via Telegram
Fetches release notes from GitHub repos and web changelogs (Claude Code, Cursor, Linear, etc.), parses them with Claude CLI, and sends formatted summaries via Telegram. Includes a Telegram bot for remote repo control through a headless Claude Code session.
LLM-powered personal news briefing
Fetches RSS from 9 sources across world news, SF local, and tech. Claude Haiku generates two-tier summaries — quick scans on fetch, deep dives on tap. Self-hosted Next.js PWA served over Tailscale.
LED lightning cloud
Arduino-powered storm cloud with 4 WS2812 LED strips. Branching bolts with fork propagation, strobe flash, and smooth fade — all driven by a custom Lightning class on an ESP32.
Concert ticket monitor
Scrapes Propeller rewards for new concert tickets in LA, SF, and Boulder. Sends Telegram notifications when shows appear. Runs on cron.
I used to spend most of my time writing code. Now I spend most of it deciding what the model should know before it writes a single line.
A Dell OptiPlex micro, zero open ports, and the feeling of knowing exactly which process handles every request.
Three weeks of genuine suffering, then something clicked. Constraints are a design principle.
Five sessions running, context-switching every two minutes. Things get done but the felt sense is fragmented.
The hard part of building MAIA isn't the AI. It's the data underneath.
There are always a bunch of good sounding ideas. The hard part is killing them.
I used to spend most of my time writing code. Now I spend most of it deciding what the model should know.
A Dell OptiPlex micro, zero open ports, and knowing exactly which process handles every request.
Three weeks of genuine suffering, then something clicked. Constraints are a design principle.
Five sessions running, context-switching every two minutes. The felt sense is fragmented.
The hard part of building MAIA isn't the AI. It's the data underneath.
There are always a bunch of good sounding ideas. The hard part is killing them.
I'm Christopher Keesey — C2K. I'm building MAIA Analytics, an AI-native geospatial platform where you ask questions and get maps. Day to day that means LLM orchestration, agentic workflows, and a lot of property data pipelines — TypeScript, Python, FastAPI, Postgres, Claude Code. I care about simple code, minimal abstraction, and shipping.
When I'm not building, I'm surfing the Outer Sunset, skiing backcountry, or mixing dubstep and drum & bass. I solder things that don't need to exist — LED gauntlets, lightning clouds, split keyboards. Everything I use is version-controlled, self-hosted where it matters, and accessible from anywhere. This site is the public layer of that system.