curso de programación de aplicaciones en android

Me he inscrito en el curso android: programación de aplicaciones que está realizando el sitio web Miríada X. Este sitio web pertenece a la red universidades de Universia y ofrece cursos online masivos en abierto, o MOOC en sus siglas en inglés. El curso lo imparte un profesor de la Universidad Politécnica de Valencia, que fue precisamente donde cursé ya hace muchos años mis estudios universitarios en Informática. Va a ser mi primera experiencia en un MOOC, y cuando lo termine contaré qué tal me ha parecido.

Mi interés hacía la plataforma Android ha subido mucho desde las pasadas Navidades. Uno de los regalos en casa fue una tableta Android, y poco a poco ha pasado de ser un juguete a ir sustituyendo a los ordenadores de casa para tareas como navegar, leer el correo electrónico, juegos y alguna más. El punto débil de la tableta, desde mi punto de vista, es la dificultad para utilizarla en cosas que requieran escritura. Escribir en una tableta no es fácil, no tienes el tacto de un teclado físico y el trabajo no se realiza con la misma rápidez y facilidad que con un ordenador con teclado físico.

Con este curso espero adquirir los conocimientos básicos de programación de esta plataforma. Que el lenguaje usado sea Java es algo que no me gusta mucho, pero el entorno ‘oficial’ de desarrollo para Android – el Android SDK – está construido alrededor de este lenguaje. Mi relación con el lenguaje Java nunca ha sido buena, nunca me he sentido cómodo programando con él. Espero que esta vez sea diferente.

lis.to un gestor de tareas donde hay mucho que aprender

Desde hace unos días vengo probando lis.to. Es un gestor de tareas sencillo, que permite crear tareas y organizarlas por carpeta que pueden ser de proyectos, contextos, o lo que quieras. A cada tarea le puedes asignar una fecha y una hora de finalización y poner un recordatorio de manera que te avise antes de la finalización.

listo1

Cuando se edita una tarea se puede rellenar toda la información en una ‘entrada rápida’, indicando la fecha de finalización y la carpeta mediante los símbolos = y @. Además se puede añadir un texto libre a la tarea y el programa lo resalta con un icono en la lista de tareas.

listo21

No es una aplicación compleja, sino que te haces con ella en cinco minutos, pero que más allá de su uso me ha llamado la atención la manera en que está hecho. En primer lugar lis.to está hecha con Java y el interfaz gráfico con Swing. Es multiplataforma y funciona perfectamente en Windows y en Mac. En Windows la interfaz parece más nativa que en Mac, sobre todo por dos cosas: la barra de iconos deja bastante que desear y el panel lateral tipo iTunes tampoco está muy logrado. Sin embargo hay otras muchas cosas muy bien hechas y que quiero aprender cómo están hechas. La primera es que las tareas no se guardan en ninguna base de datos, sino en un archivo XML. También me ha gustado la manera de hacer el autocompletado cuando se asigna una carpeta en la entrada rápida. Lo último que me ha llamado la atención es la manera de desplegar/replegar parte del formulario de edición de tareas cuando se pulsan los triángulos azules. Como se puede descargar un jar y se puede descomprimir, se puede curiosear las clases que se han usado el programa y, con un poco de suerte y un mucho de google, encontrarlas y estudiarlas.

Actualización 15/Mar/2010: Lis.to está alojado en Google code y se puede descargar su código en este enlace: http://code.google.com/p/listo/. Pulsando el la pestaña código y haciendo checkout con un cliente subversion podemos descargar todo el código fuente.

enlaces 05.febrero.2010

Un par de enlaces sobre Java:

  • El traje nuevo del emperador un post al que llegué via Javahispano donde el autor cuenta sus impresiones de la adquisición de Sun por parte de Oracle tras el webcast de esta donde explicaban su estrategia a seguir tras la adquisición. En Javahispano también se ha escrito sobre esta webcast pero en tono mas neutro.
  • El blog de Jonathan Giles es un sitio que publica semanalmente enlaces a post relacionados con Swing y JavaFx principalmente. Muy interesante para ir viendo lo que se mueve en estas dos partes integrantes del entorno Java.

la guerra de los java-ide

Con la llegada de IntelliJ IDEA CE ya son tres los contendientes en la guerra de los IDE para Java dentro del campo de batalla open source. Hasta ahora quienes quisieran un IDE potente y no estuvieran dispuestos a pagar por las ediciones comerciales existentes podían optar por Eclipse o Netbeans, pero ahora hay un contendiente más. IntelliJ IDEA CE viene precedido por la fama de la edición comercial de su IDE, y tiene un nutrido grupo de usuarios. Uno de ellos es Ken Orr, el desarrollador de los Mac widgets y que ha anunciado recientemente que se marcha a trabajar a Apple.

No entro a valorar cual de los tres IDE es mejor, por qué estoy demasiado verde como para hacerlo y además todos me vienen grandes de momento, pero sí creo que hay que considerar la posibilidad de probar IntelliJ IDEA CE.

macwidgets for java

En el largo camino del aprendizaje de Java estoy buscando librerías que permitan desarrollar aplicaciones que tengan una estética lo más cercana posible a OS X. Una de ellas, la que pienso que consigue un aspecto más próximo a Aqua es macwidgets. Con esta librería se pueden conseguir barras de botones, paneles laterales y ventanas HUD, entre otros controles, realizados con Java.

El desarrollador de la librería mantiene un blog llamado Exploding pixels donde cuenta cosas relacionadas con el desarrollo de la librería y sobre diseño de interfaces de usuario en el mundo Mac. Uno de los post más comentados en este blog es el que critica la posición de las pestañas en Safari 4, diciendo que al estar por debajo de la barra de direcciones crea confusión pues realmente la barra de direcciones parece compartida entre las pestañas, cosa que no es cierta por su comportamiento. El post en cuestión es Why can’t Safari get tabs right?.

Volviendo a las macwidgets, la mejor manera de hacerse una idea de su aspecto es verlas en funcionamiento. Una de las aplicaciones que las utilizan es jCodeCollector, una aplicación gratuita que permite guardar trozos de código clasificándolo por categorías. El aspecto del programa es tan maquero como muestra la imagen siguiente:

jcc20

enlaces 5.agosto.2009

Dos enlaces sobre la polémica acerca de la madurez de la ingeniería del software.

Un par de artículos más técnicos, uno sobre el futuro de Java y otro sobre ecosistemas software.

erratas en traducciones

En mi aprendizaje de Java he decidido comenzar por un libro generalista, que hable de todos los aspectos del lenguajes. El libro en cuestión es Java 6 de Rogers Cadenhead que es la traducción de Java 6 in 21 days. Aunque el tema de aprender algo en 21 dias no se me pasa por la cabeza, elegí el libro porqué me pareció bastante completo y porque tenía un par de capítulos sobre Swing. Prefiero los libros traducidos a los originales en inglés porque aunque en inglés me defiendo, leerme un libro completo en inglés al final se me pone cuesta arriba y muchas veces termino dejándolo a la mitad.

Cuando el libro está traducido, hay un elemento que influye casí tanto en el resultado final como la propia calidad del libro: el traductor. La traducción de Java 6 deja bastante que desear, como muestra el siguiente párrafo de original, página 77 del original:

Casting between primitive types enables you to convert the value of one type to another primitive type. It most commonly occurs with the numeric types, and there’s one primitive type that can never be used in a cast. Boolean values must be either true or false and cannot be used in a casting operation.

La traducción del párrafo es la siguiente, página 94 de la versión traducida:

Moldear entre tipos primitivos le capacita para convertir el valor de un tipo en primitivo en otro. Ello sucede mayormente entre tipos primitivos y hay un tipo primitivo que nunca puede usarse en un molde. Los valores booleanos deben ser o True o False y no pueden usarse en una operación de arrojo.

La verdad es que traducir casting por moldear tiene narices, pero lo de la operación de arrojo es para nota. Se nota a la legua que el traductor no sabe de lo que está escribiendo, y muchas veces desvirtua por completo el sentido de lo que pretende expresar el autor original. Es una pena, porque el libro es bueno, pero la traducción lo hace bajar puntos a la hora de recomendarlo. Realmente si no tienes problemas con el inglés, creo que merece la pena pedir el libro a Amazon y leer el original.

el rey ha muerto, ¡ viva el rey !

Por fin se ha resuelto uno de los temas que más de cabeza me han llevado en los últimos meses. En mi trabajo de día llevaba tiempo rondando la posibilidad de una restructuración del departamento donde trabajo, y por fin se ha producido. Esta restructuración supone entre otras cosas que el desarrollo se debe realizar en la medida de lo posible en el entorno corporativo, que está basado en Java con un framework propio. Así que toca aprender Java, y centrarse en todo lo referido a programación para entornos web.

Esto tiene una repercusión también en mi trabajo de noche. Mi intención es seguir manteniendo los programas de alanit, pero me atrae mucho la posibilidad de programar para Mac. Java es un buen lenguaje para programar en OS X, incluso hay look & feels de Java que simulan Aqua bajo Swing. Y muchas más cosas sorprendentes que iré contando por aquí poco a poco.

un mes fuera de juego

Después de un mes fuera de juego por una serie de motivos personales, intento retomar la normalidad escribiendo de nuevo. Durante este mes me han sucedido algunas cosas que van a condicionar de alguna manera mis actividades a medio plazo, incluidos los temas de programación.

La primera de ellas es que tengo un nuevo ordenador. Después del enfado con los precios de los nuevos portatiles de Apple pensé que el iMac sería mi último ordenador de Apple. Sucedió que me enteré de una tienda donde vendián MacBook blancos, el modelo de 2.1GHz, 1GB de RAM y 110GB de HD a un precio bastante asequible. No tuve mucho tiempo para pensarlo pues en la tienda sólo quedaba uno de estos ordenadores y lo compré. Pensé que era el complemento ideal para el iMac y realmente me apetecía tener de nuevo un portátil además de que su reducido tamaño viene muy bien para poder llevarlo de acá para allá. He ampliado la memoria a 2GB por menos de 24 € y el ordenador funciona muy bien. Así que de momento el iMac sigue en la enfermería y el MacBook es mi ordenador de trabajo en casa. Es un gustazo poder sentarte en cualquier parte con el ordenador y ponerte a trabajar donde más a gusto estás en cada momento del día.

La segunda es que por temas de trabajo estuve cacharreando un poco con Java. Este lenguaje nunca fue santo de mi devoción, quizá porque no me acabaron de gustar el aspecto de las aplicaciones de escritorio hechas con Swing o porqué siempre lo consideré un lenguaje demasiado complejo. Como decía, tuve que hacer un pequeño trabajo con Java, para lo cual tuve que utilizar NetBeans y empezó a picarme la curiosidad. La verdad es que visto de una manera objetiva es un lenguaje que tiene todos los puntos a favor para desarrollar con el: es gratuito y casi libre, multiplataforma, sirve tanto para hacer aplicaciones web como de escritorio, hay muchísima información sobre el mismo, muchísimas herramientas para trabajar con él y existe una amplia comunidad de programadores que lo respaldan. Esta primera toma de contacto me ha hecho ver la debilidad de los muchos prejuicios que siempre he tenido con este lenguaje y a abierto mi interés por aprender más de él.

Por último, me declaro seducido por ‘Los hombres que no amaban a las mujeres’, el primer libro de la trilogía Millenium de Steig Larsson. Las primeras 500 páginas del libro se me han hecho cortas, y hace tiempo que no disfrutaba tanto con un libro. Aprovecho cualquier momento libre para leer las aventuras de Mikael Blomkvist y Lisbeth Salander, una pareja un tanto peculiar que me están haciendo pasar unos momentos de lectura sumamente agradables.

patrones de diseño, refactorización y metodologías ágiles

  • Los peligros de los patrones de diseño
  • Refactorización en la práctica: peligros y soluciones
  • Metodologías ágiles en el desarrollo de software
  • Metodologías Ágiles: La ventaja competitiva de estar preparado para tomar decisiones lo más tarde posible y cambiarlas en cualquier momento