Life & much, much more

A Beaglebone, a Blender, a Board, and a Swarm.

Hardware isn’t generally my thing. When it comes to software, I like to break and create. But in my opinion, hardware should just work. But even though that’s another story altogether, it did explain my apprehension when I greeted the UPS guy one morning delivering a BeagleBone Black.


Let’s begin with the BBB. It’s a computer the size of a credit card, which isn’t that impressive if you realise that your phone is a computer. I find the best way to explain it is in terms of two other products, the Arduino and the Raspberry Pi. The Arduino is a similarly sized (comes in multiple sizes though) controller where you can upload scripts, plug in a hardware circuit (wires and lightbulb, that sort of thing), and have it control the circuit. Despite its power in hardware control, it only has a small scripting interface for you to do your programming. The Raspberry Pi is the opposite. It’s a full Linux computer (based off Debian), but does not have proper hardware controls out of the box. The BBB provides the best of both worlds: a full Linux system (Angstrom Linux, but of course you can flash your own), and a ridiculous number of IO pins to control circuits. All this awesome power at 45USD.

The next step upon receiving this wonderboard was obvious. Let’s build a swarm of robots. Along with two university friends, Lawrence Huang and Gloria Nam, we set out planning the system.


The base was to be constructed out of a 1200x1200mm wooden plywood board and cut it into a circle with a hole in the middle. This would be the “world” where the robot swarm would live on. This world would operate like a Lazy Susan, and would have a two depots filled with some sort of resource. One at the center, and one at the perimeter. This gave the colony a purpose: it would need to collect resources. Above the board was where we would put the computer, BBB, power supply, and cables to hook up to all the bots below.

We then had to determine the behavior and movement capabilities of the swarm. It had to act as one, but still remain separate entities. It also had to disperse to discover where the rotated resource depots were, and the swarm as a whole had a set of goals and quota limitations. Five movement types (along with the math) were worked out to allow the bots smooth and flexible movement across the terrain.


The overmind was next. We would use Blender‘s very flexible boid simulator along with custom Python scripts using Blender’s Python API to simulate the swarm behavior on the computer and set swarm goals. At the same time, a real-time top-down view could be generated and displayed. Due to budget reasons, we couldn’t build the entire swarm of robots, but instead settled on building just one bot in the swarm, and having this bot track the motions of a single bot on the computer screen, but still behave as part of the full 32-robot swarm on the screen. Viewers could then see on the screen the full swarm behavior, and physically see a single bots behavior in front of them.


The car itself was then built. It was relatively small and was barely enough to fit the two continuous-rotation servo motors that were required to power its left and right treads. It had a little tank on its top to hold resources, a depositing mechanism at its front, and dragged along a massive conveyor belt to collect resources behind it.


Now the fun part – calibrating the simulated swarm with the actual physical swarm behavior, and doing all the physical PWM circuits. Many sleepless nights later it was a success. Here we see the bot doing a weird parking job into the depot and collecting resources, going back to the center, and depositing it. Apologies for the lack of video.


And there we have it. A swarm of robots. Did it curb my fear of hardware? Not entirely.


For those interested in the actual system, here’s a macro overview:


A few extra fun things from the project:

  • Calibration was not easy. Actually, it was very hard. No, it was stupidly hard. It was ridiculously hard. Real life has so many uncertainties.
  • Each bot is tethered to the overmind via 8 wires (3 per tread, 2 for conveyor belt). Could it be made into a wireless swarm? Yes. Did we have the money? No.
  • Could it be modified to move in 3D XYZ space like a swarm of helicopters? Yes. Would I do the math for it? No.
  • The actual simulation was done on the computer via Blender + custom python scripts. The computer was then connected via a persistent master SSH connection, which was reused to send simple signals to the pin’s embedded controller. So all in all the BBB actually didn’t do much work. It was just a software->hardware adapter.
  • Because the computer was doing all the work, it wasn’t hard to add network hooks. This meant we could actually control the system via our phones (which we did).
  • Weirdest bug? When (and only when) we connected the computer to the university wifi, flicking a switch 10 meters away in a completely separate circuit (seriously, completely separate) would cause the BBB to die. Still completely confused and will accept any explanation.
  • Timeframe for the project? 4 weeks along with other obligations.
  • Prior hardware and circuit experience: none. Well. Hooking up a lightbulb to a battery. Or something like that.
  • Casualties included at least three bot prototypes, a motor, and at least 50 Styrofoam rabbits (don’t ask)
  • Why are all these diagrams on weird old paper backgrounds? Why not?
  • At the time of the project, the BBB was less than a month old. This meant practically no documentation, and lack of coherent support in their IRC channels. As expected, this was hardly a good thing.

Project success. I hope you enjoyed it too :)


WIPUP 21.02.10 released and out in the wild.

WIPUP is a way to conveniently share progress on your projects. Given the mix of solutions used before such as work-in-progress forum threads, blog posts, mailing lists and microblogging, we’re creating a flexible and friendly solution to answer the question “what’s up?”.

People focus so much on the finished product they ignore the beauty of the creation process behind it.

Yep, it’s WIPUP 21.02.10a and it’s still (denoted by the postfix “a”) alpha. This means it’s unfinished and not yet ready for the general public. However despite this a huge amount of progress has been made since the first and a lot of polish along with it. I highly recommend those who’ve been edging towards trying WIPUP out to take the leap. The full details are given in the release notes (comments appreciated).

After you’ve skimmed through the release notes go check out the site. Or if you’re curious you can check out my profile, which serves as a pretty good demo of WIPUP in use.

As for potential developers, here’s a friendly reminder that WIPUP is open-source and I’d love to see a few new faces.

Time for a break.


WIPUP on Trac

Yesterday saw a burst of activity as far as WIPUP commits were concerned, but most importantly I’ve said goodbye to the proprietary Assembla project management tool we were using before and set-up our very own in-house service "Trac", courtesy of our lovely host.

Trac’s main use is in ticket tracking – a way for users to report bugs and wishlists they have with the website. However like any respectable project manager it also comes with a wiki, on which you can find the brand new Eadrax roadmap, so you can see what fancyness is coming up ahead. So if you’re playing with WIPUP already and see something you don’t think is quite right go check out trac.

Oh and if you missed the sneak peak showing BBCode and resizable forms, check it out now.



The ThoughtScore project is another gypsy on my to-do list along with the BMR. It seems as though the world of 3D graphics and I are drifting slowly apart. It’ll be such a pity to let it go, so I want to make a serious effort and continue the amazing progress I once had on ThoughtScore.

You can see the pitiful post I made after scrolling through history on this page:

Revive ThoughtScore! I need a plan, a design, something huge! Grab me some pencil and paper, and let’s bring my vision into a reality! I have a holiday coming up, and I hope I can approach this through another angle which should allow me to continue production.

The next post will be in a week’s time because I am going to be stuck in a jungle throughout next week. You will then receive posts in this order: 1) The Trek, 2) New Perspective Magazine Released, and 3) What is becoming of Eadrax.


Progress on Eadrax

Even though me blabbering about project Eadrax doesn’t seem to interest most people (see: 0 comments on previous 2 posts) and it seems as though nobody has responded (yet) on the mailing list, I do not consider it a total failure.

I’ve decided to share just how much data you can actually gather from taking a peek at the logs behind Eadrax.

Allow you me to indulge you in a recent graph from GitHub showing some logs of the progress on Eadrax:


For those unfamiliar with version control, think of it has a log of every single change that was made. Like a save file. Each dot over there represents an edit.

Those subscribed to the mailing list and that have read the Eadrax Space will have known that I have restarted Eadrax as an open-source project. The graph up there shows two people, ukd1 and Moult (me). ukd1 (Russel) is another developer I met in the #kohana IRC room, willing to join in the project. Before continuing, you cannot see this from the image, but just as a note, every single update done up there was done by me. The little tags represent “branches”, essentially different features/sections of the site that are broken down so that people don’t get confused what belongs where (and also so somebody doesn’t screw up everybody elses work). The master branch is the overall project (well, sort of).

