Work
Iโm employed full-time but Iโm open to part-time contract opportunities in the e-commerce space.
Iโve worked on several different e-commerce projects over the years. Whether youโreโฆ
- Building out an e-commerce site
- Integrating with an e-commerce platform
- Just looking for general development support with Shopify
Feel free to send me an email. Thereโs a good chance that I can deliver value to your business.
Charles B Johnson
Engineer of Soft Wares [email protected] Austin, TX +1 (203) 536 2706 cbjohnson.io github.com/charlesbjohnson linkedin.com/in/charles-johnson-89250a111Full-stack software engineer with 10 years of experience, 6 years of experience in the e-commerce space, and a history of delivering value across a variety of projects.
Experience
Firesqueak
Firesqueak is an e-commerce consultancy that I worked with as a contractor and later as an employee. I was a consultant for two of their clients and I also built one of the companyโs products.
E-Commerce Product
TL;DR
Designed and built an e-commerce product for a software consultancy.
Description
I built the V1 of an e-commerce product for Firesqueak with one other engineer.
Inspired by shops that had sold out of remote work equipment at the start of the COVID-19 pandemic, we decided to build a product that would give stores the ability to provide in-stock notifications. We started with support for Shopify but designed the app with other e-commerce platforms in-mind.
I researched, designed, and developed the app. The core features were:
- Support for SMS in-stock notifications.
- An optional JavaScript snippet to add an in-stock notification UI to a PDP.
- A REST API backend that the in-stock notification UI integrated with.
- A SPA dashboard for the merchant admin experience, which included:
- Templating to customize the notification messaging.
- Message previewing to verify template customizations.
- Reporting to highlight the most in-demand products.
- Charting to display the number of messages sent per day.
- JWT authentication to embed the UI within Shopifyโs admin dashboard.
- OAuth authorization to support Shopifyโs app installation flow.
I also handled the operational work by setting up hosting, provisioning, CI/CD, and monitoring. The product was a V1, but the technical foundation was mature.
Tech
- Frontend (Front)
- HTML
- CSS
- JavaScript
- React
- Frontend (Back)
- JavaScript
- Node
- Next
- Fastify
- Backend
- Ruby
- Rails
- Sidekiq
- Data
- PostgreSQL
- Redis
- Platform
- Shopify
- Heroku
Client Project - Footwear Brand
TL;DR
Built, iterated, and maintained the frontend of an e-commerce site for a footwear brand.
Description
I built a new Shopify site for a footwear brand that specializes in work-wear and clothing for outdoor activities.
The client had an existing e-commerce site but, due to the limitations of their platform, they had issues with velocity and content management. I worked with one other Firesqueak engineer to build the Shopify theme frontend and to support the clientโs Shopify/SAP integration on the backend.
This project was a test of my frontend development skills, but my teammate and I divided work based on front-of-the-frontend vs back-of-the-frontend lines. I focused on the back-of-the-frontend by:
- Configuring the build toolchain to enable the use of modern web development features while still supporting IE11.
- Selecting a minimal set of dependencies to support complex interactions without sacrificing performance.
- Implementing the site features that required non-trivial algorithms and data manipulation such as:
- Multi-select filtering on the PLP.
- Dynamically displaying inventory status depending on selected options on the PDP.
- Creating command-line tools to automate tasks.
- Setting up CI/CD pipelines.
I also contributed to the front-of-the-frontend by:
- Creating the component library and style guide from the designs.
- Implementing responsive layouts for the PDP and PLP.
- Ensuring that all interactive components were accessible and SEO-friendly.
The project was intense but we delivered to spec, on-time, and with no production issues. The project was a success and we exceeded the clientโs expectations with the siteโs extensibility and robustness.
Tech
- Frontend (Front)
- HTML
- SCSS
- JavaScript
- Stimulus
- MobX
- Frontend (Back)
- JavaScript
- Node
- Rollup
- Platform
- Shopify
- AWS
Client Project - Footwear Brand
TL;DR
Built an e-commerce ETL pipeline for a footwear brand.
Description
I built an ETL pipeline for the finance team of a popular, eco-friendly footwear brand.
The client operated several geographically distinct Shopify sites but needed to collect all transaction and payment data into SAP as a single source of truth for accounting. They had a single in-house engineer and a business stakeholder that I partnered with, but otherwise I worked independently yet transparently.
In the first week I was able to create a technical spec from loose business requirements and by the following week I had a functioning V1. I delivered well ahead-of-schedule with zero production issues. The client saved hundreds of thousands of dollars that they would have otherwise needed to pay to SAP consultants.
Tech
- Backend
- JavaScript
- Node
- Platform
- Shopify
- AWS
- Designed and built a Shopify app for inventory notifications targeting medium-to-large sized stores.
- Led a small team in the development, integration, and maintenance of a Shopify site for a footwear brand; generated $1,000,000+ of client revenue within 3 months of launch.
- Created a Shopify to ERP integration for a footwear brand; saved the client $250,000+ in SAP consultant fees and months of development time.
- Met with clients, wrote specifications, and estimated development effort during initial contract engagements.
Blue Apron
TL;DR
Contributed to a large e-commerce codebase for a meal-kit delivery company.
Description
Blue Apron is a meal-kit delivery company. The engineering organization had fewer than 100 employees when I joined as a Backend Engineer on the Consumer team. I joined the Delight squad but the team was later rolled into the Engagement squad. Delightโs priorities were a subset of Engagementโs; the former focused on customer retention while the latter prioritized retention alongside monetization.
One of the biggest challenges at Blue Apron was in maintaining the written-from-scratch e-commerce engine. The custom-built nature of the engine allowed the storefront to be deeply integrated with fulfillment on the backend, but at the expense of missing standard features and coupling to vast amounts of tech debt. With this in mind, I took ownership over Address Management since it had been historically overlooked and de-prioritized. I worked on:
- Leading the implementation of Temporary Address Change for deliveries.
- Fixing design issues and bugs that had been the cause of frequent mis-deliveries.
- Coordinating with the WMS team on the backend to setup address verification before shipping label generation.
Temporary Address Change was a conceptually simple feature, it allowed customers to change the delivery address of a single order without having to change their subscription. I implemented the backend of the feature and I was also the tech lead for the Web, iOS, and Android frontend implementations.
Aside from Address Management, I acted as a technical leader by:
- Refactoring complicated parts of the codebase that were not well-understood.
- Documenting older parts of the codebase that were not well-known.
- Offering guidance to peers in architecture/design reviews, regardless of team.
- Reviewing code to unblock peers, regardless of team.
- Mentoring junior engineers.
My experience at Blue Apron was chaotic since I joined in-between rounds of layoffs. I shifted between several projects that started and stopped as the companyโs priorities changed, so I did not have the opportunity to complete every project that I worked on.
Tech
- Frontend
- HTML
- CSS
- JavaScript
- React
- Redux
- Backbone
- Frontend (Back)
- JavaScript
- Node
- Webpack
- Backend
- Ruby
- Rails
- Sidekiq
- Data
- PostgreSQL
- Redis
- Kafka
- BigQuery
- Elasticsearch
- Platform
- Docker
- Kubernetes
- GCP
- Owned feature development and maintenance of Address Management on the Consumer team; eliminated tech debt and reduced address-related CX issues by 90%.
- Built address validation reporting for 50,000,000+ addresses; enabled WMS team to verify addresses before shipping label generation to avoid wasted shipments.
- Participated in architecture and design reviews for all Consumer engineering projects.
Lob
TL;DR
Led DevSecOps and fulfillment optimizations for a direct mail API startup.
Description
Lob is a startup that had less than 20 employees when I joined; I was one of 4 engineers on the team. The company offers a SAAS product in the form of RESTful APIs for sending physical mail and verifying addresses. The Print & Mail API handled tens of thousands of requests per day.
The engineering team was small and without defined roles so we self-assigned responsibilities based on interest and capability. I had more experience with cloud infrastructure, so I took DevSecOps responsibilities.
One of the first projects I worked on was to setup auto-scaling for the Print & Mail API infrastructure. This turned out to be a larger than expected task given that all the infrastructure was manually managed through the AWS web interface. My approach was to:
- Introduce Terraform to get a handle on critical infrastructure.
- Containerize the application using Docker to automate provisioning.
- Setup a parallel set of infrastructure using AWS ECS for scheduling containers.
- Cut-over from the old infrastructure to the new infrastructure.
The migration completed without any issues and we were able to leverage AWS to manage auto-scaling with minimal glue code. There were other benefits and improvements from this approach, including:
- Codified and hardened infrastructure with a paper-trail for auditing changes.
- Explicit, documented, and packaged provisioning to mitigate risks from dependencies.
- Automated deployments with immediate rollbacks to limit downtime when resolving regressions.
Aside from leading DevSecOps, I also became the lead for the Partner Operations team. The Partner Operations team was responsible for optimally routing requests on the backend to the Partners that fulfilled them. Geographic proximity, capability, and available capacity were some of the factors considered when routing to a Partner.
My role on the Partner Operations team was to increase throughput and improve service reliability. This involved:
- Reducing bottlenecks and single-points-of-failure through partitioning and scaling.
- Handling and resolving failures as part of an on-call schedule.
- Researching, designing, and prototyping a V2 of the backend architecture.
This was a difficult role since the on-call burden was high. I was not able to deliver a V2 of the backend, but I exhausted most optimization opportunities of the existing code and infrastructure.
Tech
- Backend
- JavaScript
- Node
- Hapi
- Go
- Data
- PostgreSQL
- Redis
- Elasticsearch
- Platform
- Docker
- Terraform
- AWS
- Led the Partner Operations team; optimized job routing and processing; partitioned and scaled fulfillment services.
- Instantiated a DevSecOps culture by codifying, automating, and hardening infrastructure; increased the average uptime of the Print & Mail API from 96.1% to 99.8%.
- Mentored junior engineers and interns.
@WalmartLabs
TL;DR
Revamped an application that managed product listing pages on walmart.com.
Description
@WalmartLabs was the largest organization that I have worked for. I joined the SEO team as a frontend engineer, but what I actually did was full-stack web development. Most of my teammates were data engineers, so I learned that frontend was a relative term.
The SEO team had several responsibilities, but most of the work centered around support for the Topic Page platform. Topic Pages were a large set of product listing pages on walmart.com that were automatically generated based on data about frequently searched keywords.
Topic Pages were too narrow and too great in number to fit into the siteโs category-based navigation, but they ranked highly in organic search engine results. They drove hundreds of thousands of visits in traffic and hundreds of thousands of dollars in revenue to walmart.com every day.
The Topic Page platform consisted of dozens of services, so every member of the team acted as a custodian of at least one or two services. One of the services I maintained was an internal application known as Mason, a CMS-like tool for Topic Pages.
Mason was on life support when I first started working on it. The app was buggy, hard to use, and almost no one understood its purpose or its capabilities. The SEO team mainly used it as a manual override for when there were issues with the generation of certain Topic Pages.
When the SEO team started to port the Topic Page platform to support samsclub.com it became clear that Mason needed significant rework. As part of the porting effort, I:
- Cleared the backlog of reported and unreported bugs.
- Simplified the UI/UX to improve usability.
- Handled support requests from users.
- Created user documentation to reduce the rate of support requests.
- Demoed features to the Site Merchandising team to grow usage.
- Migrated from pet servers to automated, internal cloud hosting.
I was able to make Mason multi-tenant to support Samโs Club while simultaneously increasing usage among Walmartโs Site Merchandising team. Mason became a go-to tool for setting up campaigns in partnership with large brands; a new use case for Mason and a new revenue source that became possible as a direct result of my efforts.
Aside from Mason, I was also a contributor to the customer-facing frontend of Topic Pages on walmart.com and the backing web services.
Tech
- Frontend
- HTML
- CSS
- JavaScript
- Angular
- Backbone
- Backend
- JavaScript
- Node
- Hapi
- Express
- Data
- MongoDB
- Redis
- Memcached
- Cassandra
- MySQL
- Revamped the Topic page CMS on the SEO team; implemented multi-tenancy for walmart.com and samsclub.com.
- Drove increased usage from Site Merchandisers; enabled Topic pages to host brand-partnership campaigns on walmart.com.
- Squashed bugs and created user documentation for the Topic page CMS; reduced weekly internal support requests by 60%.
- Implemented caching in the Topic page frontend services layer, lowering p99 latency by 400%.
- Mentored junior engineers and interns.
Sendicate
TL;DR
Extended an email marketing e-commerce product for a startup.
Description
Sendicate was a startup with a team consisting of just the two co-founders and myself. The companyโs main product was a competitor to Mailchimp, but I joined to work on a new product called Sellout. Sellout was an automated email marketing app for Shopify and Bigcommerce stores.
The headline feature I delivered was Manual Emails. I built a WYSIWYG editor that could design emails using a set of predefined content blocks; essentially a CMS for email campaigns.
The CTO built the backend but gave me free reign to build the frontend since I had more recent experience with JavaScript. With this project, I:
- Selected a minimal, conceptually simple set of dependencies.
- Made my first contribution to the OSS community via an improvement to one of the Bootstrap frameworkโs interactive components.
This was my first large JavaScript project, but I was able to ship and the feature launch was a success.
Afterwards, I paired with the CTO to add subscription billing and I learned about the backend. The CTO later left for another company, but I continued to work on Sellout for a period of time. During that time, I:
- Added caching to the product recommendations engine to improve response times.
- Migrated the infrastructure to another platform to cut costs.
- Fixed bugs and fielded technical customer support.
I didnโt ship any new features, but I learned a great deal about operating a SAAS product while I was on my own.
Tech
- Frontend
- HTML
- CSS
- JavaScript
- Backbone
- Vue
- Backend
- Ruby
- Rails
- Sidekiq
- Data
- PostgreSQL
- Redis
- InfluxDB
- Platform
- Shopify
- Heroku
- AWS
- Extended and maintained an email marketing app targeting small-sized Shopify and Bigcommerce stores.
CompuWeigh
TL;DR
Learned real-world {hard,soft}ware development at a company in the grain industry.
Description
CompuWeigh is a small, mature, company that specializes in integrated hardware and software for the grain industry. Their products are for industrial automation or logistics management.
Given that this was my first job as a software engineer, this role was more of a learning opportunity for me. My contributions were small but I gained a solid foundation in TDD and BDD because of the rigorous culture around testing.
In one of my last projects I was able to tinker with creating a web service for a .NET Micro Framework device (akin to MicroPython or Arduino), which served as my introduction to web development.
Tech
- Frontend
- Silverlight
- Backend
- C#
- VB.NET
- .NET 4
- Data
- SQL Server
- Learned real-world software engineering at a hardware/software company.
Skills
- Programming
- Ruby
- JavaScript
- Bash
- Lua
- Frontend (front)
- HTML
- CSS, SCSS, SASS
- Stimulus, React
- Accessibility, SEO
- Frontend (back)
- Rollup, Webpack
- Next
- Backend
- Rails
- Node
- Express, Fastify
- Data
- SQL, NoSQL
- PostgreSQL, MySQL
- Redis
- Platform
- Amazon Web Services
- Docker
- Terraform
- GNU/Linux, UNIX
- Other
- OOP
- APIs
- REST, GraphQL
- Git, GitHub, JIRA