ene 05

Tengo que impartir un curso de introducción a la programación, utilizando el lenguaje C, dentro de unos días. ¡Bien!. Ya hacía años que no podía disfrutar con un curso así, en el que puedes enseñar los fundamentos a un grupo de personas, y ves cómo aprenden desde el principio y cómo van evolucionando. Encima, para mayor regocijo del docente, el lenguaje elegido es C. Siempre he considerado C como mi lenguaje totem, el hogar a la que volver, con el que me siento más a gusto. En los 90 programé bastante en C y C++. Pero a finales de la década, llegaron primero Visual Basic y luego Java, y no volví a programar en C. Hasta que el año pasado empecé a aprender Cocoa y Objective C para hacer Apps en Apple iOS. Y me ilusioné al descubrir que Objective C es un superconjunto estricto de C, es decir, que tiene todo lo que tiene C, y más cosas.

Así que el curso pinta bien. Si lo pudiera impartir en Linux, ya sería la repera (porque en Mac ni me lo planteo: las empresas cárnicas aún no lo usan). Pero todo no puede ser perfecto. El cliente quiere Windows. Bueno, sin problemas, yo no soy anti-nada. Windows 7, como ya he comentado antes, me parece un buen S.O. No es mi elección para el día a día, porque me siento más cómodo en UNIX (Mac en este caso), pero la última versión es una buena elección para sus usuarios. El problema entonces era encontrar un compilador y entorno integrado que fuese cómodo para programar y que ya conociese. Y si fuera Software Libre, perfecto.

Con estos requisitos, Visual Studio queda fuera. Cierto, llevas el IDE y el compilador integrados de una vez, pero no lo he usado nunca. Y aunque ahora es gratis la versión exprés (o podría usar una de prueba para el curso) no me apetecía pelearme con otro IDE. Netbeans cumple casi todo, pero no lleva integrado el compilador. Ni Eclipse, pero ya que conozco razonablemente Eclipse tras todo el tiempo que le he dedicado impartiendo cursos de Java y preparando certificaciones, me parecía la mejor opción. Así que vamos con la instalación de Eclipse para programar en C en Windows.

Instalar el compilador de C

Lo primero que hay que tener claro es que Eclipse sólo es un Entorno Integrado de Desarrollo. Un IDE. Un editor potente, un programa para organizar tus proyectos de software y no pelearte con ficheros sueltos en una carpeta, un sitio donde ver los errores de compilación y leer la ayuda. Un aglutinador de herramientas. Pero no es un compilador. No lo incluye. E igual que cuando preparas un Elcipse para programar en Java hay que instalar previamente el JDK, que incluye el compilador de Java, aquí hay que instalar el compilador de C.

Buscando uno libre y moderno (el último compilador de C que usé en S.O. Microsoft fue el djgpp sobre MSDOS), di con MinGW, Minimalist GNU for Windows, un conjunto de herramientas GNU (las mismas que se encuentran en GNU/Linux) pero compiladas para Windows. ¡Perfecto!. Instalando esto ya tengo GCC (el compilador de C en Linux y Mac de toda la vida), make y el resto de herramientas de desarrollo desde la linea de comandos. Instalarlo es descargar el ejecutable y pulsar en Siguiente, Siguiente hasta el final. Ojo: instala MinGW en C:\MinGW para evitar problemas posteriores. Es el sitio que aparece por defecto al instalar, así que déjalo como esté.

Tras la instalación, y para que Eclipse pueda encontrarlo, tendremos que añadir la carpeta con los ejecutables de MinGW al PATH del sistema (instrucciones en Inglés, o bien sigues leyendo). Para poder usar cualquier programa en Windows tenemos dos opciones: o bien vamos a la carpeta donde está el programa y lo lanzamos desde ahí, o incluímos la carpeta en la variable PATH del sistema de forma que cada vez que se necesite ejecutar ese programa Windows lo encuentre. Vamos a ello. Abrimos un explorador de Windows (Tecla Windows + E) y pulsamos con el botón derecho del ratón sobre Equipo.

Configuración del Sistema

Configuración del Sistema

Si pulsamos en “Configuración Avanzada del Sistema” nos aparecerá la ventana clásica de “Propiedades del Sistema” de XP. Si no está abierta, hacemos click sobre la pestaña “Opciones avanzadas” y veremos un botón abajo del todo que pone “Variables de entorno”. Entrando, veremos dos tipos de variables: del Sistema y de nuestro usuarios. Las variables del Sistema tienen efecto para cualquier usuario que inicie sesión en esta máquina, mientras que las del usuario sólo nos afectan a nosotros mismos. Cuando añado algo al PATH, me gusta que sea a nivel del Sistema, así que buscamos PATH y doble click. En la ventana que se abre, debemos ir al final de la lista de directorios, añadir un punto y coma y la carpeta donde está MinGW.

Configurando PATH

Configurando PATH

Mi PATH queda algo como:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;...;C:\MinGW\bin

La prueba definitiva de que todo está OK es abrir un intérprete de comandos de Windows, pulsando la Tecla Windows + R y escribiendo “cmd” en el diálogo que aparece. Si escribimos gcc -v y nos aparece información sobre nuestra versión instalada del compilador de C GCC, felicidades. Ya podemos compilar.

MinGW funciona!

MinGW funciona!

Instalar un entorno JRE de Java

Eclipse es un programa que está escrito en Java. Luego para poder ejecutarlo necesitamos instalar en nuestro Windows el JRE (Java Runtime Environment). Una vez que lo tengamos, podremos ejecutar cualquier programa Java, así como Applets en el navegador. Probablemente ya lo tengas instalado (puedes ver si tienes en Archivos de Programa una carpeta llamada Java) pero si tienes dudas, instálate el último JRE de la página de Sun (ahora Oracle). Para comprobarlo, desde una terminal, escribe java -version.