From this you can garner some very interesting information:

1) Only Moult has done anything on the project so far.

This is not a bad thing–at early stages of the project getting so many people to create the underlying structure of the web application can lead to some very confusing situations. I also know that the other developers have been extremely busy with other things, but hopefully this will change in the near future.

2) Russel (ukd1) apparently decided to work on the project a while back, but then just stopped. His line is quite left behind with the recent changes.

Obviously he has some catching up to do.

3) When Russel last updated his project, only two branches existed, “master” and “users”, now there are many more.

This shows that the application structure is probably mature enough to start introducing new sections of  the site and thus more branches. This is a very good sign for progress.

4) The latest branch is no longer the “users” branch – in fact, it has been left behind.

Well, the users branch obviously has to do with the user system – logging in, registration, etc. This is very good proof that there is already a clear structure behind the system and now we can just build up upon it.

5) Recently the code has been splitting up and merging together.

Obviously I’ve been developing some things here, some things there, and it’s now good to start pulling things back together into a simple structure so other coders can know exactly where the code currently stands.

Summary: Well, nothing much interesting to be seen on the front end of things yet, but just a very good sign that things are moving along, and moving along quick. Expect by next week to have most of the code ported over from the previous Eadrax version.


Pre-alpha Eadrax Testing Begun!

…and we’ve begun (officially) the pre-alpha testing for Project Eadrax. All testers should have received several emails with relevant information. Actually, due to a slight muckup in the setup, you got spammed a little with one too many emails. Sorry, won’t happen again.

To give this post a bit more depth, I would also like to announce that I have upgraded to WordPress 2.8. Tada.

Might seem like nothing big has happened, but this is a significant benchmark that cannot be done justice by a blog post. What a lame excuse for today’s post ;)


Final call for Eadrax testers.

Hello–sorry for the rather short post today but exams are very nearly done with (Will be finished by Thursday afternoon!) and then Project Eadrax will start moving along full speed, and ThoughtScore will too be seeing some appearances. Yeah so as I’m quite busy no big post for today.

However, this is the final call for anybody who wants to join in on Eadrax testing. There are no prerequisites, just your own willingness, curiosity, and hopefully active involvement is wanted. You don’t need to know programming, design, or anything- though it would help if you did. This is for anybody and everybody.

In sharp contrast to the “anybody and everybody”, because of the early stage it’s at we don’t want to open it publicly. If you’re interested in joining, send me an email or leave a comment on this post with an email that you regularly check. You will then be notified with all the details later on :)

What is Eadrax? Well, it’s a website I’m working on. That’s enough for now!

Deadline is this Friday.


ThoughtScore Scenes 1-5 Sneak Preview

The ThoughtScore Project has made crazily slow but steady progress over the past few months. But those watching the Twitter feed would have noticed that I’ve spent a lot more work on it recently, mostly being re-renders and overnight-renders. Of course, with the ability to use Blender on my phone work has sped up considerably.

The ThoughtScore Project is, of course, completely open source, and this also means that I would like to share the development with you guys, and let you choose what you like, don’t like, and I sincerely welcome all your ideas for changes. Well, enough of the waffling, here are some in-movie frames as a quick preview for the impatient:


Highway scene 4.


Forest chase scene 5.

…and without further ado:

Click to Watch ThoughtScore (WIP Scenes 1-5)

Comments welcome!


A little (re)introduction to POSE2 and ThoughtScore

OK, it’s Penguin Day again! Those who have been spying via the  Twitter feed would’ve noticed quite a few feeds formatted as a Git commit as well as some references to project ThoughtScore and POSE2. I do believe I’ve talked about those two projects of mine before, but always pretty vaguely. So I’ve decided to dedicate today’s post to clarifying a few things, as well as to provide some useful insight into what I’ve been up to.

POSE2, what? Where? I thought it died?

