Driven software engineer with mechanical engineering expertise able to build end-to-end solutions that encompass both software and hardware design to create seamless interaction between them.
C/C++
Java
SQL
Javascript
Bash
HTML & CSS
Creating an Android application using Android Studio, C++, Java, and SQL. It associates bar-coded locations and items to track them. It downloads book and CD details from the web to quicken data entry. Application data is stored in a SQLite relational database.
Creating CAD software for Linux using the Vulkan API and GLFW2. Researched and experimented with various constraint handling techniques. Determined dimensional values and relationships by solving a system of non-linear constraints.
Created a dynamic report generation tool for creation of documents from SQL databases. Available fields were imported from database metadata. WYSIWYG editor created a document templates. The templates were used by a batch module, and applied to a selection of database records resulting in printable documents.
Used in the report generation tool, I created a parser that converted text equations into a syntax tree. Defined a grammar used to generate a lexer/parser. Assembled polymorphic trees of operations to solve for report fields and filters.
Implemented a Gitlab server, running on a small computer, running server Ubuntu 22.04. This server is used to manage remote builds and tests on the checked in software. The automatic builds are executed when new code is pushed to the server.
Automated build and testing. Migrated my existing GIT repositories to a Gitlab instance installed in a CentOS virtual machine that manages the GIT repository and build process. Configured agents that spawn on another machine to build Linux binaries and executes tests.
Implemented a scene graph based application prototype. Relationships were enforced between nodes using generated C++ factory objects. The source for the factory functions was included in the nodes to provide a single code base for the code and generated factories. Scripts were integrated into CMake that ran automatically when functions were added or modified.
Designed and assembled circuit boards, and wrote firmware for an electro-mechanical platform. PCB schematics and layouts incorporated data-sheet reference designs. Skills used included inter-component serial communication, board layout, SMT re-flow soldering, firmware programming using C, and circuit debugging. Wrote firmware that saved measurements to an SD card. In situ measurement data drove the project mechanical design phase.
Created an electrical instrument that duplicated a signal while adding a phase shift. The variable all-pass filter eliminated the need for additional signal generators reducing the cost of a research project.
Enhanced a pre-existing circuit board design to resolve IO conflicts. Analyzed the original design, root caused errors, rerouted traces, wrote C firmware and assembled a new board. The deliverable was used by a researcher to successfully complete their project.
Actively contributed to open source projects. Found and notified Khronos of a C header file conflict. Traced build errors relating to an OpenGL ES wrapper API that used a header file downloaded from Khronos. Khronos confirmed and corrected the error.
Debugged a TrueType font triangulation API (TTFTriangulator). Isolated a problematic character and determined the cause using GDB. I devised a fix and submitted it to the developer who reciprocated with an corrected function.
Scripted a graphical test suite for a non-linear solver. Wrote a C++ program that generated image pairs for expected/actual results of constrained 2D sketches. A PDF report was generated to quickly validate the solver.
Automated resistivity-type sensor tests using LabVIEW for my Master's Thesis. LabVIEW controlled a four point probe setup. Equipment configuration and data collection were encapsulated in virtual instruments. LabVIEW provided real-time feedback using graphs. Measurements of environmental and sample sensors were recorded to files for post-processing.
Implemented a remote experiment that demonstrated Young’s modulus at UMass Lowell. LabVIEW routines were created to position a camera and script a 6-axis robot arm. The arm obtained and positioned a sample for optical measurement and a tensile test. Measurements were recorded for download.