CHECKIN SCAN

CHECKIN SCAN

Checkin Scan es una plataforma para facilitar el alquiler vacacional a los propietarios de viviendas dedicadas a alquileres de este tipo ante las nuevas gestiones necesarias obligatorias. Lo realmente interesante de estas apps desde el punto de vista técnico es su capacidad de reconocimiento de códigos MRZ.

Splash Screen Home Screen Options ScreenDetails Screen Scan Screen

Las versiones iniciales se basaban en estructuras nada mantenibles debido a que no estaban desarrolladas con código modularizado ni jerarquizado, con lo que cualquier cambio o arreglo requería demasiado trabajo y aparición de efectos colaterales.

Por tanto la primera fase a mi llegada al proyecto fue, tanto en la versión iOS como en la Android, compaginar arreglos de bugs urgentes con la reestructuración y refactoring del código por segmentos para depurar el proyecto y hacerlo más manejable y prepararlo para nuevas funcionalidades y mejoras.

Posteriormente comencé con la integración de nuevas funcionalidades y modificaciones en los interfaces para alcanzar una mejor usabilidad. La versión actual esta ya muy depurada. Se le ha incluido mucho control sobre descargas y usos de los clientes para poder monitorizar preferencias y así detectar posibles mejoras interesantes.

Check-in Scan

Check-in Scan

Las Lagunas. Mijas Costa. de abril de 2018 a octubre de 2018.

Desarrollo de clientes front-end iOS y Android para el proyecto Check-in Scan.

  • Desarrollando de proyecto nativo Check-in Scan para plataforma iOS.
  • Desarrollando de proyecto nativo Check-in Scan para plataforma Android.
  • Mantenimiento de stores de publicación.

Web oficial de Check-in Scan.

Manual del desarrollador iOS Parte 1: Herramientas

Manual del desarrollador iOS Parte 1: Herramientas

Si vas a desarrollar proyectos con tecnología iOS, la siguiente relación de herramientas a utilizar puede ser muy interesante para ti.

Herramientas generales

Para comunicaciones:

