Skip to main content

EdFoo

I was invited to the world's first EdFoo conference, held at Google's HQ in California over the weekend of the 19th-21st February.

Me at the Googleplex

Foo? Yes, Foo (aka Friends Of O'Reilly).

I've written three books for O'Reilly, the last one being a short report on Python in Education. I suspect that's how I got on the invite list. EdFoo, as the name suggests, was a self-organised conference about education and I'm pleased I was able to attend. (I'm also indebted to the Python Software Foundation for their support via a travel grant to cover my flight from the UK.)

I had a fantastic time with good omens from the start: I flew to San Francisco on an almost-empty plane. Even the US border guard wanted a friendly chat. Apparently, "all you English people drink tea with your pinky stuck out because it helps balance the cup." Who was I to argue with the fierce looking dude in a uniform whose decision it was for my entry into the US..? "Hahaha, yes... of course we do, all the time..." I smiled back.

I took a shared shuttle from the airport to the hotel. My fellow passengers were a French dude who didn't know where he was going ("But I 'erv ze adresse 'ere. Non, non, non... ze adresse iz 'ere someware. Non. Ici. Oui. Ah, non..." etc), and a young Indian chap arriving to start his first job out of college at Google. After dropping the lost Frenchman in the middle of nowhere (he insisted it was the correct location) we chatted about cricket, much to the consternation of our American driver. It's like a secret code only commonwealth citizens appear to understand. :-)

While driving I was reminded of the Dionne Warwick song, "Do You Know the Way to San Jose?". I was ACTUALLY ON THE BLOODY WAY to San Jose. It's a four lane motorway. In future I can truthfully shout "YES!" whenever I hear the song played on the radio.

Foo camps are a sort of un-conference: the programme is organised by the attendees whilst at the event. A pre-prepared blank timetable and large sticky-notes are used to create a schedule. Interest in various activities is indicated by the copious use of sticky spots.

A Foocamp schedule

As you can see, I contributed a session about the BBC micro:bit project. People were very interested in the crazy notion of giving every 11 year-old in the UK a small programmable computer.

There were lots of wonderful aspects to this conference:

  • The people were, without exception, smart, friendly and enthusiastic;
  • The sessions were stimulating, lively and diverse in scope;
  • It was safe to contribute and I (personally) always got back more because of putting in.

Since I didn't know anybody, I was at my most gregarious. For example, at meal times I'd choose a table at random and ask, "can I join you?".

Here's a typical encounter:

"Of course!" replies the friendly looking lady.

I discover that she's a professor of anatomy, makes BAFTA award winning TV programmes and has a passion for whales. We talk on a diverse range of subjects and my tuba playing background comes up. It launches us into a discussion about the anatomy of circular breathing and how this is something whales may do when vocalising whale song. We're joined by a trombone playing colleague of hers and have a lovely time geeking out with stories of whales, youthful musical adventures, and anatomy.

Thank you Joy and Jeffrey for such an impromptu and entertaining lunch.

I took part in a wide variety of sessions. Highlights included a technical description of how Jupyter kernels work (more on this below), a discussion about the mechanics of curriculum generation and accidentally walking into a stimulating and enjoyable seminar attempting to work out why real schools are not like EdFoo.

It was a great pleasure to collaborate in such conversations. Often, the person who convened each session merely got the ball rolling. There was enough intellectual momentum in the room that conversation kept on rolling in all sorts of interesting directions.

My own session was a case in point. I spent about 15 minutes giving a brief overview of the micro:bit project, my contribution via the Python programming language and a demonstration of the device. Questions followed but it was most fun when I gave out a handful of devices for people to play with. I learned that Americans call crocodile clips, "alligator clips" so settled on calling them crocogator clips for the sake of trans-Atlantic harmony. I also learned that Chromebooks are popular in US schools. A professor of mechanical engineering even got excited enough to grab his laptop and implement a LabVIEW based controller to drive the micro:bit via the MicroPython REPL. It was very rewarding for me to see a diverse bunch have such fun exploring and experimenting with the device. I also had lots of post-session questions in the corridor since several people couldn't make my session because it clashed with other stuff.

I was conscious that EdFoo wasn't just a case of "Nicholas is off on a jolly" (as my wonderful wife puts it). I went with an open mind but was determined that there be tangible results from my attendance. Fortunately, the very first session I attended offered just such an opportunity.

The Jupyter project is written in Python and provides a means of presenting code, text and other digital assets in a sort of interactive notebook. If you're not technical, imagine if Leonardo's notebooks were interactive and reacted to a reader's modifications - that's what reading a Jupyter notebook feels like. I hope the educational potential of this tool is obvious.

Leonardo Notebook

The session on Jupyter was led by the creator of the project, Fernando Perez, and included contributions from Jupyter users as diverse as Google's Director of Research, Peter Norvig, Professor of Physics, Lorena Barba and staff from O'Reilly, who use Jupyter as a publishing platform.

As the session progressed it became clear notebooks record an interactive and engaging record of the author's movement of thought. As Norvig demonstrated, it's possible to change the code contained in a notebook and "poke it with a stick" as it were. Readers get to follow the author's train of thought but also pause and play with code to test their understanding of the concepts contained therein. As code is modified outputs automatically update (i.e. generated content within the notebook reacts to a reader's intervention).

I wondered how a teacher in the UK could use such a tool to deliver Python lessons to children. Could Jupyter be used to create and share interactive resources for the BBC micro:bit? I asked a few pointedly technical questions and discovered the presentation and evaluation of notebooks is separated. Presentation is done in a browser whereas evaluation of code is done in a "kernel". "How hard is it to write a kernel?" I asked. "It's well documented", answered an unsuspecting Fernando.

That afternoon I hacked together a new kernel to interact with a BBC micro:bit. I was able to control the micro:bit attached to my laptop from within a notebook in my browser. It took me about an hour and proved to be remarkably simple. Later in the weekend I integrated the Jupyter Qt widget into my Mu code editor for children, teachers and beginner programmers. Upon reflection, this is perhaps not the way to go - I believe the web-based version of Jupyter is superior. Happily, it's relatively easy to embed a browser into a Qt application like Mu so watch this space! I'm giving a presentation at next weekend's Raspberry Pi birthday conference about Mu, so I'll reveal what I've been up to as a part of my talk. It'll be interesting to see what reaction I get - especially from teachers.

I was also intrigued by the Jupyter contribution from O'Reilly. They've built some sort of authoring platform on top of Jupyter and gave a quick demo of Norvig working his way through a problem. I asked if it was open source to which the O'Reilly people responded that it wasn't. I pointed out that if it wasn't then someone would be bound to copy and re-create it. I think there was a bit of misunderstanding or crossed wires: perhaps the O'Reilly people thought I was talking about their (excellent) content. I was actually referring to the authoring platform they appear to have created on top of Jupyter. I imagine teachers would have a fantastic time with such a tool. I know of several secondary teachers in the UK who'd lap it up.

The other practical take-away from the conference was via a conversation with an educator who used Google's Chromebooks. These cheap and simple laptop computers are apparently very popular in schools in both the US and UK. "Can I use my micro:bit with a Chromebook?" was their concern.

Why yes, is my response.

I've adapted the web-based editor I wrote for the "official" BBC website and, via the magic of Chrome's serial API, added a REPL client so kids can interactively program their devices.

:-)

