Welcome to the new week!
Inspired by Brian Goetz's talk at Devoxx Greece, I decided to take the latest improvements to pattern matching with records and check how they can improve business logic modelling. And it plays really well. Using it cautiously without being too smart can make your code declarative and self-explanatory. Which is the key goal of business logic code!
As always, for such cases, I used my typical way of learning new technical concepts: an event-sourced Shopping Cart. I also explained why I use it so often and why you should also have your own Kata. Do you have such already?
It's really nice how the language was evolving. If your last touch with it was Java 8 or close, check and see the advancements. I was personally surprised by that when I got back to doing more Java 3 years ago.
Read more:
Check also Brian’s talk:
It’s intriguing how the languages are stealing from each other, all moving towards more expressive and type-safe system. I like this trend, as it helps to build applications that are safer by not letting you fall into unwanted states.
Also on Devoxx Greece Jacqui Read had an intriguing talk explaining one of the most pressing issues I see in my client work: how to manage the knowledge. I’m sure that you’re not once, not twice were hit by tribal knowledge or silos. In the remote world that’s getting even trickier. Yet, it doesn’t need to be that bad if we’re collaborating and finding the tools that work in our context. Check Jaqui talk to get some ideas on how to make that better:
One of the reasons of the challenges in the knowledge exchange are our biases. Subconciously, by going in auto-pilot mode we can have wrong assumptions about other people’s behaviour, or interpret that in the wrong way. We may also have not enough knowledge to make educated decisions.
Same goes with AI systems, they’re as biased as the people that provided their input data. If you want to understand that in details, but in a short, concise way, then Michelle Frost’s talk should be a good starting point for you:
A great resource also how to analyse the world in the systemic way is a whitepaper by John D. Sterman explaining why all models are wrong. Not only Large Language Models, but all thinking models.
If you’re still investigating the potential use cases in your work for Generative AI tool, see also a recent article by Martin Fowlere for an interesting case study:
Jumping from one hyped bubble to another one: multi cloud. One of my favourite people in the Cloud specialist is Corey Quinn, if you didn’t subscribe to his newsletter Last week in AWS, you should fix that. It’s not only about AWS specifics, but also in general. He’s also not shy to put a snarky sense of humour towards AWS, which I always respect (especially if it’s backed by the evidence).
He wrote recently his contrarian take on the multi-cloud. It’s worth reading if your organisation is falling into this trap:
He finished it with:
Before you go whole hog into a second cloud provider, first spin up an active-active environment across two regions in your current provider. With complete service and API compatibility between those regions, it should, by your theory, be a piece of cake.
Come back and talk to me after you’ve done that, and we’ll see how “simple and straightforward” this really is.
Multi-cloud is the wrong answer. It’s going to take more than an imaginary company’s “success story” to convince me otherwise.
Will you accept the challenge?
Migrations between clouds are not easy, but they’re never easy. They’re just hard or harder. Especially if we’re approaching them to lightheartedly, or try to do a big bang. Sometimes we believe that doing all at once will buy us some time in the bigger picture. It won’t. Vercel explained (by the voice of Malte Ubl, their CTO) why you should do incremental migrations:
Check also my take on compatibility, and why we should take care of ourselves.
If you’re into technical leadership, so currently leading, want to lead, or was leading in past and wanting to do some retrospective, here are nice materials from the good people:
Read also a great article by Brad Frost on his recipes how to design your design system, but also user experience:
Brad Frost book, Atomic Design, had a big impact on how I look on the UI and UX. Even after years of the releasing I see it as one of the most intriguing ways to explain working on our user interface and interactions.
Ah, and React 19 is finally available. Well almost, it’s 19 Beta, but close enough. See what’s new in:
If you’re planning to go to DDD Europe and didn’t sign yet for my Production Grade Event Sourcing workshop, reconsider that, we’ll have fun with the Event-Driven World. See more here:
DDD Europe - 27th-29th of May - Production-Grade Event Sourcing: Modelling, DevOps, Process.
I aim to provide you with collaborative workshops where you can gain certainty if what you designed for prod will work and you won't have nasty surprises.
I want to pass you a condensed dose of experience I gathered throughout my career. It’s also a rare chance, as I’m not giving public workshops often.
Also, I decided to give each attendee a half-year subscription to Architecture Weekly. If you join, you'll get access to over 20 hours of recordings, which should be a decent follow-up. See the full list of them.
Check also other links!
Cheers
Oskar
p.s. I invite you to join the paid version of Architecture Weekly. It already contains the exclusive Discord channel for subscribers (and my GitHub sponsors), monthly webinars, etc. It is a vibrant space for knowledge sharing. Don’t wait to be a part of it!
p.s.2. Ukraine is still under brutal Russian invasion. A lot of Ukrainian people are hurt, without shelter and need help. You can help in various ways, for instance, directly helping refugees, spreading awareness, and putting pressure on your local government or companies. You can also support Ukraine by donating, e.g. to the Ukraine humanitarian organisation, Ambulances for Ukraine or Red Cross.
Architecture
Vercel - Why all application migrations should be incremental
Anton Zaides - How refactoring almost ruined my marriage. And why it should be your LAST choice
📺 Jacqui Read - Knowledge Management for the Technically Inclined
John D. Sterman - All models are wrong: reflections on becoming a systems scientist
DevOps
Testing
UX
Frontend
AI
AWS
Azure
Google Cloud
Java
.NET
TurboMqtt - The fastest Message Queue Telemetry Transport (MQTT) client for .NET.
Daniel Marbach - Beyond simple benchmarks—A practical guide to optimizing code with BenchmarkDotNet
EFCoreSecondLevelCacheInterceptor - EF Core Second Level Cache Interceptor