Toronto, Ontario, Canada
I'm a software developer and computer science enthusiast from Toronto.
I enjoy hacking on various projects, learning new languages, and playing with new technologies. This is a summary of myself.
1 - Red Sphere Reflection
Image made with my raytracer of a single red sphere reflecting in a myriad of others arranged using a noise function on a grid. Scene rendering was sped up with a bounding volume heirarchy.
2 - Infinite Spheres
Image made with my raytracer of an infinite field of spheres reflected in another sphere with a squared torus also in the reflection. Signed distance fields were used to make the infinite field of sphere possible.
3 - Path Tracer
Image made with lower settings on my path tracer to show the spill of coloured light, like any good global illumination solution.
4 - Programming Languages
Part of a larger program written in Racket. This is some basic stream building that I wrote myself to see how it works. Excellent PLT practice.
5 - Text-Mode Demo
Screenshot from my second text-mode demo. This one shows off a nice palette and some notes made in 3dsmax and rasterized in software in real time.
- Carleton University, Ottawa ON 2003 - 2008
- Bachelor of Computer Science Highest Honors, Co-op Option
- Software Engineering Stream
- Earned a $16,000 Scholarship
- Big Viking Games, Software Deverloper, Toronto ON 2013 - Present
- Tiny Kingdoms
- Evolved a DOM based rendering system to a canvas based system.
- Used Node.js in a data-heavy game server environment.
- Worked with artists and designers on a daily basis to get the game just right.
- SuperSpin Slots
- Created a new game server from scratch, evaluating all possible languages and frameworks.
- Created a payment infrastructure system for Facebook, iTunes, PayPal, Google Play, and Boku in Java 8.
- Launced a game on Facebook, iOS, and the open web simultaneously.
- Used React.js to create many designer tools.
- Optimized load times for slow mobile connections.
- Used as a testbed for trying out different core engine modifications.
- Integration with Kik platform.
- Unannounced Games
- Used Unity to create a companion app connecting to both legacy SmartfoxPro servers and modern Java REST servers.
- IBM Canada, Software Developer, Markham ON 2008 - 2013
- Static Compilation
- Implement several hundred built-in functions for C/C++, COBOL, and PL/I.
- Migrated compiler to 64-bit z/OS
- Helped creation of new C/C++ compiler of zLinux.
- JIT Compilation
- Researched and implemented several unique optimizations.
- Analyzed performance of benchmarks to create optimization plan.
- Great amounts of experience in trace jit debugging, including interop with virtual machine.
- In charge of build team's build and test system.
- Experience in using a JIT to accelerate binary translation and virtual machine emulation.
- Interfaceware, Developer, Toronto ON 2008
- Added skinning system to web site to support low-colour systems such as VNC over a slow connection.
- Pioneered use of jQuery to speed up cross-platform development.
- MIGS 2014
- HTML5 Server Evolution, part of Practical HTML5 for Mobile
- Computer Skills
- Experience in performance analysis, investigation, and development using tools like Intel VTune, OProfile, and VPA.
- Strong Linux and Unix command line experience along with Vim.
- Programming Languages
- Full Proficiency
- PowerPC Assembly, x86 Assembly, D, Perl, Bash
- Passing Familiarity, Could be up to speed within 2 weeks
- F#, Idris, Scheme, Haskell, Erlang, Ruby, Python
- Soft Skills
- Fluently bilingual in French and English.
- Creative and analytical abilities, able to multitask and handle varied assignments.
- Ability to work either independently or in a team situation, in a workplace environment or remotely.
- Yoyoing for more than 15 years. Board member of the Canadian Yo-Yo Association. Competed in the Canadian National Return Top championship 3 years running, with a best placement of 7th overall in 2010. Judging the 2012 and 2014 national competitions, and the 2014 and 2015 Easter Canadian Regional competition. Performed at the Chinese Night Market Toronto 3 years running.
- Written my own raytracer from scratch that supports spheres, planes, and boxes being solved directly. Planes, spheres, boxes, tori, tori with different distance metrics, and metaballs, along with domain repetition, translations, and rotation are supported as signed distance fields. Basic bounding volume heirarchies using spheres are also supported. Path tracing support is being worked on and has some preliminary results. SSE is used heavily throughout the vector, colour, and intersection code. OpenMP is also used for parallelization support.
- Text-Mode Demo Competition
- Twice taken part in the Text-Mode Demo Competition with self-written demos. One included real-time raytracing, and the other included a scrath-built rasterizer capable of several thousand triangles per frame. Great experience was gained with both graphics work and the combination of graphics, music, and design.