Ian Reynolds | @idreyn | idreyn@gmail.com
Welcome...to my laboratory!
Hi, I'm Ian Reynolds, a chemical engineering swivel chair design EECS major at MIT. In the past I worked on the Scratch programming language and online collaboration platform; my current project is building an ultrasonic echolocation device for the blind. This is a collection of interesting things I've hacked on over the years. You will find more of them scattered haphazardly around my Github page. Thanks for stopping by!

Several years ago I came across a shocking statistic: about 1 in 8 people worldwide doesn't have access to clean drinking water. This spring my friends and I decided to do something about this, and we began planning a school-wide campaign to raise awareness about this issue and to fundraise with the goal of being able to sponsor a clean water project somewhere in the developing world. The result was CDH2O. In the spring of 2012 we designed posters, wrote presentations, and sold hundreds of T-shirts, raising almost $4,000 in a matter of days. The site speaks for itself, but I'm rather happy with it as an example of single-page web design as well.

I have been studying Mandarin since 2013 and while the language is an absolute joy to learn, its non-phonetic script is a unique challenge. Learners of languages with phonetic scripts can encounter a new word, infer its meaning from context, and continue having learned the word. Not so for Chinese...encountering a new character requires a trip to the dictionary to figure out how to pronounce it. I built Shentan to help alleviate this problem; now, I can feed it a piece of text and my approximate reading ability and it tells me what words I am unlikely to recognize in the text before I encounter them. I spend a few minutes reviewing them beforehand and enjoy a much smoother reading experience. Shentan is a simple command line tool now, but I'm looking for ways to rig it to OCR and spaced repetition software to create a tool that is indispensable for any Chinese learner!

Elemental is a small domain-specific language for building modular, extensible components in HTML5. I put it to work building the UI for Sigmabox.

OnlineBill.ca was not my idea, but this incarnation was developed start-to-finish by me and I think it's worth sharing. The goal was to create a dead-simple invoicing application for consultants and freelancers. (Sounds boring, yes, but it's a joy to use!) I like the way it turned out and I learned a lot about writing robust, organized PHP in the process. I'm working with Efficiency Canada to launch the thing, but for now it's in open beta and anyone can use it to send quotes and invoices.

I'm a bit of a transit geek and an EE/CS major, so it was only a matter of time until these two spheres of my life collided. The result was a map of the MBTA rapid transit system comprising almost nine meters of LED strips that tracks the location of trains in real time. It lives on my wall an overview of the state of the system, but mostly just something to zone out to. This project received a surprising amount of attention after it was picked up by the Boston Globe!
Thumbnail image credit: Cam Booth

Sigmabox is a well-designed and highly functional calculator app for iOS. It graphs, handles matrices, lists, and complex numbers, performs statistical calculations, solves linear systems, converts units, and more. It's a labor of love and an experiment to push the limits of what an HTML5 app is capable of. The link above is to the App Store; you can also find the source on Github -- since it's a web app, it should be fairly functional in any WebKit browser.

I have long been a part of the Scratch community (in fact, I used to be a community moderator) so I was pretty thrilled when Belgian Scratcher JSO created Scratch Resources, a site where users can share and download sprites and sounds for use in their projects. I wanted to take it a step further, so I created Scraps, a small desktop AIR application that acts as a Scratch Resources client. Scratchers can upload and download resources through Scraps. I am very pleased with the way the interface turned out and I'm happy to say that it's available as a free download!

Flyte is a free AS3 library for creating platform games. I wrote it as my first big foray into Actionscript 3, and I originally intended to use the result to create a game, Blizzard's Run. I think this was the first time I ever tried to write a library or API to be understood by other human beings, so it took a couple iterations to arrive at something sane and usable. Flyte taught me a whole bunch about important game design concepts like collision detection, garbage collection, object reuse, etc., and the result is actually something that people can use to create games with a minimal knowledge of Actionscript through the Flash Professional IDE.

Quiero is a small, simple library that I created after I discovered jQuery and realized that compared to $.post, AS3's default HTTP request workflow is convoluted and sinister. So I wrote a simple class that bypasses all the URLRequest nonsense and lets you GET, POST, and even upload files in a single line of Actionscript! If you're a Flash developer, I suspect it may serve you well.