Javi Moreno Apuntes Fichas de Lectura Archivo Sobre mi
Teaser Image

Versión 1.0

Espero que este no sea otro intento más de escribir un blog y pueda darle continuidad.

Llevo muchos años pensando en lo que podría escribir en un blog... tantos que hasta ahora no había escrito ninguno. Como últimamente estoy muy centrado en el tema de la programación para iOS y leo muchos blogs donde la gente cuenta cosas que ha aprendido o sabe hacer para ayudar al resto de la comunidad de desarrolladores (entre ellos a mi), he pensado que una buena idea para empezar sería devolver los favores escribiendo mis "avances". De eso es de lo que trata este blog... de como un triste programador de COBOL intenta hacer app´s para su iPhone.

Y para darle más cache a esta primera entrada, me voy a permitir el lujo de citar a Marcus Zarra que en su post "Why so serious?" hace una afirmación que ningún desarrollador debe olvidar jamás... o al menos eso pienso yo.

"We as developer must remember that we are not the target for 99% of the software that is written. We are not the final judge on what will or will not work. If anything, we are the last people that should have an opinion on what is good or bad. We should be the ones that step back and watch what the “normals” do with it. They determine the success or failure, not us"

De momento me conformo con dejar aquí un par de sitios web bastante interesantes que he encontrado últimamente:

  • MaaSive: Es un sitio web que ofrece persistencia en la nube. Lo encontré gracias a un tweet de Brandon Trebitowski y el video demostrativo deja claro lo que es: un framework que podríamos utilizar para sustituir (o complementar según se quiera) a Core Data y almacenar todos los datos en la nube. Soluciones como esta hay unas cuantas: amazon cloud services, google app engine, etc. La ventaja de este framework es la clara orientación a iOS. Está todavía en fase alfa.

  • Parse: Este es el que más impresionado me ha dejado. En algún momento pensarás en hacer una app que requiera notificaciones "push". Al margen de lo engorroso que pueda resultar montar todo el servicio de notificaciones, lo más probable es que la solución que encontremos tenga un coste económico ya que requiere de un servidor.

Parse encapsula todo el proceso de notificación en un framework para que sea sencillo de implementar en una app y además es gratuito para pocos usos (relativamente, que ya me gustaría a mí tener una app que hiciera más de un millón de push al mes).

Hasta aquí por hoy. Estoy trabajando en algunas cosillas que me gustaría compartir pero todavía no están terminadas. Espero no tardar tanto en escribir el siguiente.

Hace poco me puse con una tarea que tenía pendiente desde el verano: automatizar la descarga de informes del iTunes Connect.

El 30 de Agosto, en el Apple Developer Connection (en el iOS Developer News también) publicaron esto: Automatically Download iTunes Connect Reports. Lo que nos contaban ahí es que habían desarrollado una nueva herramienta para poder descargar los informes de ventas del iTunes Connect sin tener que acceder a dicho portal. Esto está muy bien, primero porque la descarga de varios informes es bastante tediosa, segundo porque es normal que no te acuerdes de entrar a descargarlos y puedes automatizar la descarga y tercero porque las herramientas para el seguimiento de las ventas brillan por su ausencia así que si empiezan a hacer alguna es una buena señal.

Sigue leyendo

Hace unos años, en un proyecto lleno de anécdotas y experiencias, el grupo de desarrolladores me contaba que habían creado servicios para cada una de las tablas del modelo de datos con el objetivo de centralizar los accesos a la tablas. La idea me pareció interesante: estaba harto de tocar programas que tenían la misma query y había cambiado algún criterio por lo que unificar las consultas en un único servicio era genial.

Les sugerí que, a la hora de montar los cursores, preparasen toda salida de datos de forma que fuera reutilizable. De esta forma, a medida que se fueran creando nuevas consultas, solo habría que incluir la nueva query. "No habrá que dar de alta nuevas consultas, hacemos cursores dinámicos..." dijo uno de ellos con gran orgullo.

Sigue leyendo

