Archivo para Programación

Nueva etapa en CreaWriter

El pasado viernes publicamos la versión 1.0 de CreaWriter, y con ello iniciamos una etapa diferente.

CreaWriter 1.0

Tal como he ido contando desde que la publicamos por primera vez, la aplicación ha tenido una buena acogida. Pero sobre todo, desde la publicación en lifehacker.com ha sido un aluvión de visitas diarias.

Así que hemos mejorado el interfaz, añadido funcionalidades y cambiado el sistema de distribución. Mantenemos una versión gratuita pero premiamos a los usuarios que donen con estas características avanzadas.

Algunas de las mejoras son el soporte de formato de ficheros RTF, estilos de texto, teclado audible y avisador de tiempos de descanso.

Desde el viernes, y todavía sin la difusión masiva, ya han donado algunos usuarios así que, lo dicho, empieza una nueva etapa y veremos cómo evoluciona.

Comentarios

CreaWriter: primeros pasos y resultados

Hace tres días publiqué la primera versión de CreaWriter y escribí acerca de ello aquí mismo.

El caso es que tras comentarlo en algunos foros, mi sorpresa fué mayúscula anoche cuando vi que las visitas a la web aumentaban considerablemente. Y parece que todo viene por la publicación en Bitelia de un análisis de la aplicación, por cierto muy bueno y con una imagen de fondo de lo más estética, gracias Cecilia.

Esto ha hecho que se produzca un aluvión de publicaciones en “webs dependientes”, twitter, etc. Simplemente hay que buscar CreaWriter en Google para ver las referencias de las que hablo. Las visitas a la web desde estas referencias ha sido la consecuencia directa.

El caso es que esta respuesta me hace constatar varios hechos:

  • Hay sitios de referencia que si te tocan (hablan de ti) hacen que subas como la espuma
  • Si das con una necesidad, los usuarios te encuentran (OmmWriter era una aplicación deseada pero no existía para Windows, ahí está la necesidad)
  • Las aplicación de nicho en Internet, son posibles, únicamente hay que encontrar la manera de “monetizarlas”
  • Cada vez creo más en el concepto KISS de las cosas (la aplicación, la web, etc.)

Os dejo algunas de las referencias que he encontrado:

CreaWriter por Jaume en abrefacil.net (esta no tiene mérito porque es amigo ;-) )

No todos los días conoces al desarrollador que crea un programa admirable: si eres creativo y buscas la inspiración, CreaWriter es un procesador de textos que te permitirá concentrarte en el proceso creativo eliminando toda distracción y con tu música favorita de fondo. Simplemente, la pantalla, tú y el texto, de la mano de mi amigo Pepe Sanchis de la empresa SPL


CreaWriter, un OmmWriter para Windows por Cecilia en Bitelia.com

Me encanta ver programadores que en vez de quedarse con las ganas de que alguien más haga una aplicación, tomen las riendas y lo hagan ellos mismos. CreaWriter es una aplicación gratuita para Windows, que me encantaría ver seguir desarrollándose hasta su versión final.


Quiet Text Editor for Windows por James Furbush en slyoyster.com

I asked for it, out of shear jealousy, and now I shall receive.  This is the Christmas season AFTER ALL, right?  Anyway, Ommwriter, which was only available for Mac, has been ported to Windows and now it’s called CreaWriter.  (thanks Pepe)


En twitter también se han hecho eco, increíble. Incluso una web de descargas de software en portugués

En fin, yo a lo mío, iremos añadiendo nuevas funcionalidades que lo hagan más atractivos pero no negaré que la cosa me ha sorprendido y agradado.


Comentarios (3)

CreaWriter: un editor de textos para estimular tu creatividad

Hace unas semanas que comentaba un software que me pareció brillante a la vez que sencillo.
El caso es que únicamente existía versión para Mac y pensé que sería bueno disponer de una versión para Windows. Busqué software similares y ninguno contemplaba las posibilidades de fondo de sonido e imagen al estilo OmmWriter, así que, sin pretender competir en diseño con éste, me dispuse a programarlo durante algunas horas libres de estas últimas semanas y como divertimento.
Hoy os presento CreaWriter, un programa de escritura tranquila para estimular la creatividad.
En principio es una versión 0.1 beta, al más puro estilo 2.0 de denominar a todo beta.
Si a la gente le resulta interesante iré añadiendo funcionalidades, pero sin perder de vista que no pretendo crear el nuevo Word, sino un programa de edición minimalista que permita al usuario construirse su propio entorno de desarrollo.
Otra novedad es que he programado el programa en inglés pensando en conseguir la máxima difusión posible, pero en breve publicaré una versión en castellano.
El material gráfico es propio, pero cada uno es libre de ponerse el fondo de papel que desee, así como el sonido.
Espero que todo el que lo descargue y utilice me dé su opinión.
http://www.creawriter.com

