Kevin McAleer is a great example of someone who wanted to do something, and so he went ahead and did it. His secret? Start small, fix your mistakes, and do it again. Starting with an obsession with modular printed robots, then MicroPython, then livestreaming, he has built up kevsrobots.com into a great resource for anyone who wants to get started with robotics, the intersection of mechanical engineering, electronic engineering, and programming. Since then, he’s also built up a course to get beginners working with MicroPython, and even more impressively, he built a working PKE meter to detect psychokinetic energy in your neighbourhood with only a Raspberry Pi Pico and a 3D printer.
We spoke to Kevin, cooed over his lovely collection of 3D-printed robots, and made plans for an automated world.
Right, first question: who are you, and what do you do?
Kevin McAleer: I originally got into livestreaming because I was obsessed with SMARS robots, these little Arduino-based robots. I didn’t design these – there’s a guy in Switzerland, I think, who designed them. But I did start trying to amass the information about these robots, because there are lots of add-on modules that people have made. And so I created SMARSfan.com, with the idea of bringing together all the different information, the code, the modules, and the parts you would need into one single place.
It was a bit of fun for me designing a web page, and other geeky stuff behind the scenes, like building it in Markdown using something called Jekyll, so it automatically builds itself from Markdown files.
Then I set up hosting for it on Raspberry Pis – actually it’s this little cluster here that I’ve got looking like a Cray supercomputer.
So that was the original website that I created. And it was great for tutorials, but I thought it would be really good if I had some video content on there.
I wasn’t very comfortable being myself in front of the camera, so I thought I’d probably do a screenshot of me typing some code in, designing something in Fusion 360, and then do some kind of robot voiceover, because I didn’t want to be a personality behind the thing. But the more I looked into this, the more I realised that I don’t like editing – it takes too long, and I’d rather just record everything in one go and if things go wrong, things go wrong. So livestreaming was kind of a cop out to begin with, just because it was easy to do. And then I got hooked on it, and I do it every week now.
I think there are two ways you can be driven: you can either be disciplined, or you can be motivated. And for me, the Sunday livestream show is discipline; I go live every single Sunday at seven o’clock because I’m disciplined to do so. Through the week, I might think of an idea that I think would be really good, really topical or something that I’ve always wanted to make.
Take this for example: it’s something I always wanted to have, which is a Back to the Future Time Machine. So I made one. This is a whole bunch of LEDs with loads and loads of wiring. By using some of what they call shift registers, you can just get each one of these rows of pins down to like a single pin and just shift them across, so it’s quite simple to get this up and running. I had a bunch of twelve of these little four-segment displays. And I 3D-printed three little boxes, and then the little pieces that go on the sides… I always wanted to have one and I thought, oh, I can make one now.
I used to work in education, for about eleven years. I wasn’t a teacher, I worked in IT support. I used to manage all the computers and networks and things. But I really enjoy being in the educational environment.
In my day job about 20 years ago, when I started contracting, I could either go down the management route or the developer route, or continue in the sort of technical support route. And just for financial reasons, I went down the management route doing project management. And that meant that my creative outlets were sort of being held back somewhat. So when I discovered 3D printing, when I discovered Python as a language, certain things began to unlock.
It’s like a Venn diagram of three intersecting circles. You’ve got mechanical engineering, you’ve got electrical engineering, and you’ve got software engineering – and they all meet in the middle at robotics.
One of the things I wasn’t very good at was the mechanical engineering side. And 3D printing and 3D design, using Fusion 360 has just really helped me unlock that problem. So therefore, I was able to make more and more robots. And each robot that I make has something unique about it that’s different than the ones previous to it – each one is a step up in capability.
More recently, I’ve set up this KevsRobots.com website, which, again, is hosted just behind me on four Raspberry Pis. And I’ve been putting more effort into supporting materials as well as during the show; a lot of people kept saying, ‘Have you written this up anywhere?’ And I really don’t: I do a project per week and then move on. So, I do the show on a Sunday; Monday, I have a day off, I’ll just relax and not think about anything related to that. Tuesday, I’ll be then looking through my list of ideas, like a Trello board full of possible project ideas, things I could make. Some of them are robots. Some of them are pure software. Some of them are fun things, like the Billy Bass fish.
And I’ll pick one of them and think, you know, that’s the one I want to work on for Sunday’s show. And then, so Wednesday I’ll be working up more details. I might be trying out some code or physically designing something. Same with Thursday. Friday, I’ll be getting close to thinking about finishing this now. What’s this going to look like? How far have I got from the original idea to where I am now? Do I have any interesting insights or developments in that? Do I need to split this into two shows or what? And then Saturday, I’ll be finalising the code, making sure everything works. And then Sunday will be preparing the slides for the show. Just going through [it, so] we’ll have some set of slides to talk to. And then it’s showtime. Rinse and repeat.
You mentioned teachable moments. Does that mean you’re building toward one final robot that will have all these capabilities you’ve covered?
KM : Absolutely. One of the robots I first started is the InMoov robot. It’s a full-size human-robot designed by a French guy, Gael Langevin. I started 3D-printing one when I got my first 3D printer. And I realised quite quickly that I’d bitten off more than I could chew – I was way out of my depth on the mechanical side.
Code-wise, this was all built around like the Arduino Mega, and the software that they use on top like a little PC stuck in the back to drive it all. And it’s all in Java – it was a bit of a mess really, because the guy who designed it was a sculptor; it’s not really a software engineering project.
To me, it kind of shows, and I wanted to be able to make this thing but make my own, you know, tweak the design, using someone else’s files. It’s a good starting point, but it’s not where I want to go with it. And I didn’t like the way that it was implemented. In order to build a full-size humanoid robot that can walk around and do stuff, there’s so much you need to learn.
So where do we need to start? Let’s start right at the basics. There’s a reason why my robots are all small, like this, because they’re quick to print. And they’re quick to learn. Because if you build one that’s like a full humanoid size thing, you could be printing out for a year, before you get to try it out.
So the learning curve we’re creating with small robots is a lot quicker, a lot easier to manage. And as well as documenting my own journey through what I’ve done through videos and written things, a lot of people have found it really useful themselves. So, I think one of my natural gifts is that I’m able to explain complicated things in a simple way. Not everyone can do that.
Before you answered it yourself, I was going to ask if you were a teacher in a past life, because a lot of your builds read like lesson plans.
KM: So I didn’t work as a teacher, but I was very much mindful that when I was working in the school, they had these little whiteboards put up there. They’re only A4 size, and every classroom had one. And it’s because they needed to have a plenary, like a learning objective for the particular lesson. And it’s one of those things that stuck with me that they’ve invested so much in these little whiteboards, specific for the learning points. And I thought, that’s a really great way of understanding it yourself.
One of the ways that you can master something is to teach other people. One of the things that’s helped me learn, and retain what I’ve learned, is by reflecting that back and saying, ‘This is what I’ve learned, and this is why I found it difficult’, because other people will relate to that.
If hardware was the missing part of the Venn diagram, does that mean that you’re already familiar with coding?
KM: I’ve done software development for a very long time in many languages, but never commercially, never professionally. It’s always been a hobby. And so, when I work with companies like Pimoroni, or a host of other companies, I guess Kitronik is one we’re working with recently. You know, you see their code and you think, ‘Oh, that’s interesting why they’ve done that’.
I worked with a company doing call centre software, which on the face of it is a really boring topic. But during the lunchtimes, I would hang out with the software developers and we would talk about stuff. In fact, one of the things that made me double down on to the livestream is that we had a regular lunch and learn. So every lunchtime, somebody would bring something – could be anything. There’s a girl there who did one on Norse mythology. So you could learn all kinds of stuff in half an hour. And yeah, I brought my robots and put them all on the table and talked about how everything worked. And they’re all captivated. So yeah, some of those software developers have really encouraged me to sort of, you know, get my teeth into this more.
Why do you use Python or MicroPython in most of your builds?
KM: Great question! I’ve learned a lot of programming languages, right from university where we learnt COBOL, Assembly language, all kinds of things like that. And they’re all very esoteric; you have to know special code words. There’s all kinds of curly braces, or semicolons, and conventions. And it doesn’t lend itself to very easy code. In fact, I was looking through some really old BASIC programming books, and even that’s quite difficult to follow.
So it doesn’t lend itself to being understood by other people. If you’ve written something years ago, and then you come back to it, you think, what was I writing here? What does all this mean? So when I discovered Python as a language, it reads like pseudo code – it reads like the kind of code you’d write before you then write it in real code somewhere else. In fact, it reads like English.
And the conventions that it uses, like the spacing, the indentation, the fact it hasn’t got all those curly braces and things, that means that it’s clearer and cleaner.
And I’ve only learned Python probably about five years ago. Obviously, if you know one language, you can transfer your knowledge to other languages, and that does make it easier. But with Python, I thought, I just get this, this is for me; it’s how I think programming languages should be.
Then there’s the fact that it’s interpreted rather than compiled. One of the good things about this is that it’s instant to run. So any device that you can write code for, it will just run. There’s no compile times, no waiting around. With a compiled language like C or C++, you might wait 20 minutes for something to compile… that’s not great if you’re trying to develop something quickly. So, for me, Python kind of gets out of the way as a programming language, which makes it so much easier to dive into.
And the other great thing with Python is that because it’s 30 years old or something, it’s surprisingly mature as a language. I was really surprised when I read up on it. And because of that maturity, there are a number of people that have embraced it and used it. In data science, for example, it’s the go-to language.
And MicroPython? That’s just like the chef’s kiss. I started out using the Arduino for robotics and stuff, but I very quickly hit the ceiling with Arduino. There are limits to how much you can stuff into one of the chips, how much code you can run at a time, the limitations you hit pretty quickly.
So, I was looking around for something better, and I discovered the ESP8266 and ESP32 chips. And I was like, ‘Oh, these are nice’. And then I discovered MicroPython. And I was like, ‘this, this is genius, you can run interpreted code in Python, on an embedded device’. It blew my mind when I discovered that you could do this. And this is before the Raspberry Pi Pico came out.
That cycle of trying something out, developing it further. The fact you can do that in real time, without having to compile stuff and wait for it to upload and all that… it just works. For me, that was just one of those little moments when the light bulbs go on. So when the Pico came out, I was like, this couldn’t be better: it’s an embedded device; it’s from Raspberry Pi; and it runs MicroPython. So it’s not a big surprise to me that this has become one of the most popular platforms out there, particularly in education as well, because it’s cheap enough that you can break it and not worry about the cost.
What do you find more fun? Building or coding?
KM: Building is more fun. The joy that you get when you write code and the code works: imagine that multiplied when you make a physical thing. It’s just the best feeling in the world. When you make a robot for the first time, and you’ve 3D-printed it…when you get that moving round and interacting with its environment. It’s like when you run a piece of code for the first time, and it works and does what you expect, you get this kind of endorphin adrenaline rush of just like, ‘wow, it works’. So that gets magnified when it’s a physical thing and it’s really interacting with the world. So doing something like hacking a Billy Bass fish, when that actually works, and you can see people, you know, running your code over the internet, interacting with it, and it’s moving and opening its mouth, you get double the joy.
You also get frustration as well; I think that’s part of the thing with building real objects. One of the things that I didn’t appreciate early on when I was making 3D-printable things was how many iterations you need to go to. For me, it’s about three iterations before I hit something I’m satisfied with, before I’m happy with how everything fits and works together. So yeah, it can take a little while. For example, this radar robot that I made: this one took quite a few goals at getting all the different parts just right, and it uses the same base as a few of my other robots as well, so I got to recycle and reuse some of my ideas. So, for me, that was an unexpected frustration, that sometimes you can wait hours for something to print out, and then you put it together and it doesn’t work. I find myself thinking ‘if only I’d put a hole there, or just allowed a little more tolerance’.
But then the beauty of 3D print is that you don’t always have to go back to the drawing board, but you have to go back and redo it, tweak it, and then print it again. That’s just part of the design process now that I factor in. That’s the joy of 3D printing: you fix a job, come back in a few hours, and there’s a new part waiting for you.
I think it helps when you’ve got a project in mind; you can learn so much more if you have to physically make something that works. So, rather than just pure coding or pure design, when you make a whole thing, you have to make compromises. If you ask any maker about something that they’ve made, they’ll tell you that it’s not finished – there’s always something else that they want to do, they feel a bit guilty that if you look behind the scenes, there’s a bit of a botched job or a broken bit. But I quite like that, like on this Ghostbusters thing I made. I was showing the missus and she said ‘yeah, it’ll be nice when you get rid of all the wires sticking out’. No, no, no! That’s part of the aesthetic! It’s not supposed to be like a finished product. You look at things in a whole different way. And I think it just gives you a more positive outlook, because rather than looking at the past and thinking about what you should have done better, you’re looking towards the future thinking about what you’re going to build next.