Cuando se trabaja con bases de datos siempre llega un momento en el que hay que hacer algo más complejo que recuperar datos de forma directa y manipularlos. Saber cual es el registro que tiene el valor más alto o más bajo en una propiedad en concreto; identificar los valores diferentes que tienen una propiedad; etc, son situaciones que, aunque no sean cotidianas, vamos a tener que enfrentarnos con ellas.

Sigue leyendo

El pasado 14 de Mayo tuve la suerte de poder dar una charla en el CIBALL sobre como hacer un sitio web con Ruby on Rails y una aplicación iOS que accediera a los datos almacenados en dicho sitio.

El contenido de esta charla lo preparamos entre Jorge Ortiz (aka @jdortiz) y yo. El resultado está grabado en formato screencast pero es lo suficientemente largo como para resultar tremendamente pesado. Aun así lo hemos colgado en Vimeo por si algún imprudente se anima a verlo.

Sigue leyendo

Seguro que en algún momento nos hemos planteado la necesidad de disponer de un servicio web propio para alimentar alguna de nuestras aplicaciones (actualización de datos, gestión de InApp Purchases, notificaciones, etc). Actualmente hay muchos servicios on-line que nos permiten gestionar estas necesidades con facilidad (Amazon Web Services, iCloud, Azure, Parse, MaaSive). Es conveniente, al menos, echar un vistazo a cada uno de ellos para saber que utilidad podemos sacar de ellos pero creo que también es conveniente hacer un acto de valentía y plantearnos el hacer nuestro propio servicio web.

En la entrada anterior vimos como hacer una web con su API Rest con muy poco esfuerzo. En esta vamos a ver como conectar con ese API Rest con muy poco esfuerzo también. Eso si, vamos a centrarnos solamente en la clase NSURLConnection; la creación de la aplicación, modificación del modelo y del storyboard lo damos por supuesto.

Sigue leyendo

Le tenía muchas ganas a MapKit. Es de esas cosas que sabes que en algún momento tendrás que toquetear pero por algún motivo ese momento no llega. Al final ha sido para hacer una aplicación que tiene la funcionalidad de "como llegar". Había oído a unos decir que esto era muy complicado y a otros que no era para tanto... Por lo que he podido comprobar, a partir de iOS 4 es bastante fácil de implementar. No he intentado bajar el código más allá de esta versión así que no puedo confirmar si es muy complicado en versiones anteriores.

Sigue leyendo

Este fin de semana he estado leyendo un articulo  bastante interesante sobre el desarrollo del sistema operativo WebOS contado de forma cronológica. El articulo es de The Verge y se llama Pre to postmortem: the inside story of the death of Palm and webOS. Lo tenía para leer en Pocket desde hacía unas semanas pero, quizá por el quinto cumpleaños del iPhone, ha estado circulando por twitter durante toda la semana.

Después de leerlo, de escuchar el último podcast de Puromac (uno de los mejores que he escuchado aunque a Fede no se le oía a penas), de ver un tweet y la replica de John Gruber, de ver las últimas noticias de Microsoft y las de Google, de compartir impresiones con amigos y juntar todo esto en mi cabeza, he estado reflexionando un poco sobre todo esto y me he animado a hacer un "articulo de opinión"...

Sigue leyendo

El miércoles 26 de septiembre tuve la oportunidad de dar otra charla en la NSCoderMAD. Volvió a ser en el CIBALL un sitio que parece que visitaremos mucho en los próximos meses si todo va bien. En esta ocasión mi charla giró sobre la experiencia de usar los servicios de AppGratis, una aplicación que envía newsletter y hace notificaciones push cada día hablando de una aplicación que baja de precio o pasa a ser gratis. Creo que la charla es bastante interesante por la experiencia en si y porque aporta datos no muy habituales: las ganancias de una aplicación del Top 25 de pago.

Sigue leyendo

No tenía pensado hablar de bricolaje en este blog pero una mención de @rubdottocom haciendo referencia a una entrada suya haciendo lo mismo pero con otro modelo me hizo plantearme una sección de "Macnitas" para este blog.

Le he pedido a los Reyes Magos una pantalla de 24 pulgadas para conectar al MacBook Pro y poder hacer storyboards de aplicaciones para el iPad sin volverme loco. El caso es que, cuando lo tenga, el portátil pasará a ser un "sobremesa" y para que no me quite mucho espacio he estado mirando soportes verticales. Obviamente son todos muy buenos y caros pero como la economía española no está para tirar cohetes y hay que hacer mucha contención del gasto decidí explorar otras opciones: atriles, sujetalibros, etc, hasta que mi mujer me dijo: "¿por qué no usas ese servilletero que compramos en Ikea y que nunca usamos?"

Sigue leyendo

Lo reconozco, soy un culo inquieto. Creo que he probado más sistemas de blogging que entradas he escrito.

Siendo usuario de Gmail, cuando te animas a escribir en un blog lo más fácil es hacerlo en Blogger... y así empece yo: AZCT Abend era la incursión de un Cobolero en el mundo del blogging y como de COBOL no había mucho que contar, la idea era ir contando mis avances en el aprendizaje de Objective-C y Cocoa Touch.

Sigue leyendo

Estoy disfrutando como un enano con Octopress. Como ya conté en el anterior post, he probado unos cuantos servicios para publicar blogs y a grandes rasgos todos me han parecido iguales: un menú de configuración en el que puedes tocar cuatro cosas, la promesa de que a través de CSS te lo puedes configurar a tu gusto y en ocasiones una oferta de plugins que nunca terminan de hacer lo que crees que deben hacer.

Si analizamos lo que ofrece Octopress, posiblemente Wordpress sea el que más se le parezca (no creo que el nombre sea casualidad). Se puede descargar toda el proyecto del blog desde la página de wordpress.org, se configura un MySQL, se tocan un par de ficheros, se sube a un hosting de php y a disfrutar del blog... todo un mundo de maravillosos plugins y temas está a tu disposición.
El problema es que php y yo no terminamos de llevarnos bien.

Sigue leyendo

Vamos a demostrar que no hace falta ser un figura para hacer algo muy util y aparente. Vaya por delante que, si somos capaces de hacer esto es porque existen páginas como las de Railscasts.
Lo primero que hacemos después de crear nuestro nuevo proyecto Rails es instalar las gemas necesarias para trabajar con Twitter Bootstrap, del que somos fans.

gem 'therubyracer'
gem 'less-rails'
gem 'twitter-bootstrap-rails'

Sigue leyendo

Como era de esperar, el debut de URLHunter ha tenido alguna incidencia.
En un primer momento pensé que todo era provocado por unos cambios de ultima hora que tuve que hacer en los tipos de campo de la entidad Tweetlinks al pasar de SQLite a PostgreSQL pero no, el problema ha sido de programador despistado.

Sigue leyendo

Cuando terminé la primera versión de URLHunter, tenía claro que compartir el código fuente del proyecto era básico. Principalmente por dos razones:
Primero, porque que se aprende mucho viendo el código, quizá mas que siguiendo un tutorial.
Segundo, porque me encantaría que la gente clonara el proyecto, hiciera forks, pull requests y enriqueciera URLHunter con sus aportaciones individuales.

Cuando lo iba a subir a GitHub caí en la cuenta de que los tokens, consumer_keys, etc de Twitter los iba a poder ver cualquiera que echara un vistazo al fichero twitter.rb y no solo eso, si en el futuro decidía incluir un formulario de contacto, integrar New Relic o Google Analytics los usuarios, contraseñas, identificadores únicos serían visibles para todo el mundo. Fue entonces cuando vi la importancia de las variables de entorno a las que hacían referencia en la documentación de la gema de Twitter.

Sigue leyendo

Puede que no haya ido a donde quería ir, pero creo que he terminado donde tenía que estar.

Douglas Adams.

Hoy hace diez años que entré a trabajar como programador en una empresa de consultoría. Para algunos serán muchos, para otros serán pocos, para mi es una cantidad muy significativa que me permite echar la vista atrás y reflexionar sobre como han cambiado las cosas desde entonces.

Sigue leyendo

There's a lady who's sure all that glitters is gold And she's buying a stairway to heaven.

Led ZeppelinStairway to heaven

