Career Profile
I’m Josh — a full stack software engineer with over 10 years of experience in the web hosting industry. I specialize in web application development with Ruby on Rails and WordPress. I have a strong background in Linux systems administration and can oversee a project from its inception to deployment. I enjoy solving challenging problems and helping other developers through mentoring and Open Source Software contributions.
Work Experience
Work with the Uptime team maintaining performance and security on ThemeForest, one of the world’s largest Rails sites by traffic. Duties include bug-fixes, performance improvements, regular platform and dependency updates, responding to on-call issues, and general support. Previously worked with the Hosted team maintaining the Rails billing system acquired from Pressed in 2017
Worked with the software and cloud engineering teams to build and maintain staff, partner, and customer control panels used to power managed WordPress hosting services. Was responsible for maintenance and implementation of new features of our Rails applications and libraries that integrate with the hosting platform and WordPress. Worked closely with CTO and senior software engineers to help review and interview candidates for employment. Frequently contributed to open source projects used or created by Pressed engineers.
Worked with the software engineering team to build and maintain several internally used systems for staff and customers to manage web hosting services. Was responsible for maintenance and new features implemented for our legacy billing system, Synco, and its replacement, Helix. Oversaw the successful migration of several thousand customers from WHMCS systems into Helix. Regularly assisted other engineers with on-boarding and code reviews. Was the project lead for our Website.me product and oversaw its initial development and deployment. Frequently contributed to and helped manage our open source projects on GitHub.
Led development for several key projects for ViaTalk and DotBlock (both subsidiaries of HostRocket). Was responsible for maintenance and security updates for the ViaTalk customer/staff control panel; the web application powering Ennouncement.com; the external order form used for DotBlock; and DotBlock’s v1 iPhone application.
Provided L2 technical support for clients and the Technical Support team via phone and ticket. Implemented new features for the VoIP platform. Implemented several internal systems used by management to track support calls and tickets. Implemented the ViaTalk PBX from the ground up, an application responsible for handling hundreds of daily support calls for ViaTalk and its sister company HostRocket. Was responsible for bringing up new servers and maintaining health of the VoIP network, including responding to emergencies as part of the on-call team.
Professional Projects
The Hosted Orders API is a Rails-based REST API used to create new subscriber and web hosting services in the Hosted billing system. This API is primarily designed for consumption by a React-based order form. I designed the full API and oversaw its release.
Author Managed Designs is a project that allows WordPress theme authors on Envato Hosted to manage the state of their theme that is for sale. The author can sign in to a limited version of the Hosted Build Control Panel and provision demo sites with their themes. They can customize the site and then export it for use on our hosting platform. I helped with the release of the control panel and developed the archiving system.
Bender Builds is a project to automate the installation of WordPress themes and plugins for customers of Envato Hosted. It allows administrators to quickly bundle themes and their dependencies, providing near-instant website setup for new customers. On the backend, Capybara simulates a WordPress installation, including plugin installation and general configuration. The Hosted billing system coordinates the build process for each theme. I worked on a large portion of the backend project responsible for packaging the themes, and I implemented integration with this system into the Hosted billing system.
I developed the Rails application for LRT Sports, a website that helps student athletes through the college recruiting process. My work involved replacing an existing coach and school search directory with a fully custom one. The Rails application is responsible for pulling information from a third party API for coaches and schools, and formatting the date for use in student searches and ratings. Recently, I implemented a new recurring subscription service.
MWP Admin Impersonation allows staff and customers to securely sign in to WordPress Admin from the Envato Hosted Rails applications – without the need for a password. I created the WordPress plugin that handles authentication and oversaw its deployment to the Hosted platform, and also integrated it with the Hosted Rails applications.
We use Let’s Encrypt to provide SSL support for customer websites at Pressed. Record keeping and provisioning certificates is handled by a Rails-based billing system. Certificates are sent to the hosting platform for installation on customer websites. I helped with the initial implementation and deployment.
The Pressed MWP Order Form is a white-labeled form available to different brands. It allows their customers to order Managed WordPress hosting. Customer information is stored in a Rails billing system and used to provision their websites. I was a lead developer involved with several different implementation of the order form over the years, including the front end UI and the backend provisioning process.
The Pressed Partner Panel allows brands to manage their web hosting customer and sales with Pressed. It includes a variety of reports based on customer data, protected when necessary. A custom permission system allows different partners different levels of access to data and troubleshooting tools. I was a lead developer on the project and helped ship the initial version.
Pressed Bundles allow customers to order web hosting with preinstalled WordPress themes. I was the lead developer tasked with automating the installation process of several dozen WordPress themes, in many cases implementing custom WP-CLI plugins. I also lead the integration of this installation process into our custom Rails-based billing system, including general record keeping and the customer order UI/UX.
I worked with Allusis Productions to automate the deployment process for Campagna Restaurant. A traditional PHP deployment left the site open to possible bugs and downtime. I configured the existing application to support staging and production environments, automated deploys, caching, and easy backups. I also setup monitoring and integration testing to help avoid downtime.
Website.me is a free service provided by World Wide Web Hosting that provides a Single Sign On solution for cPanel and WordPress accounts. I was the project lead and helped with its initial implementation and deployment with another developer. The application was written using Ruby on Rails, PostgreSQL, jQuery, Coffeescript, and SCSS, and integrated directly with our in-house billing system, Helix.
Wormhole is a custom built RubyGem that is used to export customer billing information from WHMCS into our in-house billing system, Helix. I created the initial implementation and oversaw the successful migration of several thousand clients from WHMCS into Helix. The library was created using Ruby, PostgreSQL and MySQL.
Helix is a custom built billing system that is used by staff and customers to manage web hosting services. I have been a lead developer on this project since it’s inception. I helped create and deploy the initial implementation, including the UI, while at World Wide Web Hosting, and currently maintain it with the software engineering team at Pressed. The application was designed using Ruby on Rails, PostgreSQL, jQuery, Coffeescript, and SCSS on top of AWS. Helix also includes several supplemental Rails applications and Ruby gems which I helped implement and deploy. See full case study.
Synco is a web application that allows customers to sign up and manage their services, and allows staff to manage customers and services. I joined this project after its initial development while it was nearing end of life. I was responsible for security updates and implementing critical new features.
I worked with Allusis Productions to develop a fully custom WordPress site for Liberty Sports Group. I implemented the sites WordPress theme and multiple plugins to improve the admin experience. I also oversaw the initial deployment of the website.
iZabbix is an iPhone application used internally by VoIP engineers to receive alerts from Zabbix. The iPhone application was designed using Appcelerator Titanium. The supporting API was designed using Ruby on Rails and is responsible for relaying alerts from Zabbix to users’ phones using a custom built RubyGem to communicate with the Apple Push Notification Service.
DotBlock Mobile is an iPhone application that allows customers to manage their accounts and VPSs. The iPhone application was designed using Appcelerator Titanium. The supporting API was designed using Ruby and Sinatra, and is responsible for fetching customer info and issuing commands to VPS hypervisors. I also worked on public documentation for the API and implemented wrappers in several languages to allow DotBlock customers to easily build software around their VPSs.
DotBlock Order Form is the web application used to accept customer orders at dotblock.com. It was designed using Ruby on Rails and jQuery and custom RubyGems that communicate with the existing billing system.
Ennouncement is a web application that allows users to broadcast important voice messages to groups of users. The web application was designed using Ruby on Rails, MySQL and jQuery. I also worked on integrating this service with the ViaTalk Control Panel to allow ViaTalk customers to use call broadcasting features.
I was the lead consultant for a local startup, Will Dikker, which provides a marketplace for used cars, trucks, and more. Users receive free Will Dikker Stikkers with an SMS shortcode that can be texted for more information on an item. I handled all backend development on the Rails application, including integration with Air2Web for SMS communications, billing via Authorize.net, and server setup.
ViaTalk Control Panel is a web application that allows customers to sign up and manage their services, and allows staff to manage customers and services. The application was designed using Ruby on Rails, MySQL and jQuery and was tightly integrated with the ViaTalk VoIP platform. I joined the project after its initial development, and was the sole developer responsible for ongoing maintenance, security updates, and implementation of new features. I migrated the project’s code repository from SVN to Git and improved average deploy times from over 10 minutes to under 30 seconds.
Let’s Call Santa is a free service that lets children leave a voicemail for Santa to let him know what they’d like for Christmas. The voicemail is delivered to parents via email and can be shared on Facebook and Twitter. The web application was designed using CodeIgniter, MySQL, and jQuery; in 2009 I rewrote the application in Ruby on Rails. This project was initially completed in about 1 week and remains one of my favorite projects I’ve worked on.
ViaTalk PBX is an VoIP/web application that powers support calls for ViaTalk, HostRocket, and DotBlock. The application handles routing incoming calls to support queues, call detail record logging, and displaying an overview of past and current calls. I was responsible for the entire application including server setup and maintenance. The backend VoIP application was designed using Asterisk and MySQL. The web application was designed using PHP, CodeIgniter, and MySQL. ViaTalk PBX served 500-1000 of daily support calls and had nearly perfect uptime under my care.
Developed new company website using CodeIgniter and MySQL. Original site was written in ColdFusion and used Macromedia Contribute for content management.
I developed 3 major versions of the company website for Creative Dance Arts over the course of 11 years, including two custom WordPress themes. The I trained the Artistic Director on the use of WordPress to manage the site’s content and monitor visitors. I also provided support for the site’s 200+ users when classes were in session.
I developed the company website and content management system using CodeIgniter and MySQL. I worked directly with the client to fine tune the website exactly to their specifications, and performed several upgrades to meet the changing needs of their customers and the real estate market.
Open Source Projects
I’m deeply passionate about open source and sharing knowledge and code. Almost all of my day to day work involves open source software and I take every opportunity to give back to the community.
Vim wrapper for ShellCheck, a static analysis tool for shell scripts.
It adds adds :ShellCheck and :LShellCheck commands to run ShellCheck on the
current buffer (or custom range/visual selection). Errors are sent to the
quickfix/location list window, and in error windows, gb opens the GitHub wiki
page for the error in a browser.
generate-password.lbaction is a LaunchBar 6 Action to generate secure passwords and copy them to the system clipboard.
It uses the KeePass Password Generator to allow you to specify a character set for the generated password. This functionality is provided by an included copy of the keepass-password-generator RubyGem – no external dependencies are required.
shotty is a ruby script that makes it easier to share screenshots and files via Dropbox on OS X.
ReamazeAPI is a RubyGem that interfaces with the Reamaze REST API. I created the initial implementation and maintain the open source project on GitHub.
wp-cli-tgmpa-plugin is a WP-CLI package for working with WordPress plugins required using the TGM Plugin Activation library.
TrustMe is a RubyGem that interfaces with the TeleSign. REST API. I created the initial implementation and maintain the open source project on GitHub.
rake-tomdoc is a RubyGem that adds adds rake tomdoc to generate documentation for publishing to GitHub Pages.
Splinter is a RubyGem that provides helpers for integration tests using Capybara. I created the initial implementation and help maintain the open source project on GitHub.
gem-create is a RubyGems plugin. It provides a gem create command which can be used to generate a skeleton for working on a new RubyGem.
vim-marked is a tiny plugin I made to integrate Vim and Marked.app. It allows you to open the current Markdown buffer in Marked from within Vim.
Rainman was a RubyGem implementing the abstract factory pattern in Rails applications’ service objects. It was a premature abstraction and development was abandoned when I realized it was adding unnecessary complexity to projects. I consider Rainman a successful failure that was a valuable lesson in knowing when to abstract.
Snuggie is a RubyGem that interfaces with the Softaculous API. I created the initial implementation and helped manage the open source project on GitHub.
FannyPack is a RubyGem that interfaces with the Fantastico API. I created the initial implementation and helped manage the open source project on GitHub.
TiFighter is a jQuery-like library designed to help you wage intergalactic war on your Titanium Mobile applications. This was one of my first projects using CoffeeScript and I immediately fell in love.
I got sick of manually working with Asterisk Voicemail files and created ActiveMailbox to make my life a little easier. This was the first proper RubyGem I released and it was a lot of fun to learn the ins and outs of gem creation.
APND (Apple Push Notification Daemon) is a RubyGem that integrates with Apple’s Push Notification Service.
My dotfiles include my development environment for use on OS X and Linux. Although this project is only used by me, it is one of my favorites because it provides a baseline for improving my workflows and allows me an easy way to share that information with others.
I missed ActionMailer from Ruby on Rails and started hacking up something similar for use with CodeIgniter apps. I gave it just enough love to be useful before I decided to use Rails for the app I was planning on using it with.