Reawakening the inner geek

I have always been a Lego person. It was one of my favourite toys as a child and still has a place in my life as an adult and a Dad (although sharing might not be my strong suit).

As a bit of a geek I was always taken with the idea of Mindstorms. I got the original Mindstorm kit (with the big yellow RCX brick and the IR transmitter) and played around with it a little, but never really got into it. When EV3 was released I lusted after it but hesitated because of my earlier experience. Eventually my wonderful wife gave me a set as a present. Again I played around for a while, but it never really grabbed me.

Recently I dragged it back out and started to play, and this time I got hooked. The key thing for me was finding ev3dev!

I had always quickly become frustrated with the block-based programming tools that Lego provides. Perhaps they are great for kids (although I have my doubts), but for me they are painfully cumbersome and limited. I wanted a command line, an IDE and the concise power of a full function textual language.

I knew that it was possible to use a custom Linux instal on the EV3 brick and use a range of ‘real’ languages. When I investigated this in the past I was put off by the idea of changing the firmware. This seemed like a great way of potentially bricking my brick, and then needing to invest significant time in getting it back to a working state.

This time when I investigated the options I found ev3dev. The thing that immediately caught my eye was that it ran off a microSD card rather than requiring a firmware change. As soon as I saw this I was off. Within an hour I had downloaded ev3Dev, flashed it to a card, had the brick up and running, and connected to it with SSH.

Just seeing the “robot@ev3dev:~$” prompt on the terminal window of my Mac was a complete game changer. Imaging the possibilities! It is the same feeling I had as a kid when I found that the TRS-80 BASIC could do 3-D arrays, or when playing with 6502 assembler on the Apple ][. This is why I love technology.

I decided to start with Python, a language I do not know well and want to know better. I grabbed a copy of PyCharm Edu, set-up a GIT project on the brick and started coding (see note 1 below). I had been playing with a basic robot based on the Lego Educator Vehicle (modified because I do not have the EV3 Education kit) and had been doing simple line following using the block based system. I quickly had a Python version running, and was able to refine it without all of he frustrations that I had been hitting.

My next project was to build a plotter. As a teenager on work experience at a computer centre in the 80’s I spent many happy hours watching a plotter at work, and have never lost the fascination with them. It took a few hours to build a basic working version, and a few more hours to refine and extend it, and generally tinker. It was all highly satisfying.

Thank you EV3 for reminding me what it feels like to be a geeky kid again!

1. With hindsight, GIT was probably overkill and I would have been better off just using scp to push the single python files from Mac to brick.