Screenshot of Ghostbusters die roller

Ghostbusters Dice Roller (2020)

While learning Angular, I created this Ghostbusters ID Card/Dice Roller to practice my skills. The Ghostbuster Roleplaying Game from West End Games in the 1980s uses an ID Card for player information--this replicates that format, providing some guard rails for assigning statistics, and adding die rolling functionality.

Technologies: Angular, HTML, CSS, JavaScript, FlexBox

GitHub Repo
Legs of a giant Augmented Reality voxelated chicken in Grand Circus Park

AR.js Demo (2020)

When I presented about Augmented Reality and the AR.js library at the March 2020 Rochester Full Stack meetup, I created this project as a demonstration and proof-of-concept.

Technologies: HTML, JavaScript, AR.js

Website (won't show anything unless you're on a mobile device near downtown Rochester MI or Grand Circus Park in Detroit MI)
GitHub Repo
Arduino Robot Car

Node/xAPI Robot Car (2019)

For a presentation on the Internet of Things (IoT) at the Rochester Full Stack meetup, I took an Arduino robot car kit and added a Raspberry Pi running a web server and controlling the robot through the Johnny-Five JavaScript Framework. On a local network, you can use a web browser to drive the car.

A couple months later, we used the car at the May 2019 xAPI Party to send xAPI learning analytics data about driver performance. Along with a colleague and conference attendees who dropped in to the workroom, we defined data we wanted to gather about the experience and then added code to send those statements to a Learning Record Store. By the end of the afternoon, it was working and attendees could take a driving test. You can read more about the project in Learning Solutions Magazine.

Technologies: Node, Express, Johnny-Five.js, xAPI (TinCan), HTML, CSS, JavaScript, Raspberry Pi, Arduino

GitHub Repo (note that API (xAPI/LRS) authentication information was shared with event attendees and then turned off; it's intentionally included in the repo for demonstration purposes)
Screenshot of website (2018-2019)

When I joined TorranceLearning, I built a web application around an existing solution they had to send richer xAPI learning analytics data from Articulate Storyline. The tool allows non-coders to build xAPI statements they want and copy/paste the code to produce them into their authoring tool; they can also save and manage their statements through the web application. My contributions included the entire C# backend, designing and implementing the Microsoft SQL database, and some of the front-end work, setting it up and maintaining it on Amazon Web Services (AWS), and creating documentation and videos for users.

Technologies: C# .NET, Entity Framework, Identity Framework, HTML, CSS, JavaScript, AWS

Screenshot of xAPI Labyrinth and data in Learning Record Store

xAPI Labyrinth (2017)

In the Fall 2017 xAPI Learning Cohort, I led a team that did a proof-of-concept of a Virtual Reality experience that sends xAPI statements about user performance to a Learning Record Store. In C# in Unity3D, I built a set of objects to send simple xAPI statements--at the time, C# in Unity3D didn't support full object serialization so existing xAPI libraries wouldn't work and the GBLxAPI project didn't yet exist--then I built a VR demo in Unity3D for HTC Vive using SteamVR.

Technologies: Unity3D, SteamVR, xAPI (TinCan), C#

GitHub Repo
Blank placeholder

Mileage Tracker (2016)

I built this web application as an extended example for Java bootcamp students, similar in scope to their final projects. It includes a mySQL database and allows users to create accounts, log, and track their vehicle mileage, using Google Charts to display trends.

Technologies: Java EE, Spring MVC, Hibernate ORM, JASYPT encryption, mySQL, Google Charts, HTML, CSS, Bootstrap 3, JavaScript

GitHub Repo

Robocubs Interactive Kiosk (2015)

As a coach for the FIRST Robotics Competition Team 1701 Robocubs, in 2015 I used Articulate Storyline to create interactive media for the team. The project ran on an iPad we had mounted on our pit area at competitions so others could learn more about the team and our robot, allowing easy navigation through different topics if we weren't in the pit.

Technologies: Articulate Storyline