Archivo de Etiquetas de 'java'

Migración a Rails: certificacionpm

Hace un par de semanas pusimos online la versión 2.0 de certificacionpm, un simulador de exámenes para sacarse la certificación de Project Management Professional del PMI® que hemos desarrollado para con la empresa Lanarvi.

No lo publico aquí para hacerle publicidad (no creo que, por lo general, el público de este blog sea público objetivo de certificacionpm) pero puesto que la versión anterior estaba desarrollada en Java (JSF + JDO) y esta lo está en Rails, dos personas me han pedido que de forma poco sectarista explique las diferencias/mejoras/razones. Y lo voy a intentar.

Primero, a modo de disclaimer, decir que esta comparación es un tanto injusta, puesto que una migración siempre es más sencilla que hacer algo desde cero, puesto que ya llevas mucho aprendido. Aún así, una migración siempre hace también que acabes metiendo cosas nuevas. También podría ser que con otras herramientas Java el resultado hubiera sido distinto o ahora no hemos tenido que dedicarle excesivo tiempo a cuestiones de diseño/CSS. Digo esto porque no es tan sencillo como partir desde cero con el mismo conocimiento y realizar la aplicación. He intentado tener esto en cuenta y reducirlo a la parte de la lógica de la aplicación.

Diría que el tiempo empleado en el desarrollo en los aspectos comparables en la versión Rails ha sido aproximadamente el 40% del empleado en Java, quizás un poco menos. Las razones principalmente las siguientes:

  • Active Record: nunca trabajar con la base de datos fué taaaaaaaan fácil. En serio, es para probarlo. Me quedo con la espinita de JPA, pero ni SpringDAO, ni Hibernate, ni JDO lo hacen tan sencillo.
  • CSV: el soporte que trae Rails de serie para tratar ficheros CSV es increible. En Lanarvi gestionaban inicialmente el banco de preguntas en una Excel gigante, y lo cierto es que lo que con Java era un cierto sufrimiento, con Rails se solucionó en una tarde.
  • Lenguaje no tipado. Mucho tiempo pensé que la compilación y los lenguajes tipados eran necesarios (?) para prevenir errores, que eran una ayuda. Lo cierto es que sobre todo para proyectos pequeños he dejado de creerlo. Tienen un coste que no compensa. El tiempo de compilar, probar, etc. es demasiado alto para el beneficio obtenido en este proyecto.
  • Rails es (o puede ser) un todo. No sólo el framework de desarrollo, sino también el despliegue en remoto (caspistrano), la gestión de actualizaciones de la base de datos (migrations), etc. Reduce el tiempo destinado a estas cosas accesorias.
  • El entorno de desarrollo. Reconozco que mi pobre Powerbook con 1,2GB de memoria ha pasado ya los 3 años, pero ha rejuvenecido un par de años en rendimiento al cambiar Eclipse+Java+Tomcat por Textmate+Ruby+Mongrel.

En todo caso, como nota final. En Lanarvi están contentos, pero os puedo asegurar que lo que menos les importa a ellos es la tecnología, sino simplemente que ahora tienen una mejor aplicación.

Por cierto, que espero que próximamente liberemos el código de la aplicación (que no las preguntas) como software libre. Es bastante genérico y se puede reutilizar para hacer más simuladores. Estamos que lo tiramos XD.

Empiezo a ver algo en Eclipse

Lo tengo que reconocer, y es que al tercer intento (uno incluso publicado), estoy viendo algo en Eclipse y empiezo a sentirme a gusto con él, entendiéndolo más o menos. No quiero decir con esto que sea la herramienta definitiva, pero ha ganado puntos en mi consideración, lo tengo que reconocer.

¿Pero que ha cambiado esta vez respecto a las dos anteriores?. El tiempo, la dedicación. Esta vez lo he podido usar sin la presión de tener que realizar otras cosas, sino con la única intención de aprender a hacer cosas con él. La verdad es que la colección de plugins esta muy bien, hay poca cosa que eche de menos respecto a Netbeans, que es lo que más he usado en muchos años.