Yet another highlight was breakfast on Sunday morning: I had a lot of fun creating squishy circuits (they're made from a sort of dough) and had a professor of electrical engineering from MIT show me how to make a simple LED flashy thingamabob that makes a great light display in a dark room.

Squishy circuits

It's such fun to play!

Only 50% of the attendees are invited back. If I'm not, I'd love my place to be taken by someone from the UK. If there's but one criticism of the conference it is that it mainly involved people from the US. There's a huge amount of innovation, experimentation and success happening in education in the wider world. EdFoo could be a wonderful opportunity to bring an international and diverse group of education pioneers together. Since I'm making "moon on a stick" suggestions, my vote would be to hold it in Athens, the home of Plato's Academy and Aristotle's Lyceum (but I'm biased because I'm European and have a background in Philosophy).

Finally, sincere thanks to our hosts, Google, who did a magnificent job. I was particularly amused by the available WiFi SSIDs. :-)

Google SSID

Image credits: Leonardo Notebook © Trustees of the British Museum. The remainder were created by the author.

Vocation

Why do you do what you do?

We all "do" different things and fulfil many roles, but our vocation is usually how we answer, "what do you do?".

For example, I'm a programmer.

But there is a problem:

We are more than just our vocation, it is but a small aspect of who we are, what we do and why we do it. A vocation also pigeon-holes so there is a danger of prejudice (for instance, the vast majority of programmers are not spotty, socially awkward single men). Furthermore, our vocation defines us in terms of our economic value (it is how we earn money).

