email contact

NOTE: You should not use the above for legitimate contacts. This is a spam honeypot. All messages sent to that domain are assumed malicious/spam.

Let's Write a Simple Intel 8080 Disassembler

Typically my weekends are spent hiking with my camera, but this past weekend I was knocked down by a pretty nasty cold. As a result, I found myself toying around with various programming projects I’ve had laying around. Here for a while, I’ve been curious how emulators work, so I took this opportunity to start venturing down that rabbit hole. During this excursion, I decided to start my foray into emulators by writing one for the game Space Invaders, which ran on an Intel 8080 microprocessor....

December 3, 2018 · 7 min · Adam Thompson

Dumping Map Tiles from MBTiles with Python

MBTiles is a database format, developed by Mapbox, for storing tiled data. It’s a relatively simple database format that allows for a convenient, portable way to store map tile data. Here recently, I’ve been developing code that works with tiled map data, including data contained within an MBTiles database. As part of this, I’ve needed an easy way to dump the map tiles from an MBTiles database to my local disk....

February 12, 2018 · 6 min · Adam Thompson

CS Review - Binary Numbers

Welcome to what will be the first in an ongoing series aimed at reviewing computer science topics. Today we will be diving into binary number representation. Understanding binary is an important step in gaining a better understanding of how the computer works on a lower level. Recall that a computer is made up a whole bunch of integrated circuits, which are in turn made up of a bunch of transistors. These transitors can have one of two states: on or off....

September 19, 2017 · 6 min · Adam Thompson
Capturing video from a webcam with OpenCV.

Python - How to Capture Video from a Webcam with OpenCV

Have you ever written code to interface with a webcam? Well, if you have then you know that it can be a royal pain in the ass. And God forbid you want it to be a cross-platform solution! The good news is that there is a ready-made solution that can help us out: OpenCV. Yes, you heard me right. Not only is OpenCV and amazing computer vision library, but it also provides a handy, cross-platform way of interfacing with webcams....

August 7, 2017 · 2 min · Adam Thompson

Quickly Generating Primes Below n with the Sieve of Eratosthenes

The uses for prime numbers in computer science are nearly endless. They are useful for everything from hashing, cryptology, factorization, and all sorts of applications in-between. There exists a great number of algorithms that allow us to quickly generate primes, but today we are going to take a look at a popular method known as a prime sieve. There are a number of different implementations of prime sieves, but one of the simplest to implement is known as the Sieve of Eratosthenes....

May 17, 2017 · 3 min · Adam Thompson

How to Route URLLib2 Through TOR (Python)

I’ve recently been experimenting on a new project to scrape data from webpages located on the Tor network. For simplicity’s sake, I decided to write this bit of code in Python and use the handy urllib2 library to handle the HTTP requests. For those that don’t know, Tor runs a SOCKS5 proxy, which, by default, runs on I thought things would be as simple as telling urllib2 to use a proxy located at IP 127....

January 6, 2016 · 3 min · Adam Thompson