Bruno Denuit-Woicik, Chief Software Architect at Enplug, brings this guest blog post to you. Your feedback is always welcome in the comments section.
Enplug’s digital signage plug & play device turns any digital display into an interactive and real-time marketing tool for businesses. Through the Enplug App Market, businesses can choose from a variety of content to display ranging from the brand’s live social media feeds to HD images, product videos, news feeds, weather, and more.
Enplug’s most popular app is the live social media feed, where businesses can stream a live Twitter wall, Instagram wall, Yelp wall, Facebook feed, and Swarm feed. Posts mentioning a business’s social media handles (@BevHillsPorsche) or hashtags (#bevhillsporsche) of their choice will appear within just seconds.
Businesses can manage their display through the Enplug website or mobile app. From here, they can manage the social display, drag and drop images, upload video, adjust screen settings, control all of their apps, and more. All updates are pushed to your screen instantly, via Wi-Fi or connected Ethernet.
is part of the Silicon Beach tech startup community in Los Angeles. Their team consists of 35 employees. Noteworthy customers include: WeWork, Porsche, Toyota, Marriott and CREAM. They’re currently streaming software onto 500 screens in 420 venues worldwide.
Read about how a historical restaurant in San Francisco’s legendary Mission District increased sales by 28% using Enplug’s Instagram and Twitter apps in this La Taqueria Case Study.
An overview of technologies used at Enplug
Our plug’n'play units are Android devices, which run our app framework and some satellite services for log aggregation and screen control. The app framework can load and switch between different apps dynamically. Apps include a social board, an Instagram photo wall, RSS feed app, weather app, etc.
We also have an extensive web management portal for our users to control all aspects of their screens (written in AngularJS).
Recently, we introduced mobile apps (one for Android and one for iOS) that make the most common tasks on the web management portal available natively on mobile devices. They also allow customers to receive instant push notifications each time a customer interacts with their screen.
The backend services were built by us from the ground up in C# and include:
- Core service, handling all of the interactions with the screens, such as social items, app deployments, etc.
- Device monitoring service, keeping track of heartbeats from all the screens, and able to remotely control the screens.
- A host of smaller services, such as our user authentication service and our logging service.
We have two database servers: MongoDB for our core data and metadata (accounts, users, social items, venue information), and SQL Server for analytics (e.g., tracking most active users on our network).
Why this is important to Enplug
On the server, we need a very flexible platform that doesn’t prevent us from adding functionality quickly and reliably. On the clients, we need an open platform where we can control all aspects. We need to be able to control all parts of the device easily.
We decided to build our server in C# because our engineers had an extensive .NET background, and we were convinced that the added reliability and productivity boost that C# offers vastly offsets what little speed we would lose as compared to C++ for example.
We went with Android devices for the clients because they’re at a perfect price/performance point right now compared to other platforms, and it’s only getting better as more and more developers start using Android for products besides mobile phones.
Last year, as we were building out the team and the product at the same time, it was sometimes hard to stick to deadlines and release sprints on such a tight schedule. But now, our team has stabilized to about 10 engineers, and we are moving along at a solid pace, hitting our milestones with great accuracy, and overall having a sense of accomplishing something important every single week.
The strict deployment schedule to Staging and Production, and the planning of the weekly work (knowing what we want to achieve, and knowing how many cards each person can handle per week, with some buffer) has turned us into a well-oiled machine.
Using the right tools
It is crucial to have tools that are easy to set up and easy to use. If the tool has those properties, then team members are not afraid of changing the setup when needed, and they can do so quickly and efficiently.
JetBrains tools at Enplug
Our server is entirely written in C# and our senior engineers have been using ReSharper extensively for several years for their C# projects. It is such an integral part of their developer toolbox. Independently, our Android engineers chose IntelliJ IDEA as their Java development IDE, because of how easy it was to get up and running. That is how we got to know JetBrains as a company, and from there we expanded our usage to other tools in their offering.
Two years and counting
- IntelliJ IDEA: Very sleek and not an overly complicated IDE.
- TeamCity: Easy to set up and and intuitive to use. Runs all of our builds and test suites.
- YouTrack: Use it mostly in Agile Boards mode. It’s very handy to track our sprints and releases.
TeamCity was a very pleasant surprise, it is so easy to set up! And it’s free for our needs (professional license). It runs a full build and tests on every check-in, and drops a zip file with some artifacts at a location accessible with http. We set it up once and have rarely had to look at it again.
IntelliJ IDEA is solid, easy to set up and easy to use. It also has a free Community Edition!
Our engineering team is using YouTrack extensively. From planning our sprints to tracking the day-to-day work, it has proven to be an invaluable tool to keep our processes on track. Everything an engineer is working on, be it developing features, end-to-end tests, build failure investigation or support tickets, is entered in YouTrack.
JetBrains: first place we look for new tools
Across the board they’re consistently reliable and performant. It’s evident to us as end-users that the quality bar is set high at JetBrains.
Every time we are looking to improve our development productivity or processes, we now instinctively check the JetBrains offerings first. We know it will be high quality and easy to use. Through our use of JetBrains products, we have made our developers more productive and our management processes more streamlined.
We’re currently using Github for source control. Our Chief Software Architect is a database freak, and he’s currently enrolled in the Early Access Program for JetBrains database tool, 0xDBE.
About the Author
As Chief Software Architect @ Enplug, Bruno Denuit-Wojcik is responsible for the architectural design and direction of all of Enplug’s products: the ad server, the player and associated app framework, and the various apps running on the Enplug displays. He designed most of the software, and implemented many of the core parts.
Prior to Enplug, Bruno worked at Microsoft for over ten years as an engineer, mostly in the SQL Server and SQL Azure teams. He specialized in relational query algebra and query optimization. This was followed by a few contracting stints in the banking sector in London. Bruno is passionate about building large-scale solutions from the ground up, and is a databases veteran.