joel@ibm:~$ whoami
Joel Hanson
Software engineer at IBM Event Streams. Kafka, Kubernetes operators, and AI tooling. I write about what I build and learn.
~/pinned
Supercharging Your AI: Setting Up RAG with PostgreSQL and pgvector
Convert Your Django DRF Project to MCP in 5 Minutes
Setting Up a Kafka Cluster Without Zookeeper Using Docker
Building an MCP Server for Your Kafka Cluster
~/posts

Wayfare: I Plan Trips More Than I Take Them
The Connector That Kept Retrying and Never Said So
Aesthetic Habit Tracker: A Challenge Grid That Lives in Your Browser
From Prompt to Home Screen: Shipping Nursing Tracker with GitHub Pages
Send Half the Bytes Over the Network: Cut Kafka Integer Payloads with Bijou64

Stream Wars: A Simple Game to Explain Kafka
~/series
Reading paths for Kafka Connect and MCP.
~/projects/platform
Kafka, MCP, connectors, and related open source work.
Apicurio Registry
Led Apicurio Registry V2→V3 for Event Streams; upstream HTTP MCP + OAuth forwarding is an open PR under review.
ContextLayer
Transform any REST API into an MCP server — connectors that make existing APIs usable by LLM tools.
Kafka MCP Server
Expose Kafka cluster operations as LLM-accessible tools via the Model Context Protocol.
bijou64
Shrink Kafka integer payloads with a compact encoding library for Java/Kafka apps.
Kafka Connector Template
Production-ready Kafka Connect template with Testcontainers integration tests.
Stream Wars
A real-time multiplayer tap battle that turns every click into a Kafka event you can inspect.
SSE Kafka Connector
Kafka Connect source that turns Server-Sent Events streams into Kafka topics — used in Event Streams demos.
Django DRF → MCP
Turn an existing Django REST Framework project into MCP tools for AI assistants in minutes.
~/projects/personal
Side apps and smaller tools.
Markdown2Medium
Convert Hugo-friendly Markdown into Medium-ready posts with a live preview and one-click copy.
Wayfare
Travel bucket list and savings tracker with MCP. Same trip context in ChatGPT, Claude, and Cursor.
Antarctic Iceberg Tracker
Real-time iceberg monitoring with NASA data, automated pipelines, and GitHub as a data platform.
Habit Tracker
Aesthetic challenge-grid habit tracker hosted on GitHub Pages.
Nursing Tracker
Home-screen PWA for nursing/feeding logs, built and shipped on GitHub Pages.
~/discoveries
Short finds: snippets, demos, and link-outs.
Wayfare: trip context over MCP and OAuth
Travel bucket list and savings tracker. Same trip data in Claude, Cursor, and ChatGPT, per user via OAuth.

Built partly to learn MCP OAuth and how to ship a secure, production-ready MCP server. Connect once, and each assistant only sees your trips and fund.
Challenge-grid habit tracker, no account
A local-only challenge grid — tap a day, export PDF, ship on GitHub Pages.

Built for “Day 12 of 30” goals instead of calendar-month trackers. Everything stays in the browser.
Shrink Kafka int payloads with bijou64
Variable-length unsigned 64-bit ints — small numbers stay small on the wire.
Drop-in Java serializers for Kafka so you can swap encoding without rewriting app logic.