Hi, I'm Andrew.

I build AI agents that remember and learn. Principal AI Engineer at Redis, author, and open source maintainer.

Reading List for an Apprentice Web Developer

Reading List for an Apprentice Web Developer

Here are a few books that I found useful when I was starting out as a web dev...

Wrap Comments and Text to Column Width in IntelliJ Editors

Wrap Comments and Text to Column Width in IntelliJ Editors

One of the small annoyances I found after switching to PyCharm recently was t...

Build an In-Memory Proximity Search Web Service with Python, SciPy and Heroku

Build an In-Memory Proximity Search Web Service with Python, SciPy and Heroku

In this post I’m going to look at a concrete example of building an in-memory...

Revisiting Umberto Eco's Future of the Book

Revisiting Umberto Eco's Future of the Book

In 2003 Umberto Eco gave a talk at the opening of the Bibliotheca Alexandrina...

Using IPython Notebook with Django

Using IPython Notebook with Django

IPython has a relatively new featured called the “Notebook,” which improves o...

Set an ImageField path in Django manually

Set an ImageField path in Django manually

Apparently this is a confusing topic. Let’s say you have a Django model with ...

Go: How to Get the Directory of the Current File

Go: How to Get the Directory of the Current File

In Python I often use the __file__ constant to get the directory of the curre...

Run Django Unit Tests in a Sublime Text 2 Build System

Run Django Unit Tests in a Sublime Text 2 Build System

With the dev builds of Sublime Text 2, you can easily set up a build system t...

Python: How to tell what class a decorated method is in at runtime

Python: How to tell what class a decorated method is in at runtime

When profiling a Python app, it’s helpful to have a decorator that wraps func...