Hacking hardware

This past month or so I’ve delved into hacking hardware (not building, but taking apart). I’m leading the efforts at Owl, the company I work with, to expand their device inspection and analysis service to medical devices. As part of this work, I have been learning quite a bit about how hardware can be inspected and hacked.

Grand ideas
I had no intention to go deep into hardware snooping, but, while reading up on DEFCON #badgelife, I stumbled upon Joe Grand, also known as Kingpin of the notorious L0pht Heavy Industries of the 90s. I had heard of L0pht back in the day, so it was quite interesting to catch up with what Joe and his cohorts have been up to since.

While Joe is one of the fathers of #badgelife, I started reading up on his hardware hacking. Quite fascinating topic.

Crossing streams
Then, while doing apparently unrelated research on optoisolators and hacking data diodes for a demo I am building, I stumbled upon a video showing how to create an out of band connection over a data diode via RF.

You now how this goes. Digging deeper into the guy mentioned in the video, Monta Elkins, I found his SANS instructor’s page and a presentation his did on jumping air gaps.* More searching and I came upon this incredibly interesting and fun presentation of hacking 20 things in 45 minutes (getting root access to a bunch of consumer electronics). Then I watched Monta’s DEFCON presentation where he uses an electric drill as a proxy for hacking an industrial logic control.

Drilling into the subject
The video did a great job reinforcing all the things I had been learning from our own hardware guys, reading about Joe Grand and others, and other research into hardware inspection and circumvention (always about circumvention – we are in the cyber security space, after all).

Two things I want to point out from what Monta said in the electric drill presentation.

First, he was examining the firmware and showed how knowing the hash of the code of the firmware, one could check for a compromise. So, Monta asks, should manufacturers publicly publish hashes of their firmware so we could verify the software is good?

Secondly, with all this hacking, he pointed out that things would have been easier if the programming pins were on the outside. So, he ask, should manufacturers make their programming pins accessible from outside their device to make it easy to check firmware, make mods, and the like?

Both are interesting questions.

Not just academic
OK, so I mentioned at the top I had not intended to get deep into hardware hacking. But it fit well the path I’ve been taking. At first, I wanted to turn to our own device inspection experts to help me get the word out on Owl’s device inspection services. But after talking to our experts, reading and researching the topic, and validating my thoughts with our experts again (I don’t want to say something impossible), I did a hardware inspection of my own.

I had purchased a patient monitor for our experts to examine, but the shutdown (and their schedules) got in the way. So I did it myself. And did a webinar on it. The webinar is a great summary of all that I learned on this hardware hacking journey (and you get to peek inside a patient monitor).

Fascinating. And looking forward to doing more.

*In case you’re interested, here are two more examples of jumping air gaps, via RF and via power supply vibration.

Pause for station identification

Wow. The world is such a different place since my last station identification. I’m writing this in the midst of the largest global disruption since perhaps WWII. Though, since last station ID I’ve also learned and grew in ways I had no inkling I was able to 5 months ago.

Me
Who am I? I’m Charlie Schick. I’m passionate about exploring how the intersection of bits and atoms help us form the narratives of our physical-digital-sublime world; particularly how we use physical constructs to connect to the sublime. I also advise companies on product design and strategy, market insights, and innovation strategy. I’m a recovering PhD, too, and proudly ex-IBM, -Boston Children’s, -Nokia.

Right now
My current 100% is with Owl Cyber Defense, a cybersecurity hardware and service firm. I lead their business development and corporate innovation in healthcare and the life sciences, growing a new segment for Owl products and services by uncovering and establishing new and innovative business, partnering, and product opportunities.

I see myself occupied by Owl for the foreseeable future, though outside of Owl, there have been some other fun developments.

One more thing: I enjoy sharing my experience, insights, and exploits, especially through writing for and speaking to large audiences and engaging with others in stimulating conversations, including the office of CxOs. Let me know how I can help in this capacity.

And of course, my standard disclaimer
(my usual riff off of an ancient Cringely disclaimer)
Everything I write here on this site is an expression of my own opinions, NOT of any of my clients or anyone I work for, especially Owl. If these were the opinions of my clients or Owl, the site would be under their name and, for sure, the writing and design would be much more professional. Likewise, I am an intensely trained professional writer :-P, so don’t expect to find any confidential secret corporate mumbo-jumbo being revealed here.

