Thursday, November 29, 2007

Tuesday, November 27, 2007

the intel dream compared with the OLPC dream

Groklaw (Some Ideas for Marketing the OLPC) analyses the differences between how Intel markets their Classmate and how OLPC markets their XO

the Intel dream:
What dreams are Intel selling? Here's the Classmate demo showing the parental monitoring/policy control feature. Intel is using that to market the thing. The parents can allegedly force kids to turn off the laptop and control what they can do with it, even in the classroom, even turning off the laptop while the child is in class. Why would a parent ever want to do that? In real life, they never would, I'm thinking. It's the illusion, just knowing that they can, not any reality, being sold.
the OLPC dream:
The real one -- that your children can have a better life than you do. That they can leap over the boundaries that restrict you, by learning more than you know, even if the schools are underfunded and understaffed and technically backward, even if you have no money to spend on their education, and that after they learn they will show you, too. Is that not every parent's dream? That their child will succeed beyond what the parent ever did?
Update (29/11): The Groklaw analysis is a response to a Wall Street Journal article subtitled 'How a Computer for the Poor Got Stomped by Tech Giants' which suggests that the OLPC project is failing at the marketing level:
An order from Uruguay for 100,000 machines appears to be the only solid deal to date with a country, although Mr. Negroponte says he's on the verge of sealing an order from Peru for 250,000. The first mass-production run, which began this month in China, is for 300,000 laptops, tens of thousands of which are slated to go to U.S. consumers. Mr. Negroponte's goal of 150 million users by the end of 2008 looks unattainable.
In response, Groklaw suggests that OLPC should take a leaf out of Intel's book and market the OLPC with the aura of control, which will promote this illusion:
keep your children in a playpen you can control by pushing some buttons
I agree with the sentiment of the response from Stephan Wagner in the comments to Groklaw's blog:
To generate a pseudo-control will not work in our community, because everything is open, and so the fact it will not work will be.

Open Source depends on trust, which pays back in the long range. 'Selling' a feature while calling it foolish to insiders in the background would be a very bad experience to the hocused customers.
On the broader issue of whether the OLPC is failing, I did discuss this in an earlier blog:
The best article I found was 10 Reasons Why Negroponte Should Change OLPC Distribution by Alexandre Van de Sande. He effectively challenges the whole concept of only selling millions of units to governments:
  • Many third world governments are corrupt and populist
  • The real DO-ERS are local enthusiasts, NGO's, eccentric billionares and early adopters. Best to use them.
  • Selling in thousands, rather than millions, achieves critical mass and better logistics.
With respect to forces in the world pushing for progressive social change, I'd like to see more analysis of the role played by a few progressive philanthropists in the world today, for example, Negroponte (OLPC), Mark Shuttleworth (Ubuntu Linux, Kusasa), Brewster Kahle (Internet archive). Philanthropy's New Prototype by James Surowiecki about Negroponte's philanthropy is worth a read.

the best opportunity to get a digital library to the world

Not everyone understands yet that the OLPC as well as everything else is also a low cost way to distribute books

Brewster Kahle: the OLPC is "the best opportunity to get a digital library to the world"

Bringing the internet archive and the XO laptop e-book reader (200 dpi, readable in sunlight) together, what a beautiful synergy

via Tom Hoffman: Kindle, XO, Blah, Blah and Doug Johnson: Can the kindle pay for itself?

From an earlier blog, Brewster's dream:
The downside, the evil, awful, how could it go wrong is cable television or DRM, where it's all locked up. You're allowed to experience it ... entertainment and being a consumer ... this is SICK, I don't want to be a consumer, I don't want to be entertained. That's happening to me. I want to be able to build on and show off to my friends ... and that requires easing up and being able to play with stuff.

I think ideas come from the commons. They're exploited successfully by Companies as Marx said ... but I'm a card carrying capitalist and I've been fairly successful. But I do know the limitations of what we can do in the private sphere.

Monday, November 26, 2007

the fuzzy maths wars

If you are in a war zone you first need to recognise the fact. The maths war have been raging for some time now and there is no sign of peace in sight.

If you are fighting a war then you need to understand which side to be on. This is hard, the maths war is complex, with wars within wars, false friends (often well intentioned), propaganda of varying quality etc.

A brief history of american K-12 mathematics education in the 20th Century by David Klein

This argues that progressivism or discovery learning or constructivism (fuzzy descriptors that are used interchangeably) has done enormous harm to maths education

  • reducing academic content
  • capitulating to utilitarianism
  • restricting the teaching of algebra
  • teaching the child and not the subject
  • integrating subjects
  • focusing on everyday living
  • allowing children to learn what they want
  • promoting freedom as profound and revolutionary ("Summerhill")
  • reducing pencil and paper computation
  • excessive use of calculators
  • too much real world problem solving focus
  • teamwork focus
  • de-emphasising calculus and its prerequisites (algebra, geometry, trigonometry)
  • offering a curriculum smorgasboard
  • vague curriculum goals, eg. "to be a maths problem solver"
  • too much learning by doing, hands on, inquiry based
  • encouraging students to invent their own algorithms
  • definitions and proofs gone missing
  • books downgraded or missing
  • promoting a false dichotomy between basic skills (bad) and conceptual understanding (good)
