Michael Vaganov mvaganovhotmailcom Objective To write commercial quality software that supports games, and teach game development Ultimately, I want to be a part of making software that has a positive impact on society. Skills Programming Languages * C/C++ (12 yrs, highly proficient) * Java (8 yrs, highly proficient) * LUA (proficient) * HTML/CSS/JavaScript (familiar) * PHP (familiar) * SQL (loosely familiar) API Proficiency * J2ME (CLDC 1.1, MIDP 1.0 & 2.0) * BREW (1.1, 2.1, 3.1) * Java (1.4.2, 1.5, awt, swing) * OpenGL (GLUT) * LUA (C/C++ integration) Tool-belt * Eclipse (for Java and C++) * MS Developer Studio * GIMP * Apache Ant * Notepad++ * gcc, make Note-able Software Written * Client/Server API (end-to-end networking code) for BREW/J2ME + Apache Tomcat (x2) * Customized virtual machine/scripting language/compilers (x3) * Scaleable tools for multi-platform build system (x2) * Scriptable, Container-based UI Systems for mobile devices (x3) * Intuitive UI systems for mobile devices (page navigation, triple tap) (x4) * C/C++ Memory Management libraries and tools (x2) * Custom ANT tasks (written in Java) for heavy lifting in build automation * Voxel-based OpenGL 3D graphics engine Work Experience November 2006 to April 2008 LimeLife Lead Software Engineer responsible for end-to-end network-aware mobile application development, including build system, reusable framework API, game development tools, and porting systems, with emphasis on automation * Simplified manual 4 step build process for each device to a fully automated build process for all devices using simple batch files and Apache Ant scripts * Created automated OTA (Over The Air) deck generation scripts as part of J2ME build process, using PHP * Created DRM (Digital Rights Management) abstraction layer for carrier/platform specific DRM systems, as well as client-side code for a custom, encrypted, carrier non-specific, DRM layer for LimeLife * Acted as emergency porting engineer for "InStyle" and "Rachel Ray: Recipes on the Run" mobile apps * Created a highly efficient 2D composite sprite format and renderer for mobile devices (both J2ME and BREW) * Created Java-based GUI tool for creating and editing composite sprites * Acted as technical artist for "Top Chef: the Mobile Game", building composite sprites and animations * Part of senior development team that built ALE, a (quite impressive) wide-porting/localization/multi-platform API, and associated build systems * Created AML, an HTML-like scripting language used to describe UI and network-aware UI traversal for phones (like a customized WAP) * Created build tools, runtime engine (including container-based UI system), and on-the-fly server-side Java-based compiler for AML, a custom UI engine for mobile LimeLife Mobile Titles List: * Hallmark Smiles + Styles - J2ME/BREW - Lead Developer - Web-aware browser that used scripting engine to display network distributed UI. Built and designed from the ground up in both J2ME and BREW, including multi-platform HTML-like scripting language and compiler, container-based UI system, and platform abstraction code (including multi-lingual network protocol abstraction), which was migrated into main LimeLife porting framework (ALE). * Urban Chica - J2ME/BREW - Lead Developer - A re-skinned application built in parallel and accomplished within *hours* of final builds of Hallmark Smiles + Styles. No source code alterations needed, only script modifications. * Top Chef, the Mobile Game - J2ME/BREW - Framework Engineer - Designed and built composite Sprite engine. Also acted as Animator and technical artist. * Rachel Ray: Recipes on the Run - J2ME/BREW - Porting Engineer - Network aware application used to find and share licensed Rachel Ray recipes. Utilized FLIRT, a LimeLife proprietary scripting and UI layout technology * InStyle - BREW/J2ME - Porting Engineer - Network aware application used to distribute InStyle magazine content, based on FLIRT, the same technology used to build Rachel Ray. June 2004 to November 2006 Infospace Mobile Games A lead developer of mobile applications with emphasis on client/server interaction. Content Engineer, Game Developer, Client/Server Engineer (Dec 2004 to Nov 2006) * Implemented and debugged multiple proprietary asynchronous Client/Server technologies. * Trained engineers in proprietary BREW and J2ME technologies. * Conceived and implemented original scriptable UI engines for mobile and created associated compilers. * Developed zip compression based networking/content distribution protocol. * Designed, developed, maintained, and ported applications using "For Prizes" asynchronous multiplayer technology. * "For Prizes" Expert - Acted as major knowledge store about proprietary For Prizes technology, including client/server transactions, and user registration and authentication processes, in both J2ME and BREW. * Nominated for a company-wide Infostar award in the first 6 months of employment! June 2004 to Dec 2004 Atlas Mobile (later purchased by Infospace) Contract Porting Engineer (first 6 months of professional software development work) * Ported 5 "For Prizes" games to CDMA carriers and 30+ BREW devices. * Prototyped a functional BREW UI engine. * Identified as a 'BREW expert' by technical management, 6 months after learning BREW. Porting Experience With The Following Phones (not all phones listed): * BREW - Audiovox (CDM 8910, CDM 8940, CDM 8600, CDM 8900), Kyocera (KX1, KX2, KX444, SE47), LG (VX4400, VX4500, VX4600, VX4700, VX6000, VX6100, VX7000, VX8000, VX8100, VX8500, VX10000), Motorola (V65, V260, V265, T720, C343, V710, V262, E815, V3, K1), Samsung (N330, A610, A790, A650, U740). * J2ME - MIDP-1.0 and MIDP-2.0 (Sony Ericssons, LG, Samsung, Motorola V series, Nokias, ...) Infospace Mobile Titles List: * Tetris Tournament For Prizes - BREW - Porting Engineer - Tetris with a "For Prizes" component. One build worked on every handset tested (drawing and UI resized, had multiple handset specific bugfixes). * Prize21 For Prizes - BREW - Porting Engineer - Fast paced puzzle game. Experimented with procedural drawing with some great results. One build worked on every handset tested (drawing and UI resized, had multiple handset specific bugfixes). * QBz for Prizes - BREW - Porting Engineer - Port of a popular web game. Experimented with BREW framework design. Refactored art system and data structures for better scalability. * Holdem Poker Plus For Prizes - BREW - Porting Engineer - Puzzle game with Hold 'em Poker theme. Heavy art and layout refactoring for small and large phones. * Boulderdash - BREW - Support for Porting Engineer - BREW port of popular old-school PC game. Trained a porting engineer by supporting his port of this game. * AMF Bowling For Prizes - BREW - Support for third party developer - Offered support to out-of-house developers using the For Prizes SDK * Trickshot Pool For Prizes - J2ME - Framework Engineer - Pool game where the player is required to make trick shots. Wrote For Prizes module based on older J2ME For Prizes framework. Optimized away 10k of code from a 30k J2ME "For Prizes" framework (compressing J2ME API byte-source by 33%, post obfuscation, post jar compression). * Skeeball For Prizes - J2ME - Framework Engineer - Provided support for J2ME For Prizes framework (same one used in Trickshot). * Hotties - J2ME - Lead Developer - Massively Multiplayer phone blogging + Hot or Not game. Developed, from scratch, a scriptable UI and logic engine for J2ME (including a new scripting language and script compiler) as a "shippable prototype". Optimized and increased the functionality of a proprietary client/server protocol. Wrote Java Bean server components that interacted with the client on Tomcat servlets. Trained 2 engineers on how to use the scripting language (one server side, and one client side). Created server logic and compiler tools to automatically generate script files to be streamed to handsets with dynamic content and UI. * Survivor Island Mobile - J2ME - Developer - Wrote a J2ME network-aware resource-loading API and zip-decoder, including resource manager to enable the phone client to grab compressed game resources from the web, using HTTP, and cache data (based on phone RMS capability). "For Prizes" Integration. Optimized and debugged. * TestT4P - J2ME - Lead Developer - Robust J2ME "For Prizes" testing application. J2ME application's binary had near universal portability: from the Nokia 6010 (tiny screen, only 2 direction buttons), to the top-of-the-line Samsungs and Sony Ericsons. Written as an instructional tool to teach developers and QA team how to test and port "For Prizes" games, and how to write J2ME code (built with straight forward design and good J2ME design principles). Became central testing point for a programming test to upgraded QA to porting engineers. March 2006 to present DeVry University, Fremont Campus Professor of Games and Simulation Programming * Consistently rated highly by students in instructor evaluations (3.98 out of 4.0) * Act as a practical and vocal guide to several game development clubs with 30+ active members * Offered extra-curricular emphasis on game programming to enthusiastic students DeVry Courses Taught: * GSP110 - Introduction to the game development process - First semester course - Overview of games industry history - Practical game and level design * GSP490 - Senior Project Course - Final course in the GSP curriculum - Practical Game Development Life Cycle - Applied Software Development Processes (Waterfall vs Agile) - Management of multiple student-driven game development teams * GSP420 - Game Engine Architecture and Design course - Practical game implementation from the ground up in C/C++ - Design patterns and architecture in Java * CIS115 - Early programming course taught in C/C++ - Emphasizes programming fundamentals in the context of games - Pointers by week 6, to the horror of many students * GSP240 - Game Design - Game analysis - Game mechanics development - Game idea generation and Game Design Documentation * GSP340 - Level Design - Game Level creation (including scripting) using 2D and 3D game editors - Scripting engine integration in games using LUA March 2002 to October 2004 DeVry University, Fremont Campus CIS Tutor * Tutored hundreds of students, primarily in algebra, and computer science * Trained and mentored new tutors, and wrote training documentation * CRLA certified, Tutor of the Semester (Summer 2003) Education July 2001 to October 2004 DeVry University, Fremont Campus BS of Computer Information Systems * Graduated GPA 3.76 (Deans List) * Special Honors: Summa Cum Laude, Excellence in English and Humanities, Graduated Tutor * Team leader and lead engineer for award winning senior project: "Nizzols", a real-time Java Applet multiplayer game, winner of "Complexity of Design" * DeVry Advocate (volunteer program organized by student services) * Clubs: Chess Club member, Game Development Club President * Staff at ACM programming competition hosted at DeVry Personal Programming Axioms * Single Point of Truth: One complexity, one bug, one change * Program with a purpose: Know the end-goal as soon as possible * Code explicit functionality rather than side effects * The best programmer writes the most readable code * Optimize later, but worry about optimization now * Just Prototype (and expect not to be given another shot at it) * Do not fear complexity, simplify. * Refactor sooner rather than later; clean code grows into powerful code. * Regarding fad programming paradigms (like Agile & eXtreme Programming): Disciplined, results oriented software development has always been in style.