Professional Experience
I joined Cincinnati Incorporated (CI) after they acquired my previous company NVBOTS and created the CI Boston business unit where we continued to design and manufacture 3D Printers and software. After the acquisition, I led the process of converting our software projects to the new branding and product requirements for CI. Once the migration to CI was complete, my responsibilities returned to maintaining our products in the field and designing new features to grow our user base.
- As the lead software developer for the CI Boston business unit, I worked with our General Manager to plan software projects for 2018, 2019, and 2020. All major projects were executed on schedule.
- Maintained and managed 100+ cloud-connected 3D printers in the field. Worked with customer support to remotely diagnose network configuration problems, detect hardware malfunctions, and debug software issues.
- Maintained and managed our cloud software stack which includes 10 Linux servers and 4 MySQL databases. I was responsible for updating the cloud software running on the servers and performing data and schema migrations on the database.
- Designed, developed, tested, and implemented a battery backup circuit and a python service to gracefully shutdown the printer after abrupt power loss to prevent SD card corruption.
- Researched, designed, and implemented the electronics and wiring for a built-in touchscreen control panel.
- Using Vue and Vuetify, I designed and developed a web application allowing users to view and control the printer, manage the printer filesystem, drag-and-drop jobs in a print queue, and update printer configuration. The web application was mobile friendly and was bundled into an Electron application to run on a touchscreen.
- I created an OctoPrint plugin in python to control the printer’s part removal system. I later added the ability to manage a persistent queue of print jobs, automatically removing each print after it’s finished and starting the next job.
- Developed a more flexible print configuration management system to allow for merging configuration settings provided by the printer, user, and material.
New Valence Robotics (NVBOTS) hired me as it's first employee and made me responsible for building out the web-based user interface for their cloud 3D printer software called NVCloud. As the company grew from 6 people to 24 people, I helped define our company culture, values, and products while also experiencing first-hand the growth of a successfully acquired startup.
- I worked with our software team consisting of 3 people total to establish agile development workflows and processes for issue tracking, version control, and project planning. We used JIRA and Github to maintain our projects.
- I designed, developed, and maintained the frontend for NVCloud primarily using Django’s built-in templating engine, jQuery, KnockoutJS, and UnderscoreJS. Over 3,500 people used the app to create over 100,000 3D print jobs, remotely monitor and control their printers, manage permissions, watch print timelapses, and review usage reporting statistics.
- I developed an in-browser 3D print preview using ThreeJS allowing users to manipulate the scale, rotation, and layer height of prints using range sliders and show a visualization before printing. I also integrated it with a third-party gcode viewer using web workers.
- I developed custom user interface components for the webapp using KnockoutJS and jQuery. These components included a touch-enabled drag-and-drop queue for managing the order of print jobs which synced with a remote database in real-time, a circular range slider using SVG that is compatible with touch devices, and many other form inputs.
- Using KnockoutJS and Ajax, I built a real-time dashboard for 3D printers displaying a live video feed, printer status, job queue, and sensor data. The dashboard also allows users to send commands to the printer such as stop, start, and skip.
- I designed, developed and improved many backend Django apps including the data models, database queries, and presentation views. These apps included user organization and permission management, a public library for staff to publish 3D models and collections, and a CMS for managing support articles.
- I helped design and develop printer maintenance routines that coordinated user interface prompts from the webapp with GCODE commands on a RaspberryPi controlling the 3D printer.
- I configured build and deployment processes to compile, bundle, and minify static files for production and development using gulp.
- I launched and maintained a wordpress landing page. I built custom shortcodes, integrated analytics services, and developed command line tools for deployment.
Personal Projects
The Worldly App is an app to help travelers find trustworthy travel recommendations. I started the company with two other co-founders with a mission to inspire people to travel. Over 2 years later, we've launched our app in the Google Play Store and Apple Store and are continuing to grow our community and improve the experience for our users.
- I worked with my co-founders to develop a feature list and prioritize the features required for a minimum viable product.
- I designed, developed, and deployed a backend infrastructure built on Docker and AWS. It uses Django as the web framwork and includes an API built with Django Rest Framework, a celery task queue for image processing, devops command line tools, and automated builds and testing with CircleCI.
- I designed, developed, and released an Ionic Application for iOS and Android. It uses Angular as the javascript framework and has automated build and testing with CircleCI.
I began building websites for friends while in college as a way to make extra money and grow my web design skill set. After assembling a nice portfolio of websites, I was able to expand my client list to local small business owners and early stage startups. My full-time work has since taken priority, but I still occasionally design and build static websites in my free time.