Máster de Apps Móviles en Chiclana: experiencias en la radio

Selfie Conectados en RAI

Una pequeña actualización a la información del Máster de Comunicación Plus para aprender a desarrollar Apps en Chiclana, a todo confort, con unos bañitos en la playa que ya van haciendo falta:

  • tuvimos la suerte de ser entrevistados por Javier Oliva en el programa de Canal Sur Conectados en RAI.
  • Javier Suárez Ruiz, el profesor del Máster encargado de Windows Phone (genuflexión y respeto al crack) ha escrito en su blog (que, por cierto, para los que quieran aprender Windows Phone es el sitio a donde ir) una entrada sobre el Máster y su visión del mismo.
  • he rectificado en el post que escribí sobre el Máster las horas totales del mismo. Son 240 h, ya que cada semana son 60 h de formación: 50 h de la plataforma de la semana (iOS, WP, Android) y 10 de otras cosas (prototipado, UX, etc.)
  • el Máster empieza el próximo Domingo 18. Muchas ganas de irme a Chiclana y huir del pólen y las alergias del campo.
  • durante el Máster, esperad fotos y recochineo desde la playa y piscina. He avisado.
j j j

Aprende iOS, Android, HTML5 y Windows Phone en la playa

TL;DR;

Me voy a la playa a enseñar iOS y Android. Si no vienes, puedes sentir envidia. Es normal.

El Máster

Pues sí. Este es el panorama al que se enfrentan los alumnos del I Máster en Desarrollo de Aplicaciones Móviles en Andalucía de Comunicación Plus. Retirarse del mundanal ruido junto a las playas de Chiclana, en Cádiz. En un apartahotel de 4 llaves. Y una vez allí, darle a la tecla 50 h por plataforma, en formato ultra-intensivo, empezando un Domingo y acabando un Sábado.

Si echáis cuentas, 50 h seguidas de Domingo a Sábado queman a cualquiera. Por eso nos han prometido actividades “extraescolares” con las que recuperar cuerpo y mente en tiempo récord. Algo he oído de masajes, paseos en bici de montaña por la playa, clases de Pádel o salir al mar a hacer Paddle Surf. Y claro, además tenemos las piscinas y la playa de Chiclana. Mal no vamos a estar.

Pero volviendo al contenido del Máster, me parece muy interesante que se traten cuatro plataformas distintas (luego se puede escoger la que te guste más, o de la que te ofrezca trabajo). Además de aprender mucho, puedes comparar y ver lo que tienen de mejor unas sobre otras. Por ejemplo, en Windows Phone tienen bindings (en iOS no tenemos Cocoa Bindings, sólo en OS X). O puedes ver que la forma de internacionalizar proyectos de Android probablemente sea la más limpia (en mi opinión). O por qué Eclipse necesita ya la jubilación (después de ver Visual Studio y Xcode). Y además, habrá unas horas dedicadas a Márketing Online o a pensar en la Experiencia de Usuario. Esto último lo dará el gran Jorge Galindo de 47 Degrees con el que organicé en Febrero pasado el curso gratuito para parados y estudiantes de iOS.

Yo me voy a encargar de las partes de iOS y Android. Vamos, de las que se algo, porque de las otras dos flojito, flojito. Creo que 50 h dan para mucho y podremos ver de todo: herramientas, código, patrones de diseño, frameworks, … y apps. Muchas apps. Cosas aplicables directamente (o eso espero).

Hay muchas cosas buenas en este Máster, pero el alejarte del trabajo para enfocarte en aprender, la intensidad de la formación (un poco a la Big Nerd Ranch, pero en Cádiz, que lo mejora todo) y el apoyo del Director del Máster, Pablo Gª Trespalacios (que sabe de lo que habla porque para eso ha sido alumno mío) me parecen lo mejor. Y los alumnos, claro, que no saben dónde se meten :-)

El vil metal

Como he leído por ahí es muy caro. Bueno, para empezar puedes buscarte el alojamiento y ahorrarte algo, o escoger semanas sueltas. Si vamos a lo más “caro”, son 5000 Eur., que es un dinero. Pero eso incluye:

  • un mes alojado en un complejo de apartamentos con pensión completa
  • todas las pausas de cafés
  • las actividades extra académicas
  • y 200 h, al menos, de formación. Si valoras en 1000 Eur todo lo anterior, cada hora de formación te sale a 20 Eur.

