Updating my portfolio and skills

Over the past few months, I have been involved in a number of new projects, as well as hardly touching older tools. I haven't had a chance to update my blog, and don't plan to write a full summary for each subject (except the Arduino turret), and instead will just give a brief overview. The Arduino turret will be covered in much more detail once I have it completed.


Recently, I wrote firmware for a piece of hardware that my company is unveiling. This uses the PIC18 for the microcontroller and makes use of two sensors and one effector. It was a tricky project to do since the effector, a DC motor, could be damaged during operation. I had to closely monitor the motor to watch for jams and respond accordingly, while also watching the sensors and CAN bus for activity.

I learned a tremendous amount about firmware development and finite state machines. The project is complete and in maintenance phase at this point, and I will be very happy when the first units ship later in the month. The project was rocky at first, but the next one will go much more smoothly.


As the lead software developer at the company, VB .NET has become my primary language. While I highly enjoyed it at first, I have come to see it as sloppy and verbose. One of my current goals within the language is to consolidate a diverse range of software into a smaller number of highly coherent packages. Certain software forks were created to respond to a small set of customer needs, and need to be re-integrated into the core without disrupting any customers.

While I dislike VB .NET's overall structure, it does get the job done and allows me to quickly create full featured software for the customers. I have not yet written a program from scratch in VB .NET, and likely never will. I prefer C# and will use it for new projects.


While VB .NET is the primary language in use at the company, the future plans involve a migration towards C#. As stated above, the current VB .NET focus involves consolidation. Once the software is sufficiently consolidated, a move towards C# will be initiated. I prefer C# over VB .NET tremendously. It is cleaner, less ambiguous and much more concise.

In addition to this work transition, I have been learning XNA 4 with C# for my next game project and created a Pong clone. I am taking the lessons learned from that clone to create a Tetris clone, and then I will move onto my real game - a Strategy RPG in the style of Disgaea or Shining Force.


I rarely use PHP these days. While I still do light maintenance to SableOPS, my focus is on software and firmware. This is a trend that is likely to continue, to the point that I will eventually not use PHP at all. I cannot say that I miss PHP. The more I use other languages, the less I can tolerate how sloppily PHP is designed.


I received an Arduino as a gift for Christmas and fell in love with it. I am in the process of building a Nerf Rayven CS-18 turret. I have all of the circuitry in place to use a Wii Nunchuck to control the turret's position, spool up the motors, and use a servo to fire the gun. I am still working on the hardware to mount it all together.

I also used an Arduino to make an early prototype of the aforementioned new product. The prototype did not use the CAN protocol, but was otherwise a functional example of how the final product would work. I will use Arduinos more often in the future for prototyping purposes, and hopefully will eventually incorporate CAN into these prototypes.