All Posts
-
Optimizing PyTorch Docker images: how to cut size by 60%
When training neural networks on a cluster, using Docker containers is one of the easiest ways to package up all the dependencies. However, PyTorch and CUDA are both large libraries, which can make...
read article -
Eigenvalues as the magnitude of the matrix
Eigenvalues are a notoriously hard topic to understand. Their definition can be unintuitive, making it difficult to understand their usefulness. Recently, I've started explaining eigenvalues as the...
read article -
Fast numerically stable moving average
Calculating the moving average of a time series is a pretty simple problem. Just loop over each position, and add up the elements over the window: void simple_ma(double* in, double* out, int N, int W)...
read article -
Writing a device driver for Unix V6
In this post we will learn the useful skill of writing a device driver for Unix V6 (released in 1975) and run it on an emulator. The implemented device is fairly trivial: it will open a message box on...
read article -
Linux Server on an Android Phone
A little while ago I wanted to set up a small home server to host some pages. I could have just used some free web hosting but where is the fun in that? So I checked what old devices I have I could...
read article -
Inside Windows Registry
The Windows Registry is a central storage for settings in Windows, and also a popular target of hacks to enable/disable obscure features. But how does it work? Where does it store all the data? What...
read article