"Sifting through the claims and counterclaims, journalists of the 1990s tended to portray the math wars as an extended disagreement between those who wanted basic skills versus those who favored conceptual understanding of mathematics. The parents and mathematicians who criticized the NCTM aligned curricula were portrayed as proponents of basic skills, while educational administrators, professors of education, and other defenders of these programs, were portrayed as proponents of conceptual understanding, and sometimes even "higher order thinking." This dichotomy is implausible. The parents leading the opposition to the NCTM Standards, as discussed below, had considerable expertise in mathematics, generally exceeding that of the education professionals. This was even more the case of the large number of mathematicians who criticized these programs. Among them were some of the world's most distinguished mathematicians, in some cases with mathematical capabilities near the very limits of human ability. By contrast, many of the education professionals who spoke of "conceptual understanding" lacked even a rudimentary knowledge of mathematics.

More fundamentally, the separation of conceptual understanding from basic skills in mathematics is misguided. It is not possible to teach conceptual understanding in mathematics without the supporting basic skills, and basic skills are weakened by a lack of understanding ..."
What I have learnt from this:

In war language is distorted as the advocates take a good idea and turn it into propaganda. Understanding will not come through repeating slogans like constructivism, either for or against. It will only come by delving more deeply into the actual curriculum and evaluating it from these points of view:
  • does the author understand mathematics deeply?
  • does the author understand child development, what is age appropriate?
People who don't meet both of these criteria should not be writing maths curriculum or histories of maths

I became confused about this myself. This article:
Basic Skills versus Conceptual Understanding: A Bogus Dichotomy in Mathematics Education by professor H. Wu.

The title is great, the author is a maths professor, his writing is open and transparent, he makes some valid criticisms of some aspects of discovery learning being taken too far, he makes a brave effort to make algorithms more understandable but falls down on the age appropriate child development criteria. I changed my initial favourable evaluation after being helped out by this comment on the squeakland list.

The evaluation process is not easy. To be good at both maths and child development takes some effort. The real danger is that you'll end on the wrong side of a fuzzy war.

making better maps

Schools (and many adults) introduce another barrier, which is a profound misunderstanding of what it means to be fluent in math and science (the misunderstanding is usually in the form of thinking that math and science are fact and pattern based, and that learning the facts and the patterns is what is required)
- Alan Kay, Squeakland list reference
This confused me. If science and maths were not about facts and pattern recognition, then what were they about?

Short answer: Making better maps

Thoughts about teaching science and mathematics to young children
the maps "are always subject to improvement and rediscovery: they never completely represent the territory they are trying to map ..."

"... helping children actually do real science at the earliest possible ages is the best known way to help them move from simple beliefs in dogma to the more skeptical, empirically derived models of science"

"... as Piaget pointed out, it is best to think of children as thinking beings in their own right ..."

our culture is confusing and the science is often not central, it can easily be missed
Computers are seductive. I may have been focusing too much on motivation, or game making or programming as goals in themselves.

Also, computers are marketed as productivity tools with applications that attempt to do it all for us. Is that the best thing for learning? Probably not, but its more seduction.

Alan Kay points out that science knowledge in particular is a more expansive goal, perhaps a better pathway to help young children. The goal is to find child appropriate ways of teaching science. Computers can help here but that is just one possibility.

Saturday, November 24, 2007

Pearson fears Labour political management approach to indigenous issues

During the election campaign Howard pledged to hold a referendum within 18 months to introduce aboriginal reconciliation into the Australian constitution. Initially Rudd went along with this but more recently has said it is not a priority and that if elected he may not do it during his first term

In response Pearson has publicly criticised Rudd on the eve of the election.
"It is that the quest for indigenous reconciliation must be an up-front part of the first term agenda. You cannot now retreat to practical reconciliation that Labor has repudiated for the past 10 years." Pearson said reconciliation must be both symbolic and practical. "We got Howard to the point where he backed a symbolic agenda and Rudd is saying, no, let's just rewind the tape," Pearson said.

"There was no equivocation in my view," Pearson said. "I will not stand silent while a contender in this election reneges so flagrantly on a commitment he made on day one of the campaign." Pearson said he had been "seriously misled".

"During the campaign I was alarmed at Labor's backtracking on the Northern Territory intervention. Labor campaigned against intervention both in the NT and in indigenous communities," Pearson said.

"But I kept my counsel and my concerns. For the duration of the campaign I was satisfied we had a bipartisan commitment. So I kept my powder dry. Then 48 hours before the vote I read that Rudd won't be putting the referendum if he wins. This is an absolute heartless abandonment of indigenous people. We have been misled. My reaction is one of absolute devastation and betrayal. This is not what they promised and we will hold them accountable."

In his interview with The Australian, Pearson revealed one of his deepest fears: that indigenous affairs under Labor would become an issue for political management without any genuine search for solutions.

It was, in effect, a double fear that Labor's spin doctors would favour the political management approach and its progressive wing would favour solutions that didn't work and were proven failures.
- Pearson's Dread of Rudd in Power
For an earlier, deeper analysis of these issues see labour white ants black responsibility

Thursday, November 22, 2007

some thoughts about prof. Stephen Heppell's VITTA keynote

One of the big themes of Stephen Heppell's keynote was how important local knowledge was. This was not contrasted with an opposing force, ie. there was no mention of any important non local knowledge, hard to discover core knowledge that ought to be part of everyones education.

Another theme was the importance of connection (web2.0-ism). Anything is possible provided you are connected and can communicate and collaborate through the internet pipe. The role of the leader pales into insignificance.

Another theme was the cutting edge power of web2.0 apps, that the "digital natives" now swim in this stream and we need to adapt or become irrelevant

Some thing is very wrong here:

1) an important international expert arrives from overseas to tell us that local knowledge is the most important thing
2) We sit in lecture mode hearing that the lecture is no longer important
3) the limitations of web2.0 apps are not mentioned. There was no context either historical (computer science) or historical, about all the knowledge discovered before computers were invented

I don't get this "big picture"

Apparently, the source of inspiration for the VITTA conference "revolution" theme was Michael Wesch's video "The Machine is Us/ing Us"

Michael Wesch's youtube video was a big hit, which suffered from the same deficiency as those who make a playword out of "revolution" -- that revolution will happen by itself as an inexorable progression of technology and Moore's law. This view, also promoted by Ray Kurzweil, has been disputed, notably by Rodney Brooks. I wrote a blog about this some time ago, "the machine is not yet us"

I'm tired of web2.0 hype, its far from new and because I'm not looking forward to the next education ICT conference that once again will have web2.0 as the main theme and present it as a "revolution"

Saturday, November 17, 2007

a technology-human iteration: part three

Part one and part two

third iteration: the tension between a computer user interface and the underlying computational model

Alan Kay was directly involved in development of the GUI (MVC), the first OOPs language, Smalltalk (an object <- message model for programming complexity) the personal computer and the dynabook vision (an integration of these ideas into a meta medium for children)


What sort of user interface is suitable for learning?

We have become very used to a certain style of user interface, one which is “user friendly” and which gives us access to the function of the computer. The user friendly user interface has been designed by experts to not demand too much of the end user. Some systems take this a step further and actively discourage the user from becoming curious about how things work under the hood.

It is not just a matter of “user friendly”, in itself that is not serious grounds for complaint. It is the idea of users as users of clearly defined applications that have been developed by “experts”. In large part this state of things has arisen through commercialisation. A marketable commodity requires a clear definition. So proprietary applications are developed as a black box as an expression of “efficient software engineering”. In this commercial vision the “personal computer” is not really personal because most of its interfaces have been standardised which transforms the actors into docile agents who respond in predictable ways to stimuli.
“my life belongs to the engineers ... we hesitate to exist” (Latour)
“The self evident state of the art blinds people to other possibilities” (Andy diSessa)
If you start from a more philosophical perspective of amplifying human reach or of computer as a meta medium for expressing the creative spirit then the attitude to the user is different. The user, as well as being a user, is also a potential constructionist designer and developer who eventually will be able to create their own tools. So, the tools for exploring and making the system should be powerful and easily accessible. This is one of the features of Smalltalk.

The ethic is one of mutability and simplicity. Every component of a system is open to be explored, investigated, modified and built upon. The tool / medium distinction is blurred and so is a lot of other false clarity. Rather than a world of reified “experts”, “engineers”, “designers”, “end-users”, “miracle workers” and “plain folks” it would be better to blur these boundaries, particularly for learning environments.


One piece of educational software that attempts to put much of this together is Etoys, which incorporates features from logo, smalltalk (including late binding), hypercard, starlogo and morphic – an integration of some of the most interesting programs over the past 35 years. Etoys is part of the OLPC project.

A slogan that helps understands some of the thinking behind the etoys user interface is “doing with images makes symbols” (Bruner / Kay)

Jerome Bruner (1960s) identified three mentalities: enactive (kinesthenic), iconic and symbolic (abstraction). The idea is that repeated doing of visual manipulations will gradually lead to the students developing abstract ideas.

Etoys is a "live" system. The code can be written and variables manipulated directly while the system is still running in front of you. This makes powerful ideas such as variables and feedback far more accessible. It has transparent parallelism (aka late binding)

Etoys represents an attempt to make an object <-- message model of programming accessible to children, a better underlying model to represent complexity than a procedural model. Some people have argued that this OOPs model cannot be taught to children but Etoys represents an attempt to show that it is possible. In etoys the GUI consistently represents the underlying model. For example, you have drag and drop visual tiles which then spell out something like: ball's heading <-- 45 + random(90) This is like an English sentence: <object> receives <message>

Another metaphor here is cell biology. One kind of building block which can differentiate into all the needed building blocks. You need an evolutionary approach.

Smalltalk has a recursive design. Why divide a computer into weaker things such as data structures and procedures? Instead why not divide it up into little computers?

The foundational premises of Smalltalk are:
  • everything is an object
  • objects send and receive messages
  • objects have their own memory
  • every object is an instance of a class
  • the class holds the shared behaviour of its instances
  • to evaluate a program list control is passed to the first object and the remainder is treated as its message
Alan Kay regrets the terminology, object orientated, thinking later that message orientated would have expressed it better

Tracing the Dynabook: A Study of Technocultural Transformations (PhD Dissertation) by John W. Maxwell

This pulls together a lot of scattered information about Alan Kay into one place, very valuable from that point of view. Start with Chapter 4 to obtain an overview of Alan Kay's educational vision. Maxwell correctly stresses the importance of a historical perspective, going back to the 1960s, in order to understand how educational computing got to the place it is now.

a technology-human iteration: part two

Part one is here

second iteration: the tension between how children learn and the complex, non spontaneous nature of the development of advanced scientific or Enlightenment ideas

the non universals:
  • reading and writing
  • deductive abstract mathematics
  • model based science
  • equal rights
  • democracy
  • perspective drawing
  • theory of harmony
  • similarities over differences
  • slow deep thinking
  • agriculture
  • legal systems
The non universals have not arisen spontaneously, they have been discovered by the smartest humans after hundreds or thousands of years of civilisation. Hence, it follows that children need guidance in learning them, they will not be discovered by open ended discovery learning. There is an objective need for some version of “school” - where advanced knowledge is somehow communicated from those who know it to those who don't.

The resolution of this tension is to develop an honest children's version of the advanced ideas. For some of these ideas (not all) the computer can aid this process. Which ones? The list would include the laws of motion, turtle geometry, calculus by vectors, exponential growth, feedback and system ecologies. I think this should be the starting point or at least one of the starting points for thinking about how computers should be used in schools.

Part of the discussion here is establishing that computers are not currently used to their full potential in schools. IMO once the above vision of how computers could be used in schools is understood then it becomes obvious that they are currently poorly used in schools.

This part of the discussion is still at the level of the broad overall vision. Part three gets down to the nitty gritty.

(end of part two)

a technology-human iteration: part one

What is this? An attempt to iterate over some different positions about the co-evolution of technology with humans, the “technology and progress” debate and how this relates to child development and education. This is meant to represent some sort of progression but also with feedback loops to earlier iterations as the later ones are developed.

first iteration: the tension between computers and human development

second iteration: the tension between how children learn and the complex, non spontaneous nature of the development of advanced scientific or Enlightenment ideas

third iteration: the tension between a computer user interface and the underlying computational model

first iteration: the tension between computers and human development
"I think there is a world market for maybe five computers,"
- alleged 1943 quote, Thomas Watson, IBM President
Once Moores Law was articulated (1965) then the idea that the predominant mainframes would be overwhelmed by personal computers arose. Alan Kay was one of those who had this idea (in 1967), which was quite unsettling at that time:
"For the first time I made the leap of putting the room-sized interactive TX-2 or even a 10 MIP 6600 on a desk. I was almost frightened by the implications; computing as we knew it couldn't survive--the actual meaning of the word changed--it must have been the same kind of disorientation people had after reading Copernicus and first looked up from a different Earth to a different Heaven"
- Early History of SmallTalk
Kay was also influenced by Papert's use of logo in schools. This led onto him developing a notion of children using computers as a personal meta medium to explore powerful ideas

This thinking takes place in the context of the more general backdrop of different positions taken with respect to computers and human development – with scenarios such as Damnation, Salvation and Cyborgs as outlined, for example, by Rodney Brooks in his book, Flesh and Machines: How Robots Will Change Us, Ch.9.

Alan Kay's position was similar to one articulated earlier by Doug Engelbart and J. C. R. Licklider --> computer-human symbiosis, the personal computer as an amplifier of human reach, or "augmentation of human intellect". or computer as a "thought amplifier"

This is a very different ("futurist") vision from the non vision that Schools tend to have, that computers are just tools which require skill to use, but which are subservient to the real education represented by the curriculum. However, this tension and inter-relationship between the computer and the curriculum needs to be explored in a more detailed and nuanced fashion
(end of part one)