Son tiempos convulsos para la sincronización de datos entre aplicaciones. Si seguís al mismo tipo de personas que yo en Twitter habréis visto como el nivel de indignación con iCloud por la sincronización por Core Data ha llegado a niveles casi de disturbios. Este post de los desarrolladores de Yojimbo es un buen resumen. Para echar un poco más de leña al fuego, Brent Simmons escribía Why Developers Shouldn’t Use iCloud Syncing, Even If It Worked unos días después.

Sigue leyendo

Tal y como anticipe que sucedería, durante estos días he estado probando Helios, el framework de @mattt que nos permite crear un backend para aplicaciones móviles.

Como ya hice un primer análisis del framework en conjunto, ahora me voy a ir centrando en las piezas que lo forman siguiendo el orden, para mi, de mayor a menor importancia. La idea es que en las próximas semanas pueda ir sacando artículos sobre cada una de ellas:

  1. Sincronización de datos. Core Data Buildpack + AFIncrementalStore
  2. Notificaciones Push. Rack::Push Notification + Orbiter
  3. In-App Purchases. Venice + Cargo Bay
  4. Passbook. Dubai/Rack::Passbook

Sigo teniendo sentimientos encontrados con este framework. Por un lado creo que supone un gran avance ya que simplifica enormemente el desarrollo propietario de una serie de servicios indispensables para una aplicación móvil actual. Por otro lado creo que frameworks de desarrollo web como Ruby on Rails o Sinatra no son mucho más complicados y las posibilidades que ofrecen son infinitamente mayores.

Empezemos...

Sigue leyendo

  • Okay, Houston, we've had a problem here.
  • This is Houston. Say again, please!
  • Uh, Houston, we've had a problem.

CAPCOM Apollo XIII, Jack Swigert - Jack R. Lousma - James A. Lovell.

Aprovechando que Rafa Aguilar (aka @rais38) ha publicado en Objective-C.es un par de entradas sobre las notificaciones Push en iOS he decidido aparcar un par de cosillas que me tenían bastante atareado y continuar con el análisis de Helios.io que había prometido.

Sigue leyendo

Hablando un día por Twitter, Miguel Díaz Rubio (aka @migueldiazrubio) cometió la imprudencia de animarme a escribir algo en su blog: www.migueldiazrubio.com. Obviamente le dije que si, el blog de Miguel junto con el de Objective-C.es son de lo mejorcito que hay ahora mismo en castellano para aprender Objective-C y Cocoa Touch, las herramientas necesarias para hacer aplicaciones iOS y una oportunidad para ayudar a estos máquinas no podía desperdiciarse.

Sigue leyendo

Aunque el COBOL no esté dentro de la temática habitual de este blog, si habéis leido mi entrada sobre mis diez años como programador, sabréis que los proyectos a los que me dedico durante el día tienen a ese maravilloso lenguaje como base para el desarrollo. Por este motivo, cada vez que se habla de COBOL salto como un resorte y en uno de esos saltos, Jose Antonio Blanco cometió la locura de dejarme participar en el podcast We.Developers.
Supongo que la audiencia le bajará estrepitosamente. Si queréis echar un vistazo al guión que preparé, es el cuerpo principal de este post.

Sigue leyendo

El puerto espacial de Mos Eisley. No encontrarás nunca un lugar como éste tan lleno de maldad y vileza. Debemos cuidarnos.

Star Wars, Ben Kenobi llegando a Mos Eisley con Luke Skywalker

Para esta tercera entrega volvemos a basarnos en unos artículos de Rafa Aguilar (aka @rais38), recien publicados en Objective-C.es, donde primero nos explica las categorías y tipos de In-App Purchases y después nos enseña con un ejemplo lo sencillo que es incorporar a una aplicación esta excelente fuente de ingresos.
Nosotros aquí vamos a ver como simplifica CargoBay el uso de IAP en nuestras aplicaciones y también a verificar si la compra se ha realizado correctamente por el método más seguro: un servidor con Helios.

Sigue leyendo

Hay dos cosas que recomendaría a todo el mundo que tuviera que escribir frecuentemente en un ordenador:

  1. Aprender mecanografía.
  2. Aprender markdown.

Sigue leyendo

