Cómo instalar Xcode 6 GM (o cualquier versión final de Xcode) sin sobreescribir la anterior

De nuevo es esa época del año. Vuelta al cole. Fin del verano. Nuevo Xcode.

Me encanta el olor a nuevo Xcode por la mañana

Y siempre, el mismo temor: ¿qué pasa al instalar? ¿Voy a sobreescribir mi Xcode actual?

Un poco de teoría

Una App en OS X no es más que una carpeta (un bundle) que contiene los ficheros ejecutables y recursos que la App necesita. Podemos verlo más claro desde el Finder pulsando con el botón derecho del ratón y escogiendo Mostrar contenido del paquete. Desde la terminal es aún más evidente. Si hacemos:

$ cd /Applications/ 
$ ls -d Xcode*

drwxr-xr-x@ 3 dfreniche admin 102B 10 sep 09:47 Xcode.app/ 
drwxr-xr-x  3 root wheel 102B 16 abr 10:30 Xcode5.app/ 
drwxr-xr-x@ 3 dfreniche admin 102B 2 jul 02:52 Xcode6-Beta3.app/ 
drwxr-xr-x@ 3 dfreniche admin 102B 1 ago 23:17 Xcode6-Beta5.app/ 
drwxr-xr-x@ 3 dfreniche admin 102B 16 ago 00:35 Xcode6-Beta6.app/ 
drwxr-xr-x@ 3 dfreniche admin 102B 28 ago 09:01 Xcode6-Beta7.app/

veremos todas las versiones de Xcode que tenemos instaladas. No son más que directorios UNIX normales

La práctica

Durante la fase de Betas la imagen de disco con Xcode que descargamos contiene una carpeta con un nombre como Xcode6-Beta5. Este nombre es distinto de Xcode, con lo que no hay conflicto.

Cuando llega la GM y la versión definitiva, Apple distribuye un DMG con una App que ya se llama Xcode. Es Xcode 6, pero tiene el mismo nombre de carpeta que el Xcode 5 que ya tienes instalado en tu disco duro. Si lo copias, vas a perder Xcode 5.

Xcode5 antes de copiar Xcode6 GM

]Xcode5 antes de copiar Xcode6 GM

Solución sencilla: antes de copiar nada a la carpeta Applications, renombra Xcode (como si fuera un fichero o carpeta normal, probablemente tengas que introducir tu clave de administrador) y ponle de nombre Xcode 5 (o el que prefieras, yo tengo por ahí una llamada Ye olde Xcode 4.3)

Instalando Xcode 6 tras renombrar Xcode 5

]Instalando Xcode 6 tras renombrar Xcode 5

Fácil, ¿no?

j j j

Imparto dos talleres en el GCTIC: iOS y Android

El #CGTIC es el Foro de Nuevas Tecnologías de la Información y la Comunicación que va a tener lugar en Las Palmas de Gran Canaria este próximo fin de semana (del 26 al 29 de Junio). Y tengo la enorme suerte de poder asistir e impartir un par de talleres:

Esta es mi tercera visita a las Islas Canarias, y la tercera isla en la que voy a estar, tras Tenerife y Lanzarote. Muchas ganas no sólo de ir al GCTIC, sino de estar por Las Palmas al menos el Jueves y echar un paseo en condiciones. No tendré tiempo de mucho más (recordemos que voy a trabajar, no de vacaciones) pero la verdad es no que se puede ir a mejor sitio. Se puede estar igual de bien, pero mejor es complicado.

Ambos talleres son gratuitos, y el Foro ha tenido la amabilidad de hacerse cargo de los gastos de transporte. Aparte de esto, yo voy “de gratis” porque creo que hay que apoyar a la comunidad de desarrollo. Este año ya he participado en dos iniciativas similares: el Curso de iOS en Cádiz con el inimitable Jorge Galindo y el taller que hice con la ayuda del Ironhack en Madrid.

Si me ves, saluda. Y te invitas a algo. Si pongo cara rara, es que no estoy acostumbrado a que me saluden gente que no conozco ;-)

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

Ponente en la WipJam en el MWC 14

Estoy muy contento de ir este año al Mobile World Congress como ponente de una charla en la WipJam. Concretamente va a ser de Core Data (como la charla y taller que impartí el año pasado en la conferencia NSSpain). No soy yo el máximo experto en Core Data del mundo, ni siquiera de mi barrio, pero poder acudir a un evento internacional y compartir conocimiento con otros programadores me motiva bastante. Y algún proyecto con Core Data he desarrollado.

