Choose Your Own Programming Adventure!

August 07, 2006 at 12:45 AM | categories: python, oldblog | View Comments

I made the offer to write some exercises to teach python programming at OSCON, specifically in the form of being able to create a "choose your own adventure" style game using python. So, here we start! By the end of this first entry, you will be able to write a basic "choose your own adventure" computer game, even if you've never written a line of code before.

OK, there's dozens of ways of doing this, so we have to pick one. One place to start is to look at what the thing you're trying to emulate looks like.

What does a choose your own adventure look like?

Well, it's essentially a book, divided into lots of micro-chapters - at most 1.5 pages long, normally 1-3 paragraphs in length. Each paragraph has the following:

  • It is typically numbered and you start at section "1"
  • The section says where you are, tells a microstory, that ends with a choice point.
  • That choice point then allows you to move on to another part of the story

So, let's begin.

As a word of warning, this will start out gently, perhaps a little patronising, but hopefully with enough humour or bizarreness to offset that. The reason it might seem patronising is because I really want to point out some really important points, and without understanding those, everything else falters. However at the end of this first tutorial you will write your first adventure game, and don't worry, it will be simple.


The tutorial for sake of getting into the spirit of things, the tutorial is in the second person. This is YOUR adventure!

Prologue

You are sitting at the computer looking dumbly at the screen. You ponder your decision to decide to learn to code wryly, and realise that it might not've been such a bad idea after all. You decide to download python, and give it a go.

You go to http://www.python.org/download/ and grab a version suitable for your OS (unless you already have it installed because you have a recent Mac, or a modern Linux install) and install it.

The first program you are asked to run looks like this:

print "Hello, you are in a small dark room"

Unimpressed, but determined to follow the instructions, you open up a Terminal window, then load up the python interpreter:

~> python
Python 2.4.2 (#1, May 2 2006, 08:13:46)
[GCC 4.1.0 (SUSE Linux)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

You type the code in, and press return, and are singularly unimpressed by the result:

>>> print "Hello, you are in a small dark room"
Hello, you are in a small dark room

That said, your lack of awe with regard to this fills you with hope. You realise that this programming lark might not be as difficult as some people make out.

The Lobby Scene Begins....

"AAARRRGGGHHH!", you think, "I'm late!" - as you remember that this is your first day at yet another job of the kind that you're hoping to use your hoped to gain programming skills to get out of. You're starting a new day as a receptionist at the local hotel, though thankfully only for postal & messages tasks. You remember the hassle you got last time when you were on the front desk and all those people from that open source conference were visiting - what a nightmare that'd been - everyone complaining about the wireless!

You arrive at work, some 10 minutes later, and after 20 minutes of waiting are thrown straight in.

In front of you is a large collection of old style pigeon holes on the wall. All 256 are numbered, though oddly starting from 0 all the way to 255. Puzzled by that you pass it by. Next to the collection of pigeon holes is a register which should contain a list of the surnames of the people staying in which rooms. You note that some rooms have multiple surnames associated with them. Since it's not the 1900's you're not particularly surprised by this!

You do for a moment wonder though - why's the story taken a turn for the moment towards hotels, pigeon holes, and surreptitious weekends away when the story should be related to teaching programming through adventures...

"WHAT ARE YOU DOING DAYDREAMING", shouts the concierge at you. "HAVE YOU FORGOTTEN WHY YOU'RE HERE?"

Suddenly you realise you have forgotten what you're doing. You decide to make a note on the notebook in front of you to remember what you're doing - you're taking messages and giving them back when requested.

Your First Assignment

A customer comes up.

"Ahh, your first assignment", says the concierge.

"Hi! I'd like to leave a message for Mr Message", says the customer.

You think this is a very odd name for a person, but reply "OK, sure, let me just check his room number". You consult the register and find that he's staying in room 5. You grab the slate board from pigeon hole 5, whilst thinking briefly how strange it is to be writing notes on slate boards, but hey, maybe the hotel management isn't really that bright, or just stick to simple things they trust.

"OK, ready, what's the message", you say.

"OK, the message is 'Hello, you are in a small dark room' ", the customer replies.

You pause for a moment thinking how strange this is - after all this was the message the tutorial you were reading suggested.

Undeterred, you say "sure, no problem", and write "Hello, you are in a small dark room" on the slate for the room that Mr Message is staying in, and store the message "Hello, you are in a small dark room" back in Mr Message's pigeon hole.

Strangely, the mysterious glyphs ...

>>> message = "Hello, you are in a small dark room"
>>>

... appear in mid air, burning like fire, but as cold as stone. There is a clarity about the phrase. It is trying to get you to understand something. Something about what you are doing in the hotel lobby storing a message, and what looks mysteriously like something you'd see on a python prompt.

You ponder for a moment what could possibly be similar between the code ...

message = "Hello, you are in a small dark room"

... and putting the text "Hello, you are in a small dark room", in a pigeon hole associated with a Mr Message?

A wry observer sitting the hallway nods sagely and realises that whilst such a description may be patronising, he's seen many a novice stumble over this initial step.

He walks forward and says: "Think like Daniel - the Karate Kid. How many times did he wax on, wax off, on those cars? When did he learn Karate? Was he merely polishing when he was hitting his opponents? or was he fighting those cars instead of polishing them? Sometimes realising that you already understand something is merely a matter of recognising that it is really no different from something you already know."

You pause. Pop reference. Telling you something you already know, but telling it to you in a way you hadn't expected. Australian accent. Hmm. Nah. You move on.

Then you realise - the old man was right. If taking a message for a man named "message" and placing it in a pigeon hole was an easy and obvious thing to do, something you'd seen a 100 times, then that was precisely what ...

message = "Hello, you are in a small dark room"

... means. It means taking a piece of information, storing it away somewhere, merely referenced by the name message.

Access All Areas

"PAY ATTENTION", shouts the concierge again. "DON'T YOU SEE THAT SOMEONE IS HERE?"

"Oh, sorry", you reply.

"Yes, I'd like to access my messages"

"Access my messages", you think, "how strangely these people in silicon valley speak. Maybe they've spent too long near their computers". However, you reply "Of course sir, name?"

"Message", he replies

For a moment you pause, you were about to ask "yes, but I need your name". However you realise that this is actually Mr Message - you remember that he does actually have a message.

You glance at the register, looking for the name "message", finding again that he's in room 5. "How could I forget that? That was like just a moment ago?". Shrugging, you grab the slate from pigeon hole 5 - and find "message" has the message (hmm, that's a bad turn of phrase you think) - that "message" has the value "Hello, you are in a small dark room".

You declare to Mr Message, "Your message reads, 'Hello, you are in a small dark room'".

As you do so, again those firey, cold, and compelling letters come into the fore again, but this time it's different:

>>> message
'Hello, you are in a small dark room'

Mr Message seems happy with this news, and wanders off. Presumably he just wanted to hear what was left in his box, and didn't actually want to do anything with it.

At this point in your thoughts you see the old australian again look up at you, give you a piecing look, and a smile that suggests that there is something here again. However all he says is, "Look at you figuring it out! You snake!".

Realisation - Revelations in a Lobby

More puzzled than before you wonder, what can he mean? Snake? What can be the relationship between a man coming up to you, saying "message", and you replying " 'Hello, you are in a small dark room' ", and the interaction on the python interpreter of:

>>> message
'Hello, you are in a small dark room'

You pause.

You think.

Then you smile.

The old man is trying to draw your attention to the fact that your role in the hotel lobby has been akin to that of the python interpreter. You have been the python - you have been the snake. Once you have been the snake there is no going back. From now on when ever you see the following on the python interpreter

>>> message = "Hello, you are in a small dark room"

You will think of the lobby. You will think of the pigeon holes, each with a slate that can hold only one message - only one value. You will remember the register on the desk beside the pigeon holes, and remember that it allows you to look up a pigeon hole from the name you're given. You'll remember that when you see:

>>> message = "Hello, you are in a small dark room"

That you will look up the room "message" is staying, grab the slate from the pigeon hole for "message", write the value "Hello, you are in a small dark room" on the slate, and then put the slate back.

Furthermore, you'll also remember that if someone merely requests the value associated with message, that is if you see:

>>> message

That they're not necessarily interested in doing anything with the value, they're just after the value.

You'll remember it's like someone coming up to the counter and saying "message" (or rather messages for Mr Message, but you filter out the boring parts), and that when they do that you look up which pigeon hole contains what they're after. You'll remember that you simply reply with the value in their pigeon hole.

Indeed, so patronising do you find the whole idea, you realise that the person behind the counter could be replaced with a little robot instead who merely sits there storing values for names, and when asked for values by name it replies with those values.

As a result, by this stage you think that the following is now painfully obvious to you:

>>> message = "Hello, you are in a small dark room"
>>> message
'Hello, you are in a small dark room'

You realise that "=" has nothing to do with mathematical equality (mind you, neither does gender equality!) as you learnt in school, and whilst there is a link, the reality is that what this...

>>> something_memorable = "some thing"

... really means is take the value "some thing", and store it in a location for safe keeping that we can come back to later and label that place "something_memorable". When asked for the value "something_memorable", by simply mentioing it's name:

>>> something_memorable

... we'll look at the location assocaited with "something_memorable", find the value "some thing" and merely return the value.

Your First Adventure

Excited, you realise that this actually is enough for you to get started with your first adventure!

OK, maybe it'll be a bit manual right now, and lets face it this will be a bit un-exciting as a first version, but hey, we need to learn to crawl before we can run right? And heck, we'll be able to translate all those old choose your own adventure books at this stage (but not those more fun Fighting Fantasy ones perhaps ! ;-).

You figure that surely the later steps in the tutorial will be about making this less manual, so you give the person writing this tutorial a break - after all this is about getting started as quickly as possible.

You do cut them a break, don't you? ;-)

So without further ado, we revisit what a choose your own adventure is - it's a collection of sections - all numbered - much like the rooms. Each section is a passage of prose, finishing with a little statement of where to go next.

Get a room!

You then figure. "Hmm. I can do that already. What would the first room look like. You excitedly open up your python interpretor and bash out your first section excitedly:

>>> one = "You are in a small dark room. You can see a dim light coming from the north and south exits. Type two to go south, and three to go north"

You sit back and think "It can't be that simple can it? There's all that choice stuff in those books?! They seem so complex? So rich? It can't be as simple as this". However your next step is to try it. What does it look like, can it really be this easy?

>>> one
'You are in a small dark room. You can see a dim light coming from the north and south exits. Type two to go south, and three to go north'

You sit back, stunned.

This is exactly what you wanted! (or said you wanted :-) OK you think, let's go north, I wonder what is north. You see that the instructions are "to go north, type three". So you do just that.

>>> three
Traceback (most recent call last):
File "
" line 1, in ?
NameError: name 'three' is not defined

Oddly however, you notice that your computer is also shouting this at the top of it's lungs in a voice that sounds remarkably similar to that of the concierge. At this point, you remember the hotel lobby. What if someone had come up to the desk earlier today and asked for messages for "Mr Three". There were no messages for "Mr Three", and furthermore, no "Mr Three" had ever checked in.

You realise that you're being unfair - the computer is a poor little dumb beast - it can't take a single value and create a whole adventure, it's just not that good. You need to provide it the adventure yourself. You take a heavy sigh, computers are dumb. They're very good at remembering things if you tell them things and something to remember them by, but you have to remember what you called those things.

Write your own Adventure

Expectantly, you sit back for a moment wondering what the author of this tutorial is thinking. Are they really expecting you to fill in the rest of the adventure yourself?

Suddenly, as if by magic some hints fall from the sky in the form of more activity on the python prompt:

>>> two = "You have entered a clearing. It is a warm and sunny clearing, and you hear birds chirriping, and children playing in the south. You smell the strong familiar scent of coffee to the east. To go east, type four. To go south type five. To return north, type one"

>>> three = "You are in a maze of twisty passages all alike. You continue on for a while and the passageway branches to the right. To continue straight on type three. To turn right type six. To turn back, type one"

Now seeing what the idea is, you copy the text out, into a text editor, and format it over 3 lines to look like this:

one = "You are in a small dark room. You can see a dim light coming from the north and south exits. Type two to go south, and three to go north"

two = "You have entered a clearing. It is a warm and sunny clearing, and you hear birds chirriping, and children playing in the south. You smell the strong familiar scent of coffee to the east. To go east, type four. To go south type five. To return north, type one"

three = "You are in a maze of twisty passages all alike. You continue on for a while and the passageway branches to the right. To continue straight on type three. To turn right type six. To turn back, type one"

Excitedly you copy and paste these three lines into an open python terminal. You decide to start your adventure, head south, then north, enter the tunnels, and return back the way you came:

>>> one
'You are in a small dark room. You can see a dim light coming from the north and south exits. Type two to go south, and three to go north'
>>> two
'You have entered a clearing. It is a warm and sunny clearing, and you hear birds chirriping, and children playing in the south. You smell the strong familiar scent of coffee to the east. To go east, type four. To go south type five. To return north, type one'
>>> one
'You are in a small dark room. You can see a dim light coming from the north and south exits. Type two to go south, and three to go north'
>>> three
'You are in a maze of twisty passages all alike. You continue on for a while and the passageway branches to the right. To continue straight on type three. To turn right type six. To turn back, type one'
>>> three
'You are in a maze of twisty passages all alike. You continue on for a while and the passageway branches to the right. To continue straight on type three. To turn right type six. To turn back, type one'
>>> three
'You are in a maze of twisty passages all alike. You continue on for a while and the passageway branches to the right. To continue straight on type three. To turn right type six. To turn back, type one'
>>> one
'You are in a small dark room. You can see a dim light coming from the north and south exits. Type two to go south, and three to go north'

Happily you sit back, you realise that now it could be just a matter of translating a story into a number of assignment statements, entering those into the interpreter, sitting back and enjoying the results.

Get Some Exercise

Suddenly a storm cloud comes over the horizon, and you sit, worried. How can I avert this, and you realise there is only one way - you have to get some exercise - you have to write your first version of the adventure. Yes its trivial right now, and actually writing the adventure might actually be the harder part here, and you notice that your existing code is decaying and dying. The principles of that code remain in your mind - associate a section with a name starting with one. In the prose of the section associated with that name state "To do X type <sectionname>", and for all the section names include some text.

Some suggestions spring to the screen.

  • Imagine you are writing a choose your own adventure computer game set around discovering the body, entering at the mouth. Some example possible sections:
    • one - "You are in the mouth. Would you like to look around (type two), go down the throat (type three), or open a vein and dive in (type four) ?"
    • two - "You don't see anything particularly interesting and decide to: go down the throat (type three) or open a vein and dive in (type four)."
    • etc
  • Imagine you have a time machine that can materialise and dematerialise at any point (or points) in time and space. You start off in your local city and time (one), and from there on have the choice of traveling through time (two), space (three) or both (four).

This is clearly the first exercise, and is actually a fair amount of work, though largely creative. It's worth noting here that being silly is probably a good idea, since it'll a) be more fun b) probably create a larger volume of text and sections to be working with. Certainly this tutorial is longer than I anticipated due to the slightly whimsical tone :-) I'd suggest at least ten sections, but no more than 20. When you're done, it'd be really cool to see different answers posted as replies to this blog entry. I'll hold back moderating replies with answers as public for about a week, and then make them public.


In case no one actually posts any answers, I'll post a set of answers as well!
Read and Post Comments

Creative Coding

August 05, 2006 at 10:32 PM | categories: python, oldblog | View Comments

I've now got a focus for this blog - creative coding. This is a consequence of spending a week at OSCON, talking to lots of people, making a few commitments for a variety of people, and trip to a bookstore and deciding to buy The Complete Idiot's Guide to Creative Writing, and also Kathy Sierra's keynote talk, where she said "think of something you're passionate about that isn't code". Well, actually there is something I'm passionate about, that is creative, fun, and artistic, and I'm sorry, it's coding. For me coding is creative, and something to be passionate about. This viewpoint firmed itself up somewhere halfway back to the UK, and I decided that that is what this blog should be about.

Music is great, I love listening to it, but I have no flair there, no creativty. Poetry is intriguing, but it took me 32 years to understand what the point of poetry is. Ask a writer why he writes, and many will reply - because they have to. All are creative in their own ways. All entertain in their own ways. For me coding is just as exciting, creative and fun. It's why programmers argue about language - all major language (bar a few) are turing complete meaning they're all equivalent. Python is no more powerful than Perl. Perl is no more powerful than Ruby. Ruby is no more powerful than C and so on.

So how to they differ? The term we often use is expressiveness. But in reality, what we really mean is they are aesthetically different.

There being only one obvious way to do it means that when we meet new code, we can see the algorithm in use immediately, since all the common forms disappear from our view leaving the structure behind. This is valued implicitly when access to code is important, and an ability to understand quickly is important. It's one reason people create style guides and cookbooks and patterns where these things are valued. However in a language like this, the code poets still exist, they invent forms that make the language more powerful, so that more can be said in a perhaps familiar way, but with the least number of lines. In a way, python can be viewed as being the language of the Haiku - strict rules, powerful, and evocative.

There being many ways to do it is important where the need for personal expression, the need to do it my way is viewed as important. It's of little suprise then that this viewpoint, that a language that is inclusive of the need to express a personal coding style also furnishes some of the more intriquing concepts. How obfuscated can we make this code? How can we write poetry in this code (Two completely opposite goals in many respects). In this way, perl is spectacular - it allows the writer to mould the way something is said to match the needs of the conversation. If you need to say it in morse code, you can. If you want to say it in Buffy, you can. If haiku is your thing you can do that too, and if the computer equivalent of thrash music is your thing, you can do that too.

I'm going to refrain on making allegories on other languages, though I would find it fun to hear quite why so many people find the concept that Ruby is poignent compelling. To me Ruby is the friend I want to meet and get to know, but simply haven't has a chance to find something fun to do with in order to really understand.

However at the end of the day, the real differences here whilst we label them expressiveness are really aesthetic. I would also contend that anyone can learn to code. At present my favourite language is python for many reasons, and so the focus of this blog will be largely on creative coding in python. However, just as the Haiki, or Short Story or Novel, Novella, Limerick etc are all no better than each other, I feel the same about languages. They're all fun. (with the possible exception of COBOL - she needs to loosen up and go out and get a life :-)

So, why the blog, why this focus? After the Google summer of code BoF, I and a few others were kindly taken by Google to downtown Portland for a beer and some Pizza. The conversation strayed over to learning python, and in repy to a comment about "how long do you think it would take to learn python from scratch" (ie no coding experience), one of the summer of code students said "about 2-3 months". I replied "no, a week, maybe 2 at least". This took him aback, challenging me with "have you ever taught programming to complete novices", and ironically, I have. Whilst I was working for Manchester University many moons ago,  I gave an introductory programming course. So I mentioned that.

The conversation then drifted onto the idea of writing adventure games - the old "choose your own adventure game" style game in python as a learning example, and I offered to write a series of exercises which would teach someone python and programming from scratch. Why did I do this? Madness? Possibly. However, it's probably the same reason Laurie Rozakis wrote a book on how to write creatively - it's fun writing code.

So that's it in a nutshell really, someone challenging me to forget the thing I find fun and creative when thinking about what I find fun, finding a book about creative writing, and me realising that I've not actually seen a site dedicate to the fun of the act of creating code, and actually having a project I've promised to do. Hopefully the writing will be as much fun as writing code :-)

More to come soon :-)
Read and Post Comments

Changed over to using Dojo Toolkit for editting

August 05, 2006 at 09:29 PM | categories: python, oldblog | View Comments

Small changes can make a big difference. For editting of new posts, I'm changing over to using dojo toolkit. I'll see how this goes for a while before rolling out elsewhere on the site.

Hopefully it will make a big difference ! :-)

Read and Post Comments

OSCON 2006, Portland, Oregan

July 23, 2006 at 05:22 PM | categories: python, oldblog | View Comments

Well, here I am, in portland, after travelling for nearly 20 hours, I got here. On the clock I left home around 7am and arrived here around 7pm, but travelling over an 8 hours time difference means it was 20 hours. That led me to the rather random thought - sometimes employers bemoan the fact that there's only 24 hours in a day, wishing there were more - well yesterday I had a 32 hour day. If you simply want longer days, put everyone on a boat, and send them westwards. Can't wait until the working day is done? Go the other way round the world. :)

You can probably tell I'm feeling a little random can't you ;-)

Read and Post Comments

Cerenity - Wiki

July 04, 2006 at 02:18 AM | categories: python, oldblog | View Comments

Finally getting around to putting together a proper wiki engine out of the various pieces of code I have, now that the wysiwyg editor in a browser is becoming sufficiently capable. I'll deploy something soon, once I've integrated the capabilities model inside this blog engine with it, but for use behind a firewall, it's sufficient.

There's a couple of minor buggettes at the moment relating to the use a MIME store, and aspects not surviving in the way they might be expected to, both inside and outside the MIME code.

However it's really quite fun - it only has markup for doing interesting things. Less interesting stuff is handled using the dojo toolkit. This means that you can create taglinkclouds, whereby they're phrases that can be viewed as tags, and the font size of the link is relative to the size of the content. It's a rather different way from usual for dealing with existance/non-existance of wiki links.

More interestingly, in a way, is the fact that the fact that I also used the creation of the cerenity wiki as a test of some ideas I have regarding linear, rather than parallel components. (That is components designed to be run largely one after another rather than in parallel with each other. I find the result interesting - it was quick to write and should be quick to refactor. How much would be reusable however is another matter.

Read and Post Comments

Hard drive death

June 18, 2006 at 11:01 PM | categories: python, oldblog | View Comments

Hard drive death is a terrible, terrible thing.

My hard drive on my personal machine recently died. The problem with this is I've been using this machine as my main workhorse for the past 12 months, and despite good intentions to back up, good intentions have repeatedly failed to materialise. This means, realistically speaking, if I do nothing, I've lost 12 months of my electronic life....

That's photographs, that's reasoned discussions, that's hope and joy, and sadness & regret. That's useful things, fun things, pure imagination gone wild and serious, important things. All, quite possibly, gone forever. I'm currently looking at data recovery firms, but they don't look cheap. Quite frankly I think it's looking like it would have been cheaper to buy a few drives, and regularly back up on a rotating basis.

But as I say - would've, could've, should've - didn't. So now my hopes are with data recovery firms. How much hope I have, I don't know. However, given the drive goes "click-click-click-click pause" 6-8 times, then goes "click", and is then silent, I suspect the drive is trying to start up and can't for some reason. I'm hoping this is recoverable.

Wish me luck... :-/

And yes, I am now backing up things...(!)

Read and Post Comments

Create Cool Code

June 11, 2006 at 02:10 PM | categories: python, oldblog | View Comments

I hate being asked the question "What do you do for a living?" - it's a question I like to answer literally, to get to the heart of the anwer. It's not the question per se, it's the follow ups I dread. I've now realised this is as much about my answer though as it is their reaction to it.

The conversation often goes like this.

    Questioner: "What do you do for a living?"
    Me: "I write code".
    Questioner: "Ah, right", questioner looks saddened, "And what do you do for fun?"
    Me: "I write code".

    At which point they get puzzled, saddened and often walk away.

This frustrates me because you wouldn't get the following conversation:

    Questioner: "What do you do for a living?"
    Artist: "I'm a painter"
    Questioner: "Ah, right", questioner looks saddened, "And what do you do for fun?"
    Artist: "I'm a painter"

    At which point questioner gets puzzled, saddened and often walk away.

This irritates the life out of me because a painter (assuming they're not a painter & decorator - which might be a misconception for an artist) simply wouldn't get the second half of the converation. To me, writing code is as much an act of creation as the artists work.

By answering literally though, I miss conveying the buzz, sheer fun and delight in the work I do. I fail to convey the creative aspect of my work, and the pride which I like to take in it. How do I answer? I say I write code. What should I say? After chatting about this recently, I realised I should be saying this: I create cool code. This is as much a choice as it is anything else. It makes it clear it's creative, it's fun, along with the delight and care.

I've often sidestepped this in the past, by listening to the specific question. "Where do you work, what's your role, what does that entail". Answers to these generally revolves around replying about my employer, the fact I'm employed as a research engineer, and it involves looking how we put the archive online for all the UK, with limited resources.

These are all fine answers leading to interesting areas, and the specific project we're working towards does fascinate people. However these answers also sadden me, since they doesn't state what I do. Based on paraphrasing my new boss (great twist on what I was saying :) - I added one word :) - I've came up the better answer: I create cool code.

After thought: Ironically, this is more about answer the question they were asking, rather than being quite so precise in my answer! Every time I answered "I write code", I wasn't actually telling them anything, after all people generally don't understand what that means in practice!

Oh, and a little sideline I've got going is encouraging others who work with me to do the same. Some of the summer of code work I'm mentoring is really cool code :-)

Read and Post Comments

Foo Camp!

June 09, 2006 at 02:48 AM | categories: python, oldblog | View Comments

Well, rather surprisingly, but nicely so, I've been invited to Tim O'Reilly's FOO Camp this year. I've accepted the invite, so hopefully I'll get to go and see a whole bunch of really interesting people, chat about lots of things - hopefully excite them with what we've been doing and get excited about their stuff.

In recent years people some people who have been invited one year and not the next have gotten in a huff, for no apparent reason, so I'm going to assume this is the one time I'll be asked, try to participate to the limits of my abilities and if I'm not asked back again, so be it :) If I am, it'll be a nice surprise.

Kamaelia itself is obviously coming on leaps and bounds these days, and it's nice to be able to simply knock together systems now, with a clear expectation that they can and will scale. I don't know if the latest system I've knocked together using it will be used by the person in the BBC its been created for, but it does give them some extra options, and the time spent writing it was minimal :-)

Hopefully by the time Foo Camp comes around, we'll have more fun stuff to talk about - the SoC work where people are now churning out code & systems using Kamaelia is great fun to see - things are really coming together !

Read and Post Comments

Summer of code

May 02, 2006 at 01:15 AM | categories: python, oldblog | View Comments

So far this seems to be going pretty well. There does seem to be interest in our projects, but not unmanageable at this stage. I've been able to do other things as well, and realistically speaking it's this week that is likely to be the issue. One person seems to be particularly interested in doing one of the projects we view as pretty key, and there's even interest in some ideas that I thought would get a luke warm reaction.

It'll be interesting to see what happens over the next few days - if interested grows. Now if we can just find someone willing to work on the pygame/CSS styled surface manager, that'd be great.

Read and Post Comments

Some links I need to follow up on.

April 24, 2006 at 12:22 AM | categories: python, oldblog | View Comments

Been a very interesting evening in many respects. Some links I need to follow up on as a result follow:

Some summer of code project lists that we can work forward from:

Shuttleworth foundation had a meeting which amongst other places had a thread of discussion resulting on edu-sig. The whole discussion there has a number of interesting implications, especially when you consider Kamaelia is a number of steps already along that path.

Beyond that though there are a number of topics being discussed on edu-sig which imply I should really subscribe, esp given that Kamaelia could align with them very well (ie be useful for those things), and I know of at least one person inside the beeb who might support it. (maybe :-)

Summer of code deadline is 1 week earlier than anticipated (lack of line break in a specific place caught me out).

lac noted on #pypy that Strakt would find Matt's whiteboard sketcher useful, and asked why we weren't making announcements on c.l.p.a. My excuse of "too busy" seems a bit lame in retrospect. The level of "wow, that'd be useful", really implies that we really should push that up the "let's release that as a standalone" bundle. It's also likely to be hit by a similar reaction by people at work, meaning it should really happen.

I mentioned that we'd really like to see rpython extended to handle generators, lac mentioned this is something that can happen at the sprint in Iceland which is May 21-28th, so I probably won't be able to go, but Matt could potentially. lac also suggested speaking to Steve Holden about it to help set the focus for the sprint - which has been described so far thus .

Read and Post Comments

« Previous Page -- Next Page »