These are chat archives for jdubray/sam

28th
Sep 2017
Jean-Jacques Dubray
@jdubray
Sep 28 2017 01:55
I respect the love of Dr. Lamport for Mathematics, and certainly knowing more of it is not a bad things, but for someone who went through the rigorous curriculum of the French "Classes Preparatoires", I am still not fully sure how Mathematics would have made me a better programmer. Even today, I am not sure how TLA+ would allow me to be a better programmer without reverse engineer its programming model. I understand Dr. Lamport, but I am not sure it would be practical to use TLA+ behind every line of code we write.
@foxdonut how was your talk?
Jean-Jacques Dubray
@jdubray
Sep 28 2017 08:08

What I find fascinating is that people still think they can beat "State"
https://josjong.com/2017/09/27/why-the-future-of-event-sourcing-lies-in-the-database-itself/

[Event Sourcing] can, however, be very tricky to get it right; any time spent on this is not spent on building real business logic, and above all, I’m wondering why we are building this ourselves on a project-to-project basis

Victor Noël
@victornoel
Sep 28 2017 08:12
@jdubray what do you mean? how do you link state to event sourcing and how event sourcing is not a good approach to manage data storage ?
Jean-Jacques Dubray
@jdubray
Sep 28 2017 08:20
thinking that a system is stable enough (action, mutation) for event sourcing to work is at best "naive", I'd reckon it's equivalent to thinking time travel is possible (not the React one).
Victor Noël
@victornoel
Sep 28 2017 09:24
why? sorry but it's not that I don't believe you, just that I don't understand the thinking to arrive to this conclusion
Jean-Jacques Dubray
@jdubray
Sep 28 2017 09:30
You cannot replay events when the business logic changes. ES or Redux Time Travel assumes that you can apply events over long periods of time.
Si (State at ith step) will be different if action (proposal) or mutation (acceptor) logic changes, why would applying event (i+1) make any sense?
Victor Noël
@victornoel
Sep 28 2017 09:31
ok, I understand better now :) thanks!
Jean-Jacques Dubray
@jdubray
Sep 28 2017 09:33
It only works in the most trivial cases.
Am I missing something? (It's always ok to keep me honest)
Victor Noël
@victornoel
Sep 28 2017 09:44
I understood there were many success stories with event sourcing, but I personally never experienced it in a real project, so I don't know :) what you say makes sense at least ;)
One thing is that I don't think that events in event sourcing are the same things as events in SAM or actions in redux
and also I know there are strategy to handle changes in the meaning of events and stuffs like that
but I'm not sure how it applies in real world
Jean-Jacques Dubray
@jdubray
Sep 28 2017 09:47
As long as the assumption that events can replayed is true, it will work, otherwise it is logically impossible.
Someone tried it in one of the integration projects I was involved in and it didn't work.
IMHO, it is always best to think in terms of first principles. People listen to fads at their own risk.
Nivani
@Nivani
Sep 28 2017 11:42
Is this the reason why in SAM you propose values to the model instead of dispatching objects representing actions (like Redux does)?
Fred Daoud
@foxdonut
Sep 28 2017 12:35
Friends, since my Meiosis presentation at Web Unleashed 2017 was not recorded, I re-recorded it at home. Here it is: youtu.be/KJSM2uFDzDY
devin ivy
@devinivy
Sep 28 2017 12:39
yay! i will share it around at work :)
Rob Siera
@robsiera
Sep 28 2017 12:46
:+1:
Jean-Jacques Dubray
@jdubray
Sep 28 2017 13:26
:+1:
@Nivani SAM is only aligned with TLA+ (best effort basis). But it can give you some clarity as to when ES will break
Rob Siera
@robsiera
Sep 28 2017 16:17
@jdubray I have two questions concerning SAFE.
  1. in the state.js of SAFE The state.render() function is never used. Why is that?
  2. What is the purpose of the state.ready() function? It here just returns true.
Jean-Jacques Dubray
@jdubray
Sep 28 2017 19:55

@robsiera
1/ render is called by the model
2/ The wiring of control states is a bit old, actually it's hardwired! (ready is a control state that would potentially control the rendering). The idea was:

if (state.xxxx(model)) {
        representation = state.view.xxxx(model, state.intents) ;
    }

where xxxx is a control state, but that needs to be externalized. These days, I tend to organize the view as a "theme" with a single entry point.