Encima, para mejorar la cosa estaré parando en la casa de Rafa Aguilar (responsable de [Objective-C.es], 3 además de programador iOS en Wallapop y crack absoluto). Y dormirá con nosotros (juntos, pero no revueltos) Luis Ascorbe, el 50% de NSSpain. Y Pedro Muñoz andará por allí con su proyecto de iBeacons… Y todos los demás amigos de Barcelona… Vamos, que no se puede pedir más.

Bueno, sí. Puedo pedir terminar de una vez la App iOS que estoy ultimando y así poderme ir tranquilo a BCN. Y acabar las transparencias a tiempo, y no en el tren, que me veo como siempre…

j j j

La comunidad de desarrollo Mac en España

He recibido un par de correos preguntándome sobre esto mismo en los últimos días. Además, es algo que me gusta comentar en los cursos que imparto sobre iOS (y en los de Android, solo que en esos hablo lógicamente de la comunidad Androide). Así que voy a resumir y reunir aquí lo que necesitas para acceder a la misteriosa y privilegiada comunidad de desarrollo iOS/Mac en España.

Sin miedos

Primero, lo más importante: si te interesa el desarrollo con tu Mac, en Cocoa, usando Xcode y Objective C ya eres miembro de esta comunidad. No ha sido tan difícil entrar, ¿no?. Como en cualquier comunidad, sólo hace falta que tengas interés, o curiosidad, o conocimientos, y que quieras compartirlos. No hay que hacer pactos con el Anticristo, ni con los bancos, ni firmar contratos con la sangre de un gallo. Cosa asquerosa, por cierto.

Puedes disfrutar de esta comunidad a distancia, usando tu ordenador e Internet, pero yo siempre recomiendo el contacto cara a cara, personal. El periodo más productivo de mi vida como programador fue cuando estudiaba la carrera de Informática. Y así lo recuerdo por el grupo de personas con las que me reunía a programar y a hablar sobre programación. Probablemente es más la sensación de que “cualquier tiempo pasado fue mejor” que algo objetivo (probablemente, no, seguro, mi código era una abominación), pero hablar con gente que sabe mucho más que tú es algo que estimula mucho, motiva y te fuerza a mejorar para no sentir que haces el ridículo entre ellos.

Aunque eso nunca pasa: nadie, nunca, se va a reír del que no sabe. Lo que hará es ayudarle. Así que destierra ese miedo de tu mente, esa pesadilla que alguna vez has tenido: nadie se va a levantar, en medio del bar señalándote y gritando “mirad al pardillo este, que no sabe nada de nada”. Si alguien actuara así es causa objetiva para que te tatúen tonto en la frente, y de no ser parte de esta comunidad.

Blogs

Pongo aquí una lista de los mejores blogs de programación Cocoa en Español que conozco y leo. Debe haber más: apórtalos en los comentarios. Siempre son bienvenidos. Van sin un orden concreto, salvo Objective-C.es, el blog de Rafa, claro ejemplo de superación personal y, como se que al final acabará en Apple, le voy haciendo ya la pelota para que pase mi CV cuando llegue el momento.

Reuniones periódicas

Aquí tenemos las reuniones que se tienen en distintas ciudades de España, con distintas periodicidades. Si no tienes ninguna cerca siempre puedes animarte y fundar la tuya propia. Sólo necesitas a una segunda persona interesada en lo mismo.

Todas estas reuniones tienen su propio Twitter. Busca y ponte en contacto con ellos.

“La” Conferencia

La conferencia de la comunidad Cocoa Española, el sitio al que hay que ir es la NSSPain. Es una conferencia internacional (luego es en Inglés), pero es la que más cerca vas a encontrar con mejor contenido. Yo me he hecho fijo en el primer año.

Twitter

Hay montones de gente interesante a la que seguir. Te recomiendo que sigas por twitter a los blogueros anteriores y que mires a quiénes siguen. Es la forma más rápida.

Preguntas y respuestas

El portal NSCoderCenter es lo que buscas

Pull request

Si quieres que incluya un apartado, o quieres completar todo esto con más información, usa los comentarios más abajo. Gracias.

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

Notación Húngara: contrapost

¿A quién no le gusta una buena polémica?

Polémica Tuitera