Instalar Eclipse CDT

Siguente paso: descargar Eclipse. Para ello, buscaremos la versión correcta, ya que Eclipse es un IDE que sirve para todo. Con Eclipse podemos programar en C, C++, Java, PHP, … casi en cualquier cosa. Por ello, hay paquetes ya precreados con un Eclipse totalmente configurado para un uso determinado. El que nos hace falta en este caso es el Eclipse CDT

Descargamos el fichero (tardará un rato, pesa unos cuantos MB) y una vez lo tengamos, lo movemos a la carpeta que queramos. Aunque Eclipse sea un programa no se “instala” en Archivos de Programa, aunque podemos moverlo ahí. Realmente se descomprime, se abre, se pulsa sobre el icono de Eclipse y listo.

Si todo ha ido bien, podremos crear un nuevo proyecto C, añadir un fichero y compilar sin problemas. Pero esto va a ser material para otro post.

Tagged with:
nov 30

Foto de Felipe Vieria

Foto de Felipe Vieria

Si aún no sabes de qué estoy hablando, en este post ya hablé de qué eran y para qué servían las NSCoder Nights. Resumiendo mucho, son reuniones de gente interesada en desarrollar aplicaciones Cocoa. Así que los asistentes pueden ser programadores para el Mac, para el iPhone (y cualquier otro dispositivo iOS), diseñadores, empresarios buscando algún programador que les ayude, curiosos… Si te interesa, puedes también leer el post de Javier Rodríguez sobre cómo comenzar el desarrollo con iOS. MacWorld también se hace eco de las NSCoder Nights.

Hoy tenemos nuestra segunda reunión en Sevilla, y ya hay otros capítulos en Madrid, Barcelona, Gijón, Valencia, Almería, Málaga, … Bueno, pero ¿qué hacer si te gusta la idea, pero en tu ciudad no hay aún una NSCoder Night? Esa fue básicamente la duda que surgió en los comentarios que comenzó David en el post sobre cómo estaba aprendiendo a programar para iOS. Tras algunos correos, quedó inaugurado NSCoder_zgz, y pronto tendrán su primera reunión. Así que se me ocurrió listar la serie de pasos que debes ejecutar para localizar tu NSCoder Night más cercana, o bien crear la tuya propia.

  1. [Twitter getTwitterHandle]; Si no tienes usuario en Twitter, lo primero es creártelo. Te servirá para estar al día de las NSCoder Nights. No todas tienen sitio web, pero todas tienen Twitter.
  2. [NSCoderNight listAll] consulta la lista de NSCoder Nights que tenemos en el capítulo de Sevilla. Procuramos mantenerlas actualizadas. Si dudas de si hay alguna cercana, pregunta, que para eso estamos.
  3. if ([NSCoderNight isNear]) exit(0); Si encuentras alguna cerca / en tu ciudad, has terminado. Sigue a su usuario en Twitter y listo.
  4. else … Bueno, si no hay ninguna cerca, la solución es fácil: la creas tú. ¿Cómo? sigue leyendo
    1. Crea un usuario en Twitter para esa NSCoder Night. El nombre debe ser: NSCoder_xxx, donde xxx será una abreviatura del nombre de tu ciudad, como sev, zgz, mlg, bcn, etc. (etc no lo uses)
    2. Copia la bio de otro NSCoder Night. Así somos más homogéneos.
    3. Copia el icono de otra NSCoder Night
    4. [Opcional] Crea un sitio web para tu NSCoder Night. En tumblr, también por ser homogéneos.
    5. Añade a tu nuevo sitio web las FAQ que magistralmente escribió Vicente Vicens.
    6. Pon un enlace en el perfil de la cuenta de Twitter al nuevo sitio web.
  5. Una vez que has terminado con la parte técnica, ahora viene lo mejor. Busca un sitio que te guste, un bar, cafetería, restaurante, tu casa, una iglesia o un gimnasio. Un sitio donde quepáis de cinco a diez personas, con sus portátiles. ¿Lo tienes?
  6. Publica la primera reunión. Ponle fecha, y hora. La mayoría empezamos sobre las 19:00, pero puede ser a cualquier hora. Aunque el apellido de las reuniones “Nights” igual te da una pista sobre el horario.
  7. Apóyate en la promoción de las otras NSCoder Nights. Siempre te haremos un RT :-)
  8. Ve a la primera reunión. Si va alguien, fantástico. Si no, persevera. Tendrás ese tiempo para tí, para programar / leer fuera de tus tareas habituales. Sigue el ejemplo de José Vázquez en su inigualable “Hazte Indie“.
  9. Sube fotos y cuéntanos cómo te va :-)
Tagged with:
nov 24

Hace unos días salió la 4.2.1 de iOS para iPhone y iPod Touch. Sin pensarlo demasiado, actualicé mi iPhone 3Gs, que es la máquina que uso en el día a día, pero también la uso como máquina de desarrollo y pruebas. Pero no caí en el posible problema: tener en mi dispositivo instalado una versión de iOS no soportada por XCode.

Pero salió la 3.2.5 de XCode y me la bajé e instalé. Bueno, problema solucionado ¿no?. Veamos, esta versión soporta… ¿iOS 4.2? ¿Y qué pasa con iOS 4.2.1? Un sudor frío me recorrió la espalda. Y se confirmaron mis miedos con este tweet de @jdortiz:

Lógicamente, estoy en fase de pruebas para lanzar la v1.1 de MyEvents. Esto sólo te pasa cuando estás probando. Murphy es cruel.

Esta mañana, me remangué y me senté frente a XCode. Al abrir el proyecto, un solitario error:

Mi XCode no entiende qué es eso de iOS 4.2.1 :-(

Abrí el Organizer (para ver mis dispositivos), y nada más abrirlo me apareció la siguiente ventana:

Vamos, que XCode me estaba diciendo: “esto de iOS 4.2.1 no tengo ni idea de qué es, pero si quieres me leo unos cuantos ficheros del iOS de este iPhone y trato de ver si soy capaz de manejarlo”. Evidentemente, pulsé en Collect. Una barra de progreso me indicaba que se importaban los ficheros de iOS de mi iPhone. En segundo plano, XCode “desimbolicaba”, es decir, desensamblaba el código de iOS 4.2.1 y lo preparaba para poder depurar con él. Al finalizar, supe que había triunfado porque el Organizer me mostraba la versión correcta en mi dispositivo:

Ahora ya sólo me quedaba actualizar la información del proyecto (para que se compilase usando el SDK correcto) y del target (el ejecutable que genera XCode) para se enlazase con las bibliotecas de la versión correcta. Pulsamos sobre el proyecto, ? + I (obtener información) y en la pestaña Build, cambiamos Base SDK. En mi caso ponía 4.1 (missing) y le he puesto la última. Luego repetimos, pero en el Target, ? + I, build y ponemos el Base SDK a 4.2.

¡Listo! Graba (? + S) y cambia entre dispositivo y simulador un par de veces. Parece que XCode no refresca bien el cambio. Ahora, ya puedes probar con la 4.2.1 en el Simulador y en tus dispositivos.

P.D.: Jorge me avisó en este Tweet de que alguien ya había escrito algo sobre este problema, pero 1) está en Inglés y 2) no está tan mascadito. ¡Espero que os sirva!

Tagged with:
nov 14

En el post en el que anunciaba que mi primera App para iOS, MyEvents, ya estaba disponible en el App Store, David me pedía en un comentario que escribiera algo de cómo me he ido preparando para programar en Cocoa. Este post ya me estaba rondando por mi Things desde hacía tiempo, y un par de correos pidiendo lo mismo, unido a que en las NSCoder Nights mucha gente va a preguntarlo (y es una lata repetir siempre lo mismo ;-) ) me han llevado a escribir mi experiencia.

No esperes aquí un camino formativo “de academia”, con unos objetivos, etc. Es mi experiencia. Y por ello mismo, está en contínuo cambio. Os agradecería que, si habéis leído otros libros, consultáis otras webs, tenéis otros ejemplos, etc. los pongáis en los comentarios de forma que todos los programadores que lean el post se beneficien de las experiencias de todos.

Antes de empezar, disclaimer al canto. Probablemente son los años, o el haber estado alejado de los teclados unos años, o el tener mis neuronas seriamente perjudicadas por el abuso de alcohol en mi juventud y cafeína en la actualidad, pero a mí Cocoa / ObjectiveC / XCode no me han resultado “un juego de niños”. He tenido que esforzarme, leer mucho, probar cosas, equivocarme, frustrarme, volver a empezar, ver vídeos, etc. Lo digo, porque he leído en muchos sitios por Internet que la gente se pone a toda máquina con Cocoa Touch en dos/tres meses. Pues yo tengo que ser tonto de remate. Si tú tampoco eres capaz de saberte toda la API (incluyendo la parte privada) de iOS en dos meses, que sepas que tienes mi solidaridad.

El comienzo

Cuando me planteé meterme en Cocoa Touch, yo partía con tres grandes ventajas. Por un lado, en mi juventud programé mucho en C y C++, y C siempre ha sido mi lenguaje favorito. Sobre todo, porque fue el primero con el que hice cosas. Por otra parte, tras el intensivo machaque con las certificaciones Java e impartir un montón de cursos tenía bastante claro el patrón MVC. Ambas cosas son básicas: C + MVC, así que, si no tienes claro C te recomiendo lo primero que te mires el libro clásico de Kerninghan y Ritchie “The C Programming Language” para tener claro qué es un #define, un puntero, los tipos de datos que hay, estructuras de control (if, switch), el operador ternario ?, etc. MVC lo explican fantásticamente bien en los vídeos de iTunes U de la Universidad de Stanford, “Developing Apps for iOS”, capítulos 1 y 2. El cap. 2 es un ejemplo de cómo aplicar MVC.

La última ventaja, algo que me sigue sorprendiendo que sorprenda, es que hablo Inglés. Dominar el Inglés te da acceso a un montón de información escrita, vídeos, podcasts, y la posibilidad de charlar con gente si vas a la WWDC (de momento, un sueño para mi, pero ya veremos en 2011). Hay muchas formas de aprender Inglés, y distintos métodos. Escoge el que quieras, pero ponte ya. Sin excusas. Lee comics, ve las películas subtituladas en Inglés y con la pista de audio en Inglés, mira videos en Youtube, lo que sea. Pero practica. Ya. Deja de leer estas líneas, en serio: el impacto en tu vida de aprender Inglés será más importante que cualquier cosa que yo pueda contar.

Los primeros libros

Para arrancar, lo tenía muy claro: iba a leerme de cabo a rabo un par de libros, uno para principiantes y de estilo tutorial, y otro avanzado que se metiera a más bajo nivel con Cocoa Touch. Los comenté en este post. Pero como soy así de bueno, listo los cuatro que he leído para que los tengáis a mano:

Beginning iPhone 3 Development, de Dave Mark y Jeff LaMarche. El primero por el que empecé. Te explica todo paso a paso, y trata un montón de temas. En un punto tuve que parar, porque no tenía clara la base de ObjectiveC, y cosas como el KVC, las categorías o la gestión de memoria se me escapaban. Así que lo aparqué y me leí:

