Building an IDE Plugin the Same Week You Build the Language
Most languages add tooling years after the compiler. I built the Yar IntelliJ plugin while the compiler was still changing, and that changed the language design.
Most languages add tooling years after the compiler. I built the Yar IntelliJ plugin while the compiler was still changing, and that changed the language design.
Implementing a garbage collector for the Yar compiler meant conservative stack scanning, mark-and-sweep, setjmp for registers, heap growth targets, and one ugly thread-safety constraint.
Yar needed imports across project boundaries, so I built a small package manager: Git dependencies, alias-based imports, content-addressed caching, transitive resolution, lockfiles, and no registry.
Four months ago I asked ChatGPT a dumb question while walking my dog. It told me building a programming language wasn’t that hard. Now I have a compiler, a type system, generics, structured concurrency, and a garbage collector.
· music
I thought streaming was the ethical upgrade from piracy. Turns out it just made music disposable. Now I buy CDs, pirate FLACs, and actually listen to albums again.
Stateless agents repeat mistakes. lgtm and snap use a findings file, shared codebase context, and recovery loops so later tasks can use what earlier tasks already learned.
· go
Why I built mokapot — a single Go binary that speaks SQS and SNS well enough for real AWS SDKs to connect without configuration changes. Persistence, filter policies, and the tricky parts of faking a cloud service locally.
Four real examples from recent Go CLI projects — bracketed paste handling, a scripting DSL, safe symlink restoration, and diff truncation — that show how small decisions separate a script from a tool people trust.
· cli
Defining the ‘Gold Standard’ for production-ready CLIs: TTY-aware behavior, clean stdout vs stderr contracts, JSON output for automation, and idempotent mutations.
· web
A toast notification does not need React, a provider, a portal, or a bundle. HTMX out-of-band swaps plus a little CSS get most of the way there.