Tuesday, September 19, 2006

new media exemplar library

New Media Exemplar Library

Each exemplar features a series of video interviews with a professional media maker, organized by chapter.

I just watched the Cory Doctorow exemplar, parts 1 (Copyfighter) and 7 (Sci-Fi as Political Activism), and they were great! I think this is a resource that I would use and recommend to other teachers.

Other exemplars about a comic book artist, a special effects artist, radio host and reporter, Graffiti Artist Collective. If they are as well done as the Cory Doctorow exemplar, then they would engage many students.

Thanks to Borderland for the link. Henry Jenkins is behind it.

Sunday, September 17, 2006

eat your own dogfood

I remember it as a quote from the open source movement, but maybe that's just where I heard it first

Very funny story by Joel, here, about Sudanese immigrants to America discovering dogfood on the supermarket shelves

As teachers, do we eat our own dogfood? Would we like to sit in a lesson that we teach and do the work that we set our students?

I can see the need for basic skills but maybe there has to be a high ceiling as well, as in "low entry, high ceiling", an old slogan for promoting the logo programming language. So that if we, the teacher, were sitting in the class, there would be something interesting for us as well

I remembered yesterday that this is one reason why I started the africaGame wiki. I wanted my year 11 students to do these things:
  • improve their game maker programming skills
  • design, make and critique their own game
  • work productively in a group
  • use a wiki to document their progress and collaborate with others
So, I thought it would be a good idea if I did the same, put myself through the same process that I was putting my students through.

It's been a good learning process for me.

I have improved my game maker programming skills by making, documenting and collaborating on new games (map game, name game). That has been hard work and sometimes slow and frustrating. But I now feel more confident about tackling harder programming problems.

I have been collaborating, mainly with mitch (the main author of the name game) and also obtaining some help on the Edna game making forum (wara) and tony is always helpful when I ask him a question. So that counts as group work but the actual collaboration has been patchy, not continuous. That's a good learning experience for me, it is probably the nature of most collaboration. But in School, I was expecting it to be steady, continuous. So, I need to redesign the learning so that the collaboration is allowed to be discontinuous. It is so hard for school to measure group work. Everyone knows that it is important but there is a measurement problem.

I haven't creatively designed my own game. The africa map game is a clone of a game I found on the internet. I couldn't do better than that so I am shamelessly copying it. That's another good lesson. One of my best students asked me, "How come you expect us to design our own games, when you aren't doing that?" Good question.

I haven't been able to keep to any sort of reasonable timeline. The game development always takes much longer than I think it will. I still haven't finished the map game, even though the class I started it with has long disappeared with the semester change over. Strict timelines in school must be a terrible burden on student creative endeavour. I think that students must get used to churning out "busy work" because that's what school demands of them.

Using the wiki. I've been good at that I think. Not only are the games developing through the wiki but I have been developing other pages as well, the links to existing games found on the web and links (about africa) have been regularly updated. A friend, Paul, has regularly sent me links which have been useful. There are other useful pages on the wiki as well, even though they haven't been updated so regularly (game ideas, programming languages, mail received)

If teachers regularly ate their own dogfood we would have a better education system.

Saturday, September 16, 2006

the meaning of revolution

arti's wiki has a section on innovation and a link to a post by Christopher D Sessums, Transforming learning: Evolution or Revolution. I've posted the following to the wiki as part of the discussion: (this is a big topic and my post is just dipping a toe in the water)

I'd like to explore (seek the views of others here) on the meanings of the words revolution and evolution. I visited the Christopher D Sessums link and think it's necessary to read more than the section quoted by Pam above (refer to arti's wiki here) to pick up on his interpretation. These words (revolution, evolution) are deeply contested, you can see this when advertising companies start to promote things that were previously feared as too subversive to mention (eg. Che Geuvara lip gloss ads, revolution as trendy buzzword).

My take on this is that revolution arises when there is social ferment, that many people feel that change has to happen and that it is being blocked by those in power and that efforts towards evolutionary change have been made but have not succeeded. Revolution is not seen as necessary by the majority until such conditions arise. Revolution is about a radical rupture in ideas (new ideas conflict with traditional, entrenched ideas) and that that is then transformed into some sort of political event, which alters social relations in a signficant way. eg. the overthrow of apartheid in South Africa is an (uncontroversial?) example. It's difficult for me to imagine a revolutionary process arising out of rapid technological change, without it spilling over into the political arena in a big way.

Some further extracts from the Christopher D Sessum post. The first two better capture my understanding of the meanings of the words.

Evolution -
"As a metaphor, evolution suggests an organic, natural process, and as such an institution can be seen as a living organism with specific traits that grow, change, and adapt allowing it to survive over several generations. This metaphor also hints at the notion of change over an undefined amount of time. Biologically, one associates evolution as taking place over thousands and millions of years, thus setting up the desire for bringing about change at a more rapid pace (i.e., to keep up with the changes in society). Information technologies have evolved at such a blinding pace over the past few decades which in turn have left many universities and schools scrambling and reacting slowly at best."

Revolution -
"Revolution, on the other hand, frames the notion of change as relatively sudden and drastic process – as a rebellion. In some cases, revolutions are led by a majority of a particular populace, in other cases, by a small band of radicals. Revolution hints at a violent overthrowing of one body over another, as perhaps one set of unsanctioned ideas offered against the prevailing norms. Revolution can also be considered a process of social change that involves breaking away and replacing a particular status-quo, thus transforming a society."

Other metaphors -
"Is framing the debate of transformation as an evolutionary or revolutionary process the correct way to look at the current situation? Might there be a better set of metaphors? How might the notion of emergence fit this proposition? What might Paulo Freire think?"

wrt this last quote, Virginia Postrel ('The Future and its Enemies') says that words such as "left" and "right" have lost their meaning and posits a statist / dynamist dichotomy.

Thursday, September 14, 2006

space invaders tutorial

I've finally just about finished my Space Invaders tutorial. I started it in Semester 2 last year, with a Year 10 class and recently have been developing it further with a group of year 8's. Here's a screenshot from version 2, the clowns become more menacing as they advance:

siv2

For more details about how to make the game, screenshots and downloads of three game versions, see my website. It is released under the Creative Commons license, which means you are free to use and modify but please acknowledge the source. Feedback is appreciated.

Here are some advanced features incorporated into version 3:
  • Create a controlled relentless advance of enemies (serried ranks or phalanx)
  • Use a variable to control the speed of the enemies so that the enemy can increase speed progressively as the game progresses
  • Lives for the character (shooter), which are displayed on screen
  • Power up object provides increased powers, destroy more enemies with one shot

I wrote about some of the design issues and problems in another recent blog, representation of design decisions
Tags:

Wednesday, September 13, 2006

everyone wants attention

From Christopher Allen's blog (link), I just found out that I do, in fact, play MMORPGs, well nearly.

Standardised MMI (Money, Markets, Industry) is transforming into something else.

What? An attention economy. What is that?

Michael H. Goldhaber will be speaking on:

The Real Nature of the Emerging Attention Economy: Seen As a New Level in the Massively Multiplayer Game Known as Western Culture:
Think of the human world as a Massively Multiple Interactive Game (which it is). As interactions change and increase, we are passing to a new level, something that hasn’t really happened to the same depth for centuries. The rules, fundamental values, and just about everything else are diverging from what was familiar in the level characterized by the exchange of Money, the prevalence of Markets and the dominance of Industrial production of standardized goods (call this MMI). The new level also depends on human abilities and desires, but now what matters most is our strictly limited abilities to pay attention and our much greater (on average) desires to receive it. The full passage will take many decades, but we are already well along.

More links:
Michael H. Goldhaber's blog on the attention economy, serialisation of a book he is writing

Michael H. Goldhaber's website. Extract from website:
The move to cyberspace parallels the move from old feudal Europe to the New World of the Americas five centuries ago. That traverse both set the stage for and was an early indicator of the rise of the new market-based/ money-based/ industrial/ mass-production economy. Yet leaders of old feudalism didn't see that. They thought the new space, the new world, was for them; so they set up dukes and earls and viscounts to govern it for them, until they all fell.

Likewise the grand panjandrums of the money economy think the new space today, this space, cyberspace is for them, that it will just be part and parcel of that now-old system. But the parallel is that cyberspace is really arising for different reasons; to give birth to a completely new economy -- an economy that is like feudalism in one way: it has little to do with money. (Though it is unlike feudalism as can be in most other respects.)

my game making manifesto

This half baked manifesto came to me in a flash tonight. It provides a framework, for further fleshing out, of what I plan to try to get across at Cairns, ACEC.
  1. Game making is motivating and an excellent introduction to programming
  2. Game making programs now exist which make it easier than it was before
  3. Programming is a HOT (higher order thinking) activity
  4. Programming is hard and perhaps not everyone can do it or would want to do it
  5. Everyone ought to receive an invitation to be taught programming, which they can experience (toe in water), accept or reject
  6. We need good teachers of programming, teachers who understand both programming, learning theory and learners
  7. Teachers of programming need to develop (design, program, refactor, test, publish) their own programs / games
  8. It is even better if the programming is linked to significant social justice issues, eg. africaGame
  9. Blogs and wikis ought to be incorporated into the development process to enhance communication and collaboration
  10. Blogs and wikis aren't enough on their own. We need to study and / or develop design and communication tools that represent this whole process and enable it to be better discussed and communicated, eg. UML diagrams, design patterns
  11. Learning theory continues to evolve dynamically, that needs to be integrated into this whole process
Quick elaboration of some points:

4. Programming is hard. I've come across a few articles about this lately, in particular one which claims to have a test that can determine who can and who cannot program.

6. is a major challenge to the education system as it currently exists, one which it is unlikely to meet. Although it is realistic to summise that not much will change in this direction in the mainstream, it could still be taken up outside the system, as part of enrichment programs for the Gifted and Talented, for instance.

10 and 11. This has been a major focus of my blog in the past few months. I still plan to setup a wiki to further clarify these issues, even though I have been slow to do this

Other:
I have not including game playing in the above. Although I'm persuaded by people like Tony Forster and James Gee that Game playing leads to important and different learning it is still (a) not really my thing, (b) even harder than game making to introduce into Schools

Monday, September 11, 2006

the irony of september 11th

images
Tonight I've read some articles by Christopher Hitchens (Sydney Morning Herald) and Pamela Bone (The Australian) marking the fifth anniversary of September 11.

Hitchens (Never Again) understands the issues. America is a declining power. Bush is a bad leader. But the pre-emptive battle against religious fundamentalist jihadists must continue:
In its grand form, this takes the shape of a doctrine called "pre-emption". The firmest way I ever heard this doctrine expressed was by a senior official of the Administration, who had grown tired of the argument about whether Saddam Hussein had been nurturing Islamists. "The invasion of Afghanistan was for the last attack," he brusquely said. "The invasion of Iraq was for the next one."

If you want to understand why so many normally risk-averse people in Washington, elected and unelected, swallowed their doubts about intervention, you have to appreciate the force of that remark. Like America itself, it is extremely conservative and extremely revolutionary.
I found an old article by Hitchens, Against Rationalization, from September 20, 2001, where he rebuts Chomsky and spells out the reality of the new world we live in:
... the bombers of Manhattan represent fascism with an Islamic face, and there's no point in any euphemism about it. What they abominate about "the West," to put it in a phrase, is not what Western liberals don't like and can't defend about their own system, but what they do like about it and must defend: its emancipated women, its scientific inquiry, its separation of religion from the state. Loose talk about chickens coming home to roost is the moral equivalent of the hateful garbage emitted by Falwell and Robertson, and exhibits about the same intellectual content. Indiscriminate murder is not a judgment, even obliquely, on the victims or their way of life, or ours.
I also found another great statement by Hitchens where he explains why he left The Nation, because of its readers responses to his stance:
It may now seem trite to say that September 11 and other confrontations "changed everything." For me, it didn't so much change everything as reinforce something. I am against aggressive totalitarian states and I am resolutely opposed to religious fanaticism. I am also sickened by any attempt to call these hideous things by other names
Pamela Bone (former Age editor who is now ill with cancer but still writing) understands the issues too.(The Folly of Blaming Ourselves) She has long been writing against cultural relativism, the idea that we should somehow turn a blind eye to human rights abuses which are part of some "other" culture.
This is what moral relativism fails to see: in democratic, rule-of-law countries, human-rights abuses will be exposed, investigated and punished, and bad governments will be thrown out. The US is not a perfect society by any means, and neither is Australia, but they are both infinitely better than anything the Islamists would impose.
I revisited the on line statement I made about the London bombing. Here it is:
I belong to the generation of Vietnam War activists who learnt to despise the many crimes of US Imperialism.

Following 9/11 my long sleep is over. New York, Bali , Madrid ... London was not a surprise for those paying attention.

I think it's worthwhile conducting a horrible thought experiment. A meeting of advanced technology (nuclear weapons, internet communication) with religious fundamentalism (nihilistic jihad). Bin Laden and others desire this and are planning it. The most backward ideology wants to use modern technology to defeat modernity itself and take us back to the dark ages.

There is a tremendous irony in the US now being compelled to actively support democracy in the Middle East, to clean up the mess created by itself, and in Bush II being the first US President to support the formation of a Palestinian State.

Accidental heroes are still heroes, warts and all. Without forgetting the warts, we need to focus on the big picture: the global battle between Democracy and Jihad. Reflexive anti-Americanism in today's world is very dangerous. It's both distressing and disgusting that some people who call themselves Left support the jihad and Saddam fascism as anti-imperialist. This is not Left, it is pseudo-Left. Blind faith in an old idea is always useless.

The Left has always been able to recognise and has always opposed fascism, religious fundamentalism and terror as a method.
For a recent statement which clearly explains the real motives of the Bushies, go to LastSuperpower (Spelling out the "Draining the Swamps Theory"). Here is an extract:
There are clear, self-interested and essentially historical reasons for why the most farsighted members of the US ruling elite are now pushing for a democratic Middle East. Bush and the neo-cons realized (way ahead of a large section of the US ruling elite) that they had no option but to jettison their old policy of maintaining stability in the ME by propping up the worst dictatorships (and even gong so far as to allow CIA funding of several jihadist groups). However their interests as a relatively declining power (the last superpower) are now firmly connected to globalization and the standards of modernity required of this era. It has thus become historically necessary for them to "drain the swamps" by kick-starting a process of real and progressive change in the ME.
I'm still wondering why so many people who see themselves as progressive don't seem to get it. Why is the irony of the reversal of US policy following 9/11 so hard to understand?

Sunday, September 10, 2006

representation of design decisions

How does one best manage complexity when designing and programming a computer game?

I've been developing a Space Invaders tutorial. Version 1 (beginner) and 2 (intermediate) were straightforward to make but I also want to include an advanced version in my tutorial, for those keen students who want to learn advanced features of game maker.

I'm finding this has become a complicated exercise in design, programming, refactoring of code, representation and communication.

I wanted the enemies (clown sprites) to advance wave upon wave in relentless, mechanical fashion, increasing their speed with each new advance. Start off quite slow, so the player thinks he will win but as the speed increases it becomes inevitable that the Shooter will die.

The word here is phalanx, meaning a body of infantry drawn up in close order. Or maybe it is serried, as in shoulder to shoulder, without gaps

4enemies

Initially, I put together some code and eventually got it working.

I couldn't put all the code on the clowns because if you shot all the clowns then the game would crash. So, I made a controller which was responsible for making and remaking the serried ranks. But some code had to stay on the clowns, for example, the bit where when you advanced far enough down the room, then the shooter would lose a life. That can't go on the controller because the controller doesn't move.

if y > 448 {lives = lives -1};

Another advanced feature of the game was a powerup object. These were created out of thin air and moved in the general direction of the shooter. When the shooter ate them he received more power, which in turn enabled him to kill multiple clowns with a single shot.

When I tried to write this advanced version down on paper it was messy.

I decided to refactor the code, to tidy it up, to make it easier to follow.
Programs must be written for people to read, and only incidentally for machines to execute
- Abelson and Sussman
There is another problem. As well as being messy the code is more advanced than versions 1 and 2. But I'm just giving it up to students in chunks for them to copy. Probably not a good way for students to learn.

First, I have to get the design options clear in my own head and then work out how to communicate those options to students in a way which hopefully will help them learn.

Simply, writing down the main game objects (and renaming them more systematically) on paper and the main actions of those objects does help.

objClownControl
Action: Create new rows of enemies.

This immediately helps. Under what conditions do I want new rows of enemies created? Fixed time intervals? Randomised time intervals? When all other enemies are destroyed? That is a design decision. I think I want fixed time intervals in keeping with the phalanx / serried ranks approach. So the code needs to go on an Alarm Event.

On each cycle I want the clown speed to increase. So, I need a speed variable. Do I want the speed to increase forever, no ceiling on the speed. Yes. The shooter must die, after being lulled into a false sense of security.

objClown
Action: When the clown reaches the bottom of the room, then the shooter loses a life
Action: When a bullet hits the clown then the clowns explode, the radius of destruction is determined by the current power of the shooter

It looks simple when written down systematically like this but it has taken me some time to get to this point,where I can articulate the issues clearly.

I believe there is a lot of teaching involved in all of this ... programming skills, discussion of design decisions, the representation of the design, refactoring of code. It requires more than a motivating, constructionist environment.

I think that a good way to represent this diagramatically would help a lot in the communication and discussion of the issues with students. We need pictures to help us think about design and programming because the code itself is too detailed, its granularity is too fine. I think I need to dig back into my UML book and perhaps revisit my Event Progress Diagrams of the past to work out a good way to represent this.

Reading:
What I've learned from failure - Reg Braithwaite
A wonderful essay about commercial programming reality.("I'm not going to tell you about some theoretical anti-pattern, or relate some broken thing I've fixed, I'm going to share things that caused me to leap from the deck of a burning boat to avoid drowning.")

Saturday, September 09, 2006

creativity

I discovered today that arti has a wiki about Knowledge Building and Innovation.

I have just posted some extracts there, mainly citing from some authors I like about what is creativity (on the Innovation page)

Douglas Hofstadter's idea is "Variations on a Theme as the Crux of Creativity" (a 1982 essay in Metamagical Themas) . This implies a few things. You probably have to know something deeply before you can come up with a good variation. It has been said that it takes 10 years to learn a field deeply, eg. Mozart, started at 5 yo and was a master by 15 yo. One educational implication is that it is important to spend time on basic skills as part of approaching the creative edge. I think the fluency part of the mantra is important. It also implies that slippage is a part of concepts within themselves, you don't necessarily need to juxtapose two ideas together (Koestler's bisociative requirement) because things naturally divide anyway, just like the so-called elementary particles of physics are always dividing into something new.

Extract from Hofstadter:
The notion ("Variations on a theme") encompasses knobs, parameter, slippability, counterfactual conditionals, subjunctives, "almost" situations, implicospheres (things that never were but we can't help seeing anyway), conceptual skeletons, mental reifications, memory retrieval - and more
Howard Gardner (Multiple Intelligences author) said in one of his books that it was important to encourage young people to learn one thing really well

Marvin Minsky (Society of Mind 7.10):
... in order to accumulate outstanding qualities, one needs unusually effective ways to learn. It's not enough to learn a lot; one also has to manage what one learns. Those masters have, beneath the surface of their mastery, some special knacks of "higher order" expertise, which help them organise and apply the things they learn. It is those hidden tricks on mental management that produce the systems that create those works of genius. Why do certain people learn so many more and better skills? These all important differences could begin with early accidents. One child works out clever ways to arrange some blocks in rows and stacks; a second child plays at rearranging how it thinks. Everyone can praise the first child's castles and towers, but no one can see what the second child has done, and one may even get the false impression of a lack of industry. But if the second child persists in seeking better ways to learn, this can lead to silent growth in which some better ways to learn may lead to better ways to learn to learn. Then, later, we'll observe an awesome, qualitative change, with no apparent cause - and give to it some empty name like talent, aptitude, or gift
The thoughts of Hofstadter, Gardner and Minsky have considerable implications for those of us wanting to achieve creativity in ourselves and others (our students). You have to know a domain well before you can be creative within it. This can only come about through passion, motivation, love for that domain, which will sustain the hard work required. You need to have the freedom to explore it and not be tied down to a mechanical productivity appraisal, so that the silent growth that Minsky refers to has a chance to happen.

My earlier blog posts, Dennetts creatures and behaviourism and the inner environment also offer a non question begging account of the evolution of human intelligence:
Gregorian creatures are named after Richard Gregory, an information theorist. Gregorian creatures import mind-tools (words) from the outer cultural environment to create an inner environment which improve both the generators and testers.

Gregorian creatures ask themselves, "How can I learn to think better about what to think about next?" ...

Finally, we have Scientific creatures which is an organised process of making and learning from mistakes in public, of getting others to assist in the recognition and correction of mistakes.

Tags:

Wednesday, September 06, 2006

Would you write for NewAssignment?

Jay Rosen (his blog is amazingly good) has come up with a new idea for citizen journalism

It's called NewAssignment It now has its own blog in place.

High quality journalism, funded, with professionals and amateurs working together.

Others have tried and failed. Read Dan Gillmor's analysis of how things went wrong for him

You need to read Jay Rosen's blog to pick up on the depth of his thinking about this issue. For example, I like point 9 from his current post:
By “right” for a NewAssignment.Net test I mean something that:
  • is under-covered, poorly covered or not covered at all by the major news media;
  • lends itself to “distributed reporting,” where a bunch of people—dispersed but connected by the Net—could contribute knowledge in a manner that would be hard for a reporter or even two or three to duplicate;
  • is a story of national, international or regional importance— newsworthy, in other words;
  • is doable in about six weeks time;
It’s the second bullet, the lends itself to “distributed reporting” part that seems to be the trickiest. Many readers of my blog and a good number who wrote to me after the first wave of publicity for New Assignment suggested stories that were under-covered and possibly newsworthy, but had no distributed reporting dimension to them at all
Doable, distributed, under-covered ...

Possibly there are some great educational stories waiting to be written along those lines:
  • How censorware around the world is driving students and teachers nuts
  • The place of game making and game playing in education
  • Virtual P2P School
I think these are doable, distributed, under-covered ... can the people, formerly known as the audience, do this thing?

Sunday, September 03, 2006

African Name Game

Mitch has finished a draft of the African name game. It is available from the africaGame wiki (scramble6.gm6). To play it you will need to download game maker from Mark Overmars site.

We are interested in receiving feedback about this game. You could post a comment in response to this blog, or leave a comment at the africaGame wiki.

probing search engine understandings

Paul Chandler suggests at his wiki that we can improve our teaching about search engines by asking students probing questions:
To what extent do you believe that the following are true statements about internet search engines (orientating questions):
  • They search for data on every page of the Internet
  • They locate key words by searching the world
  • They are just like a library
  • They search a certain part of the Internet for you
  • A search engines searches the pages which are connected to it
Write a few sentences to describe why a search engine might be like (the probe):
  • a library
  • a library catalogue
  • a librarian
  • a game of Chinese whispers
  • the index page to a book
  • someone who is a speed reader
I have added an entry there about the importance of speed and size in the search process.

How can google search 25 billion plus web pages in less than a second? The speed of search is an important consideration. How do they achieve this? I think it's important to add the speed of the process to the probe. That would tend to sideline the Chinese whisper and speed reader options (?)

Here is an article by Matt Cutts, How does Google collect and rank results? which does include a couple of exercises for students

Here is my summary of the process:

1. Spiders crawl web and retrieve pages
2. Pages are numbered for future reference
3. An index is built
4. The index is distributed over hundreds or thousands of computers
5. When a search is made it is processed by hundreds of computers to speed things up
6. Results are ranked by relevance

One good metaphor from the Matt Cutts article is to speed up the process of searching a book index you could rip out the index and give one page to each person to search

Friday, September 01, 2006

strange beasts with flat tyres

The computer-car analogy doesn't work: the exptrapolation of the idea to computing that you need to be able to drive a car but don't really need to be a mechanic.

One way is to contrast two definitions of literacy:
  • the ability to read and write
  • the ability to read and write AND express original thoughts
and to favour the latter as applied to computers

But I think it's better to define literacy as feeling competent and fluent in the medium. And I think it's true to say that most people don't understand what the computer medium really is, that there is something deep below the surface.

I heard a Sudanese describe recently his first encounter with a motor bike, as a child. He and his friends had never seen anything like it. They ran away. They didn't know whether it was living or non living, a strange type of beast or a new, amazing invention.

I think that is what is happening when people use computers. It's mostly done by handwaving and magic. The GUI and the operating system hides a lot. Of course people adapt and get "used to" computers just as they get used to cars. But the computer is a stranger beast. The fact that it is often used inefficiently (driving with flat tyres) is only part of the problem.

Even at the surface level the car analogy does not hold up.

Lots of little things that cause paralysis for short or long times go wrong with computers all the time. Just think of how many times you have seen an expert user come unstuck whilst presenting with a computer at a conference.

More basic skills are required to drive a computer than a car. Here are some examples of essential knowledge you might need:
  • how to operate a GUI (windows, icons, menus, pointer)
  • how to save and to navigate when saving and / or loading a file
  • the difference b/w Save and Save As ...
  • how to backup
  • what to do if and when your window freezes
  • how to get out of trouble (eg. using Undo or when to close without saving)
  • what are directories, files, different file types, drives
If you are connected to the internet then the amount of knowledge you need to stay functional increases further:
  • a knowledge of security concerning viruses / trojans / spyware, firewall, automatic updates
  • email: how to compose, send, forward, edit
  • email: don't open unsolicited attachments
  • You will need to download plugins to run many programs, so you need some awareness that there are useful and harmful files out there and how to distinguish between them
I'm sure these lists could be expanded.

But beyond the lists of basic skills there is something deeper.

A computer does computation. And most people don't really understand computation and what it is capable of. I was struck by this passage from Rodney Brooks book, Flesh and Machines, where he compares the impact of the computation idea (not disruptive intellectually, continuous with existing ideas) with the impact of quantum mechanics or relativity (which marked a sharp intellectual discontinuity with previous ideas) :
... computation was not disruptive intellectually, although the consequences of the mathematics that Turing and von Neumann developed did have disruptive technological consequences. A late-nineteenth-century mathematician would be able to understand the idea of Turing computability and a von Neumann architecture with a few days instruction. They would then have the fundamentals of modern computation. Nothing would surprise them or cause them to cry out in intellectual pain as quantum mechanics or relativity would if a physicist from the same era were exposed to them. Computation was a gentle, nondisruptive idea, but one that was immensely powerful... [pp. 188-9]
This was a new insight for me, that an idea could be intellectually non disruptive but have enormous technological and social ramifications, which ultimately are disruptive. Maybe the quiet, powerful ideas have the last laugh, because they sneak up on society. It might also explain why many people don't seem to think deeply about what a computer is.
500px-Turing_machine_from_Boolos_and_Jeffrey
Some computation links for future reference / study:
Turing Machine
Turing Machine Gallery
Algorithm
Theory of Computation
Evolutionary computation

Afterthought:
There is a very interesting dialogue between Tony and Paul, about do we need more than immersion to learn the computer (computing concepts), at Paul Chandler's wiki, where Paul suggests that the underlying architecture does pop up at important times:
The somewhat more general context is this: I am deeply suspicious that simply by "immersion" one doesn't develop any concept of von Neumann architecture, and such a conceptual framework is actually quite important in developing good computing skills, and this extends to seemingly trivial matters such as what's in the file menu.

The relevance of von Neumann is, I believe, the $64000 question. I wouldn't presume it's relevance, but its a hypothesis worth testing, I think. Also, I used "von Neumann" (above) to refer to the general concept that a computer has a working memory and a 'permanent store' (von Neumann' contribution was basically to build a computer with a processor and a 'working memory' operating hand-in-hand); I'm guessing, but subdividing down below this general concept is possibly pointless. Lots of stuff goes on behind the scenes.

My point for raising the von Neumann idea in the first place is to postulate that it is not _all_ happening behind the scenes. Loads of it is, but every so often some "thing" comes along and suddenly you are expected to know what's going on. More than the "von Neumann" idea, there is the idea that a document we are working with sits in context with a software environment; when we are working our consciousness has to 'sit' main on the 'internal' world of the document we are working on, and a little on the 'external' work. How many people don't get the idea that a program can have a default printer, which is different to the system's default printer? How many start doing file management in the 'open' dialogue box in (say) Word and look at you slightly odd when it's suggest that you are not 'in' Windows Explorer. There's "something", I reckon ... call it awareness of von Neumann, call it inside/outside ... but a "something" of this ilk which the better, more flexible users "have got" that the strugglers haven't.

Sunday, August 27, 2006

sex on a glacier

artichoke has the ability to pen hilarious metaphor.

Ever heard an education minister talk in grandiose terms about:
"the potential of e-learning to transform ..."
"exploiting technologies effectively ..."
"connecting schools and communities ..."
"supporting evidence based decision making ..."
"developing a prosperous and confident knowledge society ..."
"development of new skills and knowledge ..."
"a culture of continuous enquiry, innovation and improvement, risk taking and entrepreneurship
"radical vision ..."
"leadership ..."
I love artichokes ability to take the mickey out of these wank words, as follows:

I agree with Steve, this a radical vision, so radical a revelation that it borders on hallucination - it reminds me of Grandpa’s claims of escaping the secure facility for moments of reckless adventure with one of the dementia center nursing staff on the Franz Joseph glacier. [I am always thankful that grandpa’s loosely attached dentures mean that the detail of his dementia glacial narrative escapes the ear jacking surveillance of center staff].

The “Enabling the 21st Century Learner” quote reminds me of grandpa’s incredulous tales because both claims make me feel the same paradoxical sense of malignant innocence and promiscuous sensuality. I know intellectually that both qualify as madness and shameless self/ it industry promotion, but I cannot help being enticed into thinking that both sex on a glacier and e learning developing a culture of continuous enquiry, innovation and improvement, risk taking, and entrepreneurship would be uncomfortable but remarkable experiences.

For the rest of my life, whenever I hear noble,high flying rhetoric from someone who has long left the classroom it will make me think of: sex on a glacier.

Not impossible, but ...
sexrouge073155

Saturday, August 19, 2006

the culture of fear, apathy and play safe

How are we going to beat the culture of fear created by the media and pandered to by gutless politicians / ED officials, which plays on the fears of parents who just want their kids to be safe?

Extract from a great article by dana boyd, growing up in a culture of fear: from Columbine to banning of MySpace:
"We need to break this culture of fear in order to have a healthy society. Please, please... whenever you interact with youth culture (whether you're a parent, a schoolteacher or a cafe owner), learn from them. Hear them from their perspectives and stop trying to project your own fears onto them. Allow them to flourish by giving them the freedom to make sense of their identity and culture. It doesn't mean that there aren't risks - there are. But they are not as grandiose as the press makes them out to be. And besides, youth need to do stupid things in order to learn from their own mistakes. Never get caught up in the "i told you so" commentary that comes after that "when i was your age" bullshit. People don't learn this way - they learn by putting their hand in the fire and realizing it really is hot and then stepping back.

Post-Columbine, we decided to regulate the symptoms of alienation rather than solve the problem. Today, we are trying to regulate youth efforts to have agency and public space. Both are products of a culture of fear and completely miss the point. We need to figure out how to support youth culture, exploration and efforts to make sense of the social world. The more we try to bottle it into a cookie-cutter model, the more we will destroy that generation."
Recently I posted a message, Every parent wants to protect their children, to the IT teachers lists in SA, Vic, NSW, oz-teachers and TALO, which is public.

There were a couple of negative responses on the SA list, where it was suggested that I was promoting a conspiracy theory (which I am not), and one positive response on the NSW list. I was underwhelmed and don't see much point in continuing to post messages raising these broader issues when the response is either muted or negative. Maybe I am being gutless here myself, I'm not sure. Maybe, the era of lists is over and the thinkers have moved over to blogs and wikis.

I haven't found anything else linking the DOPA (Delete Online Predators Act) specifics to the general trend by reactionaries to attempt to destroy internet / www functionality - by preparing the children to accept censorship we train them to accept censorship and internalise their own lack of freedom as adults. Do we have a current generation of self censored adult teachers? Is that the problem? Am I being too harsh in suggesting that or is it more that teachers are too busy and / or just don't know what to do? I feel that we are approaching a situation where something has to give. I'm thinking that we need a political solution to develop, something like the new pirate party in Sweden, perhaps, but with a broader agenda that extends to censorship in Schools and the denial of the rights of the child to explore new technologies.

Earlier I posted about the threat to net neutrality to the same lists. There were no responses at all to that. It's hard to believe. The people that invented the internet (Cerf) and the web (Berners-Lee) are ringing alarm bells and teachers don't want to know about it. No discussion whatsoever.

Is there a culture of apathy and play safe that parallels the culture of fear that Dana speaks so eloquently about? I'm starting to think that way.

The DOPA issue on it's own has received wide coverage, however, in the edu-blogs (eg. leigh , graham , wil , doug )

Teachers already using blogs are naturally concerned when they are blocked or threatened. But it seems that teachers who are not yet using blogs are not concerned at the erosion of freedom in cyberspace.

Nice quote from artichoke at leigh's blog:
"Of all tyrannies, a tyranny exercised for the good of its victims may be the most oppressive. It may be better to live under robber barons than under omnipotent moral busybodies. The robber baron's cruelty may sometimes sleep, his cupidity may at some point be satiated; but those who torment us for our own good will torment us without end, for they do so with the approval of their own conscience." C S Lewis
Good quote from Wil's site:
"... DOPA does nothing to strengthen penalties orincrease prosecution of criminals who prey on children. Instead, it punishes the potential victims and educational institutions chartered to serve them, by denying access to interactive sites at school and libraries"
Of course, we already have DOPA implemented in South Australia and it stinks.

understanding the internet

nwww2j
Graphic from http://netforbeginners.about.com/


The internet is a network of networks

The internet has a packet switched architecture. Data is broken up into small packets, which are addressed and sent through the network. The same connection can be used by many users. This contrasts with circuit switching, such as the regular voice telephone network, in which the communication circuit (path) for the call is set up and dedicated to the participants in that call (and is unavailable to other users). Reference

The internet has protocols (TCP/IP) - rules encoded in software that enable communication between different types of computers (PCs, Macs) and to manage the delivery of the packets to their destination .

TCP/IP was invented by Vint Cerf and Bob Kahn:
  • IP which provided only for addressing and forwarding of individual packets
  • TCP, which was concerned with service features such as flow control and recovery from lost packets
The internet provides many services such as email, ftp, www, P2P, chat, IM, Telnet, Gopher (see diagram). Anyone with enough skill can create these services which then benefit all internet users. No one has to ask permission from anyone to create a new internet service. This is one underlying reason for the popularity of the internet.

In his blog on the 2nd May 2006, Tim Berners-Lee said:
When, seventeen years ago, I designed the Web, I did not have to ask anyone's permission. ( I did have to ask for port 80 for HTTP). The new application rolled out over the existing Internet without modifying it. I tried then, and many people still work very hard still, to make the Web technology, in turn, a universal, neutral, platform. It must not discriminate against particular hardware, software, underlying network, language, culture, disability, or against particular types of data.
Metaphors:
The CERN website compares the internet with the global road system:
On the Internet, as in the road system, three elements are essential: the physical connections (roads and cables), the common behaviour (circulation rules and Internet protocol) and the services (mail delivery and the WWW).
I think I will use the roads metaphor in explaining the internet to my students.

I summarised one of David Weinberger's metaphors for the www as follows:
Imagine a place with billions of rooms with magic doors that are psychically linked to other rooms by the interests of the people travelling from room to room. Your nearness to other rooms is created by your level of interest. Is that magic or is that the Web?
Internet literacy:
The netforbeginners site has a series of tutorials on basic internet literacy. I'm interested in pursuing this further from the point of view of the aims of Paul Chandler's wiki about conceptual understandings of computing and also also for instructing new arrivals in internet basics.

Historical / Footnotes:
The internet was invented by the US military arising from their fear of a Soviet nuclear first strike.
Paul Baran, of the RAND Corporation (a government agency), was commissioned by the U.S. Air Force to do a study on how it could maintain its command and control over its missiles and bombers, after a nuclear attack. This was to be a military research network that could survive a nuclear strike, decentralized so that if any locations (cities) in the U.S. were attacked, the military could still have control of nuclear arms for a counter-attack.

Baran's finished document described several ways to accomplish this. His final proposal was a packet switched network.

"Packet switching is the breaking down of data into datagrams or packets that are labeled to indicate the origin and the destination of the information and the forwarding of these packets from one computer to another computer until the information arrives at its final destination computer. This was crucial to the realization of a computer network. If packets are lost at any given point, the message can be resent by the originator."
Reference:
Warriors of the Net (the Movie). Entertaining movie which helps newcombers visualise how the Net works
A Brief History of the Internet by some of the people who made it (Kahn, Cerf, etc.)
History of the Internet The information about US fear of a Soviet nuclear strike driving the invention of the internet was taken from here
stupid, not owned and a huge success where I explain that: "Two factors account for the huge success of the internet: nobody owns it and it’s a stupid, simple network, all it does is move bits."
CERN: The Web and the Internet (where I got the roads metaphor from)
space and time on the web summary of Small Pieces Loosley Joined, a book about our experience of the web by David Weinberger
Are the internet and the www the same thing?
1. internet consists of subnetworks (see pic at start)
2. the www is one of the subnetworks
3. Each of the subnetworks requires a different protocol: HTTP, SMPT (email), FTP, IRC etc.
4. Each subnetwork requires special software (eg. www requires browser software)
Tags:

Friday, August 18, 2006

You should learn to program

Why you should learn to program is Chapter 1 of an online book by Chris Crawford (a game developer).

This is one of a whole series of well thought our writings by Chris Crawford, here is his Library page - on Politics, Global Warming, What do Women Want?, Artists and Technologists, Statistics that misrepresent the popularity of games, The Education of a Computer Game Designer. I disagree with some of his views, but clearly Chris Crawford is a thinker.

Most of these essays are valuable for clear thinking about the role of computer games in society.

Crawford provides two bad reasons and three good reasons for learning to program. He gives much more detail than my very brief summary below:

BAD
1) You won't miss out on doing interesting things with computers if you can't program
2) Don't learn it for the money

GOOD
1) Recreation, a fun hobby
2) It will teach you the importance of clear communication
3) It will make you a better thinker. It's a new language that will take you to new places. Different sorts of places than where a language like English will take you. This last one is his main reason.

migration to south australia statistics

200px-Dinka
The picture shows members of the Dinka tribe (Christian Africans in the South of Sudan) who were massacred by government forces in a 21 year civil war. Wikipedia is a good source of information about the Dinkas. Many of the Sudanese refugees to Australia are Dinkas. They are noted for their height.

Selected extracts from a report I read recently about the impact of migration trends on ESL provison in South Australia. Part of my job is to teach new arrivals computing skills. (Some of my experiences about this are recorded at Paul Chandler's wiki)

In 2003-04, SA settled 1560 humanitarian entrants, and in 2005-2006, 1380 entrants. Around 55% were under 18 years of age. This represents 12% of all humanitarian entrants to Australia.

The average education experience of all current humanitarian entrants in 2004-05 was around 2.4 years ... 70% are from African countries, predominantly Sudan, but including countries such as Rwanda, Sierra Leone, Liberia, Burundi and Somalia.

The Federal Government is reducing the proportion of African humanitarian entrants from 70% to 55% in 2007-08, with greater intake from countries in Asia and the Middle East.

How long does it take for students with refugee background to learn English?

Various research is quoted here with estimates varying between 3 years for oral proficiency and up to 10 years for academic proficiency.

Since the current group of new arrival have interrupted schooling (spending years in refugee camps in Kenya, for example) then the report summises that 10 years for academic proficiency is the more realistic estimate.

A report on African refugees in Victorian schools found:
  • Lack of awareness of cultural expectations and understandings of 'how to be a student'
  • Lack of topic specific vocabularies
  • Unrealistic expectations of academic and vocational options
  • Lack of first language literacy to support learning
The paper also found challenges for teachers were significant including:
  • Lack of prior experience with such high need students, including feelings of barely coping with the demands
  • Difficulty in finding suitable texts and resources (with students rejecting 'modified' materials)
  • Tense relationships between subject area teachers and those deemed responsible for English provision.

Wednesday, August 16, 2006

ascending from the abstract to the concrete

Borderland has a wonderful story, What the Known Demands, of how things went dramatically wrong for him on a drive to collect firewood in Alaska.

This reminded me of the phrase, "ascending from the abstract to the concrete". The lineage is Marxist. The central idea of Marxist philosophy is contradiction, ceaseless struggle between different aspects of a thing, the underlying ability of things to transform themselves - including into their opposites. This is also known as dialectics. War turns into peace. Education turns into vegetation, etc.

Here are some rough notes about this phrase, which is very much about how to view the world:

Everything is in constant motion or change

All things develop through internal contradictions, aka dialectics

Dialectics is the mutual interpenetration of opposites, that opposites can change into each other, depending on the conditions and their stage of development. This is why everything is in constant motion.

Abstraction means to strip away the superficial or incidental aspects of a thing and to reveal its most important aspects, or essence, aka theory, hypotheses

Abstraction is important and can lead to deeper (beyond surface understanding ) of things

Abstraction can also go wrong. There are different ways to abstract. How do we test whether our abstractions (theories, hypotheses) are right or wrong?

By testing our abstractions in practice, by ascending from the abstract to the concrete.

Related ideas:
Theory and practice form a spiral in which practice is principle
Change is constant, stability is temporary

It's a tremendous irony that Marxism is now mainly thought of in terms of dull grey stagnancy (eg. the failed Soviet State) whereas at its centre is a very dynamic philosophy of change.

LINKS AND QUOTES:
Contextualisation for Abstraction
...
Following Cassirer, it can be argued that abstraction always includes taking a point of view from which the concrete can be seen as meaningfully related, but finding this point of view depends on the contextualisation of one's actions. Therefore abstraction is seen here as a dialectical process, including both the process of going from the concrete to the abstract and the process of ascending from the abstract to the concrete (Davydov). The process of going from the concrete to the abstract (and vice versa) is still not thoroughly understood. On the basis of Billig's theory of arguing and thinking, and Sfard's theory of focussing attention, a new perspective on abstraction is developed...
(would like to check out some of the authors cited here)

Learning by Expanding
Traces 3 generations of Activity Theory ...
The first generation, centered around Vygotsky, created the idea of mediation. This idea was crystallized in Vygotsky's (1978, p. 40) famous triangular model of "a complex, mediated act" which is commonly expressed as the triad of subject, object, and mediating artifact ...

... The insertion of cultural artifacts into human actions was revolutionary in that the basic unit of analysis now overcame the split between the Cartesian individual and the untouchable societal structure ...

... The limitation of the first generation was that the unit of analysis remained individually focused. This was overcome by the second generation, largely inspired by Leont'ev's work. In his famous example of "primeval collective hunt" Leont'ev (1981, p. 210-213) showed how historically evolving division of labor has brought about the crucial differentiation between an individual action and a collective activity ... The concept of activity took the paradigm a major step forward in that it turned the focus on complex interrelations between the individual subject and his or her community ...

The third generation of activity theory needs to develop conceptual tools to understand dialogue, multiple perspectives and voices, and networks of interacting activity systems. In this mode of research, the basic model is expanded to include minimally two interacting activity systems. This move toward networks of activities, while still in an embryonic form ...
The Last Superpower forum contains this philosophy thread which includes an analysis of the "ascending to the concrete" phrase:
"Marx talked of "ascending from the abstract to the concrete" which on the surface can seem rather absurd.

How can a concrete view of reality be superior to a more abstract view? We all know that science takes us beyond the surface appearance of things and proposes deeper explanations that are not immediately apparent. And anyone who has studied child development knows that initially children view the world in a "concrete" way and as they become able to think better they become capable of thinking more abstractly. So isn't abstract thinking more advanced than concrete thinking?

The difficulty arises from confusing the Marxist idea of "the concrete" with the idea that what is concrete is that which is easily and immediately perceived via the sense organs - ie the surface appearance of things. (note: the whole idea of anything being "immediately perceived" is in any case incorrect. Perception always involves some cognitive processing ).

However what Marx meant by "concrete" was not what is meant by the pedagogical distinction between concrete and abstract (or formal) thinking.

Marx's use of the word "concrete" has to do with the notion of truth and is not related to the idea of concrete thinking as child-like and primitive.

To ascend from the abstract to the concrete means to move from the initial ability to abstract away from surface appearance (via everyday and relatively easy generalisations and simple concepts) toward a richer and more accurate view of concrete reality. This does involve abstraction - but it is abstraction that is on its way to a richer and more concrete (truthful) world view."

Center for Activity Theory
This page has thumbnail sketches of the major theorists: Marx, Vygotsky, Leont'ev, Luria, Il'enkov, Cole

Evald Ilyenkov's Philosophy Revisited
outline of the contents of a book

Wednesday, August 09, 2006

the purpose of programming

"What is the Purpose of Programming? I mean, why do you do it and where is it going? Where should it be going?"

gp4cover
This is a brief summary of some of the answers at Ward's wiki:
  • to make money
  • pleasure derived from abstract problem solving
  • turning money into time by automating processes
  • free the human race
  • electronic procreation of neural activity ("immortality")
  • make computers imitate other machines (computer as universal machine)
  • electronic modelling of real things
  • reifying what can be conceived (reifying = convert abstract concept into a thing, materialise)
  • satisfy human ego, "I can command a dumb machine"
  • it's people who have purposes, not tasks
  • solve problems faster
  • automate tedious tasks
  • improve communications
  • create entertainment, eg. games
  • to model a concept (anything) in order to learn more about it

The reason I started to program (in logo) was because I read about recursion in Godel, Escher, Bach and thought the only way to understand it would be to program it.

patterns for a game making course

I think the design patterns developed by Joseph Bergin (Fourteen Pedagogical Patterns, is just one of numerous papers by Bergin) for an object oriented Computer Science course could be adapted to a course in Game Making.
0201633612.01._SS500_SCLZZZZZZZ_V1125033542_
What is a design pattern?
A design pattern systematically names, motivates, and explains a general design that addresses a recurring design problem in object-oriented systems. It describes the problem, the solution, when to apply the solution, and its consequences. It also gives implementation hints and examples. The solution is a general arrangement of objects and classes that solve the problem. The solution is customized and implemented to solve the problem in a particular context.
- http://c2.com/cgi/wiki?DesignPatterns
Note the richness (detailed elaboration) of a design pattern. They contain a lot of information, both conceptual and practical. I'd see the rich practical structure of design patterns as very useful in generating and guiding discussion. This could be facilitated through a wiki format. I've had a look at some of the design pattern websites and so far the Joseph Bergin papers seem to be the most useful and applicable to a secondary school teaching situation.

Would anyone else be interested in collaborating in a wiki which, starting from the Bergin paper, developed some design patterns for a Game Making course?

Here is my (brief, yet to be documented) argument for going down this path:
  1. Design pattern theory has excellent credentials
  2. Resources are available
  3. It provides a framework (scaffold) for teachers who want more structure in a game making course - and in turn for students completing such a course
  4. It's a step forward from the present ad-hoc approach
  5. Design patterns are accessible and helpful to students, it would not swamp them with irrelevant or inappropriate theory
  6. It could help facilitate a dialogue where alternative design tools could be compared and evaluated (eg. patterns, flowboards, Event Progress Diagrams, UML). What design tools are suitable / optimal / age appropriate for game development?
Here is a simple example (abbreviated from the Bergin Fourteen Pedagogical Patterns paper)
TEST TUBE (also known as: Try It and See)

Students can answer their own "What if ..." programming questions

Problem / Issue: Students often ask questions they could answer for themselves ... they need to learn to be effective in answering their own questions about programs.

Forces: Students can chew up a lot of time asking low level questions and can become frustrated if they don't receive answers quickly

Solution: Provide students with small programs and get them to use the computer to probe for the answers to "What happens if ..."

Special Resources: Student questions can be a good source of these sorts of exercises. The instructor can take a student question and turn it into an exercise.

Example instances:

The meaning of for loops can be explored in a sequence of exercises in which the initialisation, test and increment portions of the loop are varied.

When a while loop exits and when it does not can be explored.

Sunday, August 06, 2006

we don't know what we don't know

This is a first attempt to apply the laws of ignorance to myself. I think this has potential.
Known unknowns: All the things you know you don't know
Unknown unknowns: All the things you don't know you don't know
Errors: All the things you think you know but don't
Unknown knowns: All the things you don't know you know
Taboos: Dangerous, polluting or forbidden knowledge
Denials: All the things too painful to know, so you don't
- from The Domains of Ignorance, thanks to arti for pointer
Amazing logical angst that leads to hilarity when resolved.

This is about a programming problem that arose while working on the latest version (7c) of the Africa Map game. In this game you click a button and some of the countries jump of a map of Africa. Then you select them with the mouse and drag them back to their correct positions.

To help position the countries accurately I've written some code that displays the exact position of the mouse pointer as it moves across the screen

For the small African countries I decided to paint a small white dot in the middle of them. Then I could use that dot to set the origin for the sprite. When the game ran, I could drag the country, by the dot, to the position required and read the required position from the mouse pointer display

However, when I added one of these countries (Burkina Faso) with a dot to the country and name arrays and tested the game, something strange happened

This worked:
  • Burkina Faso was correctly positioned
  • the name of the country, Burkina Faso, appeared
  • the mouse pointer turned into a hand when it passed over Burkina Faso
This didn't work:
  • Burkina Faso wouldn't deselect with left button release, but the other countries did deselect
  • Burkina Faso wouldn't snap to position with left button release, when dragged close to its correct destination
burkinaFaso
Well, clearly the problem had something to do with left button release. But it didn't really make sense because all the other countries (the ones I did before the white dot experiment) were still working fine. And the new country is coded into exactly the same array as all the others and yet the behaviour on two crucial counts is very different.

What did I try:
  1. Made a list of what was working and what was not working, as recorded above. Good.
  2. Moved the new country to a different position in the array. Maybe I am counting the array incorrectly and being last on the array is the problem (not logical when you think about it, because if the array was the problem then nothing would have worked, not 2 things out of 5 not working)
  3. Adding another new country, with a dot, to the array and testing that. Exactly the same behaviour with the new new country. That test was worthwhile.
  4. Printed out all the code to have a closer look at it. Good.
  5. Through examining the code I determined there were two possible boolean variables that might explain this behaviour. The variable names were used (set to 1 when the countries were off the map and 0 when in their correct positions on the map) and selected (set to 1 when selected with the mouse left button and set to 0 when the button is released)
However, when I looked closely at the code it seemed that logically what was happening could not be happening. Because the following piece of code, contained in a Parent object and which was responsible for snapping the country to position, did not depend on any prior values of either variable, used or selected.
Information about object: objParent
Mouse Event for Left Released:
set variable selected to 0
execute code:

// snap to original position when close
// set used back to 0 when returned to start position
if (distance_to_point(xstart,ystart)<10)
x="xstart;" y="ystart;" used="0;"
It couldn't be that the inheritance from the Parent wasn't working because the mouse pointer changing to a hand was also inherited from the same Parent and that was working. So, I was hopelessly stuck in a logical impossibility.

My feelings at this point were disbelief, frustration and despair. How could this be happening? Cognitive dissonance.

But sometime later (this took a while) it suddenly hit me. The white dot was the same colour as the background colour, which was treated as transparent. I was dragging the object by a transparent hole and when I released the mouse it didn't register that I was releasing the object!!!!!

This led to an amazing emotional release where I staggered around the house laughing, nearly falling on the floor, being so overjoyed at finding the answer to my problem.

So, lets run this past the laws of ignorance.

Known unknowns: All the things you know you don't know. Sure as hell I knew that I didn't know why on earth my countries with dots were behaving so weirdly.
Unknown unknowns: All the things you don't know you don't know. Pass, someone else will have to tell me that.
Errors: All the things you think you know but don't. Well, programming / debugging is good for discovering that, as in this example. I thought I was doing something straightforward but unexpectedly a huge problem arose.
Unknown knowns: All the things you don't know you know. Somewhere deep in the background I knew something about the significance of dragging an object by a transparent hole. But that took a while to come out.
Taboos: Dangerous, polluting or forbidden knowledge. A hole in the middle, that is dangerous, I have found out.
Denials: All the things too painful to know, so you don't. I was pretty sure I was an idiot who couldn't see something that must have been obvious. That was painful but I didn't give up on it. I'll probably never be a highly skilled programmer but I'm still in denial on that one (partly).

Thursday, August 03, 2006

UML Distilled

Notes on UML Distilled Third Edition: A Brief Guide to the Standard Object Modelling Language by Martin Fowler

"Programming languages are not at a high enough level of abstraction to facilitate discussion about design" (1)

"... conceptual perspective ... we are building a vocabulary to talk about a particular domain" (5)

"(there are) three modes in which people use the UML: sketch, blueprint and programming language ... the most common is UML as sketch" (2)

"The essence of sketching is selectivity ... use the sketches to help communicate ideas and alternatives about what you're about to do ... only important issues that you want to run past colleagues or sections of the design that you want to visualze before you begin programming" (2)

"... sketches are explorative, while blueprints are definitive" (3)

"sketchers, see the essence of UML to be the diagrams ... however, (for) the creators ... the essence of UML is the meta-model" (6)

The author favours UML as sketch approach. He believes that blueprints are too difficult to do well and slow down development. WRT UML as programming language ... he's not convinced that graphical forms are more productive than textual forms (6)

UML Diagrams. On page 12 there is a table showing 13 different types of UML diagrams:
  • Class
  • Sequence
  • Object
  • Package
  • Deployment
  • Use case
  • State machine
  • Activity
  • Communication
  • Composite structure
  • Component
  • Interaction overview
  • Timing

They can be divided into Structure diagrams (eg. Class) and Behaviour diagrams (eg. Sequence) (12). He suggests to start out with those two - Class and Sequence diagrams (16).
800px-Uml_hierarchie_des_diagrammes
UML is Not Enough

"... you shouldn't hesitate to use a non-UML diagram if no UML diagram suits your purpose." (15)

"Now that the methods war is over, patterns are where most of the interesting material about analysis and design appears." (17)

Iterative and Waterfall Processes

Both processes use the (four part) software life cycle: requirements analysis, design, coding and testing

Waterfall style: Attempt to finish one part of software life cycle completely before moving onto next part (20)

Critique of waterfall approach: "... it's very difficult to tell whether the project is truly on track with a waterfall process." (21)

Iterative style: Break down the project into subsets of functionality. Then do the complete software life cycle for each part. Each iteration should produce production ready integrated software.

Some think they are doing iterative but they are not (pseudos), eg. "This iteraction's code is very buggy, but we'll clean it up at the end" (21)

Other names for iterative development: incremental, spiral, evolutionary, jacuzzi (21)

Predictive and Adaptive Planning

Prediction is v. hard to achieve due to requirements churn. If you freeze requirements then you run the risk of delivering software that no longer meets the needs of its users. (23)

Adaptive planners "... contends that requirements churn is unavoidable ... predictivity is an illusion ... we should face the reality of constant change and use a planning approach that treats change as constant in a software project" (23)

"You can't say "according to plan" in an adaptive environment , because the plan is always changing" (24)

"An adaptive plan ... requires an iterative process"

Agile Processes

Examples (other names): Extreme Programming XP), Scrum, Feature Driven Development (FDD), Crystal and DSDM (Dynamic Systems Development Method)

Agile approaches are strongly adaptive (dynamic) and also people-oriented (meaning they work best with high quality people)

Most use UML in sketch mode

Agile process are low in ceremony, they minimise documentation and control points. Ceremony makes it harder to make changes and works against the grain of talented people.

"... the lack of ceremony is a consequence of adaptivity and people orientation rather than a fundamental property" (25)

My comment: One implication here is that mediocre programmers may need more ceremony, more structure, more check points, more documentation.

Patterns (27)

Experts document patterns, common design themes, so that those not so expert can learn and apply it

This is Zone of Proximal Development applies to software development (my comment)

Patterns are more useful than methods like UML. Diagrams (UML) are useful but discussing experiences is more useful.

"A pattern is much more than a model. A pattern must also include the reason why it is the way it is. ... a pattern is a solution to a problem. The pattern must identify the problem clearly, explain why it solves the problem, and also explains the circumstances under which the pattern works and doesn't work ... they are the next stage beyond understanding the basics of a language or a modelling technique."

This reinforces what I have been thinking - that patterns are the way to go in teaching programming / Game Making with Game Maker.

What about UML? I'm not sure you really need UML, patterns might be enough? Nevertheless, I like the idea of using UML sketches to discuss programming concepts. I see that as a current problem in my (lack of) programming discussions. We currently discuss programs through chunks of code and file attachments. The contrary view is that UML is a step removed from coding and learner programmers need to learn how to program before they move on and learning to program might take ten years. Jack Reeves says, "code is design", that the way to go is through comments within code.

Fowler supports a dynamic (adaptive, iterative) approach to software development but this still operates within a software development cycle: analysis, design, coding, testing (simpler than the Systems Development Life Cycle). I strongly support the dynamic conception of software development, rather than the top down predictive approaches. This fits my philosophy of how all things develop in the real world, through contradiction and struggle. We shouldn't be demanding extensive documentation from young programmers, it will make things boring and tedious for them.

I intend to write more about patterns

Other references about software design styles:
Jack Reeves, Code as Design
Brian Harvey, Symbolic Programming versus the AP Curriculum
Paul Graham, On LISP
Philip Armour, Five Orders of Ignorance