"education revolution", NOT

Rudd's "education revolution" amounts to putting more computers in schools, so that "every Australian student in Years 9 to 12 has access to their own school computer"

And 99 per cent of school children would be given access to broadband connections of up to 100 megabits per second

In response, Howard, was at pains to say that he too liked computers, in this painfully amusing bit of on the run electioneering rhetoric:
"I didn't come here to attack computers. I think we all like computers and we all find computers are a marvellous aid and we love them and they make our life so joyous. We get so much information and they are terrific"
Quotes from The Advertiser, Thursday November 15th, pp. 6-7

No surprises from our pollies here. Their thinking is entirely quantitative - more computers, faster broadband, more information. There is not the glimmer of a hint that computers might be used to transform education in a qualitative sense, to create new sorts of powerful learning experiences that are much harder to create without computers.

I'm not aware of a single Australian politician who understands this issue.

Friday, November 16, 2007

my VITTA presentations

I'm travelling to Melbourne soon to present at VITTA:

1) Alan Kay's educational vision. My notes, slides, some history and annotated references are here. Also, I have compiled some nice quotes from Alan here

2) Etoys squeak workshop. I'll be basing this mainly on making pong in etoys with maybe a kedama demo thrown in, if time.

Wednesday, November 14, 2007

towards an intelligent user interface

Most interfaces today present the very same "face" to a vast variety of users, from children to adults, from novices to experts. Most pieces of knowledge on the Internet have exactly the same form regardless of who is trying to understand it. The future demands that adaptable learning be the center of all knowledge presentations, including that of the user interface itself. The user interfaces have to be able to create a fairly accurate model of each user and use that model to modify the presentation of its knowledge structures, including finding other humans on the net that might be able to help. This area constitutes new frontiers in adaptable systems, models of humans and human knowledge, etc.
- Make it Happen in the Best Possible Way
Good flexible, interactive teachers continually adapt what they are delivering to their students as they pick up on the feedback which helps inform the teacher of which pathway to take through the materials to reach some desired goal.

Good constructionist learning environments (eg. Harel's ISDP) can also be created in which the learning materials themselves become "objects to think with" and sometimes help the learner without the teacher intervening directly. Although the teacher might help directly and the teacher has used a lot of knowledge to help create the learning environment

A possible next step along this trajectory is one envisaged in the alan kay quote. Live knowledge adapts the way it presents itself to the learner in ways that invite learning depending on the current knowledge state of the learner.

Intelligent knowledge interacts with intelligent human. Sometimes the knowledge is smarter, at other times the human is smarter.

everyone is happy with the way computers are used in School, right?

Alan Kay Still waiting for the Revolution

Computers could be used as a "thought amplifier" (eg. model the exponential growth of a contagious disease) but there are underlying problems of:
(1) the poor maths / science knowledge of most adults;
(2) Schools preoccupied with vocational training, which is now even rampant in elementary schools.

So, although everyone is happy with students busily using computers in school very little of importance is actually happening.
Q: U.S. schools have spent $40 billion on computers and Internet access. Do you think they've put that technology to good use?

A: It's a chicken and the egg thing. What's happened is probably a successful egg—but with no chicken yet in sight. I can go into virtually any school that has computers and see children who are happily using them, as well as see teachers who are happy that the kids are using them. Parents are happy, principals are happy, and school boards are happy. But if you know anything about computing or about math and science, you can see that very little of importance is going on there.

the tradition of all dead generations weighs like a nightmare on the brains of the living

Predicting the Future by Alan Kay

Great article which examines a variety ways in which the future becomes blocked. Includes elaborations of some quotable quotes from Alan Kay, Marshall McLuhan and others (and some brand new ones from Kay):

"the best way to predict the future is to invent it"
"Point of view is worth 80 IQ points"
"the biggest thing we need to invent is the invention of the future itself"
"the weakest way to solve a problem is just to solve it"
"I don't know who discovered water, but it wasn't a fish."
"Innovation for holders of conventional wisdom is not novelty but annihilation."
"We're driving faster and faster into the future, trying to steer by using only the rear-view mirror."
"The 20th century is the century in which change changed."
"the greatest invention of the 19th century was the invention of invention itself"
Marvin Minsky:
"You don't understand something until you understand it more than one way."

I like this paragraph:
But McLuhan was saying something else, that when change changes, you can't predict the future in the same way anymore; you have some second order or third order effects. So the biggest thing we need to invent in the 1990s is the invention of the future itself. In other words, to think of the concept of future not as a thing that comes from the past--although it has come from the past in a way--but to realize that the forces that are bringing about change right now are so great that it's very difficult to sit down and make simple extrapolations
Our current systems (educational, political) do seem to operate in a zone of total failure of imagination and the ethos of the least worst choice.

But looking backwards it is clear that hardly anyone in the past predicted our current present. Who predicted 9/11, the fall of the Berlin wall, the personal computer, the GUI, the rise of the internet, the advent of free software or one laptop per child ...? A handful of people predicted some of those things before they happened but no one predicted all of them or anything like that. And institutions like School are struggling without much success to adapt to these changes ... introduce this innovation, block this one, put you head in the sand about that one etc.
"Men make their own history, but they do not make it as they please; they do not make it under self-selected circumstances, but under circumstances existing already, given and transmitted from the past. The tradition of all dead generations weighs like a nightmare on the brains of the living ..."
- The Eighteenth Brumaire of Louis Bonaparte. Karl Marx 1852

Sunday, November 11, 2007

why learn etoys squeak?

Etoys is part of the OLPC - that may well be a catalyst to learn etoys if you are interested in what software the OLPC will be delivering to (perhaps) millions of children. It was for me.

But here I'm trying to (briefly) outline some of the broader arguments for learning etoys, as a piece of interesting software:

1) It represents an integration of some very good ideas that have taken some years to develop and have been expressed so far on these systems: logo, smalltalk, hypercard, starlogo. (What each of these systems offered could be spelt out in more detail)

