Tuesday 1 May 2012

The FIGnition/Raspberry PI Challenge!

Hi folks,

I managed to meet up with a fellow embedded techie friend at my old church last Sunday and he mentioned he’d been chatting with some friends about whether my FIGnition project stands much of a chance against Raspberry PI, so I thought I’d blog my response.

Although I’m persuaded that there should be room in the market for both of us, of course it’s perfectly true that the publicity of Raspberry PI has presented a major challenge as both it and FIGnition are being sold as machines to encourage children to program. However, my conclusion is that kids don’t program today primarily because modern computers (like the Raspberry PI) are 10,000 times more complex than in the 80s. I blogged about this more fully a while ago.

FIGnition is as simple as an old 80s computer, but suffers from some practical dis-incentives. The keypad is unconventional, requires learning and is slow (though better than texting); getting code in and out of FIGnition is still awkward and Forth isn’t an ideal language for beginners. I don’t plan to change the keypad, but at some point, FIGnition owners will have created a PS/2 shield for FIGnition. I want the keypad as it is because I don’t want to be dependent on an artificial protocol for reading keys, that is, I’d probably have used a switch-matrix membrane if I could have sourced one cheaply, but my primary goal was to have a machine that was as self-contained as possible. I’m working on the uploading/downloading issue by enabling audio saving and loading, which is still being debugged. I’m not absolutely committed to Forth though I personally enjoy the language, instead I’m committed to comparable 8-bitter user code performance (because otherwise I can’t say that FIGnition is a substitute for an 80s 8-bit computer), and that with my original development schedule meant that Forth was the natural choice. Nevertheless I’m working on making it easier to use, starting with a new editor once the audio I/O is ready.

At the heart of it though I think FIGnition is the right kind of machine, because it can be understood whereas Raspberry PI can’t be understood by a single person. This is why I think FIGnition is worthwhile. Because Raspberry PI is a full machine its very complexity leads to the same mentality and solutions as for other modern machines. You can either give it a dumbed-down language and programming environment which teaches you less about programming than a ZX81; or you give it an emulated 80s computer (which is to admit the host computer isn’t the right tool for the job); or you program it with modern tools and put up with the same complexity that turned kids of programming in the first place.

Let’s extrapolate what’s going to happen with the Raspberry PI. Raspberry PI is a full Linux system, so you can recompile thousands of programs, tools and games so I strongly suspect kids will find it easier just to run pre-written programs and games than do actual programming (note MAME was ported to the PI before its general availability). Kids will simply stuff their own SD cards in the PIs and do what’s easiest. It’s an unavoidable effect of the complexity of the system which makes it overwhelmingly easier to go with that flow.

Consider what happens when a child makes an effort to resist. Let’s say they learn Python and want to write a game, e.g. Snake or Blitz. Python’s fine for scripting text processing stuff, but even doing something as simple as the equivalent of a Spectrum’s PRINT AT y,x; (or FIGnition’s x y at) requires substantial effort and at the end you don’t even get user-defined graphics, just plain characters. Scratch can’t really handle that complexity so they’re forced into developing a java or javascript game (with all the overheads) or developing on (e.g) a BBC Micro emulator. At this point the hurdles and disappointment will make it far more inviting to just start downloading and running other people’s stuff.

Let’s say educators or individual adults see the problem with the above so they develop an ‘easy’ programming environment alternative. The problem is that because of the underlying complexity of the system, developing this ‘easy’ environment becomes far more than a one-person job so it’s either left unfinished; or they short-cut and expose the underlying complexity for the ‘real’ stuff or they open-source it and the several(?) collaborators create a bloated composite of their partially overlapping variants of the idea.

Or let’s say they want to by-pass the Linux OS and re-write a classic BASIC (or something) kernel for the Raspberry-PI. What’ll happen is that the effort of developing a kernel from scratch means they’ll get outmaneuvered by programmers who take short-cuts that bolt something that looks like the classic environment onto the normal kernel. Then what’ll happen is that people will get frustrated by the way this dedicated Rasperry-PI programming kernel doesn’t interface with all the other full-desktop goodies (editors/scripts/games/drivers/protocols etc) that they’ll add a full Linux bootup in the background and then basically we’re back to square one.

A typical example is the BBC Micro 2.0 project. It looks like they’ve employed a number of 21st century programmers to create a ‘new’ programming environment. The idea is to have the ‘simplicity’ of BBC Micro programming, but hosted by a full Linux/Mac/Windows system with bindings for multiple languages and programming paradigms. So already it’s just the same multi-pane, monstrous class library, over-complex nonsense that put kids off programming in the first place; because the programmers and designers are immersed in modern environments and aren’t raising the key question about why kids don’t code today: that modern systems are 10,000 times more complex and can’t be genuinely understood - and their failure to understand how no-one understands modern systems forces them to replicate the problem on the new BBC Micro 2.0 platform.

But once you accept that the issue is the actual, literal complexity of modern systems, then the way to get kids to code becomes a case of constructing real, but genuinely simple computers. Computers like FIGnition. You can make use of genuinely new concepts, but it’s no longer a problem if these computers don’t do everything as long as they meet the criteria of being simple, complete, immediate and understandable. FIGnition isn’t perfect, but it gets the primary thing right: you can build it, code it and understand it. It is to complex computers what Phonics and the Gruffalo is to War and Peace and no-one would ever think of teaching kids to read and write using the latter.

