I am Steve Phillips, a professional software/firmware developer and a hobbyist game developer.

I have been writing code professionally since 2006. I began as a LAMP developer, working with those tools and the related ecosystem of JavaScript, HTML and CSS. In 2011, I moved outside of this stack and explored nodejs and Python. In 2012, I switched to software/firmware development using C#, VB .NET and C.

As a software developer, I work with .NET and Qt. My preferred language is C#, although I work heavily with VB .NET. I use C++ occasionally for embedded systems or cross platform projects.

As a firmware developer, I write C for PIC microprocessors. I have experience with 16-bit MCUs and have utilized CAN, RS232 and USB HID communications protocols; digital and analog sensors; DAC and PWM outputs. I have extensive experience with high precision research equipment, mainly in fields related to mass measurement, gas analysis and activity detection. 

As a game developer, I primarily use C# and the XNA framework. In the past, I used the cocos2d-javascript framework to create a browser based space shooter. 

My high-level development style tends to favor rigid OOP principles with a focus on loose coupling and high cohesion. I am a follower of Design Patterns: Elements of Reusable Object Oriented Design and frequently apply the patterns in that book to my code to keep it maintainable, reusable and readable. In addition, I often analyze my code through the principles in Refactoring: Improving the Design of Existing Code and refactor as needed to keep my work stable.

My low-level development style favors finite state machines and functional programming, since these styles tend to have fewer unexpected situations when following a very well defined directed graph state map. I am familiar with algorithmic theory and try to optimize algorithmic order of growth, both for processing speed and memory usage.

Active Projects

  • Armadillo, the codename for a Strategy RPG made in XNA.
  • FusionC, a C# port of my Javascript space shooter Fusion.
  • A turret, driven by an Arduino controller and a Wii nunchuck, using a Nerf Rayven CS-18 gun.
  • Signals, a collection of C files that provide signal smoothing, search and sort functionality.

Past Projects

  • DOMi, an extension of PHP's DOMDocument, DOMXpath and XSLTProcessor aimed at creating XSL driven websites.
  • Visual77.com, my former portfolio site.
  • Fusion, a browser based game that is somewhere between Space Invaders and Tower Defense. 
  • Indigo, a PHP 5.4 framework