Because the notion of vocation is so strong there is a danger that it dominates how we find meaning in our lives. Everything appears to flow from our vocation: money to pay for the things we think we need. Our life is reduced to a struggle to "do a thing to afford another thing".

This wonderful article from 2012 supplies an interesting contrast to such a world view. It lists five common themes the dying focus on when asked, "what would you have done differently?" (the same question I posed at the start but expressed in the past tense)...

  1. I wish I'd had the courage to live a life true to myself, not the life others expected of me.
  2. I wish I hadn't worked so hard.
  3. I wish I'd had the courage to express my feelings.
  4. I wish I had stayed in touch with my friends.
  5. I wish that I had let myself be happier.

None of the themes directly reference vocation nor is the resolution of such wishes encumbered by money. For example, I can't buy "staying in touch with my friends". It depends upon my own efforts to remain close to those I hold dear.

It suggests to me that acting without the expectation of debt or obligation to or from others can be a source of happiness and good. Act for intrinsic value rather than financial or material benefit.

So, I'll ask again: why do you do what you do?

As always, comments, constructive critique and ideas most welcome (with the caveat that these are rather raw thoughts that I may revise at some later date).

What IS the meaning of life?

Please file this under Nicholas-is-a-smart-arse. :-)

In my experience, "what is the meaning of life?" is viewed as a difficult question. Nothing could be further from the truth, so let's just get to the answer shall we?

We're simply asking in the wrong way. Instead of wondering what something is, we can flip the question around and ask what its opposite isn't. Ergo, honestly listing the reasons for not killing yourself tells you what gives meaning to your life.

Try it for yourself!

Obviously, the answer is different for each of us and changes over time. But that's essentially it: asking the meaning of life is solved with a glib philosopher's dinner party trick.

Didn't I tell you to file this under Nicholas-is-a-smart-arse?!?!

"Wait a minute..." I hear you ask, "there must be more to it than that! What about deep stuff like God?"

Yes, what about God?

