The release of Object Design Style Guide

Posted on by Matthias Noback

Book cover

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...

Defining a custom filter and sorter for Sculpin content types

Posted on by Matthias Noback

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".

Improvements in personal website deployment

Posted on by Matthias Noback

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.