[View]  [Edit]  [Lock]  [References]  [Attachments]  [History]  [Home]  [Changes]  [Search]  [Help] 

Entrevista a Claudio Campos

Traducccion automatica




A8: Abriendo el juego (titulo tentativo) Borrador en bruto y correcciones

Claudio Campos empezó a desarrollar sistemas profesionalmente en 1989 (a los 17 años), y en forma independiente desde el año 1995. En 1997 hace su primer contacto con Smalltalk (SUGAR), y a partir de ahí comenzó su viaje con la tecnología de objetos, trabajando con Smalltalk en diversos dominios: class library 3D, smalltalk en dispositivos móviles con recursos reducidos, I+D en linguistica computacional y procesamiento semántico, GIS y logística.
(NE. SUGAR "Smalltalk User Group of Argentina" fue una organización que unió a todos los programadores de Smalltalk en Argentina y el primer sitio en Internet relacionada con Smalltalk en español. 1992-1997).


Claudio Campos began to develop professionally in 1989 (at age 17), and independently since 1995. In 1997 he made ​​his first contact with Smalltalk (SUGAR), and from there began a journey with object technology, working with Smalltalk in various domains: class 3D library, smalltalk on mobile devices with reduced resources, R & D in computational linguistics and semantic processing, GIS and logistics.
Note. SUGAR "Smalltalk User Group of Argentina" was an organization that joined all the Smalltalk programmers in Argentina and the first site in Internet related to Smalltalk in Spanish. 1992-1997.




Podrias contarnos un poco tus experiencias en el uso de S8.
Claudio: El uso que yo le he dado a S8 es muy amplio. Quizas te puedo comentar los últimos desarrollos que estoy haciendo en Android (usando A8) Algunos son internos, no son desarrollos que esté haciendo para publicar en U8, sino parte de un proyecto comercial. En realidad no tengo muchas cosas en producción con S8. Lo que estoy haciendo es un trabajo de evaluación de costos de migración/actualizacion de plataforma. Siempre este tipo de tareas llevan tiempo. Tiempos para resolver las cosas nuevas que ocurren, tiempo para probar que los productos subyacentes realmente funcionen como dicen que funcionan. Porque hay cosas que no tienen que ver con Smalltalk sino con la plataforma de ejecución que hay por debajo.
Por ejemplo si hablamos de NodeJS si bien hay cierta estabilidad en el proyecto, existen cambios constantes. Tambien en el caso de HTML5 en el nivel de desktop como de Mobile en algunos momentos había cosas que no eran soportadas en el Mobile y en otros momentos sí. Con lo cual algunas pruebas que uno hace quedan rápidamente invalidadas. Específicamente en el soporte para HTML5. Esto hace que hoy por hoy, en mi caso particular (no sé si esto es positivo o negativo), todo esto está en concepto de evaluación. No en un desarrollo maduro y funcional.


Could you tell us a little about your experiences with S8.
Claudio: The use I have given to S8 is very broad. Maybe I can talk about the latest developments I'm doing in Android (using A8). Some of them are internal, parts of a commercial project. I have not really much in production running S8. Instead, what I am doing is an evaluation of costs associated with platform migration/upgrade. As everyone knows, this kind of tasks take time. Times to find the way to innovations, time to prove that underlying products really work as it is supposed to work. Because there are things that have nothing to do with Smalltalk but with the execution platform that's underneath.
For example if we talk about NodeJS while there is some stability in the project, there are constant changes. Also in case of HTML5 on the desktop level as Mobile at times there were things that were not supported in the Mobile and other times yes. So some tests you are doing are quickly invalidated. Specifically in support for HTML5. This means that today, in my case, all this is by way of assessment. Not in a mature and functional development.


Que problemas de soporte en HTML5 encontras?
Claudio: No veo problemas de soporte en S8 en particular. Hay tiempos que son necesarios dedicar para ver si determinada característica funciona o no. En un momento había comenzado con la proyección de usar PhoneGap para hacer una aplicación hibrida, pero después el PhoneGap comenzó en una fase de cierta inestabilidad. De todas maneras eran proyecciones. Dentro de lo que hago, trato de buscar lo más práctico –teniendo en cuenta que soy unipersonal y no cuento con personal para poner a investigar muchas cosas-. Es decir, trato de buscar lo que me funcione y me de cierta proyección en el tiempo. No puede ser demasiado marginal y debe verse moderno.

What problems you see in HTML5 support?
Claudio: I see no problems in particular stand in S8. There are times that are required to spend to see whether a particular feature works or not. At first time began with future plan of using PhoneGap to make a hybrid application, but after that the PhoneGap library entered in a phase of instability. Anyway were projections. In my activity, I try to search the most practical. I am one-man so I do not have a research staff to delegate work. I try to find what works for me and give me some projection in time. It should not be too much marginal and must look modern.


…más apegado a lo standard.
Claudio: Si… yo siempre fui medio marginal. Hace más de 10 años que vivo de Smalltalk, con lo cual eso ya es ser marginal. Pero para vivir de Smalltalk tampoco me puedo ir al otro extremo. Entonces tengo que evaluar cuidadosamente donde ir para continuar usando Smalltalk.

...more close to standard.
Claudio: Yes ... I was always a kind of marginal. More than 10 years working with Smalltalk, that's marginal. But to live with Smalltalk I can't go to the other end. So I have to evaluate where I'm going to move while continue development with Smalltalk.

Y cuáles eran las problematicas que veías en PhoneGap?
Claudio: Hay cosas que estaban funcionaban en PhoneGap y no funcionan mas… no invertí tiempo en ver cuántas y cuáles cosas no funcionaban mas (fallas en PhoneGap). Probablemente sea trivial lo que hay que tocar. Pero aunque uno está experimentando y evaluando, eso hace que nos genere cierto escozor y que por ahí habría que esperar a que madure un poco más…
Esto siempre es en caso en que sea necesario acceder a funciones nativas de un dispositivo, en multiples plataformas moviles, si estamos hablando de PhoneGap en particular.
Este último tiempo hice varios ciclos ahí. Desarrolle una aplicación de geolocalizacion, es una aplicación que tiene que ver con la actividad de la empresa a la que le estoy desarrollando, que es la misma que fue presentada en Smalltlak 2007 donde se accede a la posición del dispositivo y se hace una geolocalizacion de los lugares a donde las personas se pueden dirigir, que son los puntos de recolección que tiene la empresa.
Esto en su momento había pensado encararlo con PhoneGap y S8, y que funcione en iPhone y Android y después con el tema del PhoneGap… estamos avanzando con una aplicación para Android solamente. Con la posibilidad, que no la descarto en un futuro, de usar PhoneGap para incluir iPhone y resolver cuales son los problemas que hay si esto empieza cobrar más estabilidad a medida que pasa el tiempo. Actualmente tengo todo implementado usando solamente S8 (incluyendo la geolocalizacion).
Después tenemos si una aplicación de uso interno que es en Android pero que dependemos un poco la disponibilidad de dispositivos industriales.
Nota del editor: el framework de Phonegap ha sido actualizado por un soporte completo de Cordova soportando mas dispositivos.


and what were the problematic issues you saw in PhoneGap?
Claudio: There are things that were working with PhoneGap and actually do not work ... I did not invest more time to see how many and which things do not work anymore (broken inside PhoneGap). Probably trivial changes need to be made in code to update. But even if one is experiencing and evaluating, that makes us generate some stinging and leads to think that there would have to wait the PhoneGap API to mature a bit ...
This is always in case you need to access native features of a device, in multiple targets, if we are talking about PhoneGap in particular.
Last time I did several cycles there. I developed a geolocalization application. It is an application that has to do with the activity of the company to which I am developing, which is the same that was presented in Smalltlak 2007 where you can access the device's position and makes a geolocalization of places where people can go, which are the collection points that the company has.
At that time, I had thought to face it with PhoneGap and S8 to have something working on iPhone and Android but later... we are moving forward with an application for Android only. With the possible use of PhoneGap in the future, to include iPhone if it starts gain more stability as time passes. So, actually I implemented all (including geolocation) with S8 alone.
On the other hand, we have an application for internal use which is Android but we depend on the availability of some industrial devices.
Note: the Phonegap framework has been updated to a complete support of Cordova targeting more devices.

Que sería esto?
Claudio: Dispositivos industriales, son dispositivos que están preparados para sobrevivir en ambientes adversos. Tienen carcasas anti-shock, seguridad, etc. No son dispositivos de consumo standard. Por ejemplo en este contexto estamos hablando de gente que va en camiones, se les puede caer el dispositivo, hay polvo, lluvia, etc. Para eso estamos usando dispositivos que actualmente todos vienen con Windows. Ahora están saliendo algunos dispositivos nuevos (Android), y también en su momento habíamos evaluado ponerle protección a los dispositivos comunes pero usando Android.
Esto si ya es una aplicación más grande, no importa que para iPhone no exista. En este caso A8 es perfecto, porque está muy bien hecho, tiene una integración con el SDK de Android con la capa de Java muy buena, por lo menos de las posibilidades que brinda, de lo que se puede hacer. Tiene muy bien resuelto el tema de cómo acceder a recursos locales dentro de la misma aplicación, empaquetados dentro de la misma aplicacion, y a la vez acceder a recursos remotos. Se puede hacer cross domain request, donde se puede acceder a recursos locales como remotos con lo cual es en este caso la aplicación de geolocalizacion lo que tiene es algunos assets que son imágenes, paginas y archivos de S8 que se cargan junto a la instalación de la aplicación y luego hay un servidor Smalltalk que le sirve novedades e información.


