TDD, Where Did It All Go Wrong, a talk by Ian Cooper

This classic talk by Ian Cooper is a breath of fresh air. Copper quick;y covers Test Driven Development as it is generally practiced, the arguments against TDD and why those arguments feel right, and then goes back to the principles and practices of TDD as described by Kent Beck in Test Driven Development By Example.

The two points that have changed my game:

  • Test modules, not classes - which means you need to think much more about the design of your system, the actual interfaces that programmers will use, and the flow of data. That eventually leads you to ports and adapters, which Cooper briefly talks about at the end.

  • Refactoring is the key part of the process. If you properly refactor from working but filthy to working and clean when you intitally develop your system you should be able to continue to maintain your code, making changes to the implementation details without having to change tests.

The talk is an hour long, but it’s well worth it.

How To Run 100 Miles, a documentary by Brendan Leonard

Brendan Leonard is a writer, journalist, runner, and outdoors enthusiast. His blog, Semi-Rad is a source of joy and fun for me every week. In 2017 he made a short documentary for REI titled How To Run 100 Miles, which chonicles the build up to and running of 102.9 mile ultra-marathon, but also dives into why anyone would want to do such a horrible thing to themselves. It’s an uplifting and entertaining film that might even get you to consider lacing up for a long run.

For my part, tomorrow begins a 10 month build up to the Tarawera 50km Ultra.

Monday Links 22

GitHub had to change their RSA SSH host key after it was exposed in a public repo. The blog post contains instructions on how to remedy any warnings or errors programmers and automated tools might be experiencing due to the change.

Microsoft are beta-testing Loop, a planning, note taking, process creating tool that looks and works a lot like Notion. And, of course, it’s got OpenAI features built in.

Austin Kleon: How Darwin started keeping a journal

Analyzing an analyzer - A dive into how RuboCop works by Kyle d'Oliveira

Linters and codeformatters are my favourite kinds of tool because they promote consistency, uncover complexity, and save teams from nonsense issues.

The other thing about a linter is that it seems like one of those problems that seems easy on the surface but has a potentially huge amount of complexity as soon as you think about it. This RubyConf by Kyle d’Oliveira discusses RuboCop, the most popular linter for Ruby.

Kyle briefly talks about how his organisation uses RuboCop, then does a short dive into how RuboCop implements its rules using abstract syntax trees, depth first searching, and other techniques. This talk is perfect if you feel like diving deep, just for a little bit.