Lo que menos me gusta es que me parece que en Mac OS X sigue estando por debajo respecto a Windows en algunas cuestiones, pero bueno, nada vital a día de hoy. Eso y que quizás es menos usable (entendido como poco natural) que Netbeans, pero bueno, es cuestión de acostumbrarse.

Tiene que haber algo mejor

Hace unas fechas publicamos un par de anuncios buscando gente para incorporarla a la empresa. El elegido fué Infoempleo (las razones de la elección no son importantes), pero hubiese dado lo mismo con Infojobs. El resultado no ha hecho más que confirmarme la idea que tengo de estos dos portales (y otros similares) desde hace años. Espero no herir sensibilidades al expresarla, mis disculpas por adelantado.


Y es que todo el mundo tiene derecho a solicitar un puesto de trabajo, a tener ilusión, a muchísimas cosas. Y a determinadas empresas, supongo que a la mayoría de las más comentadas en Trabajo Basura les será un recurso muy útil, encuentran lo que buscan a un precio muy asequible. Y para las empresas que gestionan estos portales, teniendo a esos clientes contentos, que a fin de cuentas son los que les hacen ganar dinero por la cantidad de ofertas que publican al mes. Hasta ahí no me meto. Bien para todos.

Pero llegamos a empresas tipo Linking. O algo más grandes, pero de un tamaño suficiente para que cada trabajador sea importante (si, la teoría dice que eso debería ser para todos, lástima de la práctica que demuestra que no). No sé, hasta 20 trabajadores, 30?. Me da igual el número. Yo publico una oferta y me llegan… da igual, 25 CVs, por decir un número. El problema es que de esos 25 CVs el 90% ni siquiera han leído la oferta (y eso que yo las hago sencillitas), porque obviamente no son lo que necesito. Dicho esto con todos mis respetos y apreciando su interés y ganas. Y esto que parece algo tonto, evaluar unos CVs, resulta que para mi es tiempo, y mi tiempo es dinero (para el candidato normalmente es tiempo, pero no dinero).


Nadie me obliga, esta claro, pero la sensación general que he obtenido con personas en mi situación es siempre la misma. Y es que debería haber algo mejor, no?. Realmente la única forma que a mi me ha funcionado hasta hoy es la de los contactos y las relaciones personales, algo que también tiene muchos problemas (lamentablemente ni conoces a todo el mundo interesante, ni las relaciones personales hacen esto recomendable siempre, por no hablar de mi post de ayer), pero no puedo evitar darle vueltas a este asunto de vez en cuando.

Dump de SQLServer

No me preguntéis por qué, pero resulta que las versiones un poco antiguas de SQL Server no traen “de serie” una forma de hacer el dump de una base de datos como sentencias insert de SQL. Tiene millones de wizards, formatos varios, herramientas de líneas de comando como bcp, pero no tiene un “export as SQL insert” por ninguna parte (que yo haya encontrado, también puedo ser torpe). Esto en sí no debería ser problema, hay opciones de todo tipo como he comentado, hasta que te encuentras que alguien que tiene que recibir la base de datos te pone… ciertas limitaciones.


Buscas por la red… encuentras varias opciones… algún programa simplón, un administrador hecho con ASP.NET, unos cuantos procedimientos almacenados de resultados dispares… hasta que das con SQLServer Dumper. Sencillo, fácil, y que funciona :-D.


Por si a alguno le hace falta.

La forma legal

En algún momento dado querremos empezar a vender nuestros productos, para lo cual necesitaremos una forma legal. A pesar de lo que mucha gente piensa, no es necesario que creemos una empresa para venderlo, tampoco que seamos autónomos, de modo que repasaremos las opciones que tenemos de andar por casa. Debido a las características propias de una Micro-ISV, opciones como la cooperativa o la S.A. (que requiere 60.000 euros de capital social), no las tendremos en cuenta.

Tened en cuanta mientras leéis esto, que yo no soy ni jurista ni asesor, y que la leyes cambian con el espacio tanto como con el tiempo. Una ley vasca del año 2006 no tiene porque ser la misma ni en cantidades ni en obligaciones que una canaría del 2003, ni siquiera que una Valenciana del 2005. Ni un euro cuesta lo mismo en Bilbao que en Cáceres. Tenedlo en cuenta.

La primera de las opciones que tenemos disponible es la de actuar en nuestro propio nombre, como persona, sin ser autónomo, ni empresa, ni nada. Esto tiene varios problemas, a parte del obvio de la imagen, y es que no podremos facturar más de 18.000 Euros sólo podemos hacerlo para cuestiones excepcionales, no como fuente principal de ingresos, y para eso no nos metemos en este lío, ¿no?.

La segunda opción sería hacernos autónomos. Esto tiene un coste de (aproximadamente) 300 euros, entre la cuota de autónomo y una asesoría decente para que nos lleve las cuenta. Esto último no es obligatorio, pero creedme, 100% recomendable. Por el equivalente a dos horas de tu trabajo te quitarán muchas preocupaciones.

Seguimos siendo una persona, por lo que nada nos controla las entradas y salidas de dinero de nuestra cuenta, tenemos libertad. En todo caso, como recomendación, decir que en el tercer mundo, lo primero que enseñan a los emprendedores es a separar el dinero del negocio del personal, de modo que mejor que tengas dos cuentas separadas, y te saques algo parecido a un sueldo cada mes.

Ser autónomo tiene dos problemas principalmente:


  • imagen: queda claro que eres tú sólo. En función de tus clientes, puede no ser aceptable. Además los autónomos tiene más difícil (o imposible) el acceso a determinadas instituciones y ayudas.

  • responsabilidad: en caso de que algo vaya mal, el autónomo responde con su patrimonio. Así de duro :-D.



De modo que pasaremos a considerar la tercera opción: Sociedad Limitada. Para convertirnos en sociedad limitada lo primero que tendremos que hacer es buscar un nombre y solicitarlo en el registro (en bloques de tres). Algo que parece tan tonto no siempre lo es. Linking Paths me salió a la primera (como pa’ no ;-) ), pero conozco casos en los que hicieron falta tres intentos, para acabar con un nombre si gran significado. Una vez hecho esto, redactaremos unos estatutos y listos, a firmar. A todo este proceso nos ayudará nuestra asesoría, de forma que no tendremos que hacer demasiado.

Para constituir la S.L. tendremos que poner un capital social inicial, que tiene que ser de al menos 3006 euros. De estos 3000 euros (o de la cantidad que sea)aproximadamente una tercera parte se irá entre el registro mercantil, el notario y la asesoría, el resto lo podemos usar como queramos (ejem, ejem). No hace falta que aportemos la cantidad total en dinero contante y sonante, podemos aportar algunos bienes (por ejemplo un ordenador o una mesa) siempre que presentemos su factura y sepamos que se calcule su depreciación.

Hay que tener en cuenta que sí no tenemos socios (aunque sea nuestra madre con el 1%), en lugar de ser S.L. seremos S.L.U. (Sociedad Limitada Unipersonal). Esto es más bien una cuestión de imagen, porque por ejemplo Azucarera Española es una S.L.U. y nadie se imagina a un hombre sólo en la empresa. En todo caso, todos los socios que trabajen en ella con más de un 30% de la empresa tienen la obligación de ser autónomos aunque cobren nómina, y tendrán que pagar los 200 Euros de la cuota de autónomos (o lo pagará la empresa en su nombre). También el coste de la asesoría será mayor (el doble que como autónomo, aproximadamente).

Al ser una S.L., nuestras obligaciones legales son algo mayores. No podemos andar sacando dinero de la caja y tendremos que entregar más información sobre nuestra actividad al registro y demás instituciones públicas. Como parte buena, nuestra responsabilidad sobre los problemas de la empresa es limitada (de ahí la L de S.L.): sólo nos haremos cargo del dinero puesto como capital social de la empresa. Sólo hay una salvedad: el administrador. El administrador es uno o varios socios que tienen poderes y mayores responsabilidades sobre la empresa, es decir, tienen la capacidad de actuar en el nombre de la empresa (firmar papeles, etc.). La limitación de responsabilidad sobre lo que pasa en la empresa no se les aplica en caso de que se demuestre que han actuado de mala fe. Esto es importante, porque esta responsabilidad ¡debería pagarse!.