El día que empecé a preparar la presentación Helios y su integración en iOS me pregunté si habría alguna forma de utilizar markdown con Keynote. Iban a ser unas cuantas diapositivas de texto y manejar títulos, negritas, cursivas, listas, links,... con markdown me parecía triunfal. Después de una búsqueda rápida en Google y ver un par de enlaces descubrí reveal.js... y decidí no volver a abrir Keynote nunca más.

Sigue leyendo

Le haré una oferta que no podrá rechazar.

Vito Corleone, El Padrino

En la misma película de la que he sacado esta cita se dice que los italianos piensan que el mundo es tan duro que hay que tener dos padres y por eso todos tienen un padrino. Quizá esto es lo que pensaron los desarrolladores del nuevo framework del que me he hecho fan, Padrino, por que el nombre le viene que ni pintado.

Sigue leyendo

En el fondo, una parte de mi desea ser un guru. Por eso estoy haciendo experimentos con Octopress para poder publicar enlaces al más puro estilo Marco Arment o Daring Fireball.
Mi única duda es si usar un signo de infinito, una estrella negra de cinco puntas o un caracter emoji para los permalinks. Creo que ese simbolo debe representar el tipo de contenido que genera el autor. 😜

Pow!! es la típica cosa que nunca has necesitado pero que una vez la has probado ya no puedes vivir sin ella. No hay nada malo en escribir http://localhost seguido del puerto por donde sirve tu aplicación pero... ¿a qué sería todo más fácil si pudieras llamar a tus proyectos web también por su nombre en tu máquina local? Pues bien, Pow!! se encarga de eso.

Sigue leyendo

Ultimamente estoy dedicando mi tiempo libre (cada día más escaso) a automatizar ciertas tareas que Octopress, por su naturaleza estática, no permite realizar. En este post explico como acabar con una de mis mayores frustraciones: poner un tweet automáticamente cada vez que publico un artículo usando Karmacracy como acortador.

Sigue leyendo

Octopress mola pero también tiene sus limitaciones. No es que yo sea un gran comunicador que está publicando artículos continuamente pero a veces he echado de menos no poder publicar algo más rápidamente o a una hora concreta.
Octopress es un blog estático que se genera mediante unos scripts desarrollados en Ruby y que usa git para publicar en GitHub Pages, Heroku o sitios similares. Por eso normalmente se necesita un PC/mac.
Quizá haya que ser muy friky para preferir hacer todo lo que voy a contar ahora y no usar wordpress pero, como dijo Steve McQueen en Los Siete Magníficos:

Lo nuestro es el plomo.

Claro, que un poco más adelante, en la misma película también dijo:

En aquel momento parecía una buena idea.

Sigue leyendo

Despite all my rage I'm still just a rat in a cage.

The Smashing PumpkinsBullet with butterfly wings

Siempre es bueno pararse a pensar que estamos haciendo, como lo estamos haciendo y ver si hay alguna forma de mejorar. En esta época del año, bien sea por las Navidades o porque precisamente se acaba un año y empieza otro, es un momento habitual para hacer uno de estos puntos de situación.
En mi caso no ha sido al llegar el final de año. Llevo bastante tiempo dandole vueltas a como me encuentro.

Sigue leyendo

Please allow me to introduce myself I´m a man of wealth and taste

The Rolling StonesSympathy for the devil.

En nuestro entorno es habitual hacer chistes sobre el usuario... por lo mal que hace los requisitos (cuando los hace), porque no sabe lo que quiere y cambia continuamente de opinión, porque no tiene ni idea de nada mientras que nosotros tenemos claro que es lo que necesita, etc, etc. Vaya por delante que yo mismo hago este tipo de comentarios habitualmente y que discutir con el usuario es parte principal de mi día a día pero eso no quita para que, a veces, sienta empatía por el diablo usuario.

Sigue leyendo

Desde que escribí Octoberry Pi tenía pensado hacer algo para no publicar inmediatamente lo que hubiera escrito y hacerlo a horas menos intempestivas que lo suele ser habitual ya que suelo terminar de escribir de madrugada. La solución pasaba por usar cron pero hasta estas navidades no he terminado de dejarlo listo.

Sigue leyendo

Últimamente me he estado pegando con las aplicaciones de iBooks y Kindle para sincronizar los libros que he comprado fuera de las propias tiendas de Apple y Amazon. Es curioso como cada una adolece de las ventajas de la otra. Es como si se hubieran puesto de acuerdo para que no exista la aplicación con sincronización perfecta

