Archive for November 2014

Week 47, year 2014

  • C# Read-Only Collections and LSP - I often see programmers saying that .NET read-only collections violate Liskov Substitution Principle. Do they? The quick answer is no but let’s go through the whole story first. [Enterprise Craftsmanship]
  • Higher Order Programming - Let’s have some fun with higher order programming in PHP. I’ll start by showing how to program with Lambdalicious (or λlicious for friends) and introduce the real meat along the way. Don’t worry too much about the dark magic that may appear to power some of the features of Lambdalicious. It’s on GitHub if you’re curious. Just follow along and keep track of all the functions. Note: The code in this blogpost works with Lambdalicious v0. [Mathias Verraes]
  • Modelling Heuristics - The slides for my talk at Build Stuff in Vilnius. (As often, the slides are not very interesting without the text. ) See the slides on Speakerdeck Abstract “How do you approach software modelling problems?” When a client asked me about my mental process, I didn’t have a proper answer — yet. The question intrigued me. Do you need a propensity for modelling, or is it a learnable skill? I embarked on a mission to find modelling heuristics: the mental tools, that help us look at the problem from different angles; the little tricks to validate a model before we build it; the rules of thumb that lead us to iteratively refine our solutions. In this talk, I share some of the ideas I collected from books, from people I interviewed, and from my own experiences. [Mathias Verraes]
Permalink | From 17 November 2014 to 23 November 2014 | Last updated on: Mon, 7 Jun 2021 09:18:52 GMT

Week 46, year 2014

  • CQS with Database-Generated Ids - Mark Seemann brings up a very interesting subject in his post: how to fit Command Query Separation principle in case you have to save a brand-new object in a database and also need the created id back? Sure, you can have GUIDs for identifiers (which have some drawbacks as I’ll show later on), but what if you really need integers? I’ve been asked the same question for several times, so in this post I’ll share the solution I use for this problem. [Enterprise Craftsmanship]
  • Domain Events - Boundaries & Messages A system’s design is defined by it’s boundaries, and by the way it communicates with other systems. This outward facing design is, all things considered, more important than the internals. It is important whether we are talking about small systems (such as an object) or large systems. The communication between systems happens with messages. We can say that our system is bounded when it does not need to know anything about the internal structure of systems it communicates with, and those systems do no need to know anything about our system. When the boundaries are chosen well, we can achieve greater decoupling between systems. [Mathias Verraes]
Permalink | From 10 November 2014 to 16 November 2014 | Last updated on: Mon, 7 Jun 2021 09:18:52 GMT

Week 45, year 2014

  • Entity Base Class - If you follow DDD principles, you eventually end up creating a base class for all the domain entities. It’s a good idea as it allows you to gather common logic in one place. When you decide to do that, you inevitably face the question of what exactly should be included in that base entity and how it should be presented. [Enterprise Craftsmanship]
  • Object Reorientation - Presentation delivered at DrupalCamp Ghent, November 2014 No slides? Try here [Mathias Verraes]
Permalink | From 03 November 2014 to 09 November 2014 | Last updated on: Mon, 7 Jun 2021 09:11:25 GMT