Let’s start with POSE2. E2-Productions was the name of my original site, and it still is. E2-Productions serves as the face of my online freelancing events, and it is the name I go under. thinkMoult was started to define the separation between professional services I provide and the fun activities I indulge myself in. POSE2 stands for Project Open Source E2. It originally referred to the similarly named “POSE2 PHP Framework” which was a freely available (hence open-source) MVC framework I made to faciliate future development of E2. However, as POSE2 developed, it stood to become any main website of which I would document the progress of and show people snapshots of development. Therefore, the first POSE2 project that emerged after the POSE2 framework was mature enough for development (about version 1.1) was E2 version 6, which over time split from the main E2 site to become VisionBin. Though VisionBin was actually closed-source (no such thing as an open source website as such!) it represented a huge learning curve, of which I duly shared with others.

Those who were around the release of VisionBin witnessed a sudden surge of popularity…then a sudden drop and eventual death of VisionBin. Right now another project is replacing VisionBin (with some similarities and some differences) and so that is what POSE2 now refers to. I’m making much more of an effort on this one, and hence one of the differences outsiders can notice is that it’s now version controlled/tracked by Git. This way you guys can always check up on my progress via the Twitter feed. I would use Github if it was open-source, but unfortunately not. For those unfamiliar with Git, the Twitter update gives a short summary of what I’ve updated, as well as how many lines of code I’ve inserted/deleted. So over the past week, I think I’ve given a general idea of “hey, I’m making massive progress!” – and pretty soon I will be welcoming alpha testers. Anybody who is interested in testing out the website should contact me and make sure you can stick on the IRC channel #gisklm on as it’ll be easiest to discuss/contact there.

Project ThoughtScore, the one that’s taking ages.

Yes. It IS taking ages. That’s the whole point of it. (no, not really) For the uninitiated, ThoughtScore is the name of the movie I am making. This is an animated movie. It is 3D…and it’s probably a thousand times more open-source than POSE2. Firstly because only open-source software will be used in its production (Blender, Linux, FFMPEG, Audacity, GIMP), secondly because I will release all the source files when I’m done, and finally because I am documenting my progress publicly. I haven’t touched Blender in more than half a year, so now I am coming back to continue on this project. I’m actually doing the animation now, and I’ve got a decent amount of material ready to work on the first two minutes of animation. (Which is a long time – actually). Those who lurk in the IRC channel #gisklm would have already seen some of these, but I’ve decided to post them up here just to make this post a bit more picture friendly. Here goes:


That is a picture of the second scene in the movie. It is the transport pod being launched. It is an early render, and there are many modifications to be made and even more work to be done to animate it.

I want to get involved and stay up to date – how’d I do this?

Right, my Twitter feed occasionally gives summaries on what I’m up to, and I also post my Git commits over there. However, there is still a lot of stuff that goes unheard of on Twitter, and most of these are test renders for ThoughtScore, simple questions on “hey, any suggestions for this?” or even general trash on what’s the latest joke that’s going around. To enjoy these, I’ve started up the #gisklm channel on the IRC server. For those wanting to check it out, download an IRC client such as XChat or HydraIRC (on windows), Colloquy (for mac), or XChat or irssi (for Linux). To join, first connect to the IRC server (it’s different for each client, but find some way to connect to the server – the command for it is `/server`) then join the #gisklm channel – type the command `/join #gisklm`. To change your nickname, try `/nick my_new_nick`. Note: alpha testers for the new POSE2 are required to be on the IRC, it’s a bit annoying to find you otherwise.


ThoughtScore Updated!

Ahh! ThoughtScore! The finest of all my projects (the slowest, too). Well, it’s been updated!

View the ThoughtScore update!

You know you want to check it out.

Note: the update is my last post on that page. The first post was a pretty old update. You can also check out pages 1 and 2 of that forum thread to see how far the project has progressed.

Well, a picture is worth a thousand words, so here are some wallpaper sized renders (also available in the thread) to entice you to click that link up there. If you’re too lazy to register an account on to comment on that thread, just leave a comment to this post ;)

One of Cicero:

And one of Taras:

And one of the station:

On more unfortunate news, I will be overseas and there will not be an article until the 16th of August. However, I promise sometime on very early September there will be another really huge release by me … something so big it might even shadow ThoughtScore. Now that’s just scary.