I am an atheist and find it hard to discuss "God" seriously. To give you a flavour of what I mean (and I'm certainly not trying to be disrespectful here) when discussing religion please replace "God" with "flying spaghetti monster" and "heaven" with "Sugarcandy Mountain". If the result starts to sound silly, then you have a sense of how all religious discussion sounds to me.

Given that I'm a smart-arse, perhaps I should top the meaning of life with proof that there is no god.

Actually, I don't have to because the burden of proof is not my responsibility ~ it's religious people who are asserting something (that there is a god).

Let's play another word replacement game to illustrate what I mean: where a religious person might say "God" let's say "a teapot orbiting the Sun" instead. As a result the assertion becomes "I believe there's a teapot orbiting the Sun" to which I might reply, "oh no there isn't". The response, "OK smart-arse, prove there is no teapot orbiting the Sun" shows how bonkers and untenable such a position is. Any reasonable person would expect the person making such assertions to be the one to prove there is a teapot orbiting the Sun, rather than waiting for me to prove there isn't such celestial brewing equipment. Put simply, just because it's possible to assert something that is blatantly unverifiable doesn't make it true.

My favourite example of this phenomenon is a drogulus ~ an entity whose presence is unverifiable, because it has no physical effects. The atheist philosopher A.J.Ayer coined it as a way of ridiculing the belief system of his friend, the Jesuit philosopher, Frederick Copleston.

In 1949 Ayer and Copleston took part in a radio debate about the existence of God. The debate then went back and forth, until Ayer came up with the following as a way of illustrating the point that Copleston's metaphysics had no content because there was no way of testing the truth of metaphysical assertions. He said:

"I say, 'There's a "drogulus" over there,' and you say, 'What?' and I say, 'drogulus' and you say 'What's a drogulus?' Well, I say, 'I can't describe what a drogulus is, because it's not the sort of thing you can see or touch, it has no physical effects of any kind, but it's a disembodied being.' And you say, 'Well how am I to tell if it's there or it's not there?' and I say, 'There's no way of telling. Everything's just the same if it's there or it's not there. But the fact is it's there. There's a drogulus there standing just behind you, spiritually behind you.' Does that makes sense?"

Of course, the natural answer Ayer was waiting for was "No, of course it doesn't make sense." Therefore, the implication would be that metaphysics is like the "drogulus" ~ a being which cannot be seen and has no perceptible effects. If Ayer can get to that point, he can claim that any kind of belief in the Christian God or in metaphysical principles in general is really contrary to our logical and scientific understanding of the world.

So, what am I saying?

That is a complicated question - it's not just synonymous for "what is my argument?".

The examples above demonstrate that language is a source of confusion. It's possible to ask, "what am I saying?" in a more fundamental way - synonymous with "what do words mean?". Habit or familiarity appear to lead to lazy thinking: some thing must be true because it's repeated in such-and-such a way by lots of people. Yet, when the way that thing is expressed in language is explored it becomes obvious it's actually confused and a tad silly.

Ask yourself, what is the meaning of "life"? (Or any other word or turn of phrase.)

So, what's my argument? ;-)

If language is such a blunt tool and endless source of confusion how are we to discuss important subjects such as how to lead a good life? How are we to share complex and confusing ideas such as our dreams, loves and losses?

I'm not sure.

It might be best to merely act, observe, reflect and adjust. Know me by what I do, how I act and the way that I change myself rather than by what I might say (to be clear, the content of this article is covered by this assertion).

Like I said, file this under Nicholas-is-a-smart-arse.

As always, I'd love feedback, constructive critique and ideas about such raw thoughts.

:-)

PyCon India

It was an enormous honour to be invited as a keynote speaker at PyCon India. It turned out to be one of my most enjoyable PyCons.

The Python programming community is famous for being a diverse and welcoming place. Apparently someone once said that they'd came to Python for the programming language, but stayed because of the community. That has been my experience too. Visiting PyCon India reinforced this outlook.

Python is free software in two ways: anyone is free to make use of it in any way they see fit and it is given away for free. To paraphrase, it is both free as in speech and free as in beer. Volunteering time, effort and expertise is at the core of the Python community and every PyCon is different since it reflects the volunteer community that organises it.

At around 1500 attendees PyCon India is the second largest PyCon in the world. The reason it is so big is because the organisers have managed to foster and grow a community of amazing volunteers to run the conference. This was brought home to me during my first evening in India: wanting to make some friends I turned up at the conference venue to volunteer in some way. I ended up stuffing 1500 swag bags (full of leaflets from the conference sponsors), in what can only be described as a nerdy form of "keep-fit".

It works like this: volunteers run around in circles holding open bags while others stand in the middle throwing "swag" into them. At the end of each lap yet more volunteers are on hand to stack the bags ready for distribution to the attendees the next day. This process starts haphazardly, but people change roles and slot themselves in where there are bottlenecks in order to improve the efficiency of the "bag stuffing algorithm". Other techniques to speed things up included shouting a lot, chanting and laughing at each other. This process is beautifully illustrated in the following video of a "lap" that I took on my mobile phone:

By the end of the evening we were a well oiled machine.

Friday, the first full conference day, was interesting - I was still used to UK time so when my alarm went off at 6am (or around 1:30 am UK time) I decided to sleep in for "just another 10 minutes". Four hours later I was woken by a phone call from reception. An Indian buddy had turned up at my hotel to look for me and give me a lift.

He'd come on a motorbike.

I'd never been on a motorbike.

So, my first time on a motorbike was sitting on the back, hanging onto this dude's back pack, no helmet, dust in my eyes, zipping through Bangalore's morning rush-hour.

"Is it safe?" I asked.

"Of course it is...", he replied. "The traffic is so bad we never go faster than 15 mph anyway!"

The trick appears to be not to pay attention to all the car horns, shouting and never to look over your shoulder at what could squish you.

I also observed that traffic lights in Bangalore are only for decorative purposes. I particularly enjoyed getting stuck at a junction and giving an ancient lady in a colourful sari sat on the back of an adjacent moped a big grin and having it returned (but without teeth).

The following video (taken from the relative safety of a taxi) doesn't even begin to convey the chaos of the traffic in Bangalore. Can you spot the stray cow?

Throughout the course of the conference I found everyone, without exception, to be very friendly and I was made to feel very welcome. Thank you to my new friends in India for your wonderful warm hospitality. I hope that if you ever make it to the UK we'll be able to welcome you as well as you did me.

Sunday was the day of my keynote. I was addressing all 1500 delegates in the main hall and I'd chosen to focus on education as the topic of my presentation. I was actually really looking forward to giving the talk and had a lot of fun whilst giving it. The live demo went well, people laughed at my jokes, they had lots of interesting questions and it took me about an hour and a half to field all the comments I received in the corridor afterwards. In fact, one of the organisers told me that my keynote was a top trending item on Twitter in India. Wow!

You can see the whole thing in the video below.

As always, I love to get feedback (both good and bad). Please feel free to drop me a line.

Special mention should be made of the two main organisers, Vijay Kumar and Kracekumar Ramaraju, who put on an amazing event. I'd also like to publicly thank my friend Kushal Das and his family and colleagues for being my guides around Bangalore.

Will I go back to India? Absolutely! It's an amazing place.

It was a privilege.

The Story of MicroPython on the BBC micro:bit

I am a child of the 1980s.

One of the formative experiences of my childhood was the arrival of our first computer. My father was a headteacher - one half-term holiday he brought home his school's computer to learn how to use it. Yet it was my brother and I who spent most time on it. This was my first program, written in a language called BASIC:

10 CLS
20 PRINT "YOU'RE AN IDIOT"
30 GOTO 20

I remember the infectious enthusiasm of a number of my teachers: my design and technology teacher, a gentleman called Eric Rose, showing me how to program a robot arm he'd made and the school librarian, Philip Wilson, encouraging me to explore and experiment with bulletin-board systems and a long-forgotten service called PRESTEL (forerunners of today's consumer internet).

I wouldn't be a programmer were it not for such positive formative experiences.

A BBC Micro

The computer I used was, of course, the BBC Micro: the result of an extraordinary initiative called the BBC Computer Literacy Project.

David Allen, the project's producer, explained that, "[t]he aim was to democratise computing. We didn't want people to be controlled by it, but to control it."

Fast forward to today.

Thanks to the efforts of teachers in organisations such as CAS and extraordinary world-changing projects like the RaspberryPi, computing education is undergoing a renaissance in the UK and the BBC are stepping up to help once more. The Python programming language is part of this effort and you can get involved.

What follows is the story so far...

In December 2014 the BBC announced their intention to create a mysterious computing-in-education project with "partners". I had recently organised PyCon UK's education track, people knew I was a Python Software Foundation (PSF) fellow and kept asking me if the PSF was involved. I decided to investigate and, with the blessing of the PSF board, applied for the PSF to join said partnership.

The BBC explained a staggering "moon-shot" project: to create a small, computing device to be delivered to ALL year 7 children (11-12 years old) in the UK. The newly christened BBC micro:bit would facilitate the first step towards inspiring digital creativity in a new generation of school children. I could identify with that!

A BBC micro:bit

At the beginning of 2015 a partnership was formed to deliver such a device and the PSF were on board to deliver educational support, resources and Python expertise. The BBC told us they already had a partner to create a Python "solution" for the device.

