Swarm – Space Based IoT Connectivity has a Dev Kit Now

Now this is interesting. Was reminded about it on the IoT Podcast this morning.

From IEEE:

Swarm, a satellite start-up that uses CubeSats about the size of a grilled cheese sandwich to provide IoT coverage, has instead developed a satellite network specifically for IoT networks that would otherwise struggle to connect to the Internet. To do so, the company has adapted the popular IoT wireless technology LoRa, turning it into a high-flying—and even longer-ranging—solution.

https://spectrum.ieee.org/swarm-takes-lora-skyhigh

And now there is a developer kit! Will have to look closer at that 🙂

Photo credit: Swarm

H-D Connect on a LiveWire, Part 3

Parts 1 and 2 of this short series are available here and here.

Featured photo: Dinner ride! First time riding in a group, much less eating dinner with other riders since the pandemic began.

So, with a ride under her belt, let’s see what we can see in the H-D iPhone app. I’ve embedded a gallery below with screenshots. Overall it works ok, once you get used to counting to about 12 for updates to complete (it really needs an indicator that it is retrieving updates.)

It shows my bike’s battery status and range and notifies me when it is fully charged. These are the most important things and they appear to work. There are some obvious bugs (like showing me my current location is in Berlin – it isn’t… signing up for maintenance reminders didn’t “take”… and the riding activity bar graph sometimes shows data and sometimes doesn’t.

I haven’t tried the suspension calculator next, but will soon. Glad the app is up and running now. Hoping Harley Davidson addresses the bugs – I know mobile apps are hard, but getting them right makes a world of difference to users and their confidence in your work.

H-D Connect on a LiveWire, Part 2

Activated! OK, so here’s what happened since Part 1. I took it to my dealer, Emerald City Harley in Lynnwood, Washington and repeated what the H-D support engineer said – that the TCU and cellular needed to be activated on the bike – five minutes later and that was done and I was able to get past the “There appears to be a problem…” screen on the activation website.

In the parking lot I now saw (on my iPhone using Safari – and that turns out to be a problem too – stay tuned):

I tapped on Yes, This is My Bike and got to step 2 of 3 – where it asked me to verify my location:

I then got to the Terms of Service page, which requires you to scroll to the bottom of the terms before it will let you accept them (LOL):

Now that is where things got a little odd. After tapping on “Complete Sign Up” the button would gray out and then after a few seconds the whole page would reload as if I didn’t accept the terms. I did it again and still no dice.

But I’m also an iOS engineer and I know that mobile Safari can be a stickler when it comes to cookies and cross domain things and such. I suspected it was mobile Safari gumming up the works and sure enough, after switching to Chrome for iPhone all was well and I was able to get to the next page:

Shouted thanks are the best thanks 🙂

I waited a minute or two for the email but none came, so I hopped on the bike and rode home to finish this there. Still no email when I got to home, but the H-D app was showing something different now:

Yay! I tapped the Activate H-D connect button, which led to this:

I had to look up what was flash-to-pass and then I tapped the Begin Activation button. I think I forgot to grab a screen here – it had me turn on the bike, hold the flash-to-pass for at least five seconds, and then start the bike. I did this all in my garage which has not great but not terrible cell coverage. After I did that I got this:

And then, five minutes later, sad trombone, this:

I tapped Retry to try again and got the same result. I called H-D and got the same wonderful support engineer I had before. She verified that the H-D Connect was activated even though the app didn’t think so. She wasn’t sure why the app didn’t think it was activated. I do iOS engineering for a living so I suspected the application might be caching state (and not showing fetches in progress) so I exited and restarted the app and while I was still on the phone. A minute or so later I noticed the screen suddenly reported activation complete!

I’ll post Part 3 to show what I see after my next ride 🙂 Hopefully this helps any of y’all having trouble connecting H-D Connect!

H-D Connect on a LiveWire, Part 1

I’m in the process of setting up H-D Connect on my new LiveWire. It’s a cool service that uses a cellular connection directly to the motorcycle to retrieve motorcycle status (like how much longer until the battery is charged), tamper alerts (like it the motorcycle is being jostled) and service-needed notifications.

The service was available on a wide variety of bikes, both gas powered and LiveWires, but Harley ended it for all but LiveWires. Not all dealerships are aware that the service is still very much alive and supported for LiveWires.

I went to sign up, but the sign-up website wouldn’t accept my VIN:

I called Customer Service this morning and learned why. Looks like my bike missed a “pre-delivery” step and the “TCU” was not activated. I’ll swing by my dealer today to have them use “Tech Link 3” to “activate the TCU and cellular”

I was excited to learn a new LiveWire acronym 🙂 TCU stands for “Telematics Control Unit” – it’s made by Panasonic Automotive and you can learn more about it in this press release from 2019 – it uses a 3G, 4G or LTE connection to the bike.

In a future update, we’ll all find out what happens next 🙂

LiveWire: So Many Things to Try

This is going to keep me busy for a while, and that’s wonderfully OK – even exciting. I wanted to take the bike further and faster today and I also wanted to try out a fast charger. The club is doing a ride from Lynnwood, Washington to Leavenworth, Washington – a 110+ mile trip with a 4100′ mountain pass in-between – which means my new LiveWire might make it, but might not, so I wanted to see how the bike managed its battery with highway speeds.

I ran the bike in Road mode the entire time. Next time I might try Eco. I made it from Bothell to Sultan with 77% or 92 miles of range left – mostly 40 mph backroads but with about 10 miles of US 2 at proper speeds.

From Sultan back to Monroe saw the battery drop just a bit to 69%. I tried out the fast ElectrifyAmerica charger and it brought the battery back up to 75% before stopping (not sure why it stopped yet.)

And then I was back to Bothell with 57% or 69 miles of range left.

From Sultan to the top of Stevens Pass is 42 highway miles (with that elevation gain too) and unfortunately there are a few Level 1/2 chargers along the way but no fast chargers. Seems like it might be possible (since I can charge a fair bit on the mostly downhill from the pass to Leavenworth — 35 miles — but will it be enough – and how much will the highway speeds and elevation gain eat into that?)

Net net: clearly more experimentation is called for 🙂

I Got a LiveWire!

It’s a dream come true! I picked up “Elvira” last weekend at Emerald City Harley. She’s a brand new black Harley Davidson LiveWire and a thrill to ride.

Meet Elvira, My Harley Davidson LiveWire

So quiet, so fast, so responsive. With elements from all my beloved bikes of the past, from the Honda Nighthawk, to the Yamaha Midnight Warrior, to the Harley Street Bob. The best of each of them in an electric superbike. This bike perfectly matches my personality, and it scratches itches that only EV enthusiasts, Electrical Engineers and Mobile Embedded Device Developers have!

I’ll be posting plenty on this bike and our adventures. Zoom zoom!

PS: I’ve updated my previous post on the LiveWire with a gallery from the demo rides. Enjoy!

Un-Expected Value and a Slow Snake

I just finished the latest course towards my Masters in Electrical Engineering at UW – Probability and Random Processes for Electrical Engineering. And yeah, I got an A (>100%). And I’m glad I took it even though I had, years and years ago, taken Stochastics at Johns Hopkins. Although core concepts like probabilities, random variables and the like haven’t changed, the options available to engineers for numerical methods seem more practical now.

Our final project involved using a Naïve Bayes Classifier to classify handwritten digits from the large MNIST database ( http://yann.lecun.com/exdb/mnist/ ). First you train your classifier against 60,000 training images (handwritten digits from 0 to 9) and then you run 10,000 test images against the classifier and see how well it identifies the digits in the images. I don’t remember doing anything like this in the Stochastics course at Hopkins, and it was fun to translate Bayes’ Theorem into code and even more fun to see it work.

That was the un-expected value in taking the course again (and it freed up transfer options which will allow me to take a Comp Sci IoT course next quarter and have it count towards my MSEE.) (BTW – that’s a probability pun there – un-expected value – get it?! Wokka wokka.)

I wrote the classifier first in MATLAB (we get a generous student license for this powerful not-free software) and then again in Python with NumPy ( https://numpy.org ) (because all the cool kids are trying ML with Python and although some assembly is required, Python and NumPy are free [including as in beer].)

Both MATLAB and Python/NumPy yielded the same results:

Basically, when presented with a “0” digit, the classifier correctly identified it as a “0” 90% of the time (or incorrectly as a “5” about 5% of the time and so on and so forth.)

What I didn’t expect was how SLOW Python was to do the same work. MATLAB processed all the data in about 5 seconds but Python took almost 3 minutes to do the same work. The majority of that difference I suspect comes down to MATLAB scripts being compiled into native code before execution whereas Python is interpreted on the fly. Then again, for free software, it does open access to numerical methods for those without access to the professional tool, so that’s a positive – it reminds me of some of what we run into with WooCommerce and how I see native code projects like PeachPie ( https://www.peachpie.io ) as a potential game changer for performance.

While researching the speed difference, I came across this article that sums it all up well and in a funny light:

MATLAB is the BMW sedan of the scientific computing world. It’s expensive, and that’s before you start talking about accessories (toolboxes). You’re paying for a rock-solid, smooth performance and service. It also attracts a disproportionate amount of hate.

Python is a Ford pickup. It’s ubiquitous and beloved by many (in the USA). It can do everything you want, and it’s built to do some things that other vehicles can’t. Chances are you’re going to want to borrow one now and then. But it doesn’t offer a great pure driving experience.

Toby Driscoll, https://tobydriscoll.net/blog/matlab-vs.-julia-vs.-python/

I’m glad when I have access to or can afford “BMW” level tools, but I also appreciate the experimenting, low risk prototyping and access that “Ford” level tools unlock.

Back in the Engineering Saddle Again

A little over two years ago, fresh off the heels of helping ready my company’s part of the Internet for the GDPR, I offered to again take up the leadership of a small team I had led before – this time to launch another SaaS offering – this time in payments. The opportunity aligned well with my personal goal of leveling up my leadership skills with what was then an eye on a director of engineering role, and it also aligned with a engineering roadmap I had set forth nearly five years ago to get hardware related work (specifically integrating our software with mobile payments and point of sale hardware) into the company.

My team launched the next step of that vision earlier this year, as WooCommerce Payments, on time and (mostly) on scope. Looking back, I’d say I enjoyed the earliest parts of the project the most – when the team was smaller and the emphasis was on nailing down the architecture and tech stack. In hindsight that’s a key observation. Of the things I had on my plate – people management, project management and technical leadership – I found myself increasingly spending the majority of my time in people and project management and less and less in architecture and the tech itself.

I’m quite grateful to Stripe for setting an expectation at the beginning of the project that (eventual) hardware integration was a requirement – because that has opened a door for me to pull a phoenix and re-birth myself with a focus on technical leadership. I’m keeping myself laser focused on that this time around. 🙂 And I want to still spend more time with people, but not as their manager. I’d rather be a mentor. I learned that too.

I also owe a debt to an article by Charity at https://charity.wtf/2017/05/11/the-engineer-manager-pendulum/ where she so eloquently laid out this engineer-manager-engineer pendulum that so many of us engineering types do 🙂 It helped shine a light on the path forward.

So, there you have it – a brief retrospective of my experience as a team lead / engineering manager. Onward and upwards!