Event Sourcery, the video course that I built as an introduction to domain modeling, cqrs, and event sourcing, is now publicly available on YouTube.
https://t.co/ixoVyVfMAx
I wrote and recorded the series over the course of a year and I hope that people will find it helpful.
Was just DM'ed with an Event Sourcing question.
Always happy to help and, as much as I'd love to plug my own stuffs, I mostly redirect folks to Event Sourcery from @ShawnMcCool
https://t.co/pzVNThLw6H
You can rebuild state from events.
But you can't rebuild events from state.
Think about football. If you see 2-1 on a scoreboard, you know the current score, but not how it got there.
That's the problem Event Sourcing solves:
https://t.co/uiX6hOBBr8
You've heard me advocating for Erlang/Elixir for some years now. I've put together a short presentation about some of the practical reasons why I chose to pursue this tech.
Practical Arguments for Erlang / Elixir
Especially in an era of agentic coding.. it no longer makes any sense to me to continue using languages like PHP which offer zero novel value.
I don't stand to gain anything from saying this, but now is the time to start with Elixir. Have faith and rip off that band-aid.
We just shipped Distributed Python on top of the Erlang distribution, with full Elixir and Livebook integration: https://t.co/wrJYcIo83R
And much more: intellisense, zero-copy Apache Arrow, and more. Read the article for all the details.
A huge thank you to NLnet Foundation for sponsoring our work. They are always looking for new ideas and you have until April 1st to join the next batch: https://t.co/D7EI3MPrOJ
@rr_cook @unnamed1tw Its mid-90's intentions aside, even with modern advancements it handles concurrency poorly; to the point of almost completely ignoring it. It makes concurrency another layer's problem.
It performs one action and dies. PHP is particularly poorly suited for server software.
Saying "isolated processes for fault tolerance are not relevant because they were pushed to orchestration layer" is like saying "we don't need threads, because we will just run one pod per core anyway".
The difference in reacting and responding to "my connection pool crashed" by restarting the pool locally vs restarting the whole pod is going to be massive, similar to the differences in latency when coordinating across threads vs across pods.
Yes, other programming languages have threads, and they raise a signal when they fail, but that's missing the point. What matters it not the signal but the guarantees. If you have global mutable state and a thread crashes, can you guarantee it did not corrupt the global state? If you can't, the safest option is to restart the whole node anyway, because it is best to have a dead node than running a corrupted one.
PS: somewhat related 6-years-old post: https://t.co/TaRHZ515Iy
@petyastehlik ...designing software components, systems, and more.
I believe that it has a reasonable chance of transforming your views on software and systems design.
At the very least, I challenge you to put a couple of months into it and THEN evaluate. I believe you'll be happy you did.
@petyastehlik I would encourage you to change your mental model about the usefulness. I have been experimenting for some time with agents and I think it's going to work out differently than you may expect.
Further, I believe that learning Elixir will feed back into how you think about...
@igorhansachat These tools also have weaknesses that are already overcome with the BEAM (the runtime that Elixir uses).
It's not about WHAT php can do. Engineers have shown great capability in using inadequate tooling to solve anything.
It's about how it could be done better.