On software and life
Printing money - hacking loyalty points
At work, we've all grown quite vigilant when it comes to customers trying to cheat the system. A necessary trait when wo...
Everyone has to serve somebody, but software has to serve more than one
When people get paid to write software, we very often find some form of friction between the people that build the softw...
Side by side
This week marked my first year at my current employer. While that event went by rather silently, one year in, a few of m...
TDD as the crack cocaine of software
> The psychologist Mihaly Csikszentmihalyi popularized the term "flow" > to describe states of absorption in which atten...
Solomon, the architect
Two junior developers who started working for the company at the same time, had been quite competitive with each other f...
Tests as part of your code
In the last project I worked on - processing financial batches - we put a lot of effort in avoiding being silently wrong...
Command and event semantics
Yesterday, I read [this blog post by Michael Feathers](https://michaelfeathers.silvrback.com/when-it-s-okay-for-a-method...
Observations over assumptions
> I heard a story once about an engineer who worked on the Disneyland > site when it opened in Anaheim, CA in 1955. > ...
Event source all the things?
Having covered [projections](http://www.jefclaes.be/2013/10/event-projections.html) last week, I think I have come full ...
My understanding of event sourcing
I've been studying event sourcing from a distance for little over a year now; reading online material and going through ...
Actor Model in COBOL
In an Actor system, each Actor acts as a self-contained and autonomous component. An Actor can only communicate with oth...
Inheritance is like Jenga
These last few days, I have been working on a piece of our codebase that accidentally got very inheritance heavy. W...
But I already wrote it
A few weeks ago, we set out to implement a feature that enabled back office users to set a new rate ahead of time. With ...
Multiplayer Enterprise Architect
Hanging around in the pub after DDDX, I ended up talking to [Alberto Brandolini](https://twitter.com/ziobrando). For tho...
Not handling edge cases, making them explicit instead
When I wrote about [accidental entities](http://www.jefclaes.be/2013/06/accidental-entities-what-about-ui.html) earlier,...
Accidental entities - what about the UI?
This post is a follow-up to my previous blog post "[Accidental entities - you don't need that identity](http://www.jefcl...
Accidental entities - you don't need that identity
An entity is identified by an identifier, while value objects are identified by their value. If I make a living ren...
Designing entities: immutability first
The first year I wrote software for a living I spent my days mostly writing forms over data applications; most of my eff...
My Christmas holiday project postmortem
Somewhere over a year and a half ago I discovered the music of Dire Straits, which has sparked a fanatical love and fasc...
Adding the R to CQS: some storage options
I've been writing [quite a bit](http://www.jefclaes.be/2013/01/separating-command-data-from-logic-and.html) about [CQS](...
When I started my first job, I hardly ever judged my peers. After all, how could I? Everything was unknown for me; I cou...
It's not cake we are baking
I recently watched a talk on Vimeo where [Christin Gorman](https://twitter.com/ChristinGorman) talks about how cookie do...
Commuting? Have you done the math?
On my first job interview, over four years ago, I was asked whether I would relocate if I was hired. Back then, I still ...
On job titles
It didn't take long before I noticed how little job titles mean. In my first job, you were assured to be granted [a fanc...
Is serialization really that expensive?
While wading through an exotic codebase, I stumbled upon a static class named Convert. This class contained somewhere a...
My learning resources distilled
I have picked up a few new tools this summer ([MongoDB](http://www.mongodb.org/), [NancyFx](http://nancyfx.org/) and [We...
The 'everyone should learn to code' dilemma
Back when I was working on software for fire departments, we started thinking about reworking a critical piece of our so...
The open plan fallacy testimonials
I wrote an article titled '[The open plan fallacy](http://www.jefclaes.be/2012/05/open-plan-fallacy.html)' just two week...
The open plan fallacy
I haven't worked in a whole lot of places, somewhere around four, but every single one of them used an [open plan](http:...
Why I will always love RSS
There has been a lot of noise in the tech community earlier this year about how RSS is supposedly having one foot in the...
Some Servicelocator pattern stinks
I have been working on a somewhat legacy codebase which makes use of the [Servicelocator pattern](http://martinfowler.co...
Learning: the Hacker Way
I have had a fair amount of discussions on continuous learning and knowledge sharing the past few days. It became rather...
There's no place for monogamy in technology
In this post I would like to share some of my thoughts on a [recent post by James Hague](http://prog21.dadgum.com/128.ht...
When should you take performance into consideration?
Before publishing [my previous post on rewriting an if](https://jefclaes.be/2011/11/rewriting-if.html), I knew some peop...
Blame no one but yourself
Blame no one but yourself. This is one of the few quotes I remember months after reading [this book](https://jefclaes.be...
Daydreaming about jQuery Mobile and the WebAPI
I recently blogged about [programming for the future of mobile](https://jefclaes.be/2011/11/programming-for-future-of-mo...
The gift of legacy
Just after graduating, I hated legacy with the heat of a thousand suns. I felt unfortunate, having to work on old code, ...
Something that can bother me tremendously is being surrounded by people who are in a constant state of being [comfortabl...
Building small things
Due to the nature of things we build in our day to day job, writing software can wear out even the most fit of us. ...
Last week, I resigned from my job at [Ferranti Computer Systems](http://www.ferranti.be/). Three years ago, days after r...
Should we get this tool?
This is a decision that often needs to be made by middle management. For managers the most natural way to make this call...
My thoughts on WebMatrix
After building [arealdeveloper.com](https://jefclaes.be/2011/04/arealdevelopercom.html), I felt like I had to do a follo...
Why I still buy real books
As a technology geek, it should be hard to keep ignoring the latest generation of eReaders (read: [the Kindle](http://ww...
Why code reviews should be a team thing
Often code reviews are done by one person, the technical lead of your team. In my opinion it's better to make each ...
Stored Procedures: Make them or break them
I've been thinking about the use of stored procedures lately. Some questions that popped up in my head: What are th...