• # The Great Photo Escape: Freeing Images from Kodak's Digital Prison

25 Feb 2017

Starting in 2011, Kodak brought to market the Kodak Pulse line of digital photo frames. In addition to SD card and USB support, this line of photo frames had an email address which could receive image attachments, store the images on Kodak's servers, and display the images hassle free on the digital photo frame. While this feature is a boon for people who like to receive photos from friends and family with minimal latency, there is one very important feature missing -- the ability to download these images in bulk.

Figure 1: Steve McQueen as Captain Virgil Hilts in the 1963 film _The Great Escape_. Captain Virgil Hilts is one of many prisoners of war imprisoned in a high security POW camp during World War II. While I acknowledge that using this allusion is dangerously close to invoking Godwin's Law, the movie is a masterpiece that deserves the occasional mention.

While it was possible to manually download each image using a web browser, this is not an acceptable means for backing up images, particularly if your photo album contains thousands of photographs. Instead of trying to download all of these images manually, I decided that a programmatic solution must exist. To that end, I created a bulk image crawling script using the python library scrapy.

• # Rememberall: CLI Document Retrival using Bayesian Inference

17 Sep 2016

A long standing tradition in scientific research is to keep detailed notes on everything as it happens. This studious attention to detail not only makes analysis and paper writing much easier, but also serves as a record of exactly how an experiment was performed should it need to be repeated in the future. By looking though a lab notebook, an experiment can be repeated exactly, and results can be verified.

Figure 1: A laboratory notebook used to record experiment setup, observations, ideas, data, and analysis results. Laboratory notebooks are permanent records of the events that transpired during an experiment, an experimenters thoughts and observations during an experiment, and the experimental results. These records are an invaluable resource when communicating research, and are often a legally binding record of research that was conducted.

Although I have since moved away from the laboratory, I still keep detailed records of my work in a series of markdown files detailing the steps taken as I perform data analyses and develop software. Over the last few months, however, I've found that the volume of my notes has grown to large to simply grep for keywords.

To make it easier for me to find project- or task-specific development notes, I developed a Rust-based CLI tool called Rememberall, which uses term frequency and Bayesian inference to retrieve documents relevant to a query of keywords.

• # An N-Race Schelling Segregation Model

21 Jan 2016

It is a common theme in non-linear modeling that small perturbations in initial conditions can result in massive deviations in the outcome of a simulation. In 1969, Nobel laureate Thomas Schelling explored how even small biases can have large sociological effects. In his paper "Models of segregation", Schelling described how a model in which a preference that one's neighbor's be of a specific mixture can lead to total segregation regardless of intent.

Figure 1: A 500x500 Schelling segregation model with 3 races. This simulation was conducted with a maximum minority threshold of 0.2 for 1000 ticks.

Using this concept as a starting point, I developed a Java-based application to simulate a Schelling segregation model for an arbitrary number of races (n>=1).

• # Estimating Epulopiscium Sp. Type B Chromosome Density Using Computer Vision

21 Apr 2015

In addition to the epidemiology presentation this morning at SUNY Geneseo's 9th Annual GREAT Day symposium, I also presented a poster with Matthew Taylor on the use of computer vision in the localization of fluorescently labeled genomes in the extremely polyploid Epulopiscium sp. Type B. As a test-case for this technology, we used the coordinates for the localized chromosomes to estimate the chromosome density for cells during different life stages. For those interested, the poster is a good read.

As a part of our presentation, we presented a 3D model of chromosomes localized from a cell that forming daughters. The model is rendered in WebGL using the three.js library with support for both mouse and Leap Motion control.

Figure 1: Live demonstration of 3D chromosome distribution generated using computer vision. This figure is a live 3D demonstration of the spatial structure of an Epulopiscium cell's chromosomes. This model can be rotated by clicking and dragging or by using a Leap Motion. No, seriously. Try it.