So, I just received a CodeBug in the mail, graciously provided by Newark element14 for a review. This is that review.
Before I start, I should say that Newark didn’t pay me, they only sent me the devices for free and with the understanding that I would be very truthful in my review, even about things I don’t like. So, hopefully this won’t read like I’m a paid shill, and all biases are my own. Now, we can proceed to the actual thing!
I have to admit that I had never heard of the CodeBug until Newark offered to send me one, but, now that it arrived, I find myself pretty excited about it. In case you are not familiar with it (the default), the CodeBug is an embedded, wearable computer that aims to teach programming to children by being easy and fun to program. It comes with various features that help with that, which I am going to get into more detail about later on.
It started as a Kickstarter project by three guys who aimed to bring programming to everyone in a cute, wearable form factor, and it apparently succeeded in getting funded, because I am holding one right now, which proves it exists! Also, the Kickstarter page says it got funded, so that’s also an indication.
Unfortunately, I’m not great at researching things before tearing open their packages, so I’ll jump directly to the unboxing and hope everything works out for you in the end.
The unboxing
The packaging is very well suited to its audience (which I’m assuming is small children), as it’s colourful, attractive, and succinctly explains what’s in the box and what you can do with it. The designer has made a good job at making the result playful and engaging (at least for adult males, a group in which I have some experience).
It’s a cardboard box with features, illustrations and various teaser images on it, so it doesn’t really feel very premium, but I don’t think a $20 computer is supposed to feel premium, it’s supposed to get your kids to want to program it, damnit! I think it does a good job at that, as I definitely wanted to open the thing as soon as possible (and I did).
The box itself contains the CodeBug (mine didn’t come wrapped in anything, it just sat at the top of the box), a micro-USB cable in a ziploc bg (since, if there’s one thing in the package that needs protection, it’s the USB cable), a very tasteful quick start guide, and the customary safety instructions that you throw away without reading.
The CodeBug itself is pretty small, and it comes with two buttons, six I/O connector “legs” and a CR2032 battery slot, and an uncanny ability to make a 32-year-old man excited about its shape (I somehow find the fact that it looks like a ladybug wonderful). It also has a 5x5 red LED matrix, which looks like it’s going to be very useful, and some sort of odd connector for… connecting it to things.
The quick-start guide is equally well-designed, with very simple instructions both in illustration and in text form, and basically just tells you how to turn the CodeBug on and off, how to fit a battery in and how to program it. After reading the short instructions, we’re ready to start!
Getting started
The getting started guide is online, and mentioned in various places in the documentation, box, as well as in the home page of the site. Since I’m of the opinion that documentation is the most important thing when trying to program a new platform or library, I find this multitude of links to the documentation a very good sign.
I have to admit that, when I first got the package, I was filled (filled!) with apprehension. I was pretty sure there wouldn’t be a way to program this in Linux, and I’d be left with a brick I had promised to review. However, when I saw the instructions, I was very relieved. The CodeBug (rather ingeniously) appears as a flash drive when hooked up to USB, and programming it is as simple as copying your compiled program to the drive. There are no desktop utilities at all, everything happens through the online editor. That’s a bit of a disadvantage when you’re used to compiling and flashing locally, but the CodeBug is clearly not aimed at experienced programmers, and it’s very well designed towards its target market.
Programming
The online program editor I mentioned above is easy to use, if a bit cumbersome (if you’re used to quickly editing code in textual form, anyway). To program, you just select a block from the few categories on the right, and drag it in to your program. Learning to use this editor was very intuitive, and the tutorial is so easy to follow that a few friends who had no prior exposure to programming found it very easy to create a simple program that would scroll text on the LED screen.
The editor contains all the flow control statements you’re used to in a programming language, as well as variables and operators. I have pretty much been able to do everything I’ve needed to do so far, although I didn’t really try to do anything more complex (like interface with external sensors or add servos to it).
Looking at the printed guide, the video, the website, the programmer, or the inside of your eyelids, you will see the instructions on programming the bug: Simply plug it in while keeping the A button pressed, and it will show up as a USB drive for you to drag the compiled program in. You can get the compiled program by just pressing the “download” button on the code editor, and you can run it by pressing the B button on the bug after you save it in. You know my views on ubiquity of documentation, so you know whether I consider this good or bad.
A nice feature of the CodeBug is that the USB drive it exposes contains a “README” file that opens your browser to the program that is currently flashed on the bug. I found that a very nice touch, useful if you forget what exactly you had programmed (or where it was). This is especially helpful since you can download any of the programs on the site, even if someone else wrote them, and then completely forget about which one you downloaded, so props to the CodeBug people for thinking of this.
The simulator
The Blockly program editor also comes with a simulator, so you can see what your program is going to do. I’ve found the simulator to be very useful and working well, and it lets you try any of the programs you see on the site before you decide whether you want to spend the two seconds flashing it on your bug or not.
The simulator also allows you to step through your code and shows you the current step at each point, making it very easy to reason about and debug your program. All in all, I find the editor a good programming environment for the sorts of simple things you may want to do with the bug.
Advanced topics
Visiting the activities page, I found out that you can program the bug with Python! Apparently, you can flash a serial control program and use the codebug-tether
Python library to read and write I/O, detect button pushes and work with the LED display. I think this is fantastic, opening up many ways of interacting with the CodeBug but offloading the computation to the (more powerful) computer.
The website
The CodeBug website is rather well done, it has lots of resources, instructions and ideas for working with the bug. It also has a GitHub-like section, where you can share your programs with the world, or copy any program you see on the site, change it and save it to your personal project library. The explore page, in particular, is great for getting (read: stealing) some nice ideas from other people’s projects.
Conclusion
All in all, I find the CodeBug a very exciting project. For someone with no prior programming exposure (i.e. someone that is not me), the website makes it easy to start by providing ideas, documentation, courses and sample code, as well as a simple visual editor. As far as I can tell, there’s an I2C interface on the bug as well, which will enable communicating with more peripherals later on, and the I/O ports already allow you to talk to other devices. That makes the device pretty flexible, although the hardest part in any project or ecosystem is coming up with ideas to implement in it. That said, I’ve been walking around with the CodeBug making faces at people from inside my shirt pocket for the past two days, so even that conversation starter is well worth the price, to me.
Finally, here’s the verdict that I guess you came here for: If I had children, or someone who wanted to learn programming, I would definitely buy a CodeBug, and I may even let them play with it. It costs less than $20, and I can definitely recommend it, especially as a children’s gift. Hell, I wouldn’t even wait for a special occasion! In short, just buy two now, keep one for yourself and give one away to a geeky nephew or niece. They’ll love it.
Just for convenience, here’s where you can buy one. I don’t make any money from that, so go nuts.
If you have any nice ideas that you’ve made with the bug, leave a comment or tweet at me. I hope you enjoyed the review!