2) It is an exploration of a visual-kinesthenic programming approach, which can be expressed with this slogan, "doing with images makes symbols" (from Kay, based on Bruner). In part this is constructionism but it is also pointing to a relationship between doing, visualising and abstraction that can work for young children.

3) It is a "live" system. The code can be written and variables manipulated directly while the system is still running in front of you. This makes powerful ideas such as variables and feedback far more accessible. It has transparent parallelism (aka late binding)

4) It represents an attempt to make an object <-- message model of programming accessible to children, a better underlying model to represent complexity than a procedural model. Some people have argued that this OOPs model cannot be taught to children but Etoys represents an attempt to show that it is possible.

5) In etoys the GUI consistently represents the underlying model. For example, you have drag and drop visual tiles which then spell out something like:
ball's heading <-- 45 + random(90)
This is like an English sentence:
<object> receives <message>
So, it is arguable that the meaning of the code will be accessible to young users who understand simple English

6) It contains a further evolution of the user interface called morphic, a range of halos that enable direct manipulation of objects (see screenshot)

7) There is an underlying philosophy of user as designer, not only of the immediate task but of the system itself. The latter part of this point ("of the system itself") may not be immediately apparent but the user is not being treated in conventional sense of "user friendly" but in the sense of a potential co-designer.

IMO it's fair to say that etoys is not particularly easy to learn. I think that the main point about visual programming systems is not about "easy" but about different channels of representation. Some learners become more engrossed in visual-kinesthenic systems. However, I'm pretty sure that Game Maker and Scratch are "easier" than etoys. Teaching etoys to experienced users requires a lot of instruction in the early stages because it is quite different to systems that these users are used to.

So my argument is not one of "user friendly" but that it is an innovation, an exposure to a different way of doing computing - a rich and fruitful pathway

Thursday, November 08, 2007

making pong in etoys

This is a long-ish blog with lots of screenshots because I wanted to explain in detail how to make a game in etoys for someone who is relatively new to using it.

It's best to use the OLPC etoys image of etoys squeak, which is now superior to the version on the squeakland site: install instructions here This tutorial matches the OLPC image version of etoys, it would be hard to follow all the detail of it if using the Squeakland version.

Saving and reloading: You can save your project by clicking on the open book icon at the top right. To reload use the world menu –> alt+shift+W


Grab a Playfield out Supplies (the box at the top centre of the screen)

Make your own bat and ball, name them "bat" and "ball", and put them into the Playfield, the simplest way is to drag them in directly

Make a script to control the ball's behaviour. Name it "move". The ball's motion category contains the commands you need: forward and bounce

The default heading is zero (0), which is north, which we don't want. Write a setup script which creates a better initial heading, with some random variation:

From the ball's Viewer motion category drag out a detailed watcher for the heading, so we can directly observe its changing values:

Make some observations for yourself about the x and y co-ordinates and the heading values of the ball as it moves around the Playfield, so that you become aware of how the co-ordinate system works in etoys


Drag a Test/Yes/No pane out of the ball's move script supplies palette

and add it to the move script

There are lots of other Viewer categories! By clicking on any Viewer category heading you get a drop down list revealing the other possibilities. Do this and select the test category:

What test do we want? Answer: ball overlaps bat. We get there by initially dragging the ball's overlap dot test to the Test section of the move script:

Now open the bat Viewer and ask it for a "tile representing me"

and replace the dot tile in the move script with the bat tile:

We have to do some maths now:
With the way etoys measures headings (your HW in part one) what should the new heading be after bouncing off the bat?

Go back to the ball's Viewer, drag out the heading by the assignment arrow and add it to the Yes line in the move script

Have you done your maths yet?

For a true bounce using the etoys heading syntax the after bounce heading will be the negative of the before bounce heading. To represent the minus grab a function tile from the move script palette

and replace the number on the end of the ball's heading with the function tile

Next, click on the function tile and choose negativeOf from the list of functions:

Now replace the number in brackets after the function with the ball's heading

Test it out. The ball should bounce off the bat now with a true bounce!


We can use either key strokes or the specialised etoys slider (Supplies > Object Catalog) to control the bat. I'll use key strokes for this tutorial.

Open the world Viewer by middle clicking on the world to get the halos and then clicking on the cyan "eye". The world viewer has an input category which tracks the last key stroke. Press the up and down arrow keys and you will see the Viewer keeping track

Drag out a new script from the world viewer (only the world viewer has a keystroke option) and name it something like "batControl". From the palette tear off a Test/Yes/No pane and add it to the script.

Drag world's last keystroke (not by the assignment arrow) to the Test condition of the bat control script

If necessary change the key input to <up>

Drag out the bat Viewer and open the motion category. When we press the <up> arrow we want the heading to be zero (drag by assignment arrow) and the bat to move up the y axis, like this:

It is possible to program a keypress (thanks to Tony Forster for explaining how). Click on the button displaying "normal" next to the ticker, then choose more... from the drop down menu and then keyStroke

Now add your <down> arrow keyboard control


We will do this part by registering a score increase when the ball touches a boundary object

Make a boundary object, name it ("boundaryLeft"), drag it into the Playfield and resize it with the yellow halo so it fits all the way along the boundary
We will record the score in a "Text" because a Text contains the code to increment a numeric value. Drag a Text out of Supplies and position it on the right hand side of the Playfield. I named my Text "scoreRight" and set its numeric value to zero (basic category)

Create a new script, named ball score, add a Test/Yes/No pane and make the Test condition:
ball's overlaps boundaryLeft. First drag ball's overlaps dot from the ball's Test category. Then ask boundaryLeft to hand you a "tile representing me" and replace the dot with that tile.
When the ball hits the boundary we want the score to go up by one, the ball to be returned to the centre of the Playfield and move off in a random direction, like so:

Run the script with the ball moving, to check that it is working.


It is now mainly a matter of making a another bat, score and boundary for the other side of the Playfield and then our first version of pong will be completed. I reduced the bat size and speeded up the ball to make it more interesting. I also added in some more randomisation.

Version one available here (you will need to OLPC etoys image to play it)

Wednesday, November 07, 2007

making a 15 Puzzle grid

This program is to partially automate the making of 15 Puzzle

Get a Playfield from Supplies

Get another Playfield from Supplies, open its Viewer and name it cell

Get a Text from Supplies and open its Viewer
Text's numericValue, change 0.00 to 0 (no decimals)
Pick up the Text (black halo) and drop it into the cell
Reduce the size of the cell (yellow halo), we will have to fit 16 cells into the larger Playfield

Make sure the Text is inside the cell - when you move the cell the text should move with it. Also check by looking in the cell connections category, you will see the text is registered there.

Open the cell viewing menu (red halo)
Check round corners, essential for this project
Change the colour to establish contrast from the colour of the large Playfield
fill style > change colour
border style > border colour

Open the cell viewer
Add a variable, call it counter
change the value type > Player
Drag out cell counter by the assignment handle, it will form a script which reads:
cell's counter <-- dot Open the Text Viewer Get the Text to hand you a "tile representing me" (from menu at top) Replace the dot with the Text tile
Run this script briefly so the cell's counter Player type converts to a Text type. The icon on the assignment arrow will change from a dot to a text.

Now we will write a script which automatically makes new cells, increments their number and puts them into the large Playfield

Open the Playfield Viewer and drag out a script
Open the cell Viewer and drag out the cell's counter variable by the assignment handle and add it to the Playfield script. It should read:
cell's counter <-- Text To make a new cell: Go to cell > miscellaneous category, drag out cell's copy and replace Text with it

Running this will create a new copy of the cell on top of the original cell. So now we want to automatically move the new copy into the larger Playfield.
Switch on auto-line-layout in the larger Playfield, for automatic alignment:
Menu (red halo) > playfield options > check auto-line-layout
Run the script to see if new cells are populating the Playfield
For 15 Puzzle to work (later) the cells have to be touching horizontally and vertically but not diagonally. To achieve this use:
Menu (red halo) > layout > table layout > change cell inset (tricky since there are so many settings available)
To tidy up afterwards use Playfield > collections > removeAll

Now it's time to increment the numbers on the cells
Open the Text Viewer and drag in Text's numericValue by the assignment handle
Open the cell Viewer, drag out cell's counter and replace Text's with it (see diagram)
Alter this line of code to increase the numericValue by one

