LG301: Introduction - Upcycling Old Technology

Recently I was asked to do a coding challenge for an IoT position I was applying for, it was a great challenge from a great team...

My starting gambit for The Challenge was to dismiss the idea of using Linux on a single-board computer like the Raspberry Pi and to build the solution around a microcontroller. But, I left this as a 'suggestion' and got on with the challenge, I wanted the job! I decided to write the application in .Net… because if you’re going to use an operating system, why not use a compiled, multi-threaded application that runs on any of them. I've not looked back since!

As I mention in my Blog Post on the subject, Microsoft came close to offering an end-to-end solution for embedded systems but stopped just short of the finish line and changed direction. I work day-to-day now designing cloud systems using microservices, I could containerise Azure Edge modules and run them on Linux, but what I wanted to try was running a single .Net Application on Linux that embraced the modular micro-service design of distributed systems.

For this module I will take that concept and apply it to a far more complex IoT device, to prove its viability as an approach. I will also build on another concept I had worked on briefly with Professor Nicolai Marquardt at UCL around ‘multi-device interfaces’, as this offers a simple solution to the lack of GUI support for .Net on Linux.

This is an IoT Course, so again, we need a thing… we’ll take this opportunity to progress the skills we learned in the first module and produce a worthy host for this new software.

The Philosophy

My interest in IoT was sparked by taking broken things apart and putting new components into them, so I could control them without getting up. We called it making we were makers, and now it’s called upcycling, finding a new use for old products.

Our old product in this instance is a beautiful 1950’s radio, we’re going to keep it out of landfill by making it once again useful for listening to music…

Hmmm… Waste is a huge problem for the world and electronic waste is the fastest growing waste stream, but a degree of greenwashing would be required to regard what we are doing here as environmentally friendly. I’m hooking this up to energy-hungry cloud services and shipping components halfway across the world… currently it’s dead and consuming no energy!

But… We can learn from this process, this process is hard, really hard and a lot of work… by teaching design students to force new functionality into beautiful old hosts, they can learn to design beautiful devices whose functionality can be easily updated. By designing modular devices and modular software to control these devices we can facilitate the addition of new functionality rather than the production of new products. A move towards lengthening device lifespans and a small step toward a circular economy and the reduction of manufacturing. Re-fillable tech?

So maybe we are doing some good, maybe someone will read this and think a little harder about where their product will be in 50 years’ time, and besides, some things are just too beautiful to be thrown away.

The Scope

This is hard for me, scope creep is my Kryptonite… The Radio has four dials that all do considerably different things, lets's implement all of them and maintain a wide scope of functionality and the mechanical feel where possible.

The Band Wave Indicator has 4 settings, so let’s specify 4 services… Airplay, Spotify, Podcasts and Web Radio seem like suitable services for this device to consume. We will implement 2 of them to a level that answers any questions about user experience. Let’s add a digital interface to complement the UX the physical interface currently provides.

Out of Scope

Security in IoT is a huge subject, we touched on it in the last module, but for this module it is out of scope, implementing it is anyway, we are wide open here… It’s important we recognise this and I’ve written about it here and offered some future work for future modules.

Set-up is also out of scope, no Captive Portal like in LG201 we are plugging a keyboard in and entering the Wi-Fi details by hand, this is a one user solution at the moment. Account Settings, Preferences and Playlists would naturally live in the IoT Server we built in the last module, and we could also use this to call some of the API functionality we are implementing directly, I’m regarding this area of the design as proven.

No software update service, no light animations, and no stepper motors to move the mechanical interface to where the cloud tells it. We have to draw a line somewhere!

Our Goal

Having trained and worked in the design industry before transitioning to working with engineering firms and engineers, I am a huge advocate for Design Thinking and Design-Led Engineering, and in my experience, many firms would benefit from these approaches.

If our embedded devices, both upcycled and new, are going to run on Linux we need a methodology that offers a reliable and efficient solution to controlling devices, whilst, allowing designers to build beautiful experiences in tools that are familiar to them.

In a way... Upcycling how we write embedded software, as well as the devices that host it. Let’s see how we get on.