Close

Ray Tracing

Ray Tracing A Ray Tracing Adventure I’ve been entertaining the idea of writing a ray tracer for a while now and last weekend I stumbled across the excellent book “Ray Tracing in One Weekend” by Peter Shirley. I really enjoyed the read and had even more fun following along and implementing it. I dismissed Peter’s…

Python Inter-process Communication

Inter-process communication Interprocess communication in Python with shared memory The python ecosystem has rich support for interprocess communication (IPC). The multiprocessing API allows multiple python processes to coordinate by passing pickled objects back and forth. Python has full support for signal handling, socket IO, and the select API (to name just a few). In this…

Overcoming python's recursion limit.

In most programming languages, you can segfault your program by going too deep in a recursive function. In CPython (the reference implementation that you are probably using), recursion is limited to a fixed number of consecutive recursive calls. The default maximum recursion can be checked by calling sys.getrecursionlimit(). On my machine, this returns 1000 for…

Automatic Memoization in Python

Memoization (a key concept in dynamic programming) is a fancy word that basically means storing the results of computation and never recomputing. Instead, you simply look up the already computed value. Any pure function can be memoized. Memoization can have a dramatic affect on the runtime of algorithms which use the results of computation multiple…