Recent Articles

CC0 Spring 2021 Update

For the upcoming spring semester, we have released another, smaller, update for CC0. — Read more

Announcing C0 2.0

In this post, I’ll walk through the key additions and enhancements made to the CC0 compiler, as well as sharing some of the discussions we had along the way. — Read more

Using recursion schemes

The Haskell compiler GHC has implemented over 115 language extensions. A lot of these let you do some really interesting things, such as statically checking array indices via dependant types, or even write programs completely within the type system. Unfortunately a lot of these are not “practical” in the sense that the effort involved in using these features outweighs the benefits. But I recently read about a way to put some of that machinery to good use called “recursion schemes”. These help us write code which is more obviously correct, and more concise. — Read more

Haskell Monads by Example

There are a lot of great introductions to monads, but since monads are notorious for being a difficult topic to understand, the world could probably benefit from another one. This blog post will focus on making the idea of monads more concrete through examples of some of the more ubiquitous monads. — Read more

Dealing with Python values in C

In the previous post we saw how to set up the boilerplate code necessary for a C Python extension. We will use that code and see how to handle and throw errors, deal with Python objects, and convert from C to Python types. — Read more

Short Guide to Writing C Extensions for Python

Sometimes portions of a Python codebase could benefit from being written in C. For example, the code may need to interact with other C libraries, or we may simply need the performance boost. Although the Python documentation for writing extensions is very thorough, there are some common operations which are not as obvious as they may seem. In this blog series we will look at the boilerplate code we need to write extensions for Python 3, as well as how to actually interact with various Python objects. — Read more

Using Tkinter and Matplotlib

Recently I was working on a project in which I needed to quickly visualize groups of 2D data points. As the project was in Python, I thought the well-established libraries Tkinter and matplotlib would be useful for this task. Unfortunately, I had to hunt through many sources to figure out how to use these two libraries together, so I am writing this blog post to help others who may have similar needs. — Read more

New year, new blog

I’ve decided to start writing a blog in 2019. — Read more