Benjamin E Morgan, Developer in Los Angeles, CA, United States
Benjamin is available for hire
Hire Benjamin

Benjamin E Morgan

Verified Expert  in Engineering

Software Developer

Location
Los Angeles, CA, United States
Toptal Member Since
July 7, 2021

Benjamin is a seasoned developer with ten years of experience in both startups and established companies. He has built many applications from scratch but can also maintain and even extend existing systems. He is experienced in leading others in large projects and enjoys building programs independently. Creating dynamic, innovative software has been a great passion of Ben's since that first "hello world."

Availability

Part-time

Preferred Environment

Docker, Google Cloud, Amazon Web Services (AWS), Scala, Akka, React, PostgreSQL, RabbitMQ, Redis, Kubernetes

The most amazing...

...thing that I created entirely on my own is an online store for custom 3D printed wares. I created the front end, back end, and tools for generating 3D models.

Work Experience

Senior Software Development Manager

2015 - 2020
Clutch Technologies
  • Transitioned the company from a system based on spreadsheets and post-it notes to a Scala back end, mobile apps, and internal tools for managing our fleet of vehicles and subscription customers. I was an early hire at Clutch.
  • Collaborated with designers and mobile app, front-end, and back-end developers to add new features to our mobile apps and internal tools as the company transitioned from a direct-to-consumer business to a multi-tenant SaaS business.
  • Built a real-time messaging platform so that customers could communicate with staff via SMS and voice calls. This system works across mobile apps and web interfaces and is built to facilitate the workflow of customers exchanging vehicles.
  • Organized sprints for my team by grooming our backlog of tasks, assigning them to developers, and tracking their progress. I led stand-up meetings, sprint retrospectives and demoed new features to the company before deployment.
  • Participated in bi-weekly deployments and debugged issues when they arose. Our deployments were highly automated with Terraform and Liquibase.
Technologies: Scala, Akka, PostgreSQL, RabbitMQ

Software Engineer

2014 - 2015
Altisource Labs
  • Refactored legacy code into microservices in Java with Spring Boot.
  • Utilized S3 and other external APIs to provide robust services for internal applications.
  • Worked to build a core set of applications to reduce duplicated effort across other engineering teams across the company.
Technologies: Java, Spring Boot, Amazon Web Services (AWS)

Software Engineer

2013 - 2014
inBloom
  • Worked with a newly formed team to take over the development of the core application from the large team of contractors who had developed it.
  • Fixed bugs in the core platform and maintained an extensive end-to-end automated test suite.
  • Worked to build an "app store" gateway to the core platform, enabling developers to offer their education technology to school districts in a secure way.
Technologies: Java, MongoDB

Senior Software Development Manager

2011 - 2013
VeriFone
  • Developed many features of a touch screen appliance that integrates with a point-of-sale to advertise products at checkout in convenience stores.
  • Reverse-engineered the serial data from various point-of-sale systems so our appliance can have richer information.
  • Helped resolve technical issues with the device in-person and remotely.
Technologies: Java, Amazon Web Services (AWS)

Wonderfab

http://wonderfab.co
Wonderfab is a company that I founded to enable eCommerce for customizable 3D printed products. I also developed the algorithms to generate the 3D models. I used those tools to design the products sold. Customers can see a 3D preview of what they are ordering before they checkout. Orders are 3D printed and fulfilled by Shapeways.

Technologies used:
• Backend: Scala, Akka-Http, PostgresSQL
• Frontend: JavaScript, React, three.js
• Deployment: Google Kubernetes Engine, CloudBuild, CloudStorage

Integrations:
• FusionAuth
• Stripe
• Shapeways
• TaxJar
• SendGrid

Clutch Technologies Platform

http://driveclutch.com
When I began working for Clutch Technologies, I started building their core software platform from scratch. I worked with mobile app developers to define the API so that customers could:
• Sign up for service by providing their driver's license information, address, and payment information.
• Request to have a new vehicle delivered to them or exchanged for another vehicle at any time.
• View their account information.

I also built numerous tools for internal use by the company. In the beginning, these were templated pages built using twirl. As the size of the company grew, we began implementing these UIs with React. These tools included:
• Pages for screeners to review the driving record of customers after they signed up.
• Tools to manage the fleet of vehicles and the day-to-day process of exchanging, cleaning, and inspecting vehicles.
• Configuration pages to manage pricing, verbiage, and images displayed in the mobile apps.

I also built a back end for a new mobile app used by a concierge. A concierge delivers vehicles personally to the customers. The app featured:
• A schedule of the deliveries assigned to the concierge for the day.
• For each delivery, a workflow to guide the concierge through the process.

Clutch Technologies DC-Dash

http://driveclutch.com
I designed and built a system for a digital concierge (call center employee) to communicate with the customers via SMS. We later extended this system to also work with the concierge (delivery driver) mobile app so they could also communicate with customers. Anything less than 100% deliverability is unacceptable, so this system features extensive monitoring to alert us to any issues.

I initially built this system using Layer (now defunct) to handle the real-time push of messages to mobile and web UIs. One day, I observed that Layer had lost some messages that we had sent through and was not functioning as documented. I submitted a ticket to them with specific details of the issues, but they never responded. I recommended that we replace Layer, designed a system to replace it and a plan to migrate to the new system. The team agreed we should build a replacement ourselves.

After we had fully replicated Layer's functionality, we were told they were going out of business in 30 days. Had I not observed these issues and advocated for a replacement, we could have had a major issue finding a replacement in time.

Drive by Pi

https://www.youtube.com/watch?v=qssUHQXRZPk
I built this robotic RC car as a fun personal project. An integrated Raspberry Pi serves up the control page over wifi. I wrote the software to control the car in Java, and the front end is a simple JavaScript page. Video streaming is provided by Motion. I also designed and 3D printed many of the plastic parts and constructed the circuitry for controlling servos and monitoring the battery.

Languages

Scala, Java, C, SQL, JavaScript

Frameworks

Akka, Spring Boot, Play

Libraries/APIs

React, OpenGL, Three.js, Akka Streams

Tools

RabbitMQ

Platforms

Docker, Amazon Web Services (AWS), Kubernetes, Twilio, Raspberry Pi

Storage

Google Cloud, PostgreSQL, Redis, MongoDB

Other

Calculus, Differential Equations, Linear Algebra, WebSockets, OpenSCAD

2005 - 2011

Bachelor's Degree in Computer Science

North Carolina State University - Raleigh, NC

2005 - 2009

Bachelor's Degree in Applied Mathematics

North Carolina State University - Raleigh, NC

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring