The Internet of Things revolution is upon us. Our phones are getting smarter, internet is becoming more accessible, even dogs have connected accessories. Making these products isn’t limited to electrical engineers or obscurely funded start-ups; with a little bit of programming knowledge and the right tools, you can make your own connected ______ in no time.
“Houston, we have a problem.” Viget’s conference rooms are active. And I mean active. Meetings, ad-hoc phone calls, pairing sessions, even 3D printing, all take place in our conference rooms. As a result, finding a room in a moment’s notice can be something of a challenge. Last year, we explored hanging colored origami lanterns outside conference rooms. Like “ON AIR” lights, we wanted to make it super simple to know which rooms were available and which were not. We called these “Illumigami” lanterns.
It wasn’t long before Illumigami became an office staple. As you can imagine, the elegant solution was not only effective, but fun for office staff and an eyecatcher for office visitors. It was a prototype that worked well and the other offices were eager to try it out. So, we hit the whiteboard and re-imagined Illumigami. It needed to scale across our other offices and their unique conference room situations. The result is a journey that you may find interesting if you’ve ever been curious about custom circuit boards or 3D printing.
Nothing makes me happier as a programmer than automating monotonous and incredibly time-consuming tasks with a quick script.
Increasingly these scripts tend to involve interacting with external (read: unreliable) systems. Oftentimes this unreliability can suck the fun right out of scripting. Run a script. Watch it fail halfway through. Go clean up after the partial execution. Run script again. Watch it fail at 99%...
So how can we make potentially unreliable automation scripts fun again? Idempotency.
Our recent explorations into the world of connected hardware have taught us a lot about the engineering design process. Namely, engineering design is not a linear path, but a highly creative and dynamic process characterized by problem definition, rapid iterations, and working solutions. I’d like to take some time to touch on this process by illustrating its nuances within the context of a novel internal project: The Whiteboard Cleaner Bot.
Whiteboard cleaning prototype: An internal propeller pushes a rotating cleaning head into the whiteboard.