Over the spring I volunteered my time to attended meetings at the BBC and got to know several of our fellow partners: ARM and Tech Will Save Us were designing the hardware, Microsoft was to supply a child friendly development environment and many more were tackling other aspects of the project. I spent my time working out how to engage with our extensive network of Python-using teachers who could experiment with the device, create resources and train colleagues. I also wondered how to engage the wider Python community who, I was certain, would be very excited by the project.

However, I encountered two problems:

First, the project is covered by an NDA. The partnership agreement states that when the device is delivered all the resources needed to recreate the project are to be released under an open license ~ the laudable intention being an unencumbered legacy so others can build upon and adapt the work of the partnership. The NDA exists for the same reason there's a pre-broadcast NDA in place for the makers of Doctor Who: it avoids spoilers that would lessen the impact of the launch. Unfortunately, saying "NDA" to anyone from a free software background (such as Python) is a sure-fire way to turn them off (at best) or become hostile (at worst). This wouldn't be an easy sell!

Secondly, at the end of April I was asked to a meeting at the BBC where I was told the partner tasked to supply Python had dropped out. "We must have Python on the micro:bit" said the BBC. "I think you want the moon on a stick" I thought. Nevertheless, I agreed to look at Microsoft's TouchDevelop platform with a view to creating a version of Python to sit on top of the development environment and cloud based compilation service. I would need help, so asked those UK based Pythonistas I knew who had the right skill-set and interest in education to sign the NDA and help me evaluate what to do next.

Microsoft's TouchDevelop is a fascinating open source project: it's a browser based visual IDE for kids that generates a JSON based AST that's turned into C++ and sent to ARM's mBed cloud compilation service. Ultimately, a hex file is delivered to the user's browser and downloaded onto their local file-system. Plugging in the micro:bit makes it appear as USB storage and you flash it by dragging the hex file onto the device.

Python is, of course, a dynamic interpreted language rather than a static compiled language such as the one used by TouchDevelop. Furthermore, a version of Python that compiled to the TouchDevelop AST would be a completely new language - a Pythonic shim to make TouchDevelop feel like Python. Finally, TouchDevelop itself is written in TypeScript, an interesting Microsoft-developed language that compiles to JavaScript. None of us evaluating TouchDevelop knew TypeScript and the thought of creating a new compiler for a sort-of-Python, frankly, gave us the collywobbles.

Ultimately, designing and creating something Python-ish to work on TouchDevelop appeared to be impossibly difficult (or difficultly impossible, depending on how you looked at it) for a handful of volunteers working in their spare time in an unfamiliar language.

It was at this time that something amazing happened.

I was at a partner's meeting at the BBC and, quite by accident, struck up a tea-break conversation with "Jonny from ARM, pleased to meet you". It turned out that Jonny is a fellow geek, but one that inhabits a different layer of the computing stack (I generally work in high level languages like Python or JavaScript, Jonny feels more at home close to the bare metal hacking hardware).

After we'd figured out the above, Jonny asked, "have you ever heard of MicroPython?" (MicroPython is a full re-implementation of Python 3 for microcontrollers used in small devices such as the micro:bit).

"Why yes", I replied, "I've spoken to Damien several times over the phone since he was invited to speak at last year's PyCon UK" (Damien is the Cambridge based creator of MicroPython).

"Cool, I know Damien too, he's my next-door-neighbour", explained Jonny, after which he casually told me, "you know, it should be possible to get MicroPython to run on the micro:bit".

"Really..? The BBC had told me they'd looked into MicroPython but the device had the wrong chipset..."

"Oh, that was correct for the prototype. But we've changed the chipset. I'm pretty certain it'll work now."

Soon after I went to see Damien in Cambridge. I explained the project and he agreed he'd be willing to volunteer some time to explore porting MicroPython onto the device (Damien, like me, has a full time job). I organised for him to sign the NDA and Jonny supplied Damien with the appropriate things needed to compile MicroPython for the target chipset.

About a week later (at the very end of May) Damien emailed myself, Jonny and a few interested people at the BBC:

Thanks Jonny for the nRF mkit dev board, it has proved very useful!