UPDATE 12 Mayo No son 200 h. Son 240 h, ya que cada semana tiene otras horas dedicadas a prototipado, UX, márketing… sólo había incluido mis 50 h e ignorado al resto :-D

  • y hay una financiación muy interesante (los dos primeros años no pagas nada).

Si te interesa esto, tienes toda la información en la web de Comunicación Plus.

Yo ya estoy buscando las chanclas de la playa para echar en la mochila junto con el portátil. Lo dicho: puedes sentir envidia :-)

j j j

Curso gratuito iOS en Cádiz AKA ayudando a la comunidad

Ser awesómico es la marca de la casa de David Bonilla. Montar movidas guapas la de Jorge Galindo. La mía, probablemente, es ponerse palote con cualquier trozo de código.

El caso es que, por culpa de David y su #weareatwar se están haciendo cosas y hay gente predispuesta a hacer cosas que antes no se nos hubieran ocurrido. Está dinamizando a la comunidad TI española que quiere escuchar. Esas son las razones que han llevado a Jorge a dejarse liar (aunque para liar a Jorge tampoco es que tengas que esforzarte mucho) y pegarse el curro de cargar con todas las tareas necesarias para que yo pueda llegar a Cádiz e impartir este curso. Lo explica muy bien en su blog.

Yo quería contar aquí el porqué de esta iniciativa. Cómo es que un camarada mercenario como yo deje el vil metal de lado y decida pasar un fin de semana en Cádiz hablando de desarrollo iOS.

La primera razón es que tampoco es tan malo como parece. Cuando tu trabajo te gusta tanto como a mi, estar hablando de desarrollo y programando es casi lo mismo que haces para divertirte. Así que tampoco es tan dura la cosa. Cierto es que a mucha gente la perspectiva de impartir 20h de curso entre Viernes, Sábado y Domingo frente a un grupo de 15 personas le aterraría. Bueno, a mi me aterra la contabilidad. Todos tenemos limitaciones (yo, muchas).

Pero esto es algo que me lleva dando vueltas en la cabeza desde el año pasado. La idea de que somos pocos informáticos, de que es una carrera / estudios que se cursan poco. De que los que estamos cada vez somos más viejos. Que hay pocos chavales. Y chavalas, ni te cuento. Y no es bueno. Pensando en la ley de Oferta y Demanda, cuantos menos seamos, más pasta y trabajo para los que quedemos. Pero la realidad es que la demanda crece muy muy por encima de la oferta, y esto va a seguir así en el futuro. No sólo son los móviles. Son los wearables. Son los edificios conectados. El Internet de las cosas. Los coches. Todo. Todo necesita un ordenador conectado y Apps para eso. Las TVs. Las nuevas consolas. Y no hay manos para todo este trabajo.

Y cuando nos vienen los agobios uno se dedica a vampirizar la comunidad. Copiamos código de Stack Overflow. Usamos librerías de Github. Preguntamos en nuestras reuniones (como la NSCoder Night de Sevilla). Nos pasamos trabajo unos a otros. Escuchamos podcasts. Nos seguimos en Twitter. Nos vemos en las conferencias. La comunidad nos motiva y nos enseña. La necesitamos para ser mejores programadores.

Esta es la segunda razón por la que he querido poner este granito de arena: ampliar la pequeña comunidad iOS / Cocoa en Andalucía. Y, de paso, ayudar en lo que pueda a una de las zonas de España con más paro, en lo poco que pueda. Ojo, que no soy Teresa de Calcuta. Pero muchas veces no hacen falta grandes gentos: con ser un poco mejor cada día y dar la mitad para tí y la mitad para los demás, basta.

Así que ya sabes. Si estás parado y sabes programar, o eres estudiante (que, por definición, está parados a no ser que seas tonto como yo y trabajes mientras estudias, forma perfecta de no acabar la carrera) intentaremos meterte en una de las 15 plazas del curso de desarrollo iOS que vamos a impartir en Cádiz. Todos los detalles aquí.

Espero dar un curso awesómico, que sea una movida tan guapa que todos nos pongamos palotes.

j j j

Voy a aprender Git

Git. Ese sistema de control de versiones para superdotados. Es un hijo de Linus (el creador de Linux). Por ello, la sencillez no es una de sus características. Si alguna vez has configurado y compilado un kernel de Linux, sabrás que a este señor no le gusta ningún programa sin al menos cincuenta opciones en la línea de comandos: veinticinco empezando por -y otras veinticinco por --. Y diez más que no están documentadas. Para usar Git se asume que ya tienes de antemano una serie de habilidades (manejo de la Terminal, uso de ssh, resistencia innata al desaliento ante una documentación fea como un demonio, coeficiente intelectual de 300, …)

Así que uso habitualmente Mercurial (siempre que puedo, antes que Git) por varias razones:

  • me resultó muy sencillo aprender a usar Mercurial gracias al excelente tutorial de Joel Spolsky
  • el 80% de las cosas que haces habitualmente es muy sencillo de hacer con HG
  • no necesitas configurar nada: te lo bajas, lo instalas, vas a una carpeta, escribes hg init y listo
  • tanto BitBucket como SourceTree lo soportan. Luego es perfecto para mi.
  • si funciona, no lo toques

Pero claro, no se Git. Y me siento estúpido.

Hay varias cosas que considero “la maratón mental del informático”. Lo que distingue a los buenos de los que tienen que seguir esforzándose. Cosas difíciles, que te obligan a aprender y a exprimirte el cerebro. Por supuesto, no he hecho ninguna de ellas, autocolocándome en uno de los dos anteriores grupos. Estos retos son:

  • dominar el uso de expresiones regulares (sin mirar en StackOverflow)
  • escribir una pequeña aplicación o demo completamente en ensamblador
  • hacer una aplicación web en un lenguaje funcional, como Clojure
  • hacer un juego usando OpenGL
  • entender qué demonios hace git con las ramas y git flow

Pues bien, una de ellas voy a tacharla de la lista, pero ya. El uso de Git está muy extendido, y soluciones que uso habitualmente como Cocoa Pods lo utilizan de forma extensa. Tengo que aprender a usarlo, quiera o no. Además, en varios proyectos se necesita Git y aunque con SourceTree puedo ir tirando, quiero comprender qué se cuece tras la interfaz bonita y ser capaz de manejar este DCVS yo solito.

La opción de leer un libro me aterrorizaba: demasiado esfuerzo tras tanto esfuerzo con otras cosas. Así que la mejor solución va a ser asistir al curso Entendiendo Git que Alfonso Alba imparte en Las Rozas. Creo que aún estás a tiempo de conseguir un descuento por compra anticipada. Voy con muchas esperanzas puestas en el curso, para tener una base que me permita manejar en el día a día este DCVS sin problemas, y explorar por mi cuenta. Vamos, que espero entrar chapurreando un par de palabras en Git y salir hablando, con acento y poco vocabulario, Git. Pero entendiéndolo al menos.

Escribiré qué he aprendido en el curso cuando lo termine. Pero conociendo a Alfonso de las NSCoder Night de Madrid creo que la duda no está en la calidad del curso, sino en si mi mente será capaz de pasar por la maratón. Espero que si.

j j j

Un día en “Teacher’s Hell”

Credit: http://www.flickr.com/photos/barkbud/4257136773/

Credit: http://www.flickr.com/photos/barkbud/4257136773/

He impartido muchos cursos a lo largo de mi vida profesional. Muchos. Muchas horas de formación. Es algo que me gusta mucho y me llena. Puedo explotar mi faceta de abuelo cebolleta y contar todas las batallitas que me apetezcan a un público cautivo que no puede huir a ninguna otra parte. Y encima me pagan por ello. Así qué todos contentos (menos los alumnos que tienen que aguantarme, claro)

Debido a esta experiencia acumulada, suelo preparar con mucho esmero cada curso. Reviso mi bolsa para comprobar que llevo el cargador del portátil, los cables de conexión al proyector, si llevo algún bolígrafo o libreta, el mando a distancia para pasearme mientras pongo alguna presentación en Keynote. Y voy preparado para todo. Bueno, para casi todo. Hace poco viví un completo Teacher’s Hell, una de las peores situaciones que he vivido. Hasta perder el avión de ida en el viaje a Panamá para el curso de Android que impartí en Julio me parece menos grave. Por la acumulación de problemas.

Llegué al aula con tiempo. Al menos, 40 minutos antes de empezar el curso. Empezamos a las 16:00 y acabamos a las 21:00, y son las 15:20. Así tengo tiempo de encender el equipo, probar el proyector, conectarme a la red, beber un café… Entro en el aula y todos los alumnos ya están allí, sentados. El proyector encendido. En tono de sorna digo “bueno, parece que hay ganas de empezar, ¿no?. ¡Eso es bueno, venís con ganas!”. Mirada sería del responsable. “Diego, empezábamos a las 15:00″.

De pronto, una sensación de caer en el vacío. El mundo se me viene encima. Una vez me presenté para un curso en la dirección equivocada y tuve que recorrer media Córdoba a la carrera. Pero llegar tarde, nunca, si puedo evitarlo. En mi calendario, apuntado el inicio a las 16:00. En la presentación del curso, igual. En mi mente, las 16:00. Reviso el correo, y efectivamente no aparece ninguna hora. Hablamos de “por la tarde”. Probablemente asumí mal el horario, pero me extraña.

Me rehago. Saco el ordenador con una sonrisa nerviosa mientras me disculpo, lo enciendo y lo conecto al proyector. No se ve. Miro el cable de conexión al proyector: hay un bifurcador extraño, uno de esos cables en Y que permiten ver el proyector y la imagen en un monitor a la vez. Desconecto y conecto el proyector directamente al portátil. Se ve en la pantalla. Uf.

Tengo que dejarles los ejemplos a los alumnos, y además ellos deben conectarse a una B.D. MySQL que llevo en mi MacBook Pro. Es un curso de Hibernate. No MySQL == No curso. Pregunto por la WiFi. No hay WiFi. Bueno, sin problema, pienso: “me conecto con un cable Ethernet y listo”. No, no tan rápido, la dirección de sistemas no te deja conectarte a la red, y además no vas a obtener IP con tu portátil. Bien. El entorno de desarrollo que traigo montado y la base de datos MySQL al infierno.

Bueno, aunque todo se tuerce, puedo montarlo todo durante el curso, mientras hablo de la teoría con mi keynote del Mac. El ordenador del profesor es un Dell con Windows XP. A fin de cuentas, me han dejado usuario y contraseña. Los introduzco y me sale el típico “tu contraseña ha caducado, y como veo que no tienes mucha prisa ahora mismo voy a molestarte un poco más obligándote a cambiarla“. Evito la tentación creciente de gritar y golpear algo. Me concentro e introduzco una contraseña segura, para evitar chorradas con el criterio de generación de contraseñas: “la contraseña es corta, debe tener mayúsculas, minúsculas y el Emoji de un caganet“. El ordenador me dice que no puedo cambiar la contraseña, que no tengo permisos para ello, pero que o la cambio o no puedo iniciar sesión. Llamo a soporte. Comento el problema, y lo solucionan de forma remota. Inicio sesión y se lanza un logon script de esos que tardan en una red corporativa medio año mientras un intérprete de comandos realiza tareas misteriosas. Tras lo que me parece una eternidad, llego al escritorio de XP.

Bueno, vamos a descargarlo todo: MySQL, etc. La velocidad de descarga se mide en Kbs, no en Mbs. Y son pocos. Estoy en el CiberDespacio. La descarga comienza a alargarse ante mis ojos, cansados y tristes. Los nervios aumentan. Se me acaba la teoría. No tengo BD. Tengo he pasar a los alumnos los ejemplos, esos que ya están en la carpeta pública de mi Mac, esa a la que no pueden acceder. Empiezo a pensar en preguntar por un cable serie Null-Módem para pasar las cosas, pero me muerdo la lengua. No hay red, y me acuerdo de la cita de Tanenbaum: “Never underestimate the bandwidth of a station wagon full of tapes hurtling down the highway”. Tiro de USB.

Disco Kaput

Vamos con el pendrive. Saco mi flamante pendrive de 4GB. “Lo copio todo aquí, se lo paso a un alumno, lo pone en la red y listo”. Parece que hay un servidor de ficheros, así que probablemente lo use. Introduzco el pendrive en el Mac. Aparece un error en pantalla. Algo de que copie los datos, que está mal el pendrive. No me lo creo. Parece que lo voy a tener que formatear. Ya formalmente cabreado, abro la Utilidad de Discos. Voy a darle formato FAT, que luego hay que usarlo en un XP y no quiero más problemas a estas alturas. No puedo. Me dice que el sector cero está defectuoso y que tire el pendrive. A estas alturas, empiezo a mirar alrededor buscando la cámara oculta. He llegado a la hora que no era, estoy sin WiFi, sin posibilidad de conectarme a la red, sin pendrive… Pregunto a los alumnos. Ninguno tiene uno encima. Quiero morir.

Utilidad de discos no puede formatear el disco

Hablo con el responsable del curso, que amablemente me ofrece uno. Lo uso para copiarlo todo en el pendrive y se lo paso a los alumnos. Mientras copian, mi mente procesa a toda velocidad. Vale, tienen los ejemplos, pueden ver la teoría en pantalla, pero me falta la B.D. Puedo instalarla en el ordenador del profesor, pero creo que lleva 20 Kb descargados o algo así. ¡Al menos podría pitar como pitaban los módems antiguos!.

De pronto, me viene la inspiración. Desde informática me han dicho que no puedo conectarme y que no obtendría una IP en mi equipo. Eso es lo que me han dicho. Pero no lo he comprobado. Busco el cable Ethernet conectado al ordenador del profesor y lo conecto a mi MacBook Pro. ¡Voilà!. Tengo acceso a la red local y a Internet. Todo cambia, al fin, para bien. Continuamos con el curso y se acaban los incidentes.

Cosas que he aprendido de esta experiencia:

  • por bien que creas que llevas preparadas las cosas, piensa mal, hasta que te parezca que es de manera absurda. Todo puede torcerse, todo. Y varias veces.
  • las presentaciones las debo llevar en dos pendrives. Si muere uno, tengo el otro.
  • las presentaciones debería copiarlas en formato PDF. Si se muere mi MBP siempre puedo usar cualquier otro ordenador que muestre un PDF.
  • siempre copiarlo todo en Dropbox. Aunque recientemente, en otro curso, me falló Dropbox al ir a bajar una presentación :-D
  • antes de impartir una charla o un curso en un sitio nuevo, confirmar el equipamiento de que dispongo. Me ahorro sustos luego.
  • confirmar las horas y fechas (algo que siempre hago, pero en este caso se ve que no…)
  • no cabrearse es mejor. Solucionas los problemas y te sientes bien por duplicado: porque has solventado el marrón y porque te has controlado a ti mismo.

Por cierto, recuperamos todo el tiempo perdido, de forma que los alumnos no perdieron nada. Eso nunca: lo primero son mis alumnos.

j j j

Aprendiendo a aprender Informática (y JavaScript)

Esta es la vida del informático. Da igual los años que tengas: la sensación es que nunca tienes ni idea de nada. Avanza tan rápida la industria que, por mucho que hagas, siempre te quedas atrás. Y hay que tomar decisiones. Los tiempos aquellos de poder ser un “informático renacentista” que sabía de hardware, de software, de todo un poco, pasaron. Yo hace tiempo que desistí de aprender ciertas cosas (como BB.DD.) y me centré en otras. Si no enfocas sobre un tema, no hay manera.

Por eso te recomiendo que sigas mi “método” sobre cómo aprender, en general, mientras avanzas en tu carrera profesional como informático:

  • asúmelo: siempre va a haber muchas más cosas que NO sepas, que las que sabes. Aunque ahora aprendas Ruby, mañana necesitarás Java. O JavaScript. O C++, Clojure, o lo que sea. Nunca lo vas a saber todo. Y no pasa nada.
  • hablar estas cosas y admitir las propias carencias frente a nuestros compañeros nos quita un gran peso. Porque la mente es mala, y constantemente te dice “mira que no saber CSS, seguro que todos estos ya hacen transformaciones CSS3 mientras duermen, y tú aquí, sin tener ni zorra idea de nada, mira que eres torpe…“. Nos machacamos sin piedad, y resulta que cuando preguntas no todo el mundo está tan avanzado. Es más, si tienes esta inquietud, probablemente tú ya sepas algo: “sólo se que no se nada“. Uno de los motivos por los que voy a las NSCoder Night es por hacer esta “terapia de grupo”.
  • no te dejes llevar por el agobio, o el estrés. Sí, vale, que tienes que entregar el proyecto para ayer: entonces usa Google (o mejor, stackoverflow). Pero márcate unos objetivos cada año, y aprende o profundiza en algún aspecto que te sirva y te interese: un lenguaje de programación, dominar un IDE, ver qué sistema de control de versiones te gusta más, patrones de diseño, UML, etc. Si tienes esos objetivos marcados y los cumples, cada año sabrás más que el anterior. No son importantes los años de experiencia, sino lo que experimentas durante esos años.
  • lee libros. Internet es fantástico para búsquedas de dudas, y hay muchos tutoriales. Pero muchos de ellos no se pueden comparar al material que encuentras en un libro: bien pensado, estructurado, con ejemplos. Además, leer un libro supone un esfuerzo y desarrollar una concentración que nos viene bien como programadores: cada vez somos menos capaces de concentrarnos durante un par de horas, por culpa de las interrupciones. Leer te obliga a trabajar esos conocimientos, y así a aprender.
  • una vez leas libros, busca vídeos del tema. En iTunes (y en Internet en general) hay vídeos de casi todo. Es bastante ameno ver cómo se hace algo, en lugar de tener que leerlo. Pero hazlo siempre después de leer el libro.
Estos son los pasos que suelo dar, y me han servido tanto para las certificaciones Java, como para aprender Cocoa Touch. Y este verano me ha surgido la oportunidad de poder empezar a desarrollar Apps para otra plataforma móvil, WebOS y el HP TouchPad. El problema es que (ver punto primero) no tengo ni idea de JavaScript. Solución: tirar de Amazon.co.uk (que a partir de una cantidad no cobra gastos de envío) y pedirme estos dos libros sobre JavaScript:
Libros JavaScript

Libros JavaScript

Tienen el visto bueno de los Tuiteros expertos en JavaScript (José Blanco y Luis Medel), así que deben ser la pera.
Con ellos voy a seguir explorando el Framework Enyo y WebOS, a la espera de que me llegue una unidad de pruebas HP TouchPad para depurar las Apps. Cuando llegue, pondré por aquí mis impresiones.
j j j

Instalar el plugin de Mercurial en Eclipse

Los sistemas de control de versiones son adictivos. No puedes probarlos, porque luego no puedes vivir sin ellos. Aunque sea un pequeño ejemplo el que vas a programar, te sientes perdido sin tu repositorio y empiezas a pensar “¿y si se me ocurre cambiar esto o lo otro, y luego me arrepiento?”. Ese tipo de “problemas” se solucionan casi en el acto con un VCS. Y si es distribuido (Git o Mercurial), mejor que mejor.

Antes de seguir, quiero dejar claro que no entro en las guerras religiosas entre los DCVS Git o Mercurial. Yo uso Mercurial porque Joel Spolsky lo explica de forma increíblemente sencilla. Aunque ahora que Git viene integrado con XCode4, probablemente es una buena alternativa… bueno, no :-). En fin, usa el que te de la gana, pero usa uno.

Para casi todos mis proyectos uso Mercurial. No lo uso para los ejemplos que escribo para mis cursos. Y estaba pensando “¿porqué no usarlo?”. Por pereza mental, y por hacer siempre las cosas de la misma forma. Mi padre dice que “si un burro tira de una noria para un lado y le das la vuelta, ya no sabe tirar de ella”. Y es que nos acostumbramos a hacer siempre lo mismo, de la misma forma, y nos estancamos. De vez en cuando hay que revisarlo todo con una mirada fresca y en lugar de pensar “¿hay una manera de optimizar esto que estoy haciendo?” debemos plantearnos “¿en serio tengo que seguir haciendo esto?”.

El caso es que un sistema de control de versiones es casi perfecto para dar clases. Puedes tener una primera versión, sencilla, y luego ir promoviendo a las distintas versiones más avanzadas, que pueden ser changesets o bien nuevas ramas. Los cambios que hagas durante la clase para demostrar algo siempre puedes revertirlos sin problemas. Para eso está el DCVS. Y distribuir el código es más sencillo: compartes tu repo, y los alumnos se clonan los repositorios y punto. No hay que andar con historias de copiar los Workspaces de Eclipse y que luego falle (los WS de Eclipse dependen del sistema en el que los uses, hay que cambiar luego los Build Paths, etc.). Como se puede ver, todo son ventajas. La pregunta es porqué no lo he usado hasta ahora…

Instalar Mercurial

Evidentemente, antes de nada lo primero es instalar Mercurial, ya sea para Linux, Windows o Mac, o para donde vayas a usar el DCVS. Si no, el plugin de Eclipse no podrá usar Mercurial porque no lo encontrará en tu sistema. Te lo bajas de su sitio web oficial.

Instalando hgEclipse

HgEclipse es un plugin para Eclipse que añade soporte Mercurial a tus proyectos. Una vez instalado, en el menú contextual del proyecto encontrarás en la opción Team > Share la parte de Mercurial. Para instalarlo, iremos a Help > Install New Software e introduciremos el repositorio http://cbes.javaforge.com/update. En mi caso (instalándolo en Mac) no necesito los binarios de Mercurial para Windows, así que no los marco para instalar.

Instalando hgEclipse: repositorios

Instalando hgEclipse: repositorios

Cuando pulsemos Next, pasaremos a descargar e instalar el plugin. Al final no hay más remedio que reiniciar Eclipse. Así que hazlo :-)

hgEclipse instalándose

hgEclipse instalándose

Usando HgEclipse

Una vez con todo instalado, lo primero es crear el repositorio Mercurial en nuestro proyecto. Eso lo prepara todo para poder gestionar las versiones de tu codigo fuente. Equivale a un “hg init”. Para ello, pulsaremos con el botón derecho del ratón en el nombre de nuestro proyecto y seleccionaremos Team > Share Project. Si todo está correctamente instalado nos aparecerá una ventana como la siguiente:

Share > Project

Share > Project

Como queremos crear un repo Mercurial, basta con pulsar siguiente. Nos mostrará dónde va a crear el repositorio (que es una carpeta llamada .hg, dentro de nuestra carpeta de proyecto). Aparecerán unos nuevos iconos en las carpetas y ficheros de nuestro proyecto y la palabra [new] indicando que el repo es nuevo, pero aún no se ha realizado el primer commit.

Repositorio tras el init

Repositorio tras el init

¡Vamos a añadir ficheros a nuestro repositorio! Botón derecho en el proyecto > Share Project, pero ahora aparece un menú con un montón de opciones. Seleccionamos Add. Esto añade los ficheros del proyecto al repositorio. Yo suelo añadir únicamente el código fuente, pero no los ajustes del proyecto, ni las carpetas propias de Eclipse, como muestro a continuación:

Añadamos ficheros al repo!

Añadamos ficheros al repo!

Ahora que hemos añadido, los iconos de los ficheros fuente cambian y tienen un “+” azul al lado. Están ya controlados por el repositorio, pero no hemos subido este cambio, que en este caso es subir la primera versión. Para ello, Team > Share Project > Commit y añadimos un mensaje de commit. HgEclipse nos muestra los ficheros que va a subir, y los que no tiene “controlados”, por si queremos añadirlos.

Commit

Commit

Al pulsar OK, ¡listo!. Ya tenemos control de versiones funcionando. Ahora, si modificamos un fichero se nos mostrará como cambiado y podremos hacer un commit con esos cambios. O podremos compartir el código fuente del proyecto por la red con la opción Serve. Cualquiera en la red podrá hacer un Pull del repo y bajarse este código fuente. Mucho más rápido que compartir el proyecto en una carpeta SMB y encima evitas problemas con las configuraciones de Eclipse (yo lo uso en Mac y mis alumnos, normalmente, en Windows)

Las opciones del menú de Share Project son muy amplias. Os animo a irlas probando y a aprender Mercurial entre todos. El que tenga un truco especial de cómo usa Mercurial, ya sabe, que use los comentarios.

hg commit -m "post acabado"
hg tag -m "v1.0"
j j j

Qué necesitas instalar para programar en C en Windows

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.

j j j