Since my sophomore year here at RPI, I've been working with RCOS. It's an undergraduate research group, committed to writing cool open source software. It's one of the most unique opportunities I've seen at any university, and I feel fortunate to be able to participate.

This semester, being my last at RPI, I wanted to focus on a project with large implications. I've been toying with an idea in my head for a long time, and now is the perfect opportunity to turn it into reality. I'm working with a fellow senior, Jeff Hui, and we're both really excited about this project.

So, what's the big idea? What's the cool "last-hurrah" RCOS project?

It's called Genesis, and it's one simple thing:

Wouldn't it be great to write software on your iOS device?

I know, a pretty daunting task. Several products currently exist. For example, the really interesting Codea (formerly known as Codify) allows you to write LUA scripts on your iPad, and run them on the device. Also, ssh apps like Prompt from the cool guys at Panic (hi Cabel!) allow you to remotely write software on another machine, if you're happy with emacs, vim or nano (or echo and > if you're super hard-core).

I see these apps on opposite sides of a continuum. Codea is beautiful, and takes advantage of a touch input device to aid in writing software (for example, giving the user a color wheel for RGB values), but you're stuck in LUA. Prompt allows you to write in any language you choose, and work on all your software projects using a terminal editor. This is really versatile, but due to the nature of an SSH client, is not optimized for software development. Also, because it's emulating a teletype, enhancing the interaction possibilities with touch is not really possible.

It would be great to have an app that's the best of both worlds, in the middle of that continuum. Work on any software you choose, and do so in a way that's designed for touch. A beautiful gesture-based experience.

I'm really excited just considering all the possibilities a touch interface can bring to development. After talking in January about some new source code visualization techniques with a friend of mine, I'm itching to get started.

Writing software isn't nearly as useful if you can't test it, and that's where I think we have an innovative solution. Instead of needing to have your whole stack on-device (frameworks and compilers and debuggers), why not let your computer handle that stuff? Genesis has a cloud component. You run a piece of server software on your main development machine, and connect it to our cloud service. The device can use your development machine to build, run, test, debug, commit and push your changes, and there's no need to run native code on your phone or tablet.

Genesis is open source, under the BSD license. The repository is on Github.

So, that's Genesis. Jeff and I are really excited to work on it.