Finally found time to return to my project. I slightly refined the UI and added a Command Palette to quickly access frequently used contextual actions. By default, if no object is selected, it includes search and some basic actions and settings.
Finally found time to return to my project. I slightly refined the UI and added a Command Palette to quickly access frequently used contextual actions. By default, if no object is selected, it includes search and some basic actions and settings.
I think I know why I love working with maps. It's the feeling that you're observing everything from above and can move to any point in just a few seconds.
It turns out that creating a convenient real-time cache invalidation mechanism for clients is far from a trivial task. It all started with react-query and cache invalidation after mutations + periodic updates at intervals.
It ended with a custom aggressive cache and a react hook for smart batching on the client side, a change queue, and web sockets in combination with LISTEN/NOTIFY at the database level. By the time I got to this, I had the chance to try logical replication and wal2json.
It almost works well, but I'm left with more questions than confidence that I understand how it works. I've gone back to classic triggers and a change log table.
WIP: just dropped new command menu
WIP: markers and cards refactored
Prototyping route optimization 🚴♂️
Which side are you on?
WIP
NewProfilePic
TIL: Hologram and Freematics
Got access to the public beta of Mapbox Optimization API. Excited to compare it with OR-Tools, VROOM, and jsprit 🐇
New object explorer
Implementing real-time UIs in not about WebSockets and protocols, it's mostly about state management and cache invalidation. Moreover, WebSockets and pg LISTEN/NOTIFY introduce a new level of complexity and problems. Proper events and polling make the problem almost trivial.
Just dropped a new task filter. The courier_id
field on the task table was a bad idea so introduced a new entity called run
to model task sequences.
The first preview of a new last-mile delivery platform. There's still so much to do 🚀