If you have ideas or projects that you think I might be interested in, please contact me, Charlie Schick, at firstname.lastname@molecularist.com or via my profile on LinkedIn.

Yes, you can find me on Twitter. But after many times paused with my finger on the ‘delete account’ button, and letting all my social media channels go fallow, I’m really out of practice, so perhaps now’s not the best time to message me there. Feel free to try, though. Might be good for my Twitter ‘rehab’ (that doesn’t read right, does it?).

Image from The-radio (a radio converted to use a Raspberry Pi)

The value of the open source community

One of the most valuable components of open source hardware and software making is availability of code and guides built by a community around a solution, hardware, or topic.

The corollary to that is that no open source solution or hardware will succeed without a critical mass of active users.

Duh
Ok, so that might sound obvious. But let me illustrate what happened to me last week.

I’ve been breaking down and inspecting a patient monitor recently. I wanted to have it send some HL7 messages to a server, so I could see the kinds of messages and see how that messaging can be hacked. I had a Raspberry Pi 4 from another project looking for something to do, so I typed in ‘open emr raspberry pi’ to see what I could find.

There were a few. Cool. And there was one that already had an image for the Raspberry Pi. So I downloaded it, put it on a SD, and then tried to use it.

Nope. It was only for the Raspberry Pi 3.

No worry, there seemed to be a wiki with instruction on how to install it from scratch. Though it seemed like there were some missing pieces, the code was a bit too generic for Raspbian, the applications to download didn’t really map to PyPi where it as coming from.

No worries. I slowly worked my way through things, stepping forward, and falling back as I did my troubleshooting. What became obvious was that not many folks seemed to be talking about the process, so I really was flying blind, no examples, tips, forums, guides to help me in the install.

Ok, worries. I saw what hinted to be easier ways to install from PyPi. Why wasn’t that in the official guide? Why didn’t the PyPi stuff match the stuff in the official guide?

No matter. I managed to get the EMR server up and running, learning along the way what was needed to make this thing run.

Then I tried to install the client. And the official guide wasn’t helpful at all for a n00b like me to sort out the errors. Why was it so f-in hard to just install the damed thing? Hadn’t this EMR been around for years?

I then saw that what little was written up for this EMR talked about SUSE, a distribution of Linux I didn’t know at all. But the SUSE site had a guide for installing this EMR. So I loaded SUSE on an SD and did the painful thing of setting it up to use.

Though this time I set a time limit, as the whole process really was disheartening.

Needless to say, the time ran out.

Community helps
That evening, looking back on the two or so days I was trying to make this happen, I realized the value of a broad user base sharing code and insights.

I’ve built a ton of projects, designed boards, coded things – all with a backdrop of guide, tutorials, example code, easy to deploy tool chains, and lots and lots of community chatter.

I couldn’t find anything of the sort for this EMR (and I think it’s been around for 10 years!). And the lame state of the official guide, websites, and such suggests that this isn’t really something that I can do.

Two lessons
The first lesson is for me – stick to things that reside in a healthy ecosystem of code, hardware, examples, history, and people to talk to.

The second lesson is for all of us – if you want to succeed, make an effort in building that ecosystem, one the feeds on itself and rapidly grows as folks use what you make, share what you make, and hack what you make.

A belated realization
When I was selling a Hadoop version way back when, I was wondering why the more established players flaunted the levels of commits and the like.* I knew it was a proxy for interest. But now I know that it’s also a proxy for examples, creations, and support from the community. That should be considered also when choosing software or hardware platforms to build upon.

Right?

What do you think? Do you have similar stories?

*Actually, when reading up on a repo on GitHub, I always look at the last commit dates, not only to see how active the repo is, but to tell me if I’m going to have any trouble. This isn’t a petty thing to think of, but actually an important indication of things such as quality, relevance, and usability (as I guess I’ve always implicitly known, reinforced by this EMR fiasco).

Image by Tumiso

Fun with cardboard circuits

The usual progression for making printed circuits is (very roughly) you design the circuit, prototype it on a breadboard, design your PCB, and iterate on your PCB design.

Impatient hands
I’m a bit too impatient to wait for the PCB part. Also, I learn better having things in my hands. Iterating at the PCB design level, where you need to wait days, if not weeks, for your PCB board to come back, isn’t ideal for my impatient ways.