Y con esto tenemos resumidas nuestras opciones. Dependerá sobre todo de nuestro producto o servicio inclinarnos por una u otra.

Comentarios y puntualizaciones son siempre bienvenidos.

JavaConGanas.com

Hace ya muchos muchos meses, hablé por aquí de crear alguna forma de comunidad formativa online. Hablé con algunos amigos de la red, y poco después compramos javaconganas.com con la idea de implementar esa idea en él. Montamos snipsnap y listo, empezamos.


Lamentablemente he de reconocer que el resultado podía haber sido mejor. En realidad sigue siendo poco más que un embrión, pero todo se andará. La idea de anunciarlo ahora es la de ver si alguién más quiere participar, de la forma que sea, y tomar un poco de aire.

La idea de lo que ofrecer es sencilla:


  • el javapath. Que te ayude a comprender la relación entre algunas partes de java, darte indicaciones de por dónde seguir, etc.

  • un weblog para fomentar discusiones amistosas.

  • crear un podcast sobre java en castellano.



Eso de momento. Sigo valorando la idea que comenté en su día sobre cursos online, pero la verdad es que para eso si que necesitaré ayuda, para hacer algo que tenga sentido. De momento necesitaría que varios interesados en un curso se pusieran de acuerdo para arrancarlo.

¿Quedará esta en una de tantas ideas que dejo a medias con mi autodeclarado familiar?. Espero que no, pero como comentaba ayer prefiero hablarlo ahora antes de invertir más tiempo.

¡Qué mania tengo de meterme en follones!.

UPDATE: Para particpar, enviame un mail (alberto.molpeceres ARROBA gmail PUNTO com) contándome en que estarías interesado, en que puedes/quieres colaborar, que querrías conseguir de un sitio así, etc. y algo sobre tí y tu trayectoria hasta ahora.

¿Qué se ofrece?: Participar en un grupo de gente interesante y muchas posibilidades de aprender.

mi tessssssssooooooro, o “mi bien será mi perdición”

O al menos así se comporta demasiada gente del mundo del software, como Gollum con su anillo. Me pregunto por qué. Sobre todo a determinados niveles. Puede haber gente que está inventando la solución a los problemas del mundo, pero la mayoría me temo que no estamos en eso.


Escribía el otro día en Vivir del software sobre la posibilidad de establecer lo que llamaba alianzas creativas, que no es más que intentar jugar al yo gano, tu ganas. Y es que no es comprensible que nosotros los mortáles que sobrevivimos con esto de la informática pensemos en que somos los primeros en tener una idea deteminada. ¿Con 1.000 millones de personas conectadas a la red?. ¿Lo puede creer alguien de verdad?.


Pues me temo que sí. Demasiados. Y sólo el 0,0001 de ellos esta haciendo algo realmente innovador. JNJo deberíamos tener miedo de expresar nuestras ideas, al menos en gran parte, de intercambiar opiniones, de ponerlas a punto, de mejorarlas. No pensar así significa no conocer mucho de que va esto del software.

Siempre se ha dicho que quién da primero da dos veces, pero volviendo a lo anterior, teniendo en cuenta que no vas a dar primero, ¿qué tiene de malo compartir tus ideas?. Lo importante no es lo que haces, es cómo lo haces. Lo más que puedes conseguir a día de hoy son tres meses de ventaja si te guardas tus ideas (y si es que son tan geniales). Después, se acabo, no tienes ventaja si alguien quiere “clonarte” (hasta al genio de la página del millón, o al de la casa por el clip).


Sin embargo, si pones a prueba tus ideas, si las contrastas y las mejoras, puedes conseguir grandes ventajas:


  1. No perder el tiempo. Siempre creemos que tenemos buenas ideas, lástima que el resto del mundo no lo vea así.

  2. Lamentablemente es probable que no lo sepas todo, quizás alguien te pueda ayudar a mejorar tu idea.

  3. Velocidad. Es difícil tener socios (que me lo digan a mi), pero quizás encuentras alguien con la que colaborar y salir antes, o mejor, o más bonito.



Con esto tampoco quiero decir que vayas regalando ideas de un millón de dólares, pero tampoco te encierres en ti mismo pensando que si lo cuentas te van a copiar. Hacen falta muchas cosas para eso.

¿Cuando tienen sentido en internet clientes más pesados que el HTML?

Aunque por distintas razones sólo se puede descargar en forma de EXE de Windows, ProjectioPM esta desarrollado en Java, y es ejecutable vía Java Web Start, nuestra primera intención. En realidad, su editor (el que permite crear las preguntas, más noticias en breve), también es una aplicación Java Web Start. Tengo que reconocer que desde hace años estoy enamorado de algo tan simple y tan elegante como Java Web Start, que permite instalar y actualizar aplicaciones de escritorio a través de la red sin (demasiados) problemas.


Esto me ha hecho considerar la opción de que la interface de Projectio Office (del que ya he hablado por aquí) tenga una aplicación web mínima, pero que el grueso de la misma fuera una aplicación de escritorio.


¿Razones?.


  • Cada vez soy más vago y perezoso como para pelearme con el HTML.

  • Tengo la sensación de que aún hay muchos usuarios no informáticos de que siguen sin tener claro la diferencia entre aplicación web y aplicación de escritorio. Y que incluso no les gusta la parte web.

  • Incluso para los informáticos… ¿abrir una página web?. ¿Y por qué no integrarlo en el IDE (opcionalmente, claro)?.



Inconvenientes también los hay, aunque de momento me los callo, simplemente me gustaría recoger el feedback sobre esta idea. ¿Comentarios?.

Como hacer que te conozcan: primer paso

Dejaremos para otro día las motivaciones para crear nuestra empresa, o las formas de llegar a nuestra idea féliz. Atendiendo a la petición del gran Alberto Gimeno, hablaremos un poco de marketing.

Ok. Tengo o voy a tener mi producto en breve, me interesa que ya se empiece a conocer mi producto. ¿Qué es lo primero que tengo que hacer?. ¿Mi web?. ¿Abrir un blog?. ¿Anunciarme en Adwords?. ¿Contratar una página en El País?. No. Lo primero que tenemos que hacer es tener claro quién queremos que nos conozca, definir nuestro público objetivo.


  • ¿Quién va comprar nuestro producto?.

  • ¿Quién va a usar nuestro producto?.

  • ¿Quién decide si se compra o no nuestro producto?.

  • ¿Cómo puedo llegar a cada uno de ellos de la mejor forma?.

  • ¿Qué les digo a cada uno de ellos?.

  • ¿Qué quiero que hagan cada uno de ellos al recibir mi mensaje?.



Efectivamente, lo primero que tenemos que hacer es pensar un poco sobre el mercado al que va destinado nuestro producto. No es lo mismo tener un generador de código que una herramienta de posicionamiento en buscadores. No es lo mismo vender asesoría tecnológica que un simulador de exámenes.

Pongamos el caso de MPO de Ribe Software. Nuestra primera idea podría ser la pensar que enfocar el producto a los desarrolladores, publicando noticias en javaHispano es lo más correcto. Ummm… ¿seguro?. Pensemos un poco más, sólo un poco más.