Learn Objective C on the Mac, de Mark Dalrymple y Scott Knaster. Este libro me gusta mucho porque es muy directo, si sabes de lo que te está hablando. No es tan tutorial como el otro, va al grano y te da una base imprescindible para programar. Debería haber empezado con este :-)

Tras estos dos, he leído algunos capítulos de More iPhone 3 Development, también de Dave Mark y Jeff LaMarche. No lo he leído completo, sino los capítulos que iba necesitando, de forma ad-hoc.

El último con el que estoy es iPhone SDK Programming, de Maher Ali. Más avanzado, prescinde de Interface Builder y lo construye todo a mano. Ideal, para saber qué pasa “detrás del telón” de IB. Y su introducción a Objective-C es muy buena, compacta, pero un poco densa.

Vídeo y audio

Mientras estaba leyendo esos libros he ido alternando con los vídeos de la Universidad de Stanford (que están disponibles en iTunes) sobre cómo programar para el iPhone. Son gratuítos y la única pega que se les puede buscar es que están en Inglés. El enlace para la versión en HD es este. También hay una versión en SD. Me parece casi perfecto ir leyendo y viendo un vídeo de vez de cuando, de forma que una cosa se apoya en la otra. Yo no tengo iPad donde verlo, pero se me ocurre que la forma perfecta es por la noche, en el sofá, con los auriculares puestos mientras tu media naranja ve otra cosa. El problema es que es mi media naranja la que lee en el iPad. Es suyo :-)

En audio sólo he escuchado un podcast de Cocoa: 85% cocoa. Súper recomendable, tanto por el contenido como por la estructura. Y no sólo se tratan temas de programación estrictamente: se hablan de otros detalles necesarios para el desarrollo. Un gran trabajo de José A. Lobato, culpable junto con otros de la comunidad NSCodeCenter y de las iniciativas NSCoder Night en España.

Webs

Además de los recursos de Apple (el Developer Center), uso mucho StackOverflow y ahora me estoy animando a entrar en NSCodeCenter. Con estos tres cubro prácticamente cualquier pregunta, además de blogs de programadores en Cocoa y otras cosas que me encuentro por Internet y guardo en Delicious.

Programar

Al final, a programar sólo se aprende programando. Por mucho que leas, por mucho que creas que sepas, la única forma de aprender a programar es haciendo programas. Puede parecer una perogrullada, pero no lo es. Así que ya sabes: programa. Aunque tu código sea feo, aunque no te apetezca enseñarlo (eso siempre pasa, somos muy pudorosos con nuestro código), sigue adelante. Ya aprenderás formas de hacerlo más bonito. Yo hasta que no me planteé algo propio no empecé a encontrarme con cosas que quería hacer y no sabía cómo.

Un compañero

Yo me he buscado recientemente un compi para hacer Apps a cuatro manos. De esta forma, puedo ver cómo programan otras personas, tengo que esforzarme en “hacerlo bonito”, ya que van a leer mi código, y avanzo mucho más rápido. Y me motiva mucho. Otra opción son las NSCoder Nights. Y si no lo hay en tu ciudad, monta tu la tuya. No necesitas más que una cuenta en Twitter y un bar. De ambas cosas hay abundancia en España.

Así que ya sabes: happy coding!

Tagged with:
nov 09

Al fin, tras casi un año desde que me planteé en serio dedicarme a esto de las Apps para iOS, mi primera App ha sido publicada en la App Store de iTunes. Antes de nada, el momento SPAM:

MyEvents, aplicación para no olvidar tus momentos importantes

  • Puedes verla y comprarla en iTunes a través de este enlace. ¡Vamos, que sólo son 0.79 € y así ayudas a un programador a pagar sus letras del yate y la mansión!
  • Si no tienes / quieres entrar en iTunes ahora mismo, la web de Femtocoders te explica de qué va MyEvents.
  • He abierto una sección en el blog con información sobre las Apps que vaya subiendo al App Store. Porque ahora van a empezar a subir como churros :-)

Es bonito el ver algo que has “hecho con tus manos” subido en la misma tienda donde compras tus aplicaciones. Es más bonito aún ver que buenos amigos la compran y me mandan correos con sugerencias de mejora. Pero lo mejor es ver que gente a la que no conozco, en el otro lado del mundo, compra tu App porque le gusta. Ver en las estadísticas compras de Bélgica, Francia, Alemania, Australia, EEUU, … aunque sólo sean una unidad, y aunque no genere ingresos de vértigo, es algo que te motiva mucho: esto que estoy haciendo le gusta a alguien.

Porque el camino es duro, no te engañes. En este año, he leído toda clase de libros, de Cocoa y de otras cosas, he preparado mi entorno de trabajo, me he esforzado programando, pero sobre todo he tenido que luchar con dos grandes enemigos:

  • el miedo a fracasar, a que se rían de tu trabajo
  • el volver a ser un simple programador, después de años de ocupar puestos de mando intermedio (o mando total cuando tenía mi empresa)

Volver a pensar como un programador, tener ganas de abrir XCode, volver a sentir ese “vicio por programar” me ha llevado meses. Casi ocho, hasta que he conseguido volver a despertar esa parte dormida de mi cerebro. No ha sido fácil.

Pero probablemente lo peor ha sido el superar las propias autolimitaciones que nos ponemos. Esa voz, dentro de tu mente, que te dice constantemente: “no, no lo hagas, no lo intentes, vas a fallar, aquí se está más cómodo, mucha gente no lo consigue, no pasa nada…”. Al final, tras lanzar el primer producto, otra voz ha aparecido echando a la primera y diciendo “a tomar por culo con los miedos, con las dudas, yo soy más duro y cabezón y al final, prevalezco”.

Tened cuidado con las limitaciones que os ponéis a vosotros mismos. Cuando se vencen, se ve que no eran para tanto.

Y, por supuesto, comprad la App :-)

Tagged with:
jun 25

Un poco (más) de autobombo. Comentaba hace unos días que me iba a presentar al examen de certifiación de Java Sun Certified Web Component Developer. Hoy, tras un par de semanas intensas y más sufrimiento del que esperaba, lo he aprobado con un 79%. Un poco raspado, ya que el aprobado está en el 70%, pero… está aprobado, ¿no?

Esta certificación se une al Sun Certified Java Programmer 1.5 y Sun Certified Business Component Developer 1.3 que ya tenía. Y, si todo va bien, a finales de Julio me presentaré al SCJP 1.6, para así tener estas cuatro certificaciones y poder cobrar mis horas a precio de Gurú :-) . No, ahora en serio, voy a intentar aplicar estas certificaciones en algo que quiero preparar en los próximos meses. Permanezcan atentos a sus receptores…

Tagged with:
jun 10

Cuando el año pasado en Octubre, decidí dejar Isotrol e iniciar una nueva etapa en solitario programando apps para el iOS (el S.O. del iPhone, iPod Touch e iPad) tenía claro que no quería cometer viejos errores de mis anteriores etapas como empresario. Quería crecer y mejorar, como persona, como profesional y como emprendedor. Por ello me metí en Amazon y compré un conjunto de libros que tocan estos tres temas.

Pero claro, comprar los libros no es lo mismo que leerlos. Y leerlos no es lo mismo que comprenderlos. Y, en cualquier caso, lo importante, lo único importante de toda preparación, es aplicar lo aprendido. Leer, comprender, aceptar e interiorizar no son nada comparados con hacer. La parte más importante del Getting Thing Done es, precisamente, el Done.

De momento, llevo leídos:

  • Gestiona mejor tu vida, de Berto Pena, librazo que recomiendo a cualquiera que sienta que no le llegan las horas al final del día.
  • The 4 hour workweek, un libro revolucionario por lo simple que te plantea cómo cambiar las cosas. Hay que leerlo dejándose retar por las nuevas ideas de Tim Ferriss y ser capaz de ser flexibles y responder al reto. Me lo recomendó Jaime Gallo y ha sido una revelación.
  • Beginning iPhone 3 Development ha sido mi primer libro de iPhone SDK, y me ha ayudado a preparar mis primeras Apps. He necesitado leerme también (en formato electrónico, no aparece en la foto) Learn Objective-C on the Mac, para tener una idea del lenguaje que está detrás de Cocoa Touch y no perderme. Este último me ha encantado, porque es muy académico y directo. Si sabes C, o Java, te explica las cosas con profundidad y sin mitos. Pero no te lleva de la manita, ni trata de suavizar según que cosas.

Estoy ahora mismo con:

Y luego vendrán:

  • En Julio, SCJP 1.6 Study Guide.
  • Y en Agosto – Septiembre, mezclaré los libros de Joel Spolsky y Micro ISV con el segundo del iPhone, iPhone SDK 3 Programming.

Por supuesto, seguiremos leyendo en blogs, en PDFs (algo del iPad habrá que mirar), etc. Es fundamental el estar permanentemente formándonos, revisando, mejorando (o intentándolo). Tener curiosidad y ganas de aprender es uno de los ingredientes de la salsa de la vida.

¿Y tú? ¿Con qué libros andas ahora? ¿Me recomiendas alguno?

Tagged with:
jun 09

Pulsa en la foto para ver al autor.

El Sun Certified Web Component Developer es el examen de certificación de Sun sobre las tecnologías Servlet y JSP de Java EE. Me apetecía tenerlo, tras aprobar en 2008 el SCJP y el año pasado el SCBCD. Y en ello estoy ahora, estudiando de cara al día 25, cuando tendré que hacer el examen.

Para pasarlo, estoy usando el libro de Kathy Sierra, Bryan Basham y Bert Bates (de nuevo, esta gente sólo escribe libros) Head First Servlets & JSP. No se si lo he comentado antes por aquí, pero me encantan los libros de la serie Head First. Con tantos dibujitos, fotos y chorradas, aprendes casi sin darte cuenta. Son efectivos, y ayudan a prepararse este examen con el mínimo sufrimiento. Un poco lo que siempre digo al empezar mis cursos: “aquí os vais a reír mucho e igual aprendéis algo”.

Además del libro (y de tener los Vouchers para acceder al examen y apuntarte en la web de Prometric), es necesario probar con pequeños programitas Java los conceptos que aparecen en el libro. En mi caso, estoy abusando de mi pequeño Netbook con Ubuntu Netbook Remix, al que le he instalado una versión portable de Java JDK 6 y Tomcat y que llevo a todas partes para repasar. Otra de las herramientas importantes que estoy usando es un mapa mental de la certificación SCWCD creado con XMind, que retoco en Linux y en mi MacBook Pro. Es un work-in-progress, pero podéis verlo en:

http://www.xmind.net/share/dfreniche/

Y, por supuesto, ya me he comprado el simulador del examen de Enthuware. Espero que, como en las dos anteriores ocasiones, me ayude a aprobar.

Ya os contaré si apruebo. Si no, me callaré como una pu…erta :-)

may 19

Los programadores / informáticos sólo vemos en 7 colores: los del arcoiris. Eso del “verde manzana” lo podemos entender, porque hay un objeto real al que referirnos para la analogía. El problema es cuando nos hablan del “blanco roto”, el “beige” o cualquier otra cosa por el estilo. Por eso, alguna autoridad superior creó a los Diseñadores. Esta gente sí que entiende los colores, los pantones, los CMYK y los programas de magia negra: Photoshop, InDesign, Inkscape, Gimp, Pixelmator, …

