May 15 2008

Seaside book

Last weekend I installed LaTeX and began to write my first book.

It is a book about Seaside.

I want to include, at least, the following topics:

  • Seaside basics
  • Advanced Seaside
  • Ajax
  • Announcements
  • Persistance (GLORP, Magma, GemStone/S)
  • Scalability (load balancing, static content caching)
  • Deployment (big iron, VPS, Amazon EC2)
  • Unit Testing
  • Maintenance (monitoring, updating)
  • Magritte (just a little)
  • Data export (JSON/REXX)

I am thinking of creating a full application, from design to deployment, following an agile process (write a test, write the code, you know). Of course it will be hard as I’m by no means an expert, but in writing the book I will learn a lot more about Seaside, and at the same time this knowledge will be preserved in print.

I have read An introduction to Seaside by Michael Perscheid et al and I know about the book that Stéphane Ducasse and others are writing. Also I have read all I could from Ramon Leon’s blog, Lukas Renggli’s blog and the mailing lists. In spite of that I think that something else is necessary. This is my little contribution to the Seaside documentation.

I don’t have idea how long this will take as I have never written a book (except my thesis). I have just finished the first chapter, but I hope that as the time pass I will write faster.

Wish me luck!


Mar 27 2008

Alan Kay’s quotes 3

From Wikipedia:

“… greatest single programming language ever designed. (About Lisp programming language)”


Mar 27 2008

Alan Kay’s quotes 2

From Wikiquote:

“The real romance is out ahead and yet to come. The computer revolution hasn’t started yet. Don’t be misled by the enormous flow of money into bad defacto standards for unsophisticated buyers using poor adaptations of incomplete ideas.”


Mar 27 2008

Alan Kay’s quotes

From Wikiquote:

“Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves.”


Jan 3 2008

Seaside menus

Finally, after long hours (days and more exactly months) searching the archives, the Smalltalk/Seaside blogosphere and the web, I had my Aha! moment with Seaside.

I was trying to grasp the Seaside way to do menus. First I was using call:/answer to make the links in the menu work. So in my menu I had something like:


renderContentOn: html
html anchor on: #newContact of: self.
html space.
html anchor on: #contactList of: self.

newContact
| contact |
contact :=  self call: (ContactEditor contact: Contact new)
contact ifNotNil: [ContactDatabase contacts add: contact].

contactList
self call: (ContactList contacts: ContactDatabase contacts)

This would show a pair of links: ‘New Contact’ for adding a new Contact to the database and ‘Contact List’ for listing the current contents of your database.

What is the problem with this code? It worked, sort of. See: you want to add a contact, so you press the ‘New contact’ link and a ContactEditor call: is invoked. A contact form is presented for you to fill it. A pair of buttons (Save, Cancel) are shown too. The Save button submits the form and adds the Contact to the Contacts database. The cancel button, well, just cancels the process. But, as the menu is always visible, you could as well click the ‘New contact’ link instead of pressing the Cancel button in order to get a new blank Contact form.
What it is wrong with this? You are doing a new call: to a new ContactEditor and this call: is stacked in Seaside. The same happens if you click 5 or 4000 times the ‘New Contact’ link.
If, after clicking the ‘New contact’ many times, you fill the form and press the Save button, the last ContactEditor invoked answers back the Contact and it’s saved to the database. But Seaside, noting that a call: was just answered, returns the application to the point where the call: was made. That is, to the 4th or 3999th call: stored in the stack. That is not the way you want the application to behave.
In a classical menu, for example in WordPress when I click the ‘Write a new post’ link many times, it is the same as clicking it only once. You don’t have a stack growing and growing endless.

How to solve it?

› Continue reading


Dec 26 2007

Test Driven Development

I was searching the web for Smalltalk and Agile practices blogs when I found this clever explanation of TDD.


Nov 21 2007

Fin de semana largo

Pues este fin de semana fue largo. Pedí un día de vacaciones el viernes y, junto con el lunes 19 que oficialmente no se trabajó, hicieron 4 días de “descanso” muy merecidos aunque poco aprovechados. Poco aprovechados en el sentido de descansar porque estuvieron muy ajetreados.

Para empezar el viernes nos levantamos temprano (más temprano de lo que me levanto para trabajar ;) ) para ir a sacar los pasaportes. Imposible, filas enormes de gente. Mejor nos esperamos hasta que pasen las vacaciones de diciembre.

De ahí nos fuimos a hacer el trámite de baja de las placas del auto. Terminamos a la hora de la comida y nos regresamos a la casa. Nos preparamos para irnos al concierto de Soda Stereo y salimos corriendo para Cd. Satelite a dejar a Tristán con sus abuelos.

