In A Practical Tracing Journey, I described how I added tracing to a real-world app to get insights on how I could improve performance. One of the co...
How do you know that an algorithm is O(n) (or O(log n) or O(1), etc)? The first (and correct) answer is by analysis: if your algorithm loops over a s...
Okay, back again. Thus far, we've seen the limitations of a single-threaded architecture in achieving concurrency (Part 1). Then we saw how coroutine...
New to this series? Check out Parts 1 and 2 first. Last time, I wrote about how coroutines help enable concurrency, and how they work in JavaScript....
Part 1 of this series is here. Coroutines are interruptible functions. They're functions that pause at specific points and allow the runtime to resum...
Over the past few weeks, I've found myself encountering concurrency problems and discussions in a variety of places. I understand the basic principle...