(NOTA: Alberto, no te voy a hacer el plan de marketing, son tres ideas lanzadas, te tocar darle un par de vueltas).


  • ¿Quién va comprar nuestro producto?: Empresas de desarrollo de software. Es posible que alguna startup unipersonal, pero muchas veces este tipo de personas tiene su propio camino. ¿Qué empresas?. A primera vista diría que empresas más bien pequeñas (< 30 empleados), puesto que a partir de ahí tienen recursos para muchas más cosas.

  • ¿Quién va a usar nuestro producto?. Los desarrolladores. Esta es la más fácil normalmente :-D.

  • ¿Quién decide si se compra o no nuestro producto?. Pues me temo que normalmente los desarroladores no :-(. En ese tipo de empresas será el jefe de desarrollo, aunque programe de vez en cuando y sea asesorado por los propios desarrolladores.

  • ¿Cómo puedo llegar a cada uno de ellos de la mejor forma? y ¿qué les digo a cada uno de ellos?. Esta es la parte difícil. Puedo intentar llegar a quién decide de forma directa o indirecta (¿hacer que los desarroladores le hablen de mí?). A través de un anuncio en una revista, un weblog interesante o artículos con ejemplos de uso de mi software. ¿Qué hacer?. Como dijimos en un post anterior, nuestro tiempo y dinero es limitado, de modo que tendremos que definir nuestro plan y ajustarnos a él para hacerlo bien y no dar bandazos.

  • ¿Qué quiero que hagan cada uno de ellos al recibir mi mensaje?. No hay que ser demasiado ambicioso, no quieres que te compren, esto es marketing, no comercial. Quieres que te conozcan a ti y (más aún) tu producto. Quieres que lo conozcan y si es posible que lo prueben.



Finalmente, una vez que te pones en marcha, decide como vas a medir el impacto de tu plan y mide el resultados. Descargas de demos, visitas en la web, lecturas de un artículo, email o llamadas. Cualquiera de estas opciones y muchas otras más valen. Pero teniendo en cuenta de nuevo la limitación de recursos, lo mejor que puedes hacer es dedicarte a lo que realmente merece la pena.

Suficiente por hoy.

Maven 2 y DBMT

Para otro proyecto, me he visto en la necesidad de retomar uno de esos pequeños proyectos que tengo por ahí, medio abandonado, pero que siempre acaba reapareciendo: DBMT, una pequeña herramienta para migrar bases de datos (en un principio), pero que gracias al trabajo de Alexey Gaidukov también soporta otras fuentes o destinos de datos como CSV, DBF o TXT.

Bien, puesto a retomarlo, mínimamente en serio, algunos cambios en el código, limpieza de los scripts de ant… y la web… en lugar de un sistema propio en XML…. ¿por qué no probar Maven 2?. Mis escarceos con él son de hace un año y más bien cortos. Ok, ¿por qué no migrar el proyecto entero a maven 2?. Ok. 4 horas me ha costado. Lo que más ha sido migrar la web. El hacer tablas está muy bien y sencillo con APT (un formato estilo wiki), aunque es un poco coñazo. Aquí mis impresiones sobre el proceso:


- Me sigue gustando más Ant. Tengo más control sobre ello. Sé que se puede llamar a ant, se puede extender, y muchas más cosas. Pero no me imagino haciendo con Maven el proceso que tengo en otros proyectos para: compilar, enhancer jdo, empaquetar, ofuscar, firmar, generar JNLP y hacer deploy. Hay cosas que se harían de forma más sencilla, pero me da una pereza probar todo eso…. .

- El tema de las dependencias promete, pero aún es un poc lioso para mí, quizás porque la documentación, para mi gusto, deja aún que desear. A maven no le gusta tener los jar en el CVS/SVN (sobre esto aún tengo mis dudas, ver post anterior, porque hace que mi repositorio no sea completo), por eso tiene “repositorios” de dónde bajarse las librerías. Aunque “más o menos” se puede usar al repositorio central de maven, la verdad es que a nada que uses una librería rara o propia, mejor que te crees tu propio repositorio, más control.


- Me sigue sin gustar que todas las web sean “tan iguales”. Aunque bueno, teniendo en cuenta lo vago que soy para algunas cosas, es un mal menor.

En fin…. aunque para algunas cosas promete, veo poco probable que cambie muchos proyectos a Maven a día de hoy, no creo que me ofrezca nada que me merezca la pena. Si puede que me tome más en serio el tema de las dependencias, pero dentro de Ant, con soluciones como esta.



PS: si alguien hace un logo para DBMT se lo agradeceré :-D.



Close
E-mail It