Delicious IoT Coffee, Part 1 of 3

My first guest article on the Texas Instruments’ e2e site Launch Your Design blog has gone live!

LM35 IoT Coffee

LM35 IoT Coffee

You can read it here:

This is a three-part series, that will discuss the engineering process behind the project I wrote about previously. It goes into developing design constraints, component selection, empirical testing, hardware design and assembly, embedded software design, messaging architecture, and cloud data services. Lots of stuff for tasty coffee, but more hardware-focused detail than the previous writeup at I hope you enjoy!

See also Part 2


Google Sheets Spreadsheet Trendline Fix Hack

I was recently working in a Google Docs spreadsheet (I guess they call it Google Sheets now), and had trouble adding a trendline to some time-series data. I didn’t want to have to go scare up a real spreadsheet app, since the data set was still small and I wasn’t doing anything very complex with it. But I wanted my trendline, darnit! I’ve got yet another startup brewing, and I’ll be living in spreadsheets for a while, eating finance and breathing analytics for the next N months. I needed to find a way to make it work. Searching the interwebs, I came across a number of other users expressing frustration at an apparently inconsistent, or at least non-obvious, user experience of the trendline function. So I started poking at it to figure it out, and I came up with a hack that made things work for me.

The trouble comes in when, with various combinations of options for the chart, and the formatting of the underlying data, the Trendline option in the chart’s Advanced Edit does not appear when it should. There is no user feedback to explain why it doesn’t show up, leading to the kinds of frustrated requests for help you’ll find if you search for it. The docs do say “You can add trendlines to scatter plot, line, column, and bar charts.” – and you will see the option disappear if you have a different kind of chart. But for some of these charts where it should work, it does not. If you select a column chart, the option can disappear. Or, if you format your time data as “Date Time” instead of date, it also disappears. Not cool! I’ll show you what I mean.

Let’s start with a basic time-series scatter plot:

A Basic Time-Series Scatter Plot

A Basic Time-Series Scatter Plot

According to the Google Sheets documentation on the trendline feature, we can add one easily under the Advanced Edit section of the chart. And you can see below, the trendline option is available as it should be:

Trendline Option Is Available

Trendline Option Is Available

When you change the column formatting to Date Time instead of Auto or Date, the option disappears!

Formatted as Date Time

Formatted as Date Time

And it’s gone.

No Trendline for Date Time

No Trendline for Date Time

So here’s the hack:

  1. Set the time column format to Date
  2. Add the trendline under advanced edit, and set the options as you like
  3. Change the time column format back to Date Time
  4. The trendline stays put!
  5. PROFIT!

So here I added the trendline after changing the date column to “Date” formatting. After twiddling the line to be a 5th-order polynomial, we have this nice result, verifying that Google’s directions work. This time, at least!

Add Trendline with Date format

Add Trendline with Date format

And after changing it back to “Date Time”, the trendline stays! I even twiddled the time portion of the value, moving the hours around. The data points in the plot shift as appropriate, and the trendline updates correctly. This leads me to believe this is just a UX glitch in Google Sheets.

Trendline for Date Time in Google Sheets

Trendline for Date Time in Google Sheets

So, this hack works for the scatter plot, but I have seen it not work for others (column, if I recall correctly). I’ve seen other users comment that the formatting selection made a difference for them, for other chart types and other than time-series data, so you’ll have to play with it. I didn’t enumerate all permutations of Google Sheets, charts, and trendlines!

Good luck, and have fun spreadsheeting =)


OneM2M Platform Implementation

I just finished integrating a demonstrator system that implements the OneM2M standards for connected devices, using the oneMPOWER platform. It’s a very complex, enterprise-level protocol and suite of specifications, and is designed for seriously large systems.

In my personal engineering approach, I tend toward reducing problem sets toward simplicity, much along the lines of Chuck Moore’s philosophical underpinnings of the Forth language. (I’ll dig into more of that in another post…) But there are certain use cases out there for complexity, too.

You can read about this here, but beware! It’s not for the faint of heart:


Warding Off Winter With TI CC2650, Beaglebone Black, and a Nest Thermostat

Winter is coming, and the Northeastern United States where I live can get cold! And the houses are often old and drafty. So I built a wireless sensor system tied to a Nest thermostat to keep me cozy, wherever I am in the house, instead of keeping my thermostat cozy, bolted to its wall.

I did this with Texas Instruments’ Sensortags, a Beaglebone Black, DeviceHive for device registration and management, and a Nest thermostat.

This one was coded up using Python to speak Bluetooth LE to the Sensortags, and JavaScript on Node.js to do the device registration and telemetry messaging.

Yeah, they call it Bluetooth Smart now, but I don’t like that name! LE for me. 😉

DeviceHive managed the device registration for Sensortags, to make it easy to add new tags and wrangle them, and the data service exchange piped the messaging to scriptr for some transform logic in a convenient cloud service. did visualization and Nest control, and Circonus handled data logging and analytics.

Read the articles here:

…and here:

And the code is on GitHub!

This is the video I made to go along with the rest:


Delicious Coffee with a Kinoma Create and PubNub

Update: I have a forthcoming three-part series of articles on Texas Instruments’ e2e blog that dives into some of the hardware engineering behind this, too. I’ll link them here when it’s finally published!

Updated Update, here are the links:
Part 1
Part 2

I’m a coffee snob. I admit it. I’m proud of it. Although, upon reflection I really think it boils down to appreciating deliciousness. And who wouldn’t?


Anyhow, I was able to weave my love of coffee together with another Internet of Things demonstration project, this time coding JavaScript and XML on a Kinoma Create, and building a Pyrex-cased temperature probe with a Texas Instruments LM-35 military-grade analog temperature sensor. The Kinoma reads the temperature sensor, and asynchronously publishes telemetry messages to PubNub. From there, the data service exchange subscribed to the messages and routed them to a number of data services I used for analytics and alerting, including,, and Circonus. As with all these prototypes, it was up and running very fast, and I could iterate rapidly as new insights formed. Powerful stuff, that can really hit your bottom line and time-to-market in good ways.

I discovered my drip coffee maker sucks at temperature regulation, and my pourover and French press technique has improved quite a bit. So has the coffee!

You can read the full article I wrote here. And the code is on GitHub, as well.

This setup was at World Maker Faire 2015 in New York City, at the Kinoma booth. Cool to have some of my creations featured there =)


Motorcycle Crash Alert with Mediatek LinkIt One

Another recent demo I created used the Mediatek LinkIt One, which is an awesome little Arduino-compatible dev board that integrates a ton of useful hardware like GPS, GSM, WiFi, etc. With a tiny bit of code and some cloud data services connected via a flexible message bus, I had a prototype system up and running fast. It’s very simple in the first iteration, parsing NMEA sentences from the GPS unit, extracting data, and sending it off to logic and alerting powered by the data services. I’m still working on refining this, as it’s an itch I want to scratch for my own use.

Here’s the writeup:

I made a video to go with the article, as well: