At IPsoft I was a Senior Project Manager responsible for running implementations of IPcenter, an autonomous infrastructure monitoring and remediation platform. I ran projects from beginning to end, working hand in hand with the client as well over a dozen internal teams. These were 3-12 month projects ending with automated monitoring and remediation for hundreds to tens of thousands of systems.
I ran projects differently based on the client and the work being done. I used Agile, Waterfall, and hybrid project methodologies. Generally, I was the sole PM on the account, therefore responsible for running the schedule, reporting, governance calls, and all project management. One of the things I’m most proud from my time at IPsoft is maintaining a high level of client satisfaction across every engagement.
During my second year at IPsoft I was put in charge of running the continual improvement for one of our largest clients. This was far from a traditional project as it had no scope and no timeline. The client had recently moved to a pure Scrum development style internally, which is a key reason I was assigned to the account. I managed the process of implementing three new integrations, standing up a new IPcenter instance, automating patching of their Unix environment, and more. In the end we had a lot of wins and the client was extremely happy.
I was the sole Program Manager for the Home Consumer Electronics team at iHeartRadio. This group is responsible for implementing and maintaining iHeartRadio on all the platforms we support other than iPhones, Android phones, iHeart.com, and car entertainment systems. This includes dozens of devices such as numerous speaker systems, TVs, and game consoles. Our team is a key factor in iHeartRadios push to have our app everywhere our users want to listen to music.
A significant part of my job was working with third party developers. We often hire outside firms to develop our application on particular platforms if we don’t have the expertise for that platform in-house and it makes more financial sense to have subject matter experts do it rather than ramp up an internal team. This was a good move for the company and our app which gave me a large percentage of my job, which was managing these projects that were being done outside the company. I would be the main point of communication between iHeart and these 3rd parties during development. I was also responsible for supporting their developers which meant becoming very familar with how our backend worked. I became so familiar that I became a main source of documentation for our APIs.
In addition to all the above during my time at iHeart I was also a key person interfacing the Home CE team with other teams at iHeart some of which are the Backend API team, Operations, Ads, Royalties, Analytics, Customer Support, QA, Data Engineering, and the in-house client developers working on the Android, iOS, iHeart.com, and Automotive products. I really enjoyed this aspect of the job as it allowed me to interact with so many different people inside the company. I made a lot of new friends this way and learned a ton first hand. I always enjoy walking to someone’s desk and having a conversation with them. So often this is better than slowly dealing with issues via email or chat while also allowing me to have a better relationship with all these teams.
I was the Project Manager of the Razer Common Tools team. We work on common APIs and SDKs for the rest of the Razer ecosystem including Synapse, Comms, and more. This makes our team the lynchpin for all the core functionality Razer users expect from the basic logging into their account to the complex task of using their Razer software from inside a full-screen game. This ensures we keep our code and practices to a high standard so that it continues to succeed for all teams and the millions of customers who use it all.
As the Common Tools Team we develop four main components supporting three applications. I work closely with not only everyone on my team, but also members of the three application teams, the localization team, tech writers, legal, product developers, UI, and upper management. These groups are spread across four cities in three different countries.
Our team has recently launched it’s first user facing application. This ties in closely with the previous work we’ve done, but brought new challenges to myself and the rest of the team. It was out of the comfort zone for the team, but we pulled together and got it done. This has lead to me working closely with new teams such as UI. While adding a few more groups to the amount I already dealt with on a regular basis made things more difficult, it meant that we could interact directly with users for the first time. As common as that may be it does really change your outlook and to this day we continue to ship great software for both our other Razer software teams as well as our millions of loyal customers.
At Microsoft I worked on the VUI(Voice User Interface) for the Xbox 360, I was the Program Manager for the VUI, Localization, and Social aspects of the 360, and I was a PM for the Xbox 360 Microsoft Store app which was launched for Xbox One preorders. While working on VUI I setup tests of the voice recognition on the console and interpreted the results. These results were then used to tune the voice recognition of the console. I also improved one of the main applications involved in this testing. This application created grxml files for many languages and modes which shaved hours off each tuning and configuration pass.
As the PM of VUI, Social, and Localization for the Xbox 360 I have been responsible for ensuring that the localization of all new text on the 2013 Xbox 360 flash release is successfully approved, localized, tracked, and tested. I also managed all new feature work in those areas and saw that bugs for all three areas were triaged, assigned, and fixed.
The Xbox 360 Microsoft Store app is the Xbox group’s first commerce platform selling physical goods. This application was developed with a core team of five people, a virtual team of over seventy, and launched less than four months after the start of development. This was a challenging project to complete on such a short time frame and provided me with a variety of pieces to manage. I was responsible for localization, an authentication framework switchover, and the app during its post-launch timeframe. There were also a myriad of smaller tasks and requirements such as setting up the preorder achievement and managing functional design changes. The app launched successfully on June 10th 2013 and has been selling Xbox Ones without incident since.
I spent two years on the board of the Product Management Consortium. After nearly a year I was asked to organize ProductCamp Seattle 2013. ProductCamp is an unconference related to Product Management, Product Strategy, and Product Marketing. The PMC puts on ProductCamp Seattle every year and we are constantly working to create a place to learn, network, and share in the PM community. ProductCamp is our largest event of the year and is a focal point for the Seattle product community.
While I organized ProductCamp for 2013, the rest of the board as well as our team of volunteers worked very hard with me planning and then putting it all together. Organizing these two groups which are both made up entirely of volunteers was a good challenge. In 2013 we kept things moving forward. We went to a new venue, our best and most elevated one. In addition to a physical move, we moved to a deposit scheme in order to reduce attrition. The end result of those changes and all our preparation and marketing was our largest ProductCamp yet.
While at Hidden Path I was given the opportunity to upgrade Counter-Strike Source to include many of the improvements and features Valve’s other popular FPS had, Team Fortress 2. This included achievements, a domination/nemesis system, a kill camera, stats tracking, and much more. This work was done in 2009, 5 years after the title had shipped. It felt good to have such an important game loved and played by so many entrusted in us by its creators.
I was one of 4 devs given the task of updating CS without changing how the game plays. Personally I implemented a new scoreboard, new particle effects, some of the stats tracking and stats display, the kill camera, the end of round screen, and some of the achievements. Counter-Strike Source runs on the Source engine which started development in 1998. Developing for such an old engine also gave me some interesting and difficult pieces of code to deal with. And pleasantly, working on a game I had played a decade prior was a great mark in my career.
Wits & Wagers is a fun trivia and party game for the Xbox Live Arcade. It is based on the hit board game of the same name by Northstar Games. It is to our knowledge the first Xbox LIVE Arcade game to allow couch-to-couch gameplay, which means a group of people on one console can play against other groups of people over the internet. Each round is a short 7 questions which means that you get a full 100 rounds of unique gameplay using the 700 questions included in the base game.
Wits & Wagers was the first Xbox 360 game released by Hidden Path. For much of the development of Wits & Wagers there were only 2 programmers developing it. I was one of these and worked on the game until it shipped. I worked on much of everything save for the graphics. I was also responsible for the networking, AI, and the question selection including the user storage. The networking used a relatively new technology, Microsoft’s new networking base QNet. This was a very fun challenge, especially as I had done very little networking before Wits & Wagers. The AI was great as I created different personalities for the AI that controlled their betting behavior. The dancing AI was really cool too as I used pre-recorded dances performed by our lead animator Adam Crockett, which the AI would choose a dance to do based on what and how they were doing in the game.
Overall, working on my first Xbox 360 game was a great experience. I learned a ton and I’m grateful that the first professional title I worked on from start to ship was such a fun title with a lot of
support behind it. Of course working with fun people was and always is the best part.
PRISim Suite is a military and police training simulator. I’ve been working on this product since I started working at AIS in October of 2010. It is a long standing product used by companies, governments, and police forces around the world. PRISim Suite is based around two parts, the judgment simulator and the marksmanship trainer. The former uses live action video controlled by the users’ actions and a trainer at a second computer. The later uses a world run in a modified version of the Torque engine. Trainees use modified and in some cases real weapons to interact with a projected image of the game world.
PRISim Suite runs on a variety of hardware and can do so while running the same training session. In one case two users will be interacting with a projected image run from one computer, with the trainer controlling the session from a second computer, while a second instructor is reviewing the session on a tablet. This setup can be expanded to 16 trainees at once with multiple tablets. The program has a lot of expandability, but this has created numerous challenges. Keeping everything in sync and ensuring that the correct information is available when needed in the right executable can be a tricky situation. Zooming in on a shot or a mean point of impact is one example that created a lot of work for what sounds like a simple problem.
PRISim is an interesting program to work on. It’s been in constant development for many years and, it has difficult hardware requirements, and there is little tolerance for lag. This and everything above leads to many innovative changes.
Microsoft Test Tools
During the second half of ’09 and the first half ’10 I worked at Microsoft developing tools and test hooks to test and monitor Xbox 360 games. During this time I worked on a good variety of programs.
One of these was a tool that allows tester to use voice commands to perform anything that has already been hooked into the game or other applications. For example when playing a Kinect title the user can take a screenshot and an verbal note and use them to create a bug report.
Many tools I created centered around database information. After adding code into a title to record performance data to a SQL server, the interpretation of this data was needed. I created two applications to help with this. One would visualize performance data on the game world using color to represent performance. Another would create bar graphs representing things such as performance or play time per level.
Beluxed Defense is a 3D action defense game with a strong focus on humor and entertaining gameplay. You are Alt the Great, a lord, who has recently died in your castle on the top of a large hill. Your peasants have recently heard of your death and are planning to raid your castle. Your disembodied spirit is currently hovering above the castle. You can lay traps and other defenses to protect your castle from your ungrateful lowers. You can also inhabit some of your defenses and control them to have them cause more destruction.
Created by a team of only three, every developer of Beluxed Defense had to wear many hats, and I was no different. I am the producer and therefore am responsible for keeping our game on schedule. There is also, of course, the other side of the coin which has me in charge of all of the paperwork for Beluxed Defense. This production role of the game also has me responsible for being the salesman of the game. I get to show off our wonderful work to the players as well as give presentations about Beluxed Defense. As well as being the games producer I am also responsible for a significant amount of the code. This includes all of the AI, scripting, and tools programming. I have been able to create robust pathfinding for all of the peasants in Beluxed Defense. In the area of tools I have created the level editor seen below. And, finally, I was responsible for creating all of the scripts as well as the code to handle the scripts for Beluxed Defense.
This ray tracer performs reflection, transmission, attenuation, anti-aliasing, soft shadows, and creates scenes from five basic shapes including boxes, spheres, ellipsoids, polygons, and convex lenses. Some scene files along with screenshots are provided in the zip along with the program. This program is threaded and was written in C++.
You can download the Ray Tracer here. There is a readme that explains the use of the program along with a brief description of how it works.
Planetary Body Simulator
This is a three dimensional gravity simulator programmed in C#. The program simulates a solar system. The user is free to create a system of planetary bodies. Pressing the left most button on the toolbar brings up the dialog box to create your planetary body. You simply enter the properties you want it to have, press OK and it is then at your cursor. A simple left click places it where ever you desire. It is incredibly easy to create these systems, but very difficult to create stable ones without pre-calculating what and where you will place things. You can also choose between three different integrators during run time; which are Euler, Euler-Kromer, and RK4.
You can download the gravity simulator along with the source code here. There is a readme that explains all of the controls in the .zip
Heiarchical Communication among AI Controlled Agents
This is an AI demo that I created with a fellow student, Erik Osaben, for a final project in our AI class CS380. It deals with hierarchies of command and the communication between them. There are three levels of command in this program. Top top-most is the commander, then the Squad Leader, and the private. As in the real world the lower levels of the hierarchy pass important information upward, while commands come downward. This project was built using the State Machine written by Steve Rabin of Nintendo.
You can download the source code here. There is an error when you close the program, however due to the very restrictive schedule, we were unable track this bug down or to do as much bug testing and polishing as we would have liked.
Bezier Curve Illustrator
This is a small application done in approximately a week which draws a bezier curve based on the points the user enters. It was written entirely in C++. There are two separate algorithms that can be selected. The first being de Boors and the second being de Casteljau nested linear interpolation.
Beluxed Defense Level Editor
This is the level editor for Beluxed Defense. It was my first C# app. The user uses the mouse to select any section of terrain and can thusly create any level they want. You must also use the mouse to set the placement of the castle and the spawn locations of the peasants. You will soon be able to also place environmental objects such as trees in the next iteration of the level editor.