
Today Manning released my latest book! It's called "Object Design Style Guide".
In November 2018 I started working on this book. The idea for it came from a conversation I had with the friendly folks at Akeneo (Nantes) earlier that year. It turned out that, after days of high level training on web application architecture and Domain-Driven Design, there was a need for some kind of manual for low level object-oriented programming. Not as low level as the kind of programming advice people usually refer to as clean code, but general programming rules for different kinds of objects. For instance:
- A service gets its dependencies and configuration values injected as constructor arguments.
- A service is an immutable object.
- An entity always has a named constructor.
- An entity is the only type of mutable object in an application.
And so on...
This blog runs on Sculpin, a static site generator. The generator itself runs on Symfony, which for me makes it easy to extend. However, I find that if you want something special, it can usually be done, but it may take several hours to get it right. In the end though, the solution is often quite elegant.
A custom content type for events
One custom feature I wanted for this website was a list of events (conference talks, trainings, etc.). Sculpin's documentation suggests using a custom content type for that. This allows you to create a directory with files, each of which will be considered an "event".
I wanted to be able to deploy MailComments to my Digital Ocean droplet (VPS) easily and without thinking. Due to a lack of maintenance, some more "operations" work had piled up as well:
- The Digital Ocean monitoring agent had to be upgraded, but
apt
didn't have enough memory to do that on this old, small droplet.
- The Ubuntu version running on that droplet was also a bit old by now.
- The easiest thing to do was to just create a new droplet and prepare it for deploying my personal websites.
- Unfortunately, my DNS setup was completely tied to the IP address of the droplet, so I couldn't really create a new droplet, and quickly switch. I'd have to wait for the new DNS information to propagate.
These issues were in the way of progress, so I decided to take some more time to rearrange things.