My name is Jedd Haberstro and I enjoy writing software. I'm interested in low-level systems programming, computer graphics, programming languages, and building applications for iOS and OS X.
I've worked for a broad range of clients and companies including Genetech, Eminem's Shady Games, Appstem Media, DS Media Labs, and Koko Tap. Most recently, I have been an intern at Apple, Inc., where I worked within their Embedded Graphics Group. This coming summer (2013) I will be interning with Typesafe in Lausanne, Switzerland where I will be contributing to the Scala IDE for Eclipse.
I am a student of Computer Science pursuing a BSc at the Rochester Institute of Technology. I will be graduating after the 2013-2014 academic year.
This is a list of apps I have worked on that are or have been publically available for download on the iOS App Store. Unfortunately, I am unable to list details here of my work that I have completed for Apple and Genentech.
Light Riders is a fast paced game where players race their light cycles trying to out survive and take out their enemies with the light trail they leave behind them. Featuring both a single player and multiplayer mode, Light Riders is fun to play alone or with friends.
As a member of a small team at DS Media Labs that created Light Riders, I was particularly proud of our accomplishments with this game. Myself and one other developer were able to develop the game engine from which this the game was built upon. Being a small team, I had my hand at developing wildly varying portions of the codebase. A non-exhaustive list of key features I developed for both the game engine and game itself include: varying parts of the graphics engine, the game-actor component-based subsystem, game-actor dependency graph manager, the deque and vector collections (taking inspiration from EASTL), opponent light cycles artificial intelligence, Boost style directory and file I/O, and varying math library classes.
The goal in Garden Marbles is to try to tip as many of the black marbles around the garden and into the pond within 60 seconds. As you clear off one level of marbles, more appear, and the garden starts to have impassable obstacles like trees and rocks that will block your path. But be careful to avoid letting your white marble fall into the pond!! The white marble moves around the screen as you tip your device back and forth-you want to make sure not to tip the white marble into the pond or you lose time and restart the level. The player has only 60 seconds, but can gain 10 extra seconds of play by tipping an orange "bonus" marble into the pond, and gain additional points by tipping the blue bonus marbles into the pond.
Developed for Koko Tap after the release of Bug Bounce, I was the sole programmer for this game. I created the game using C++, UIKit/Objective-C for the user interface, the Box2D physics engine, and OpenGL for graphics.
The goal in Bug Bounce is to try to avoid the enemy bugs that spawn and bounce around the screen for as long as you can. The gameplay starts out slow but becomes frantic, fast. You control your player (the little blue bird) with your fingertip, and move him around the screen so it doesn't touch any of the ever-increasing bugs that appear. The player has three "lives" of 100 points each, and each of the bugs moves at different speeds and will reduce the player's 100 points at different rates.
Developed for Koko Tap in anticipation of the launch of the iOS App Store, Bug Bounce was one of first apps to hit the iOS App Store. As the sole programmer, I created the game using C++, UIKit/Objective-C for the user interface, the Box2D physics engine, and OpenGL for graphics.
These are small to medium size projects that I have worked on in my spare time.
Some are not meant to be complete applications, but rather demonstrations or building blocks for future projects.
This project demonstrates a real-time sub-surface scattering technique based on Colin Barre-Brisebois' GDC talk "Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look." The main difference between the two techniques is that the thickness map is computed in real-time, which extends the algorithm to deformable objects.
To the right are two video demonstrations of this technique performed on the Stanford University Computer Graphics Laboratory's Happy Buddha model.
The Chip-8 is a language interpreter/early-day virtual machine that was used on older computers such as the RCA TELMAC-1800 and COSMAC VIP in the 1970s. Chip-8 consists of small and simple instruction that supports math and logic operations, control flow, monochrome graphics, and sound. Because of the Chip-8's simplistic instruction set, it is a common first time project for hobbyist emulator developers.
I wrote my Chip-8 emulator years ago, like many others, to understand the general process that one goes through when creating an emulator. Of perhaps greatest significance was the experience gained of writing software for undocumented systems, as that has been a skill that has been useful on numerous occassions since.
JAML (Just Another Markup Language or "Jedd's Awesome Markup Language" :-)) is a markup language very similar in spirit to Markdown, but with a syntax that I found I could better palette. I wrote this partly for practical purposes and partly "just because" -- I wouldn't recommend any one try to make use of though however, as I have no future plans for it! The syntax is as follows:
headers are the same as markdown
@ denotes an ordered list
* denotes an unordered list
--- (or more) denotes a horizontal rule
Technically the project consists of three main components. The first component is the JAML parser and delegate interface. It consists of a handrolled parses that, upon recognition of a particular JAML element, will notify it's delegate. The second component is the JAML editor; the editor is a split-view application that on one side displays a syntax-highlighted text area of the written markup, and on the other side displays a prettified HTML version of the markup language. The third component is the HTML delegate used by the editor to generate a HTML version of the JAML document.