Hace unas semanas comentaba un software que me pareció brillante a la vez que sencillo.

El caso es que únicamente existía versión para Mac y pensé que sería bueno disponer de una versión para Windows. Busqué software similares y ninguno contemplaba las posibilidades de fondo de sonido e imagen al estilo OmmWriter, así que, sin pretender competir en diseño con éste, me dispuse a programarlo durante algunas horas libres de estas últimas semanas y como divertimento.

Hoy os presento CreaWriter, un programa de escritura tranquila para estimular la creatividad.

En principio es una versión 0.1 beta, al más puro estilo Google de denominar a todo beta.

Si a la gente le resulta interesante iré añadiendo funcionalidades, pero sin perder de vista que no pretendo crear el nuevo Word, sino un programa de edición minimalista que permita al usuario construirse su propio entorno de escritura.

Otra novedad es que he programado el programa en inglés pensando en conseguir la máxima difusión posible, pero en breve publicaré una versión en castellano.

El material gráfico es propio, pero cada uno es libre de ponerse el fondo de papel que desee, así como el sonido.

Espero que todo el que lo descargue y utilice me dé su opinión.

Podéis descargarlo en http://www.creawriter.com

Que me perdonen los Maqueros ;-)

Comentarios (14)

15 años de Design Patterns de GoF

A principios del 2010 se cumplirán 15 años de la publicación de la primera edición de “Design Patterns: Elements of Reusable Object-Oriented Software”, uno de los libros que más ha influido en la ingeniería del software de los últimos años.

En 1994 la “banda de los cuatro” (Gang of Four), o lo que es lo mismo: Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides, escribió un libro en el que sentaron las bases del diseño basado en patrones en la programación orientada a objetos. Básicamente es un libro de recetas en el que presentan soluciones en problemas comunes en el proceso de diseño orientado a objetos de una aplicación.

InformIT ha publicado una entrevista a los autores que no tiene desperdicio. En ella los autores hablan acerca de cómo ven el diseño de software en la actualidad y de cuan vigente sigue todavía su libro.

Alguna de las perlas de la entrevista  tiene que ver incluso con el SDK de programación de iPhone, el mismo que se utiliza para programar en Mac OSX y basado en NeXTSTEP, de NeXT que cosas y que tiempos…

Este libro salió a la luz cuando todavía no existía Java, y de hecho el lenguaje recoge muchos de los patrones. Después se escribieron bastantes más libros relacionados con los patrones y han aparecido títulos más digeribles.

Me quedo con el primer párrafo del libro, toda una declaración de intenciones:

El diseño de software orientado a objetos es duro, y diseñar software orientado a objetos reutilizable es todavía más duro. Es necesario encontrar los objetos adecuados, convertirlos en clases con la granularidad correcta, definir interfaces de clases y jerarquías de herencia, y establecer las relaciones clave entre ellas. El diseño debe ser adecuado al problema pero al mismo tiempo lo suficientemente genérico para permitir resolver problemas y requerimientos futuros. Al mismo tiempo buscaremos evitar el rediseño futuro, o al menos minimizarlo.

Este libro ha influido en nuestros proyectos, tanto los escritos en Java como los escritos en PHP. Con Java no tuvimos problemas, era la manera natural de diseñar porque el lenguaje se adaptaba a la perfección.

Pero hace 8 años era una rareza escribir un portal web en PHP basándonos en patrones. Hoy, la mayoría de los frameworks más conocidos (cakephp, symphony, etc.) están basados en patrones… y escritos en PHP. Eso sí, PHP tuvo que hacerse orientado a objetos.

Pues eso, quedan un par de meses para el aniversario, aunque el libro a estas alturas, y hace 15 años, ya estaba escrito.

Comentarios

Simplicidad: lo más simple posible, pero no más.

simplicity

Nuestra tendencia natural en SPL, y parece que en muchas otras empresas, es complicar todo al máximo. Como la mayoría de las empresas de software, queremos que nuestros productos “lo hagan todo”, que estén cargados de funciones de lo más espectaculares. Y los clientes también quieren “maximizar” el dinero que gastan para obtener el máximo de funcionalidad, así que todos contentos ¿o no?.

Pues parece que no. Porque la realidad es tozuda y los usuarios todavía más. El omnipresente principio de Pareto (80/20) se cumple con creces y, aunque no tengo datos para asegurarlo, mi percepción es que con el 10% de la funcionalidad de una aplicación se consigue el 90% de los resultados, y posiblemente para el otro 10% no es necesaria el resto de la funcionalidad.

Durante todos estos años construyendo soluciones software he podido constatar que las aplicaciones que mayor satisfacción han generado en nuestros clientes eran aquellas que hacían exáctamente la funcionalidad que necesitaban y no más, aunque hubiese en el mercado soluciones mucho más baratas y con mayor funcionalidad.

Si hay dos empresas en el sector de la informática que son un icono de buen diseño y/o éxito entre los consumidores (las empresas también son consumidores), estas son Apple y Google. Y el caso es que la imagen del post, que me he encontrado casualmente esta tarde en el blog de Eric Burke ilustra a la perfección esta realidad. El mejor ejemplo es el iPod, cualquier reproductor mp3 tiene más funcionalidad pero no hace falta explicar lo que sucedió, y no solo porque es bonito.

Empresas de nuestro mismo sector, como 37 signals hace tiempo que han puesto en marcha el concepto con, parece, bastante éxito.

Así que a partir de ahora vamos a tener que atarnos la mano a la silla para no seguir añadiendo funcionalidad y seguir el principio KISS (Keep It Simple Stupid). Y podar, podar funcionalidad hasta que dejemos únicamente la necesaria. Pero con cuidado, dicen que la obsesión por la simplicidad es la que  llevó a Jobs a eliminar del iPhone los MMS, -¿quién quiere enviar imágenes por MMS teniendo correo electrónico?-… quizás los que quieran enviar una foto a alguien que no tiene correo en el móvil ¿no? pues a juzgar por el nuevo iPhone OS 3.o parece que así era.

Al principio nos costará, pero seguro que nos resultará beneficioso. Astros como Einstein o Davinci eran firmes defensores de hacer todo lo más simple posible, pero no más…

Comentarios (1)

Oracle compra Sun

El pasado 20 de abril Sun publicó una de las noticias que más consecuencias puede tener para el futuro cercano del software: Oracle compra Sun.

Y con Sun, compra MySQL, Java, OpenOffice, Solaris y unas cuantas tecnologías más que forman parte importante del movimiento Open Source. Y la duda que todos tenemos es ¿qué hará Larry Ellison con todas estas tecnologías?

Sun, es principalmente fabricante de hardware y con ella Oracle tiene control sobre todo el proceso.

Parece que el futuro de MySQL no es demasiado esperanzador, teniendo en cuenta que es uno de los “competidores” de la base de datos de Oracle.

En cuanto a Java, imagino que la gente de IBM todavía estará pensando cómo les han levantado a la novia. No creo que sea malo para Java, aunque habrá que esperar.

¿Y OpenOffice? puede ser uno de los misiles para la linea de flotación de Microsoft, la tan odiada por Ellison podría sufrir bastante si se potencia más la Suite competencia de Office por excelencia.

En fin, el tiempo lo dirá, pero es seguro que vendrán cambios.

Ya se sabe: “big business”.

Comentarios

Programar para iPhone, Symbian, Blackberry o Android

Hace ya tiempo que está bastante claro que el futuro/presente pasa por la movilidad, o hablando en términos más concretos programar para móviles. 

Como los recursos son limitados en SPL tenemos que tomar una decisión sobre a qué plataforma dirigirnos primero.

En la decisión deben primar más razones de rentabilidad que preferencias tecnológicas personales, es muy frecuente que no vayan unidas.

