Blog
I tend to write blogs less frequently that TIL’s. So they are typically longer and dig a little deeper.
Claude kept apologizing for skipping my expectation-based testing rules…and then skipping then again 2 minutes later.
This is how I replaced best-effort written instructions with two …
I built a GitHub CLI extension for engineering flow metrics. Here’s
the philosophy behind it, and two stories about what went wrong.
What I learned building an AI job search agent as a Claude Work plugin
in three days—and why I open-sourced it instead of selling it.
What I learned building CalcMark — a calculation language embedded in markdown — in Go.
Lexers, parsers, type systems, and the tradeoffs that bit me.
How I used compound engineering to build a real product as a solo developer.
Not “look how many commits I made” but “look at the quality and speed of
issue resolution.” The …
I like Hugo for static web sites but I always forget how to start from from scratch without a template. This is my short guide with some handy tips and reminders.
Overview of generative approaches to image and video generation. Includes text-to-image and text-to-video tasks.
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.
Week 3 is all about agents. Workflows, tools, multi-step agents, and the protocols and frameworks involved.
RAFT (Retrieval-Augmented Fine-Tuning) confused me when I first heard about it in a training class. It’s a technique that combines both offline fine-tuning and runtime retrieval to improve the …
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.
Using
uv instead of Anaconda environment.yml to set up a virtual environment for LLM experiments.Resources from Week 1 of the AI Engineering Course
Slides and recording of my presentation about how technical program management (TPM) came about at GitHub. All in context of Tuckman’s model of group development.
How two German automotive engineers got inside my head.
Or: how I learned to stop stressing out and to start solving problems.
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?
I had a great chat with a college student about a career in tech. I thought I’d share some of the advice I gave them. It’s not going to change the world, but it might help someone.
Using SQLite to work with hierarchical data and learning about CTEs and data loading along the way.
Using
task as a Make alternative for your automation tasks and wonderment.Using Go and SQLite to munge YAML data for fun and profit…or for free.
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’re sharing with them?
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.
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.
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 …
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.
Using some open source tools to learn about tax data in Denver.
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).
Reposting a blog I wrote for Woolpert about digital
transformation and the necessary culture, learning, and
mindset for a successful and practical cloud journey.
Finally learning more about ssh keypairs and how to manage them using ssh-agent.
Using
asdf as an alternative to homebrew for managing
language runtimes like Python and Ruby. It provides a holistic solution
to the same problem that pyenv and nvm and rvm solve for specific …Answering my own coding exercise using Go and sharing a
couple of things I learned along the way about JSON and
concurrency.
Re-posting the kickoff to Woolpert’s 2021 Practical Cloud Journey series.
It’s all about customer value, not getting ahead of yourself (or your
competence), and the importance of context.
Reposting a blog I wrote for Woolpert on how to proceed with a cloud strategy.
I focus mostly on the Decide phase, since that’s most interesting to me personally, and I think it’s also the …
Re-posting a popular article of mine from LinkedIn, I muse over the relative benefits of technical skills over core skills in hiring.
I don’t always reach for UML but when I do I always 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!
How to run a bunch of SQL scripts inside a C# program.