What I noticed is that after prototyping the circuit, I like to lay it out on cardboard. Doing this gives me a feel for scale, arrangement, and process.

Of course, for now, I’m doing it with through-hole components, though I am debating doing it with with surface mount devices.

One thing at a time.

As for ‘one thing at a time‘, cardboard prototyping also fits in well with how I set myself to learn. I get to focus on one thing at a time. Be it, design, or new arrangement of parts, or a new circuit type. I think before you hit the PCB design, the level of learning to get there needs a few more steps than usual.

Some recent cardboard projects
I mentioned what I’ve been doing to learn #badgelife concepts. The whole process of printing and pasting onto cardboard was helpful in giving me an understanding of scale and packing of components.

Yesterday, I spent the day building a 3.3V power regulator on cardboard (see GIF above of it in action). I had read schematics on how to make one. Bought components to try it out on a breadboard. And then put it on a schematic to print and guide building of the circuit on a piece of cardboard.

Interestingly, by futzing with it in my hand, I saw an opportunity for an on-the-fly change, adding a resistor and a diode to indicate power was on.

And the process reinforced some insights I gained while doing other similar cardboard-based circuits around soldering on the copper tape, handling and laying down copper tape, bridging the components and the coper circuit, and, of course, scale.

Surface mount, anyone?
From the cardboard proto of that owl badge I’ve been working on, I went and made a PCB. The PCB will be for through-hole components. The exercise was really to see if I could make a custom outline, silk, resist, and copper pours (fun stuff). I didn’t want to also have to learn other SMD-related issues.

Also, I know when the board comes in I’ll learn a bit about handling the boards, soldering many boards, and how might it hang from a lanyard – things I knew best learned with a first run of PCBs.

The next step is to convert the badge to mostly SMD, mostly to keep the front pristine, but also to learn how to search and buy surface mount components (soooo many). But I’m wondering if I should do a round of cardboard protos, first. SMD components will allow me to shrink the board somewhat (sand save money). Might want to try that out on cardboard rather than via PCB iterations.

Let’s see. In any case, I will report back.

And then there’s brass
As a parting thought, I read up on free-form circuits built from brass rods. Check out these guys. Lovely sculptures.

Haha. One more process to learn and tinker with.

What about you?
What materials are you working with outside the usual? Wood? Paper? Fabric?

Let me know Send me links of your work!

Acquiring new skillz, one achievement and a time

I am reminded of D&D, where everyone starts at Level 1 and you need to go adventuring to gain experience. Overlaid on that, each character has their class and sets of skills. And as they gain experience, they achieve new levels which open up new capabilities.

The Maker Class
I feel that I’ve been living the Maker character class. Part of that are a string of skills that I slowly work at and gain experience. And (ok, a bit off the D&D formula) as I level up on each of those skills, things become easier and a whole new set of things open up.

Some skills I’ve been working on these past 9 months since I really started on this journey:

  • Arduino (and similar dev boards)
  • Sensors
  • Soldering (through hole)
  • AVR programming
  • Circuit building (including paper circuits)
  • PCB design
  • Badgelife (combination circuit building and PCB design)
  • 3D printing

Thems a lot of things to learn.

Stepwise
Where this whole ‘level’ thinking came from is the realization that the quickest way for me to learn things is to set stepwise goals that teach me one new aspect of a skill.

For example, I’m totally fascinated by badgelife – the mixing of art, hacking, and PCB design. At first, I had a ton of ideas of what I’d make. Then I realized that there were foundational skills I needed to work on before I could make anything complex.

So I started with just lighting an LED. I printed out my company’s logo, put it on cardboard, poked some LEDs through the cardboard, and laid down some copper traces to connect the LEDs to a 3V battery.

I ended up learning a bit about scale, shapes, fitting things in. The exercise also got me thinking of other ways to do the same thing.

Learning with your hands
For the second iteration, I printed a larger logo, made a more robust circuit (copper tape and solder), and programmed an ATtiny45 to fade the LEDs (the one in the GIF).

That got me thinking of the challenge of programming a board once built, and perhaps other circuits that could do the same thing, and counting components.

