Hi, there. I’m Justin Schneck, co-author of the Nerves Project and, as of January 2020, a Software Engineering Fellow here at Very.
This new role is one I’m quite excited about, and I thought I’d start off by sharing a little bit about myself (besides what you can find on my LinkedIn profile), about the Nerves Project, and how we’re planning to grow Nerves to support Very client projects.
From Commodore 64 to Embedded Developer
My journey with IoT development began with computing. When I was a kid, we owned a Commodore 64 home computer (if you know, you know, but if you don’t, here’s a brief history). Like most home computers at the time, the Commodore 64 shipped with a BASIC programming language interrupter which was used to access the disk drive, run programs, essentially any task. It was the first time I ever had to use a programming language to get something to work, and it sparked a passion that’s followed me around ever since.
My path to embedded engineer, however, wasn’t a straight line. In addition to having an interest in computing, I also wanted to be a musician. After studying music and becoming a drummer, I quickly found that unless you “make it big,” being a musician isn’t the most lucrative job out there.
In search of a more fulfilling career, I transitioned into doing recording engineering work in LA and NYC, which, due to the change from analog to digital recording, rekindled my love of computing and automation. From there, I was able to begin my professional programming career, working with a lot of C, C++, and object-oriented programming. When smartphones started coming out, I dove headfirst into mobile development, becoming semi-obsessed with the idea of being able to write applications for pocket computer devices.
Then, I had a thought: “What if I could write applications that interact with the real-world objects around me? I love riding my motorcycle. How cool would it be if I could walk up to the bike and it just started itself?”
With zero experience in embedded development up to this point, I dove right into this motorcycle project, and something awesome happened:
I got it to work.
I felt like James Bond, casually walking to the parking garage with my coworkers and having my bike start up seemingly on its own.
From that point on, I was hooked on embedded and how I could leverage it to bend reality to my will.
How the Nerves Project Was Born
Now, here’s something I learned quite quickly about embedded development shortly after successfully hooking my motorcycle to my phone: that was the easy part.
Getting the hardware running with Arduino micro-controllers and getting the software to work on the smartphone wasn’t actually that difficult. What presented the biggest challenge was the air gap between these things, the stomping ground of the unknown. Nobody really knew how to get everything to work together, and there wasn’t a lot of reference material out there, even after the Raspberry Pi came out.
At this point, I decided to build a framework that would make it easy for people to connect phones and embedded devices together. I knew that I couldn't just use Arduino's, because securely connecting an Arduino to a wireless LTE network, and getting it to communicate across the servers, presents a lot of huge obstacles.
Instead, I started out writing the framework in Ruby — until a friend asked me if I’d ever heard of Erlang, and Elixir by proxy. I soon discovered that the Open Telecom Platform (OTP), the heart and soul of Erlang, is the perfect choice to do the kind of supervision I was looking for in this framework. From the ground up, OTP’s process supervision ensures that not if, but when something goes wrong, that the right action is taken. I was sold, so I threw out my work in Ruby to write the framework in Elixir instead.
Pretty soon, I was embedded in (pun intended) and obsessed with the Elixir community. It was then that I met Frank Hunleth, a brilliant system architect and software developer who was already using Erlang to create a similar framework to what I wanted to build. He called it Nerves. After talking about our mutual goals and what each of us could contribute, we joined forces, rallying around the Nerves name and brand.
Together, we co-authored the Nerves Project to help developers craft and deploy bulletproof embedded software in Elixir — and we’ve been working on it ever since.
But the story of Nerves is far from over.
Nerves in Action at Le Tote
One of Nerves’ first success stories starts in a Biergarten in Germany. While in Europe for an Elixir conference, I had dinner with Lance Halvorsen, currently the senior software architect at Le Tote and the author of a book called Functional Web Development with Elixir, OTP, and Phoenix: Rethink the Modern Web App. After talking about everything from better development practices to motorcycles, Lance told me he was getting ready to go work for an online women's clothing rental company called Le Tote, and they needed an embedded engineer.
Lance asked me, “How would you like to work on Nerves full time?" and I think I said something along the lines of “Yes, a thousand times yes.”
Lance’s promise to me rang true: while at Le Tote, I spent a majority of my time working to improve the Nerves framework, and it was during this time that Frank and I also built NervesHub, our device management service. This work was not only fun for me but great for the business.
At Le Tote, I worked with Lance and a lot of other awesome teammates, using Nerves to build out the logistics and warehousing portion of the company’s process. Surprisingly, there are not a lot of off-the-shelf solutions for warehouse management that accommodate for a rental model, where most of the items that leave the warehouse return. Le Tote needed to account for each item and monitor it throughout its lifecycle, including things like re-steaming, pressing, and finally packaging the garments.
Le Tote kept track of each item through barcode scanners, but this method wasn’t meeting Le Tote’s high standards for efficiency. Each garment has many touch points in its warehouse lifecycle, and the barcodes on each item of clothing were tiny, hidden on the back of the tag. Employees had to find and scan each individual tag at each touchpoint, adding a lot of unnecessary time to the production cycle.
Le Tote brought us on to help them develop and implement an RFID system to more efficiently track their product. And here’s where Nerves really shines: in addition to building this custom RFID solution, we used Nerves to build web based kiosk systems to guide employees with all kinds of tasks all across the warehouse.
Nerves made developing the kiosk system incredibly easy because it helps apply the principles of web development to hardware. We could take web developers and “trick” them into becoming embedded engineers by having them create web apps which would then be run on top of a Chromeless Chrome window that's rendered on a device’s display.
This approach allowed us to then be able to create rapid prototyping mechanisms. We were able to replace a third-party vendor for pack stations and receiving workstations within months by being able to rapidly develop and iterate on our own software and deploy it so quickly and easily. We have also found that by using Nerves, system reliability and up time drastically increased.
What Brought Me to Very, and What’s Next for the Nerves Project?
What’s next for Nerves? Well, that brings me to the reason I’m writing this blog — to share how I arrived at Very.
I’ve been interested in Very for awhile, ever since I learned about the Hop project, where the team used Nerves to build the first-ever beer kiosk powered by facial recognition. As someone who brews their own beer at home, the project was exciting to me, and every time I would see Very employees at conferences, they’d tell me about another new, innovative product they were building.
Honestly, I got really jealous. I was very eager to work on innovative new projects using Nerves in production.
That yearning for more, plus the awareness that Nerves is ready to take the next step in its evolution, motivated me to keep researching Very.
The final push for me came during the Gig City Elixir conference in Chattanooga, Tennessee. You know, people say that Philadelphia is the city of brotherly love, but I think Chattanooga is definitely in the running. Everyone I spoke to from Very spoke highly of one another, and of management, which was refreshing and amazing to hear.
I started talking more in-depth with the senior engineering leaders at Very, and about the huge potential for Nerves to grow as we use it to benefit Very’s diverse clients — from IIoT for manufacturing companies to consumer IoT.
And now here I am, joining the team. I can’t wait to see where this role takes me, Nerves, Very, and most importantly, our clients.
By the way — if you’re ready to start your IoT project with some Nerves experts, drop us a line today.