java..python..eclipse..and whatever else interests me.

Friday, April 28, 2006

Dashtime Notes - Constructivist Learning, Logo, Papert, DOM->Eclipse API's, SynchroEdit, DBC Use case

Jeff Winkler, winkler1@gmail.com
Ward Cunningham


Uses jabberwocky delimiters - easily embedded on blog.
Idea - google Blog search RSS feed for new scripts.. (buggy? didn't find this)

Constructivist Learning / Interactive Shell

The person writing a script has to interact with objects in a safe environment. It's a conversation between the user - exploring, understanding the API's, and the objects and API's of the system. The goal is for the user to learn the objects by exploration...
 The tighter the feedback loop the better. An interactive command line where Javascript code can be entered is the best tool for. See this showmedo.

Ideally, there would be an interactive Rhino shell.

Logo, Seymour Papert, Hard Fun

Before the call, I was reading up on Seymour Papert, after playing with RUR-PLE, a python learning environment.  I had playing with Graforth as a kid - and it was based on Logo. What makes these learning environments succesful?  Hard Fun, and this, seem to articulate it best:

1 What is Logo?

Logo is a unique piece of software. In the purest sense, Logo is a programming language; it is a full-featured computer language derived from LISP, the language of artificial intelligence. More important, however, Logo is a language for learning. It is the right tool to teach the process of learning and thinking. Logo provides an environment where students assume the role of teacher. As a teacher, they must:

  • understand the knowledge to be taught
  • plan an approach to impart this knowledge
  • break the knowledge into small, understandable chunks
  • know how to clearly communicate the knowledge
  • establish this new knowledge as the foundation for future learning
  • be aware of and build on knowledge that the learner already has
  • be receptive to exploring new ideas as they appear
  • respond to the learner's (computer's) misunderstandings and errors

.. Designed at MIT as a language for learning, Logo is by its nature:

friendly Logo is easily grasped; we can relate to the turtle and use it as an object to think with.
extensible Logo can be taught new commands and other commands can be built thereon.
forgiving Logo offers immediate feedback through helpful and informative messages.
flexible Logo is as useful with preschoolers as it is with students of higher mathematics.
powerful Logo is a programming language, providing all the tools needed to create programs of any degree of sophistication.

Transitioning from DOM->Eclipse API's

How does a person using a DOM understand what's going on under the covers, with the underlying API's?
Ward suggested using debugger to trace into the code.

Shared document editing - shared artifacts

Though we had a great, rambling conversation, we didn't have easy tools to take notes.  Though DashTime is a "virtual place" - there's no there, there.  I didn't have an IRC client, and it would be a pain to download.  I was jonesing for a collaborative shared text space to take notes. An IRC applet would ease the transition; something like SubEthaEdit would be better, be cross-platform and web-based. SynchroEdit looks the part:

SynchroEdit is a browser-based simultaneous multiuser editor, a form of same-time, different-place groupware. It allows multiple users to edit a single web-based document at the same time, and it continuously synchronizes all changes so that users always have the same version.

SynchroEdit's main editor is fully WYSIWYG, dynamically displaying bolds, italics, underlines, strikethroughs, with various justifications, indents and listing styles as an author inputs them. SynchroEdit also supports a simple, text-only editor for more basic documents. To clarify the multiuser experience, the editor window clearly depicts every user's changes in a specific color and also marks where each user is currently editing with a colored flag listing the user's name.

My DBC/Requirements use case

This is a low-hanging fruit which delivers value for me, and I would see having other developers in my company use.

Given the method findbook():

Book findBook ( String strTitle )

DBC  suggests that the contract should state, and enforce any preconditions.  In my company, we do:

/** Lookup a book by its title
* @param strTitle the book title. Case-insensitive. !null.
Book findBook ( String strTitle ) {
    Require.notNull ( strTitle, "strTitle");

So, I'd like to write a script to type the "Require.notNull" bit for me. I would do:

  • Double-click on the strTitle variable
  • Invoke my Monkey script (ideally, via hotkey)
  • The new line is created... cursor is left where it is

This entails:

  • Getting selected text
  • Inserting text into the buffer, as though I'd typed it.


Post a Comment

Links to this post:

Create a Link

<< Home