Así que lo primero que nos planteamos es la base potencial de clientes, es decir:

  • Nº terminales vendidos.
  • Nº de aplicaciones programadas.
  • Tipo de usuario, en cuanto a si está o no dispuesto a comprar software.
  • Forma de venta del software, no somos especialistas en venta, así que necesitamos una plataforma que haga ese trabajo por nosotros.
  • Empresa que soporta la tecnología

Por otro lado, desarrollar para un móvil implica una serie de consideraciones que hace muy necesario analizar bien pros y contras de cada una de las plataformas existentes.

  • Lenguaje de desarrollo
  • Plataforma de desarrollo, o IDE
  • Madurez de la plataforma
  • Documentación existente
  • Nº de programadores

Y cómo no, coste de las herramientas necesarias para desarrollar.

Los sistemas que estamos analizando son:

  • Symbian
  • Android
  • Windows Mobile
  • iPhone (MacOSX)
  • Blackberry

¿Se os ocurre alguna más? ¿Alguna estilo PalmOS, WebOS (Palm Pre), etc? ¿Creéis que deberíamos tener en cuenta algún criterio más.?

Comentarios (3)

La esfera de los contenidos

Hace algunos años programamos para un cliente una esfera de clientes (opción clientes dentro de su web). El reto consistió en adaptar una película Flash programada en ActionScript para que mostrara en una esfera las iniciales de sus clientes y que al pinchar mostrara todos los relacionados. En aquel momento fue un divertimento más que otra coas ya que se trataba de mostrar de manera espectacular algunas de las referencias del cliente.

El caso es que de pronto me encuentro con wp-cumulus, un plugin para Wordpress que permite visualizar las categorías o etiquetas de los artículos publicados que utiliza la misma esfera hecha en Flash. Como todo los plugins de Wordpress, es tremendamente sencillo de instalar y el resultado tipo nube… bueno, impresiona.

Estas son todas las categorías sobre las que he escrito desde la creación del blog, si pincháis en alguna de ella os mostrará los artículos. Quizás son demasiadas categorías, ¿o no?. ¿Qué pensáis?

Comentarios (2)

CakePHP, el Rails con PHP

La verdad es que era algo reacio a poner este título al post, por lo manido del tema y porque no es del todo cierto. Pero seguro que todo el que lo lea tendrá claro de lo que tratan estas lineas.

Hace ya casi dos años evalué la conveniencia de utilizar para nuestros proyectos un “framework” de desarrollo que nos proporcionara un nivel de productividad mayor que el que teníamos en la programación de aplicaciones web de una complejidad media.

Hasta entonces desarrollábamos este tipo de aplicaciones con PHP y un marco de trabajo propio basado en el paradigma MVC. Para aplicaciones de más envergadura utilizábamos, y seguimos haciéndolo, Java. Con una mezcla de Struts 2 + Hibernate + diversas librerías que no viene al caso detallar.

Dado que uno de los requerimientos en aquel entonces era que el lenguaje fuera multiplataforma y la fama de RoR (Ruby on Rails) ya era muy importante decidí tenerlo en cuenta junto con otras alternativas en PHP. 

El caso es que Rails me cautivó y decidimos desarrollar un par de proyectos reales con este marco. Los principios fueron duros porque no es lo mismo seguir el típico ejemplo del screencast para crear un blog en 15 minutos, que no deja de ser sorprendente, que realizar un proyecto real.

A pesar de la alta productividad que proporciona Rails, había que aprender un lenguaje nuevo (ruby) y mucha de la “magia” de RoR quedaba algo oculta. Pero finalmente superamos esa fase y gracias a algunos plugins de Rails llegamos a conseguir un nivel de productividad verdaderamente interesante. Bien es verdad que a veces abusando del scaffold.

Finalmente hemos desarrollado unos cuatro proyectos, de los cuales dos tienen una envergadura media mientras que otros dos son más bien sencillos.

El problema viene cuando tienes que instalar estos proyectos en un servidor virtual linux de los habituales. Aquí es donde te encuentras con la primera barrera.

La gran mayoría de servidores virtuales españoles ni tan siquiera dan la opción de utilizar RoR. Y en cuanto a los americanos, el que usamos lo permite pero sin utilizar fcgi. Para el que no sepa de qué va, esto obliga a utilizar Rails en Apache como un cgi normal, de tal manera que cada petición a la aplicación supone que el servidor http tiene que cargar el intérprete Rails y ejecutar el script… es decir inadmisible para una aplicación en producción.

