Roger Barnfather

@rogerbarnfather.bsky.social

Software engineer. Agile enthusiast. Welsh British. European. Earthling. Guitar. Travelling. Espresso. Art.

We all find it hard to make good software analogies when explaining to a non-software minded person. Some analogies are good for a while but then they reach their limit. Software is hard to explain. It’s its own thing.

Do any “senior software engineers” or “software architects” know how to engineer or architect software? They’re high up in the company, but all their code from years ago is causing the tech debt problems. Years spent in a company doesn’t make you good. It makes you “senior”. There’s a difference.

I used to think software could be written in a definitive, “perfect” way. Just use the right patterns. But I realised it’s all about modelling things in a human way. And hide the complexity. This means trade-offs everywhere and you have to make the best of what you’ve got. Unsatisfying but true.

I failed a job interview technical test relating to Domain Driven Design because I used too much abstraction while covering money currency types. To be fair, I over complicated it. Lesson learned: keep all that stuff simple, one big-decimal value object, and in one domain service.

Better Controllers: - Controller <- Inject UseCase + Presenter - Controller handles/scrapes/validates request - Creates a Command DTO - Invokes UseCase with DTO - Presenter <- Inject Repositories + View renderer - Controller invokes Presenter - Controller sends output to client

When you have a bad programming idea, ChatGPT is great! It will guide you step by step on how to turn your bad idea into an incredibly complex bad idea that does the same thing but perfectly conforms to the SOLID principles. 😄

Laws and constitutions are just words on paper. Their virtues rely on the willingness of enforcers (police, armed forces and judges) to uphold the words, along with the good nature present in all people. Weakened personal values or corrupted enforcers unlock the door, allowing tyranny to walk in.

Has anyone used the Presenter and ViewModel pattern from a UseCase? If the output can vary (e.g.- web page with user details, special offers, adverts etc. VS command line which just wants “Success!” or “Error”) then how does the UseCase know what to give the Presenter?

I used to frequently discover fun websites that I enjoyed and would bookmark. I felt happy, enriched and inspired. That doesn’t really happen any more. What we need to invent is some sort of “world-wide web” where sites link to other related sites. Surprised it hasn’t already been done 🤷‍♂️🌍😉

People in the 20th century would do things when they got pissed off. People in the 21st century just post messages to everyone else, who, in turn post very similar messages to everyone else. Nobody actually does a thing because they believe posting and reading is somehow changing things.

Just deactivated my Twitter account. It feels kind of liberating. I didn’t really need anything on there anyway. I slightly felt like I was attached because of old interactions. But hey, all gone now. So long mother-Musker!

BoundedContext > contains Controller > creates DataObject > puts on CommandBus > delivers to UseCase > uses Repository > retrieves Aggregate > passes to DomainService > uses AggregateRoot > uses ValueObject > eventually Infrastructure > triggers EventDispatch DDD flow in a nutshell.

My new political party: Fountains, statues and monorails. Free for all. I call it Rogeria. Rights for all people and animals. Free camping rights all around the UK. Resistance to dark outside powers and dark inside powers. A constitution to prevent government intervention on peoples’ lives.