Test Innovators

Test Innovators

From the start of 2020 to the end of 2021, I worked at Test Innovators as a senior developer.

My responsibilities were quite broad, being involved in pretty much every aspect of their web applications and backend server infrastructure; I implemented new features and helped to build whole new applications, authored and safely executed MySQL queries to perform migrations or deliver unusual data the operations staff needed, and also worked with AWS to configure their services from time-to-time.

Their infrastructure was originally built using CoffeeScript and AngularJS, with Express handling their backend APIs. Each product they offered was originally its own server that handled everything in isolation from their other products. When I left, they had a unified authentication system and unified admin tool with a lot more data sharing between their products.

I was hired specifically to assist in a transition to React or Vue, as AngularJS (the original one) was approaching end-of-support, but the time to perform this big rework just never materialized while I was there. Disappointing, but sometimes that's how it goes.

Here's a list of notable accomplishments I played a significant role in:

Grunt to Gulp Build-Tool Transition

I led the transition of the core build system from Grunt to the more flexible Gulp.

I recall it being quite challenging and interesting to funnel so much and so many different kinds of source files into a final artifact. Since Gulp allowed task parallelization, build times were significantly reduced.

CoffeeScript to JavaScript Conversion

When I came on board, they were trying to transition from CoffeeScript to JavaScript in preparation for the React/Vue transition; at the time, CoffeeScript's JSX syntax was still not stable, not to mention that most popular tooling paid no mind to CoffeeScript.

The Teacher Tools, a tool that let teachers administrate and view the progress of their students, had already been converted in a naive-but-straightforward way, resulting in an ECMAScript 5 code-base that felt very artificial and clearly transpiled. Devs tidied up the code to make it more readable to others as they touched it, adding a bit of overhead as they worked to complete their task.

When I was given the task to transition the web app's backend code, I used a more advanced code transpiler with some custom-made AST transforms to produce a more organic result in ECMAScript 6, requiring significantly less cleanup. I was actually very proud of the result; it just worked! Was quite the jarring Git commit, though, and there is no doubt still a lot of code that I would get git blame'd for over there.

Frontend Design for the OpenID Connect Service

I spearheaded the design of the core templates and styling for their OpenID Connect system that handles sign-on with their own account system, as well as third-party identities such as Google.

Unlike many of their other services, the OIDC service was a dumb app, delivering static HTML generated from templates; this was largely a limitation of OIDC itself, which relies heavily on standardized routes that each have a very well-defined purpose. It utilized Bootstrap with some custom LESS sprinkled in for style.

I also implemented a great many of the pages delivered for these different routes; each one was designed to be responsive, supporting everything from desktop to mobile phones. It stood out as being the first user-facing service with a responsive design, something we intended to expand on during the React/Vue transition.

It looks like the design I originally created is still in use, though the background has since been changed from their brand's beautiful blue hue to a simple white.

Frontend Design for the Unified Admin Tool

Before OIDC, each product had its own isolated set of users and own admin tool. After OIDC, we had the opportunity to unify users across the different products and administrate almost everything related to users and organizations from a single tool.

I did a lot of the design and bootstrapping for this new admin tool and a implemented a number of the tools themselves. This all helped operations get a much broader view of how users and organizations were using their products and reduced tedium having to hop between multiple sites to administrate subscriptions or user information.