lunes, 27 de abril de 2015

Trabajando sin parar en el proyecto


Así es más o menos como medito antes de sentarme delante del portátil a programar.

No he conseguido finalizar el proyecto en el plazo que quería. Aún trabajando como un animal, es realmente una barbaridad para un único desarrollador.

La buena noticia es que al menos en esta fase, lo que llevo desarrollado de la app está funcionando muy bien.

Al despertarme esta mañana me he enterado que Microsoft ya no va a emplear más Internet Explorer.
Al menos no con el core antiguo, lo renuevan de arriba a abajo. El proyecto se llama Spartan.
Como todo buen proyecto que Microsoft inicia de cero supongo que incluirán nuestro amigo y vecino "Pantalla azul de la muerte", el famoso "Pantallazo azul", más conocido en el mundo entero como "Blue Screen of Death".
Para quien no lo recuerde, era una movida metafísica que se manifestaba en Windows en el peor momento posible. Si estabas a punto de pasarte un nivel bestialmente complicado, si habías acabado un trabajo y estabas a punto de guardar los cambios, si estabas a punto de bajarte un archivo de 1Mb con tu mierda de modem de 56k, entonces PAM!! Aparecía de repente, el estómago se te ponía al revés y empezabas a soltar mierda por la boca, dabas patadas a tu torre y apagabas el ordenador desconectando el diferencial del edificio.


Tenía un aspecto parecido a esto, normalmente era extremadamente ilegible, daba igual que mensaje apareciera, te quedabas con la misma cara de tonto.



Espero que lo incluyan siguiendo la misma amigable política. Supongo que aparecerá en el mejor momento de algún vídeo de youtube, o cuando vayáis a enviar un mail, o peor cuando entréis por temas de investigación en youporn.

Como comenté en el anterior post, ya hice el servicio para el upload de imágenes en nodejs, y empleo un ImageButton en Android para acceder a la galería, recortar la imágen, mostrarla en el ImageButton y automáticamente subirla al servidor. Va genial.

Ahora ya no quedan temas complicados en el proyecto, lo que queda es bastante mecánico pero requiere mucho trabajo. No me atrevo a hacer una predicción de cuanto me va a llevar, pero para los que esperabais noticias del blog, tranquilos, no he abandonado ni mucho menos el proyecto, estoy a full time con él. Pero no podía perder una hora al día escribiendo en el blog.

Los próximos posts los haré semanales, uno o dos cada semana.

Un abrazaco a todos!

jueves, 9 de abril de 2015

Día 62

Después de una semana de descanso, estoy con las energías 100% renovadas!!
He tenido tiempo para pensar y aprender algunas cosas extra.


Liberador.

Ahora estoy desarrollando el upload de la imagen del perfil de cada cuenta de usuario.
Abro la cámara de android y la foto la guardo en una carpeta creada para mi proyecto, y esa imagen la aplico al ImageButton que ha desencadenado el evento de abrir la cámara.

Esto está de coña, pero creo que prefiero que se abra la galería, de hecho es lo que haré mañana, seleccionar una foto de la galería.
Y el upload lo haré en principio atacando a un servicio que sea gestionado por una instancia de nodejs dedicada únicamente a este fin, que responda un json con la url.

Y eso es todo!! ya estoy de vuelta!!!

lunes, 30 de marzo de 2015

Día 61


Inseparables!!

Hasta ahora he trabajado con parámetros de configuración que iba cambiando en los valores por defecto. Ahora estoy desarrollando las pantallas de Ajustes (Settings).
Android tiene su propio sistema para diseñar pantallas de "Configuración", que facilita bastante la faena.
http://developer.android.com/guide/topics/ui/settings.html

Ahora mismo mi servicio en background emplea SQLite para almacenar los resultados de las notificaciones que van llegando desde el servidor, y otros datos de valor.
Gracias a haber definido el servicio como Service.START_STICKY, cuando el usuario cierra la aplicación, el servicio sigue funcionando, justo lo que quería!! wuahiiii!!!!
Ayer estuve enganchado hasta las 3 de la madrugada, no funcionaba el maldito servicio!!! finalmente miré el fichero de manifiesto del proyecto y me había olvidado de definirlo allí, escribí dos líneas, desplegué, funcionó y explosioné.

viernes, 27 de marzo de 2015

Día 60


El fantástico Hiro Nakamura de la serie Heroes después de usar su super poder de teletransporte!!
Hoy me he despertado un poco en plan japonés con super poderes.

Tras 60 alocados posts sobre mi proyecto de desarrollo, con tantas referencias cinematográficas como técnicas, el blog ha tenido 3.171 visitas, contadas una por una por los dos siguientes fantasmas.


Según esto en estados unidos estáis majaretas. Gracias tíos!! Y a todos los demás también!!
De hecho muchas gracias a todos, los que estáis siguiendo el blog y aquellos que cada semana os vais sumando aunque sólo sea para ver los gags visuales!

No he desvelado de qué va el proyecto, pero hay tantas tareas que en el día a día el objetivo no se atisba entre la espesura del desarrollo. (¿qué coño hago hablando como un puto mosquetero?)

Os resumo las tecnologías implicadas:

Servidor: nginx + nodejs + redis + mysql. Esta parte chicos y chicas es la que genera respuestas de tipo JSON a las aplicaciones android e ios, 
Google Cloud Messaging: es un servicio que ofrece google, que permite emitir notificaciones a los dispositivos móviles o a los servidores, es bidireccional. Emplea el protocolo XMPP.
Básicamente hace que cuando el servidor recibe algún dato por parte de un usuario, que debe ser notificado a otro usuario, envía una notificación directamente al dispositivo de ese usuario. 
Estas notificaciones son las típicas que os llegan de Whatsapp, Line, Facebook, Instagram,etc.
Amazon SES: es el servicio para enviar emails de salida. Básicamente lo empleo para dos cosas, enviar email de registro de usuarios nuevos y para email de recuperación de contraseñas.
Android
Empleo 2 servicios básicos, uno que recibe notificaciones y otro que emite notificaciones.
Empleo el UI básico de Android, con muchas RecyclerViews, ScrollableViews y estilos personalizados.
Uso SQLite para almacenar la parte más importante de datos en el cliente y las SharedPreferences para almacenar las settings básicas. Ambas colecciones en estado privado.
GSON para el parseo de los objetos JSON que envía el servidor.
IOS
Tengo la estructura básica de UI, y espero poder meterle la misma chicha que en android, en cuanto tenga finalizado al menos el 90% de la versión para Android.

He realizado muchos proyectos grandes antes, pero nunca había tenido que pelearme con tantas tecnologías distintas. Normalmente trabajaba en equipo. Echo a faltar un poco las locuras que se generan currando con equipos. 
Aunque un proyecto de este tipo genera una perspectiva global impresionante.

Como comenté ayer, creo que en 2 semanas ya podré tener a colegas y familia testeando la versión para Android y supongo que estaré como una cabra loca desarrollando la versión para IOS y corrigiendo bugs (no han salido apenas durante el desarrollo, sólo espero que los que aparezcan no me hagan correr hacia la pared y atravesarla).

Todos aquellos que tengáis dudas, sobre las tecnologías que estoy usando, temas de configuración. Componentes de UI que no os están funcionando en Android. Handlers y Callbacks de nodejs. Temas de MySQL, nginx. No preguntéis ni comentéis nada porqué soy pro-un-mundo-peor en el que se comparte cero conocimiento. Desayuno delfín y mi pijama está hecho con piel de bebé pingüino.

Ahora en serio, para cualquier cosa PREGUNTAD! Si dispongo de ese conocimiento y puedo resolveros una duda lo intentaré!!

Aquí va un consejo para cuando has decidido echarte una siesta en el segundo peor lugar del mundo.


El peor lugar del mundo, sería sobre la cara de Chuck Norris.

jueves, 26 de marzo de 2015

Día 59


Si existieran programadores bestias, auténticos tipos duros de aporrear el teclado, tendrían este aspecto.

Buenas a todos!
He tenido que ausentarme unos días por temas externos al desarrollo.
Pero he podido leer muchísimo. Habían algunos temas que desconocía como trabajan y que necesitaba, así que he aprovechado para aprenderlos.
He aprendido a usar Sqlite! Básicamente sirve para crear bases de datos locales, lo que es fantástico cuando tu aplicación no sólo tiene que almacenar settings. La manera de crear la base de datos, insertar, modificar y consultar registros tiene una sintaxis prácticamente igual al SQL clásico,  así que todo aquel que tenga nociones, puede empezar a trabajar con sqlite casi directamente.

Tras un par de semanas con mi portal caído a causa del proveedor de dominio que se negó a darme servicio únicamente de dominio (querían que contratara también hosting, unos putos locos),  www.iwokystudios.com vuelve a estar online. Para promocionar los juegos que vaya sacando.

Un buen desarrollador que conozco me recomendó una herramienta para testing de apps en nodejs, llamada Mocha. Aquí os pongo un enlace.

http://mochajs.org/

Soy cero fan del testing, pero necesito que la capa de servicios sea super consistente, así que me he propuesto aprender mocha (la semana que viene probablemente) y cada vez que finalice los servicios de una tipología, pasarles una buena dosis de tests.
Como comenté al principio, en el ordenador tengo una máquina virtual con la misma configuración que el servidor de amazon aws. De hecho empecé con nodejs en esa máquina. Cuando esté todo en producción para no tener que contratar otra micro-instancia los tests los haré en local.

Se suponía que en 60 días acabaría el proyecto, pero como ya comenté en otro posts publiqué en el blog prácticamente a diario, incluyendo muchos días en los que no he trabajado o he trabajado poco.
Soy bastante optimista sobre como está funcionando todo, así que espero tener una primera beta para Android en 2 semanas! Para que los colegas empiecen a ponerla a prueba en busca de grietas o fallos.


lunes, 23 de marzo de 2015

Día 58

Ya he diseñado las maquetas de las secciones de página web de la aplicación.
Inicialmente sólo será informativa, no tengo suficiente tiempo como para añadir la parte dinámica de la web, para gestionar las cuentas de usuario. Lo haré más adelante.
Así que básicamente serán HTML responsive, brutalmente bien diseñados, tanto que duelen los ojos.
Siendo así, los incluiré en la parte estática del servidor nginx, sin mayor complicación.

Ahora os dejo un consejo importante, prestad atención.



domingo, 22 de marzo de 2015

Día 57


Escena de Desafío total (Total recall). Arnold das miedo colega.
En esta película un tío tiene a otro que le sale de la barriga, una especie de alien enano rarísimo que por lo visto es bastante inteligente. De pequeño esa escena me daba entre miedo y curiosidad, una especie de terror que no podía dejar de mirar. Dantesco. De más mayor no podía parar de reír al ver ese monstruo raro.

Tengo un dilema total, a la hora de escoger cual es el mejor método para distribuir mis datos entre diferentes bases de datos mysql. Durante la carrera de ingeniería apenas di temas de clustering y ahora estoy improvisando con mis conocimientos de teoría de conjuntos, matemáticas básicas, chocolates y repostería.