What is that?
Claudio: industrial devices are devices that are prepared to survive in harsh environments. They have anti-shock shells, secure access,etc. They are not standard consumption devices. For example in this context we are talking about people who drive trucks, they can drop the device, there is dust, rain, etc.. For that, we actually use Windows devices. Now there are some new devices (Android). At the time we had evaluated put protection to common Android devices.
This is a larger application, no matter if it is not an iPhone application. In this case A8 is perfect, because it is well made, it has a very good integration with the Android SDK and Java layer, at least of the possibilities offered, and what can be done. It is very well resolved how to access local resources within the same application, packaged within the same application and also access remote resources. You can do cross domain request where you can access local and remote resources. In the geolocation application case you have some assets that are images, pages and S8 files that are loaded by the installation of the application. In addition, there is a Smalltalk system that serves news and information.

y la parte del mapa como está resuelta?
Claudio: La Parte del mapa lo hacemos con el Google Maps, es todo HTML5. Esto es una aplicación Web corriendo con S8.

what about map issues?
Claudio: The map is done with the Google Maps, it's all HTML5. This is a web application running S8.

Seria enriquecer el mapa con todos los assets que tenes y la info generada en S8.
Claudio: Claro, la aplicación es local (instalada) y corre en el dispositivo en una WebView. Pero es Web, en el sentido remoto y local. Es decir la aplicación interactúa con un servidor remoto Smalltalk que le sirve pedacitos de aplicación. Desde el servidor estoy bajando información, objetos y también trozos de chunk para actualizar, si hubiera la necesidad de actualizar/customizar la aplicación.
Después tengo otras cosas hechas en otros Smalltalks, pero estoy trabajando en la migración de toda la plataforma de desarrollo. He trabajado a nivel de la integración de servidores NodeJS. Tengo un framework de aplicación desarrollado propio; hace más o menos 8 años que estamos trabajando con ese framework. Es totalmente independiente del dialecto, mi evaluacion de la migración a S8 indica que sería bastante posible. Lo que tengo que definir mejor son cambios de infraestructura en el enfoque. Porque lo que hoy tenemos en las aplicaciones son cosas que funcionan en un server y en el caso de migrar a S8 pueden funcionar en el cliente. Esto te cambia la modalidad de trabajo, es un cambio importante. El server deja de tener tanta importancia.
No estoy con la idea de levantar los frameworks en S8. Estoy con la idea de hacer un ciclo más sobre esos frameworks y reescribirlos sobre S8.


so, it would be enrich the map with all assets and S8 generated info.
Claudio: That's right, it's a local application (installed) running a WebView on the device. But Web, in the local and remote sense. That is, the application interacts with a remote system that serves Smalltalk application pieces. From the server I am accesing information, objects and pieces of chunk to update, if I need to update/customize the application.
On the other hand, I have other things done in other Smalltalks; I'm working on the migration of the entire development platform. I worked at the NodeJS server integration. For 8 years we are working in an own application framework. It is completely dialect independent, so migration to S8 would be quite possible. I have to define some infrastructure changes. The applications we have today are things that work on a server and in case of migrating to S8, it would work on the client. This will change the way of working, is a major change. The server will lose relevance.
It is not my intent to port these frameworks on S8. The idea is doing a cycle on these frameworks, and do a complete rewriting to S8.


…pero algo de eso has migrado, aunque sea partes chicas de desarrollo.
Claudio: Si claro, el modelo del dominio es el mismo. Lo he enganchado en una imagen S8 y he hecho persistencia desde el browser. No tenes ningún problema.

... But some of that has been migrated.
Claudio: Of course, I hooked the domain model in a S8 image and I have done persistence through the browser. It works fine.

…en este punto esto fue una evaluación.
Claudio: Si, es así. Si tuviéramos que formalizarlo en una oración más estructurada diría que mis evaluaciones concretas de pruebas de tomar el modelo del dominio del sistema –que es bastante grande, es un sistema de logística, con planificación, con gestión, etc- son positivas. Este sistema no es el de geolocalizacion. Este último es un utilitario del sistema. Si no me refiero al sistema grande, el sistema de la empresa. Según mi evaluación la migración es perfectamente posible. Exige trabajo porque lo cambiaria para que en vez de correr en el server, corriera en el cliente. Con lo cual hay un trabajo de adaptación. Pero yo no voy a hacer un trabajo de adaptación por arriba, sino que voy a emprender un nuevo ciclo de implementación con este nuevo modelo.
Actualmente nuestras aplicaciones son Web, están trabajando en Smalltalk -me refiero a la aplicación central de la empresa – esta aplicación tiene un modelo de gestión de información muy complejo de cómo se llevan a cabo todas las planificaciones logísticas de la empresa. La aplicación gano un premio en el 2010, salió segunda en un concurso de logística y primera salió en coca-cola, con lo cual la aplicación tiene cierta notoriedad. Tiene gestión optimizada de recursos, con optimización de más de 30 a 40 lugares a visitar dentro de Europa, sabiendo cuales son los trayectos más cortos, coordinación de tiempo, un montón de cosas. Tiene un modulo móvil para registrar toda la información que se realiza fuera de línea.


At this point ... that was an evaluation.
Claudio: Yes, I agree. If we were to formalize a more structured speech I would say my specific tests taking the domain model of the system -which is quite large, is a logistics system, with planning, with management, etc.- are positive. This is not only the geolocalizacion system. The latter is a system utility. I am referring to the mainframe, the system of the company. According to my evaluations is perfectly possible a migration. It will require changes because instead of running on the server, it will run on the client. So there is adaptation work to do. I'm not going to do only adaptive work, I'm going to start a new implementation cycle with this new model.
Currently our applications are Web, working on Smalltalk -I mean the central enterprise application- this application has a model of complex information management of how to carry out all logistical planning of the company. The application won an award in 2010, came second in a logistics competition and first in coke , so the application has some notoriety. It has management optimization tools with optimization over 30-40 places to visit in Europe, knowing which are the shorter trips, coordination of time, a lot of things. It has a mobile module to record all the information offline.



…todo esto esta implementado en Smalltalk Web.
Claudio: Todo eso lo tenemos implementado en Smalltalk y hay una interfaz web y otra desktop. Toda la aplicación es en Smalltalk y la UI es un poco “despreciable” en el sentido en que no influye tanto en la aplicación en si la parte de interface. En realidad tenemos una interface web, una en Windows Mobile, una en Windows desktop, y en este momento tenemos una interface Android, usando siempre la misma aplicación por detrás.

so, all this is implemented in Smalltalk Web.
Claudio: All we have is implemented in Smalltalk and there is a web and a desktop interface. The entire application is Smalltalk and the UI is a bit "negligible" in the sense that application is not influenced by interface part. We actually have a web interface, a Windows Mobile interface, a Windows desktop interface, and now we have an Android interface, always using the same application from behind.

Este nuevo ciclo de implementación sobre S8 que nombras, hacia donde esta dirigido? Es decir, S8 tiene tantas formas de funcionar…
Claudio: S8 es tan amplio como lo es Smalltalk, pero es más amplio todavía porque es moderno.
Por qué me quiero mover a S8?, porque tengo una plataforma de ejecución moderna, más variada, muchos más lugares donde puedo ejecutar mis objetos. Hoy puedo implementar con S8 servidores de 64bit con NodeJS, como también correr una aplicación mobile en Android, en iPhone, o en iPad, extensiones de Chome, o en cualquier browser que soporte HTML5 y ECMAScript5.


This new development cycle on S8 you name, how to direct this? S8 has so many ways to run...
Claudio: S8 is as wide as Smalltalk is, but broader because it is modern. Why I want to move to S8?, because I have a modern execution platform, more varied, more places to run my objects. Today I can implement, with S8, 64bit NodeJS servers, as well as mobile application running on Android, or iPhone, or iPad, as chome extension, or any browser that supports HTML5 and ECMAScript5.