From that, I read up on astable multivibrator circuits, as a way to blink LEDs without a circuit. And rather than be theoretical, I printed out a circuit, pasted it on cardboard, and connected it all up (the other GIF). A major driver to do this was to see the scale and what it felt like in the hands. From there I could iterate, make smaller. Perhaps I could add to the circuit to fade the LEDs.

More hands on building to learn things, I suppose.

Level up and up
My very first D&D character (yes, I played it) was Harg from the City Afar, a thief (I always preferred such character classes). An, obviously, unforgettable name. And a fun time while he lasted.

But this Maker class guy is me, and I’m not role playing.

I wonder where the adventure will take me. All I know is that I’ll be doing it step by step and learning amazing things along the way (with a lot of kobolds getting in the way).

Rapidly leveling-up on a new, well-trodden path

In the past 8 months or so I’ve been on a journey to learn everything I can about microcontrollers, circuits, electronics, components, sensors, and embedded software.

It all started with a second attempt (albeit 10 years after the first) at making something with Arduino. Since then, I’ve built more similar demos for work, but also fun stuff for me.

New to me, at least
As I became sated with using assembled boards and sensors, I started looking into the microcontroller itself. I found numerous examples of folks programming just the chip that’s in the Arduino, part of the AVR family of microcontrollers.

I had a few chips belonging to an Arduino board I had lying around (the original one I had bought in ’09) and started playing with them, learning how to program them at the bare-chip level. And I followed examples on how to build a programmer, too. 

There were also smaller AVR chips, the ATtiny45 and ATtiny85, which were versatile, simple, cheap. Yes, up in the image to the right is an ATtiny programmer shield for the Arduino I designed (still being prototyped at this stage, though).

I was leveling up here, real chip-fu!

A familiar path of discovery
Then I saw how many ATtiny or AVR programming boards were out there. And I heard from folks that they too took that path. Indeed, I think this step of bare-chip programming is the next step most folks take after messing with Arduinos and that catapults them even further.

At the same time, I was asked to do more hardware constructs for work and I realized that I was no longer dabbling. I’d already spent some hundreds of dollars for work and for me. I really hadn’t taken good notes or managed my code well. Time to wisen up.

Not stopping yet
After playing the AVR programming, I’ve felt more confident learning about circuits, and building them – low drop out voltage regulators, astable multivibrators, paper-based circuits.

In this last wave of leveling up, I’ve been taking good notes and managing my code better, like the scientist I am at heart insists I do. And the rate I am amassing experience points is accelerating. It’s exhilarating.

Some of the things next up for me include more elaborate and polished demos at work, getting deeper into 3D printing (I did), and continuing up the learning curve of badge life. 

There’s no shortage of things to learn!

Getting back to the physical world

I first heard of the distinction between bits and atoms to describe the digital and physical worlds back in the mid-90s. Back then, atoms ruled – books, factories, records, physical things. But there was a distinct acceleration of the digital world of software, bulletin boards, the nascent Web, digital things.

I was truly an atom-level thinker
Back then, I was just out of grad school and entering my post-doc. I was a researcher that thought on the molecular level, trying to understand how the influence of specific atoms, on specific spots, on specific structures interacted with each other. Often the difference between the molecules I worked with (protein, DNA, RNA) was a single atom.

That’s the programming I knew – using biological systems to create tools and objects for research, to uncover natural principals and build upon reality.

And I did well, writing a bunch of papers and creating a foundation that helped the lab grow in a new direction.

Then I became a bit-level thinker
As the web took off in the late 90s, I got more involved in software, the internet, and mobile. This interest (always present – my father ran management information system departments) was enough to catapult me out of the atom world and into the bit world.

True, I worked for consumer electronics companies, but my role was not in the hardware, but in the software that was going to add so much value to that hardware.

And I did well, helping large brands engage with customers through digital sales and marketing.

Back to the atom thinking
As I mentioned before, I’ve been spending a lot of my time making things based on microcontrollers, sensors, and lots of LEDs. Yes, I find myself back in the world of atoms, thinking of how an experience can manifest itself through tangible goods. 

This is a different atom world than my first go at atoms, but I see a long red thread of my interest in things from now all the way back to then. And the perspective I gained of the interplay of bit and atoms, especially at Nokia, during my bits years, has become valuable.

Indeed, I currently work for a company with a strong hardware culture. And working for them sort of led me to solving problems with hardware.

