Established Engineer

Firm foundation in solid engineering principles. Rooted in experience with aerospace circuit design and embedded software development.

2019 Engineering Degree
2019 Embedded Engineer
2020 Test Software
2020 Browser Automation
2021 I/O Circuits
2021 Rugged Testing
2022 Architecture Design
Present Dental Electronics

Earned a B.S. in Electrical and Electronics Engineering from Seattle Pacific University.

Began working full-time as an Avionics Electrical Engineer in Everett, WA.

Wrote tests in C, native to Linux, that test digital I/O circuit cards in embedded avionics computers.

Developed an automated browser interface with Python that streamlines documentation workflow.

Designed multi-protocol avionics I/O circuit cards for embedded military use.

Led testing of avionics I/O computers to stringent electrical and environmental standards.

Defined architecture for the next generation of compact avionics I/O converters using an innovative unit configuration.

Revolutionizing the next generation dental system by leading hardware and software design.

Prolific Builder

Proven skillset in full-stack development fundamentals. Demonstrated by completed projects using a range of languages, frameworks, and design patterns.

KidCal

KidCal is a smart scale designed to display real-time weight data on a local web application. Hosted on a Raspberry Pi, there are two main application components. The streaming app is written in C, while the front-end is written in React JS.

Technologies and Features

The scale is built with a Raspberry Pi, HX711 Analog to Digital Converter, and four 5KG load cells.
The streaming application, written in C, establishes a websocket connection to the front-end and continuously sends raw data read from the HX711 for display.
The Raspberry Pi reads from the HX711 using GPIO control written in C. The ADC requires a sequence of pulses to get data that is sent using a serial interface back to the Raspberry Pi.
The front-end React application receives raw data from the streaming application using the websocket. It then converts the data to the desired units and updates the display in real-time.
The scale can reliably weigh up to 30 pounds with an error of 8 ounces. The load cells are sampled at a rate of 10 Hz and displayed accordingly.
Source Code

FBRULES

FBRULES is an active social networking application built for football officials. Users post and share questions that are designed to improve knowledge of game rules. Each question has an answer and can also have sortable rule references.

Technologies and Features

Rails was used to implement both the front-end and back-end of the app. Requests are handled by a controller, which interfaces with models as needed then renders an HTML view as a response.
The app uses a PostgreSQL database to store user data. SQL interface is abstracted in Rails, so the primary task is creating the structure and relationships of each object's table.
At times, rails views were not sufficient to implement desired front-end effects. Javascipt was utilized for AJAX requests and dynamic changes like whether a question was viewed or showing/hiding answers.
Components like the responsive navbar, question cards, and dropdowns are based in Bootstrap. More involved features like reference search, dynamic question loading, and reference creation are only styled with Bootstrap.
User requests are authenticated with a unique CSRF token that is generated upon session creation. That token is attached to the HTML response which must be received for any protected request to be accepted by the server.
The user interface is a fully responsive, mobile first design. Responsive scaling and component changes are primarily handled with bootstrap classes.
All server requests are routed to a stateless controller, which renders HTML responses using the database. The only permissible requests are creating, editing, viewing or deleting an object.
Website Source Code

Command Line Chess

A shell based, fully-featured chess game written in Ruby. Note: This demo is hosted on a resource limited server and may take a moment to load. Because it is a terminal application, the text does not scale. Increasing browser zoom then refreshing the page may help with legibility.

Technologies and Features

The chess program was written excusively in Ruby. The primary objective was to get familiarized with the Ruby language in preparation for Ruby on Rails.
The chess mechanics for this game relied heavily on object oriented design. The focus during implementation was to keep objects small and light while limiting their responsibiliies.
Rspec was used for development of comprehensive test suites. The game rules are fully verified by unit tests, integration tests and system tests.
A secondary goal during development was to learn new design patterns and understand potential applications for them. Patterns used include factories, singleton objects, and a mediator.
Deployment of this application was tricky. A stable environment container was needed to reliably import dependencies used for the game display. Docker was used to create that environment and display a secure shell on the server.
Live Demo Source Code

RetroCalc

RetroCalc is a supercharged calculator built from the ground up in vanilla javascript. The engine supports use of decimals, answer carryover and multiple lines of display. It is designed to look like an original GameBoy with CSS.

Technologies and Features

All logic is implemented in javascript without the use of any libraries or frameworks. The structure consists of ES6 classes and event management.
The calculation engine uses a state machine as the primary mechanism for operation. Upon input, there is a defined transition based on the current state and type of input.
The project was styled without use of any frameworks or libaries to facilitate growth and learning. CSS flex was used for the main body layout of the calculator.
CSS grid was employed to align the placement of the buttons in the bottom half of the display.
Live Demo Source Code

Paint for Dummies

Paint for Dummies is a Microsoft paint clone. A user can select a brush size for the canvas, change colors, and use an eraser brush. Life is like a box of chocolates.

Technologies and Features

Like RetroCalc, a main objective with Paint was to facilitate learning of javascript. This application uses vanilla javascript, leaning heavily on ES6 syntax.
All styling is done with pure CSS. The layout is implemented with flexbox.
Paint was used as a vehicle to practice good programming practice. For this project, emphasis was made to utilize principles from "Clean Code" by Robert Martin. Primary goals were to create good names, limit function scope, and format consistently.
Live Demo Source Code

Ro Sham Bo

Ro Sham Bo is a rock paper scissors game written in javascript. Users can select their move in the game to play against a random computer move. The game keeps score of a first to five match. The styling and positioning use pure CSS.

Live Demo Source Code

Methodical Tester

Deep understanding of the value provided by well-designed tests, reinforced by avionics design experience. The FBRULES and Chess projects utilize comprehensive test suites that promote ease of refactoring and quality code. Both projects show competency with unit and system test development.

Pragmatic Planner

Experience in program management has fostered an embrace of thoughtful planning for cost, schedule and requirements. Most personal projects are managed with a lightweight Kanban board similar to Scrum, which tracks backlog, in progress and completed tasks.

Lifelong Learner

Strong desire to continue learning and growing through a career. Consistent progress and willingness to take on new challenges. In 2021-2023, the focus was on mastering fundamental full-stack technologies. Moving forward, the goal is to extend knowledge to additional modern frameworks.

Learned in 2021-2023

2023 and beyond

Effective Communicator

Years of college football officiating experience has taught a unique ability to diffuse tense situations. Field work has translated into the workplace where clear and concise breakdown of complicated concepts is vital.