Tan es así que en últimamente habíamos relegado a Rails para aplicaciones ejecutadas en servidores en los que teníamos permisos totales de configuración y para pequeños administradores de catálogos web en los que no importaba demasiado la velocidad.

El caso es que hace unas semanas decidí reevaluar mi decisión de hace unos años y revisé algunos de los “Rails emulators” escritos en PHP, ya que es un estándar en cuanto a lenguajes soportados por servidores virtuales Linux. 

La verdad es que actualmente existen muchos frameworks para desarrollar con PHP, y entre los más conocidos he revisado Symfony y CakePHP. Symfony es potente, pero me pareció que necesitaba demasiado fichero de configuración a lo XML. Esto me recordaba demasiado a los proyectos Java en los que pasas demasiado tiempo configurando. Por lo que decidí probar CakePHP, aparentemente más sencillo.

Así que esta semana he estado probando Cake en dos proyectos reales muy simples y no me ha decepcionado.

En un primer vistazo es una copia de la plataforma de Rails en cuanto a ubicación de ficheros, evidentemente basado en paradigma MCV, filosofía DRY, etc. La filosofía de que todo funciona por convenio y únicamente cambias lo que quieres que funcione de otra forma te ahorra mucho tiempo.

Y, aunque no he he llegado a utilizar la generación de código por consola, porque al principio quería estar muy pegado al código, me ha parecido que me aportaba la productividad que buscaba, flexibilidad PHP y posibilidad de instalar la aplicación en cualquier servidor.

Como todavía no conozco la herramienta al 100% no voy a publicar ningún ejemplo pero baste decir que una administración CRUD de una tabla de datos sin tener ni idea de la plataforma me costó unos diez minutos de montar incluyendo descargar el proyecto y leer el tutorial. La documentación es más que útil y únicamente hay que tener en cuenta la versión con la que se trabaja. También es cierto que la experiencia RAILS ayuda mucho ya que es muy parecido.

Posiblemente si alguno de los que lee este post viene del mundo Microsoft se preguntará de qué estoy hablando, pero ya se sabe que hablamos otro idioma y utilizamos palabras raras como multiplataforma, soporte colectivo, etc. Que nadie se mosquee que no va con mala intención ;-)

Comentarios

Grails

El otro día, leyendo el Blog de Matt Raible me volví a encontrar con Grails en una revisión bibliográfica. Como ya hacía tiempo que tenía ganas de verlo en acción y con Rails hemos desarrollado un par de proyectos en serio, viendo de lo que es capaz, me propuse pegarle un vistazo al libro del que habla Matt: Getting Started with Grails y así de paso podía probarlo.

He de decir que me ha sorprendido gratamente. En los proyectos que hemos desarrollado con Java, hemos utilizado Struts+Hibernate+DWR+display-tag+…, y la verdad es que es muy tedioso. Últimamente, con Struts 2, la cosa mejora bastante, pero no deja de ser muy “manual” y engorroso tanto fichero xml. Para hacer algo que con un lenguaje de script básico se hace en un plis, con esta estructura … en fin, que voy a contar.

Grails es una copia casi exacta de Rails, pero a lo Java. Incluso las convenciones típicas de Rails en cuanto a relaciones, configuraciones de base de datos, etc. paren lógicos. Las tareas repetitivas, como los CRUDs, son instantáneas, etc. En fin, una especio de sueño para un programador Java.

Utiliza el lenguaje Groovy, muy claro y elegante. Las validaciones de datos se controlan desde el modelo, tal y como se hace en Struts 2 mediante las anotaciones de Java.

Para acabar de complicar el asunto, leo en este benchmark que al parecer Grails no es nada lento, de hecho parece que es comparable e incluso más rápido que Rails.

En definitiva, estoy algo deslumbrado por lo que he visto hasta ahora. En poco más de 5 minutos, siguiendo el libro e instalando Grails en el Mac, ya tenía una aplicación con dos entidades funcionando a la perfección.

Después, jugar con validaciones de campos, etc., no ha sido nada difícil y de igual forma muy rápido.

Seguiré avanzando para ver si, una vez más, nos toca volver a cambiar de tecnología… es lo que tenemos los tecnópatas ;-)

Espero comentarios…

Comentarios (1)

« Anteriores