Furthermore, talking hardware all day, and tinkering with hardware all night, has filled my mind with exciting potential futures. For example, I find myself thinking and talking a lot about how we can make the digital world, digital concepts, more tangible, more physical.

I hope that ten years from now I can say I did well, making a difference once more with atoms, but with a twist of bits.

Project: Neopixel celebration goggles

I was checking out some DIY electronics at a local Microcenter, dying to buy something (hardware hacking has started to consume my attention, lately). I saw some NeoPixel rings that reminded me of a Celebration Spectacles guide I had read on Adafruit. Then I saw on the store shelf an Adafruit kit for making steampunk-ish Kaleidescope Goggles, making me to want to build some form of LED glasses, which made sense, as New Year’s Eve was only a week or so away.

Putting all together
Interesting hardware and useful guides with code and wiring diagrams make it really easy to do your own hardware projects. I’m not surprised that my first wearable project was inspired by Adafruit. I had first heard of Adafruit many years ago specifically because they were making hardware to be sewn into clothing – true wearables.

I used the two Adafruit guides as my inspiration. Like in my kitchen, recipes are suggestions. I modified the Celebration Spectacles build and combined and tweaked the code from both guides to have the animations, sequencing, and timing I wished to have.

In the end, I used the two Neopixel rings (the most expensive parts!), a positively adorable Trinket M0 (more on that in future, for sure), a pair of specs from the dollar store, and a battery. I then soldered it all together, hotgluing the setup to the frames.

Pretty cool.

What I learned
This is so far the most physically complicated hardware project I have done due to the wire routing, hotglueing, and careful soldering needed. I had no problem prototyping the set up, or writing the code. Though I had to pay special attention to the assembly – soldering and glueing are sort of one-way activities in that they are a pain to reverse. To facilitate connecting the pieces and assembling the glasses, I made a paper template to mark out position of things and to measure and route wires. Being patient and checking things twice made the assembly go smoothly and efficiently – much faster than I expected.

With respect to the software, I had partially wanted to do the spectacles as an excuse to use the Trinket to do something with CircuitPython. Alas, the animations in CircuitPython were so much slower than the same animations in Arduino, so I kept with the Ardiuno IDE. I guess I’ll keep playing with CircuitPython on my Circuit Playground Bluefruit. But this was a good lesson in the difference in the capabilities between Arduino and CircuitPython.

Funny thing, though, just before I put the Trinket on the frame it seemed dead. It had some touchpad code that I had last played with and I could not get the board to connect to the Arduino IDE. I panicked, pressed the board’s reset button uselessly, until I read that if you pressed the reset button ‘twice’ the board would go into USB mode. Just like other CircuitPython boards. D’oh. How’d I not catch that before?

Last thought
I was able to assemble it all in time for New Year’s Eve, wearing it all that night and then the next day as I drove around and walked the dogs. Haha.

I thoroughly enjoyed working with the NeoPixels and the Trinket, so expect more in future. Indeed, I’ve been sharing wearable examples with my mom and she’s keen on me helping her with a project around pixels and microcontrollers on something she might sew or embroider.

Let’s see.

Thoughts on personal data usage in the age of ‘peak data selling’

The way we use deep personal data needs to change. Indeed, I’ve been saying this for a few years now. As everyone knows, megacorps like Google and Facebook[1] have built their insanely profitable businesses around selling products based on personal data. And other folks want to be as successful, too, so they lazily try to build business built around the collection and selling of personal data (data monetization! drink!).

What’s with the ads?
Advertising is one of the first ways folks think about selling data. Advertising built publishing and TV, and then built Facebook and Google to gargantuan sizes. Their success made everyone think of a data monetization strategy – how to sell personal data to someone who will pay for it.

Now everything is a data collection vehicle to sell ads, even cars and toothbrushes.

I can’t stand ad-based models. The farthest back I remember being against advertising-based business models was when I was advising an innovation team developing a phone app back in 2004.

Choosing an ad-based model for your product is lazy, especially if your whole business depends on it (what the f- you smokin’?). For some, it can work (ahem, Google, FB, Instagram, etc.). The challenge is that ad-based models require control of a channel (or at least a heavy presence), large numbers of dupes to hand over data (scale), and a reason to buy ads on the platform (frankkin’ eyeballs, dude!). As the list of failed ad-based companies show (including newspapers and magazines), it’s a hard model to succeed with.