Antes de salir de la casa, y justo 4 escalones antes de que se acabaran las escaleras para llegar al estacionamiento del edificio, resbale con el piso mojado (estaban limpiando las escaleras) y caí junto con Tristán. Sin siquiera meter las manos y solamente pensando en sostener a Tristán para que no saliera volando, bajé 3 escalones rebotando con el trasero (ouch, cómo duele), soltando la bolsa de juguetes de Tristán. En ese momento, mientras caía, en fracciones de segundo, pensé, “no, esto no está pasando”; “sostén a Tristán, suelta todo lo demás”; “abrázalo fuerte, no importa que caigas con la espalda contra el escalón”. También imaginé una imagen mia tirado en el piso, con la espalda rota, con Tristán encima de mi a salvo. Ni siquiera me preocupé por mi, con tal que no le pasara nada a él. Es increíble todo lo que pasa por tu cabeza en un momento. En ese momento no sentí el dolor de la caída. Afortunadamente caí con una nacha y no con el coxis. Tristán al principio no lloró, sólo tenía cara de asustado, supongo que por la sensación de caída libre, pero después, cuando comencé a preguntarle, asustado y temblando, si no le había pasado nada, si no le dolía nada, soltó un grito y comenzó a llorar. Cuando voltee vi que estaban ahí un vecino y la portera ayudándome a levantar los juguetes de Tristán y preguntándome si estábamos bien. Unos momentos después llegó Aline con las demás cosas que íbamos a subir al coche y le conté lo sucedido y se asustó. En fín. Tristán está bien, no le pasó nada (al menos aparentemente), a mi me duele la nacha y todo mundo me dijo que vaya al ortopedista para que me saquen una radiografía por si las dudas. Prometí que lo haría.

Después de eso nos fuimos a Cd. Satelite y comenzó la aventura. Así terminó el viernes.

El sábado fuimos a casa de Vicky, una amiga de Aline que va a tener un bebé en febrero. En la noche nos dormimos temprano porque ya estábamos cansados.

El domingo fue mi día.

Ahora si, por fin, re-inicié  mi proyecto. En Squeak Smalltalk, usando Seaside. :D   Un día de trabájo y el proyecto avanzó muchísimo, casi el 70% de la funcionalidad. Faltan los detalles, el diseño web. Mejorar la usability. Espero que el fín de semana pueda terminarlo para que Aline comience a usarlo y me dé feedback y lo vayamos modificando adecuadamente. Después de un par de días de que lo use Aline y no haya mayores dificultades, lo subiré al web y comenzaré a asignar cuentas para beta testers. Talina y Gabriel ya están apuntados y esperando. :D

En fin. Estoy muy emocionado por que al fin pude iniciarlo. Eso era lo más difícil. Ahora a terminarlo.

Demasiadas aventuras para un solo fin de semana.


Oct 19 2007

Tutoría de Seaside 2.8

Via James Robertson y The Weekly Squeak, una tutoría sobre Seaside anunciada por Michael Perscheid en la lista de correo de Seaside.

Lo mejor de todo es que la tutoría misma está hecha en Seaside, revisen las URLs.


Oct 19 2007

Reuniones

Hacía tiempo que no veía a LowGmaN.

Ayer nos fuimos a tomar un café y a platicar un par de horas. Después de transmitirnos los chismes de rigor y las actualizaciones de información familiar y laboral, llegamos a la parte que más disfruto de conversar con él. Es el único, además de Aline, con el que puedo explayarme y hablar libremente sobre mis proyectos con Linux, Software Libre y las tecnologías en las que ando inmerso.

Es absolutamente motivador contarle lo que he aprendido y sobre todo ver la manera en que se entusiasma conmigo. Siempre terminamos planeando como vamos a llevar a cabo los planes, él la parte comercial y del negocio y yo la parte técnica. A veces pienso que lo aburro con tanta cháchara pero nunca se queja. Es más, hasta se emociona (o eso creo yo :D ).

El caso es que ayer estuvimos platicando de Smalltalk, Seaside, bases de datos orientadas a objetos, test driven development, Ruby on Rails y las (cada vez más evidentes) carencias de los frameworks en Java.

Es el único que ha aceptado el riesgo de usar las nuevas tecnologías que le propongo. Hace más de un año, cuando Ruby on Rails era más desconocido (¿más aún?) que hoy, me dijo, has mi aplicación en lo que quieras, yo confío en ti. Woa, pues le propuse hacerlo en Ruby on Rails y aceptó. Finalmente se puso en producción y todos felices. Fue el primer proyecto grande que hice con RoR. Todo lo demás que había hecho eran proyectos personales de prueba y de aprendizaje.

En fín. Volviendo al punto, siempre es agradable ver que alguien está dispuesto a apostarle a lo nuevo, de ver el potencial de la nueva tecnología y usarla.

Si no fuera por personas como él aún estaríamos usando COBOL para hacer proyectos, aunque en esta época deberíamos decir: aún estaríamos usando Java para hacer proyectos.


Sep 18 2007

Smalltalk/Squeak

El 14 de septiembre se publicó el libro Squeak by Example. Hoy lo terminé. Es fantástico. El lenguaje es impresionante. El modelo teórico en el que está basado es absolutamente asombroso Todo es un objeto. ¡Todo! Y si creías que sabías programación orientada a objetos porque programabas en Java, C++ o C#, déjame romper tu burbuja. No es así. Lo digo por experiencia propia. Me he dado cuenta de que he vivido engañado.

› Continue reading