Screenshot of scale control webpage while feeding.

As a kid, I dreamed of an automated farm. Now, after a bit of education, I'm implementing it. Currently, our dairy cows are automatically fed four times per day—no human presence required.

Two batches of feed (up to 4 tons per batch!) are mixed each day by the operator. A precise ration is calculated and measured by an electronic weigh scale. Once the feed is mixed, the automation takes over. There is a Programmable Logic Controller (PLC, like those used in factories) that controls all the feed conveyor motors and actuators, and reads the scale weight to unload the set amounts. The PLC monitors many sensors to ensure that everything is operating smoothly. If an anomaly is detected, everything is stopped, and an SMS message is sent to the operator.

A webpage allows remote management of the feeding schedule. In addition, the scale display is emulated with working buttons on a webpage to allow remote control and monitoring.

MultiPath TCP

The MultiPath TCP page documents how I improved my parent's Internet access by simultaneously utilizing two ISPs.

Cow TV

Still frame of CowTV video stream

Dairy cows never take vacations. I've networked an array of video cameras so that my family's cows and calves can be remotely monitored. This allows more frequent checks than if one has to physically visit the barn each time. The linked source code runs on a Raspberry Pi and allows one to stream RTSP video feeds from the cameras to high-definition TVs in the living room. Through an IR sensor, the TV remote control can select which camera to view, and also turn the lights on and off in one of the barns.

RTSP Proxy

RTSP Proxy is golang program to enable the cow cameras to be viewed on a mobile app, from anywhere with an internet connection

Undergraduate Research

Description: Locus: A Vehicular-based Content Management Network for Location-centric Applications

Current Web Demo: Locus Demo




Illinois Vehicular Project, Live Data Sampling and Energy-efficient Node Discovery

Tribonacci Entertainment Distribution (TED)

Screenshot of TED web interface

TED is a whole-apartment audio distribution system that allows music input from any bedroom or other sources to output at any combination of bedrooms, living room, bathroom, kitchen, and stairway. TED can be controlled from any web browser.

Distributed Computing

Folding@home stats badge

I like putting the spare cycles of my computers to good use by participating in distributed computing projects like BOINC and [email protected].

Miserly Mac

For about 1.5 years, my apartment was on a per-hour real-time pricing plan for electricity. I had hoped to save money and, in a small way, reduce my environmental impact by incentivizing myself to reduce energy demand during peak loads, when the most unclean power sources are often used. I eventually concluded that the (small) savings weren't worth the stress of monitoring prices and adjusting my behavior. In the meantime though, I wrote a neat script that would scrape the hourly prices from the electric company's website and schedule OS X to sleep when the the price rose above a threshold, and wake again when the price dropped.


A modification of the XBox 360 MIDI Pro Adapter for Rock Band 3 to re-enable the Squier Stratocaster guitar buttons.

Family Website

The Ehrat Family Website

This website was created by me to organize and make available information about the decedents of Hans Georg and Katherina Ehrat, my Great-Great-Great Grandparents, who immigrated to the United States in 1871.

Spud Guns

Me with Spudwinder and Drew with Spudnik II

Spudwinder is a pneumatic potato cannon I built in high school. My friend, Drew Bell, built Spudnik I (combustion powered) and Spudnik II (combustion or pneumatic).