Data first
Ads are not the only way to monetize data. The second way is to sell insights from the data to someone else. Indeed, in digital health, this is big – collect health data and sell to insurers, hospitals, or pharma. Once again, those insights require a significant number of users to make it valuable to data buyers. And, just like selling data for ads has nothing to do with the user giving data, often digital health apps do not return value to the user giving data to the same level as the value they give to the data buyer.

Basically, data models seem to sell the data separate of returning any value to the user giving the data.

Value to the user
Ok, one _could_ say that ads are valuable to the user. Timely coupons! Discounts! Personalized ads! I mean, they must work for Google and others to make so much money.

Dunno. I think these days, ads are just so much noise that most are adept at filtering them out.

Also, I admit that, while I was always against ad-based business models, until a few years back I was supportive of data brokering (selling data to someone else) business models when advising companies.

Though, when I used to suggest collecting user data and selling to others for insights, I always wanted to do it in a context where the value is returned to the user. For example, collect data for a pharma to either pay the user or help the user get well (though, in the end, I think that’s a bit of a fantasy).

Tighter value loop
Value to the user needs to be the metric in all things regarding personal data. Hence, where I have evolved is to use data in a tighter value loop, where the data collected is used to improve the service that is collecting the data. For example, Apple and Netflix have a lot of data on us, but our data drives their business, not some product for a third group. John Hancock and Progressive track people to reward for good behavior.

I’ve been advising companies to think of a data strategy that benefits only them and their user, not some other group, not selling data to the highest bidder. I’m all for collecting as much intelligence on your customer as possible. But use it for the benefit of the user, not the abuse. Personally, I want the products I use to know me and help me. My data should be tightly coupled with my benefit, not someone else’s.

The data genie is out of the bottle
Because of the race to collect data in the past decade, personal data is everywhere. And with the general trend for everything to be a data collection point to sell data to others, this is going to be hard to reign in back all the bad behavior that has gone too far, with risks too great.

Is the only option to delete your apps or use a tool like Jumbo or quitting the digital world altogether?

Too late: your face is everywhere and being used to make money for someone else.

The good news is that the government and other folks are waking up to all of these personal data privacy issues. I’m not so sure if the average Facebook user really gets it, though.

Still hopeful
I know we can make this work. The digital world of Google and Facebook is not the first ad-driven, data-collecting, and data-selling world. There are other indistries (like healthcare and pharma) who need to protect data and use it only for clearly consented uses. So there are frameworks to build off of.[2] Why would it be any different in the digital world?

Parting thought
I keep thinking of ‘peak oil’ and how Sudi Arabia is planning for a post-oil world. Are we at ‘peak data selling’ and will Google be planning for a post-data-selling world?

I think they better.

[1]Facebook rant: I’ve never liked Facebook. And seems like they are scum, anyway. They say they don’t sell data, but story after story shows they play fast and loose with personal data, from Cambridge Analytica, to secret schemes, to developer access, to silent tracking. And Facebook really doesn’t care, even in the face of public and government scrutiny. They are the poster child for f-ing up with personal data. Why the frak does anyone still use facebook?

[2] I keep thinking of a certificate or label of trust that would be a quick way to tell someone that their data is safe. For example, a few parameters, such as if data is collected and what Y/N, data for internal use Y/N, code and organization audited for privacy and cyber controls (also, consent and re-consent constraints) Y/N, data for external use (ads, sell, access) Y/N. Here’s one attempt at this data use label.

Image by Chris Sansbury from Pixabay

New obsession, new future?

The demo

Last September I wanted to go to a conference in Sweden and my boss asked me what I would do different from my attendance at the US edition of the event the prior April.

I said, “I’m gonna make a bioreactor demo.”

I wrote about the demo here on our corporate blog. In short, to me a bioreactor is no big deal; it’s just a flask with bugs and media. But for others, there’s a real nerd factor, especially with sensors stuffed into the flask, cables streaming data, and the network connectivity I was demonstrating.

Yes, the pic up to the right is the demo I built.

And then something clicked
Before I get to what clicked, I wanted to mention a bit about the demo, the times, and what it all means.

I had chosen to build the demo around an old Arduino Duemilanove I had lying around. I had bought it ten years ago for my son and I to work on and learn. He and I tried to make sense of it all back then, but I really couldn’t find the info and code to help us make the most of it.

Fast forward to 2019 and I was able to find sensors, libraries, example code, and hardware to whip up my demo in a few weeks of nights and weekends type effort. To me, it was a huge difference from ten years before.

And from the ten years before that.

Once upon a time…
I always envied how some folks could build and program hardware. When I was working at MIT, I’d meet hardware folks (can you say Media Lab?) or walk through the halls seeing all the hardware being hacked (that’s where I fell in love with microcontrollers, wanting to build smart robots). In grad school, my advisor was always programming or getting interesting hardware built for the lab. At Nokia, I met hardware folks at Nokia and outside Nokia, who could not only program hardware, but were building really cool gizmos in clever ways. Indeed, it was because of those folks during my time at Nokia, that I learned about the intersection of hardware, software, and design; of Patchube (then Xively, then Google IoT); Arduino; Raspberry Pi; and hardware hacking (yes, I know some of that stuff is from after my time at Nokia, but the early threads were all there).

Alas, while I had deep experience in designing proteins and organisms (ho-hum to me but perhaps magic to you), I had no clue how to string up an LED with the right resistor and getting something to make it blink (ho-hum to you, but perhaps magic to me).

Sigh.

Back to today
Building the demo took me back to those times. And the tools and information I now had access to gave me superpowers to build something I never thought I’d ever be able to.

But after I built the demo, I sort of stepped back and let things cool.

Sort of.

I had picked up a Raspberry Pi Zero at the Sweden event and started playing with that, learning Linux, Kali hacking, and Python.

And then I started digging into the hardware hacking world, wondering how far that rabbit hole went.

That’s when things just clicked.

A new vice
By October, less than two months from when I first started working on the demo, I was hooked, daily reading hardware hacking sites like Hackaday and Hackster.io; perusing community hardware sites like Crowdsupply, Thingiverse, and Tindie; visiting hardware catalogs and building wish lists (yes, Adafruit, that’s me visiting your site every-frakkin-day); and learning about microcontrollers, resistors, capacitors, PCBs, Discord, Raspberry Pi, systems on a chip and single board computers, retro-gaming, Python, Micro Python, CircuitPython, GPIOs, FPGAs, IC2 and SPI, and so much more. And I’ve met and read stuff and watched videos galore of folks who make and break hardware (helpful to work for a hardware company, too, we have so many smarties).

Then I had a new project idea and bought a few items to make it real: a brand new microcontroller, some sensor boards, a soldering iron. I got it working in no time (thanks to readily available libraries and coding guides). I even made my first PCB for it (just holes and traces to connect things together, no components yet, so far). And, yes, I’ve already broken a few things, humorously so.

OMG, so fun. And woe to anyone who gets me taking about it all. Haha.

Watch that wallet
Along with the amazing community resources of examples, libraries, tools, and guides, the hardware has become so cheap (giving you permission to break things*). You can get a wifi- and BT-capable microcontroller with a ton of memory (for a microcontroller) that can run on and charge a battery and is an inch long for $20. Complex, ready-to-use sensors can be $5 or $15. PCBs can be designed with free tools and ordered online for a few bucks. And just about everything is on Amazon (tho, I prefer to buy from the manufacturer directly, to support them).

But beware: I work hard to keep myself to buying multiple items at a time (to save on shipping). And I work hard to keep from buying everything in sight. It all adds up. And fast. Haha.

What’s next?
I’m surprised by where I have come in three months – the confidence, the knowledge, the skills. And I’ve only scratched the surface. Though it’s clear to me that _at this moment_ this has become a daily obsession that is occupying so much of my spare time, and there’s no sign of it slowing down.

In my innovation work, I tend to do a chocolate and peanut butter ideation exercise. So I wonder if the hardware hacking were the chocolate, what would be the peanut butter I can mix it with? Though, I don’t mean something like hardware and brewing, which is what I am working on with one of my projects. I mean something bigger, something I might mix with hardware to do something completely different, that might catapult me to a new phase in my life.

What might that be?

Dunno.

For now, I’m quite excited running up this hardware hacking learning curve.

Where might it lead me?

*My wife says, in skiing, “If you’re not falling down, you’re not trying hard enough.” Sort of works for life, in general, too.