Randy Cox

Front-End JavaScript Application Architect and Developer

 contact@randycox.dev  317‑333‑1729

I'm great at...

Bringing order to a chaotic codebase

I love cleaning up bad code—analyzing, refactoring, standardizing, and documenting. I can turn an ugly codebase into one that is understandable, maintainable, testable, and efficient.

  • Refactored an unmaintainable JavaScript application into a modular system with useful developer documentation and broad test coverage. The new architecture was so successful that it was adopted by several subsequent projects within the company. (OneAmerica)
  • Defined a design system of standardized user interface components to eliminate massive CSS duplication and enable developers to add new pages without having to write additional CSS. (Autobase)
  • Presented my process of analyzing code at two tech conferences in a talk called "Unlocking the Mysteries of an Unfamiliar Codebase."

Creative problem solving

Having worked on many kinds of projects in my career, I apply ideas and lessons I've learned in different ways to solve new challenges.

  • Assisted museum staff to redesign the electronics in an unreliable interactive museum exhibit. The new "fail safe" modular architecture kept the exhibit operating as a whole even if an individual part failed. (The Children's Museum of Indianapolis)
  • As the first instructor to have a class of more than 25 students, I devised a strategy to scale up to 120+ students with a small staff of teaching assistants while continuing to give each student personal attention. (Kenzie Academy)

Frontend application architecture

Establishing a solid architecture takes extra time at the start of a project, but it allows the development team to move much faster in the long run.

  • To avoid problems of tightly-coupled code, I used custom JS events as a way for modules to communicate with each other. Only much later did I learn that I had recreated the publisher/subscriber design pattern. (Compendium Blogware)
  • By teaching my team to plan the interfaces before they started coding, developers could create and test their modules in parallel. Then when the parts were brought together at the end of the sprint, the whole system worked with minimal fuss. (Autobase)

Teaching and mentoring

The measure of my success is largely based on how I can help other people succeed. I always look for ways to integrate my passion for teaching in every job. Ultimately, this led me to become a full-time instructor at a coding school.

  • When coworkers wanted to learn JavaScript, I took the initiative to teach weekly lessons during our lunch break. These "JS Lunch" sessions included a demonstration, group practice, and a homework challenge. (Compendium Blogware, informally)
  • As the front-end development team lead, I established weekly professional development sessions. Each week a different member gave a short presentation on a topic of their choice, followed by group discussion. Junior developers practiced their presentation skills, and everyone learned something new. Two other team leads borrowed the idea for their own teams. (Autobase)

Technical Experience

Programming and Markup
JavaScript (ES6), HTML5, CSS3, SVG, Markdown, PHP, some Python and C#
Frameworks and APIs
Backbone, Marionette, jQuery, Angular, Underscore, Handlebars, OOCSS
Development and Build Tools
NPM, Git, Gulp, Grunt, ESLint, JSLint, Browserify, RequireJS, Subversion, Balsamiq Mockups, Jenkins
Testing Tools
Mocha, Chai, Sinon, Istanbul, The Intern, Jasmine, Karma, Protractor, PhantomJS
Web and Application Servers
Node.js, Express, Apache
Databases
MySQL, Oracle, Microsoft SQL Server
IoT Hardware
Arduino, Raspberry Pi, Adafruit Circuit Playground Express

Employment History

Kenzie Academy at Southern New Hampshire University

July 2019 to present

Role
Senior Instructor of Software Engineering / Senior Software Engineer
Technologies
JavaScript, HTML, CSS, Git, Markdown
  • Taught web development and programming fundamentals to beginning coders in class sizes in excess of 120 students.
  • Provided individualized help to struggling students and practical feedback through code reviews of student assignments.
  • Authored new curriculum content, recorded and edited concept videos, and devised new programming challenges.

OneAmerica

March 2015 to April 2016 and May 2017 to June 2019

Role
JavaScript Developer
Project
Insurance agent website
Technologies
JavaScript, Backbone, Marionette, Underscore, Handlebars, HTML5, CSS, Git, Gulp, Browserify, ESLint, The Intern, Mocha, Chai, Sinon, Istanbul, Jenkins, PhantomJS
  • Designed and implemented a JavaScript application architecture that is modular, testable, and scalable.
  • Set up Jenkins, a continuous integration (CI) system, to automate building and unit testing front-end code changes.
  • Defined a staging, testing, and deployment process to satisfy the software integrity compliance safeguards of the tightly regulated insurance industry.
  • Produced reference documentation to help future developers learn, maintain, and extend the front-end code.
  • Established coding standards and performed code reviews to ensure a high-quality codebase.

OneAmerica

January 2014 to March 2015

Role
JavaScript Developer
Project
Retirement account website
Technologies
JavaScript, Backbone, Marionette, Underscore, Handlebars, HTML5, CSS, Git, Grunt, RequireJS, ESLint, Jasmine, PhantomJS
  • Refactored existing Backbone code to improve maintainability, simplify debugging, and optimize page load performance.
  • Introduced unit testing to JavaScript codebase using Jasmine.
  • Collaborated with middle-tier developers to define data contracts for web service endpoints as new features were added each sprint.

The Children's Museum of Indianapolis

July 2017 to December 2017

Role
Arduino and Python Developer
Project
Pit Stop interactive exhibit
Technologies
Arduino, Python, Raspberry Pi
  • Collaborated on a new modular hardware design to simplify maintenance and minimize downtime for an interactive game/display.
  • Implemented the main system controller in Python on a Raspberry Pi to interface with Arduino hardware and to control a graphical timer display.

Cook Medical

May 2016 to April 2017

Role
JavaScript Developer
Project
Sales rep web application
Technologies
JavaScript, Angular 2, Karma, Protractor, HTML5, CSS, SVG, ESLint, NPM, Git, Gulp, Jenkins
  • Lead a small agile development team to create a new web application from the ground up.
  • JS codebase achieved 90% unit test code coverage to ensure correctness and to allow code to be refactored with confidence as the application feature set evolved.
  • Designed user interface mockups based on feature descriptions from the product owner to establish application workflows and look-and-feel options.

Autobase / Dominion Dealer Solutions

February 2011 to January 2014

Role
Lead JavaScript Developer
Technologies
JavaScript, HTML, CSS, jQuery, RequireJS, ASP.NET MVC3, C#, Razor, Git, JSLint, Appcelerator Titanium
  • Led a team of seven front-end developers to build a large SaaS CRM and car dealership management application. Web pages were rendered on the server using C# with Razor templates, with client behaviors implemented as custom JavaScript modules and jQuery.
  • Designed a publisher/subscriber JavaScript architecture, implemented as self-contained modules and custom jQuery plugins.
  • Defined the team's JS, CSS, and HTML coding standards which served as the basis for division-wide standards.
  • Migrated the site's monolithic page-specific stylesheets to a set of standard styles using OOCSS principles. The new stylesheets were a fraction of the total size of the old ones, and they allowed developers to add new pages without having to write additional CSS.
  • Developed an Android and iOS application that integrated with the CRM system to notify salespeople when new leads come in. The app was written using Appcelerator's Titanium platform and leveraged Urban Airship for push notifications.
  • Screened and interviewed potential UI developer candidates. Management relied on my hire/no-hire recommendations that helped to build a very strong development team.

Compendium Blogware

July 2008 to January 2011

Role
Senior UI Engineer
Technologies
JavaScript, HTML, CSS, YUI, Ext-JS, CKEditor, Smarty, PHP, MySQL, Subversion, JSLint, Photoshop
  • Sole front-end web developer for Compendium's SaaS blogging application. Responsible for everything from mockups and prototypes for new application features, through the design of the front-end architecture, to implementation and testing.
  • Developed server-side PHP code with Smarty templates to generate front-end application pages.
  • Designed an event-driven, modular JavaScript architecture to simplify the reuse of large user interface components.
  • Systematically improved the existing JavaScript codebase to reduce global namespace pollution and bring the software in line with a more rigorous JavaScript coding style.
  • Evaluated and recommend libraries, tools, and techniques for adoption into the product.

T2 Systems

December 2004 to July 2008

Role
Senior Web Developer
Technologies
JavaScript, VBScript, HTML, CSS, C#, ASP.NET, Oracle 10, PHP
  • Developed customized permit sale and citation payment websites for university and municipal customers of T2's parking management software. Most websites required integration with a third-party credit card processing gateway, the customer's existing database systems (like PeopleSoft or IBM's Informix), and LDAP directories in addition to T2's Oracle-based parking application.
  • Provided bug fixes and incremental improvements to the website template.
  • Developed demo parking websites for the sales team to use in presentations to potential customers.

Interactive Intelligence

October 2003 to November 2004

Role
Software Engineer
Technologies
Visual C++, Visual Basic 6.0, Onyx CRM
  • Analyzed high-priority bug reports and implemented hotfixes for the core “telephony services” component of a digital telephony system.

Interactive Intelligence

September 2001 to October 2003

Role
Support Engineer III
Technologies
Visual C++, Visual Basic 6.0, JavaScript, Onyx CRM
  • Provided code-level analysis of customer issues for a digital telephony system used primarily by call centers.
  • Specialized in supporting a COM API for third-party integration and custom development. Created example applications in C++, Visual Basic, and JavaScript.

NSI Software (now Double-Take Software)

March 2001 to August 2001

Role
Software Engineer
Technologies
Visual C++, MFC, STL, Windows 2000 Advanced Server with Cluster extensions
  • Maintained a key client application in NSI's flagship Double-Take product.
  • Corrected programming defects and designed and implemented product improvements.
  • Implemented special features in the product installer.

Truevision / Pinnacle Systems

January 1998 to March 2001

Role
Software Engineer
Technologies
Visual C++, Win32 API, COM, JavaScript, ASP, Microsoft SQL Server, InstallShield Professional
  • Developed, documented and supported the SDK for Truevision's TARGA 2000 and 3000 broadcast videographics boards.
  • Designed and implemented Truevision's first developer support website.
  • Maintained product installer and produced daily builds. Tested official product builds and installers for release.

Education

Taylor University
Bachelor of Arts in Computer Science

Conference Speaking

Unlocking the Mysteries of an Unfamiliar Codebase
Presented at Nodevember 2017 and Indy.Code() 2019.

Top Strengthsfinder Themes

  1. Ideation
  2. Adaptability
  3. Developer
  4. Relator
  5. Intellection