This is a selection of some programming and software engineering projects I have been involved in, it is by no means an exhaustive list.
Fullstack development (August 2018 - present)
Sandia National Labs
Fullstack development (December 2016 - August 2018)
Teamed with and consulted a variety of software development teams in 2-4 week sprints. Rapidly implemented both backend and frontend code and taught others full stack development. TS-SCI DOE Security Clearance.
Created data-dense web applications with TypeScript, React, Redux, Golden Layout, and other frontend technologies. Implemented backend services with Python that used Flask with extensions, GraphQL, and SQLAlchemy.
Provisioned OpenStack machines, networks, and volumes with Terraform and Ansible. Deployed Docker images to OpenStack using Docker-Compose. Practiced Kanban/Agile/Scrum using GitLab Kanban and issue boards.
Software Frameworks (May 2015 - December 2016)
Developed software frameworks for satellite ground systems in C++, Java, and Python. Worked with cloud enabling technologies such as Docker, Kubernetes, ZeroMQ (ZMQ), and Redis. Created an automated code generation platform in Python with Jinja2 templates that mapped software architecture models to library implementations such as Protocol Buffers, HDF5, and JSON Schemas which were used by 6 other development teams.
Enabled REST endpoints for status and configuration libraries of native services using Swagger and the XML Telemetric & Command Exchange (XTCE) standard. Project was run under the Scaled Agile Framework (SAFE). Practiced Scrum and followed test driven development (TDD), continuous integration, pair programming, and code reviews. Performed technical and behavioral interviews.
Intern (March 2012 - May 2015)
C++ Tool Development
Created 2 separate Clang C++ command line standalone tools using the LibTooling library. These tools replaced legacy tools that were written for IBM’s Rational Rose modeling tool. Some of the functionality included inheritance hierarchy analysis, AST matching algorithms, and source-to-source code transformations.
Java Algorithm Visualization
Interactive graph representations of an algorithm’s execution displayed in a Swing GUI with actions bound to toolbars, mouse and keyboard, and context sensitive actions. Also developed an Eclipse Rich Client Platform (RCP) port.
Python Web Application for Code Generation
Created a Python web application using CherryPy for HTTP server development, SQLAlchemy for ORM functionality from a SQLite database to Python objects, and Jinja2 for the HTML templating engine. This tool interfaced with existing XML documents that were used to populate the database and describe the data model that was then exported to Excel, Word, PDF, and C++ classes. This tool implemented a custom version control system to track changes to individual elements over a period of time.
IBM Requisite Pro Plugin
Created a Java tool that interfaced with the IBM Requisite Pro requirements management suite that analyzed requirements and processed various attributes in order to ensure that the database was internally consistent. Included a full Swing GUI with customizable runtime settings, and export functionality to text formats.
Masters and Bachelors in CS from UNM
The University of New Mexico - Graduate
- Machine Learning (CS 529)
- Database Management (CS 564)
- Big Data (CS 591 Special Topic)
- Robust Artificial Life (CS 591 Special Topic)
- Digital Image Processing (CS 523)
- Advanced Functional Programming (CS 591 Special Topic)
- Software Foundations (CS 558)
The University of New Mexico - Bachelors
- Artificial Intelligence (CS 427)
- Complex Adaptive Systems (CS 423)
- Advanced Functional Programming (CS 491 Special Topic)
- Software Engineering (CS 460)
- Algorithms (CS361 & CS362)
Complex adaptive systems
Advanced declarative programming
Used a high level Haskell and Lisp image processing library to do the following:
- Feature detection and extraction for calculating the monetary value of coins in an image
- Daubechies 4 wavelet
- Laplacian pyramid
- Geometric projections