Ando leyendo..

Dudas sobre usar Velneo

Sé que le doy muchas vueltas a las cosas, pero, me gusta mirar cara al futuro.

A mucha gente, no le importa cambiar de tecnología, o pensar, “ya me calentaré la cabeza en su momento”. Mi defecto, quizás, es, que soy de los que piensan, “no quiero tener que calentarme la cabeza después”.

Llevo meses buscando una tecnología que de verdad me guste, me atraiga, y me apetezca usar para mis proyectos. He “estudiado” Smalltalk, Lazarus, Velneo, Ruby, y una infinidad de cosas más, mirando sus pros, y contras.

Velneo me gusta, bastante, pero le veo unas pegas que, no sé si para mi, justifican sus ventajas.

Una de las pegas es el licenciamiento. No me gusta como quiere licenciar Velneo a su producto. Entre los 2 niveles más bajos, no existen diferencias prácticamente, eso sí, económicamente casi tampoco (gratis y 150€). Pero, me obligan a trabajar contra el servidor de Velneo en una nube Amazon, y además, la nueva versión, V7, está en BETA. Promete, promete mucho, pero….eso, de momento promete, y pagar por una BETA, que queréis que os diga.

Por otro lado, un problema, que quizás mucha gente no lo vea como tal, pero yo, soy un maniático, es el tema de los datos. Velneo es una BBDD propietaria, y guarda los datos en un formato sólo conocido por ellos. Por lo que, es imposible acceder a los datos desde fuera (así como desde Velneo a otras BBDD). Bueno, imposible no es la palabra, siempre es posible, si pasas por caja, y así obtienes el plugin para ODBC. Ésto, para muchos clientes que les gusta trabajr con aplicaciones externas sobre sus datos, puede ser una pega importante.

Por último (creo), es otra manía mía. Cuando programo en Lazarus, y por ejemplo, necesito parsear un archivo, y encuentro un bug en alguna función “interna”, puedo localizarlo y solucionarlo, si tengo los conocimientos, o reportarlo si no. Y en pocos días (a veces incluso horas, o minutos), alguien ofrece un FIX al problema. En Velneo, en lo que todo se hace de manera visual, no sabes realmente qué está haciendo. Si tienes un problema, realmente, primero debes investigar si es culpa tuya, y si no lo es, lo reportas, pero no estará resuelto hasta la próxima revisión (cada X meses). Además, por supuesto, si necesito ofrecer una interfaz web, tengo que pasar de nuevo por caja, y comprar el módulo para web. A todo ésto, hay que sumar, que si no contratas los “servicios” (el mantenimiento, vamos), no puedes acceder a las revisiones “menores” (7.2, 7.3, etc..).

Todos estos calentamientos de cabeza, son, porque pienso en el futuro (y también porque tampoco es que me corra demasiad prisa empezar ya :D ). Mis aplicaciones, puede que crezcan, requieran de un mantenimiento, modificaciones, etc… Tener que cambiar de tecnología, por una u otra razón, puede ser más costoso que el ahorro en productividad ahora mismo.

Probando Lekhonee

Probando, probando, 1..2..1..2

lekhonee, es una pequeña herramienta de escritorio que permite escribir en un blog wordpress sin tener que ir a la web.

Ésto, obviamente es una prueba, a ver si rula o no.

The post is bought to you by lekhonee v0.4

Programación de alto nivel

Para los desarrolladores, es muy importante exprimir al máximo los tiempos de desarrollo y mantenimiento de sus aplicaciones.

Las librerías/frameworks de terceros, y los lenguajes de última generación, van apareciendo por doquier. Dentro de los lenguajes de última generación, existen ciertos productos, que merecen una especial atención, ya que permiten que el programador preste la mínima atención a las cosas poco importantes, y se pueda centrar en la lógica de negocio del producto.

En esta entrada, me gustaría comentar muy brevemente y por encima algunos de estos productos junto a sus precios (algunos que he probado, y otros, que simplemente me he informado).

Windev/WebDev/Windev Mobile
Descripción
Windev, es una suite de productos de la compañía francesa PCSOFT. Un entorno RAD que te permite generar aplicaciones con una interfaz muy vistosa y multiidioma, podemos definir programación más avanzada programando en su propio lenguaje WLenguaje. La posibilidad de ejecutar las aplicaciones en modo monopuesto o multiusuario es transparente al desarrollador. Este WLenguaje, permite compartir código entre las 3 herramientas. Partiendo del editor de esquemas, puedes crear el análisis de la BBDD, y Windev se encargará de crearlo por tí, conectando controles a éste, bien, en HyperFile (su BBDD propietaria), o cualquiera de las BBDD que permite atacar de manera nativa (como MySql y postgres si no recuerdo mal). Permite generar la aplicación en .NET o Java, para obtener así, aplicaciones multplataforma, aunque, el IDE, funciona sólo en Windows.
WebDev y Windev Mobile, es lo mismo, sólo que para desarrollo Web y para dispositivos móbiles. WebDev permite generar la aplicación a código PHP para poder colgarla en hostings compartidos.

