Operational Experience
September 2010 - Present Mozilla #audio Group : Contributor
http://audioscene.org/
  • Co-developed the Kraddy demo in close collaboration with members of #audio to showcase new technologies in Firefox 4, while helping to coordinate a timely and complete release
  • Contributed an Octree implementation and a frustum plane extraction algorithm to CubicVR.js, increasing 3D drawing performance, enabling the use of large, complex scenes, and allowing dynamic lighting
  • Improved Blender 2.49's COLLADA exporter, adding extra functionality and fixing misalignments with the COLLADA specification, to enable better interoperability with third-party 3D engines with COLLADA support
  • Leveraged Blender to model and texture scenes for the Kraddy demo, and used Processing.js to add animated music-visualization textures

July 2010 - Present Cyberhive : Designer & Developer
cyberhive.ca

May 2010 - September 2010 Imaginarius with National Film Board of Canada : Technical Director & Architect
interactive.nfb.ca/#/outmywindow
  • Crafted a 3D, panoramic image-plane engine in AS3 to accomplish the effect of an interactive 3D image-collage
  • Created and utilized immersive editing and design tools with focus on WYSIWYG functionality to manipulate 3D scenes and properties of projects
  • Employed Python for automating content preparation pipeline to facilitate clean, fast integration of assets into project
  • Consulted and collaborated with creative directors and other technical leads to solve distribution and integration problems

August 2009 - May 2010 Private Eyes Productions with BBC : Technical Director & Architect
bbc.co.uk/cbbc/mihigh/games • privateeyesproductions.com
  • Cooperatively developed reusable Flash AS3 frameworks and libraries, and created games and websites based on them
  • Developed and maintained high-performance graphics integration pipeline in Python and PIL, automating ImageMagick and Adobe Photoshop
  • Practiced important aspects of extreme programming including unit testing, agility, pair programming and collaborative design
  • Directed and contributed to discussions concerning business and creative design

September 2008 - December 2008 Electronic Arts Inc. : Developer
ea.com/ca
  • Integrated new visual effects engine into existing game by reconfiguring existing graphics routines and writing facilitating rendering engine code
  • Assisted in the research and integration of a new audio system for existing game engine
  • Participated, led discussions, and directed ideas in team meetings for pertinent projects concerning several areas of engineering
  • Collaborated to write maintenance and build scripts, and custom tools for game construction pipeline

January 2008 - April 2008 soho vfx : Developer
sohovfx.com
  • Wrote multithreaded tree-based image compositor with C++ and pthreads to composite multi-pass 3D renders for modelling and lighting artists
  • Collaborated with artists to develop custom image manipulation tools based on libTIFF
  • Progressed and enhanced prototype GUI and accompanying Python Extension for aforementioned compositor with wxWidgets
  • Compiled user guides and mathematically inclined technical documents for future developers

Technical Experience
Languages: JavaScript, C/C++, C#, Python, XML, HTML, CSS, ActionScript, Java, PHP, Ruby, SQL, Objective-C
Graphics Libraries: CubicVR.js, OpenGL, Ogre, IrrLicht, ImageMagick
Graphics Software: Adobe Photoshop, GIMP, Blender, 3D Studio Max
Internet: jQuery, WebSockets, Twisted, Tornado, Apache, node.js, Rails
Source Control: Git, Mercurial, Perforce, SVN, CVS
Visualization: Processing, Processing.js
Data: JSON, COLLADA
Utilities: FireBug, gdb, SDL, Unity, pygame, boost, libTIFF, pthreads
UI's: TkInter, wx
OS's: Linux, OSX, Windows
IDE's: Visual Studio, FlashDevelop, Vim, Eclipse, XCode
Office: OpenOffice, Microsoft Office, LaTeX, FreeMind
Browsers: Firefox, Chrome, Safari
Other Acronyms: REST, AJAX, TCP/IP, HTTP

Education

University of Waterloo, Waterloo ON
Honours Bachelor of Computer Science Co-op with Minor in Psychology, 2009


Personal Projects & Interests
Projects & Experiments
  • Fractagram: An HTML5 fractal viewer exploiting canvas, workers, and Firefox's JavaScript engine
  • Robothaus: A collaborative effort to harness and incubate the ideas and talents of a small group of individuals for use in projects and livelihood
  • Demos: Exercise in programming with focus on visualization and audio
  • Ascension: A modern, hyper-scalable, super-modularized game engine
  • Art: An exploration into the world of 3D modelling using 3D Studio Max and Blender to create and sell art.
  • 8-bit: Creating and sharing 8-bit-style music

Miscellaneous Interests
  • Written and spoken French, Hebrew, Japanese, and German
  • Play authorship and (Internet) Radio Broadcasting
  • Vinyl
  • Neuropsychology and Quantum Physics
  • Artistry of the Theremin, Piano, & Guitar
  • Soccer

Who I Am

I love programming and discovery as much as I like sharing the two. I am, however, also something of a musician, and the pulse of 8-bit artistry has always satiated my need for fat square waves. As such, the web and the demo-scene have attracted me with their perfect inclusion of three brilliant worlds: great music, beautiful visualizations, and open technology. Previously, in work and play, I have surrounded myself with constant reminders of how alluring those worlds are, and, now, I dabble in everything. I love pretty graphics; I love powerfully catchy music; I love programming; I love new technology; I love openness; I love demoing.

Reaping the benefits of the co-op education system at the University of Waterloo, and experimenting with freelancing afterwards, my occupational experience is somewhat diverse. My forays include work for Electronic Arts, soho vfx, the BBC, and the NFB. I have helped develop rendering engines for the Wii, created compact scene compositors for 3D artists, constructed Flash games for kids, and built exploratory 3D image collages for government-funded arts projects.

As a result, I have experience in a wide range of fields within the computer industry, and have discovered different languages, technologies, people, and strategies from all of them. Java, C++, Python, JavaScript, Windows, OSX, Arch, Ubuntu, Pre-Rendering, Real-time Rendering, Agile Development, Extreme Programming, Pair Programming, Unit Testing, Serving, Threading, Fixing, Helping, Sharing, Contributing, Leading - I've had a good time.

Currently, it is my goal to be involved with as many interesting and inspiring projects as possible. Inevitably, this lust has led me into the worlds of JavaScript, Blender, Processing, Processing.js, CubicVR.js, and, finally, Mozilla.

I pine for more. Do help.

What I'm Doing

#mozilla

I am now the Creative Tech Lead under Brett Gaylor of Web Made Movies at Mozilla. Working with popcorn.js and butter, and being the implementation magician to make Web Made Movie's ideas tangible as quick as possible, I'll be helping to make sure <video> earns its rightful place on the web.


#audio

As a member of Mozilla's #audio group, I was jointly responsible for bringing one of the first scene-worthy audio-flavoured WebGL demos to the internet: "No Comply." My frustum-culling & spatial partitioning work on CubicVR.js opened the perfect window of opportunity to help create this one-of-a-kind viewing experience with the important tagline, "This Is Just A Webpage." http://hacks.mozilla.org/category/demo/featured-demo/(soon)


#fractagram

Who doesn't like to stare at interesting fractals? Or, better yet, who wouldn't love watching an animation of a zoom into them? Fractagram is a canvas experiment that displays fractal-zooming animations which are rendered by your computer in your web browser. It uses worker threads to accomplish its speed (on Firefox, thanks to quick ImageData serialization), and lets you share particularly beautiful fractals with friends via twitter & Facebook. I don't think that sharing pretty fractal animations has ever been so free and easy: http://robothaus.org/fractagram/fractagram.html


#robotrock

Bringing audio visualization onto the dance floor, robotrock is a platform designed with live performance in mind. Robotrock's underpinnings were created with the intention of letting VJ's develop programs atop it, allowing them simple access to tools of interactivity, such as theremins, 3D space trackers, raw sound data, mobile devices, and more. To demonstrate its ability, the robotrock test suite has been displayed at several public shows, illustrating what simple Processing applications can do with robotrock. http://cyberhive.ca