Esta semana en Twitter Sendoa Portuondo planteó una conversación bastante interesante sobre si era conveniente (o estaba de moda) usar prefijos en las variables de nuestros programas Objective-C. Mi respuesta fue que, a veces los usaba. Especialmente uso los prefijos para los IBOutlets, de forma que puedo completar el código rápidamente (o encontrar un Outlet sin tener que hacer un viaje al@interface correspondiente.

Fernando Rodríguez (Cocoa Mental, Big Nerd Ranch, super Bad-Ass Master of the Universe) argumentaba totalmente en contra y ha escrito un artículo en Cocoa Mental al respecto. Normalmente estoy de acuerdo con las cosas que publica Fernando, más que nada porque voy al blog a leer para aprender y puedo aportar poco. Pero en este tema concreto (el uso o no de prefijos para identificar qué es una variable), no estoy de acuerdo.

Sus argumentos, que he visto esgrimidos en muchos sitios, se basan en la horrenda interpretación que se hizo de la Notación Húngara propuesta por Charles Simonyi. Nadie lo explica mejor que Joel Spolsky en el artículo Doing it wrong, pero por si no tenéis ganas de leerlo (mal!, dejad en este momento todo esto y leed el blog de Joel de cabo a rabo), voy a intentar explicarlo.

Notación Húngara

Si lees el paper original de Simonyi, encontrarás que la idea que presenta es: “pongamos el qué es de una variable en el prefijo, de forma que sepamos de qué estamos hablando al usarlo luego”. Probablemente por no ser el Inglés su lengua materna Simonyi usó la palabra type. Pero no se refiere al tipo que el compilador asigna a una variable, sino a su forma, características, esencia, chi o como lo llames. Su Kind. En un párrafo hablando de cómo prefijar cantidades (índices, filas, etc.) podemos leer:

Quantities are named by their type possibly followed by a qualifier. A convenient (and legal) punctuation is recommended to separate the type and qualifier part of a name. (In C, we use a capital initial for the qualifier as in rowFirst: row is the type; First is the qualifier.)

Si os fijáis atentamente, para dar nombre aquí a una variable que representa una fila, la llama *row_First, y no longFirst o intFirst. Es decir, usa _qué_ es esa variable y no el _tipo_ de nuestro lenguaje elegido para representar a ese elemento. Los grandes detractores de la notación húngara han visto código escritos por otros que no la han entendido y que les obligaban a hacer tonterías como:

int *ptrFirstNumber;        // ¡ya sabemos que el tipo es un puntero a int!
char *strName;              // con leer la declaración, basta...
NSString stringAddress;     // esto es de nota

Apple Will Never Do That

Por cierto y como nota inocente. Dado que esto lo extendió Microsoft y dado que Apple nunca se equivoca, Cocoa es elegante, etc. etc. en Cocoa no encontraremos nunca esta horrible notación, ¿no?. Bueno, no esta, sino notación húngara a la inversa (HungarianNotation^-1): usando sufijos en los tipos. Por ejemplo estas cositas:

AboutViewController *vc;    // ¡ejem! Ya sabemos que vc es de tipo "Pantalla About". 

¿Pero realmente es necesario poner “ViewController” al final de un tipo que extiende de UIViewController? Ya puesto así, que se llame AboutViewControllerUIResponderNSObject, y vemos todas las clases de las que hereda, ¿no?. ¡Error!.

Aquí Apple está marcando en el nombre de la clase qué es, y no su tipo. Para Apple, un ViewController es una pantalla en un programa iOS. Fijáos que el sufijo no es UIViewController, que sería el tipo. Además, sólo leyendo AboutViewController no sabes si es un UIViewController, un UITableViewController, … lo que sí entiendes es que es una pantalla.

Hungarian Notation at its best!

Un ejemplo, que me duermo

Quiero cerrar con un pequeño ejemplo. Supongamos que tenemos una clase que nos devuelve Usuarios (de un servicio web o una BD). Es la clase Users. Esta clase dispone de dos métodos:

+ (NSDictionary *)allUsers;
+ (NSDictionary *)allUsersOrderedByName;

Los nombres de los métodos son autoexplicativos. Usamos un diccionario en el que buscaremos usando una clave (en este caso, el nº de usuario).

Si en mi código, más adelante, quiero guardar estos dos diccionarios (uno está ordenado por los valores de sus claves, que ya que estamos es la forma de ordenar un diccionario, el otro no) podría usar Hungarian Notation Dark Side Style, la criticada por Fernando:

NSDictionary *dictionaryAllUsers = [Users allUsers];
NSDictionary *dictionaryAllUsersOrdered = [Users allUsersOrderedByName];

Aquí, el ver que son un NSDictionary no me aporta nada. Es una tontería redundante poner estos prefijos. Mucho mejor usando Hungarian Notation Luke Style:

NSDictionary *listUsers;
NSDictionary *orderedListUsers;

Aquí usamos qué es para nosotros estas variables, qué representan en el flujo del programa. Son listas de usuarios. Que utilizaremos para mostrar en pantalla, buscar o lo que sea. Me da igual su tipo. Pueden ser NSDictionary, NSArray, un tipo propio, un B-Tree… Lo que me interesa es comprender de un vistazo que a) son listas y b) una de ellas viene ordenada.