Que ganancia verías en este nuevo ciclo de implementación?
Claudio: Es acceder a plataformas que por el momento no tengo. Para migrar lo migro y punto, es lo mismo. Pero para qué voy a migrar si voy a tener lo mismo? Antes trabajaba con el browser con javascript. Ahora tengo la posibilidad de trabajar en el browser en Smalltalk. Tengo Smalltalk en el servidor y en el browser, con todo lo que implica eso. Para ser más concreto, por ejemplo, si se arma una página web o cualquier interface de usuario, o cualquier prueba que hagas en un browser, te las tenes que arreglar con las herramientas que te provee el browser, con el firebug, etc, herramientas muy limitadas, mas todos las validaciones, llamadas que se hacen al server, usando ajax, etc. Con Smalltalk es totalmente interactivo, tenes un ambiente dentro del browser. Esto da la posibilidad de experimentar cosas que antes no pensaba porque no tenía ganas de gastar tiempo. Si bien javascript es dinámico no me da esa posibilidad que me da Smalltalk, con S8 estoy trabajando de la misma manera (el sistema es homogeneo y moderno, todo sigue siendo unObjeto). De manera subyacente es la misma plataforma de ejecución. S8 nos plantea una apertura de algo que no tenía, por lo rudimentario (bajo nivel) que es el javascript y las herramientas que tiene. Y a nivel de servidor me plantea una apertura a un modelo de ejecución que me parece mucho más moderno que las maquinas virtuales de Smalltalk comunes para servidor.
Si lo queremos poner en términos de ganancia, es que te abre posibilidades, te abre el juego de una manera que antes no era posible.


What is the benefit would you see in this new implementation cycle?
Claudio: Access to new execution environments. The cost of migrating the whole system is the same to other smalltalks. But why should I migrate if I'll have the same? Before I used to work in the browser with javascript. Now I have the opportunity to work in Smalltalk. I have Smalltalk on the server and in the browser, with all implications. To be more specific, if you build web page, or any UI, or even any test you do in a browser, you will have to deal with browser tools, the firebug, etc, very limited tools, in addition to all validations, calls made to the server, using ajax, etc... With Smalltalk it is interactive, you got a full environment in the browser. This gives the opportunity to experience things not previously thought because I did not want to waste my time. While javascript is dynamic it does not give odds that Smalltalk does while you work in the same way. So is the same underlying execution platform (homogeneous and modern, all is anObject). S8 raises an opening of something that previously we did not have, because javascript tools are rudimentary (low level). At server level, raises me an opening to an execution model that, seems to me, much more modern than common Smalltalk virtual machines for server.
If you want to put in terms of gain, it opens up possibilities, it opens the game in a way that was not possible before.


siempre que se habla de migración se habla de costos…
Claudio: Yo nunca migro. Migración es tomar lo que está escrito y cachetearlo un poco para que ande en otro lado. Como Smalltalker uno hace siempre las cosas de nuevo. A veces por cuestiones de compromisos cacheteas algo para que ande pero después lo reescribís.
Con el tiempo arme una capa de aplicación web y a partir de ahí tengo todo independiente del dialecto, con lo cual yo podría poner todo eso en S8 y seguir trabajando de la misma manera, pero… si dejo todo igual me pierdo o dejo de aprovechar todas las posibilidades que me abre S8. Porque pondría todo en el servidor con NodeJS y seguiría trabajando de la misma manera en el browser. Y ahora voy a trabajar de las dos maneras. Con Smalltalk en el servidor y en el cliente. Y si puedo trabajar con Smalltalk en el cliente, puedo conectar dos clientes sin el server en el medio...


whenever we talk about migration, we talk about cost...
Claudio: I never migrate. Migration is to take what is written and slap it a bit to run in elsewhere. As smalltalker, you always do things again. Sometimes commitments force to us to do a raw migration but later, you realize the system evolved.
Over time we build a web application layer independent of dialect, so I could put whole thing in S8 and continue working in the same way, but ... if I work in the same way I lose or leave advantage of all the possibilities that S8 opens. I could put everything on the server with NodeJS and continue to work the same way in the browser. Now I will work both ways. With smalltalk on server and on client. And if I can work with Smalltalk on the client, I can connect two clients without the server in the middle...



En este punto se abre un abanico de posibilidades que nadie se esperaba…
Claudio: Creo que esa es la clave de lo que es interesante resaltar por lo menos, es lo que creo desde mi lugar. Yo soy más activo que reflexivo con estas cosas. Soy más de hacer en vez de teorizar por qué lo hago. En el caso de Smalltalk uno va dejándose llevar en el hacer. Con lo cual mucho de lo que te cuento tiene más que ver con esa percepción que uno tiene de trabajar en smalltalk.

At this point it is opened a range of possibilities than anyone expected...
Claudio: I think that's the key to what is interesting to raise, at least is what I think from my point of view. I am more active than thoughtful about these things. I tend to do, instead of theorizing why I do it. In the case of Smalltalk you go flowing in the doing. You see, all I can tell you has to do with the perception with working in smalltalk.