<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Bits By Me</title><link>https://bitsby.me/</link><description>Recent content on Bits By Me</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Sat, 06 Feb 2021 11:33:10 -0700</lastBuildDate><atom:link href="https://bitsby.me/index.xml" rel="self" type="application/rss+xml"/><item><title>Featured</title><link>https://bitsby.me/featured/</link><pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate><guid>https://bitsby.me/featured/</guid><description/></item><item><title>Popular</title><link>https://bitsby.me/popular/</link><pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate><guid>https://bitsby.me/popular/</guid><description/></item><item><title>Cookie-free analytics with GoatCounter on Hugo</title><link>https://bitsby.me/til/2026-05-08/goatcounter-on-hugo/</link><pubDate>Fri, 08 May 2026 11:46:03 -0600</pubDate><guid>https://bitsby.me/til/2026-05-08/goatcounter-on-hugo/</guid><description>The two Hugo template gates that keep dev-server pageviews out of production analytics.</description></item><item><title>Technology Is Not the Change You Are Managing</title><link>https://bitsby.me/2026/05/technology-is-not-the-change-you-are-managing/</link><pubDate>Fri, 08 May 2026 09:50:22 -0600</pubDate><guid>https://bitsby.me/2026/05/technology-is-not-the-change-you-are-managing/</guid><description><img src="https://bitsby.me/2026/05/technology-is-not-the-change-you-are-managing/adkar-gates-diagram.png" alt="Technology Is Not the Change You Are Managing" style="max-width: 100%; height: auto;"/><br/><br/>AI is the technology change of the moment, and like every technology change before it, the technology is not the change being managed.
This piece treats ADKAR&amp;mdash;Prosci&amp;rsquo;s five-gate model of individual change&amp;mdash;as a diagnostic for the people side of any technology transformation, with a data center migration as the worked example.</description><enclosure url="https://bitsby.me/adkar-gates-diagram.png" type="image/jpeg"/></item><item><title>Capacity at Multiple Levels</title><link>https://bitsby.me/2026/05/capacity-at-multiple-levels/</link><pubDate>Wed, 06 May 2026 22:50:05 -0600</pubDate><guid>https://bitsby.me/2026/05/capacity-at-multiple-levels/</guid><description><img src="https://bitsby.me/2026/05/capacity-at-multiple-levels/specialization-heat-map.png" alt="Capacity at Multiple Levels" style="max-width: 100%; height: auto;"/><br/><br/>Determining team and organization capacity for work is relatively simple in theory, and gets messy and even emotional in practice.
Here&amp;rsquo;s a synthesis of a lot of practices from across a bunch of books, articles, and tech companies into a single playbook.</description><enclosure url="https://bitsby.me/specialization-heat-map.png" type="image/jpeg"/></item><item><title>Up and running with Pi</title><link>https://bitsby.me/til/2026-05-06/up-and-running-with-pi/</link><pubDate>Wed, 06 May 2026 22:04:50 -0600</pubDate><guid>https://bitsby.me/til/2026-05-06/up-and-running-with-pi/</guid><description>Instructions and tips for getting the pi.dev agent harness running on a Mac with 8GB of RAM.</description></item><item><title>Tooling to build learning micro-sites</title><link>https://bitsby.me/til/2026-05-01/tooling-to-build-learning-micro-sites/</link><pubDate>Fri, 01 May 2026 22:13:14 -0600</pubDate><guid>https://bitsby.me/til/2026-05-01/tooling-to-build-learning-micro-sites/</guid><description><img src="https://bitsby.me/til/2026-05-01/tooling-to-build-learning-micro-sites/hero.png" alt="Tooling to build learning micro-sites" style="max-width: 100%; height: auto;"/><br/><br/>Train My Brain is a Claude Code plugin that builds micro-sites for personal learning. Have an esoteric learning need? Spin up a site&amp;mdash;modules, exercises, and a glossary, served locally and ready to publish.</description><enclosure url="https://bitsby.me/hero.png" type="image/jpeg"/></item><item><title>Systems, Not Individuals, Determine Product Quality</title><link>https://bitsby.me/2026/04/systems-not-individuals-determine-product-quality/</link><pubDate>Fri, 24 Apr 2026 11:07:03 -0400</pubDate><guid>https://bitsby.me/2026/04/systems-not-individuals-determine-product-quality/</guid><description><img src="https://bitsby.me/2026/04/systems-not-individuals-determine-product-quality/magnus-engo-W4lcqyH9r8c-unsplash.jpg" alt="Systems, Not Individuals, Determine Product Quality" style="max-width: 100%; height: auto;"/><br/><br/>When a software product has reliability problems, slow delivery, or mounting technical debt, the instinct in tech leadership is to hire better engineers, performance-manage underperformers, or add process.
These responses usually address the wrong cause.
The engineers are working within a system.
Fix the system.</description><enclosure url="https://bitsby.me/magnus-engo-W4lcqyH9r8c-unsplash.jpg" type="image/jpeg"/></item><item><title>Markdown to PDF on Mac</title><link>https://bitsby.me/til/2026-04-15/markdown-to-pdf-on-mac/</link><pubDate>Wed, 15 Apr 2026 10:57:26 -0400</pubDate><guid>https://bitsby.me/til/2026-04-15/markdown-to-pdf-on-mac/</guid><description><img src="https://bitsby.me/til/2026-04-15/markdown-to-pdf-on-mac/output.png" alt="Markdown to PDF on Mac" style="max-width: 100%; height: auto;"/><br/><br/>How to convert a Markdown file to a PDF with pleasant fonts and great footnotes using pandoc and TeX.</description><enclosure url="https://bitsby.me/output.png" type="image/jpeg"/></item><item><title>Estimation at Multiple Levels</title><link>https://bitsby.me/2026/04/estimation-at-multiple-levels/</link><pubDate>Tue, 14 Apr 2026 22:21:01 -0400</pubDate><guid>https://bitsby.me/2026/04/estimation-at-multiple-levels/</guid><description>Estimation is a dirty word in software and it has been for decades.
But is it always bad?
Are there times or situations where estimates add a degree of clarity without being dishonest?
I think so, but for me, the situations are limited and &amp;lsquo;how much time do we have&amp;rsquo; is often the better starting point.</description></item><item><title>Bookend agents for product quality</title><link>https://bitsby.me/2026/04/bookend-agents-for-product-quality/</link><pubDate>Sat, 11 Apr 2026 10:58:17 -0600</pubDate><guid>https://bitsby.me/2026/04/bookend-agents-for-product-quality/</guid><description><img src="https://bitsby.me/2026/04/bookend-agents-for-product-quality/cmw-editor.png" alt="Bookend agents for product quality" style="max-width: 100%; height: auto;"/><br/><br/>Claude kept apologizing for skipping my expectation-based testing rules&amp;hellip;and then skipping then again 2 minutes later.
This is how I replaced best-effort written instructions with two deterministic
gates that I call bookends because they surround
the agent with boundaries that cannot be ignored.</description><enclosure url="https://bitsby.me/cmw-editor.png" type="image/jpeg"/></item><item><title>launchd PATH whack-a-mole</title><link>https://bitsby.me/til/2026-04-04/launchd-path-whack-a-mole/</link><pubDate>Sat, 04 Apr 2026 11:00:00 -0600</pubDate><guid>https://bitsby.me/til/2026-04-04/launchd-path-whack-a-mole/</guid><description>macOS Launch Agents have a minimal PATH. Here&amp;rsquo;s how to stop playing whack-a-mole every time you add a new tool.</description></item><item><title>Caddy and Tailscale on reboot</title><link>https://bitsby.me/til/2026-04-04/caddy-and-tailscale-on-reboot/</link><pubDate>Sat, 04 Apr 2026 10:00:00 -0600</pubDate><guid>https://bitsby.me/til/2026-04-04/caddy-and-tailscale-on-reboot/</guid><description>Getting Caddy and Tailscale to serve multiple local apps on reboot without thinking about it.</description></item><item><title>Pear-ish theme for Zed</title><link>https://bitsby.me/til/2026-04-02/pear-ish-theme-for-zed/</link><pubDate>Thu, 02 Apr 2026 14:01:05 -0600</pubDate><guid>https://bitsby.me/til/2026-04-02/pear-ish-theme-for-zed/</guid><description><img src="https://bitsby.me/til/2026-04-02/pear-ish-theme-for-zed/pearish-dark.png" alt="Pear-ish theme for Zed" style="max-width: 100%; height: auto;"/><br/><br/>I made a warm, earthy theme for Zed. It took exactly a month to get merged.</description><enclosure url="https://bitsby.me/pearish-dark.png" type="image/jpeg"/></item><item><title>Flow metrics for work in GitHub</title><link>https://bitsby.me/2026/04/flow-metrics-for-work-in-github/</link><pubDate>Thu, 02 Apr 2026 11:29:15 -0600</pubDate><guid>https://bitsby.me/2026/04/flow-metrics-for-work-in-github/</guid><description><img src="https://bitsby.me/2026/04/flow-metrics-for-work-in-github/hero.png" alt="Flow metrics for work in GitHub" style="max-width: 100%; height: auto;"/><br/><br/>I built a GitHub CLI extension for engineering flow metrics. Here&amp;rsquo;s
the philosophy behind it, and two stories about what went wrong.</description><enclosure url="https://bitsby.me/hero.png" type="image/jpeg"/></item><item><title>Caddy + Tailscale for Remote File Serving</title><link>https://bitsby.me/til/2026-04-02/caddy--tailscale-for-remote-file-serving/</link><pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate><guid>https://bitsby.me/til/2026-04-02/caddy--tailscale-for-remote-file-serving/</guid><description>Serving a local HTML file over your tailnet with Caddy, Tailscale, and a macOS LaunchAgent.</description></item><item><title>Building the 'Jobs For Me' Agent</title><link>https://bitsby.me/2026/03/building-the-jobs-for-me-agent/</link><pubDate>Tue, 31 Mar 2026 10:00:00 -0600</pubDate><guid>https://bitsby.me/2026/03/building-the-jobs-for-me-agent/</guid><description><img src="https://bitsby.me/2026/03/building-the-jobs-for-me-agent/og.png" alt="Building the 'Jobs For Me' Agent" style="max-width: 100%; height: auto;"/><br/><br/>What I learned building an AI job search agent as a Claude Work plugin
in three days&amp;mdash;and why I open-sourced it instead of selling it.</description><enclosure url="https://bitsby.me/og.png" type="image/jpeg"/></item><item><title>Building a language in Go</title><link>https://bitsby.me/2026/03/building-a-language-in-go/</link><pubDate>Sat, 21 Mar 2026 10:00:00 -0600</pubDate><guid>https://bitsby.me/2026/03/building-a-language-in-go/</guid><description><img src="https://bitsby.me/2026/03/building-a-language-in-go/architecture-hero.png" alt="Building a language in Go" style="max-width: 100%; height: auto;"/><br/><br/>What I learned building CalcMark — a calculation language embedded in markdown — in Go.
Lexers, parsers, type systems, and the tradeoffs that bit me.</description><enclosure url="https://bitsby.me/architecture-hero.png" type="image/jpeg"/></item><item><title>Thick and Creamy Tomato Soup</title><link>https://bitsby.me/recipes/thick-and-creamy-tomato-soup/</link><pubDate>Fri, 13 Mar 2026 12:00:00 -0700</pubDate><guid>https://bitsby.me/recipes/thick-and-creamy-tomato-soup/</guid><description/></item><item><title>Teaching agents to use CalcMark</title><link>https://bitsby.me/til/2026-03-12/teaching-agents-to-use-calcmark/</link><pubDate>Thu, 12 Mar 2026 19:20:48 -0600</pubDate><guid>https://bitsby.me/til/2026-03-12/teaching-agents-to-use-calcmark/</guid><description>I wrote an agent skill so Claude Code can use CalcMark for calculations. Then I asked Claude what was hard, and it taught me a few things about building tools for agents.</description></item><item><title>Compound engineering</title><link>https://bitsby.me/2026/03/compound-engineering/</link><pubDate>Sat, 07 Mar 2026 09:52:58 -0700</pubDate><guid>https://bitsby.me/2026/03/compound-engineering/</guid><description><img src="https://bitsby.me/2026/03/compound-engineering/calcmark-hero.gif" alt="Compound engineering" style="max-width: 100%; height: auto;"/><br/><br/>How I used compound engineering to build a real product as a solo developer.
Not &amp;ldquo;look how many commits I made&amp;rdquo; but &amp;ldquo;look at the quality and speed of
issue resolution.&amp;rdquo; The data tells the story.</description><enclosure url="https://bitsby.me/calcmark-hero.gif" type="image/jpeg"/></item><item><title>Accelerating Hiring at a SaaS Company</title><link>https://bitsby.me/work/ai-hiring-pipeline/</link><pubDate>Mon, 02 Mar 2026 12:00:00 -0600</pubDate><guid>https://bitsby.me/work/ai-hiring-pipeline/</guid><description><img src="https://bitsby.me/work/ai-hiring-pipeline/bamboo.png" alt="Accelerating Hiring at a SaaS Company" style="max-width: 100%; height: auto;"/><br/><br/>Built an AI-powered candidate screening pipeline using Claude, BambooHR, and GitHub Actions that reduced 1,000+ applicants to fewer than 300 requiring manual review.
Part of a broader rethink of the client&amp;rsquo;s engineering hiring process.</description><enclosure url="https://bitsby.me/bamboo.png" type="image/jpeg"/></item><item><title>Braised Beef Short Ribs</title><link>https://bitsby.me/recipes/braised-beef-short-ribs/</link><pubDate>Sun, 01 Feb 2026 10:00:00 -0700</pubDate><guid>https://bitsby.me/recipes/braised-beef-short-ribs/</guid><description/></item><item><title>Caddy File Server</title><link>https://bitsby.me/til/2026-01-23/caddy-file-server/</link><pubDate>Fri, 23 Jan 2026 19:36:22 +0000</pubDate><guid>https://bitsby.me/til/2026-01-23/caddy-file-server/</guid><description><img src="https://bitsby.me/til/2026-01-23/caddy-file-server/listing.png" alt="Caddy File Server" style="max-width: 100%; height: auto;"/><br/><br/>Using Caddy as a web server for a local file system.</description><enclosure url="https://bitsby.me/listing.png" type="image/jpeg"/></item><item><title>Chicken Thigh Tacos</title><link>https://bitsby.me/recipes/chicken-thigh-tacos/</link><pubDate>Fri, 19 Dec 2025 14:46:47 -0700</pubDate><guid>https://bitsby.me/recipes/chicken-thigh-tacos/</guid><description/></item><item><title>Clotted Cream</title><link>https://bitsby.me/recipes/clotted-cream/</link><pubDate>Fri, 19 Dec 2025 11:31:08 -0700</pubDate><guid>https://bitsby.me/recipes/clotted-cream/</guid><description/></item><item><title>Classic English Scones</title><link>https://bitsby.me/recipes/classic-english-scones/</link><pubDate>Fri, 19 Dec 2025 11:11:28 -0700</pubDate><guid>https://bitsby.me/recipes/classic-english-scones/</guid><description/></item><item><title>Carne Asada</title><link>https://bitsby.me/recipes/carne-asada/</link><pubDate>Fri, 19 Dec 2025 08:25:50 -0700</pubDate><guid>https://bitsby.me/recipes/carne-asada/</guid><description/></item><item><title>Coriander Spatchcock Chicken</title><link>https://bitsby.me/recipes/coriander-spatchcock-chicken/</link><pubDate>Sun, 14 Dec 2025 12:27:05 -0700</pubDate><guid>https://bitsby.me/recipes/coriander-spatchcock-chicken/</guid><description/></item><item><title>Pommes Boulangère</title><link>https://bitsby.me/recipes/pommes-boulang%C3%A8re/</link><pubDate>Thu, 11 Dec 2025 13:14:08 -0700</pubDate><guid>https://bitsby.me/recipes/pommes-boulang%C3%A8re/</guid><description/></item><item><title>Crepes by Nastya</title><link>https://bitsby.me/recipes/crepes-by-nastya/</link><pubDate>Wed, 10 Dec 2025 17:07:08 -0700</pubDate><guid>https://bitsby.me/recipes/crepes-by-nastya/</guid><description/></item><item><title>French Peas</title><link>https://bitsby.me/recipes/french-peas/</link><pubDate>Wed, 10 Dec 2025 16:11:52 -0700</pubDate><guid>https://bitsby.me/recipes/french-peas/</guid><description/></item><item><title>Pad Kra Pao</title><link>https://bitsby.me/recipes/pad-kra-pao/</link><pubDate>Wed, 10 Dec 2025 15:53:04 -0700</pubDate><guid>https://bitsby.me/recipes/pad-kra-pao/</guid><description/></item><item><title>Create a Hugo Site from Scratch</title><link>https://bitsby.me/2025/12/create-a-hugo-site-from-scratch/</link><pubDate>Tue, 09 Dec 2025 21:29:21 -0700</pubDate><guid>https://bitsby.me/2025/12/create-a-hugo-site-from-scratch/</guid><description><img src="https://bitsby.me/2025/12/create-a-hugo-site-from-scratch/home.png" alt="Create a Hugo Site from Scratch" style="max-width: 100%; height: auto;"/><br/><br/>I like Hugo for static web sites but I &lt;em&gt;always&lt;/em&gt; forget how to start from from scratch without a template. This is my short guide with some handy tips and reminders.</description><enclosure url="https://bitsby.me/home.png" type="image/jpeg"/></item><item><title>Kitchen Units &amp; Conversions</title><link>https://bitsby.me/recipes/units/</link><pubDate>Wed, 10 Dec 2025 00:00:00 +0000</pubDate><guid>https://bitsby.me/recipes/units/</guid><description/></item><item><title>httpie for JSON data</title><link>https://bitsby.me/til/2025-12-08/httpie-for-json-data/</link><pubDate>Mon, 08 Dec 2025 21:48:56 -0700</pubDate><guid>https://bitsby.me/til/2025-12-08/httpie-for-json-data/</guid><description>Using a slightly nicer &lt;code&gt;curl&lt;/code&gt;</description></item><item><title>Keep Github Actions Simple</title><link>https://bitsby.me/til/2025-12-05/keep-github-actions-simple/</link><pubDate>Fri, 05 Dec 2025 07:43:04 -0700</pubDate><guid>https://bitsby.me/til/2025-12-05/keep-github-actions-simple/</guid><description>A reminder to keep Github Actions simple and as free of logic as possible.</description></item><item><title>MCP and NumPy</title><link>https://bitsby.me/til/2025-11-19/mcp-and-numpy/</link><pubDate>Wed, 19 Nov 2025 09:01:33 -0700</pubDate><guid>https://bitsby.me/til/2025-11-19/mcp-and-numpy/</guid><description><img src="https://bitsby.me/til/2025-11-19/mcp-and-numpy/sensors.png" alt="MCP and NumPy" style="max-width: 100%; height: auto;"/><br/><br/>I spun up a couple of projects to explore two separate topics: how to implement a basic MCP server; how to use NumPy for numerical computations.</description><enclosure url="https://bitsby.me/sensors.png" type="image/jpeg"/></item><item><title>Shrinking output from Go WebAssembly</title><link>https://bitsby.me/til/2025-11-17/shrinking-output-from-go-webassembly/</link><pubDate>Mon, 17 Nov 2025 21:51:27 -0700</pubDate><guid>https://bitsby.me/til/2025-11-17/shrinking-output-from-go-webassembly/</guid><description><img src="https://bitsby.me/til/2025-11-17/shrinking-output-from-go-webassembly/calcdown-app.png" alt="Shrinking output from Go WebAssembly" style="max-width: 100%; height: auto;"/><br/><br/>Cross-compiling Go code to WebAssembly (WASM) is really powerful.
It also produces massive files to download.
So how can we shrink this down?</description><enclosure url="https://bitsby.me/calcdown-app.png" type="image/jpeg"/></item><item><title>Git worktrees for local development</title><link>https://bitsby.me/til/2025-11-17/git-worktrees-for-local-development/</link><pubDate>Mon, 17 Nov 2025 20:38:06 -0700</pubDate><guid>https://bitsby.me/til/2025-11-17/git-worktrees-for-local-development/</guid><description><img src="https://bitsby.me/til/2025-11-17/git-worktrees-for-local-development/git-butler.png" alt="Git worktrees for local development" style="max-width: 100%; height: auto;"/><br/><br/>Using git worktrees for the first time in local development requires some new muscle memory.</description><enclosure url="https://bitsby.me/git-butler.png" type="image/jpeg"/></item><item><title>Audaciously deciding to write a new language</title><link>https://bitsby.me/til/2025-11-11/audaciously-deciding-to-write-a-new-language/</link><pubDate>Tue, 11 Nov 2025 00:41:58 -0700</pubDate><guid>https://bitsby.me/til/2025-11-11/audaciously-deciding-to-write-a-new-language/</guid><description><img src="https://bitsby.me/til/2025-11-11/audaciously-deciding-to-write-a-new-language/demo.png" alt="Audaciously deciding to write a new language" style="max-width: 100%; height: auto;"/><br/><br/>I really wanted a tiny little version of Jupyter notebooks but for personal calculations that can also
have Markdown in them. So I started chatting with my buddy, Claude, who gave me an inflated sense
of my capabilities.</description><enclosure url="https://bitsby.me/demo.png" type="image/jpeg"/></item><item><title>uv and Jupyter Best Friends</title><link>https://bitsby.me/til/2025-11-08/uv-and-jupyter-best-friends/</link><pubDate>Sat, 08 Nov 2025 11:13:54 -0700</pubDate><guid>https://bitsby.me/til/2025-11-08/uv-and-jupyter-best-friends/</guid><description>&lt;p&gt;Literally before I forget!
How to make uv and Jupyter &lt;a href="https://docs.astral.sh/uv/guides/integration/jupyter/"&gt;play nicely together&lt;/a&gt;.
This assumes you&amp;rsquo;ve already got a new uv project (maybe with &lt;code&gt;uv init --bare&lt;/code&gt;):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uv add --dev ipykernel
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Option One&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uv run ipython kernel install --user --env VIRTUAL_ENV &lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;/.venv --name&lt;span class="o"&gt;=&lt;/span&gt;sensor-exp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Option Two&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uv run --with jupyter jupyter lab
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>In which Claude Makes a Map</title><link>https://bitsby.me/til/2025-11-04/in-which-claude-makes-a-map/</link><pubDate>Tue, 04 Nov 2025 15:50:53 -0700</pubDate><guid>https://bitsby.me/til/2025-11-04/in-which-claude-makes-a-map/</guid><description><img src="https://bitsby.me/til/2025-11-04/in-which-claude-makes-a-map/desktop.png" alt="In which Claude Makes a Map" style="max-width: 100%; height: auto;"/><br/><br/>I decided to vibe code, truly putting Anthropic&amp;rsquo;s Claude CLI in the driver&amp;rsquo;s seat. It was instructive!</description><enclosure url="https://bitsby.me/desktop.png" type="image/jpeg"/></item><item><title>Week 5: Image and Video Generation</title><link>https://bitsby.me/2025/11/week-5-image-and-video-generation/</link><pubDate>Sat, 01 Nov 2025 11:03:11 -0600</pubDate><guid>https://bitsby.me/2025/11/week-5-image-and-video-generation/</guid><description>Overview of generative approaches to image and video generation. Includes text-to-image and text-to-video tasks.</description></item><item><title>JS Modules and Refactoring Hugo Shortcodes</title><link>https://bitsby.me/til/2025-10-29/js-modules-and-refactoring-hugo-shortcodes/</link><pubDate>Wed, 29 Oct 2025 15:11:43 -0600</pubDate><guid>https://bitsby.me/til/2025-10-29/js-modules-and-refactoring-hugo-shortcodes/</guid><description><img src="https://bitsby.me/til/2025-10-29/js-modules-and-refactoring-hugo-shortcodes/network.png" alt="JS Modules and Refactoring Hugo Shortcodes" style="max-width: 100%; height: auto;"/><br/><br/>In which I finally read some docs on what a JavaScript module is and how it made my Hugo shortcodes self contained.</description><enclosure url="https://bitsby.me/network.png" type="image/jpeg"/></item><item><title>Week 4: Thinking and Reasoning Models</title><link>https://bitsby.me/2025/10/week-4-thinking-and-reasoning-models/</link><pubDate>Mon, 27 Oct 2025 10:10:43 -0600</pubDate><guid>https://bitsby.me/2025/10/week-4-thinking-and-reasoning-models/</guid><description><img src="https://bitsby.me/2025/10/week-4-thinking-and-reasoning-models/deepseek-hyperbolic.png" alt="Week 4: Thinking and Reasoning Models" style="max-width: 100%; height: auto;"/><br/><br/>Complex prompts are better handled with multi-step logical answers. Reasoning models are still an LLM, but we add reasoning before the response is provided.</description><enclosure url="https://bitsby.me/deepseek-hyperbolic.png" type="image/jpeg"/></item><item><title>Moving Ollama Models to a Different Disk</title><link>https://bitsby.me/til/2025-10-26/moving-ollama-models-to-a-different-disk/</link><pubDate>Sun, 26 Oct 2025 15:43:57 -0600</pubDate><guid>https://bitsby.me/til/2025-10-26/moving-ollama-models-to-a-different-disk/</guid><description><img src="https://bitsby.me/til/2025-10-26/moving-ollama-models-to-a-different-disk/ollama.png" alt="Moving Ollama Models to a Different Disk" style="max-width: 100%; height: auto;"/><br/><br/>I&amp;rsquo;m running Ollama on a Macbook so shifting the default location that Ollama downloads massive models to is a necessity. It&amp;rsquo;s just one environment setting away.</description><enclosure url="https://bitsby.me/ollama.png" type="image/jpeg"/></item><item><title>Week 3: Agents</title><link>https://bitsby.me/2025/10/week-3-agents/</link><pubDate>Thu, 23 Oct 2025 12:51:07 -0600</pubDate><guid>https://bitsby.me/2025/10/week-3-agents/</guid><description><img src="https://bitsby.me/2025/10/week-3-agents/router.svg" alt="Week 3: Agents" style="max-width: 100%; height: auto;"/><br/><br/>Week 3 is all about agents. Workflows, tools, multi-step agents, and the protocols and frameworks involved.</description><enclosure url="https://bitsby.me/router.svg" type="image/jpeg"/></item><item><title>D2 Diagram Rendering in Hugo</title><link>https://bitsby.me/til/2025-10-23/d2-diagram-rendering-in-hugo/</link><pubDate>Thu, 23 Oct 2025 11:53:07 -0600</pubDate><guid>https://bitsby.me/til/2025-10-23/d2-diagram-rendering-in-hugo/</guid><description>How I integrated D2 diagram rendering into my Hugo blog with a custom Go script</description></item><item><title>Tailscale Exit Node on Mac Mini</title><link>https://bitsby.me/til/2025-10-21/tailscale-exit-node-on-mac-mini/</link><pubDate>Tue, 21 Oct 2025 16:56:06 -0600</pubDate><guid>https://bitsby.me/til/2025-10-21/tailscale-exit-node-on-mac-mini/</guid><description><img src="https://bitsby.me/til/2025-10-21/tailscale-exit-node-on-mac-mini/exit-node.png" alt="Tailscale Exit Node on Mac Mini" style="max-width: 100%; height: auto;"/><br/><br/>I want to set up an exit node on my Mac Mini using Tailscale. That way I can watch movies from anywhere and print stuff without being at home.</description><enclosure url="https://bitsby.me/exit-node.png" type="image/jpeg"/></item><item><title>RAFT for RAG</title><link>https://bitsby.me/2025/10/raft-for-rag/</link><pubDate>Sun, 19 Oct 2025 11:32:42 -0600</pubDate><guid>https://bitsby.me/2025/10/raft-for-rag/</guid><description><img src="https://bitsby.me/2025/10/raft-for-rag/raft-paper.png" alt="RAFT for RAG" style="max-width: 100%; height: auto;"/><br/><br/>RAFT (Retrieval-Augmented Fine-Tuning) confused me when I first heard about it in a training class. It&amp;rsquo;s a technique that combines both offline fine-tuning and runtime retrieval to improve the performance of language models. But I wasn&amp;rsquo;t sure whether the core LLM should be fine-tuned or the retrieval augmented generation (RAG) vector store, or both. So I dug in.</description><enclosure url="https://bitsby.me/raft-paper.png" type="image/jpeg"/></item><item><title>Interpret LLM Model Size</title><link>https://bitsby.me/til/2025-10-14/interpret-llm-model-size/</link><pubDate>Tue, 14 Oct 2025 13:26:35 -0600</pubDate><guid>https://bitsby.me/til/2025-10-14/interpret-llm-model-size/</guid><description>How to interpret the numbers used to describe LLMs.</description></item><item><title>Week 2: Adapting LLMs</title><link>https://bitsby.me/2025/10/week-2-adapting-llms/</link><pubDate>Tue, 14 Oct 2025 13:01:07 -0600</pubDate><guid>https://bitsby.me/2025/10/week-2-adapting-llms/</guid><description><img src="https://bitsby.me/2025/10/week-2-adapting-llms/lora-paper.png" alt="Week 2: Adapting LLMs" style="max-width: 100%; height: auto;"/><br/><br/>Part two of the AI Engineering Course, focusing on adapting existing LLMs with post training work. It covers Retrieval Augmented Generation (RAG) and Fine Tuning.</description><enclosure url="https://bitsby.me/lora-paper.png" type="image/jpeg"/></item><item><title>uv for LLM Experiments</title><link>https://bitsby.me/2025/10/uv-for-llm-experiments/</link><pubDate>Tue, 14 Oct 2025 10:46:24 -0600</pubDate><guid>https://bitsby.me/2025/10/uv-for-llm-experiments/</guid><description><img src="https://bitsby.me/2025/10/uv-for-llm-experiments/pyproject.png" alt="uv for LLM Experiments" style="max-width: 100%; height: auto;"/><br/><br/>Using &lt;code&gt;uv&lt;/code&gt; instead of Anaconda &lt;code&gt;environment.yml&lt;/code&gt; to set up a virtual environment for LLM experiments.</description><enclosure url="https://bitsby.me/pyproject.png" type="image/jpeg"/></item><item><title>Week 1: LLM Foundations</title><link>https://bitsby.me/2025/10/week-1-llm-foundations/</link><pubDate>Fri, 10 Oct 2025 13:34:50 -0600</pubDate><guid>https://bitsby.me/2025/10/week-1-llm-foundations/</guid><description><img src="https://bitsby.me/2025/10/week-1-llm-foundations/scaling-laws.png" alt="Week 1: LLM Foundations" style="max-width: 100%; height: auto;"/><br/><br/>Resources from Week 1 of the AI Engineering Course</description><enclosure url="https://bitsby.me/scaling-laws.png" type="image/jpeg"/></item><item><title>Previewing Markdown Files with mdserve</title><link>https://bitsby.me/til/2025-10-03/previewing-markdown-files-with-mdserve/</link><pubDate>Fri, 03 Oct 2025 20:03:35 -0400</pubDate><guid>https://bitsby.me/til/2025-10-03/previewing-markdown-files-with-mdserve/</guid><description><img src="https://bitsby.me/til/2025-10-03/previewing-markdown-files-with-mdserve/preview.png" alt="Previewing Markdown Files with mdserve" style="max-width: 100%; height: auto;"/><br/><br/>Dependency free markdown server</description><enclosure url="https://bitsby.me/preview.png" type="image/jpeg"/></item><item><title>Redefining Technical Program Management at GitHub</title><link>https://bitsby.me/work/github-tpm-transformation/</link><pubDate>Wed, 15 Jan 2025 12:00:00 -0600</pubDate><guid>https://bitsby.me/work/github-tpm-transformation/</guid><description>Transformed GitHub&amp;rsquo;s ~35-person TPM organization from project coordination into technically grounded program leadership.
Narrowed the portfolio from 20+ programs to 5 high-impact ones aligned to company-level goals, with VP+ agreement across Engineering and Product.</description></item><item><title>TPM Journey at Github</title><link>https://bitsby.me/2024/10/tpm-journey-at-github/</link><pubDate>Sun, 20 Oct 2024 15:27:55 +0000</pubDate><guid>https://bitsby.me/2024/10/tpm-journey-at-github/</guid><description><img src="https://bitsby.me/2024/10/tpm-journey-at-github/speaker-photo.jpg" alt="TPM Journey at Github" style="max-width: 100%; height: auto;"/><br/><br/>Slides and recording of my presentation about how technical program management (TPM) came about at GitHub. All in context of Tuckman&amp;rsquo;s model of group development.</description><enclosure url="https://bitsby.me/speaker-photo.jpg" type="image/jpeg"/></item><item><title>Slice by Slice</title><link>https://bitsby.me/2024/10/slice-by-slice/</link><pubDate>Thu, 10 Oct 2024 11:11:51 -0600</pubDate><guid>https://bitsby.me/2024/10/slice-by-slice/</guid><description>How two German automotive engineers got inside my head.
Or: how I learned to stop stressing out and to start solving problems.</description></item><item><title>Altitude, Brevity, Contrast, and Directness</title><link>https://bitsby.me/2024/06/altitude-brevity-contrast-and-directness/</link><pubDate>Sat, 01 Jun 2024 11:11:51 -0600</pubDate><guid>https://bitsby.me/2024/06/altitude-brevity-contrast-and-directness/</guid><description>How to write with a busy reader in mind by answering some questions.
What altitude are they at?
How can you be succinct?
Are you highlighting the important bits?
Are you being as direct as you can be?</description></item><item><title>Rapid Response: The Flex Team</title><link>https://bitsby.me/work/flex-team/</link><pubDate>Thu, 14 Mar 2024 20:11:21 -0600</pubDate><guid>https://bitsby.me/work/flex-team/</guid><description><img src="https://bitsby.me/work/flex-team/flex-team.png" alt="Rapid Response: The Flex Team" style="max-width: 100%; height: auto;"/><br/><br/>Creating a rapid response team to handle urgent projects, then scaling up to sustainable programs where needed.</description><enclosure url="https://bitsby.me/flex-team.png" type="image/jpeg"/></item><item><title>Shipping GHES on Time, Every Time</title><link>https://bitsby.me/work/ghes-release-health/</link><pubDate>Mon, 15 Jan 2024 12:00:00 -0600</pubDate><guid>https://bitsby.me/work/ghes-release-health/</guid><description>Turning late GitHub Enterprise Server releases into a predictable cadence
by making implicit expectations explicit for every feature team.</description></item><item><title>Whitelisting Pi-hole</title><link>https://bitsby.me/til/2023-03-09/whitelisting-pi-hole/</link><pubDate>Thu, 09 Mar 2023 18:51:29 -0700</pubDate><guid>https://bitsby.me/til/2023-03-09/whitelisting-pi-hole/</guid><description>Working with Pi-hole and a bit of &lt;code&gt;sed&lt;/code&gt;.</description></item><item><title>Pay It Forward</title><link>https://bitsby.me/2023/02/pay-it-forward/</link><pubDate>Tue, 14 Feb 2023 18:32:46 -0700</pubDate><guid>https://bitsby.me/2023/02/pay-it-forward/</guid><description>I had a great chat with a college student about a career in tech. I thought I&amp;rsquo;d share some of the advice I gave them. It&amp;rsquo;s not going to change the world, but it might help someone.</description></item><item><title>Tracking program investments in SQLite</title><link>https://bitsby.me/2023/02/tracking-program-investments-in-sqlite/</link><pubDate>Mon, 13 Feb 2023 18:19:47 -0700</pubDate><guid>https://bitsby.me/2023/02/tracking-program-investments-in-sqlite/</guid><description>Using SQLite to work with hierarchical data and learning about CTEs and data loading along the way.</description></item><item><title>GitHub CLI</title><link>https://bitsby.me/til/2023-02-11/github-cli/</link><pubDate>Sat, 11 Feb 2023 18:28:32 -0700</pubDate><guid>https://bitsby.me/til/2023-02-11/github-cli/</guid><description>Using the GitHub CLI to make authenticated and authorized download from a private repo.</description></item><item><title>Task for automation</title><link>https://bitsby.me/2023/02/task-for-automation/</link><pubDate>Sat, 11 Feb 2023 17:08:20 -0700</pubDate><guid>https://bitsby.me/2023/02/task-for-automation/</guid><description>Using &lt;code&gt;task&lt;/code&gt; as a Make alternative for your automation tasks and wonderment.</description></item><item><title>OSS donations, fonts</title><link>https://bitsby.me/til/2023-02-05/oss-donations-fonts/</link><pubDate>Sun, 05 Feb 2023 19:10:33 -0700</pubDate><guid>https://bitsby.me/til/2023-02-05/oss-donations-fonts/</guid><description>Starting some micro-donations to open source developers. And a font.</description></item><item><title>SQLite and Go App</title><link>https://bitsby.me/2023/02/sqlite-and-go-app/</link><pubDate>Wed, 01 Feb 2023 16:51:08 -0700</pubDate><guid>https://bitsby.me/2023/02/sqlite-and-go-app/</guid><description>Using Go and SQLite to munge YAML data for fun and profit&amp;hellip;or for free.</description></item><item><title>SQLite schema</title><link>https://bitsby.me/til/2022-12-17/sqlite-schema/</link><pubDate>Sat, 17 Dec 2022 09:26:35 -0700</pubDate><guid>https://bitsby.me/til/2022-12-17/sqlite-schema/</guid><description>Learning a few bits about SQLite that are worth noting.</description></item><item><title>VSCode for Markdown</title><link>https://bitsby.me/til/2022-02-06/vscode-for-markdown/</link><pubDate>Sun, 06 Feb 2022 07:56:12 -0700</pubDate><guid>https://bitsby.me/til/2022-02-06/vscode-for-markdown/</guid><description>Writing Markdown using VS Code</description></item><item><title>Giving Actionable Feedback</title><link>https://bitsby.me/2021/12/giving-actionable-feedback/</link><pubDate>Thu, 09 Dec 2021 10:49:28 -0700</pubDate><guid>https://bitsby.me/2021/12/giving-actionable-feedback/</guid><description>Feedback is a gift. But how do you provide feedback to someone while increasing the chance that the person can hear and maybe even act on what you&amp;rsquo;re sharing with them?</description></item><item><title>Python, SQL, and data eng</title><link>https://bitsby.me/til/2021-11-11/python-sql-and-data-eng/</link><pubDate>Thu, 11 Nov 2021 15:20:28 -0500</pubDate><guid>https://bitsby.me/til/2021-11-11/python-sql-and-data-eng/</guid><description>Data engineering audiocast, plus Python photos</description></item><item><title>.env file, tmux, and direnv</title><link>https://bitsby.me/til/2021-08-31/.env-file-tmux-and-direnv/</link><pubDate>Tue, 31 Aug 2021 09:12:27 -0600</pubDate><guid>https://bitsby.me/til/2021-08-31/.env-file-tmux-and-direnv/</guid><description>Using &lt;code&gt;direnv&lt;/code&gt; to automatically handle environment variables.</description></item><item><title>Git large file storage</title><link>https://bitsby.me/til/2021-08-28/git-large-file-storage/</link><pubDate>Sat, 28 Aug 2021 07:40:13 -0600</pubDate><guid>https://bitsby.me/til/2021-08-28/git-large-file-storage/</guid><description>Using GitLFS for the first time.</description></item><item><title>Learning JSON Schema</title><link>https://bitsby.me/2021/08/learning-json-schema/</link><pubDate>Sun, 22 Aug 2021 12:42:07 -0600</pubDate><guid>https://bitsby.me/2021/08/learning-json-schema/</guid><description>JSON Schema is an old concept wrapped in a relatively new format. I learned a few things as I was defining a data model using JSON Schema.</description></item><item><title>2021-08-18</title><link>https://bitsby.me/til/2021-08-18/2021-08-18/</link><pubDate>Wed, 18 Aug 2021 15:56:55 -0600</pubDate><guid>https://bitsby.me/til/2021-08-18/2021-08-18/</guid><description>Using Google Sheets for event planning</description></item><item><title>JS Dates are Weird</title><link>https://bitsby.me/til/2021-07-12/js-dates-are-weird/</link><pubDate>Mon, 12 Jul 2021 18:58:16 -0600</pubDate><guid>https://bitsby.me/til/2021-07-12/js-dates-are-weird/</guid><description>In which type coercion and JavaScript magic bite me in the&amp;hellip;date math.</description></item><item><title>Terraforming 101</title><link>https://bitsby.me/2021/06/terraforming-101/</link><pubDate>Thu, 17 Jun 2021 17:14:21 -0700</pubDate><guid>https://bitsby.me/2021/06/terraforming-101/</guid><description>In which I finally get to grips with infrastructure as code on
a real project while trying to set up identity aware proxy to
protect a private app from prying eyes.</description></item><item><title>Operating Principles a.k.a. How We Work</title><link>https://bitsby.me/2021/06/operating-principles-a.k.a.-how-we-work/</link><pubDate>Tue, 15 Jun 2021 15:46:31 -0700</pubDate><guid>https://bitsby.me/2021/06/operating-principles-a.k.a.-how-we-work/</guid><description>This is a lightly obfuscated version of something I wrote for the technical
team at Woolpert Cloud Solutions. It reflects the values I promote for the team
and my ethos around enabling people to make their own decisions based on core values
rather than an endless list of rules.</description></item><item><title>Building a Cloud Professional Services Practice</title><link>https://bitsby.me/work/woolpert-cloud-practice/</link><pubDate>Tue, 15 Jun 2021 12:00:00 -0600</pubDate><guid>https://bitsby.me/work/woolpert-cloud-practice/</guid><description>Building a cloud consulting practice from zero at Woolpert: founding three technical functions, hiring 12 engineers, and proving the model with a $450K Google engagement.</description></item><item><title>awk-ing</title><link>https://bitsby.me/til/2021-06-15/awk-ing/</link><pubDate>Tue, 15 Jun 2021 09:59:30 -0700</pubDate><guid>https://bitsby.me/til/2021-06-15/awk-ing/</guid><description>Some awk for text file munging</description></item><item><title>OSM and Python</title><link>https://bitsby.me/til/2021-06-02/osm-and-python/</link><pubDate>Wed, 02 Jun 2021 11:56:57 -0600</pubDate><guid>https://bitsby.me/til/2021-06-02/osm-and-python/</guid><description>Using Python to work with addresses and Open Street Map networks.</description></item><item><title>Wardley Maps</title><link>https://bitsby.me/til/2021-05-31/wardley-maps/</link><pubDate>Mon, 31 May 2021 12:06:55 -0600</pubDate><guid>https://bitsby.me/til/2021-05-31/wardley-maps/</guid><description><img src="https://bitsby.me/til/2021-05-31/wardley-maps/pre-post-mortem.png" alt="Wardley Maps" style="max-width: 100%; height: auto;"/><br/><br/>Simon Wardley figured out how to make maps that support strategy by balancing user-facing visibility and technical evolution from innovation to commodity.</description><enclosure url="https://bitsby.me/pre-post-mortem.png" type="image/jpeg"/></item><item><title>2021-05-29</title><link>https://bitsby.me/til/2021-05-29/2021-05-29/</link><pubDate>Sat, 29 May 2021 10:27:57 -0600</pubDate><guid>https://bitsby.me/til/2021-05-29/2021-05-29/</guid><description>Trying svelte-kit and Tailwind CSS</description></item><item><title>A Bit of Fastapi for Auth</title><link>https://bitsby.me/2021/05/a-bit-of-fastapi-for-auth/</link><pubDate>Tue, 18 May 2021 13:54:13 -0600</pubDate><guid>https://bitsby.me/2021/05/a-bit-of-fastapi-for-auth/</guid><description>Learning more about JWT as a way to encode claims by getting hands-on with FastAPI, a relative newcomer to the Python family of web frameworks.</description></item><item><title>2021-05-15</title><link>https://bitsby.me/til/2021-05-15/2021-05-15/</link><pubDate>Sat, 15 May 2021 11:15:47 -0600</pubDate><guid>https://bitsby.me/til/2021-05-15/2021-05-15/</guid><description>ICU for Python head-scratcher solved</description></item><item><title>Tinkering With Tax Data</title><link>https://bitsby.me/2021/05/tinkering-with-tax-data/</link><pubDate>Tue, 11 May 2021 12:45:06 -0600</pubDate><guid>https://bitsby.me/2021/05/tinkering-with-tax-data/</guid><description>Using some open source tools to learn about tax data in Denver.</description></item><item><title>2021-05-05</title><link>https://bitsby.me/til/2021-05-05/2021-05-05/</link><pubDate>Wed, 05 May 2021 17:59:13 -0600</pubDate><guid>https://bitsby.me/til/2021-05-05/2021-05-05/</guid><description>Getting Python running on fresh Linux</description></item><item><title>Main not Master, and Python formatting</title><link>https://bitsby.me/til/2021-04-29/main-not-master-and-python-formatting/</link><pubDate>Thu, 29 Apr 2021 17:46:36 -0600</pubDate><guid>https://bitsby.me/til/2021-04-29/main-not-master-and-python-formatting/</guid><description>Default git branch name and Python formatting</description></item><item><title>Big O for Imposters</title><link>https://bitsby.me/2021/04/big-o-for-imposters/</link><pubDate>Mon, 05 Apr 2021 13:09:01 -0600</pubDate><guid>https://bitsby.me/2021/04/big-o-for-imposters/</guid><description>A short and probably obvious statement for people who studied computer science.
But for me is not obvious and took a short bit of reading on Big(O).</description></item><item><title>Leadership memo and role definitions</title><link>https://bitsby.me/til/2021-04-04/leadership-memo-and-role-definitions/</link><pubDate>Sun, 04 Apr 2021 10:29:18 -0600</pubDate><guid>https://bitsby.me/til/2021-04-04/leadership-memo-and-role-definitions/</guid><description>PM and Eng leadership</description></item><item><title>Squishing PNGs</title><link>https://bitsby.me/til/2021-04-02/squishing-pngs/</link><pubDate>Fri, 02 Apr 2021 10:13:32 -0600</pubDate><guid>https://bitsby.me/til/2021-04-02/squishing-pngs/</guid><description>PNG squishing and static sites on GCS</description></item><item><title>Pangeo for geospatial compute</title><link>https://bitsby.me/til/2021-03-31/pangeo-for-geospatial-compute/</link><pubDate>Wed, 31 Mar 2021 08:28:49 -0600</pubDate><guid>https://bitsby.me/til/2021-03-31/pangeo-for-geospatial-compute/</guid><description>Learning about Pangeo and friends</description></item><item><title>Transforming the Team on Your Practical Cloud Journey</title><link>https://bitsby.me/2021/03/transforming-the-team-on-your-practical-cloud-journey/</link><pubDate>Wed, 24 Mar 2021 14:08:52 -0600</pubDate><guid>https://bitsby.me/2021/03/transforming-the-team-on-your-practical-cloud-journey/</guid><description>Reposting a &lt;a href="https://woolpert.com/media/blogs/geospatial/transforming-the-team-on-your-practical-cloud-journey/"&gt;blog&lt;/a&gt; I wrote for Woolpert about digital
transformation and the necessary culture, learning, and
mindset for a successful and practical cloud journey.</description></item><item><title>TIL Cloud migration and terraform</title><link>https://bitsby.me/til/2021-03-16/til-cloud-migration-and-terraform/</link><pubDate>Tue, 16 Mar 2021 11:34:59 -0600</pubDate><guid>https://bitsby.me/til/2021-03-16/til-cloud-migration-and-terraform/</guid><description>From GCP to Terraform</description></item><item><title>Multiple ssh keypairs and how to use them</title><link>https://bitsby.me/2021/03/multiple-ssh-keypairs-and-how-to-use-them/</link><pubDate>Fri, 12 Mar 2021 17:51:48 -0700</pubDate><guid>https://bitsby.me/2021/03/multiple-ssh-keypairs-and-how-to-use-them/</guid><description>Finally learning more about ssh keypairs and how to manage them using ssh-agent.</description></item><item><title>Visidata as a multi-purpose tool for data exploration and analysis</title><link>https://bitsby.me/til/2021-03-10/visidata-as-a-multi-purpose-tool-for-data-exploration-and-analysis/</link><pubDate>Wed, 10 Mar 2021 10:54:28 -0700</pubDate><guid>https://bitsby.me/til/2021-03-10/visidata-as-a-multi-purpose-tool-for-data-exploration-and-analysis/</guid><description>&lt;h2 id="visidata"&gt;
VisiData
&lt;a href="#visidata" class="heading-anchor" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.visidata.org/"&gt;https://www.visidata.org/&lt;/a&gt; is a Swiss Army Knife for viewing, querying, filtering, summarizing, and converting a very wide array of data types.
It comes with a bunch of standard data format support like CSV.
Just looking at the &lt;a href="https://jsvine.github.io/intro-to-visidata/basics/opening-files/#compatible-filetypes"&gt;file types&lt;/a&gt; makes me happy, because it includes geospatial too.&lt;/p&gt;
&lt;p&gt;Getting started with Python is easy.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip3 install visidata
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip3 install pyshp &lt;span class="c1"&gt;# geospatial support&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;asdf reshim python
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The &lt;code&gt;asdf...&lt;/code&gt; part is needed because I&amp;rsquo;m using &lt;a href="https://bitsby.me/2021/03/asdf-for-runtime-management/"&gt;asdf these days&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>asdf for Runtime Management</title><link>https://bitsby.me/2021/03/asdf-for-runtime-management/</link><pubDate>Sun, 07 Mar 2021 12:37:59 -0700</pubDate><guid>https://bitsby.me/2021/03/asdf-for-runtime-management/</guid><description>Using &lt;code&gt;asdf&lt;/code&gt; as an alternative to homebrew for managing
language runtimes like Python and Ruby. It provides a holistic solution
to the same problem that &lt;code&gt;pyenv&lt;/code&gt; and &lt;code&gt;nvm&lt;/code&gt; and &lt;code&gt;rvm&lt;/code&gt; solve for specific
languages and runtimes.</description></item><item><title>OSS Licenses and Richard Feynman</title><link>https://bitsby.me/til/2021-03-01/oss-licenses-and-richard-feynman/</link><pubDate>Mon, 01 Mar 2021 11:07:02 -0700</pubDate><guid>https://bitsby.me/til/2021-03-01/oss-licenses-and-richard-feynman/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Picking a license.&lt;/strong&gt; Was trying to remember why we selected the Mozilla Public License (MPL) for Woolpert&amp;rsquo;s open source work.
Rediscovered &lt;a href="https://choosealicense.com/licenses/mpl-2.0/"&gt;https://choosealicense.com/licenses/mpl-2.0/&lt;/a&gt; which helps you make the right choice depending on your decision drivers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Use boring technology.&lt;/strong&gt; Writing a client proposal and remembered the phrase &amp;lsquo;boring technology&amp;rsquo;.
Searched it and discovered that I&amp;rsquo;d read about it in the past: &lt;a href="boringtechnology.club"&gt;boringtechnology.club&lt;/a&gt;. Key idea: &lt;strong&gt;innovation tokens&lt;/strong&gt;.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;ldquo;Let&amp;rsquo;s say every company gets about three innovation tokens. You can spend these however you want, but the supply is fixed for a long while. You might get a few more after you achieve a certain level of stability and maturity, but the general tendency is to overestimate the contents of your wallet. Clearly this model is approximate, but I think it helps.&lt;/p&gt;</description></item><item><title>How to Make a Hugo Blog from Scratch</title><link>https://bitsby.me/til/2021-02-28/how-to-make-a-hugo-blog-from-scratch/</link><pubDate>Sun, 28 Feb 2021 21:49:35 -0700</pubDate><guid>https://bitsby.me/til/2021-02-28/how-to-make-a-hugo-blog-from-scratch/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://zwbetz.com/make-a-hugo-blog-from-scratch/"&gt;Make a Hugo blog from scratch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I broke my blog structure and theming a while back and took some time to figure it out.
But I found &lt;a href="https://zwbetz.com/make-a-hugo-blog-from-scratch/"&gt;this tutorial&lt;/a&gt; which breaks it down into very easy, bite-sized steps.
Now my blog is working, and I understand how. Woohoo!&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Coding Exercise in Go</title><link>https://bitsby.me/2021/02/coding-exercise-in-go/</link><pubDate>Sat, 06 Feb 2021 12:02:31 -0700</pubDate><guid>https://bitsby.me/2021/02/coding-exercise-in-go/</guid><description>Answering my own coding exercise using Go and sharing a
couple of things I learned along the way about JSON and
concurrency.</description></item><item><title>A Practical Cloud Journey</title><link>https://bitsby.me/2021/01/a-practical-cloud-journey/</link><pubDate>Sun, 31 Jan 2021 11:35:17 -0700</pubDate><guid>https://bitsby.me/2021/01/a-practical-cloud-journey/</guid><description>Re-posting the kickoff to Woolpert&amp;rsquo;s 2021 Practical Cloud Journey series.
It&amp;rsquo;s all about customer value, not getting ahead of yourself (or your
competence), and the importance of context.</description></item><item><title>Open Source (Geospatial) Data Exploration</title><link>https://bitsby.me/2020/02/open-source-geospatial-data-exploration/</link><pubDate>Sun, 23 Feb 2020 20:15:45 -0700</pubDate><guid>https://bitsby.me/2020/02/open-source-geospatial-data-exploration/</guid><description>&lt;h2 id="modern-for-exploration-and-analysis"&gt;
Modern for exploration and analysis
&lt;a href="#modern-for-exploration-and-analysis" class="heading-anchor" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&amp;lsquo;&lt;em&gt;The modern geospatial stack&lt;/em&gt;&amp;rsquo; isn&amp;rsquo;t really a helpful thing to say when trying to describe a whole field. But it mostly means &lt;em&gt;&amp;rsquo;not a typical commercial package&amp;rsquo;&lt;/em&gt;. At least that&amp;rsquo;s my take. It means thinking about geospatial analysis as more like a slightly specialized case of typical data science, and that means a assembling a toolkit from the array of open source and commercial tools out there.&lt;/p&gt;</description></item><item><title>GCP Billing API Scripting</title><link>https://bitsby.me/2020/02/gcp-billing-api-scripting/</link><pubDate>Wed, 12 Feb 2020 13:29:23 -0700</pubDate><guid>https://bitsby.me/2020/02/gcp-billing-api-scripting/</guid><description>&lt;h2 id="getting-an-invoice-out-the-door"&gt;
Getting an invoice out the door
&lt;a href="#getting-an-invoice-out-the-door" class="heading-anchor" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;One of the things we do at &lt;a href="https://www.woolpert.com"&gt;Woolpert&lt;/a&gt; is service Google Cloud Platform (GCP) customers. Part of that is sending them a monthly bill for their cloud spend. And part of &lt;em&gt;that&lt;/em&gt; means assembling various bits of data from the GCP billing backend into a sensible report that customers can consume either by reading it, or by ingesting the data into their own systems.&lt;/p&gt;</description></item><item><title>Tips</title><link>https://bitsby.me/2020/02/tips/</link><pubDate>Wed, 12 Feb 2020 07:45:59 -0700</pubDate><guid>https://bitsby.me/2020/02/tips/</guid><description>&lt;h2 id="pictures"&gt;
Pictures
&lt;a href="#pictures" class="heading-anchor" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;figure&gt;&lt;a href="https://bitsby.me/about/me.jpg" target="_blank" rel="noopener"&gt;
&lt;img src="https://bitsby.me/about/me.jpg"&gt;
&lt;/a&gt;&lt;figcaption&gt;
&lt;h4&gt;The author as a younger man&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="twitter"&gt;
Twitter
&lt;a href="#twitter" class="heading-anchor" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;I did a thing and it got posted.&lt;/p&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="en" dir="ltr"&gt;If you think tacos are the crunchy shells with ground beef in them, please expand your horizons. These al pastor tacos were as hot as lava and divine. &lt;a href="https://t.co/Mad4eqpYmZ"&gt;pic.twitter.com/Mad4eqpYmZ&lt;/a&gt;&lt;/p&gt;&amp;mdash; Dylan Thomas (BitsByMe@hachyderm.io) (@dvhthomas) &lt;a href="https://twitter.com/dvhthomas/status/1425712358735847432?ref_src=twsrc%5Etfw"&gt;August 12, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h2 id="link-to-a-post"&gt;
Link to a post
&lt;a href="#link-to-a-post" class="heading-anchor" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;By reference:&lt;/p&gt;</description></item><item><title>About Me</title><link>https://bitsby.me/about/</link><pubDate>Tue, 11 Feb 2020 20:37:28 -0700</pubDate><guid>https://bitsby.me/about/</guid><description>&lt;p&gt;Hi, I&amp;rsquo;m Dylan Thomas 👋 &lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;.
I&amp;rsquo;m a geographer by training, a technologist and program leader by profession, and a (slow) cyclist by nature.
I enjoy working on my open source projects &lt;a href="https://calcmark.org"&gt;CalcMark&lt;/a&gt;, &lt;a href="https://gh-velocity.org"&gt;GitHub Velocity&lt;/a&gt;, and &lt;a href="https://recipes4.me"&gt;Recipes4.me&lt;/a&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;a href="https://bitsby.me/about/headshot_hu_d59a169dac40ca14.webp" target="_blank" rel="noopener"&gt;
&lt;img src="https://bitsby.me/about/headshot_hu_d59a169dac40ca14.webp"
alt="a headshot showing Dylan in an office environment" width="400" height="401"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;h2 id="people-first-and-then-the-machines"&gt;
People first and then the machines
&lt;a href="#people-first-and-then-the-machines" class="heading-anchor" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;blockquote class="tip"&gt;&lt;p&gt;Skip to my &lt;a href="https://bitsby.me/resume/"&gt;resume&lt;/a&gt; (&lt;a href="https://bitsby.me/resume.pdf"&gt;PDF&lt;/a&gt;) if you just need a rundown of my career, or check out &lt;a href="https://bitsby.me/work/"&gt;examples of my work&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Dominic 'Dylan' Thomas</title><link>https://bitsby.me/resume/</link><pubDate>Tue, 11 Feb 2020 20:37:28 -0700</pubDate><guid>https://bitsby.me/resume/</guid><description>&lt;p&gt;&lt;a href="mailto:dylant@hey.com"&gt;dylant@hey.com&lt;/a&gt; | &lt;a href="https://bitsby.me"&gt;Website&lt;/a&gt; | &lt;a href="https://alwaysmap.com"&gt;Consulting&lt;/a&gt; | &lt;a href="https://www.linkedin.com/in/dylan-thomas/"&gt;LinkedIn&lt;/a&gt; | 415-657-6589 | Colorado, USA&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;I build the teams and environments that make audacious business goals possible&amp;mdash;PMOs, TPM teams,
partner engineering teams, and professional services practices.
I walk into ambiguity, bring the right amount of structure, and stay focused on impact.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 id="skills"&gt;
Skills
&lt;a href="#skills" class="heading-anchor" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Core:&lt;/strong&gt; &lt;a href="https://alwaysmap.com"&gt;Operations&lt;/a&gt;, &lt;a href="https://bitsby.me/2024/10/tpm-journey-at-github/"&gt;Technical Program Management&lt;/a&gt;, &lt;a href="https://bitsby.me/work/woolpert-cloud-practice/"&gt;Agile Service Delivery&lt;/a&gt;, &lt;a href="https://bitsby.me/work/android-auto-partner-engineering/"&gt;Technical Partnerships&lt;/a&gt;, &lt;a href="https://bitsby.me/2019/01/core-skills-technical-skills/"&gt;Balanced Leadership&lt;/a&gt;, &lt;a href="https://bitsby.me/2021/06/operating-principles-a.k.a.-how-we-work/"&gt;Remote Leadership&lt;/a&gt;, &lt;a href="https://bitsby.me/2021/03/transforming-the-team-on-your-practical-cloud-journey/"&gt;Growing Teams&lt;/a&gt;, &lt;a href="https://bitsby.me/work/github-tpm-transformation/"&gt;Organizational Development&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Technical:&lt;/strong&gt; &lt;a href="https://bitsby.me/tags/geospatial/"&gt;Geospatial&lt;/a&gt;, &lt;a href="https://bitsby.me/series/ai-engineering-course/"&gt;AI Engineering&lt;/a&gt;, and get-it-done levels of &lt;a href="https://bitsby.me/tags/python/"&gt;Python&lt;/a&gt;, &lt;a href="https://bitsby.me/tags/go/"&gt;Go&lt;/a&gt;, &lt;a href="https://bitsby.me/tags/gcp/"&gt;Google Cloud&lt;/a&gt;, &lt;a href="https://bitsby.me/tags/terraform/"&gt;some infrastructure&lt;/a&gt;, and &lt;a href="https://bitsby.me/tags/sql/"&gt;SQL&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="work-experience"&gt;
Work Experience
&lt;a href="#work-experience" class="heading-anchor" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id="alwaysmap--consulting-and-open-source"&gt;
AlwaysMap — Consulting and Open Source
&lt;a href="#alwaysmap--consulting-and-open-source" class="heading-anchor" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;June 2025 to Present&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Recommendations</title><link>https://bitsby.me/recommendations/</link><pubDate>Tue, 11 Feb 2020 20:37:28 -0700</pubDate><guid>https://bitsby.me/recommendations/</guid><description>&lt;p&gt;Here are books that I enjoyed and gained valuable knowledge from.&lt;/p&gt;
&lt;h3 id="release-it"&gt;
Release It!
&lt;a href="#release-it" class="heading-anchor" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;This was a major influence on my understanding of resilient systems.
The first (working!) multi-threaded code I ever wrote was to implement a circuit breaker in C#.
I was kind of in awe that I could make things&amp;hellip;not break!
A lot of the examples use a tech stack that I&amp;rsquo;m not deeply familiar with (J2EE) but the lessons are still spot on.&lt;/p&gt;</description></item><item><title>Welcome Back</title><link>https://bitsby.me/2020/02/welcome-back/</link><pubDate>Tue, 11 Feb 2020 20:11:30 -0700</pubDate><guid>https://bitsby.me/2020/02/welcome-back/</guid><description>&lt;h2 id="after-a-long-pause"&gt;
After a long pause
&lt;a href="#after-a-long-pause" class="heading-anchor" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;According to my records&amp;hellip;let me see now&amp;hellip;it&amp;rsquo;s been six years
since I last posted anything to any blog, let alone this one.&lt;/p&gt;
&lt;p&gt;Since then I&amp;rsquo;ve done a fair amount in life, mostly while working
at Google on the Android Automotive team as the head of their partner
engineering team. Learned a few things there.&lt;/p&gt;
&lt;p&gt;But now I&amp;rsquo;m out of the San Francisco Bay Area and back in the middle-ish
of the United States, and doing other tech stuff of the cloud-y variety.&lt;/p&gt;</description></item><item><title>Reposting Woolpert Cloud strategy blog</title><link>https://bitsby.me/2020/02/reposting-woolpert-cloud-strategy-blog/</link><pubDate>Mon, 10 Feb 2020 20:01:00 -0700</pubDate><guid>https://bitsby.me/2020/02/reposting-woolpert-cloud-strategy-blog/</guid><description>Reposting &lt;a href="https://woolpert.com/resource/i-have-a-cloud-strategy-now-what/"&gt;a blog&lt;/a&gt; I wrote for &lt;a href="https://www.woolpert.com"&gt;Woolpert&lt;/a&gt; on how to proceed with a cloud strategy.
I focus mostly on the &lt;em&gt;Decide&lt;/em&gt; phase, since that&amp;rsquo;s most interesting to me personally, and I think it&amp;rsquo;s also the part where a lack of recognition of an appropriate mindset gets people in a pickle.</description></item><item><title>GeoAccelerator for Rapid Experimentation</title><link>https://bitsby.me/work/geoaccelerator/</link><pubDate>Tue, 14 Jan 2020 20:11:21 -0600</pubDate><guid>https://bitsby.me/work/geoaccelerator/</guid><description><img src="https://bitsby.me/work/geoaccelerator/desktop-tiles.png" alt="GeoAccelerator for Rapid Experimentation" style="max-width: 100%; height: auto;"/><br/><br/>Introducing experimentation into the technical sales process to: produce evidence for customers; close deals; publish assets for future sales.</description><enclosure url="https://bitsby.me/desktop-tiles.png" type="image/jpeg"/></item><item><title>Core Skills ≥ Technical Skills</title><link>https://bitsby.me/2019/01/core-skills-technical-skills/</link><pubDate>Tue, 29 Jan 2019 19:49:24 -0700</pubDate><guid>https://bitsby.me/2019/01/core-skills-technical-skills/</guid><description>Re-posting a popular article of mine from LinkedIn, I muse over the relative benefits of technical skills over core skills in hiring.</description></item><item><title>Building the Android Auto Partner Engineering Team</title><link>https://bitsby.me/work/android-auto-partner-engineering/</link><pubDate>Fri, 15 Jun 2018 12:00:00 -0600</pubDate><guid>https://bitsby.me/work/android-auto-partner-engineering/</guid><description>Grew from individual contributor to global team lead for Android Auto partner engineering, shipping 75+ partner integrations across 130+ head unit variants in 24 months.
Designed a third-party certification program that removed the team as the bottleneck and let Android Auto scale to hundreds of car models.</description></item><item><title>UML in a nutshell</title><link>https://bitsby.me/2010/01/uml-in-a-nutshell/</link><pubDate>Thu, 14 Jan 2010 08:13:48 -0600</pubDate><guid>https://bitsby.me/2010/01/uml-in-a-nutshell/</guid><description>I don&amp;rsquo;t always reach for UML but when I do I &lt;em&gt;always&lt;/em&gt; draw the wrong little diamond for aggregation vs. composition so maybe this will help me to use the right pen for the job next time!</description></item><item><title>Running SQL scripts in C#</title><link>https://bitsby.me/2010/01/running-sql-scripts-in-c/</link><pubDate>Tue, 05 Jan 2010 08:01:44 -0600</pubDate><guid>https://bitsby.me/2010/01/running-sql-scripts-in-c/</guid><description>How to run a bunch of SQL scripts inside a C# program.</description></item><item><title>Capturing edit events in ArcMap</title><link>https://bitsby.me/2008/10/capturing-edit-events-in-arcmap/</link><pubDate>Fri, 24 Oct 2008 20:11:30 -0700</pubDate><guid>https://bitsby.me/2008/10/capturing-edit-events-in-arcmap/</guid><description>&lt;h2 id="issue"&gt;
Issue
&lt;a href="#issue" class="heading-anchor" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;You are trying to capture the Save Edits and Stop Editing toolbar actions in &lt;a href="http://www.esri.com/arcgis"&gt;ArcMap&lt;/a&gt; through code so that different actions can be performed for each event. Unfortunately the underlying events associated with the actions (saving and stopping editing) fire for both actions so figuring out if the user Saved or Stopped Editing is a chore.&lt;/p&gt;
&lt;h2 id="resolution"&gt;
Resolution
&lt;a href="#resolution" class="heading-anchor" aria-label="Link to this section"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Set up your code to listen for the events:&lt;/p&gt;</description></item></channel></rss>