Blog
Notes from the side projects: charts, chat assistants, and the lessons in between.
2026
Aug 315 min read
How michi-chat works
The journey of one question through michi-chat: guardrails, the semantic cache, the tool loop, and why a LiteLLM proxy makes the AI model a config edit instead of a rewrite.
Aug 304 min read
Introducing michi-chat
A small self-hostable chat assistant platform for small businesses: multi-tenant, grounded in tools and RAG, and built to never invent a fact. The first tenant is Mugshot Artisan Cafe of mugshotmnl.com.
Aug 263 min read
michi-vz chart by chart: sankey and the fountain
Part 9 of 9 in the chart-by-chart series. The finale: flows whose thickness is the accounting, and the Jet d'Eau signature chart. All 22 charts, toured.
Aug 264 min read
michi-vz chart by chart: the maps
Part 8 of 9 in the chart-by-chart series. Choropleth and symbol map: bring your own GeoJSON, shade by threshold scale or plot de-overlapped circles at real coordinates.
Aug 263 min read
michi-vz chart by chart: tornado and bar-bell
Part 7 of 9 in the chart-by-chart series. Two bar specialties: opposing values on a shared centre line, and cumulative segments with end-caps.
Aug 264 min read
michi-vz chart by chart: gap and comparable bars
Part 6 of 9 in the chart-by-chart series. Before-and-after three ways: endpoint gaps, overlaid horizontal bars, and diverging columns with change arrows.
Aug 264 min read
michi-vz chart by chart: gauge, radar and radial tree
Part 5 of 9 in the chart-by-chart series. The round ones: progress rings, criteria polygons, and a radial dendrogram with adaptive labels.
Aug 263 min read
michi-vz chart by chart: scatter and bubble
Part 4 of 9 in the chart-by-chart series. Correlation clouds with a third variable as size, and gravity-packed bubbles when size is the whole story.
Aug 263 min read
michi-vz chart by chart: pie, donut and treemap
Part 3 of 9 in the chart-by-chart series. Part-of-whole snapshots: wedges for a handful of categories, tiles for many, and a realized-vs-untapped split.
Aug 264 min read
michi-vz chart by chart: area, stack bar and ribbon
Part 2 of 9 in the chart-by-chart series. Composition over time three ways: smooth stacks, discrete bars, and ribbons that follow a category as it trades places.
Aug 265 min read
michi-vz chart by chart: line, range and fan
Part 1 of 9 in the chart-by-chart series. Time series with honest uncertainty: solid history, shaded spreads, and forecasts that admit they are forecasts. Live examples included.
Aug 263 min read
Introducing @michi-vz: charts that survive a stack change
One TypeScript engine, 22 chart types, and the same charts in React, Vue, Svelte, Angular or plain web components. Why I built michi-vz and how to get your first chart on screen.