About     Projects     GitHub     Else

Visualizing Developer Income by State with D3

The average salary for developers varies widely across the United States from $129K/year in DC to $63K/year in Hawaii according to salary data from Indeed. Using D3 to create a choropleth map, we can quickly see which states have the most lucrartive tech opportunites.

Continue reading



Examining Prediction Market Anomalies

Market inefficiencies can be difficult to identify and are usually competed away quickly but, prediction market trading restrictions can cause anomalies to occur frequently.

Continue reading



Processing Big Data with Elastic MapReduce

A few years ago, setting up a Hadoop cluster was a painstaking challenge, especially with ever shifting dependencies and documentation that was usually not quite up-to-date. Today things are easier, but, even now, setting up a cluster is no small task. Recently, however, I ran some experiments with Amazon's Elastic MapReduce (EMR) and the entire process was swift and painless.

Continue reading



Basic Querying with PostgreSQL

In the previous post, we looked at data normalization in PostgreSQL. In this tutorial, we'll expand on our work to write queries that answer questions about the data.

Continue reading



Data Wrangling with PostgreSQL

Wrangling raw data into well normalized, efficiently queryable tables in PostgreSQL can be challenging, especially for those with limited prior SQL exposure. In this tutorial, I've created a step by step guide to walk you through the process of munging and normalizing data about famous people from a practice data set.

Continue reading



Visualizing Conway's Game of Life with Matplotlib

While working through practice problems on leetcode, I encountered a problem I hadn't seen for a while, Conway's Game of Life. After implementing the solution, I decided it would be interesting to take it a step further and generate graphics to display the game.

Continue reading



Syncing Vim Across Different Environments

One of the great things about Vim is that it requires very little customization. For the things that you do want to customize, however, it's really good when you can keep everything in sync across your various environments.

Continue reading



Verifiable Election System Demo

In an earlier post, we looked at the mechanics behind creating an election system where the results could be verified by any third party while still protecting voter privacy. In this post, we'll look at a demo implementation of a user interface for this system.

Continue reading



Spotting Malicious Code Hidden in Plain Sight

Recently, Peter Jaric hosted a Javascript misdirection contest where contestants attempted to write elegant code to surreptitiously pass a generated key to a remote server. The trick of the contest, however, was to hide the malicious code in plain sight.

Continue reading



Modeling Verifiable Voting that Protects Privacy

Technology has made it possible to design an election system that is both transparent and verifiable, but still protects the privacy of the ballot box.

Continue reading



Basic Supervised Learning Overview

There are some really good tools for supervised learning out there. Every popular language has them. Most of the existing toolkits will have all of the algorithms mentioned here plus a lot more. If you're comfortable with Python, I suggest starting with scikit learn since it has a standard interface for all of its machine learning techniques.

Continue reading



Modeling the Monty Hall Problem with Python

At first glance, the Monty Hall problem can seem counterintuitive, but, when viewed from the correct perspective, the appropriate strategy becomes abundantly apparent.

Continue reading



Price Targets a Poor Predictor of Performance

In order to determine the relationship between consensus price targes and stock performance, I decided to measure the accuracy of predictions made from 2013 to the first two quarters of 2014 against the actual results from the matching quarter of the following year.

Continue reading



Configuring Vim for Use in the Terminal

GVim is great for a local machine, but sometimes it isn't possible to use when working on a remote server. Never fear, with the right configuration, Vim can look just as great even when it is running in terminal mode.

Continue reading



Stepping Through Memoization in Haskell

To better understand how memoization works with Haskell's lazy evaluation, let's walk through a simple example step by step. As a learning tool, we'll examine a simple function that raises the number two to a the power of whatever number is given as input.

Continue reading



Understanding Recursion in Haskell

To understand how recursion works, let's walk through a simple example step by step. As a learning tool, we'll create a simple function that raises the number two to a the power of whatever number is given as input. Let's take a look at the implemenation to get a better idea of how the process works.

Continue reading