Software Developer • Electrical Engineer • Inventor
I've designed circuit boards with sophisticated control and monitoring capabilities, complex interconnected digital platforms, and dozens of custom user interfaces. I've also created custom test equipment to enhance the testing of our products, including test fixtures, and even a precision multi-pulse generator for granular control over synced, strictly-timed pulses.
I've written code in assembly language for microcontrollers, graphical user interface programs to control amplifiers with serial interfaces, and a host of small programs and scripts to manage the design complexities of our products. I've also developed code for combinational logic devices (CPLDs, FPGAs).
In addition, I've written servers with extensive back-end logic for Ethernet-based interfaces, websites, and API scripts able to interface with common programs and web applications.
Combining these skills lets me exercise my creativity with technology, particularly with inventing, which is something I mostly do for fun.
In general, I prefer making my own solutions to fit my needs, rather than adjusting my needs to fit a pre-existing solution.
Creativity: Programming is as much of an art as it is a science. Solving complex problems allows one to exercise a degree of creativity in how they approach the problem. Implementing this solution is where the 'rules' come more into play.
Problem Solving: Problems are obstacles, and solving them removes them as obstacles. For many, there is a sense of satisfaction and joy when an obstacle is overcome. For me, problem solving is something that I enjoy immensely.
Divide and Conquer: A classic approach within programming, and for problem solving in general, is to break down a problem into smaller pieces and tackle them one at a time. I use this approach for any project I might be working on, programming or otherwise.
Attention to Detail: Finding a solution to a complex problem can quickly go wrong if one approaches it sloppily or frequently makes careless mistakes. Taking a few extra minutes to focus on the current task, and carefully double-checking the work, can save hours of troubleshooting later on.
Troubleshooting: This skill seems to be underrepresented in training and education, but is of vital importance in the field. Knowing some basic troubleshooting techniques can vastly speed up the process of identifying and then fixing problems.