I signed up to mbed, exported the blinky example for the mkit and got it compiling locally using a local toolchain. And then using this I managed to get MicroPython compiling and running on the mkit! There is a surprisingly large amount of room: I could enable floating point support, aribitrary precision integers, most of the Python features and a few builtin modules. The REPL works over the USB-UART with history and tab completion. It even has a working ctrl-C (meaning you can break out of an infinite loop). I implemented a basic "pyb" module with LED and Switch classes, and a delay function. So you can do something like:

led = pyb.LED(1)
while True:
  led.toggle()
  pyb.delay(100)

I'm not ashamed to say that I danced around the room fist-pumping the air shouting "woo hoo" when I read Damien's email. It confirmed there was a real possibility of getting proper Python to run directly on the device itself.

A week later I was in London for another partner's meeting where I was to get my hands on one of the very first batch of final-design devices. It was heartbreaking to be given such a cool device only to have to pass it to Jonny with the sad plea, "can you post this through Damien's letter box please?".

Over the next days Damien, Jonny and I kept in touch as Damien worked around some teething problems. Then, on the 17th June, Damien emailed again:

Using your new USB serial firmware and demo program I have now got MicroPython running on the micro:bit!

We finally had confirmation that MicroPython was going to work on the device! Much dancing, fist-pumping and shouts of "woo hoo" took place as I emailed the BBC with the good news.

They asked how we could integrate our work into TouchDevelop so I embarked upon writing a browser-based code editor (starting from the excellent ace editor). This is mostly done apart from some design tweaks. It's currently embedded in a test instance of TouchDevelop and works really well!

Interestingly, because this is Python we don't have to use the cloud compilation toolchain. Since hex files are a simple format we worked out a way of encoding Python scripts written in the editor in such a way that they can be inserted into the appropriate place in MicroPython's hex file. When the device starts up it discovers the embedded Python and the script is automatically run. Since the size of the MicroPython hex file is a lot less than say, the total size of the BBC's news frontpage, we embed the hex file within our HTML (it's in a hidden div) and do all the processing locally in the user's browser. It means the Python editor will work offline. We also have a non-TouchDevelop version to run from your local filesystem (so you don't need to be connected to the internet at all!).

Most importantly, it's possible to use the Python REPL via the USB connection. It means it's possible to "live code" the device by typing commands into a prompt, just like I used to do on my old BBC Micro. It's a wonderful mechanism for playful exploration and experimentation so kids and teachers get to see the results of their code running immediately on the device. Such a tight feedback loop is very useful and lots of fun!

More recently, we've implemented a microbit module to access the device's hardware (a couple of buttons, an LED matrix, compass, IO pins, accelerometer and so on). We also held a code sprint at PyCon UK a few weeks ago and, after various bits of NDA related fun, we've been able to add some wonderful new collaborators. We're pushing ahead on interesting new capabilities such as game-related functionality, optimizations so it's easy to create animations on the LED display and a music API: connect a speaker via crocodile clips to the IO pins and listen to bleeps and bloops.

The video below, created for a friend who blogs about "favourite modules", is a few weeks old but gives a flavour of our current status:

We also sent a micro:bit to Guido who appears to be quite chipper about the project:

But there is still lots to do and we are a small team! The BBC understand the danger of a low bus factor (especially when work is being done by a small ad hoc band of community volunteers) and how important it is to engage with existing communities who are sympathetic with the cause of computing education.

As a result I'm immensely pleased that from today the BBC have agreed that we can continue our work in the open and outside the restrictions of the NDA. The micro:bit related parts of MicroPython have been released under the MIT license and can be found at this GitHub repository.

The browser based code editor will follow soon.

Please take a look, poke around and help. If you feel you can contribute I will try (no promises) to get you a device for development purposes - but I will need to be confident that you'll do work and push code.

You can contribute in other ways too: documentation needs writing and we want to generate educational resources for the device. Get in touch if this interests you! Alternatively, if you have an idea for a fun Python related project, tell us about it and I'll try (again, no promises) to get you a device for testing purposes.

Contributions are welcome without prejudice from anyone irrespective of age, gender, religion, race or sexuality. Good quality code, ideas and engagement with respect, humour and intelligence win every time.

Could you contribute something to a project that will touch the lives of 1 million children and create a legacy anyone can use?

:-)