A Developer’s Starting Point for Integrating with LLMs

Here’s what I know so far, from a lay-developer’s perspective (no AI or ML experience). So you’re a coder, and you’ve been asked to integrate with ChatGPT. What do you need to know? ChatGPT is an example of a Large Language Model (LLM). LLMs are a kind of machine learning (call it AI if you … Read moreA Developer’s Starting Point for Integrating with LLMs

Tiny dramas, tiny deploys

It is better to practice risky things often and in small chunks with a limited blast radius, rather than to avoid risky things. Charity Majors, “Test in production? Yes“ Charity is writing about deploys. Not-deploying may be safer for tonight, but in the medium term it leads to larger deploys and bigger, trickier failures. In … Read moreTiny dramas, tiny deploys

Code and Coders: components of the sociotechnical system

TL;DR: Study all the interactions between people, code, and our mental models; gather data and we can make real improvements instead of guessing in our retros. Software is hard to change. Even when it’s clean, well-factored, and everyone working on it is sharp and nice. Why? Consider a software team and its software. It’s a … Read moreCode and Coders: components of the sociotechnical system

Correctness

How important is correctness? This is a raging debate in our industry today. I think the answer depends strongly on the kind of problem a developer is trying to solve: is the problem contracting or expanding? A contracting problem is well-defined, or has the potential to be well-defined with enough rigorous thought. An expanding problem … Read moreCorrectness

Property Testing in Elm

Elm is perfectly suited to property testing, with its delightful data-in–data-out functions. Testing in Elm should super easy. The tooling isn’t there yet, though. This post documents what was necessary today to get a property to run in Elm. Step 1: elm-test This includes an Elm library and a node module for a command-line runner. The library … Read moreProperty Testing in Elm

Ultratestable Coding Style

Darn side-effecting programs. Programs that change things in the outside world are so darn useful, and such a pain to test.For every piece of code, there is another piece of code that answers the question, “How do I know that code works?” Sometimes that’s more work than the code itself — but there is hope. … Read moreUltratestable Coding Style

The Quality Wheel

“Quality software.” It means something different to everyone who hears it. You know quality when you see it, right? Or maybe when you smell it. Like a good perfume. Perfume preferences are different for everyone, and quality means something different for every application. In perfume, we can discover and describe our preferences using the Fragrance … Read moreThe Quality Wheel

Fun with Optional Typing: cheap mocking

For unit tests, it’s handy to mock out side-effecting functions so they don’t slow down tests.[1] Clojure has an easy way to do this: use with-redefs to override function definitions, and then any code within the with-redefs block uses those definitions instead. To verify the input of the side-effecting function, I can override it with … Read moreFun with Optional Typing: cheap mocking

Fun with Optional Typing: narrowing errors

After moving from Scala to Clojure, I miss the types. Lately I’ve been playing with Prismatic Schema, a sort of optional typing mechanism for Clojure. It has some surprising benefits, even over Scala’s typing sometimes. I plan some posts about interesting ones of those, but first a more ordinary use of types: locating errors. Today … Read moreFun with Optional Typing: narrowing errors