Este problema es más universal de lo que pensaba. En este post de Stefaan Lesage de Cocoheads Belgium comenta en la introducción sus problemas con los iconos, que coinciden plenamente con los míos.

El caso es que, intentando hacer aplicaciones para el iPhone me he encontrado cara a cara con mis limitaciones: mis aplicaciones son, probablemente, las más feas que he visto en un dispositivo multitouch. Casi parecen de Blackberry… En fin, bromas aparte, me he lanzado a buscar iconos que se puedan utilizar libremente y que sean gratis para mis aplicaciones de iPhone. Estos no son iconos para personalizar tu iPhone, sino para hacer aplicaciones. Por supuesto, cualquiera que esté programando para Android encontrará aquí un recurso valioso.

Pixel Press Icons

Pulsa para ir a la página del autor

Licencia: Creative Commons Attribution 2.5 Canada license. Se pueden usar libremente y modificar, para programas gratuitos y de pago, siempre que se indique de dónde proceden (el autor)

App bits

Licencia: Creative Commons Attribution-No Derivative Works 3.0 License. Se pueden usar libremente, para programas gratuitos y de pago, siempre que se indique de dónde proceden (el autor). No se pueden modificar

Glyphish

Licencia: Creative Commons Attribution. Se pueden usar libremente y modificar, para programas gratuitos y de pago, siempre que se indique de dónde proceden (el autor).

The Working Group

Pulsa para ir a la página del autor

Licencia: Creative Commons Attribution-Share Alike license. Se pueden usar libremente y modificar, para programas gratuitos y de pago, siempre que se indique de dónde proceden (el autor)

Android Icons

Sí, ¿por qué no?. ¡Usemos los iconos, vengan de donde vengan, con tal de que sean bonitos! (y no contradigan las HIG de Apple)

Pulsa para ir a la página del autor

Licencia: Creative Commons Attribution-Share Alike license. Se pueden usar libremente y modificar, para programas gratuitos y de pago, siempre que se indique de dónde proceden (el autor)

Exprimiendo las fuentes del sistema

Si necesitas más iconos, Ole Begemann nos muestra cómo sacar iconos de las fuentes de Apple.

Y tú, ¿qué otros iconos libres / gratis conoces?

Compártelos en los comentarios, e iré actualizando esta entrada. Así ayudarás a los programadores a crear aplicaciones más bonitas y recuerda: por cada conocimiento sobre iPhone que compartes, San Jobs, allá en el Cielo, esboza una sonrisa.

Actualización 21/05/2010

Me he encontrado con los iconos de FamFamFam, varios grupos de iconos, con distintas licencias (Creative Commons unos y gratis para uso particular otros).

Pulsa para ir a la página del autor

Actualización 21/06/2010

Haciendo limpieza en mis notas de Evernote me he encontrado con esta dirección, que es una lista como esta, pero más grande :-)

http://www.maxpower.ca/free-icons/2006/03/05/

Tagged with:
nov 29

Estoy muy ilusionado. Excitado. Motivado. Todo lo bueno que puedas pensar que acabe en ado. La razón: inicio una nueva etapa profesional en Enero de 2010, que comienzo a preparar ahora en Diciembre, relacionada con la tecnología que más me gusta ahora. ¿Doy pistas?. Sí, es el mundo Mac y el iPhone. Voy a dedicarme a escribir aplicaciones para la plataforma Movil de Apple (iPhone y iPod touch).

Mi vida laboral es un continuo cambio. De empresas y de roles. He hecho casi de todo, como se puede ver en mi perfil de linkedin. Desde vender en una tienda de ordenadores, hasta tener mi propia empresa, ser consultor para Pymes, jefe de proyecto en Telefónica Soluciones, formador, responsable de TI… Muchos cambios, y casi siempre como Empresario Individual (autónomo o freelance, como prefieras). Mi perfil choca un poco en España (y más en el Sur), donde en mi sector los ciclos duran algunos años más. En otros sitios encajaría mejor. Pero vivo donde vivo y además me gusta. En todos los puestos que he estado he sido siempre un vector de cambio. Nunca me conformo. Cuando algo funciona mal, procuro cambiarlo. Cuando está bien, trato de mejorarlo. Bueno, todo, menos esta web, que está abandonada. Pero le va a llegar su hora pronto :-)

Bueno, que me pierdo. La verdad es que, con la crisis rugiendo fuera y todo el paro que hay ahora hay que estar un poco loco para lanzarse a montar un negocio. Eso, y ser muy optimista, tener energía, confiar en uno mismo, conocer el sector y, sobre todo, conocer los propios puntos débiles para no caer en los errores de pasadas veces. Esta es la segunda vez que monto una empresa. Y Elelog sigue existiendo, gracias al trabajo de David. Pero siempre me gusta pensar que si sigue ahí también es un poco por mi culpa.

Lo peor del cambio es irme de Isotrol. He conocido a mucha gente excelente y que, sorprendentemente, me aprecia de verdad. ¡Con lo mal que les trato!. Será por eso, a lo mejor ;-) . El trabajo gestionando los servicios de Isotrol ha sido apasionante. Me ha encantado, porque he podido aprender sin parar, tanto de gestión de servicios (ITIL) como de gestión de equipos y de tecnología. Encima, tenía pleno apoyo de la dirección y un equipo que solo puedo describir como casi inmejorable. Como personas, para comérselos. Como profesionales uno a uno, de lo mejorcito que he visto. Una vez que han empastado como equipo es impresionante el trabajo que han desarrollado. De 13 personas cuando yo llegué, con n servicios, hemos pasado a n*2 servicios con 7 personas. En serio, si alguien de Google está leyendo esto, que se lleve el lote completo, que esta gente te montan lo que necesites para la nube en un rato.

Parte de mi equipo en Isotrol: José, Gabri y Javi con un insider :-)