1. Mail (o su cliente de correo preferido con su cuenta de correo electrónico corporativo)
2. Skype (https://www.skype.com/es/download-skype/skype-for-computer/) (crea una nueva cuenta y compártela con tu equipo)
3. Slack (https://slack.com/)
4. Screenhero (para compartir pantalla) (primero debes registrarte aquí: https://screenhero.com/login/)
6. MirrorOp (http://www.mirrorop.com/)(https://prezi.com/hs3g-xjf8esx/interactuar-con-mirrorop-para-android-y-windows/)(https://itunes. apple.com/es/app/mirrorop-presenter/id808539605?mt=8)

Para la gestión de proyectos:

1. Confluence (https://es.atlassian.com/software/confluence)
2. JIRA (https://es.atlassian.com/software/jira)
3. Bitbucket (https://bitbucket.org/)

Software de desarrollo

Esta es la lista de software que puedes usar para implementar tu entorno:

1. Xcode (https://developer.apple.com/xcode/).
2. CocoaPods (https://cocoapods.org/).
3. SourceTree (https://www.sourcetreeapp.com/).
4. TestFlight (https://developer.apple.com/testflight/)
5. FireBase (https://firebase.google.com/)
6. Fabric (https://get.fabric.io/).
7. Crashlytics (http://try.crashlytics.com/).
8. Realm Browser (https://itunes.apple.com/es/app/realm-browser/id1007457278?mt=12)(https://realm.io/).

Y este es para crear interfaces de calidad y rápido:

1. Sketch (https://www.sketchapp.com/)
2. Supernova (https://supernova.studio/)
3. Zeplin (https://zeplin.io/).

Software personal

Esta es una lista de software que necesita para otros fines además del desarrollo:

1. EnPass (https://www.enpass.io/) Si necesitas almacenar tus contraseñas de forma segura.
2. MacTex (http://www.tug.org/mactex/) para leer y crear documentos.
3. Sublime (https://www.sublimetext.com/3) para BDD (Gherkin)

Credenciales corporativas de desarrollador de Apple:

Esto es necesario para acceder a nuestro programa corporativo de desarrollo de Apple (https://developer.apple.com/):
1. ID de Apple: crea uno asociado a tu cuenta de correo electrónico.
2. Certificado de iOS: crea el tuyo para fines de desarrollo y súbelo al web del Programa de Desarrollo de Apple (https://developer.apple.com/).

Ayuda en la red:

Aquí puede encontrar un sitio útil con información esencial para aprender o actualizar conceptos rápidos e iOS para desarrollar:
Introducción a Xcode: https://developer.apple.com/videos/play/wwdc2016/413/
Y siempre puedes escribirme y preguntarme. Estaré encantado de ayudarte! 🙂

COLIGO MESSENGER

COLIGO MESSENGER

Coligo Messenger permite la comunicación entre cualquier tipo de usuario registrado con su comunidad corporativa disponible, pudiendo compartir los más importantes formatos de contenido disponibles en la actualidad, indicando en todo momento presencia y disponibilidad.

Home / Listado Home detallado Opciones

Accedí al desarrollo de esta aplicación cuando ya se encontraba en fase avanzada de desarrollo, pero con multiples problemas crónicos debido a que se comenzó a desarrollar sin apogeo aún de Swift, por lo que gran parte de su librería básica estaba desarrollada en Objective-C, lo cual no era un problema en sí, pero si estaba ya dando muchos problemas como por ejemplo que no apovechaba multithreading y tenia muchos problemas de memory liks. Se consiguió encuazar y conseguir finalmente un producto plenamente funcional y muy versatil.

La gran experiencia para mi de participar en este proyecto fue la posibilidad de trabajar en un equipo multinacional y deslocalizado, con personas de Serbia, Holanda, Dinamarca y España con inglés como idioma común, y Scrum como metodología de trabajo, que nos permitió poner a prueba nuestros limites desarrollando y coordinandonos.

DASH

DASH

Dash es una aplicación desarrollada para el mercado Holandés cuya función es el control de servicios de comunicación contratados en la que se puede, por un lado, obtener monitorización de consumo de datos y voz y por otro lado modificar algunos parametros especiales de configuración de la cuenta de cliente como, por ejemplo, la elección de tu número como remitemte a mostrar, en caso de tener varios, o grabación de saludo personal automático.
También ofrece algunas funciones de uso de la cuenta como la gestión de correo de voz o la posibilidad de responder mediante llamada directa a contactos que dejaron un mensaje.

Home / Listado Home detallado Opciones

Esta es una versión antigua del nuevo Coligo Reach que estamos desarrollando en estos momentos con nuevas funcionalidades que Dash no tiene. Se decidió mantener esta aplicación por el uso que estaba consiguiendo pero actualizandola por estar desarrollada hace demasiado tiempo en Objective-C.

Mi participación en este proyecto fue supervisando la refactorización y reescritura del proyecto en Swift aprovechando para reformar tambien profundamente sus interfaces de usuario.

Paleomovilidad Parte 2

Paleomovilidad Parte 2

Ya tuve la oportunidad de comentaros un poco como fueron los primeros tiempos del desarrollo software para dispositivos móviles anteriores a los que ahora manejamos en la entrada titulada “Paleomobilidad Parte 1”. Ahí comentaba las tecnologías que se decidieron utilizar para poder ir permitiendo que cada vez pudiesen ser de más utilidad al usuario más allá de simplemente comunicarse por voz o mensajes.

Ya solo faltaba, por parte de los desarrolladores, estudiar como poder explotar al máximo esas nuevas tecnologías para sacarle el mayor provecho a los nuevos prodigios tecnológicos que iban apareciendo en el mercado.

Para poder escribir los programas iban surgiendo diferentes herramientas aunque las de siempre, estilo IDE, seguían siendo las más útiles y desarrolladas debido a su ya prolongada implantación para Java y otros lenguajes. A pesar de Jbuilder y NetBeans, el que empezó a ser más utilizado en general por la comunidad fue Eclipse con el Java ME SDK instalado.

También aparecieron las J2ME Wireless Toolkit de Sun Microsystems, para facilitar tareas de testeo con su gama de emuladores, optimización y personalización para diferentes dispositivos.

Aquí una foto de familia del Mobile Devices Department, equipo con el que trabajé en GexTech (De izquierda a derecha: Arriba: Rómulo, Fabián, Xeleh -el jefe-, Parra, Chaky, Isra, Más Abajo: Pako, yo y Toni):

El resultado de desarrollar con estas herramientas, una vez depurado el código, se sometía a otras herramientas de composición y linkado surgidas para poder aprovechar lo más posible un código común para un número cada vez más creciente y dispar de dispositivos.
Estas herramientas, una vez configuradas, permitían automatizar la consecución de código ejecutable para un celular en concreto o una familia de ellos, según se solicitase, seleccionando el código fuente adecuado gracias a un ingenioso sistema de etiquetas y compilándolo y linkándolo con las librerías necesarias y los recursos adaptados a esas capacidades del dispositivo, tipo gráficos o audios, sacados de repositorios preparados para tal efecto.

Solían ser del estilo a la tecnología Antenna basadas en bloques de decisión escritos en XML.

Para mi gusto, la mejor solución de aquel entonces fue J2ME Polish por como supo entender las dificultades de aquel tipo de desarrollos en porting y como facilitó las cosas a los desarrolladores en la medida que los tiempos y la tecnología de entonces lo permitía.

Gracias a estas herramientas se pudo conseguir que desarrollar para aquellos incipientes precursores de los smartphones actuales fuese algo menos complicado y no solo posible sino también competitivo para fines comerciales.

Swift

Swift

Acabo de terminar de desarrollar mi primer proyecto enteramente escrito en el nuevo lenguaje de programación adoptado por Apple para las implementaciones nativas para iOS: Se trata se Swift. digo nuevo porque, aunque llevan ya más de dos años introduciendolo, ha evolucionado recientemente hacia su version 3, concretamente a día de hoy ya estamos en la 3.1.1. y es bastante diferente a las anteriores.

Lo primero que sentí, como imagino que le ocurrió a todo desarrollador iOS, fue incertidumbre, no ante lo desconocido, ya que estoy ya a estas alturas más que acostumbrado a afrontar nuevos retos, lenguajes, tecnologías y artefactos que tienen a bien lanzar por aquí y por allí como no puede ser de otra manera, se llama progreso. El problema más bien era temer por si se trataba de una nueva estravagancia de Apple.
No es que la estravagancia en si sea mala o reprochable, pero si hacen que se trate de “voy a ser diferente y muy cool aunque eso signifique complicar las cosas”, como ya a sido desde el principio la tendencia de Apple con iOS, entonces estariamos en un nuevo problema y sin razón aparente. Bastante tuvimos ya con tener que tragar con Objective-C como para que ahora… Pero no a sido así!!!

En muchos otros aspectos Apple parece ya haberse dado cuenta de que debe ir dejando de lado el lema “Antes muerta que sencilla” y auspiciar técnicas y tecnologías más prácticas y útiles. El cambio de lenguaje definitivamente va en esa linea.
Los cambios han ido siendo evidentes con la sucesiva llegada de las nuevas versiones de su IDE Xcode: primero fué intruducir un solicitado a voces control automático de memoria o Automatic Reference Counting (ARC), luego se pasó de los terribles .xib a los .storyboard para facilitar la implementación de los interfaces, unificando también el diseño para iPhone y iPad en todas sus variantes.
Más recientemente han sido temas ajenos a la programación pero que traian más aún de cabeza si cabe a la comunidad desarrolladora para iOS, como a sido la automatización de la firma y aplicación de certificados a una compilación que se pretende publicar, el desbloqueo absurdo a la utilización del famosisimo SVN para control de versiones y su total integración en Xcode… en definitiva sucesivas “bajadas de la burra” a las que se ha visto avocada la arrogancia heredada de su caprichoso Dios, el señor Jobs, en aras de un mejor y más rapido desarrollo de Apps.

Pues bien, ya puedo decir que el cambio de Objective-C a Swift no solo es otro de estos cambios en la misma linea de mejora… es quizá el mayor y más fuerte de estos cambios!!!

Ha resultado ser a mis ojos un gran lenguaje de programación, muy bien pensado, que puede seguir resultando algo raro o distinto a programadores consagrados en lenguajes mucho más famosos o extendidos, no olvidemos que seguimos en el mundo Apple y todo debe tener algún toque estrafalario como mandan sus canones, pero que nada tiene que ver con la falta de sentido común que arrastraba Objective-C a pesar de haber intentado evolucionarlo.

Swift es mucho más amigable, ¡sin punteros!, ¡sin corchetes!, ¡sin archivo de interfaz separados de la implementación!… en definitiva más rápido de escribir con codigo resultante más claro, entre otras cosas gracias a las nuevas APIs Foundation… ¡desaparece el prefijo NS que estaba en todo! clases tales como NSDate, NSTimer y NSURL ahora solo son Date, Timer y URL en el código Swift. Es el “nuevo paso” despues de NeXTStep que ya “olía”… son ahora compatibles con sistemas operativos basados en Linux gracias a la nueva y más simple sintaxis.

Se introduce el utilisimo manejo de errores con bloques “try” y “catch” que tanto echo de menos al salir de Java.
A pesar de ser un lenguaje fuertemente tipado, su declaración no siempre es necesaria gracias a su capacidad de inferir tipos, lo cual es útil en innumerables ocasiones, por ejemplo con variables de vida corta y poca relevancia en las que no queremos perder demasiado tiempo.

Son estas unas cuantas razones por las que a sido para mi muy grato el cambio de lenguaje. Podemos seguir diciendo que Apple sigue en muy buena linea arreglando desaguisados crónicos que habia cometido en su apartado iOS.

Si siguen en esta senda, por fin podremos dejar de criticar decisiones incomprensibles y queradá claro que se equivocaban desde el principio y que la realidad los esta obligando a poner las cosas en su sitio, eso si, también estaremos por fin ante una tecnología movil soberbia y de grandisima calidad con un entorno de desarrollo al fin a la altura de las circustancias, pero les queda aún algo de camino, o sino ¿a que viene que a estas alturas aun no se pueda refactorizar código Swift en el Xcode?!?!?!

OFFERTITY

OFFERTITY

Offertity en su versión iOS ha sido el primer proyecto que he realizado enteramente en swift y en su versión más reciente en el momento de su desarrollo: la 3.1.1.

Permite búsquedas de ofertas en establecimientos y comercios cercanos atendiendo a tu posición actual con toda la información necesaria para enrutado hasta el lugar, horarios, naturaleza de las ofertas, posibilidad de guardarlas como favoritas, etc.

En caso de preferir buscar en otras localidades facilita la localización incluso en poblaciones pequeñas. El usuario puede registrarse y gestionar su uso tanto desde el punto de vista de cliente buscando ofertas como si se trata del gerente de alguno de los establecimeintos adheridos, modificandolas e introduciendo nuevas ofertas asociadas a su cuenta.

Del punto de vista técnico a sido muy gratificante este desarrollo ya que me ha permitido explorar todos los nuevos recursos aportados por Apple para iOS, como son Swift, las nuevas versiones de Xcode con la tan deseada automatización de la firma con certificados o el nuevo sistema de constraints para las interfaces gráficas y por supuesto el Test Flight para la fase de pruebas y test acotados.

Ya esta publicada una versión definitiva con la que se podrá disfrutar de su buscador de ofertas en cualquier punto de España. Se puede descargar Aquí.