In a future blog, I’ll argue why the issue isn’t cost, nor primarily ICT teaching, nor the inevitability of progress. These kinds of arguments are smokescreens for the only issue: computers are 10,000 times more complex than computers that can be learned and understood. I’ll finish with one comment about price: both FIGnition and R-PI are so cheap you could buy more than 10 of both for the adjusted cost of a ZX Spectrum from 1982 and millions of recesssion-hit, cash-strapped parents bought Spectrums and their ilk then. If journalists, parents and educators can’t afford or encourage a market big enough for both then our cultures and economic prospects must be so messed up the challenges I face in promoting FIGnition are the least of my problems :-)

8 comments:

Gareth Halfacree said...

I would argue that the DuinoMite from Olimex represents a clearer threat to the Fignition than does the Raspberry Pi. As you point out, the Pi is inherently complex: it's a modern computer system, miles ahead anything the 80s had to offer in complexity and capability. That's both good and bad, for the reasons you've outlined above.

The DuinoMite, by contrast, is something closer to the Fignition's goals: it's cheap, small, and provides an eighties-style programming environment (BASIC, by default, although this can be swapped out for other firmwares or the PIC at the DuinoMite's heart programmed directly.)

The Fignition has a number of advantages over the DuinoMite: it's marginally cheaper, you actually get to assemble it yourself, and it doesn't require an input device - just a display.

The DuinoMite has a number of advantages over the Fignition, however: it has scads of GPIO and is compatible with Arduino shields, its BASIC language is infinitely more approachable for beginners than is Forth, and it has a PS2 port for significantly easier typing. It even has a microSD slot, making getting software on there from a PC incredibly easy.

I agree that the Fignition is a more sensible choice for teaching children programming than the Pi - unless you factor in the *other* things that the Pi can do like run general-purpose software and any programming language you like, which come 'free' for the purchase price - but I'd argue that the DuinoMite is even more suitable than is the Fig.

Which isn't to say I don't enjoy playing on my Fignition, naturally!

Carl_retrotext said...

The Points you raise in the blog are very well put and I feel they fit in with the expectation I will have of Both systems ( compliance dependant).


DuinoMite seems to miss the point, sure the sales argument in the comment above is a good one, but If that were the only option available to me last year, I would have just bought a Spectrum on Ebay at the same price.

Gareth Halfacree said...

@carl_retrotext
I think you're missing the point: ignoring the things the DuinoMite does that a Spectrum doesn't do (VGA output, runs through 30,000 lines of code a second, 22 GPIO pins, UART serial, CAN-BUS connectivity, proper audio output, can run from a battery, PC connectivity, micro-SD storage) a second-hand Spectrum is about as much use to an educational establishment as a chocolate teapot.

I used to work in education, and at the last school I sysadmined for there were four IT suites packed with 30 machines each for a total of 120 PCs - not counting the machines in the library, the sixth form block, or in other subject's classrooms.

So, if that school wanted a dedicated device to teach programming on, it would be looking to buy at least 120 such machines.

Currently, there's somewhere in the region of a dozen Spectrums of various types available for purchase on eBay - not all of which work, and not all of which will continue to work for much longer given their age. The aforementioned school couldn't buy 120 Spectrums even if it wanted to!

Dorine Flies said...

The Raspberry Pi is not a treat, people who "Know" about computing will see that as a tool for kids to learn to program its no better than your current methods and when you add the robustness issues, in the hands of teenagers to the equation, a lot worst.

What the Pi has done is raise the awareness of this kind of tech in schools, brought it to the attention of the person who knows nothing about computers but who is looking for a solution so they can teach the 2013 GCSE in Computing (first sitting of the exam).

Ive had several conversations with heads of IT in schools recently, all have admitted they don't have the staff in the school system to teach Computing in schools and they are actively looking to outsource the teaching element of computing to private companies as those still within the school system that can do it are due to retire within a decade, which is not long enough to get current software engineers to get passionate about teaching to teenagers.

To see FIG's in every school that will support Computing you need lesson plans that address the needs of the teachers and the curriculum they are set to teach.

That is a huge job but also so very exciting, anyone up for that challange?

Dorine Flies said...

The Raspberry Pi is not a treat, people who "Know" about computing will see that as a tool for kids to learn to program its no better than your current methods and when you add the robustness issues, in the hands of teenagers to the equation, a lot worst.

What the Pi has done is raise the awareness of this kind of tech in schools, brought it to the attention of the person who knows nothing about computers but who is looking for a solution so they can teach the 2013 GCSE in Computing (first sitting of the exam).

Ive had several conversations with heads of IT in schools recently, all have admitted they don't have the staff in the school system to teach Computing in schools and they are actively looking to outsource the teaching element of computing to private companies as those still within the school system that can do it are due to retire within a decade, which is not long enough to get current software engineers to get passionate about teaching to teenagers.

To see FIG's in every school that will support Computing you need lesson plans that address the needs of the teachers and the curriculum they are set to teach.

That is a huge job but also so very exciting, anyone up for that challange?

Carl_retrotext said...
This comment has been removed by the author.
Carl_retrotext said...

@gareth halfacree

I don't think I am missing the point, I wanted to build and programme an 8 bit computer, if I wanted to just programme an 8 bit computer I would get an 8 bit computer and programme it.

So the 'DuinoMite' and its virtues will pass me by, I don't feel it teaches anyone anything new, it sounds like its emulating an 8 bit rather than actually being an 8 bit, a subtle difference, but the difference none the less.

Of course if you want to emulate an 8 bit and programme BASIC, then you can use the many PCs that are in schools and download 256 Basic for them, its free.

I will continue to use my PC for all the wonderful stuff that the FIGnition cant carry off.

I shall take delivery of my Pi soon and turn it into an emulator of popular 8 bit systems,this is probably akin to having a Dictionary just to look up rude words.

Ken Boak said...
This comment has been removed by the author.