This is the first in a several part series on Virtual Devices. What I’d like to share in this post, is when I first felt the pain that led to the creation of my startup, KnowThings.io.
A few years ago, I went on my first cruise with my wife and family. I took a few weeks off from my job – at the time I was a solutions architect for CA’s Continuous Delivery products and solutions, with a focus on our Service Virtualization. While the time off was a needed break, I couldn’t help but make some progress on my side project – working on the code for my motion sensor array event engine for my house.
Now, since I’m the sort of person who brings code on vacation, so packing for a cruise in this instance was lots of fun. I made up a little kit, with a couple of raspberry pi’s, a breadboard, associated jumper wires, resistors, motion sensors and a small portable router/gateway. Everything I’d need to work on the problem.
First I had to get through airport security. It was a blast, of course. All I can say is that the TSA tends to have questions when your carry-on goes through the x-ray machine with a variety of electronics components, wires, and naked PCB in it.
The next big problem: cruise security. This was the first time I had taken a cruise and I swear the security for the cruise was even more wary of a bag full of unknown and faintly intimidating copper and PCB. Thankfully they let me on board with my dev kit intact.
That evening I found myself on the top deck, having a couple of beers with my wife on one of the little rattan tables…. surrounded by three more tables covered in sensors, breadboards and hideously re-purposed cat 6e cable. The scene looked like a buffet for Johny 5. It was fun coding amongst the drunken vacationers; one person even realized my screen kept flashing and doing things as they paced back and forth behind me. But, as fun as that hour or so was, I still spent about the same amount of time setting up and breaking down the hardware as I did coding.
For the control and server side of this little project, I had already built out a virtual service to handle the control and data aggregation side of the solution. When I was working on that code, I needed nothing more than my dev laptop. The virtual service meant I could get work done, when and where I wanted, without the risk of an angry spouse and barking dog when test cases for the motion sensor would turn on the panic lights at 2 am. If only I could virtualize the hardware the same way I virtualized the service.
A virtual device, is pretty common in Unix/Linux style systems. In fact, much of the magic and dismay in Unix/Linux systems comes from how easy it is to use a virtual device. In that world, a virtual device appears as an actual device at the user software level, but does not actually reference a physical device. Well, that was what I needed in an IoT context as opposed to operating system. I didn’t want to worry about getting through TSA, or finding room in my bag, or a one hour setup and tear down time for simple test driven development. All I wanted was the right bytes on /dev/tty0. I had found an itch I needed to scratch.
At the time, my day job focused on architecture for continuous delivery and virtual services. My customers had all the security and setup/tear-down issues I experienced on the cruise, only on a much larger scale in their data centers. I was visiting one of our large customer/partners who had implemented SV (Service Virtualization) for continuous delivery on their back-end systems and were very pleased with the results. They gave me the grand tour, proudly showing off the 100,000+ devices they had sitting on racks. Incorporating SV had allowed them to speed up and automate most of their development and QA for the enterprise side of the house. Those racks were now the slow point on the critical path. The solution as they saw it, more racks, more synchronization between automated processes and people processes.
For me, the solution wasn’t in the physical world or orchestrated people processes. It was automation and software. What SV had done for continuous delivery and continuous testing for n-tier apps had to be brought to IoT.
I saw a world where I don’t have to bring actual hardware with me to tinker with on vacation and where businesses don’t have to have thousands of things to do their work. I see a world of no things… or KnowThings.
In Part Two, I’ll take a closer look at how Adaptive Virtual devices accelerate development and QA, and why they are the most effective and efficient way to meet the needs of development and QA in a rapidly changing software and hardware environment.
For a more detailed, and technical look at Virtual Devices, please see the paper I co-authored along with Zeinab Farahmandpour, Steve Versteeg and Jun Han.
Take our twitter poll!