Blunder Dome Sighting  

Hangout for experimental confirmation and demonstration of software, computing, and networking. The exercises don't always work out. The professor is a bumbler and the laboratory assistant is a skanky dufus.

Click for Blog Feed
Blog Feed

Recent Items
DMware: How About That ODMA64?
VC++ Novice: "Runtime Error!"
Cybersmith: APLN Seattle Meeting with Jim Benson
NWCPP: Herb Sutter - Things Your Programming Langu...
VC++ Novice: What About VC++ 2008 (Orcas) Express ...
Videography: Stumbling Around my Webcam
Cybersmith: How Software Is Built
Cybersmith: Design Stamina and Technical Debt
Cybersmith: Ye Motley Or Maven Be?
Ed Nisley on Software Engineering

This page is powered by Blogger. Isn't yours?

Locations of visitors to this site
visits to Orcmid's Lair pages

The nfoCentrale Blog Conclave
Millennia Antica: The Kiln Sitter's Diary
nfoWorks: Pursuing Harmony
Numbering Peano
Orcmid's Lair
Orcmid's Live Hideout
Prof. von Clueless in the Blunder Dome
Spanner Wingnut's Muddleware Lab (experimental)

nfoCentrale Associated Sites
DMA: The Document Management Alliance
DMware: Document Management Interoperability Exchange
Millennia Antica Pottery
The Miser Project
nfoCentrale: the Anchor Site
nfoWare: Information Processing Technology
nfoWorks: Tools for Document Interoperability
NuovoDoc: Design for Document System Interoperability
ODMA Interoperability Exchange
Orcmid's Lair
TROST: Open-System Trustworthiness



CP4E: Novice Computer Programming and the OLPC XO

One Laptop Per Child: Give 1 Get 1 There's an interesting programming-novice discussion on an F# language discussion forum.  Everyone is pretty clear that someone who gets into programming is going to learn more than one language, and the discussion reduced to which functional language (OCaml, F#, ...) is a good start.   I'm not sure any functional language is an appropriate starting point, but without context on the intention behind learning to program, and the level of computer fluency already, it is difficult to make any sensible recommendation.

With anticipation of two XOen on my mind, I observed that

"For a lower-cost approach [than investing in Visual Studio], you can start with Scheme or use the languages of the One Laptop per Child initiative: Python and Squeak.  Learning to develop for the OLPC machine, the XO, might be a great overall learning path too.  It is perhaps the closest we can get you to the time when enthusiasts and today's seasoned developers teethed on microcomputer systems like the Apple IIe, Heathkits, and other early personal machines."

Guido van Rossum's CP4E Vision

As I dug around to see what is available on the XO (plus all of the software from many sources that can be added to these little Linux machines), I was reminded of Guido van Rossum's Computer Programming for Everybody (CP4E) project.  From van Rossum's project proposal, I find these aspects to be particularly interesting:

"We compare mass ability to read and write software with mass literacy, and predict equally pervasive changes to society. Hardware is now sufficiently fast and cheap to make mass computer education possible: the next big change will happen when most computer users have the knowledge and power to create and modify software.

"The open source movement claims that peer review of software by thousands can greatly improve the quality of software. The success of Linux shows the value of this claim. We believe that the next step, having millions (or billions) of programmers, will cause a change of a different quality--the abundant availability of personalized software.

"The tools needed for this new way to look at programming will be different from the tools currently available to professional programmers. We intend to greatly improve both the training material and the development tools available. For example, non-professional programmers should not have to fear that a small mistake might destroy their work or render their computer unusable. They also need better tools to help them understand the structure of a program, whether explicit or implied in the source code."

There is emphasis on curricula and also developing integrated development environments (IDEs) that facilitate CP4E. 

The OLPC Way - Play and Exploration as CP4E?

I am not so clear about the correspondence with literacy, and I'm not so unquestioning about the many eyes on open source and the benefit of billions of programmers.  Computing may well be important, I'm not so clear about programming.  How community develops also remains to be seen.

My own view of CP4E is that programming and software development be made accessible in a way that can be grasped by hands-on exploration and projects to the depth that it matters for the interests of the individual computer user.  Programming should not be required, but resources and information for it should be at hand in a way that allows progressive discovery in line with the user's immediate interests.  Likewise, there should be available code and implementations to inspect and learn from, along with toolcraft guidance.

In that regard, the One Laptop Per Child program's XO computer may be perfectly positioned.  It is designed to have the computer be a student's instrument in activities where computing and communication are part of the appeal.  It is not foremost a device for learning programming.  Yet creation and exchange of computing artifacts that might involve programming is encouraged.  So here is a device that, even with the Get 1 Give 1 Get 1 arrangement, provides a complete personal computer for far less than the full price of Visual Studio 2005 Professional (a false comparison but an interesting contrast).  The OLPC perspective resonates with my attitude for CP4E:

"XO is built from free and open-source software. Our commitment to software freedom gives children the opportunity to use their laptops on their own terms. While we do not expect every child to become a programmer, we do not want any ceiling imposed on those children who choose to modify their machines. We are using open-document formats for much the same reason: transparency is empowering. The children—and their teachers—will have the freedom to reshape, reinvent, and reapply their software, hardware, and content."

Discounting the sloganeering, it is easy to align with the clear objectives of how a commons is valuable to this undertaking.  The OLPC materials and development projects have a clearly-expressed commitment to community evolution of the original software, perhaps in many directions, persisting long after the original OLPC computer is history. 

Some Instruments of OLPC Programming and Software Fluency

Without fussing about what is the ideal way to learn programming, I notice that the XO comes with the following installed:

There is also music software and a variety of utilities. 

There is heavy emphasis on dynamic/scripting languages (partly for storage economy), but of course one can perform customary programming after obtaining appropriate open-source tools.  Mono should work, and other languages like F# should be usable via Mono providing a cross-over from scripted to compiled languages.  In developing for the XO, it is possible to develop applications in C as well as Python, with the second recommended where possible.

There's also interesting social support and the fostering of a community involving XO tools, including those for programming:

  • Ad hoc collaboration using the mesh among nearby XOen, with illustration of several activities, including examples of programming
  • There is public information and a wiki on the overall project and where contributors can participate

For cybersmith development of new kinds of applications for the XO platform itself, there are emulators of the XO that run on PCs.  It is possible to develop with just the Sugar development environment.  But for the novice enthusiast and budding programmer, I think the best experience is by obtaining the real deal and using it like any student can.  You can be part of this:

"Although we believe you will love your XO laptop, you should understand that it is not a commercially available product and, if you want help using it, you will have to seek it from friends, family, and bloggers. One goal of the G1G1 initiative is to create an informal network of XO laptop users in the developed world, who will provide feedback about the utility of the XO laptop as an educational tool for children, participate in the worldwide effort to create open-source educational applications for the XO laptop, and serve as a resource for those in the developing world who seek to optimize the value of the XO laptop as an educational tool. A fee based tech support service will be available to all who desire it. We urge participants in the G1G1 initiative to think of themselves as members of an international educational movement rather than as 'customers.' "

[update 2007-11-17: I wanted to repair two clumsy spots and I ended up adding more, including a declaration of my personal discomfort with thoughtless parroting of open-source slogans.  I am completely aligned with the objectives while uncomfortable with the confusion of means and ends that seem to over-promise (and confuse) the choice of an open-source license with the spirit of community projects and peer production.  Also, I need to write at my keyboard, 100 times, it is "Give 1 Get 1," not the reverse.]

Construction Structure (Hard Hat Area) You are navigating Orcmid's Lair.

template created 2004-06-17-20:01 -0700 (pdt) by orcmid
$$Author: Orcmid $
$$Date: 10-04-30 22:33 $
$$Revision: 21 $