Parte de mi equipo en Isotrol: José, Gabri y Javi con un insider :-)

Así que estamos en un cambio por amor al iPhone, por culpa de mi mala cabeza y dejando atrás un sitio en el que he estado muy, muy a gusto. Toca ahora leer sobre emprendimiento, web 2.0, Objective-C, XML, iPhone y no se cuántas cosas más. Configurar máquinas, programar, planificar, pensar…

¡Nos vemos en el AppStore en breve!

Tagged with:
mar 15

Ya he comentado por aquí antes que uso los mapas mentales a menudo para organizar mis ideas. Y los uso para todo. Uno de ellos, que se está volviendo enorme, es el que uso para organizar mis proyectos de “retro-informática”. Que si comprar una compact-flash para usarla como disco duro en un Amiga 600, que si montar una disquetera de 5″1/4, esas cosas.

Pues XMind me ha dejado de funcionar en mi Mac. Y no me preguntéis porqué, porque no tengo ni idea de la causa raíz del problema. No se si será haber instalado el SDK para el iPhone, o haber trasteado cosas para prepararme el SCJP / SCBCD, el caso es que XMind ahora no me funciona. Al ser un programa Java, he buscado si dejaba algún log y el error que me aparece es: “No application id has been found”. Después de Googlear un rato, parece que este problema se origina cuando Eclipse (o alguna de sus bibliotecas) no está bien instalado.

Sea como sea, necesito que XMind funcione, y he localizado una solución temporal válida. En la web de XMind podemos descargar una versión Mac (un DMG) y una versión “portable”. Me he bajado la versión portable y he copiado en la carpeta Aplicaciones de mi Mac las carpetas “XMind for Mac OS X”, donde está el ejecutable, y “Commons”, que es donde están las bibliotecas de Eclipse que antes no se encontraban. Mano de Santo. Ahora puedo seguir con mis mapas, que es lo que me urge. La solución definitiva, la publicaré si la encuentro.

Os dejo con el mapa de mis retro-máquinas, que está en constante cambio :-)

Mapa mental de mis máquinas

Tagged with:
mar 01

Cuando aprobé el SCBCD, el pasado Enero, terminé con el cerebro como si tuviera a Bob Esponja en lugar de meninges. Decidí darme un mes para recuperar la temperatura de funcionamiento normal de mi cabeza. Ese mes ha pasado, y hoy voy a empezar con el SCWCD. Otra sopa de letras. Esta es la certificación de Java EE sobre Servlets y JSP, y alguna tecnología web más.

No tengo ni idea de cuándo me voy a presentar. Esta vez quiero dedicar un mes a leerme el libro y, cuando lo tenga visto, hacer exámenes de prueba tranquilamente. Y luego presentarme.

Tagged with:
feb 05

Ya comenté en Diciembre que había aprobado el SCJP (Certificación de Sun como Programador Java, v1.5). Pues bien, hace una semana aprobé la SCBCD, la certificación de desarrollador de componentes de negocio, v1.3.

¿Bueno, y qué es ésto?. Una manera de demostrar que medio empiezo a entender qué es un Enterprise Java Bean (EJB), que es, explicado muy llanamente, un componente (un conjunto de clases java, archivos de configuración XML y otras muchas cositas y reglas) que se comprime en formato ZIP y que permite representar datos, tratar mensajes o bien gestionar los procesos de una web. Supongo que los puristas se estarán removiendo en su silla por esta explicación, pero es que no quiero extenderme ni largar un rollo sobre EJBs.

Este año, 2009, me quiero dedicar a “coleccionar” certificaciones. Me explico. Durante unos años he sido profesor errante de diversas materias. Desde Java básico a gestión de proyectos. Y he tenido que leer un par de libros. Creo que ahora es tiempo de recoger y plasmar en titulitos del fabricante lo que se supone que medio controlo.

Algunos de los libros frikis que poseo

Algunos de los libros frikis que poseo

La siguiente certificación va a ser el Desarrollador de Componentes Web (SCWCD). Probablemente después venga el SCJD y a lo mejor alguna certificación Linux, como la LPI-1 (la sencillita).

Pero antes, me voy a dar un mes de reposo mental, que falta me hace, mientras espero el suspenso en la certificación de ITIL Service Manager :-)

Tagged with:
dic 22

Probablemente los SCJPs entre el público piensen “pues vaya nota”, “tampoco es para sacar pecho publicándola”, etc. Y tienen razón. Para aprobar el SCJP es necesario sacar al menos un 59%, y con un 70% uno está más que aprobado. Con lo que una buena nota sería del 80% para arriba. Pero considerando mi situación actual:

  • con dos niños de menos de 3 años el mayor. Vamos, que no duermo mucho.
  • viviendo a 120 Km del lugar de trabajo (3 h. de desplazamientos diarios, para que luego digan que la juventud no queremos trabajar :-) )
  • con unos años ya, ¡que la costumbre de estudiar se pierde!
  • con el nuevo rol que desempeño en Isotrol de Service Manager, que me exige un 120% de dedicación.

estoy feliz de haber cumplido, como me exigía a mi mismo en éste post.

Y al final lo que cuenta es, al final, tenerlo o no. Y ya lo tengo. Algo más tarde de lo que comentaba en un post pasado, pero al final lo que bien acaba…

Para prepararlo, he seguido todo lo que comentaba en éste post, pero además he añadido los test de preparación de Enthuware, tests que recomiendo encarecidamente (no me llevo comisión) ya que imitan a la perfección el entorno que después te encuentras en el examen. Y el coste es de risa, comparado con lo que te ayudan a estudiar.

Durante la certificación he generado mucho, pero que mucho código fuente de ejemplo. No estaría mal subirlo por aquí cuando tenga un rato.

Y ahora, a preparar el SCBCD, Sun Certified Business Component Developer, el de los EJBs… y el Service Manager de ITIL… a la vez… y en Navidades… si es que…

Tagged with:
jun 08

Hace ya un tiempo escribí este post contando que había conseguido pasar de Typo a WordPress. También decía que algún día escribiría un paso a paso. Un comentario del usuario June me lo pedía, y vamos a tratar de explicarlo.

Para realizar éste paso a paso se necesitan tres cosas (evidentemente):

  • una instalación de Typo3 con la extensión tt_news instalada, que son las noticias que queremos migrar
  • una instalación de WordPress vacía, donde queremos importar las noticias de Typo3
  • paciencia y nervios de acero :-)

La idea general del proceso es que WordPress permite importar entradas desde diferentes fuentes. Una de ellas es un archivo RSS 2.0. Por ello, lo que vamos a buscar es generar un RSS con todas las noticias en Typo3. Guardaremos ese fichero y posteriormente lo importaremos en WordPress.

Typo3

En Typo3 necesitamos generar las noticias, pero en formato RSS y no mostrarlas como normalmente aparecen. Para ello, nos vamos a crear dos páginas, una llamada RSS que es donde colocaremos un plug-in tt_news y otra colgando de ésta que es necesaria para mostrar las noticias una a una.

Páginas Typo3 para conseguir RSSContenido de la página que genera los RSS

He creado ambas páginas activando la opción de “ocultar en menú”, ya que en mi caso no quería que aparecieran en el menú principal de mi sitio.

Dentro de la página rss news (podemos ver su contenido en la imagen lateral) crearemos un plug-in tt_news y un template de extensión (llamado por defecto, y así se quedó, +ext).

La configuración del plugin tt_news: ponemos en la opción de mostrar las noticias LIST (todas las noticias). Es importante definir en Otras opciones la “PageId donde se muestran noticias individuales” y “PageId a donde regresar”, apuntando a la página “one rss”. El punto de inicio de las noticias será, como siempre, la carpeta donde almacenemos nuestros tt_news.

El contenido del Template

Constants:

### Configure tt_news to display the xml template
### Page that contains the News List
xmlnewsfeed_id = 171
### RSS Setup
plugin.tt_news  {
displayXML {
rss2_tmplFile = EXT:tt_news/res/rss_2.tmpl
xmlFormat = rss2xmlTitle = Export RSS to WordPress
xmplLink = http://www.freniche.com
xmlDesc = Exporting to WPxmlLang = es
xmlIcon = fileadmin/rss_icon.giftitle_stdWrap.htmlSpecialChars = 1

title_stdWrap.htmlSpecialChars.preserveEntities = 1

subheader_stdWrap.stripHtml = 1

subheader_stdWrap.htmlSpecialChars = 1

subheader_stdWrap.htmlSpecialChars.preserveEntities = 1

subheader_stdWrap.crop = 500| ... | 1

subheader_stdWrap.ifEmpty.field = bodytext

xmlLastBuildDate = 1

}

}

plugin.tt_news.limit = 5

plugin.tt_news.displayXML.xmlLimit = 1000

Setup:

# ------------- RSS News Plugin ------------------------------
###Header
page.headerData.500 = TEXT
# MUY IMPORTANTE: las dos siguientes líneas deben ir juntas, las he separado para que se lean mejor en el post
page.headerData.500.value = <link rel="alternate"
type="application/rss+xml" title="RSS-Feed" href="http://www.freniche.com/index.php?id={$xmlnewsfeed_id}&type=100" />
# ------------- This enables the xml news feed ---------------------
xmlnews = PAGExmlnews {
typeNum = 10020 >20 < plugin.tt_news20.pid_list >

20.pid_list = {$xmlnews.pid_list}

20.singlePid = {$xmlnews.singlePid}20.defaultCode = XML

config {disableAllHeaderCode = 1

additionalHeaders = Content-type:text/xmlno_cache = 1

xhtml_cleaning = 0}

}

Es muy importante que en el plugin se incluya el template estático plugin.alt.xml (96) y el template estático (de las extensiones) News Feed (RSS, RD, ATOM) (tt_news), como se puede ver en la imagen.

Configuración del template

En la página one-rss debemos poner un plug-in tt_news (noticias) para que se muestren las noticias una a una (opción qué mostrar puesta a SINGLE).

Generar el RSS

Ahora ya podemos probar si funciona la generación del RSS. Para ello, mostraremos en otra ventana (o pestaña) la página rss news, usando su pageId (que en éste caso es 171) e indicando que el tipo de página es 100. Este type=100 lo indicamos en la parte setup del template (typenum = 100). Luego si vamos a: http://www.freniche.com/index.php?id=171&type=100, se mostrará un flujo RSS al que podremos suscribirnos.

Si hemos llegado hasta aquí, podemos probar a pulsar CTRL-U (o, en mi Mac, Command-U) para ver el código fuente del RSS. Veremos que aparecen las entradas de las noticias de Typo3. ¡Vamos por el buen camino!rss.png

Este código XML podemos guardarlo como un fichero que se llame rss.txt. Ahora pasemos a WordPress para importarlo.

WordPress

Aquí es todo muuuucho más fácil. WordPress importa RSS sin problemas, a través de la opción Administrar -> Importar. Entre los formatos disponibles aparece RSS. Basta ahora con seleccionar el fichero rss.txt que hemos generado antes y ¡listo!. Las entradas comienzan a importarse.

importar-rss.png

En mi caso el límite de subida del fichero RSS de WordPress era demasiado pequeño, así que tiré por la calle de enmedio y rompí el fichero en varios trozos para que entraran correctamente en su tamaño. Para eso está en UNIX el comando split.

Tagged with:
preload preload preload