Precios
Cualquiera de ellos cuesta 1650€ por desarrollador, aunque, si te atienes a la licencia competitiva (justificas que usas otra herramienta de la competencia), su precio desciende a 990€. Además, tienen packs si compras más de una herramienta. Por lo que, las 3 con licencia competitiva puede salir por los 1990€. Dispone de versión Express para poder evaluar el producto.

Servoy
Descripción
Servoy es una de las dos herramientas que ando ojeando ahora mismo. Sigue más o menos en la misma línea que Windev. Es un plugin para Eclipse que permite escribir aplicaciones programando lo más mínimo basándonos en una lógica creada en la BBDD. Funciona en cualquier plataforma, y la misma aplicación, sin cambios, que creemos puede funcionar a través de web, SaaS, etc…

Precios
La licencia por desarrollador de Servoy al completo, cuesta $849, un precio más que suculento. La pega que le veo, es, que para aplicaciones de más de un usuario, es necesario comprar licencias de usuarios concurrentes, a $349. Un precio que en mi opinión, lo hace descartable para muchos proyectos pequeños, pero que requieren de más de un usuario concurrente.

Existen otras herramientas que no he podido ojear, y Velneo, que si la he ojeado, pero prefiero reservármelo para una entrada exclusiva, debido a su CAOS en el licenciamiento.

Squeak 3.10.2 + Polymorph + UIThemeXP + NiceFonts

Well, this looks promising to deploy apps for business $user

EDITED:
I forgot to mention, thath, I’m not the creator of UIThemeXP. The creators name is Steve Wirts, and the announcement of this package can be found on Pharo Maillist

El/Mi defecto de Squeak

La verdad, es que algunas veces critico Squeak, pero, creo, nunca he especificado por qué. Realmente, no hay muchos puntos que “odie” de Squeak, pero los pocos que hay, son cosillas que me crispan un poco los nervios, y muchos otros, son simples manías mías. Todo lo aquí escrito son opiniones personales nada más.

Para entenderme mejor, quizás, habría que aclarar, que toda mi vida he desarrollado aplicaciones en Delphi, y todas ellas eran aplicaciones de Gestión, Control de presencia, etc…. Como bien dice mi querido colega, y siempre referenciado amigo Notxor, por las facilidades que Delphi ofrece, puede hacer que cojas malos hábitos, como el no separar la capa de la Vista con la del modelo. De hecho, una frase (citada a mi manera) que me gustó que dijo fué: “Qué hace Delphi en cuanto creas un nuevo proyecto? Plantarte un formulario delante del morro”.

Siempre que he querido estudiar/ojear un nuevo lenguaje, qué es de lo primero que he hecho? buscar un GUI builder. Y es que, estoy obsesionado con el GUI, y aquí, podríamos encontrar mi primer problema con Squeak. La interfaz de Squeak, es perfecta para etoys y aplicaciones educativas, e incluso para entornos en desarrollo, pero, como decía en otra entrada, si a un cliente le presento una aplicación de control de producción, que parece desarrollada con Playdo, me tira el proyecto a la cabeza, y no vale, digamos, la escusa de la mejora en la productividad, o la robustez de la plataforma. Porque para el cliente, sigue siendo plastilina, y él, es quien paga.

Y no, la solución no es usar Seaside, o Aida o SWT para dotar a la aplicación de una interfaz web. Web es para Web, escritorio, es para escritorio. La masificación de Internet nos ha dado muy malos hábitos. Ahora parece que todo debe funcionar a través de internet. Existe la alternativa de wxSqueak, que son bindings para wxWidgets, pero es un proyecto en fase Beta, que creo no avanza demasiado rápido. Está Polymorph, pero sólo son unos pequeños decorados, que si bien lo arreglan, tampoco del todo. También existe la alternativa, que andaba ojeando hace no mucho, que era usar una interfaz xul, pero el framework existente está ligado totalmente a Seaside.

Qué quiero decir con ésto? Nada. Simplemente quería desahogarme. Me encanta Squeak. Un “entorno” que funciona en Windows, Linux, MacOS, Windows Mobile, y unas cuantas plataformas más. Me proporciona portabilidad (abro la imágen con la VM de otro sistema operativo, y todo continúa donde estaba, magia? no, las cosas bien hechas), una comunidad con bastante movimiento, persistencia intrínseca en la imágen o bases de datos orientadas a objetos integradas, un lenguaje (Smalltalk) totalmente de objetos con un “IDE” muy poderoso y con acceso a poder modificar cualquier parte del sistema a placer (pero no tengo conocimientos para hacer los cambios que quiero en el GUI), y cuál es el problema, no me gusta el GUI. Comprenden mi frustración?

