5 min read
WebSocket as a signal: driver jobs without polling
The driver app polled for jobs every 30 seconds. Now a WebSocket only signals a change, data comes from the API, and polling stays as a fallback.
Blog
Architecture decisions, code and lessons from building production SaaS systems. We write about what we actually ship.
5 min read
The driver app polled for jobs every 30 seconds. Now a WebSocket only signals a change, data comes from the API, and polling stays as a fallback.
6 min read
Get the country from a GPS point without an API call: 239 Natural Earth borders in memory, a Shapely STRtree and per-diem hours abroad.
5 min read
date.today() reads the OS timezone, not Django's TIME_ZONE. I replaced 104 calls with timezone.localdate() and added a test that keeps them from coming back.
5 min read
BusiKM per-IP rate limits took the client IP from the first X-Forwarded-For entry, which the client sets. How to count it from the trusted proxy in Django.
8 min read
An expired BusiKM subscription cuts off writes, not access to data. How read-only mode works in Django and what the exception list costs.