Sunday, May 12, 2013

Idea: a remote-controlled car as a modern-day Logo-turtle

Just a random thought.

You could do a modern take on the old Logo turtle-robot, but with a remote-control car whose movement you could program, wirelessly, via a smart-phone or tablet.

If you're not familiar with Logo, the "turtle" was a simple robot on wheels with a pen attached to it.  You sat it down on a big piece of paper and as it moved along the pen traced out its path on the paper.  Logo was the simple programming language used to tell the turtle what to do (e.g. 'move forwards 10 units', 'turn 45 degrees right', 'move forwards 5 units', etc).  You'd write the program then send it to the turtle which would slowly move around according to the commands in your program, and if you programmed it right it could draw out all sorts of shapes and patterns.  The system was for teaching kids the basic concepts behind programming.

A Logo 'turtle'. Image source

But what if instead of the turtle you had a remote-controlled car?  Instead of directly controlling its behaviour with a normal RC controller, you'd control it like the turtle, by writing a program that sets out the movements it should perform.  Specifying this with a smart-phone or tablet would make sense - the instructions could be sent wirelessly to the car.

Compared to the traditional turtle an RC car would be faster, have acceleration and braking, and could travel over rough and varied surfaces.

Instead of being about drawing patterns on paper, it could be about getting the car to successfully navigate the physical environment.  It might be in your backyard, and avoiding trees, going down slopes, traversing small mounds, etc.  Where there's obstacles, the possibility for jumps, and so forth.  Where obstacles could form signposts for a track.

I suspect that, rather than programming it by telling it to move by a certain distance or to turn by a certain number of degrees, you'd want commands like 'move at 75% throttle for 5 seconds' and '50% right turn for 1 second' (where '100% right turn' would mean turn as sharply right as possible, so 50% means turn half as sharply).

The hope would be that kids would find this kind of thing fun.  Rather than having a more abstract goal of drawing certain shapes, they'd have more tangible goals like navigating around the physical space, getting it to do a jump over a curb, etc.  That a remote control car can go pretty fast would hopefully make it more exciting, too.

I would imagine that if a bunch of kids got together and they had several of these cars, they could try and race them or set up some other kind of competition (e.g. trying to get the cars to ram each other, maybe to knock one over).

Electronics are so much cheaper these days, so I imagine that cost or getting the necessary parts to do something like wouldn't be too much of a barrier.  (And if you are wondering whether I have any thoughts about trying it out, I don't.  It'd be nice to try but I'm working on other things at the moment.  Just thought I'd get the idea out there).


Of course, there'd be a lot more to think about to think this through properly.  E.g. Logo has the equivalent of procedures, which can be useful for drawing shapes and patterns, and these are a form of abstraction you want to teach.  Would there be some motivation for utilising procedures if the focus wasn't on drawing patterns?  There could be, especially if you set up an obstacle course for the car that made them useful.

Edit: this idea could also be applied to drones.

Thursday, May 02, 2013

Allowing wiki-style edits on every single web-page

As everyone knows, anybody can edit any page on Wikipedia.  What if anybody could also make edits on every single page on the internet?

I mean every - a corporate site's 'about' page, their CEO's bio page, the description of a book, a post on someone's personal blog, a news story.  Anything.

Sound crazy?  No doubt about it.  But here's a slightly less crazy way it could be handled:

  • Edits don't change the public version of the page.
    • All edits are publicly accessible via a standard [edits] link on each page, and the page owner gets to choose whether to accept, reject or ignore any of them.
  • You must log-in with a public identity (Facebook, Google+, etc) to make an edit.
    • To help deal with trolls.
Why let anyone edit any page?  For the same reasons Wikipedia does: to allow people to suggest corrections and enhancements.

People like feeling that they've made a contribution, and if their contributions are useful and get taken up that can add to their reputation.   Such a system would help better harness the talent out there.  Or such is the hope.

Some slightly more technical points:
  • The site owner could possibly even mark someone's edits as trolling, where both the edits and who marked them as trolling are public information, and if people's edits across the internet were aggregated it might further discourage trolling.
  • What if the changes a person suggests concern information that comes from a database rather than a static page?  If the page owner thinks it's a good contribution then they'd have to change the relevant data in the database.
Obviously there'd be various technical issues in implementing this.  Presumably these days storage space for the edits wouldn't be much of an issue.  Perhaps the ability for storing each person's edits for a page could be handled by a standard feature of the web-server.  Naturally there'd be issues with how the editing interface is provided, how the edits are described, etc.  This post is more just about the general idea rather than all of the hurdles it'd have to overcome to make it practical.


EDIT 5 May 2013: I originally used Wikipedia as a model for this idea.  Github is another model you could think of it in terms of.  On Github you can fork anyone's project to make improvements to it.  Doing so doesn't effect the original project.  You can send the owner of the project a pull-request suggesting for them to incorporate your changes.  They can ignore that if they wish, but if they decide they like your suggested changes they can make use of them.  What I'm suggesting is a standard, structured way for anyone to suggest changes to a web-pages.