Sigue leyendo

He creado un workflow de Editorial para publicar en Medium. No es que sea algo excesivamente complicado pero creo que puede ser de gran utilidad para los que utilicen este servicio de publicación y quieran probar otras alternativas para cargar sus contenidos. Lo único que se necesita es un token de integración que puedes conseguir en tus ajustes de Medium.

El workflow puedes verlo o instalarlo desde aquí

Sigue leyendo

Después de un gran parón en mis hábitos nocturnos de desarrollo he vuelto a las andadas. Hace un par de semanas me dio por mirar las valoraciones de TasaTuCoche y me quede muy sorprendido al ver que todavía tenia buenos comentarios pese a no haber sido actualizada desde hace más de tres años. Se que la aplicación se sigue descargando porque todos los meses recibo un pago de Apple por un importe más o menos constante y durante todo este tiempo he ido reflexionando, a cuentagotas, sobre como evolucionarla ya que se ha quedado bastante atrás, principalmente en el diseño (todavía no esta adaptada a iOS 7).

El caso es que al ver los comentarios tan positivos y aprovechando que vuelvo a tener una vida relativamente normal (al menos tan normal como la tenía allá por 2011 o 2012) me he decido a crear la versión 2.0 de TasaTuCoche.

Sigue leyendo

Muchas empresas se gastan auténticas montañas de dinero en formar a sus directivos para que obtengan mucho más rendimiento de sus equipos enseñándoles avanzadas técnicas de motivación personal. El problema de esas empresas es que sus directivos han olvidado, si es que en algún momento lo han sabido, que en realidad la técnica más sencilla y barata de motivación es esta:

Sigue leyendo

Debo estar pasando por un momento minimalista porque cada vez que me pongo un rato con el blog no es para escribir nada nuevo sino para quitar dependencias. Hace tiempo que pase de Octopress 2.x a Jekyll pero todavía seguía usando algunos Plugins de Octopress 3.0 y otros míos.

Esta semana he eliminado todas las dependencias de Octopress excepto la que facilita el despliegue. Hoy, después de hacer algunos pequeños ajustes en los estilos he decidido también eliminar los Plugins que hice para usar Karmacracy como a cortador de url´s.

Sigue leyendo

De las muchas cosas que me gustan de DuckDuckGo destacaría la sugerencia que muestra cómo definitiva para algunas búsquedas. Si por ejemplo buscas un código de colores te precarga el color que estás buscando y alguno de sus equivalentes. Lo normal es que te muestre el artículo de la Wikipedia relacionado con la búsqueda pero esta de los colores o la de las respuestas de Stack Overflow es de lo mejorcito...

All around me are familiar faces
Worn out places, worn out faces
Bright and early for their daily races
Going nowhere, going nowhere

Tears For FearsMad World

Este articulo conviene leerlo mientras de fondo se oye la interpretación que hace Gary Jules de Mad World, aquí tienes el enlace para Spotify y el enlace para Apple Music

No sé si es porque no he buscado mucho o porque este tipo de historias no son las que habitualmente circulan por las redes sociales pero me llama mucho la atención el positivismo que siempre aparece vinculado a cada fracaso. En realidad, en todas esas historias de cometer errores es bueno porque se aprende mucho nunca se habla de algo que yo considero normal, o que al menos a mí sí que me pasa, y es el momento de bajón en el que te preguntas: "¿y si yo no valgo para esto?"

Sigue leyendo

Desde el momento en que publiqué la primera entrada (post, articulo o como queráis llamarlo) en blogger, hace ya unos cuantos años, supe lo difícil que me iba a resultar escribir con una cadencia suficiente como para sentirme satisfecho.

Sigue leyendo

En este blog ni se publican artículos ni se suelen poner comentarios pero cada vez que veo algo que me llama la atención tengo que probarlo así que, desde hoy, para comentar en los artículos habrá que tener cuenta en Github en lugar de Disqus. Lo siento por los cuatro o cinco que pusieron comentarios en el pasado... siempre os llevaré en mi corazón.