Professional Bio

Here's a little about me professionally. Don't forget to check out my LinkedIn Profile as well!


I first began programming my junior year of high school, and have been doing it ever since.

Due to my engineering background (as opposed to a computer science background), I tend to approach problems differently than most other software engineers.


Design Philosophy

When I design a system, I have three main priorities that the design revolves around:

  1. Accuracy: If a system is not accurate, at best, it is useless. At worst, the system is dangerous. Thus, accuracy is the most critical aspect of a design.
  2. Reliability: If a system fails, at best, it is useless. At worst, the system could end up being a liability. Thus, reliability is also the most critical aspect of a design.
  3. Efficiency: Memory and time are very real resources with actual costs associated to them. Thus, a design that makes the most efficient use of these resources is the most ideal design. However, this efficency can NOT come at the expense of the design's accuracy or reliability. An inefficient design that is accurate and reliable is more ideal than an efficient one that is either inaccurate and/or unreliable.

With that said, here are my "10 Commandments" of design, so to speak:

  1. The best looking design is a design that works
  2. The more realistic approach is always going to be the more accurate approach, and thus will always be the better approach
  3. The more native the approach, the less moving parts. Thus, the more reliable
  4. User input is inherently chaotic. Thus, by its very nature it is detrimental to a system's reliability
  5. The more restricted a user is, the less chance they have to mess up the system. Thus, the system will be more reliable
  6. A user-friendly interface will naturally restrict users. Thus, a user-friendly interface will be more reliable than an interface that is not user-friendly
  7. While a user-friendly interface will inherently be more complex, it can be made reliable. Thus, a user-friendly interface is necessary for a reliable system
  8. 100% line coverage leads to better reliability, and thus, is the most ideal
  9. Documentation is critical. There is no such thing as over-documenting a system
  10. Rarely can a design be considered "perfect". And even rarer still will a "perfect" design remain so for long (will become obsolete)

Here's so more details about my knowledge and experience:

Languages I know:
Technologies/Software I work with:
Operating Systems:
  • Windows (primary)
  • Linux/Unix
  • macOS
IDEs
  • IntelliJ IDEA (primary)
  • Microsoft Visual Studio Code (primary)
  • PLSQL Developer
  • Microsoft Visual Studio
  • Notepad++
  • Eclipse IDE for Java
Databases
  • Oracle Database
  • Microsoft SQL Server
  • PostgresSQL
  • MySQL
  • Microsoft Access
Modeling

UML/ERD modeling:

  • StarUML

3D/CAD Modeling

  • AutoDesk Inventor
  • Sketchup
3D Printing
  • Makerbot Makerspace
  • Repetier
  • Mattercontrol
  • Craftware
Other
  • Microsoft Office Suite
  • Google Office Suite
  • Gantt Project
Skills:

Technical Skills

Other Skills

Major Projects:

Here's a list of a few major projects I've worked on:

Click the links above to learn more about each project.

For a more comprehensive list, check out my projects page.

Employment History:
Current Positions:
Previous Positions: