July 20, 2021
8 min read
Read more →
July 19, 2021
11 min read
Read more →
July 17, 2021
9 min read
Read more →
Feb. 23, 2021
11 min read
How fast can you Go?
Today I will explore how profiling tools can help us make a Go program run faster.
If you expected an inspirational think piece on personal development, well, perhaps another day :-)
Like many Pythonistas, I have been frustrated by Python’s relatively slow runtime. The promise of fast execution is a key reason for learning Go. The other key reason would be goroutines, but we won’t encounter them today.
So I set …
Read more →
July 19, 2020
14 min read
Sans I/O when rubber meets the road
If you never heard of Sans I/O…
Sans I/O is a software design pattern for implementing network protocols.
An I/O-free library contains:
- no network I/O;
- no asynchronous control flow.
An I/O integration layer complements the library, connecting it to a network I/O framework, which usually involves asynchronous control flow.
While this may seem counter-intuitive, following this discipline is expected to yield significant benefits.
…
Read more →
Oct. 14, 2019
10 min read
Managing multiple geographies and time zones in Django - part 2
Last month, I demonstrated how to handle geographies in a Django app, so that:
- users can only interact with objects attached to their geography;
- users see datetimes in the local time zone of their geography.
This is an example of multi-tenancy: each geography is a tenant.
Then I had an uncommon requirement: let a user account interact with several geographies. It’s …
Read more →
Sept. 12, 2019
7 min read
Managing multiple geographies and time zones in Django
“Oh, I’ll just write a small Django app…”
For the last couple years, I’ve been building and maintaining a Django application to manage mobile push notification campaigns for myCANAL.
Through the Django admin, campaign managers define their messages and schedule campaigns targeted at user segments. A handful of cron jobs take care of importing segments from our data lake and sending campaigns via mobile push notification APIs.
…
Read more →