Conclusión

Así que, sí, estoy de acuerdo con Fernando en que poner el tipo del compilador al identificador de una variable es una chorrada. Pero eso no es Notación Húngara. Es la mala interpretación que se hizo de ella. La Notación Húngara tal y como se definió es valiosa.

Vale, pero al final, ¿tú lo usas?

Pues creo que sí. Pero no de una manera consciente. Este tipo de discusiones, que algunos obsesionados por “hacer que funcione” verán como una pérdida de tiempo son las que nos permiten aprender y entender por qué hacemos las cosas como las hacemos. Es lo que nos hace Informáticos. Que no Ingenieros. Los Ingenieros no entenderían esto :-D. Pero esta polémica la dejo para otro post.

j j j

iOSDevUK 2013: retrospectiva personal

Otro año más esperando en la estación de tren de Aberystwyth para irme definitivamente. Otro iOSDevUK más al que acudo (y van tres seguidos). Creo que soy el más pesado de los delegados internacionales de esta conferencia. Tanto, que necesitaban a un guiri representativo de la conferencia en la radio de Gales y Chris (el organizador de la conferencia) tuvo la idea de invitarme para hablar sobre Apps. A las 6:30 de la mañana. Sí, están puestas las calles y las emisoras de radio a esas horas.

Chris Price en la Radio de Gales

Chris Price en la Radio de Gales

Mi balance de la conferencia, como el de otros años, es: awesome.

Pero este año se han añadido varios factores que me han hecho disfrutar de la estancia como nunca.

  • Debido a los cambios que estoy realizando en múltiples aspectos de mi vida, este año he venido muy relajado y con una clara mentalidad: aprovechar el momento al máximo. Suena a cliché barato, pero la realidad es que muchas veces sale uno de viaje y en lugar de disfrutar las cosas buenas del viaje te dedicas a quejarte por las inevitables incomodidades y, por un lado a recordar lo bien que estabas en casa y por otro a estresarte por todo el trabajo que te espera a la vuelta. La verdad, para tener este estrés, casi mejor no viajar ¿no?. Pues este año no ha sido así: he podido hacer muchas cosas, y en cada momento he estado completamente presente y disfrutando de lo que hacía, ya fuera conversando con otros compañeros, comiendo, paseando, bebiendo cerveza o corriendo.
  • he venido con un viaje mucho mejor organizado. Para mi, la mejor ruta es avión Málaga – Birmingham y desde el aeropuerto tren directo a Aberystwyth. Nada de conducir desde Londres como el primer año con Fernando Rodríguez o de pasarme la noche vagando por Nottigham como el segundo año tras llegar al East Midlands Airport. Si el viaje es más descansado, lo tienes claro y la ruta es conocida todo va bastante mejor. Además, me he dado montones de tiempo entre las conexiones tren – avión. Tiempo en teoría muerto (aunque el tiempo es el que es, todo depende de lo que tú haces con el; es decir, que lo matamos nosotros, no viene muerto de serie). Esta vez me he dedicado a leer y escribir. Well done.
Compañeros de carreras

Compañeros de carreras

Más corredores

Más corredores

  • ha sido la primera vez que he podido / querido hacer deporte. Además, he podido contar con compañeros que me han ayudado en los momentos difíciles, cuando ves que tu barriga te impide subir la colina. Gracias a Sebastián, Pedro y Raimón he podido correr por bosques de cuento viendo a los conejos correr a esconderse, y trepar a acantilados a ver el pueblo desde arriba. O perdernos por caminos en los que los helechos me llegaban a los hombros (lo que es fácil con mi altura por otra parte, pero aún así…)
  • he disfrutado las noches en el pub mucho más que nunca. Tanto en el Varsity como en el Pier Royal, han caído muchas pintas de Carling y varias de sidra Strongbow. Y muchas conversaciones muy interesantes sobre trabajo, programación, tecnología, chistes, la forma de vida de cada uno… La culpa de esto ha sido el rat pack que hemos formado, con gente como Fernando Rodríguez, Antonio, Pedro, Javier, Sebastián, Raimón, René, Petteri, …
Comer fruta en una conferencia: achievent unlocked

Comer fruta en una conferencia: achievent unlocked

  • he dormido algo menos, pero no lo he echado tanto de menos. Y quitando el último día, en el que he prescindido de dietas, he comido bastante bien y de forma muy razonable.
  • las charlas a las que he asistido me han inspirado, ayudado, enseñado, me han hecho pensar y tomar decisiones. El taller de Core Data fue de una calidad y nivel espectacular. iOSDevUK es un evento especialmente enfocado en los desarrolladores indie (entre los que no me encuentro, ya que no vendo mis productos, hago cosas para otros como freelance) y me ha vuelto a entrar el gusanillo de publicar mis Apps y volver a intentar vender mis ideas. Tengo miedo al rechazo, a crear aplicaciones feas y horribles que nadie quiera. La única forma de vencer esto es escribir código, construir cosas y publicarlas. Y ver qué pasa entonces.
  • He conocido a gente increíblemente inteligente, brillante, divertida, humilde. En estos sitios siempre eres el retrasado de la clase. Lo cual es muy bueno: tienes ganas casi de llorar cuando ves a Alan Cannistraro preguntando cosas a Marcus Zarra. Pero esta impotencia y sentimiento de soy tonto es lo que nos anima a continuar aprendiendo.
  • he visto algo más de esta maravillosa ciudad. Creo que ya casi se pronunciar su nombre correctamente. He ido en el tren de vapor al Valle de Rheidol, he vuelto a pasear por sus calles y he visitado el museo de Gales. Y me he comprado un libro del Canal Historia sobre la Primera Guerra Mundial como autoregalo. No se puede pedir más.

En mi caso tras el iOSDevUK 2013 vuelvo aún más motivado a seguir aprendiendo, pero sobre todo, quiero escribir líneas de código. Tengo ganas de programar.

Y en una semana me voy a Logroño, a disfrutar del Evento iOS internacional que desesperadamente necesitamos en España: NSSPain. ¿Te lo vas a perder?

j j j

Borrar un AVD que se niega a morir

Al intentar borrar un AVD (la configuración de un emulador de Android, conocido como Android Virtual Device) me he encontrado con este mensaje:

AVD no se puede borrar

En este caso, he tenido claro desde el principio cual era el problema sin consultar con StackOverflow. Había lanzado ese AVD antes y se había colgado. Y pensé que seguramente había dejado algún fichero indicando que el emulador estaba en marcha, y por eso ahora al intentar borrarlo pensaba que seguía encendido.

Nada que un poco de Terminal no pueda arreglar. Debemos ir, en una terminal, a la carpeta .android/avd que está dentro de nuestra carpeta $HOME. En mi caso, como mi usuario es dfreniche, la carpeta está en la ruta:

/Users/dfreniche/.android/avd/

Para llegar a ella, usamos a nuestro viejo amigo cd:

cd /Users/dfreniche/.android/avd

Una vez allí, veremos una carpeta por cada AVD que tengamos creado en Eclipse. Si hacemos ls:

Tesla:avd dfreniche$ ls -al
total 24
drwxr-xr-x   8 dfreniche  staff  272 22 ago 12:58 .
drwxr-xr-x  17 dfreniche  staff  578 19 ago 19:41 ..
drwxr-xr-x  12 dfreniche  staff  408 22 ago 12:58 Intel.avd
-rw-r--r--   1 dfreniche  staff  114 22 ago 12:58 Intel.ini
drwxr-xr-x  11 dfreniche  staff  374 20 ago 06:48 Nexus4.avd
-rw-r--r--   1 dfreniche  staff  116 19 ago 19:32 Nexus4.ini
drwxr-xr-x  10 dfreniche  staff  340 22 ago 11:22 Nexus4_API4.3.avd
-rw-r--r--   1 dfreniche  staff  130 20 ago 06:47 Nexus4_API4.3.ini

Podemos ver que los terminados en .avd son carpetas (en los atributos empiezan con una d de directory) mientras que los .ini son ficheros normales.

Si entramos en el AVD problemático (en este caso, Intel.avd) con un cd Intel.avd y hacemos ls veremos unos cuantos ficheros sospechosos acabados en .lock.

Tesla:Intel.avd dfreniche$ ls
cache.img       hardware-qemu.ini.lock  userdata-qemu.img.lock
cache.img.lock  sdcard.img      userdata.img
config.ini      sdcard.img.lock
hardware-qemu.ini   userdata-qemu.img

Con borrar estos ficheros, basta: rm *.lock

Tras esto, Eclipse nos dejará borrar tranquilamente el AVD desde su interfaz:

AVD arreglado para ser borrado

AVD arreglado para ser borrado

j j j