Puede que dentro de poco Squeak cambie, o puede que no cambie nunca, o puede que avancen los bindings para widgets nativos, o algún framework para enlazar con XUL o algo similar, pero mientras, sólo puedo “aguantarme, y joderme”

P.D.: Aunque luego aparezcan widgets nativos, seguiré quejándome porque fijo, habrá que crear toda la interfaz a base de picar código :D

Lenguajes de Programación (Parte II)

En mi anterior entrada, comentaba distintas opciones de desarrollo que me planteo usar, y unos pros y contras escritos así a ojo que veo a cada uno. En ésta, intentaré explayarme un poco más, sobre todo, el qué me hace plantearme no usar lo que quiero usar.

Principalmente, me dedico al desarrollo de software de gestión. Para este tipo de proyectos, C, lo veo matar moscas a cañonazos. C podrá ser rápido, con ejecutables pequeños, y un sin fin de bondados que los puristas querrán venderme etc..etc… pero, siendo realistas, para software de gestión, CRUD, ABM, o como quieras llamarlo, es una soberana tontería hacerlo en un lenguaje como C/C++, (a no ser, que sepas bastante C, lo hagas por aprender, o simplemente, es que no conoces otra cosa) existiendo alternativas de alto nivel que te ahorran muchos quebraderos de cabeza.

Como bien decía en uno de los comentarios mi amigo Notxor, no nombré a Java. Java, cumple bastantes por no decir casi todos de los requisitos anteriormente mencionados. Es un lenguaje con el que tengo una relación Amor/Odio. Básicamente, siempre he querido ponerme a hacer cositas en él, pero, por A o por B, siempre he acabado apartándolo de mi vista. Me compré un libro de Java2 hará unos años, que apenas he comenzado a leerlo. Además, al igual que Notxor, siempre me gusta ser el “rarito” que usa ese lenguaje que la gente apenas conoce :)

Muchas veces, me he preguntado - ¿Si no fuese tan cabezón, y usase lenguajes más conocidos, no me ahorraría problemas? -. Por eso, últimamente andaba haciéndole ojitos a Mono. La verdad es que no me desagrada demasiado la idea de ponerme a programar (de nuevo) en “.NET” (con todas esas ventajas que muchos creen han llegado del cielo de la mano de Dios, y llevan existiendo en Delphi eónes, pero eso es otra historia), pero, siempre que pienso en Mono, y comienzo a descargar la plataforma, IDEs etc.. me viene a la cabeza Lazarus/FreePascal, y a la par, no me quito de la cabeza Smalltalk.

Parte de la culpa la tiene Squeak. La verdad es que me gusta mucho la filosofía Smalltalk, su sintaxis, pero, en cambio, odio que todo vaya integrado en una ventana, y por mucho que la gente intente hacer pensar lo contrario,su Look&Feel, lo hacen parecer un juguete.

Que no se me malinterprete, soy un enamorado de Smalltalk, y precisamente, no duro más de 2 días en un lenguaje distinto por eso mismo, pero, a un cliente, no le puedo presentar una aplicación, donde las ventanas parecen hechas de plastilina, y aunque PolyMorph arregla algo, no es una solución final factible.

Sólo hay un lenguaje que me tuvo un pelín más enganchado, (y que seguramente intente retomar para ver la velocidad de la nueva VM), y es Ruby. Quizás por la fuerte influencia de Smalltalk en él. En su momento, lo aparté debido a problemas que tenía para cargar la librería Fox para el GUI, en mi MAC no había narices que funcionase, puede que le eche un vistazo de nuevo.

Volviendo a Smalltalk, es verdad que existen alternativas con widgets nativos para la interfaz. Pero…
cuál de ellas funciona en Win, Mac y OSX? VisualWorks y Squeak.
Apliquemos otro filtro, cuál de ellos me puedo permitir? Squeak

Resumiendo, da igual si Mono, Java, Lazarus/FreePascal, Ruby o lo que exista o lo nuevo que venga…..al final, seguro que acabo programando en smalltalk/Squeak, que es lo único, que sin hacer nada, me funciona en todos los sistemas operativos sin quejas :P

Actualización desde Twiter del 2009-05-18

  • que mala noche he pasado.. buenos días #
  • Probando ScreenFlow….es la releche para hacer screencasts #
  • I just added myself to http://twitr.org Twitter Directory under #smalltalk #developer #programming #
  • If you like web developing in Smalltalk, you can’t forgot to see this: http://bit.ly/HIlpe #
  • Signing up with OnlyWire to promote my blog http://www.onlywire.com #
  • a cenar #
  • el dolor de cabeza que sufro desde el Sábado me está haciendo polvo hoy..me voy al sofá que no puedo más #

Actualización desde Twiter del 2009-05-16

  • mi HD sata 500GB de la oficina ha muerto,después de tirarme un día entero configurando opensuse 11.1 y maquinas virtuale,maldi … #

Actualización desde Twiter del 2009-05-15

  • from openSuse 11.1 with love #

Lenguajes de Programación (Parte I)

Llevo varios días con la mosca detrás de la oreja, en la búsqueda de un lenguaje de programación que cumpla mis necesidades, puesto, tanto unos, como otros, siempre pecan en algún punto. Si bien es verdad, quizás, pueda ser muy exigente, pero realmente, tampoco pido mucho. Bueno, ésto tampoco es nuevo en mi, llevo años buscando el lenguaje donde realmente me encuentre cómodo (cómo cuando trabajaba con Delphi).

Éstos últimos años que he estado apartado de la programación, he estado cacharreando con Smalltalk (Squeak en particular, las demás implementaciones, no están al alcance económico o de requisitos), y me gusta..mucho, pero tiene ciertas pegas que me ponen de los nervios la verdad.

Mis exigencias, son más bien manías personales.

1.- Tanto el entorno de desarrollo, como la aplicación en deploy, debe funcionar tanto en Win, OSX y Linux.
2.- La interfaz debe poder construirse fácilmente. El tiempo no es que me sobre precisamente como para estar codeando botones.
3.- El lenguaje debe ser orientado a objetos y tener acceso “nativo” a acceso de datos relacionales o de objetos.
4.- A poder ser, poder desarrollar tanto aplicaciones de escritorio, como web.
5.- No tener que instalar mil dependencias para cualquier tontería.
6.- y un montonazo más de manías mías….

Digamos, que, entre lo que ando evaluando, se encuentra, Squeak, Lazarus/Freepascal, C# con Mono, Ruby.

La parte “web 2.0″ me la ofrece ASPX con Mono (sin mucha dificultad para encontrar hosting además), y Squeak tiene Aida o Seaside como frameworks web más que interesantes. Lazarus/FreePascal tiene que tirar directamente de CGIs si no recuerdo mal, y Ruby, como no, tiene Rails.

Por otro lado, Squeak es un entorno completo que cubre todo el ciclo de edición/compilación/ejecución, totalmente orientado a objetos, y con unas herramientas muy potentes. Pero precisamente, su interfaz no es muy amigable al usuario “normal”, no es “multiventana” y es algo incómodo con una alta curva de aprendizaje. Freepascal tiene el potentísimo Lazarus que genera aplicaciones nativas del sistema operativo, y con el Look&Feel propio del sistema. Mono, que apenas he podido mirar mucho, tiene Monodevelop. Para el GUI, Monodevelop, tiene un GUI designer que no funciona en MAC todavía, o bien, se puede cargar la interfaz partiendo de archivos xml generados por Glade. Por el lado Ruby, supongo que dependería, del binding que usase. Me atrae FoxGUI por su sencillez, pero recuerdo haber tenido problemas para hacerlo funcionar en Mac, además, que prepararme un entorno de desarrollo en OSX fué un “dolor”.

En el lado de las bases de datos, es otro mundo. Cualquier lenguaje me va a permitir acceder a cualquier BBDD más o menos. Squeak por ejemplo, tiene acceso nativo a MySql y PostgresSQL, pero su fuerte, aparte de poder usar la propia imágen (y poder olvidarme de la persistencia), son las OODB como Magma o Gemstone, o la librería de acceso a GOODS.

Squeak me permite poder ejecutar una imágen, “tal cual”, en Windows, Linux y Mac, simplemente ejecutándola con su Vm correspondiente (que ocupa muy poco). Lazarus tendría que compilar para cada plataforma, aunque supuestamente sin hacer cambios en el código, y teóricamente, el ejecutable generado por Mono-OSX, correría en Mono-Win por ejemplo sin problemas.

A nivel de tamaño de las aplicaciones, por mucho Shrink que se le haga a una imágen, no bajaría de unos 15MB aproximadamente para la más mínima tontería. Pero prácticamente con Ruby o Mono, dependo de tener instalados las máquinas virtuales de cada uno. En linux, suele ser común tenerlo, pero no en Windows.

La opción que más me atrae, desde hace años es Squeak/Smalltalk, el único smalltalk opensource realmente funcional. Existen otros smalltalk, que cubren las carencias que les veo a Squeak, pero, VisualWorks no entra en nuestro/mi presupuesto, Smalltalk/X o Dolphin por ejemplo, no funcionan en Mac el primero, y ni en Mac ni Linux el segundo (no me valen los experimentos con Wine porque no puedo fiarme de otra aplicación de terceros para que funcionen las mías).

Luego seguiré comentando más cosillas, que tengo una reunión.