The hardest thing in computer science

The hardest thing in computer science

I firmly believe that the hardest thing in computer science is naming things. I saw it many times during code reviews or analyzing legacy code, over and over: Wrong (vague or meaningless) names are often the consequence of bad design. For instance, it is impossible to find a good, concise…

Playing with HTTP/2

HTTP/2 is a new major revision of HTTP protocol. It's designed for low-latency transport of content over the web. In this article I will show you how to set up a sample web application (with Jetty), how to analyze HTTP/2 traffic (with TLS decryption) and how to simulate…

Storytelling with Tests #2: setting up the stage

Storytelling with Tests #2: setting up the stage

This is the second part of my post series dedicated to quality of automated tests. In the previous part I wrote about test names and granularity. Today I'm going to focus on test data setup, its readability and how it is related with the evolution of our test suites. We…

Replacing booleans and enums with dates

It's imperative for a domain model to contain enough data to enforce domain invariants. A good domain model may capture even more information related to the business processes being handled by the system (it's a bit different when you use event sourcing, but it's out of the scope of this…

Thank God TDD is not dead "yet"

Last Friday I attended Geecon TDD conference in PoznaƄ. As the name suggests, it was dedicated to Test Driven Development. I always see a programming conference as an oportunity to refresh your mind and focus (again) on what makes programming such a great experience. It was the same this time.…