I'm a Senior Software Engineer with over 20 years of experience building software that ranges from video games for small resource limited mobile devices to web applications used by millions of users. I prioritize user experiences to help them achieve whatever their trying to do in a simpler, quicker fashion. I am capable of being an individual contributor, or leading teams where I use my organizational and emotional skills to deliver what the customer or business needs. In a mentor or lead role, I tend to be empathetic, looking for ways to keep the team's morale up so we can all be more efficient. Overall I love to design, write and deliver software that is not only technically sound, but also meaningful and user-centered.
| Languages | C, JavaScript, TypeScript, CSS, HTML, Java, C++, Python, Objective-C, Swift, z80 Assembly, Brew, J2ME |
| System and low level | Emscripten, Markdown, MermaidJS, Visio, Hardware Emulation, WebAssembly, OpenAPI/Swagger, Java Native Interface, WebSerial, WebUSB, USB Communication, Cross-Compilation |
| Mobile/Web/Frameworks | Angular, Spring Boot, Lua, Gulp, Ant, Mocha, Jasmine, Selenium WebDriver, Jest, React Testing Library |
| Leadership | Test-Driven Development, Technical Leadership, Agile/Scrum, Project Coordination, Git |
| Technical Architecture | Full-Stack Development, System Integration, Low-Level Bridging, Cross-Compilation,Architected and implemented solutions that bridge proprietary embedded systems (C/z80) with modern web applications (Angular/TypeScript) via WebAssembly and Emscripten. |
| Web/Front-End Expertise | Angular, TypeScript, Responsive Design, API Integration (RESTful),Designed and implemented Angular applications for calculator emulation, license activation, and user utilities, utilizing third-party SSO and communicating with Java/SpringBoot middleware. |
| Embedded & Systems | Hardware Emulation, Low-Level Programming (C, z80), Communication Protocols (USB, WebSerial/WebUSB, JNI),Designed the glue layer for targeting embedded code on the web. Established cross-platform USB communication architecture using abstraction layers and JNI. |
| DevOps & Automation | Build System Optimization, CI/CD, Scripting (Gulp, Node.js, Jenkins), Deployment,Developed and maintained complex build scripts, optimizing workflow into parallel Jenkins jobs, resulting in a 70% build time speed-up. |
| Technical Leadership | Scrum Master, Technical Requirements, Cross-Functional Coordination, Code Review,Led development teams, serving as Scrum Master and Development Lead. Authored technical requirements based on user needs. Coordinated business-wide tech sharing sessions. |
| Mentorship & Team Morale | Empathetic Leadership, Mentoring, Knowledge Transfer,Managed and mentored engineering teams, offering tutorials and code deep-dives to improve team proficiency and maintain morale. |
| Software Quality & Testing | Test-Driven Development (TDD), Automation Frameworks, Code Quality Metrics,Prototyped automation frameworks (Node.js, Mocha, Selenium WebDriver). Designed and met code quality standards (unit testing, static analyzers, mandatory code reviews). |
| Product & User Focus | User-Centered Design, Accessibility Implementation, Requirements Analysis,Prioritized user experiences for simpler, quicker solutions. Implemented code in z80 and JavaScript to enable screen reader accessibility for calculator emulators. |
| Risk & Compliance | Open Source Auditing, Security Remediation,Responsible for reviewing third-party library lists to ensure eligibility and manage licensing. Led teams to address IT security scan concerns (modifying HTTP headers). |
Tenure involved an evolution from rapid functional prototyping (building POCs and starter code, thus, reducing time-to-market) and deep systems engineering to technical leadership roles and architectural oversight. Considered the go-to person for bringing low-level hardware emulation and proprietary communication protocols to desktop and web applications. As part of the metrics task force, designed and met code quality metrics with tools like unit tests, code sanitizers, linters and static analyzers. This career progression was formally recognized with an appointment to the first rung of TI's Technical Ladder.
Product(s): TI Connect CE, TI-Smartview CE, TI Smartview Mathprint Edition
Technologies: Jira, Confluence Wiki
Description: Responsible for reviewing third party library lists to determine their eligibility for integrating into our products. End result of this per-release activity is a list of attributions that would get appended to the EULA for each shipped product.
Product(s):
Technologies: Webex, Outlook
Description: Coordinated business-wide information sharing sessions and recruited presenters for the same. This weekly series resulted in broader understanding of deep technical topics as well as business-related subjects.
Product(s): N/A
Technologies: Javascript, Typescript, Angular, Material UI, SSO, Selenium, WebSerial, Tomcat, InVision, Sketch
Description: Led team that implemented the functionality for 2 web apps: One for USB connectivity with the calculator and another shell for the emulator of the calculator. Serving functions of development lead, scrum master. Reviewed user requirements and wrote technical requirements. Web apps were written in Angular, with libraries compiled from C via Emscripten. For USB connectivity, used WebSerial API.
Product(s): N/A
Technologies: Javascript, Typescript, Angular, Material, UI, Selenium, InVision, Sketch
Description: Designed and implemented functionality for performing file transfers between 1) Web app and physical calculator using WebSerial API and 2) A webapp that contains an emulated calculator, making the API between both libraries match so they can be a drop-in replacement for each other
Product(s): N/A
Technologies: C, CUnit, InVision, Sketch
Description: Implemented functionality to support animating graphs on new hardware platform written in C, using the APIs provided by the calculator's tools.
Product(s): N/A
Technologies: Javascript, Gulp, CMake, MSBuild, Visual Studio, Python, Node.js, WebAssembly, Mocha, Jenkins
Description: Developed and maintained gulp.js scripts that automated the complex process of invoking disparate platform build tools, such as CMake and MSBuild. This build system was later optimized for speed by restructuring the workflow into parallel Jenkins jobs, resulting in a 70% build time speed-up. The task division was actively managed and rebalanced to sustain peak performance.
Product(s): N/A
Technologies: C, Javascript, Emscripten, WebSerial, Kermit, CBOR, pthread, eslint, Mocha, Chai, Istanbul, Google Closure Compiler, Terse, Confluence Wiki
Description: Implemented JavaScript+WebAssembly library that provided a promisified API to communicate web apps with USB-connected calculators and emulated devices via a proprietary communications protocol that uses Kermit and CBOR-encodings
Product(s): N/A
Technologies: Javascript, C, Emscripten, WebAssembly, SVG, pthread, cUnit, Mocha, Chai, Istanbul, eslint, Google Closure Compiler, Terse, JSObfuscator, Confluence Wiki
Description: Designed and implemented the glue layer and plain JavaScript shell to enable the calculator's embedded application code to work on the web by transpiling to WebAssembly. Coordinated cross-functional team that did development and test for new features. Designed and implemented an automation entry point using WebSockets.
Product(s): N/A
Technologies: Javascript, C, Emscripten, WebAssembly, pthread, WebSockets, Node.js, Python, Mocha, Chai
Description: In lieu of an ability on the browser to directly wait for events from another process, designed and implemented an automation entry point using WebSockets for an intermediate server, and both test-driving processes in Python as well as the system under test in JavaScript.
Product(s): TI-84 Plus CE Online Calculator
Technologies: Angular, Typescript, Material UI, Selenium, InVision, SSO, LocalStorage, Google Analytics
Description: Implemented Angular application that provides access to an emulator for the TI 84 Plus CE calculator on web browsers. Implemented single-sign-on usage for user authentication (OAuth identity) and license validation (entitlement) via 3rd party provider. This was the first publicly available TI calculator on a web app with *over 1500 users in first month.
Product(s): TI Nspire CX II Online Calculator
Technologies: Javascript, C, Emscripten, Mocha, Clipboard API
Description: Consulted with team implementing the glue layer as well as the application in Angular. Implemented prototype for in-emulator clipboard interaction with system clipboard using the Clipboard API.
Product(s): License Activation Center
Technologies: Angular, Typescript, Material UI, Selenium, Java, JUnit, Spring Boot, SQL, REST API, OAuth
Description: Designed and implemented a key validation interface in coordination with our DBA to provide users a means to activate license codes. Front end implementation written in Angular with a RESTful middleware implemented in Java+SpringBoot communicating with an Oracle database. Implemented multi-language support using Angular's i18n tools and custom scripts to convert content into formats compatible with the translation workflow.
Product(s): TI-84 Plus CE Chrome App
Technologies: Angular, Typescript, Material UI, Selenium, ChromeApp API, LocalStorage, Chrome App Store, Google Analytics
Description: In reaction to the covid pandemic, led the team that worked to support remote learning on Chrome OS allowing students coming back from spring break to have a TI calculator to work with. Application was used 3.5 million unique users from it's launch up to when Google removed Chrome App support.
Product(s): N/A
Technologies: Javascript, Node.js, Cucumber, Selenium WebDriver, Mocha, Chai
Description: Prototyped automation framework for interacting with calculator libraries in the browser using Node.js, CucumberJS, Mocha and Selenium WebDriver.
Product(s): TI-84 Plus CE Online Calculator, then others.
Technologies: HTTP Headers, HTML
Description: Researched, implemented and documented the needed Tomcat and Apache Web server configuration changes needed to address concerns brought up by IT security scans. Changes included modifying HTTP headers (CORS, CSP, Permissions Policy) and additions to meta tags in the web app's HTML. These guidelines served as the basis for all of the subsequent web apps the organization published.
Product(s): TI-Nspire Connect
Technologies: Angular, TypeScript, JavaScript, C, Emscripten, WebUSB, InVision, Google Analytics
Description: Designed and implemented Angular shell to run the web app, as well as the JavaScript and C glue layers for cross-compiling NavNet, the TI-Nspire line of calculator's communication library with Emscripten to enable communicating with a TI-Nspire CX II device via WebUSB. 28k on it's first year.
Product(s): TI-83 Plus CE for CAPES
Technologies: ElectronJS, Angular, TypeScript, JavaScript
Description: Designed and implemented ElectronJS shell to run an emulator of the TI-83 Plus CE calculator allowing teachers completing France's certificate of aptitude for secondary school teachers (CAPES). Work for this application also involved investigations into cross-platform deployment.
Product(s): TI 84 Plus CE ExamCalc
Technologies: z80 Assembly, JavaScript, Accessibility, Screen Reader, WCAG
Description: Implemented code needed in both Z80 assembly and JavaScript to support market needs to make calculator emulators interact correctly with a screen reader for the vision impaired. Due to the nature of the calculator emulators, no aria element is readily available, so the emulator needs to provide the messages to be fed to a screen reader.
Product(s): TI 30XS MultiView ExamCalc
Technologies: JavaScript, Accessibility, Screen Reader, WCAG
Description: Implemented OCR screen interpretation to provide the needed information for a screen reader to provide the user with the calculator's state.
Product(s): TI Connect for Chrome OS
Technologies: Chrome USB API, AngularJS, JavaScript, CARS, Chrome App API
Description: Ported the communications layer on a utility that talks to TI calculators using Chrome's USB API. Implemented user-facing features in AngularJS in combination with Chrome APIs.
Product(s): TI Connect CE
Technologies: CARS Protocol, Java, JNI, C, Windows, macOS, USB Communication
Description: Delivered cross-platform compatibility for a proprietary CARS communication protocol by porting the codebase to generate platform-native libraries (Windows/macOS). Established the USB communication architecture using an abstraction layer and integrated the functionality into the application via Java Native Interface (JNI).
Product(s): TI SmartView
Technologies: Hardware Emulation, Java, JavaScript
Description: Wrote and reviewed user requirements. Designed and implemented features related to interacting with emulated hardware. Helped the development team solve memory and performance issues.
Product(s): TI-84 Plus CE ExamCalc
Technologies: eZ80 Emulation, JavaScript, HTML, CSS
Description: Implemented emulators for eZ80-based devices which have gone through our client's pilots involving 800k users without any reported issues.
Product(s): ExamCalcs
Technologies: JavaScript, z80 Assembly
Description: TI calculators that are approved for use on ACT®, SAT®, and AP® exams, as well as most state assessments.. Ported and implemented calculator emulators to the web. Adapted Z80 opcodes and emulated the TI-84 Silver Edition and TI-84 Plus C's ASICs. Ported Toshiba T4 CPU emulation from Java and implemented the TI-108 and TI-30MV's ASICs. Pilots involving 800k users without any reported issues.
Product(s): ExamCalcs
Technologies: JavaScript, Hardware Emulation
Description: TI calculators that are approved for use on ACT®, SAT®, and AP® exams, as well as most state assessments.. Ported and implemented calculator emulators to the web. Adapted Z80 opcodes and emulated the TI-84 Silver Edition and TI-84 Plus C's ASICs. Ported Toshiba T4 CPU emulation from Java and implemented the TI-108 and TI-30MV's ASICs. Pilots involving 800k users without any reported issues.
Product(s): TI-Nspire
Technologies: Java, C
Description: Given the strong desire for documents to display with the same word-wrapping and character counts on all supported devices (iPad being a new addition): researched and developed guidelines and layout rules for document rendering when being displayed on different screen resolutions.
Product(s): TI-Nspire
Technologies: Lua, C, Java
Description: Designed and implemented the infrastructure allowing new classroom activities to use the Lua scripting language. The C counterpart for the Lua bindings, as well as the Lua engine itself gets cross-compiled to run on different platforms including iOS, Nucleus and desktop operating systems.
Product(s): TI-Nspire
Technologies: Lua, C, Java
Description: Designed and implemented some of the infrastructure necessary to create new classroom activities using the Lua scripting language. The C counterpart for the Lua bindings, as well as the Lua engine itself gets cross-compiled to run on different platforms including iOS, Nucleus and desktop operating systems. The use of Lua would open up the possibility of expanding TI-Nspire's question types in the future without needing to write them in Java or C
Product(s): TI-Nspire
Technologies: Java, JNI, C, Multithreading
Description: Worked in conjunction with the development team to refactor the usage of JNI by piping requests to the backing C libraries into a single thread, minimizing UI lockups and improving performance and memory usage overall.
Managed the team doing porting for the US carriers' devices.
Product(s): Multiple titles for Sprint mobile catalog
Technologies: Project Planning, Team Leadership, J2ME, BREW
Description: Coordinating project planning for various carriers in the US, working in conjunction with the sales and marketing teams to reduce production costs and improve revenue. Lead and mentor the engineering team, offering tutorials and code deep-dives where needed.
Product(s): Qualcomm Application Value Billing client module
Technologies: C, C++, BREW
Description: Created client module for Qualcomm's Application Value Billing API (C/C++) in conjunction with the team in Bangalore, India. Allowing games to have in-app-purchases as well as promoting code reuse on future game titles
Product(s): Star Invasion (Alien Invaders) mobile port
Technologies: J2ME, Mobile Porting, Performance Optimization
Description: Supported team that created Alien Invaders by porting for small-screened and resource limited devices. Aided the creation team to reduce the footprint for their project; done in J2ME, targeting small-screened and resource limited devices.
Product(s): Rollercoaster Rush
Technologies: OpenGL ES, BREW, iPhone Porting
Description: Ported iPhone implementation of OpenGL ES game to Qualcomm's Brew framework
Developing games and applications for the iPhone OS. Coordinated development with a geographically distributed team. Prompted the company to implement updates to infrastructure to improve productivity.
Product(s): Racing game stage editor
Technologies: Java
Description: Aided in the development of a stage editor for a racing game, done in Java.
Product(s): Circulate / Circulate Prologue
Technologies: DirectX, OpenGL ES, OpenAL, iPhone SDK
Description: Originally a PC based game; it was ported to the iPhone platform. Game used every user-friendly feature on the iPhone, including its 3D sound capabilities with OpenAL and its accelerometer. Ported the DirectX implementation to the iPhone's OpenGL ES, converting 3D models from quads to triangles. Translated levels originally designed for desktop/mouse to be usable on a touch device. This game earned a bronze medal from pocketgamer.co.uk.
Product(s): iFit
Technologies: OpenGL ES, iPhone SDK
Description: Wrote an application that provided pedometer functionality as well as fitness tips for the iPhone
Various roles, starting from Porting Engineer, Lead Developer, 3d Programmer and R&D Programmer
Product(s): Blockbreaker for iPhone
Technologies: C, OpenGL ES, Objective-C, iPhone
Description: Developed and ported first prototype for the brick-breaker game using the Celestial framework for iPhone. The Mexico studio's team was the first to build a successful prototype which led to the studio being assigned more iPhone projects. Used C-implementation for OpenGL ES as graphics engine and sourced models from other platforms.
Product(s): Bikini Volleyball
Technologies: Java, Mobile Game Development
Description: Implemented mini-games that were included with the main volleyball game when built for devices that would support them
Product(s): Multiple 3D mobile game ports
Technologies: Java, JSR184, J2ME, OpenGL ES
Description: In charge of porting multiple game titles for resource-limited, but 3d-capable devices. All ports used Java's JSR184 3d implementation for mobile devices and were adapted by tweaking frustum setup and removing bottlenecks in graphics pipelines where possible, resulting in improved performance or, in some more extreme cases reducing models' polygon count to achieve acceptable frames-per-second and keep games playable
Product(s): Virgin Mobile game catalog
Technologies: Java, J2ME, Team Leadership, Mobile Optimization
Description: Led team charged with porting games to Virgin Mobile's catalog of space-constrained devices, often needing to reduce games' scope and swap out graphics with lower-detailed versions in addition to performing micro-optimizations to improve performance
Completed coursework towards: Master's in Electronics and Telecommunications with specialization in control systems and automation, 2002-2005
Developed RT-Linux kernel modules to communicate a PC that performed the PD control algorithm and a a driver PC that sent control signals and motor positions over TCP sockets with low-latency, minimal-jitter to control a 2-degree-of-freedom robot arm. Control PC had a Java Swing UI connected to the kernel module via Java Native Interface. The driver PC performed I/O operations directly to a data acquisition card from kernel space.
Bachelor's in Electronics Systems Engineering, 1997-2001
Attended summer student exchange at the Unversité de Poitiers, France with a focus on control systems engineering.