CORALINE:
Jessica needs some anger management.
[This episode is sponsored by Hired.com. Every week on Hired, they run an auction where over a thousand tech companies in San Francisco, New York, and L.A. bid on Ruby developers, providing them with salary and equity upfront. The average Ruby developer gets an average of 5 to 15 introductory offers and an average salary offer of $130,000 a year. Users can either accept an offer and go right into interviewing with the company or deny them without any continuing obligations. It’s totally free for users. And when you’re hired, they also give you a $2,000 signing bonus as a thank you for using them. But if you use the Ruby Rogues link, you’ll get a $4,000 bonus instead. Finally, if you’re not looking for a job and know someone who is, you can refer them to Hired and get a $1,337 bonus if they accept a job. Go sign up at Hired.com/RubyRogues.]
[This episode is brought to you by Braintree. If you’re a developer or manager of a mobile app and searching for the right payments API, check out Braintree. Braintree’s new v.zero SDK makes it easy to support multiple mobile payment types with one simple integration. To learn more and to try out their sandbox, go to BrainTreePayments.com/RubyRogues.]
[This episode is sponsored by Codeship.com. Don’t you wish you could simply deploy your code every time your tests pass? Wouldn’t it be nice if it were tied into a nice continuous integration system? That’s Codeship. They run your code. If all your tests pass, they deploy your code automatically. For fuss-free continuous delivery, check them out at Codeship.com, continuous delivery made simple.]
[Snap is a hosted CI and continuous delivery that is simple and intuitive. Snap’s deployment pipelines deliver fast feedback and can push healthy builds to multiple environments automatically or on demand. Snap integrates deeply with GitHub and has great support for different languages, data stores, and testing frameworks. Snap deploys your application to cloud services like Heroku, Digital Ocean, AWS, and many more. Try Snap for free. Sign up at SnapCI.com/RubyRogues.]
[This episode is sponsored by DigitalOcean. DigitalOcean is the provider I use to host all of my creations. All the shows are hosted there along with any other projects I come up with. Their user interface is simple and easy to use. Their support is excellent, and their VPS’s are backed on Solid State Drives and are fast and responsive. Check them out at DigitalOcean.com. If you use the code RubyRogues you’ll get a $10 credit.]
CORALINE:
Hi everyone and welcome to episode 209 of Ruby Rogues. Today on the panel we have Jessica Kerr.
JESSICA:
Good morning.
CORALINE:
Avdi Grimm.
AVDI:
Hello from Tennessee.
CORALINE:
And me, Coraline Ada Ehmke. Our guest this week is Julian Cheal. Julian, would you like to introduce yourself?
JULIAN:
[Inaudible]. Yes. I’m Julian Cheal, and I don’t really know much about anything that we’re going to be talking about today. So, that’s going to be fun.
CORALINE:
That makes you the perfect guest, doesn’t it?
JULIAN:
Yes. I will try my best.
CORALINE:
I understand you like to play with robots and drones.
JULIAN:
Yeah. So, it started off as a little hobby. But I don’t know if it’s still a hobby when it takes over all of your life and doesn’t leave much room for work and everything else.
CORALINE:
What initially drove you to get interested in it?
JULIAN:
Like most people, I had an Arduino once for my birthday that I played with a few times [inaudible] examples. And then I just put it in the back of my cupboard and never really touched it again. But then playing with the AR drone doing the NodeCopter events, which is a JavaScript hack day where you can program flying robots with JavaScript, that got me really excited that, “Wow, you can actually program some cool things in robotics,” which I found really fun.
CORALINE:
Talk about those Node hacking events. What are those like?
JULIAN:
So, imagine a scenario where you’ve got maybe 15, 20 flying robots controlled with JavaScript by people that don’t know what they’re doing in terms of robotics or often programming. And so, as you can imagine the room is full of chaos. But everyone is having so much fun. And they all start the day, in the same way, that they’re not really sure how to program or how to fly robots. And by the end of it, everyone’s giving demos. And even the really shy people are showing what they’ve managed to achieve in a day.
CORALINE:
Is JavaScript well-suited to controlling drones and robots?
JULIAN:
So, JavaScript’s pretty cool for that because you can fire off events and… my JavaScript knowledge is very limited, but you can fire off events and just hope that they work, which works well controlling the drones because it all works in UDP. So, sometimes you do end up with random Ethernet packets flying in the ether controlling the drones autonomously, which leads to some fun excitement.
AVDI:
So Julian, what’s it like bringing drones through US customs?
JULIAN:
So, apart from the strange… one time I went through, it was the last checkout point where you hand in your card, and the lady asked what they were. And I explained, “Oh, these are flying robots,” so I’ve never used the word drone. And she’s like, “And what do you plan to do with those?” It’s like, “Play with them.” And she gave me some very dirty looks. [Chuckles]
JULIAN:
But I think the worst is, because it’s not just drones that I play with. I’ve got a whole host of other robotics. And I was (they were going through my luggage one time) having to explain all of the different pieces of hardware and why I have them. It was quite fun.
JESSICA:
They’re all just jealous.
AVDI:
Does your luggage start spontaneously buzzing ever?
JULIAN:
No. I make sure that nothing is connected, and the batteries are far, far away from the things that they’re connected to.
JESSICA:
They’re all just jealous of your toys.
CORALINE:
Was US Customs the worst for traveling with robots? Have you brought them other places?
JULIAN:
So, I’ve just returned from Italy and Hungary. I’ve just done two talks there. And they were fine with it all. They didn’t ask me anything about what was in my luggage. So, that was good.
AVDI:
I’m a little familiar with your work with drones. I’ve watched some of your talks and seen you play with drones. But you just mentioned that you have a lot of other robots that you’re playing with. And I’m curious about some of those.
JULIAN:
Yeah. So, I’ve kind of been gathering over the last couple of years a little collection of things. And so, most of it, they’re all microcontrollers. So, I have a whole host of Arduinos. For those of you that don’t know an Arduino, it’s a tiny little microcontroller that you would normally run C, write your programs, and you can use it to blink on an LED, on and off. But the cool thing is that you can run a piece of firmware on there called Firmata which basically turns every pin into an API, which we can then control via Ruby or JavaScript or Go. And the great thing about that is that you can control sorts of different bits of hardware. So, things in my little collection I have are a Tessel which can actually run JavaScript on itself, Raspberry Pi, BeagleBone Black which is like a Raspberry Pi just more beefier, and various other sorts of things.
CORALINE:
What can you do with those API pins? You said that every pin on the Arduino is an API endpoint essentially. What do you do with them?
JULIAN:
My favorite thing, if you’ve ever seen one of my talks, is just turning an LED on and off, which is super fun because that way I think you can program 90% of the hardware out there by just turning something on and off. So, one of the demos I built recently was I connected a sonar sensor to the Arduino so that it could detect [distance].
CORALINE:
Can you talk a little more about that?
JULIAN:
Yeah. So, I had a great idea for a demo in which an AR drone would be flying along with a little [grabber] and would release an Angry Bird. And that would drop down onto one of the bad piggies which had a sonar detector on its head. And so, I’d be able to detect how close the bird was to the pig and detect and impact and therefore being able to create my own version of Angry Drones.
CORALINE:
Did it work?
JULIAN:
So, [chuckles] like all good programmers I tested each single thing individually, all except for the fact that my drone couldn’t actually lift up the Angry Bird.
[Laughter]
JESSICA:
Aww.
CORALINE:
So, we know that it’s hard enough giving demos when you’re doing software projects. And I imagine it’s much harder for a hardware project.
JULIAN:
Yeah. So, in my talk last week I did have a few fails like this one for instance where I just have to get the audience to imagine what would have happened had it all worked. And someone pointed out to me that most of the time in a talk, when someone has a live demo they always have a, “Here’s what I prepared earlier,” like a screencast or just some pictures. But an LED blinking on and off or some music playing because you’ve pressed the button, that kind of thing isn’t as interesting if it’s all pre-done. So, I do get a few failures in my talk. But I think that’s part of the fun, to show how volatile [inaudible] can be.
CORALINE:
Totally subject to the whims of the demo gods. What’s the worst demo experience you’ve ever done?
JULIAN:
I think one of them was last week where I didn’t have the head microphone. So, my friend had to hold a handheld mic in front me so I could fiddle with all the wires. And things just kept going more and more wrong. But the conference talk did end with a high though. I’ve built a cocktail robot to make cocktails. And so, I was able to make a spritz which is a northern Italian favorite. So, that was quite fun.
AVDI:
Oh my god. I must have this robot.
JULIAN:
It can be yours for just five installments of $99.29. [Laughter]
AVDI:
What goes into a robot like that? What is it made out of?
JULIAN:
I used, this was a JavaScript conference, I used Cylon.js which is the framework created by the same people that created Artoo which is the Ruby version and Gobot, the Go version. And that was controlling the motors which were connected to some pumps, some peristaltic pumps I think they’re pronounced. A bit like you have in a dialysis machine. And…
AVDI:
So, they sort of squeeze?
JULIAN:
Yeah, they squeeze the liquid through and you can measure the amount of time that you want it to, to get a certain amount. And obviously being from the land of over-engineering things, I made it where you control it by sending MQTT packages. So, it could be the other side of the internet. And you just send the request and then it turns on. [You’ve got] the pumps, pumps them through into the glass, and hey, here’s a drink.
JESSICA:
What is MQTT?
JULIAN:
It’s a great little protocol. I think it was made by IBM originally for just sending… it’s like a publish and subscribe protocol. But it’s got a really, really small form factor. So, it tends to be used a lot for embedded devices and just internet of stuff and things.
CORALINE:
So, you’ve raised the internet of stuff and things. What are your thoughts in terms of where we’re going with that?
JULIAN:
Hopefully hoverboard should be available before October this year.
CORALINE:
[Laughs]
JESSICA:
Ooh, if you have distance sensors and you can turn on an LED, then you could use the distance sensors to look at the ground and turn on the jetpacks!
JULIAN:
Exactly. That’s the kind of thinking that gets me up in the mornings and then create some crazy demos. But, so I really don’t like the phrase ‘internet of things’ because it just normally means an internet connecting on something completely useless that the world doesn’t need. And it’s yet another product. Why should your fridge be internet-connected? Because it could tell you you’ve run out of eggs but it probably doesn’t know that you stopped eating egg months ago due to dietary requirements or something. So, now we’re into machine learning.
AVDI:
Yeah. Yeah, it’s just what we need, more notifications about things we don’t care about.
JESSICA:
So, what do you like, Julian?
JULIAN:
Some of my favorite things at the moment… and the cool thing is you can build all of this stuff at home, and I like that developer mindset. Obviously there’s the huge caveat that if you build at home it’s not going to be enterprise-ready. But things I like are thermostat controllers that can read the temperature of your rooms in your house and get that to control your smart thermostat like a [nest]. Or turning on light switches via your phone so you can make sure if you’re away from your house, you can keep the lights on and off to ward against would-be thieves and such.
CORALINE:
What about the dark side of the internet of things? Is it scary at all?
JULIAN:
When there’s no electricity? Yeah.
[Laughter]
CORALINE:
I’m talking about security.
[Laughter]
JESSICA:
More blinking LEDs. That’ll totally fix the darkness problem.
JULIAN:
Yeah. Security’s, again not a security expert, security’s one of those things that if you look at a lot of the off-the-shelf internet-connected things like light bulbs or smart fridges and dishwashers and all these kinds of things, they all rely on being on your home Wi-Fi network, which is obviously secured by a password.
CORALINE:
What could possibly go wrong?
JULIAN:
Yeah. It’s not as if your friends would think, “Wouldn’t it be funny if I turned on all your lights when you weren’t there or unlock your front door?”
[Laughter]
JESSICA:
My friends would totally think that was funny. And they would have my Wi-Fi password.
JULIAN:
And so, some of the frameworks have got the ability to add the OAuth key in them to then do a more secure authentication between the user of the devices. But this isn’t out of the box, because we’re talking about [inaudible] are microcontrollers that aren’t super powerful. So, it’s a harder thing to do. But there are devices out there that you can buy that do that. And frameworks are starting to build this in.
AVDI:
I want to talk a little bit about programming languages. You’ve mentioned that you’ve done robot programming in at least Ruby and JavaScript. What is the full list of languages that you’ve used to program robots?
JULIAN:
So, I’ve done Ruby, JavaScript, and then a tiny little bit of Go.
AVDI:
Okay. Do you have a favorite?
JULIAN:
Obviously Ruby, because I’m on the Ruby Rogues podcast. [Chuckles]
AVDI:
Yes, yes, yes. But seriously, is there one that feels better for this kind of programming?
JULIAN:
Yeah. And I have to give it to JavaScript to win this one. Two reasons: [mainly] the JavaScript community is really, really behind robotics. And then they coined the term NodeBot for starters. We don’t have a RubyBot movement going around the world having international RubyBots day whereas the NodeBot community does. And also the kind of callback fire and forget (at least that’s the way I do JavaScript) nature of it lends itself to sending messages to devices and hoping information comes back that we just don’t tend to do in the Ruby world as much.
AVDI:
What are some good tools there for doing things with feedback loops and making sure that you don’t over-control? If there are tools there already that help you to avoid feedback loops where something starts oscillating back and forth or something like that. Are there tools for that? Or do you wind up rolling your own?
JULIAN:
I tend to roll my own. So, if you’ve connected up a button to a microcontroller that then you’re controlling with Ruby or JavaScript, you can sense when the button’s being pressed or not pressed. But the logic is up to you then. Either you add in a few more bits of hardware which then [inaudible] you have to up your hardware knowledge to clean that data up, or as I’ve done just clean it out in the code which I’m not always successful at that. So, I did manage to crash my machine last week when I was trying to start and stop Spotify with a party button. And I ended up just sending far too many requests to Spotify.
JESSICA:
A party button. That sounds great. What else does it do?
AVDI:
Instant party.
JULIAN:
It can do whatever you want. This is the great thing about adding software to hardware. [Chuckles]
JESSICA:
It could send out a Facebook invite.
JULIAN:
To all of your friends whether you want it to or not.
JESSICA:
Exactly. And it could turn the lights off and blink some LEDs. [Laughs]
CORALINE:
Sounds like a party.
JESSICA:
And all we need now is a party cannon.
AVDI:
Disco ball.
JULIAN:
Oh, I have one of those.
AVDI:
I assume it is robotically controlled?
JULIAN:
Yes, kind of. It doesn’t always work. Unfortunately the protocol to speak to disco balls and fog machines is not the greatest in the world. And you need a special device to do that. And so, mine keep breaking, unfortunately.
CORALINE:
Was that protocol written in the 70s?
JULIAN:
Yes, it was…
JESSICA:
[Laughs] The disco ball protocol.
JULIAN:
It’s based on, like most good protocols, the MIDI protocol, which as all of you know is the greatest protocol ever.
AVDI:
I actually don’t know a lot about it. But I hadn’t even thought about the fact that yeah, I guess all of those devices must have a control protocol because they have to do choreographed stage shows.
JESSICA:
Julian, were you serious about the MIDI protocol being the best ever?
JULIAN:
No.
JESSICA:
Or was that sarcasm? Okay, see…
JULIAN:
It was. Sorry.
JESSICA:
Okay. Yeah, I don’t have that context. What’s the tragedy there?
JULIAN:
Well, it’s just… So, if you dive into it, it’s just sending, I guess just bytecodes everywhere which is fine. But it just doesn’t feel modern and stable. We keep hacking more stuff into it to get it to work for a lot of these devices that we’re using these days. So, I’m sure it’s fine for proprietary off the shelf light controller for a whole stage show. But when you’re trying to use those kinds of protocols to switch lights on and off on a few microcontrollers, it doesn’t seem to work. You’ve really got to dig down into the protocol that you’d be really unfamiliar with.
JESSICA:
What makes a good protocol?
JULIAN:
I don’t know about, for the low level thing. Something that’s nice and simple that you can… so, a chap called Chris Williams who is a JavaScripter, he wrote a new firmware for something called a Spark Core which is an internet-connected Arduino clone. And he wrote a new protocol for that which I quite like. Because even though I don’t understand it all I was able to start at the top of the file and [inaudible] to the bottom and kind of have a general gist of what was going on. That was all written in C.
CORALINE:
I’m curious what the specific programming challenges are around hardware hacking. You talked about events. I’m wondering if for example concurrency is something you have to struggle with, or other programming paradigms that are more important in hardware hacking than maybe in web development.
JULIAN:
Yeah. So, this ties into the Ruby or JavaScript for robotics, is that JavaScript just, well Node.js I guess, [certainly] does help for that concurrency, being able to control multiple things at once. But the cool thing is with the Ruby library, Artoo, is that they built that on top of Celluloid which is an amazing library for doing actor-based concurrency, to be able to do multiple things at once. But it’s not a… this doesn’t make it simple for a new person to pick up and dive straight into. It definitely took me months and months and months of reading the source code going, “I have no idea what’s going on here,” even though I could see the output which was my light switching on or [inaudible] turning off or something like that. So, it’s definitely a complex protocol. But once you get the grasp of it, it’s really rewarding. But I wouldn’t say the average person needs to know about all of that out of the box.
CORALINE:
Would you say there’s high or low barrier of entry in this sort of hacking?
JULIAN:
So, because of the amazing work of all of the Artoo contributors and just the sheer fun of being able to program how to turn and LED on or off, I think it’d definitely a low barrier. So an example of that, I have a friend and she’s new to programming. She did a few Rails Girls events. And I showed her, “Hey, here’s how we turn some LEDs on and off with 16 lines of Ruby. And then the next time I see her, she’s been to Micro Mart, bought herself an Arduino starter kit, and has now gone off doing all sorts of fun little things, even though she had no idea what she was doing.
CORALINE:
That’s pretty awesome. I found when my daughter was young we played a lot with Arduinos. And I gave her… we did a lot of things together like turning the LEDs on and off. And I ended up giving her a programming assignment and leaving her to it, to essentially make this Cylon sweeping LED back and forth. And she really enjoyed it. And I think there’s something about the feedback you get from hardware that is more appealing somehow or more satisfying somehow and I think do really encourage exploration and learning. Would you agree with that?
JULIAN:
Yeah. Yeah, once it all works, just seeing that little light or thing turn on is amazing. I was trying to teach my nephews who are six and not six programming. And we were using, I’ve got a PlayStation 2 dance mat. So, we’re using that to control music in the house. And they had so much fun. I think they might have had more fun jumping up and down on the dance mat. But they could see that from the crazy words that we wrote on the screen, music was happing in the house, which you wouldn’t get with puts hello world I don’t think.
AVDI:
So, speaking of getting kids into this. I have some young children. I’m curious. What’s your recommendation for both hardware and software? Where is a good place to get started if you want to get kids into physical programming?
JULIAN:
So, I think Ruby is perfect for this. And I do believe that KidsRuby now has support for Artoo, or it will do in the future. So, Ruby is definitely I think the easiest language to get kids into this kind of thing. And as far as hardware goes, your basic Arduino started kit is really good. Because my nephew, the youngest one, I think he’s four, he was following along with me. He’d done the basics in school of the circuit where the electricity goes in one end and comes out the other and then a light switches on. And so, we did that and we followed along, putting the LED and the resistors into the breadboard. And he was having a [wail of a time].
21:
48] you can make a little webpage that says go forward or back, and do all those kinds of fun things with them.
JESSICA:
Do they turn LEDs on and off?
JULIAN:
I know, right? That’s the bestest thing. I don’t know how many LEDs come in the pack. But this is hardware. We can just stick them on.
JESSICA:
Awesome. [Chuckles]
JULIAN:
I’m glad I found another LED [inaudible]. I like LEDs.
JESSICA:
They are really awesome. Have you done any of the wearables?
JULIAN:
So, anyone that was at Ruby DCamp last year may remember that I was actually wearing an LED strip around myself as a utility belt while we were out in the forest. But that’s as far as wearable stuff [inaudible] that I’ve built so far.
CORALINE:
Hopefully it kept you from getting lost in the woods.
JULIAN:
It did, because it was really scary in the middle of an American forest as a foreigner.
CORALINE:
Not just as a foreigner. [Chuckles]
JULIAN:
And one thing…
AVDI:
Oh, you silly kids.
CORALINE:
[Chuckles]
JULIAN:
One wearable thing project I’d like to build… so, I’ve got all the components. I just haven’t got around to doing it yet, which I think would be fun for the kids and grownups alike, is using something called EL wire which is like this phosphorous wire that when you put a current down it, it glows. So, you kind of look like a character from Tron. So, the idea I’d like to do is build that connected to an Arduino with a sound sensor. So, it can pulsate on and off to music. So, while I’m getting my groove on at the local discotheque I can be glowing in neon colors.
CORALINE:
That sounds pretty awesome. I’m curious Julian. We were talking about kids and hardware hacking. Do you have any experience with Lego robotics?
JULIAN:
As a child no, because we couldn’t afford the Lego robotic kits because they were too expensive. And so, I’ve [then not] played with them as an adult. But I know people that have and they’re really fun. But I think, I guess like most things it can be quite expensive buying that kind of stuff because it’s all pre-made. But there are APIs to them that you can control them with Ruby, which is much more fun that using the out of the box things that they come with, I think.
CORALINE:
Right. As I recall, they actually use a drag and drop programming interface that’s based on LabVIEW of all things, for writing programs in Lego NXT. But you get…
JULIAN:
Oh, that sounds fun.
CORALINE:
The idea there is that kids can’t work with words. They can only work with pictures, right?
JULIAN:
I think that’s true for everyone, [chuckles] right?
AVDI:
That’s actually really cool. I’ve used LabVIEW in the past. And the neat thing about it is that you are, in most programming we think of things in terms of one thing at a time, whereas in LabVIEW you’re plugging outputs into inputs. Basically, you’re plugging streams into processors, streams of events into processors. And so, it’s much more, it’s sort of higher level. You’re thinking more about, how am I going to react to this stream of events and how am I going to maybe combine that with another stream or filter it down or something like that?
CORALINE:
LabVIEW was created by National Instruments. I actually got, my first web job was at National Instruments back in the 90s. And a lot of their focus is on data acquisition and signal processing, which I guess is right up the alley for this sort of hacking where you’re giving the signals, you’re turning things on and off, you’re dealing with data acquisition from sensors and so on.
AVDI:
Yeah. Working with LabVIEW connected to hardware is one of the places where I first learned to hate hardware.
JULIAN:
Why did you hate hardware?
AVDI:
So, if you flip the experience. See, this is sort of where I got my start. I was doing a lot of embedded stuff. And things like building test sets for embedded boxes and stuff like that controlled by LabVIEW and whatnot. And the experience for me at the time was I just spent three weeks coding something and my payoff is that I got an LED to light up. Woo.
[Laughter]
JESSICA:
Hey, hey, LEDs are awesome.
AVDI:
[Laughs] So, I came in from the other, I came into web programming because I was like, “Okay, I’m tired of dumping all this time into making an LED light up. I want to make something real happen.” [Laughs]
CORALINE:
Real being a very subjective term there.
AVDI:
Yes, that’s the point I’m trying to make here. It is very subjective.
JESSICA:
So, does that kind of boil down to because it’s hard? Hardware is a lot harder than [inaudible].
AVDI:
It wasn’t so much because it was hard. I think it was more that… it gets to what you want to get done. Having started out there, I didn’t find the payoff of getting an LED to light up that exciting. But if the only thing that you’ve ever done is get webpages to render, then I think that making an LED light up could be super exciting. And I think I might be getting to the point where that might be exciting for me again, especially now that I have [Git].
CORALINE:
I think one of the problems that I’ve run into with hardware hacking is that the physical world isn’t nearly as neat and tidy as Boolean logic. There are actually laws of physics that come to bear that can be very problematic sometimes.
JESSICA:
Lots and lots of laws of physics, unlike flipping bits. The predictability is something that I really enjoy about programming software. Usually if you run it with the same inputs, you get the same outputs. But that doesn’t seem to happen with hardware.
AVDI:
Not at all.
JULIAN:
Yeah, that’s the crazy thing that sometimes I like. And if I’m trying to show this to 400 people at a conference, the fact that it was working a minute ago, and I’ve not done anything different, and now it’s not working.
CORALINE:
[Laughs] Heisenbugs in hardware.
JULIAN:
But it’s fascinating. And it’s fun and exciting. And I was with you there at the… I got bored with my Arduino before. And I just found something about hardware that I love. Just being able to create something physical out of nothing (not nothing, and it’s a various cornucopia of hardware that I have lying around), into something fun and exciting that people actually enjoy to use.
CORALINE:
What does your workshop look like right now, Julian?
JULIAN:
Everything is still in my luggage from the conference last week. It turns out you can fit a lot into an average sized suitcase.
CORALINE:
What does it typically look like, though?
JULIAN:
So, imagine a nice, neat, organized cabinet where everything in its right place. It’s not anything like that.
CORALINE:
[Laughs]
JULIAN:
There are random wires and sensors and cables everywhere. And all of the cables mixed in together. And so, I normally just pull things out to do the kind of… work on my current demo, and then just throw them back in the box. And so, it’s not very organized. But I do have lots of fun toys to play with there. So, that’s always good.
CORALINE:
So, you mentioned that Rubyists don’t seem to be as excited about hardware as people in the JavaScript and Go communities. Why do you think that is?
JULIAN:
I don’t know. And I really wish I did. I did a talk last year in Barcelona doing hardware stuff. And I know people there enjoyed it. But I haven’t seen any follow through from Rubyists saying, “Hey, I’ve gone and bought this Arduino. Now, I’ve gone and written a whole laser light show.” And maybe it’s just because Ruby is harder to run on embedded devices. So, you can install in on the Raspberry Pi and BeagleBone Black. But people don’t tend to do that.
CORALINE:
What makes that harder? I don’t understand.
JULIAN:
I guess it’s because it’s a little bit slower on these devices. But you can run JRuby or Rubinius or even MRI on a Raspberry Pi. And once you’ve compiled it and installed whichever Ruby version you’re on then you’re good to go and then with creating all these fun projects. I’m just not sure what… maybe something scares Rubyists about this. I’m not sure. I really wish more Ruby people would do this. It’s super fun.
AVDI:
There may be a perception that it’s very time-consuming. I might be projecting.
JULIAN:
It’s definitely time-consuming. I don’t have any time anymore for things, because everything is hardware in my head all the time.
AVDI:
But you have robot friends.
JULIAN:
Do you mean real ones or ones that I’ve built?
AVDI:
[Chuckles] Yes.
JULIAN:
[Laughs]
JULIAN:
So, do you have any speaking robot friends? Do you have any robots that are cohabitating with you that you leave on all the time?
JULIAN:
No. I tend to pack everything away because I don’t yet have enough hardware to have a permanent installation at home. Because I would like to do complete home automation but I haven’t got around to that yet. So, I tend to just plug things in, play with them, and then put them away, even though I have more hardware than most people do I think currently.
JESSICA:
The other day I was at Philly ETE and Tom Igoe spoke, one of the creators of the Arduino. One of the things he talked about was how these microcontrollers that are cheap and anybody can program, they let us build hardware that is designed for a single person. Do you enjoy designing the hardware and creating the software for it in a very customized, just what you want way? Or do you have an ambition of building a product with this?
JULIAN:
I would love to build, become the hardware person that has the whole portfolio of hardware projects. Because some of the demos and things that I’ve built and I know other people have built would be really fun to have as a product. A friend and I built a Raspberry Pi and iBeacon controlled soda machine so that you could dispense fizzy drinks using your mobile phone, which I’m sure people would buy and want in offices up and down the country.
JESSICA:
As opposed to walking up to the thing and pushing the button?
JULIAN:
[Chuckles] Yes, because imagine a scenario where your vending machine had fizzy drinks in one section and alcoholic beverages in the other. If it was internet-connected you could connect it up to your CI server so that when the tests are failing, you can only get caffeine-filled beverages. But when the tests are passing, party time.
JESSICA:
Party button!
CORALINE:
I like the way you think.
[Laughter]
JESSICA:
I don’t think the tests passing would be a stable state at that point. [Laughter]
JULIAN:
This is true. I haven’t yet…
AVDI:
It’s a feedback system. It’s a stable state of oscillation, right?
JESSICA:
That’s true. And that kind of thing could sort of… you’ve got the digital environment of whether your tests are passing affecting the physical environment of what the soda machine dispenses. And then you’ve created the feedback loop from the human to the code to the physical to the human.
CORALINE:
B.F. Skinner would love that.
AVDI:
So, speaking if interfacing with humans, I’m curious. Have you done anything with cameras and recognizing stuff?
JULIAN:
I’ve played a little bit with OpenCV. So, there’s a great Artoo demo where you can get the drone to follow you as it detects a face, which is kind of cool. Although I have seen someone at one of the NodeCopter events I was running the reverse of that, that when a drone sees you it runs away, which is really fun. But I haven’t done any object detection or anything like that.
AVDI:
I have this dream of computers that will be able to figure out that I’m frustrated from looking at my face and know. They’ll adjust accordingly.
JULIAN:
So, it’d dim to mood lighting and have a little robotic hoover come along with a beer to cheer you up?
AVDI:
[Laughs] Exactly. You know, kick on the robotic massage chair.
JULIAN:
This all sounds possible. This is what’s great about the frameworks is that it’s like a single entry point for coding. And you just need to change a little bit of code to be able to talk to a whole cornucopia of devices, as opposed to a good few years ago where you’d have to be an expert on how to program for a Roomba, how to program for a soda machine, how to program for flying drones.
AVDI:
Is there anything that’s coming down the pipe that you’re interested in? Some hardware that’s on the horizon?
JULIAN:
There is a $9 computer that I’ve just backed on Kickstarter that is going to be very exciting that has some RAM, a processor, and HDMI output. Which, at $9 you can afford to give that to a child and say, “Hey, program this. If it breaks it doesn’t matter. It’s only $9.”
AVDI:
Hmm. That does sound [inaudible]. What is that called? Do you know? I saw that recently. I can’t remember the name.
JULIAN:
It’s called the CHIP. So, I think there are dots in between all the letters.
AVDI:
[Inaudible] at all.
CORALINE:
That’s not really good for SEO [juice]. So Julian, I’ve seen one of your, well I’ve seen lots of your demos in the past. And I noticed in one of the videos that are up I think on YouTube that you were actually controlling a drone by connecting to it via Wi-Fi.
JULIAN:
Yeah. So, the Parrot AR drones are a Wi-Fi hotspot. So, you connect to them and then you send it commands over UDP. And then if it feels like it, it does the things you’ve told it to.
CORALINE:
[Chuckles] Is that pretty typical? Or are there possibilities for ad hoc networking and hive behavior to emerge from interconnected networked things?
JULIAN:
So, with that [particular] drone you can make it join your own network and control multiple ones at the same time. It’s just it’s a bit of a [inaudible], especially if you want to just do a quick demo talk. So, we have got, I think there’s 12 drones we have in the event in [inaudible] where we got them to dance to, oh what’s that song called? Where everybody goes crazy.
AVDI:
I could identify so many.
JULIAN:
Yes, it’s true. So, you can get multiple ones that talk to each other. But for a quick demo, it’s really difficult. But there are the… so, I’ve got a Sphero which is a small robotic sphere with LEDs and a motor. And you connect to those via Bluetooth. And so, you can connect multiple ones up together. And the [inaudible] Artoo have written an amazing demo that made Conway’s Game of Life using Spheros.
JESSICA:
Wow, that’s expensive.
CORALINE:
That is something I would love to see.
JESSICA:
So, we have a Sphero. I got one for my seven-year-old. And okay, we had never got around to programming it because the darn thing is really awesome just by itself with the little phone controller. But it can totally flash lots of different colors. And it can jump and it can spin. It can totally dance and would be great to hook up to the party button.
JULIAN:
Well, let’s do it. What programming language do you want to do it in?
JESSICA:
Well, I was planning to use Clojure because Carin Meier recommended the Sphero to me. She had one on the stage in her Strange Loop keynote last year. And she spent much of the demonstration chasing it around so it would… to try to get it to not fall off the stage. It’s not the most controllable robot, I think.
JULIAN:
Yeah. Most of these robots definitely have minds of their own. I did see that talk. It was amazing because they were controlling multiple devices using Open Signed control to get them all to dance together, which was just so fun.
JESSICA:
It was. So, what programming languages can you use on a Sphero? By the way, they’re like $100something and they make great toys, even if you never get around to programming.
JULIAN:
Well, you can use Artoo and Cylon.js and Gobot. I know that for sure. I don’t know about Clojure, what the framework is there. But I know there must be one.
JESSICA:
Yeah. Carin has created one, I think.
JULIAN:
And I think some people have been making some Python frameworks as well recently to control all the robotic things.
CORALINE:
So, what are some other interesting hardware projects that you’ve seen carried out by other people maybe in the Ruby community?
JULIAN:
If any of you have ever seen Tenderlove giving a conference talk, he often talks about these homemade sausages that he has. And I know for a fact that he has upgraded. So, he was originally controlling those with an Arduino. And I think now he’s upgraded to an Intel Edison which is like a postage stamp sized microcontroller. And so, that’s a really exciting project that he’s doing. And not knowing the internet of what he’s done but I know for a fact that he’ll only have the temperature sensor, humidity sensor, a relay to turn things on and off again. And so, it’s not much of a leap from switching LEDs on and off.
CORALINE:
I have a friend who’s really into home brewing and he has a complete Raspberry Pi setup for monitoring temperatures and actually even measuring specific gravity of the brew at various stages. It’s pretty crazy.
JULIAN:
Yeah, this is what I love, is that it’s only your bank account and your imagination that’s holding you back from building all of these cool hardware things. Which is funny as a software developer realizing why we all do software and not hardware by default is that when our code breaks we just delete it and rewrite it. When my hardware breaks I have to go on Amazon and reorder it, which can be a bit of a pain.
JESSICA:
That is really satisfying about code, the speed of experimentation and the low cost of it.
AVDI:
That brings up an interesting question. For the kind of stuff that you work in, is there anything like a simulation environment like emulators? Or is it all pretty much, you try it out on the hardware?
JULIAN:
There’s a really cool project called voxel.js which you can control an AR drone in a Minecraft type environment. So, that’s the only thing that I’ve ever played with when trying to practice this stuff. But half the time I either just don’t connect to my hardware and then just, I put to the console what I think it should be doing. So, especially when I want to fly my drone in a conference. And I’ve only got my hotel room to practice in. I realize that flying a drone in a hotel room is not the best idea.
CORALINE:
The [lobby] is frowned upon, yeah.
JULIAN:
Well, actually the last time I was flying a drone in a hotel lobby I had a bottle of water thrown at me by a protester. So yes, definitely don’t do that again.
JESSICA:
Were they protesting you or something else?
JULIAN:
It was at the drones and aerial robotics conference. So, I guess they were just protesting drones. But as I happened to have the closest one to them, they decided to take aim at me.
AVDI:
It’s dangerous being a hardware hacker.
JULIAN:
Yeah. But then you get to become super leet. [Chuckles]
JULIAN:
But yeah, LEDs work brilliantly. Especially on the AR drone, it’s got four motors. And they’ve all got LEDs. And so, what I tend to do is just switch those on and off when I want to say, is it going left, is it going right? And so, that’s the test [inaudible] I use for that.
AVDI:
Cool.
JULIAN:
That and a thing to detect electricity box. Yes, that’s the word I was going for. That’s very useful now that I’ve bought one of those.
AVDI:
Do you wind up using oscilloscopes or logic analyzers or anything like that? Or is it just your basic voltmeter?
JULIAN:
Just a voltmeter. I haven’t upgraded yet to an oscilloscope. But that would be so cool. Because there are some great YouTube videos on the different waves that you can get off things and all the cool things you can do with that. But I haven’t, yeah…
AVDI:
Don’t do it. It’s a trap. It’s a trap.
[Chuckles]
CORALINE:
Once you have oscilloscopes you’re officially a mad scientist, I’m pretty sure.
JULIAN:
Do I get a lab coat then? Because I’ve only got my tweed jackets so far, so I don’t know if that makes me a mad scientist yet.
CORALINE:
Do they make lab coats in tweed?
JULIAN:
If they don’t, I’m going to have to get one.
CORALINE:
[Chuckles] Julian, was there anything that we didn’t cover that you would like covered?
JULIAN:
Well, I could talk for many more hours about robots. [Chuckles] So, I don’t know. It’s probably best to stop me.
CORALINE:
Okay. Alright, well let’s get to picks. Jessica, do you want to kick us off?
JESSICA:
Alright. So, I do have a pick that I don’t think we’ve picked on Ruby Rogues yet. And that’s kind of sad because it’s super important. It’s Jacob-Kaplan Moss’s keynote from PyCon quite recently. And it’s a beautiful keynote in which he talks about the dichotomy that we perceive between leet developers and [inaudible] developers. And how as a community sometimes we think that if we’re not putting all our time into programming then we’re going to be one of “them”. We’re not going to be a 10x developer anymore. But that’s, it’s a false dichotomy. And really, we’re all somewhere near average. It’s a bell curve. Most of us are in the middle. And once we embrace that then we can, we can choose how much time to put in. And we can bring other people up a little bit at a time to where we are as we move forward in our learning. It’s a fantastic keynote. Highly recommend. Will provide the link in the show notes. That’s my pick.
CORALINE:
Great. How about you, Avdi?
AVDI:
I haven’t spent a lot of time thinking about picks this time. But I’ll pick a new piece of hardware that I got. For various reasons, both as an author and as a reader, I’ve been getting increasingly frustrated with the Amazon Kindle ecosystem. They’re doing some nasty strong arming and lock-in stuff that goes way above and beyond just plain old DRM and DRM’s bad enough. And they do some serious Microsoft style embrace and extend of standards and stuff like that. It’s nasty. So, I’ve been getting increasingly uncomfortable using my Kindle e-reader and buying books on that ecosystem even though it’s incredibly easy and cheap and all that stuff.
So, the other day I ordered myself a Kobo, I think it’s an Aura H20. It’s definitely an H20 which is their top of the line reader. And I have to say, it’s really nice. It’s e-paper, e-ink display, high pixel density e-ink display, beautiful screen, easily up to anything that the top of the line Kindles can do. It’s a 6.8 inch screen instead of the typical 6-inch. So, it’s a little bit more reading area. I like it. It works well.
One of the nice things about it is that it’s relatively open. You can use the Kobo store. But you can also export both your DRM’d and not DRM’d EPUB files onto it directly. And EPUB is the industry standard Amazon refuses to get on board with. Or actually, they have embraced and extended in their KF8 format. And so, I had books that bought on the Google Store. And it’s a little bit of a hassle but I was able to actually transfer them onto this e-reader. It’s not just stuff from the locked in Kobo store. And of course anything that I bought from the Prags works fine because their stuff is all not DRM’d.
So, that’s nice. It’s also waterproof which is nice because you can read in the bath or on the beach without worrying about accidentally dropping in something. And the other cool thing about it is that it has built-in pocket integration which, if you’re somebody like me who uses pocket to handle stuff that you want to read later from the internet, you’ve probably already gone out to the webpage and started to order one because it’s that cool. It just syncs all your pocket articles and you can read them on a nice e-ink display without the eyestrain and distraction of reading on a tablet or something. So, that’s my one pick, the Kobo H20.
CORALINE:
I have a single pick this week as well. And it kind of relates to the pick that Jessica gave. It’s a talk by Liz Abinante called ‘Unicorns are People, Too’. It was given at last year’s Madison + Ruby and it deals with the problematic dichotomy between hard and soft skills. It dives into what we mean when we’re using terms like that and the dangers that are baked in when we break our thinking into a binary between hard and soft. Her main point is that while code comes relatively easily, it’s soft skills that make us human. And these human skills are complicated and difficult to get right. And you need to spend more time on them. And she also asked the question of what we stand to lose by overvaluing technical skills to the exclusion of interpersonal skills. So, I’ll post a link to the video for that talk in the show notes.
How about you, Julian? What are your picks today?
JULIAN:
So, I’ve got four picks, if that’s alright. So, my first one is something called littleBits which are these tiny little magnetic pieces of hardware. So, you have inputs, outputs, motors. And you can only connect them together with the correct ordering due to the magnets and little plastic things. So, they’re just really, really small. And so, it’s like Lego but for hardware. And littleBits create a… they’ve also made a synthesizer that you can wire up yourself with the kits and make synthesizer music. You can turn lights on and off. And they’re amazing. So, you should check out littleBits.
My other pick is Jewelbots by a lady called Sara Chipps. It’s basically programmable friendship bracelets. So, she’s currently still building these. And I think they’re taking crowdsource funding. So, you should definitely check out Jewelbots. But wouldn’t it be amazing to have a whole group of young people growing up to build their own hardware and wear it and interact in fun and exciting ways that we never were able to?
And my other pick was episode 156 of Ruby Rogues which is about hardware hacking. That’s a really pretty good episode. So, I really like that one.
And my final pick is not computer related at all. It’s a book I’m currently reading called ‘The End of Mr. Y’ by Scarlett Thomas. It’s a really, really good book. It’s about homeopathy and the troposphere and the ether and craziness that happens when you drink these homeopathic liquids.
CORALINE:
Awesome. Well, it looks like that’s the show for this week. And we will talk to you again, soon. Thank you everybody. Thank you very much for coming on, Julian.
JULIAN:
Thank you for having me. I remember the song that I was trying to remember earlier if you’re interested.
CORALINE:
What was it?
JULIAN:
It’s the Harlem Shake. So, if you google NodeCopter Harlem Shake, you will see craziness, what happens when you control multiple robots at the same time.
CORALINE:
Awesome. Well, thanks again. Thank you to our panelists as well. And we’ll talk to you next week.
[This episode is sponsored by MadGlory. You’ve been building software for a long time and sometimes it’s get a little overwhelming. Work piles up, hiring sucks, and it’s hard to get projects out the door. Check out MadGlory. They’re a small shop with experience shipping big products. They’re smart, dedicated, will augment your team and work as hard as you do. Find them online at MadGlory.com or on Twitter at MadGlory.]
[Hosting and bandwidth provided by the Blue Box Group. Check them out at Blubox.net.]
[Bandwidth for this segment is provided by CacheFly, the world’s fastest CDN. Deliver your content fast with CacheFly. Visit CacheFly.com to learn more.]
[Would you like to join a conversation with the Rogues and their guests? Want to support the show? We have a forum that allows you to join the conversation and support the show at the same time. You can sign up at RubyRogues.com/Parley.]