Dominick Johnson

Portfolio

Basin Now

Project Story

The Basin Now website is probably the largest site I have done in terms of user base and raw site content. This proved a challenge right from the get-go, when I had to extract all their old data from their previous site. Before I built the site, they had built it themselves using Squarespace. Unfortunately, Squarespace did not provide a way to export their articles in any form that would be useful for the new site. I first had to build a web scraper in Python which could not only pull all the thousands of articles off the existing site, but to clean up the HTML for inclusion on the new site. I also had to write it in such a way that it could continue to update the scraped data during development of the new site, as the existing site was still in active use.

After the site went live, it also needed to be updated frequently. I built a custom CMS which allowed them to post articles and so forth without my assistance. However, entirely new pages and sections of the site were sometimes required which I had to build for the client. I also continued to provide updates to the site, backporting new features that I had added to my framework.

Vernal Cinemas

Project Story

The Vernal Cinemas website needed one very important feature: integration with the theater’s ticketing system. They wanted something that would automatically update with the new movies coming out, and which would allow users to buy tickets and choose seats online.

I spent hours pouring over the somewhat obscure, and often inaccurate, documentation provided by the vendor of the theater’s ticketing service. I tested API calls and wrote abstractions and caching mechanisms over the top of them. I worked to integrate the ticketing service with an entirely separate payment processor. I also helped the theater set up port forwarding on their router to allow the website to talk to their ticketing service.

Cipher

Project Story

This was my first serious programming project. Of course, I’d written others before it, but this is the first thing I built that was actually something someone else might want to use.

On of the early things that got me into programming was cryptography. Cipher was an implementation of several historic or classical ciphers, from a basic Caesar CIpher all the way up to the German Enigma code used in World War II.

This is an old project, and some things have broken since I originally wrote it. I spent a little time in early 2021 fixing the biggest and most glaring bugs, ut there are still some issues. However, despite it’s somewhat rough edges I am still quite proud of it. It stands as a testament to how much I could accomplish, even back in 2013 when I was just starting out.

Howcroft Field Service

Project Story

The Howcroft project was more than just a website. Yes, of course, it was a website. However, they also wanted an employee portal with a work ticket database. This work ticket database allowed employees to track work they had completed, submit hour worked on projects, and track parts or other charges for each work ticket. THe system needed to have multiple different types of tickets as well. For example, a mechanic ticket was not the same as a trucking ticket. The company also used the database to track jobs by employee, allowing them to be more efficient at doing payroll.

The site required some features other than what could e accomplished with PHP and Javascript alone. I needed a good way to generate PDF files for each work ticket. I decided to use wkhtmltopdf. In order to make this work, I built a custom docker image that not only contained the website, along with apache, but also wkhtmltopdf so that I could call and use it as a subprocess.

Project Spiderman

Project Story

Project Spiderman is an internal tool used by my employer. As such, I can’t provide a link to it. However, I can still brag about it.

Project Spiderman was designed to take the place of an existing tool which we called Batman. Batman was an old, slow, messy system which we used to track sales, work orders, invoicing, and so forth. In addition to being quite antiquated, Batman also lacked features that would have been really helpful to the company. For example, we often quoted custom computer builds to customers. Before, looking up parts and putting together a quote was an arduous manual process. With Spiderman, it became just a couple button clicks

One challenge with Spiderman was that it needed to communicate with Batman. We wanted to start using some of Spiderman’s features as soon as they were developed, rather than wait for it to be finished before we could start using it. Having two separate databases for things like sales reports was unacceptable, all such data from Spiderman had to be fed into Batman’s database.

  • Python
  • Flask
  • CouchDB
  • MySQL