The slowest thing in yap was how much I made the model read before it could speak. So I cut the tool surface, trimmed the prompt, and rebuilt compression until a 27B Ollama model could actually drive the agent.
I analyzed 1,000 of my prompts. Here's what I learned about talking to AI.
I read through all 1,020 of my substantive prompts and I'm learning to be a more direct communicator.
A fluteful of resources
A collection of my favorite Native American-style flute makers, teachers, and learning resources.
Using a datalist for typeahead with htmx
Implement typeahead using the HTML datalist element with a little help from htmx.
AKA ActiveSearch.
AKA ActiveSearch.
How to fix failed XHR/Fetch requests in Safari
If you're seeing errors in Safari's Network panel such as "The resource was requested insecurely." or "An error occurred trying to load the resource." for XHR or fetch() requests that normally work, you might be running into an unexpected window.stop() issue.
How to view commits by author in tig
Instead of starting tig and grepping for an author, start tig with the --author option.
Hanging pictures with a non-slip adjustable knot
The best non-slip adjustable knot I've found for hanging pictures with slippery monofilament wire.
Modern Javascript: Everything you missed over the last 10 years
JavaScript has come a long way since I knew it as the “D” in DHTML. For anyone like me, who’s been reluctant to use the latest syntax that could require polyfills or a transpiler, I’ve written this cheatsheet to get you caught up on all the goodness that’s widely supported in modern browsers.
How to pinch-to-zoom and 2 finger pan a Fabric.js canvas
If you want to support the pinch-to-zoom gesture, and two-finger panning while using a trackpad on a webpage, you only need to check for one special property on the wheel event.
How to add a Fabric.js object to a Fabric.js group
When adding an existing Fabric.js object to a group be sure to remove the object from the canvas before adding it to the group. Otherwise, the original object will still be draggable and will muck up the group.
Delicious Dairy-Free Eggnog
Delicious dairy-free eggnog is simple. Just substitute the cream with coconut cream and the milk with oat milk.
Advanced Gmail search to help you organize your inbox.
By using Gmail’s advanced search operators, I created a query to help me unsubscribe from unwanted emails and tidy up my inbox.
Zero downtime deployments with Docker, Caddy Server, and Bash.
An overview of performing zero downtime deployments with docker, fiber, caddy, and a shell script.
Making SQLite faster in Go
The most popular way of using sqlite in Go happens to also be the slowest when using it in a concurrent application like a web app. Roll your own connection pool to speed things up.
3 reasons to use Fiber over Gin
Fiber beat Gin for me because Gin's httprouter simply panics on ordinary REST routes. But I've since changed my mind — most hobby sites don't need Fiber's performance, and stdlib (or chi) is the best place to be. Here's the full story.
The ideal CodeMirror setup
Check out these CodeMirror options for the ideal setup.
My own static site generator
How I built my own static site generator for the relaunch of turriate.com which blurs the lines between dynamic and static.
Responsive CSS grid with fixed width items
How to set up grid items to be a fixed width, responsive, and center-aligned. See how to do it yourself.
The Makefile is the programmer's README
Six years on, I still reach for `make build` even when `go build` is trivial to type by hand. The Makefile is the programmer's README — documentation, repeatable processes, and a pointer to scripts, all in one file. Plus: why you should actually write `.PHONY`, and what happens when you don't.
How to Dockerfile
A practical cheatsheet for writing Dockerfiles — the base-image + deploy-image pattern, a full command reference table, and a look at why a growing number of people are switching from Docker to Podman.
How to generate a signed Rails session cookie
Bypass the sign-in process by sending a signed session cookie in the HTTP headers.
Testing Twitter OAuth with real data
Ensure that your application’s Twitter integration works by having your test suite actually sign in every so often.
The jungle is greener on the other side
Montañita wouldn’t have me over the Christmas holiday so I moved up the road to Ayampe.
Finally reached Ecuador’s coast
After a week delay in Cuenca, I've finally reached the first destination of my surf trip - Montañita, Ecuador.
Here’s to taking the next 10 months off
My life as a Rocketeer has ended and my life as an active, traveling hacker has begun.
Silencing a Forked Process
How to provide the concurrency of a forked process without spamming the parent process’ stdout.
Moving off Webby to Nanoc
After a long survey of Ruby's static website generators I've finally settled on Nanoc.
Bookmarklets not chiclets
Chatting about bookmarklets with Refresh Jacksonville - Pecha Kucha Style.