Staff Software Engineer. Passionate about DDD, CQRS, Event Sourcing and Distributed Systems.
Kayaking, too.
Planning on testing it to make a more dramatic scene transition.
Planning on testing it to make a more dramatic scene transition.
Unlike the last example, which was using gaussian blur. It was only able to blur across x or y axis.
Unlike the last example, which was using gaussian blur. It was only able to blur across x or y axis.
Still playing around with the strength of the blur.
Still playing around with the strength of the blur.
I don't show it here, but I'm also setting `angle` when the movement is along the y axis.
I don't show it here, but I'm also setting `angle` when the movement is along the y axis.
I rarely switch from Opus.
I rarely switch from Opus.
Accuracy of spoken English has been good, and it's fast.
I do like Wispr Flow, I'll keep using that for work, but it's a solid free alternative
spokenly.app
Accuracy of spoken English has been good, and it's fast.
I do like Wispr Flow, I'll keep using that for work, but it's a solid free alternative
spokenly.app
Video just wasn't working. I've had to rewrite most of the first half of the script. Which means all the voiceover and animations are likely going in the bin.
But I figured it out.
Forwards!
Video just wasn't working. I've had to rewrite most of the first half of the script. Which means all the voiceover and animations are likely going in the bin.
But I figured it out.
Forwards!
It's random, too. Looks different every time.
It's random, too. Looks different every time.
I had annual leave I needed to use, or loose. So, decided to take a break from everything and focus solely on this for a full week. No other commitments.
Having so much fun!
I had annual leave I needed to use, or loose. So, decided to take a break from everything and focus solely on this for a full week. No other commitments.
Having so much fun!
Maybe. Depends how you're using it.
Kafka can be an event store, but I know several teams using it just for streaming, not sourcing.
Looks similar, but it's not the same thing!
#EventSourcing #Kafka
Maybe. Depends how you're using it.
Kafka can be an event store, but I know several teams using it just for streaming, not sourcing.
Looks similar, but it's not the same thing!
#EventSourcing #Kafka
This WILL happen. Plan for it!
Common strategy:
1. Build new projection (ProjectionV2)
2. Fill it from events
3. Switch traffic once caught up
4. Delete old projection
Projections are disposable.
They’re just views of events.
This WILL happen. Plan for it!
Common strategy:
1. Build new projection (ProjectionV2)
2. Fill it from events
3. Switch traffic once caught up
4. Delete old projection
Projections are disposable.
They’re just views of events.
Events IN: OrderPlaced, PaymentReceived
Events OUT: ReservationRequested, ShipmentScheduled
Orchestration with full history and testable like any aggregate
It's events all the way down
Events IN: OrderPlaced, PaymentReceived
Events OUT: ReservationRequested, ShipmentScheduled
Orchestration with full history and testable like any aggregate
It's events all the way down
Year 2: Needs "shippingMethod"
But, old events?
1. Upcasting: transform old events on read
2. Weak schema: new fields optional
3. Multiple event types: OrderPlacedV2
Each works:
- Weak schema = simple
- Upcasting = control
Year 2: Needs "shippingMethod"
But, old events?
1. Upcasting: transform old events on read
2. Weak schema: new fields optional
3. Multiple event types: OrderPlacedV2
Each works:
- Weak schema = simple
- Upcasting = control
Update projection → SUCCESS
Save checkpoint → CRASH
Checkpoint is now behind the data.
Restart = reprocessing.
Fix: Store checkpoint with projection data, update both in one transaction.
Either both succeed or both fail.
No inconsistency.
Update projection → SUCCESS
Save checkpoint → CRASH
Checkpoint is now behind the data.
Restart = reprocessing.
Fix: Store checkpoint with projection data, update both in one transaction.
Either both succeed or both fail.
No inconsistency.
Your projection processes event 458,295 and crashes before saving checkpoint.
On restart it processes 458,295 again.
If that duplicates data, you have a problem.
Already processed? Skip it or make replaying give same result.
Design for safe replays
Your projection processes event 458,295 and crashes before saving checkpoint.
On restart it processes 458,295 again.
If that duplicates data, you have a problem.
Already processed? Skip it or make replaying give same result.
Design for safe replays
When it restarts, where does it begin?
Checkpoints solve this: periodically save "processed up to event 458,295"
Restart resumes from the checkpoint.
No checkpoint? You replay from the beginning.
Trade-off: checkpoint frequency vs replay cost.
When it restarts, where does it begin?
Checkpoints solve this: periodically save "processed up to event 458,295"
Restart resumes from the checkpoint.
No checkpoint? You replay from the beginning.
Trade-off: checkpoint frequency vs replay cost.