Nathan

Fettinger

GARMIN

2013 - Present: Component Owner - Demonstration Mode
Demonstration mode is used for product training and trade show demonstrations. It is also used extensively by internal engineers and technicians for informal system testing and feature production. Demonstration mode also helps our system benches pair with flight simulators for a fully responsive simulated cockpit.
As component owner, I am responsible for the following:

  • Develop and maintain system level regression tests to ensure releases have a very high level of quality and excellence. This includes stress testing and CPU consumption analysis.
  • Be proactive and involved in all design, coding, reviewing, maturity, and testing of the component's features and functions.
  • Point of contact for internal and external customers. This includes having detailed discussions and meetings with people having a wide knowledge base. As owner of the demonstration mode, this includes gathering feature enhancement ideas from internal divisions such as Technical Publications, Engineering, Trade Show Personnel, Teachers, and many more. I am also responsible for discussing problems with external customers, which is typically personal working for the airframe manufacturers.
  • Maintain and address issues with our system simulators and lab benches such as the Human Factors Lab. This also includes troubleshooting issues with PC to device communication, and device to flight simulator communication and compatibility.
  • Maintaining a prioritized list of issues and enhancements for scheduled and unscheduled releases. This includes scheduling, estimating the time requirements, analyzing defects for worst case scenarios, distributing work load, and much more.
  • Maintain and review documentation for internal customers and other component leads.
  • Being knowledgeable about adjacent components and understanding their roadmaps and requirements.

2012 - Present: Software Engineer - Aviation Panel Mount Displays.
Garmin Aviation creates flight decks and avionics for helicopters and personal aircraft, including experimental and sport aircraft. Garmin primarily created portable GPS units as well as retrofit avionics for existing aircraft. However, the new generations of flight decks are being installed in many OEM aircraft on the factory line.
As a Software Engineer, I am responsible for designing, reviewing, and certifying modules and software systems to support new technology and improve the capability and performance of existing functionality. This requires a lot of technical leadership and project planning since our changes must not only support next generation units, but also our current platforms. With so much complexity, I must balance many projects at once, as well as the many development tasks for each project. This includes:

  • Decompose functional requirements into well-defined tasks
  • Research fundamental problems and implements algorithm solutions that are appropriate
  • Balance quality, quantity and complexity in work output
  • Offer peer technical assessments in areas of expertise, new technologies and software designs
  • Work with software vendors to integrate externally developed deliverables into project
  • Make substantial contributions toward determination of project goal/objective feasibility
  • Offer process improvement suggestions and authors new procedures as appropriate
  • Apply good judgment in setting schedules and risk taking
  • Participate in product definition activities such as feature analysis and system tradeoffs
  • Exemplify Garmin’s Mission Statement and Quality Policy and proactively works to improve Garmin’s image and culture

After about a year of fixing issues and developing enhancements in random places, I am now focusing primarily on the system Kernel and other lower level libraries. This requires frequent interfacing with hardware teams and referencing datasheets. This also means I am responsible for debugging some hard to reproduce items that pop up every so often.

MISCELLANY

Coding Languages:

  • C/C++ - Preferred programming language, used extensively at Garmin.
  • Python - Preferred scripting language, used extensively at Garmin.
  • Java - First programming language I learned. I used it throughout school including for my data structures course. I taught myself JavaScript syntax for this web page. I also have experience writing new and reverse engineering existing Android based projects.
  • Lua - Used in many cross platform mobile projects. Used to create my first Android application.
  • MathWorks MATLAB - I used this extensively for simulations on my Thesis. I also used this for image processing and other electrical courses while in school.
  • LaTeX - I wrote my entire thesis along with other articles using this.
  • Perl - Used in school for Artificial Intelligence course.
  • Assembly - Used in school for embedded software labs. I also am familiar with ARM assembly code used in compiled code at Garmin.
  • Verilog/VHDL - Used in school for electrical engineering courses.
  • HTML / PHP - Self-taught in order to create this webpage. I also have experience with headers for IP camera manipulation and writing embedded server command scripts.
  • FORTRAN 90 - Used in school for operating systems course.

Coding Environments:

  • Visual Studio - Used extensively at Garmin.
  • CodeWrite - Used an alternative to Visual Studio.
  • AXD Debugger - Used extensively at Garmin for Kernel code.
  • Trace32 - Used extensively at Garmin for debugging purposes, both for the simulator and hardware JTAG environments.
  • National Instruments Suite - Used in school for GUI programming.
  • StarTeam - Used extensively at Garmin.
  • GIT - Used extensively, preferred SCM.
  • Boost Build - Preferred over makefiles.
  • Eclipse - Used extensively at school for coursework development.
  • Cocos - Used for multiplatform mobile development, including the automatic integration of Lua code.
  • Android Studio/Gradle - Used to develop my first android application.

Applications:

  • Microsoft Office Suite - Expert user including experience with Macros and interprogram data sharing.
  • Matlab - Used this extensively for Thesis research and simulations. Experience installing and optimizing packages for a given computer configuration.
  • Mathematica - Advanced user for the stand-alone console, constantly use the online interpreter for simple calculations.
  • Photoshop / GIMP - I have programmed and used several of my own filters and transforms.
  • AutoCAD - I learned the basics in high school. Continued periodically for fun.
  • UGS NX Suite - I learned the basics in Engineering Fundamentals.
  • Chief Architect - Used extensively in High School. I have won several awards at local STEM competitions.
  • P-Spice - I learned the basics in my Electrical Engineering Courses.
  • Spyder - I use this with Python scripts regularly at Garmin.
  • Wireshark - Used to ensure packets are being sent correctly between navigation units.

OS Administration:

  • Microsoft Windows - Versions 95 to Windows 7, including MSDOS. IT level of expertise.
  • Linux - Various distributions including Red Hat and Debian. IT level of expertise.
  • Apple OS X - Advanced user. I have only installed from scratch a couple of times.
  • Oracle Database - Familiar with database installation and performing minimal management.

Hardware & Protocols:

  • ARM Jacinto 6 Processor / DS-5 Compiler - Used extensively for work at Garmin.
  • TI MSP430 Microprocessor - Used extensively for school and many personal projects.
  • Motorola HC11 Microcontroller - Used various family chips in school labs and projects.
  • RS232 / SPI / I2C / etc - Extensive use of serial protocols and standards for chip to chip communication.
  • ZigBee / 6LowPan / Bluetooth Low Energy - Used for various embedded sensor network applications.
  • FPGAs - Experience with several training boards and projects. Created MIPS pipeline that supported 5 basic instructions.