Will is a platform engineer at Pusher. He enjoys tackling problems associated with large scale high-throughput systems. He is a geek for new trends and technologies, but remains a pragmatist when it comes to production systems! Outside of work Will enjoys mountain biking, music, travel, and, as a new London resident, exploring what this awesome city has to offer.
How the Golang concurrent GC achieves low latencies in real-time systems: a visualization of the algorithm and an empiri...
Here at Pusher we’re always trying new approaches to web development and engineering to uncover ways of making our softw...
The generally side-effect free nature of Haskell code makes it convenient to test. Haskell programs can interact with th...
A summary of various techniques to make efficient use of memory in Haskell....
At Pusher we are currently writing a high performance system in Haskell and blogging about it along the way. In our firs...
Lessons learned by the Pusher engineering team while unifying our systems using React, Express and Go to give customers ...
(This blog post discusses CPU time profiling, but not space (memory) profiling. We’ll come back to that in a Part 2.) We...
Building connection counting in a scaleable way is tricky. Find out how we fixed a meandering solution by leveraging our...
One of the things that makes working at Pusher great is our appetite for building. We’ve created various internal tools,...
A whirlwind of impressive hacks, great food, friendly people, a frighteningly tall CN tower, and beer at the BattleHack ...
Designing a good API for a library is a challenging problem. In Haskell getting the mix right between specialised and ge...
Those of you who use Pusher will know that the APIs we expose are small and straightforward to use. But this hides the c...