martes, agosto 29, 2006

SWT (Squeak Widgets Toolkit) - Algo para mostrar

Después de unos (pocos (muy pocos)) días de vacaciones, volví al trabajo con más fuerzas y, para probarlo, les muestro en que estado está el desarrollo del LiveWiki que prometí hacer.

Usando el JS2JS, ahora estoy desarrollando un juego de widgets para los navegadores de Internet. Esta primera versión es muy simple, pero ya tiene lo suficiente para ver la idea completa: Se escribe código Smalltalk y se ejecuta en los navegadores de internet (previa conversión ST > JS). Pueden descargar la versión actual en SqueakSource.

Esto es un método, de la clase SWTExampleApplication, que crea unos simples (y aburridos) textos.

SWTExampleApplication>>createSimpleTexts

| root |

root := self rootWidget.

root addHorizontalRule.
root addWidget: (SWTHeader level: 2 contents: 'Simple texts').
root addWidget: (SWTText contents: 'some plain text. bla, bla, bla, bla, bla.').

root addWidget: (SWTText contents: 'text in red').
root lastWidget
color: S2SColor red.

root addWidget: (SWTText contents: 'text in blue/green').
root lastWidget
color: S2SColor blue;
backgroundColor: S2SColor green.

root addBreak.


El método que está a continuación muestra como es el manejo de eventos. Se ve claramente el uso de los bloques de Smalltalk (que se mapean a funciones de JS):

SWTExampleApplication>>createButtons

| root button |

root := self rootWidget.

root addHorizontalRule.
root addWidget: (SWTHeader level: 2 contents: 'Buttons').
root addWidget: (SWTButton caption: 'inspect event' onClick: [:event | event inspect]).
root addWidget: (SWTButton caption: 'inspect root panel' onClick: [:event | root inspect]).

root addWidget: (button := SWTButton caption: 'button with several event handlers').

button onClick: [:event | event inspect].
button onClick: [:event | self inform: '2st handler: ' , event asString].
button onClick: [:event | self inform: '3rd handler: ' , event asString].

button
color: S2SColor blue;
backgroundColor: S2SColor blue muchLighter.

button onFocus: [:event |
event source
color: S2SColor red;
backgroundColor: S2SColor red muchLighter
].

button onBlur: [:event |
event source
color: S2SColor blue;
backgroundColor: S2SColor blue muchLighter
].




Si algo tiene de interesante esta primera versión es que ya estoy jugando con los widgets "Edit In Place" (Modificar en el Lugar) que usaré para la modificación en vivo del LiveWiki. Este es el método que crea algunos textos "EditInPlace" y, también, crea un botón para crear más textos editables.

SWTExampleApplication>>createEditableTexts

| root |

root := self rootWidget.

root addHorizontalRule.
root addWidget: (SWTHeader level: 2 contents: 'Edit-In-Place texts').

root addWidget: (SWTButton caption: 'add a new edit-in-place text' onClick: [:event | self addNewEditInPlaceText]).
root lastWidget backgroundColor: S2SColor yellow muchLighter.
root addBreak.


root addWidget: (SWTEditInPlaceText contents: 'One edit-in-place text, click on me to edit').
root addBreak.

root addWidget: (SWTEditInPlaceText contents: 'Another edit-in-place text (with background color), double click on me to edit').
root lastWidget
editOnDblClick;
backgroundColor: S2SColor blue muchLighter.
root addBreak.

root addWidget: (SWTEditInPlaceText contents: 'Just another edit-in-place text (with background color), move mouse over me to edit').
root lastWidget
editOnMouseOver;
backgroundColor: S2SColor red muchLighter.
root addBreak.

root addWidget: (SWTEditInPlaceText contents: 'And just another edit-in-place text (with background color), move mouse over me to edit').
root lastWidget
editOnMouseOver;
backgroundColor: S2SColor green muchLighter.
root addBreak.


Para los bagos de siempre (que no quieren instalar nada en sus Squeaks) les subí un HTML 100% autónomo que incluye todo el código Javascript generado desde Smalltalk (126Kb).

Los próximos pasos, en el desarrollo, es integrar los widgets con el Asteroid (Implementación de Comet para Squeak) para poder implementar un Observer Pattern (aka un MVC) distribuido entre el Squeak y los navegadores de Internet.

Proyecto LinEx presentado ante la ONU

Sí, ante la ONU.

Ver más información en el blog de Jesús Rubio.

La computadora se usa mal, ¡pero NO sólo en el aula!

Tuve la suerte de participar, por segunda vez, en uno de los cursos de veranos organizados por la Universidad Internacional de Andalucía. El curso fue organizado de forma impecable por Jordi Adell. Lamenté no poder grabar en video mi intervención, ya que es una de las pocas veces que tengo suficiente tiempo para mostrar la presentación completa.

No se bien porqué, el evento está muy cubierto por periodistas de diferentes medios (Además del curso de 3 horas, dí 3 reportajes a diferentes medios). Uno de los medios era Europa Press. La cobertura de Europa Press fue reproducida por diferentes medios (Extremadura al Día, Evidalia, El Periódico de Extremadura, Diario Granada, etc).

A modo del juego "Teléfono Descompuesto" (o, en España, "Teléfono Roto"), la transcripción de la entrevista no es exacta al 100%.

Cuando yo dije que las computadoras no se están utilizando bien, no me refería solamente al uso que se les da en el aula. Me refería al uso que se les da en general, dentro o fuera del aula. Por supuesto que tampoco dije nada sobre que una región u otra den mejor o peor uso de los ordenadores (tal como sostiene el Periódico de Extremadura , o La Red de Extremadura en el titular de la notas).

Lo que dije es lo que digo siempre en mis charlas: Las computadoras están siendo usadas (mayoritariamente) como si fuese un medio de expresión antiguo. La observación no es exclusiva del uso que se les da, a las computadoras, en el aula ni (todavía mucho menos) sobre el uso que se da por regiones.

Si les interesa conocer más en detalle mi opinión, puede leer el capítulo de introducción del libro "Squeak: Un Mundo para Aprender". La versión HTML del capítulo está en:

martes, agosto 15, 2006

¡La lista de correo de Small-Land ha resucitado!

¡La lista de correo de Small-Land ha resucitado!

No se si es debido al proyecto de la computadora de 100USD, en el cual Argentina es parte. O si es debido al caluroso verano en Europa.

La cuestión es que la lista está teniendo más movimiento... pero, sobre todo, lo importante es que ¡ahora son los profesores/maestros los que hablan!

Les dejo un link a un correo muy interesante publicado hoy: