After graduation, I worked with my former professors to create the SFA VR Calculus app, which gives 3D tutorials of various Calculus concepts in a virtual representation of various locations on SFA's campus.
The project is implemented in Unity 5 (C#) using the Google CardBoard VR framework. Primarily, I assisted with version control (git), however I was also given various scripting tasks, mainly the custom input module for accepting gamepad input to manipulate the graphs.
This website is actually a custom jekyll theme, which is currently a work in progress. The theme is built using Semantic UI as the frontend framework, and is divided into welcome, bio, and default layouts, though more will likely follow.
The theme is still heavily tied into my own personal site, so I'll need to generalize it before I can post any source.
Team Foundation Server 2015 Migration
At Elliott, we use continuous integration builds for all of our in-house software. Previously, this was done using TFS 2012's XAML-style builds, where a XAML workflow would build the solution using MSBuild, and then call a custom assembly for deployment.
Build Status Page
Click here for a semi-functional mockup
I was dissatisfied with built in build status page, which displays all builds in the order they completed, with no option to view the latest of each build. Meaning there is no way to quickly determine if a given build script is currently passing or failing. Using the TFS 2015 REST APIs, I created my own build status page with the following features:
- The status of all builds across all team projects are visible on one page, with team projects separated into a tabbed view.
- Failed builds are highlighted and displayed at the top of the page, to immediately determine which builds are failing.
- Error logs from failed builds can be displayed in a modal view, which gives a quick overview of what might be causing the build to fail.
- Build entries have links to the definition, the latest build, and the relevant changeset.
Perhaps the best feature is a carryover from a previous build status page, written before I started: a database is maintained with the latest "breaking" changeset, i.e. the first changeset in the latest line of failed builds. Using this database, failed builds display not the changeset that queued the latest build, but the changeset that actually broke the build.
The new build status page is implemented in Knockout.js, using jQuery ajax to call the TFS API, with Twitter's Bootstrap framework for quick styling. More information on the build migration and screenshots of the build status page will likely be posted soon.
Compiler Project (Organization of Programming Languages)
The compiler project was a two-part lab (only the second iteration is hosted on GitHub) wherein we created a language and specified a context-free grammar, based on a simple description of the language requirements given to us. From there, we implemented a simple interpreter in two parts:
- the scanner, which reads the input programs and returns a sequence of tokens
- the parser, which reads the tokens, and runs the code line by line, generating an error list if necessary
Operating System Labs
This was a 5-part assignment spanning the duration of the semester wherein various topics related to operating system design were explored. The topics for each lab were:
- Machine/Operating System Overview
- Virtual Memory/Paging
- Process Scheduling
- File Management
To implement these labs, we had to build a simple virtual hardware program, based on the professor's specifications, and then build a simple operating system to run on top of our "hardware." The operating system itself was implemented in the higher-level language as well, though the hardware system does include an ISA, "memory" (16-bit words, 256 words of memory total), and a "hard disk." Thus, users of the operating system may run programs that actually do execute on the "hardware" system, not directly in the higher-level language it was written in.
The GitHub repository has all five versions of the lab, with each version saved as a release, including all source code and a copy of the report submitted for grading.