I think because cell counter is playing a dual role, first making a Player copy and then being a text to increment the number then it's essential to add in
cell's counter <-- Text as the third line of the script. Here's how it looks now:
Run the procedure to create a 15 Puzzle grid!

To shuffle the cells use
Playfield > collections > shuffleContents

After thought: It would look better keeping the border a different colour

Project available: 15 Puzzle Auto

visually manipulating collections in etoys' Playfields

Markus Gaelli has a 15 Puzzle etoys demo program at his emergent site (excellent site for etoys projects)

Before getting onto coding the puzzle I became quite absorbed about the potential of etoy Playfields. The puzzle consists of 16 little Playfields (which in turn are containers for their own "text" numbers) inside a big Playfield.

What I see in Playfields is the opportunity to manipulate collections visually which I haven't seen in any other program. eg. Game Maker doesn't represent for loops visually and it is hard to teach them to students, in my experience.

I was also intrigued by the notion that Smalltalk adopted "collection based programming as a central tenet" and "that modern functional programming languages such as ML and Haskell have followed this lead". The whole approach is not based on looping constructs but on creating a new collection containing the desired elements (Squeak by Example, p. 195). I'm unsure about how much of this approach can be demonstrated in etoys - but it does suggest a different sort of way of teaching collection manipulation that may be more accessible to many learners

This post is just getting started with how to work with collections in Playfields.

The screenshot above is a collection of Playfields (which contain text numbers) contained within a larger Playfield. The resultant collections category in the larger Playfield's Viewer looks like this:

This opens the door to visually manipulate quite a few things:

count: number of objects that the Playfield contains
cursor: the currently selected object, in this case 9 (the cursor can be visible or invisible)
firstElement: I have auto-line-layout switched on so the objects are layed out neatly with the first object in the top left hand corner
include at cursor | dot: This adds a new object to the Playfield at the cursor. You need to replace the default dot with the object you want to add.
include: dot: Adds a new object at the end of the other objects (replace dot with the object you want to add)
numberAtCursor: ?? not sure what this is for
playerAtCursor: The object currently at the cursor
removeAll: remove all objects from the Playfield
shuffleContents: shuffle the objects in the Playfield
stringContents: displays a linear text representation of the Playfield contents

I've written a program which automatically populates a Playfield with the elements of the 15 Puzzle. I'll blog about that separately.

Quanta's OLPC production line

Quanta's OLPC production line. Larger view.

"Reaching Mass Production is no small task" - The Weekly Squeak

turtle graphics in etoys: possible but not elegant

You can create a parameter (but only one per procedure) and you can't rename them! So write a first procedure to setup your parameter:

Then create a number variable and create a second procedure to increment your parameter value, as shown. You initialise your number values from the object's Viewer.

The etoys version from the squeakland site doesn't have a repeat command. But Pierre-André Dreyfuss pointed out that you can write your own. Also the repeat command has been added to the OLPC etoys version

Project available:

how to make a "text" counter in etoys

I need a counter for a larger project. I needed help to do it (thanks Paul) so thought I should pass on the technique.

Goal: By clicking on a shape a counter increments

This is for making a large counter, which displays in a specialised text player. Another (easier) way would involve using a detailed watcher but that only has a small display. This method involves learning something about setting variables and using Text so it is has broader application.

Drag a "Text" out of the Supplies flap
Have a look in the Viewer, it has a Text's numeric value tile in the basic category. Click in the value and type a number and that number will appear where the "Text" is

Make a new shape for clicking on. I made a rectangle and coloured it green. I kept the name at the default, "Sketch"

Add a variable to Sketch, I called mine "counter", then change value type to Player. Note that Text types are not available.

So you now have to pass the Sketch counter player variable a text tile. This is how you make a text type.

Make a Sketch script. Then drag Sketch counter by the assignment arrow to the script. The line will read:
Sketch's counter <-- dot Then open the Text viewer. Get it to hand you a "tile representing me" from the menu at the top. Then replace the 'dot' tile with this new 'Text' tile (see diagram)
So, now we have made a counter variable which is of text type!

Make a new Sketch script. I called this script "increment"
Reopen the Text viewer and drag Text's numeric value to the new script by the assignment handle. It will read:
Text's numericValue <-- 0 (just click on the 0.00 and replace it with 0 and the number of decimal places will adjust automatically) Reopen the Sketch Viewer and drag Sketch's counter (not by the assignment arrow) to replace Text's with Sketch's counter (see diagram)
Now modify the code so it reads: Sketch's counter numericValue increase by 1 (see diagram)

You can modify the Events which trigger the code by clicking on the "normal" button:

I changed mine to mouseDown, so I can increment the number by clicking on the green shape which is named Sketch.

Project available: