Passionate software engineer with over 12 years of experience specializing in tools development and data visualization for game development. Throughout my career, from building mission control web portals to creating automation frameworks and performance dashboards for game studios, I've focused on crafting tools that empower teams and bring clarity to complex data. I thrive on the variety that comes with tool development, tackling completely different challenges week to week while delivering solutions that drive productivity and insight.
Automation Engineer at Azra Games (Current)
Game: Ungodly
Pre-Commit
- Address recurring build breaks from missing files, conditional compilation failures, and syntax errors
- Integrate with TeamCity to compile and test code when peer reviews are requested
- Catch majority of build-breaking changes before merge, significantly reducing team disruption
Record & Play
- Build automated testing solution from ground up, applying learnings from previous automation experience
- Design and implement tool to capture gameplay steps and replay them during automated testing runs
- Support and extend functionality across multiple environments and test scenarios
Performance Metrics
- Set up automated performance testing system to regularly run through common in-game scenarios
- Utilize AWS Device Farm to playback recorded test sequences on a variety of iOS and Android devices
- Capture Unity profiling data including CPU times, GPU time, and memory usage during test runs
- Store performance statistics (min, max, avg, P5, P95) in BigQuery database
- Create Looker Studio dashboards to visualize performance data with filtering by build, device model, and in-game area
- Extend performance runs to capture graphics state collection data, split by quality level and region
- Collaborate to use collected data for shader pre-warming, significantly reducing first-time hitching
Load Testing
- Create standalone C# application to connect to game server and send/receive TCP request/response sequences
- Record in-game message sequences with timestamps for realistic gameplay emulation
- Parse server responses dynamically to handle generated entity IDs and maintain test flow
- Leverage game's proto files to ensure protocol compatibility between test tool and server
- Deploy to AWS Fargate with 50 instances to simulate hundreds of concurrent users
- Stress test servers under semi-realistic load conditions
Mass Request Tool
- Build Unity-based tool to mass send server requests using same client code as production game
- Execute thousands of gacha pulls across hundreds of game accounts to proactively validate drop rates
- Identify subtle bugs in pity system through statistical analysis, mitigating legal and financial risk
- Extend functionality to populate leaderboards with thousands of test entries
Daily Reports
- Create automated Slack reports for performance regression detection
- Alert team to significant performance changes the day after commits, enabling quick identification of problematic changelists
- Build out-of-budget asset reporting (models, textures, etc.) to enforce memory and download size limits
- Surface critical issues that spawned strike teams to address problem areas across the game
Software Engineer 2 at Electronic Arts (4 years)
Notable title: Star Wars: Galaxy of Heroes
Pre-Commit
- Respond to an engineering request for more timely automated testing
- Design and implement a framework to run an extendable set of tests
- Each test checks the changed file list to determine if it needs to run
- Integrate with Jenkins to run tests when peer reviews are requested
- Support tests written by the client, server, and tooling teams
AWS Device Farm Migration
- Evaluate and report on costs vs maintaining onsite device farm with constant maintenance needs
- Prove out AWS Device Farm solution through local prototyping
- Successfully migrate testing to AWS, gaining access to wider device array and eliminating maintenance overhead
- Integrate AWS Device Farm into existing Jenkins test pipelines
Record & Play
- Identify QA need to reduce repetitive manual testing
- Propose recording live gameplay as an automation approach and gather requirements
- Integrate gameplay recording capability with existing automation framework
- Demonstrate and promote the tool to QA teams
- Support and extend functionality across multiple titles and environments
Additional Test Reporting
- Respond to a QA request for more accessible test logging
- Prototype and later refine a solution to report automated test results directly to the QA test tracking tool, Zephyr
Improve Test Automation
- Replace hard-coded delays with conditional waits and timeout handling for more reliable test execution
- Add intelligent handling of unexpected prompts (interstitials, ads, rewards, connection issues)
- Replace frequent polling with performant relay of real-time screen state updates
- Refactor to reduce code duplication and simplify messaging
- Increase testing up-time from 30% to 95% by addressing maintenance issues and flaky test patterns
- Port existing automation framework to support new titles, ultimately supporting 5 mobile titles
Software Engineer at Iron Horse Games (5 months)
Steam Town
- Quickly ramp up on a new project and development platform with no support
- Upgrade UI with all new animations and resolutions
- Refactor to reduce code complexity and quantity by over 50%
- Implement 9-slicing (scalable UI panels) where platform lacked built-in support
Superhero Comic Prototype
- Efficiently prototype new concepts to facilitate design discussions
- Smoothly reframe and brighten cells of a comic while panning across the page
Full Stack Software Engineer at 5th Planet Games (1 year)
Dawn of the Dragons: Ascension
Campaigns Guild Feature
- Collaborate with game designer and software engineer to create technical design documents and plan feature development tasks
- Implement the campaign feature across server and client components
- Move across the shared campaign map with an energy resource
- Strategically defeat nodes to limit buffs across the event
- Compile rewards from loot pools and deliver them to player inboxes once the event is complete
- Complete feature development; game sunset before public release
UI
- Faithfully implement UI intent from art team mockups and wire frames
- Make UI/UX changes for improved clarity, player retention and monetization
- Handle the necessary changes for a PC conversion including dynamic scaling and mouseover text
Support
- Build, test, and maintain features across the server, client and admin tools
- Efficiently fix bugs, add functionality, and review code changes
Software Engineer 2 at Northrop Grumman (6 years)
Mission Control Accreditation
- Create the cross-team integration environment for large (50,000+ man-hour) contract
- Include necessary hardware components as well as software components with methods to rebuild updates
- Create and follow a detailed series of test steps for accreditation
- Manage team of 5 engineers with source control in git and tasking in Rally
- Create RESTful Java API to forward messages to scripts and firmware
- Successfully complete accreditation, leading to contract extension
Mission Control Browser Tools
- Prototype requested functionality and regularly meet with stakeholders to guide iterative improvements
- Visualize and control hardware status including power, diagnostic reports and temperature
- Manage resource allocation for pod components (antenna control, signal filtering, directional scanning)
- Build and configure sequences of signal processing and analysis steps
- Visualize location data over time for receiving platform and tracked signals
Prototype Internal R&D Projects
- Display known network layout with the Java Universal Network/Graph Framework (JUNG)
- Procedurally configure connected devices with the Simple Network Management Protocol (SNMP)
- Exploratory project utilizing minimax in a rule-based environment to respond to network input
Sensor Chassis Test Suite
- Startup and run diagnostic on test chassis
- Install and validate test suite on an air-gapped network
Sensor Calibration Real-World Flight Testing
- Validate processes documentation by running against real hardware
- Direct a pilot to predetermined points near the facility antennae
Generalist Programmer / Co-owner at DoubleA Studios (1.5 years)
Kelkom
- LAN-based medical appointment scheduling and metrics system
- Deployed on a tablet to replace a hardware unit with blinking buttons
TTRPG Visualization Tool
- Character manager and visualization tool for table-top RPGs (Primarily D&D)
- Includes a separate initiative tracking application with status effects and dynamic layout scaling
Windows Taskbar Messaging Tool
- Broadcast messaging system for posts and advertising in a Windows toolbar
- Includes tabs to track multiple messaging channels including financial advice and retail coupons
From Space (Twin-stick shooter)
- 3 unique playable races
- Junkers generate trash shields, create turrets, and fire rapidly
- Space snails regenerate, charge forward, and gain a spread shot
- Saucers turn instantly, fire homing missiles, and fire bullets that shoot more bullets
- Enemies attempt to dodge projectiles, weaving through on higher difficulties
- Enemies drop powerup crates
Side Projects
Online Portfolio (this page)
- Use jquery to sort experience against a list of languages and tools
- github
Procedural Hex World
- Infinite procedural world generation using noise-based algorithms
- Object pooling system that reuses and repositions tiles for optimal performance
- Draw call optimization through batching and object reuse
- Horizon shader effects simulating small-planet navigation
- Instant warp system allowing navigation to any coordinate
FFXI Gearswap Scripts
- Dynamic equipment optimization system using weighted stat evaluation
- Real-time adaptation to level changes, situational requirements, and available gear
- Automatic gear set generation based on current context (MP available, day of week, action type)
Dice Game
- World space UI elements
- Physics-based RNG
- github
Manic Space Bot Repair (GGJ 2020)
- Gather parts and fix the bots so they can repair the ship
- Global game jam
How Our Mission Ended (GGJ 2019)
- Fight or befriend in a quest for stuffium
- Pathfinding and behavior system for robot NPCs
- Global game jam
Lumen (GGJ 2018)
- Resource collection and management
- Global game jam
Ravenous Void (Ludum Dare 45)
- Brave the unknown to gather the power to fend off the darkness
- Procedural world generation
- JSON-based music
- ludum dare
Herding Cats (Ludum Dare 44)
- Armed with a lazer pointer, try to get cats to assist in solving puzzles
- ludum dare
AI Opponent for a Customized Chess Game
- Use Negamax algorithm to select best move
- github
Jigsaw Puzzle Creator
- Chop any image into puzzle pieces and put them back together again
- github
Education
Sacramento State
- Received a bachelor's degree in computer science
- Worked as an adjunct professor, tutor, and grader covering all undergraduate computer science coursework
- Represented school in state programming competition
San Joaquin Delta College
- Received an associate's degree in computer science