Disclaimer: This is where I shout my thoughts and opinions.
Modern testing - Test more and better with less friction (Talk @ JavaZone 2024)
Test more and better with less friction is a talk I did @ JavaZone 2024, all about reducing friction in our automated tests.
Interface hell: The Interface Segregation Principle doesn't mean “Add interfaces everywhere”
Most developers are aware of SOLID at this point, and "I" stands for "Interface Segregation Principle". And like a lot of the other principles in SOLID, it has been wildly misunderstood.
Object-Oriented Programming: It’s more than “classes and stuff”
There are a lot of wildly misunderstood concepts in programming. Some that spring to mind are agile, unit testing and, yes, object-oriented programming. Let's talk about that.
Anemic Domain Models
It was not long ago I championed anemic models. They were great! Easy to set up for testing and easy to work with. They were malleable and adapted to whatever context I needed.
I was wrong…
Observations After a Decade Making Software
The waves towered above our ship. Each time we reached a crest, I felt as light as a feather, freed from gravity's grasp, if only for a moment. The sea happily accepted our descent. I was cushioned by a mattress in my bunk each time we dropped. My port window showed nothing but water, a strange sight given that my cabin was above sea level at our departure.
The tech-debt death spiral
Tecnical debt is a sinister issue that plagues many companies, yet many of us are happy to ignore it. So many developers and managers are happy to prioritise other things over technical debt and allow our codebase to rot.
Let's look into the nature of technical debt, what makes it so dangerous and how it can kill companies.
The joy of self-updating dependencies
As developers, we've constantly faced the choice between reusing existing solutions or writing them ourselves. Most of the time, we end up reusing something already existing, be it an ORM library, a web framework or something else. Most developers work on projects with a whole bunch of dependencies…
Why can't we just turn off infrastructure?
The other day I read Testing Without Mocks: A Pattern Language by Jame Shore. The post is positively provocative, and it really made me think. The underlying idea is that we add code to production to simply "turn off" infrastructure requirements for the application.
The notion of simply switching off infrastructure got me thinking: Why don't we do that today?
John’s 9 Traits of Well-built Systems
Everyone has their view of what a well-built system looks like. We have the Joel test, the 12-factor app and many more. This inspired me to reflect on what is important in a modern system, at least to me.
Authorisation Patterns for Monoliths and Microservices
Authorisation can be represented by if and else statements, but the impact of how one decides to implement authorisation can have broad and long-lasting consequences.
The exciting new world of AI-generated code (Copilot)
A few days ago, Github released a completely new tool to the world called Copilot, and I am very excited about what it may lead to, which is why this post exists. I have not received an invite, so I have yet to try it out for myself, so these are just my thoughts based on what I’ve seen.
Useful tools: Feedly, Pocket & Kobo
There are so many different websites for news and articles these days. We have local newspapers, international news sites, blogs, tech sites and whatnot. With so many places which produce quality content, it is impossible to keep up.
The ultimate developer reading list (according to me)
This is my “master list” on literature which I believe to be relevant to developers. Rather than writing a new blog post for every book I read I will instead update this post right here. Do you think there’s a book I should read? Feel free to send the tip my way!
ORM framework anti-patterns
These days, most projects tend to use one form of ORM frameworks. They make development easier by hiding all that pesky database stuff away. ORM frameworks help with security, cuts down on bloat and remove a bunch of potential traps one can fall in if one opts for not using one. At this point, I’d be more surprised if a project using a database without an ORM framework.
Introducing .toUUID()
If I had to choose which aspect of software development I am most passionate about it would probably be how we make our products, which includes things like what kind of standards we follow when writing code, which tools we use, how we get our final code into production in a safe manner. I care about the long term sustainability of what we’re making. Therefore, to nobody’s surprise, I care a lot about:
Code readability
Automated testing
Both of which .toUUID() attempts to help with!
A programmer's resume
Up to this point I’ve used Google Docs for hosting my resume. After all it is cloud based, available from any computer and phone with an internet connection. Using Google Docs I may convert my resume to whatever format I like. Google Docs is great, but I’m a developer and using something like Google Docs, Word or anything like that would not be very developer-esque of me.
Spock and JUnit - a comparison
In the book ‘Working effectively with legacy code’ Micheal Feathers defines legacy code as code without tests. While some might not agree with this definition I do think it showcases how important testing is. It is very difficult to maintain and develop quality software without proper test automation.
Utility and helper classes - a code smell?
This is a very spicy & hot take of mine: I consider most utility or helper classes I’ve seen throughout my professional career to be a code smell and, generally, they are detrimental to the overall solution. Allow me to elaborate.