Don’t use mocks

Writing good unit tests is made much easier by dependency injection. This lets you separate your code’s behavior from that of your dependencies.

Many people use mocks to add dependencies to unit tests. I think this is usually a mistake.

Read more →

Supreme Court DoS attack

Just Buy All the Lawyers

In the latest edition of Casey Newton’s newsletter, Platformer, he makes the case for why the plaintiffs in Gonzalez vs Google botched their oral arguments. The mechanism is fascinating.
Read more →

Looking in Go’s Mirror: How and When to use reflect

This article was originally published on gopheradvent.com

reflect can be intimidating to new Go programmers because it’s very generic and you lose access to many niceties in the language. But it doesn’t have to be. Let’s build some programs that use reflect as a way to demystify the package and illustrate the power and pitfalls that come with using it.

Read more →

What is software for?

it ain't all good

In the last blog, I wrote a few things that software is for:

  • putting people on the moon
  • safely deploying airbags
  • making my bank account add up

Read more →

Code is not Prose

or even poetry!

Once a month or so, this idea comes rambling out of the programming community1:

Software is prose. It is written to communicate ideas to others, it has the interesting side effect that it can be transformed into something a computer can execute.
- Chet Hendrickson

This sounds nice on paper. It makes for a good conference talk about how to structure software, how to design programming languages, and how to collaborate. I agree with what I think is the intent: write software so that other people can understand it and change it as they need to.

Read more →

Nasty refactorings with go.mod replace

alias the pain away

At work I’ve been building a new program on top of an SDK that’s under very active development. After about 6 weeks without updating the version, the SDK had deleted some code I was using and had a ton of breaking changes. If I’d simply updated the library, my entire program would fail to build, and it also wouldn’t be clear how to get it back to a good state. Following in the spirit of Branch by Abstraction, I’d rather introduce the new code side-by-side with the old and incrementally migrate without breaking the program.

Read more →

Caroline Ellison is not a sympathetic figure

yeah, I said it.

I recently read this Washington Post Article (archive.org) titled Caroline Ellison wanted to make a difference. Now she’s facing prison. After the first read-through I was incredulous at the sympathetic presentation in the biography. It reads like a resume, like a “it all spun out of control!” story about someone who got in over her head. I tweeted:

Lol how do you get such a sympathetic bio after stealing billions of dollars @GerritD

Read more →

Unmarshaling JSON in Go: The weird parts

Some tricky bits

JSON deserialization is Go seems easy, but there are a lot of tricky parts. Come and see!
Read more →

Evaluating New Tools

What I look for (and don't)

I was reading about Phoenix today, looking at guides and documentation. It’s great to see in a guide when it’s easy to quickly set up a project, that makes it fun to get started and explore. The most exciting thing about Phoenix is that “reactivity”, or live updates, are a core part of the system, not an add-on. Nowadays I find any software without reactive updates frustrating and annoying to use.

Read more →

Podcasts At the End of the Indie Web

Not blogs. Not forums.

There’s been a lot of restrospecting lately, lamenting the loss of the “indie web” and its subsumption by content platforms like Facebook, Instagram, Reddit and Twitter. (I’ve always wondered where Tumblr fit in - more indie than any of these, but still - owned by Yahoo!). A few casualties that fell by the wayside: blogs, web comics, and independent, topic specific forums.

All of these media still exist, much diminished and publishing social posts to route you to their sites, but they are still self-hosted, free of editorial control and in their author’s hands. To some degree, these forms will probably stay on the web until millenials die out.

Read more →