Giovanni Chiodi

@giovan2i.bsky.social

Env. scientist, developer, and intl. civil servant, obsessed with software design in TypeScript (blog: https://domain-centric.dev/), also very interested in political aspects of technology, somewhat an anti-techno-fa

Nothing beats the ChatGPT we all have inside. Been long hours writing and as soon as I focused I stopped using the 'machine'. And since I did I found my own voice and ideas and words just flow, in a way nobody could have put it better. Seriously, the same with writing code: we're the originals.

I'm writing an internal document inspired by a lot of things #DDD and EDA when it came to explaining Aggregates it all lost clarity and linearity... you don't say... so I coined the new term Cohesive Unit of State (CUS) that has a lifecycle, invariants, and ensure transactional consistency CUS™️

Could not recommend more "Architecture Modernization" by @nick-tune.me, it is such an exhaustive guidance, I keep going back to it at each step of the project. If you're involved in a DDD modular architecture project: close ChatGPT, open that book instead. www.manning.com/books/archit...

Architecture Modernization

Proven techniques and principles for modernizing legacy systems into new architectures that deliver serious competitive advantage.</b> For a business to thrive, it needs a modern software architectur...

manning.com

I read on the plane Specifications by Example and had the chance to immediately put in to practice some principle at a meeting with clients. My new golden rule is "derive scope from business goals", works like a charm. Requirements just DISAPPEAR simply by asking "and why do we need that?"

Do LLMs help with Legacy Code? This is an interesting problem for the pattern recognition machines. They work like your mobile keyboard, but on steroids. They continuously suggest the next most likely word, based on what happened before. Recognised patterns will be repeated.  (pictured by OpenAi)

Bild

"The basic idea was that we could never win an election because we were in such a small minority, but maybe we could unilaterally change the world without having to constantly convince people and beg people and plead with people, who were never going to agree with you, through technological means."

and for the (functional) #typescript #DDD -ers, a tip: when modelling types we're faced with a choice: use typescript and lose the types at runtime, or use schemas like in zod and keep them at runtime but polluting the code with a dependency and making it harder to read and write OR, another choice

another question for the #DDD -ers: does it ever happen in your projects that the domain layer gets bypassed by later developers (with transaction scripts) because they have no idea what's inside and how it works and why? How to reduce the chance of this happening?

I find it very fascinating and scary how software is becoming so urgently political. For some time "agility" thought society to deal with complexity and emergence, a lesson never fully learned. But now tech promises tools for predictively governing complex systems, and we've gone full circle.

The joy of Jupyter notebooks and @deno.land. I knew for a while that a Jupyter kernel was built into Deno, but never had reason to use it, but doing some experimentation with LLMs and RAGs seemed like the right opportunity and what a joy.

A jupyter notebook running the Deno kernel and working through the process of creating a large language model retrieval augmented generation system.

Do "requirements" really exist in software development? I tend to think there are only "problems to solve". It's very problematic when developers think of their "tasks" as instructions to implement. First, AI could do that. Second, it implies some genius has already figured out what needs to be done