Registration for Codefreeze 2027 is open
It's about people. It always was.
Software Crafter
It's about people. It always was.
Almost every recent npm supply chain attack has used the same delivery mechanism: a compromised package ships an install script, and `npm install` runs it. npm 12 turns that off by default.
Meta is investing billions into an LLM that writes software the Facebook way, and it has reassigned thousands of engineers to produce the training data for it. This paves the way to change how all of us build software, whether we like it or not.
I have been iterating on Event Sourcing and CQRS architectures for nearly a decade. When I first started with this pattern around 2016 and 2017, the implementation was considerably more complex — a lot of ceremony, a lot of infrastructure, and a lot of things that could go wrong. Over the years I have stripped it back again and again, and what I have arrived at now is something I'm genuinely happy…
LLMs are excellent at scaffolding code that follows an existing pattern. They are not equipped to design new domain concepts. When you let one do design work, you get code that looks right, tests that pass, and an implementation that quietly misses the point. Worse: you own none of the understanding, so when something breaks, you're debugging a library you didn't write.
Use RFC 7807 "Problem Detail" to document API errors.
Build scalable systems by separating concerns.
A pull request should only address one change at a time.
Make code more readable.
A pull request should only address one change at a time.
A .gitignore in a project should only cover artifacts caused by the contained source code, not those caused by the personal choice of editor and/or environment of a developer.
This hides dependencies to configuration values and makes them hard to spot.
It's important to have an automated way of formatting source code to eliminate discussions around style and remove noise from diffs.
I prefer saga branch over master because I think that this name (which means a long continuous recollection of histories) better reflects how development happens.
Bad: myMethod(arg1, arg2, arg3); Good: myMethod({ arg1, arg2, arg3 });
At work I don't like when people say sorry about something they can't control. I prefer they either just acknowledge it, or tell me what they are going to do about it.
This is the material I share with colleagues who want to learn the idiomatic way of building serverless applications on AWS
This talk is an encouragement for developers to trust their skills and tools, but also invest in mastering them.
Great book for devs & managers: serverless intro & potential!
A small lecture I gave on how to approach designing the software architecture for a cellular IoT project.