An Enplug app consists of two parts: Java code or website that runs on the displays, and a web page that customers can use to configure the content of their display.
The SDK also exposes convenient APIs for the most common web application functionality (confirm boxes, loading indicators) and has 99% test coverage.
Enplug's palm-sized device makes any digital display interactive. The Enplug App Market lets businesses choose a variety of content to display ranging from the brand's live social media feeds, product videos, news feeds, weather, and more. All content and apps are easily managed online.
As founding CTO I co-architected our system in 2012, and it's come a long way since then!
As COO of Enplug in 2015 I overhauled our pricing strategy, and then architected and led a team in implementing an automated online order processing system for customer on-boarding via e-commerce purchases and a line-of-business (LoB) app for internal sales team orders.
The automated system greatly simplified a complex workflow for both customers and Enplug teammates. It also facilitates E2E information transfer between several disparate systems: Recurly & Braintree for payment processing, Shopify for order fulfillment, Hubspot for sales & marketing intelligence, and Enplug's core system for account creation.
This is a fun side project/challenge that's a work in progress. I wanted to explore the limits of CSS3 illustration and animation by creating an animated HTML landscape artpiece of Mt. Everest without using images, SVG, or HTML5 canvas (the proper tool for this job).
In early 2014 I wrote the first version of Enplug's customer-facing native iOS mobile app. It lets customers control the content on their digital displays on-the-go. The app uses Core Data for caching data loaded from Enplug's JSON APIs.
StartupVitamins posters are great. So I reached out and created a partnership whereby they would provide a handful of free digital posters to Enplug customers using the StartupVitamins app for Enplug, and then wrote the app using our SDK.
The Enplug Player app for Enplug's (Android) devices is responsible for showing a customer's content on their digital display. When we were first building Enplug's system in 2012, I wrote our primary client-side player application and a handful of supporting background services for logging, RPC controls, monitoring heartbeats, etc.
Data/content is transferred via a combination of JSON RESTful APIs and bi-directional sockets. The UI was originally done in XML layouts, and our team later rewrote the entire application to leverage OpenGL among many other improvements.
Enplug's Android devices are client computers that sit behind a router and/or firewall in our customer's buildings, so we couldn't SSH directly into them to debug/troubleshoot. Instead, I created an RPC-based protocol for opening interactive commandline prompts using RabbitMQ as a message broker for the real-time commands.
PyShell is the Python command line tool that runs on an engineer's computer and knows how to connect to specific Enplug devices in the field after a handshake. ShellCommand is the Android service which allows any Android app to open up a command line interface for troubleshooting, which is useful even for local development.
In early 2012 I co-designed/created a flashcard app for iPhones, iPads, and Macs with my future co-founder of Enplug, @zspitulski. The app used iCloud to sync flashcard data between devices and gestures for flipping cards.