Probando la AppFactory (II)

Hace poco les contaba que probé la AppFactory y que estaba, digamos, contento con lo que había visto, comentaba, también que había enviado mi aplicación para que la certificaran y estuviera pronto en la tienda. Sin embargo, mi desencanto no podría ser peor...

Resulta pues que las aplicaciones creadas dependen completamente de internet, de por si me resultó un poco raro que en el manifiesto de la aplicación estuvieran marcados los permisos de Internet y Redes Privadas. La app fue rechazada varias veces porque declaraba el uso de internet y no incluía una póliza de privacidad para el usuario ( ¬¬).



Mi app en ningún momento hace uso explícito de internet puesto que solo consta de 4 módulos de noticias (texto estático)  y uno de galería (imágenes estáticas). Nada consumido bajo demanda, ni conexiones a servicios web, mucho menos cuentas de usuario.

Debuggeando me di cuenta de el horror: Cuando la aplicación inicia se conecta a un web service para descargar información necesaria para el inicio de esta misma, lo cual significa que si el usuario final no tiene conexión a internet jamás podrá iniciar la app. Traté de romper ese vínculo de las aplicaciones con internet pero tampoco pude y es que me parece que la plataforma a experimentado algunos problemas en los últimos días.

La verdad es que no sé para que sea necesaria la conexión a internet para arrancar nuestra app, pero se me ocurren muchas teorías misteriosas, entre ellas una en donde creo que si en algún momento dado dejas de pagar por el servicio de AppFactory tu aplicación será inservible hasta que vuelvas a cumplir los pagos.

En resúmen: Vaya decepción que no pueda usar mi aplicación si no estoy conectado a internet y vaya decepción que mi app no haya quedado "lista" para certificarse inmediatamente después de haberla descargado de la plataforma de AppFactory.

¡Saludos!
@fferegrino :)

El problema del agente viajero y los algoritmos genéticos


Algoritmos genéticos
De las clases aprendí que los algoritmos genéticos son métodos de búsqueda y optimización inspirados en la evolución y en la base genética que esta implica. Para el uso de un algoritmo se genera un conjunto de soluciones posibles (nombraremos a cada una de estas soluciones "individuos") a nuestro problema (llamada población), esta población es mutada y recombinada mediante acciones aleatorias, como sucede en la evolución, además son sometidos a una evaluación para decidir cuales son los más aptos y separarlos del resto, que será descartado. En fin.


Llegó momento de entregar el proyecto final de la unidad de aprendizaje Genetic Algorithms, y como proyecto final elegí el clásico problema del agente viajero (Traveling Salesman Problem, TSP), y digo clásico porque en verdad resulta ser de los más usados para ejemplificar una de las muchas aplicaciones de este tipo de algoritmos.

TSP
El problema, más o menos, enuncia que: Un agente viajero tiene que visitar n ciudades sin pasar por la misma ciudad más que una vez, así mismo desea recorrer las ciudades trasladandose lo menos posible entre ellas, esto quiere decir que desea encontrar la ruta más corta para pasar por todas y cada una de ellas solamente una vez.

El problema es sencillo y se puede resolver con un algoritmo genético simple, basta con que se emplee técnicas permutativas (evitando así que se de una solución en la que se repitan ciudades para una ruta).

Solución
Para llegar a la solución de este problema escribí una pequeña aplicación en C#, en donde se emplea un algoritmo genético para llegar al resultado. 

Para la cruza se emplea el método de Cruza Cíclica, la mutación se realiza intercambiando dos genes seleccionados aleatoriamente y en la selección se elige a la mitad de individuos con mejores soluciones.

Código
Ahora sí, lo más interesante, además de lo ya mencionado dentro de la aplicación se usa la API de gráficos. Me da la impresión de que por ahí puede haber un poco de desperdicio de memoria pero pues ¡meh!
Traté de comentar el código todo lo que pude a manera de que quede claro así que espero les sirva y cualquier comentario y/o aclaración por correo, Twitter o en la sección de comentarios.

Encuéntralo en GitHub: Traveling Salesman Problem - C#

¡Saludos!
@fferegrino :)

Probando la AppFactory


Hace unos días obtuve un pase para probar la nueva AppFactory, que, como su nombre lo indica, e suna fábrica de aplicaciones para Windows 8. El concepto es simple: el usuario del sistema puede crear aplicaciones sencillas sin escribir una sola línea de código, el día de hoy vengo a contarles mi experiencia.

De entrada, el sitio web me gustó, agradable a la vista y muy limpio, demostrando la simplicidad de la que se precia. Una vez logueado nos mostrará las aplicaciones que hemos creado (por primera vez 0) y debajo nos da la opción de crear una nueva. La verdad, la primera vez que lo probé no sabía por donde seguir una vez que elegí crear la nueva app, duda resuelta al momento de revisar el vídeo tutorial y por lo cual considero que sería bueno colocar ese tipo de recursos dentro del sistema, y que estén disponibles en todo momento para el usuario.

No me agradó demasiado el hecho de tener que colocar las imagenes sin pleno conocimiento de a donde iban a parar algunas de ellas, considero que sería bueno tener una previsualización de como y donde van a quedar esas imagenes que se nos solicitan al inicio. Me llevé un pequeño disgusto al ver que una imagen no se veía bien en mi aplicación final puesto que no pude encontrar la manera de reemplazarlas.

Después fue tiempo de continuar con el desarrollo de mi aplicación añadiendo módulos, para esta utilicé 6 módulos en total: 5 de Noticias y 1 de Galería. 

Consideré que el de noticias sería más apto para presentar recetas de una manera más simple, el módulo, propiamente dicho funciona perfecto para presentar información fija, como puede ser el caso de recetas, descripciones, definiciones. Sin embargo me agradaría más tener la opción de añadir texto sin que tenga que ser una noticia, es decir, que no todos los campos sean necesarios.

En cuanto a la galería todo perfecto, nos permite subir imagenes y ponerles un título, cumple su funcionalidad.

Una vez completada la app, elegí publicarla, paso en el que volví a requerir asistencia del tutorial. Siguiendo los pasos fui capaz de descargar, compilar y enviar para revisión mi aplicación a la Windows Store. Ojalá me publiquen pronto :).

En resúmen: el servicio resulta bastante bueno y cumple lo que promete, ni una sola línea de código escrita por mi (me quedé con las ganas). Sin embargo creo que hay detalles que deben de pulirse, así como módulos que podrían dividirse y no ser tan genéricos. También me encantaría la posiblididad de usar los contratos de Windows 8 (por ejemplo: el contrato de Sharing, para poder compartir las imagenes y noticias que tengamos en nuestra app). Las posibilidades son muchas y creo que la AppFactory las puede aprovechar.



¡Saludos!
@fferegrino :)

Revolución OS

Hace unos días, en clase de compiladores nos tocó ver un documental (muuuuuuy viejo) acerca del surgimiento del movimiento de software libre, sin embargo. A pesar de que fue estrenado en 2001 se mantiene vigente e interesante. Siempre será bueno saber un poco de historia, en el vídeo se pueden observar a personalidades de la talla de Richard Stallman y Linus Torvalds.

Lo coloco acá abajo para que ustedes lo puedan ver:


Espero pronto poder hacer un post acerca de películas y documentales acerca de la historia del software, cómputo y tecnología.

¡Saludos!
@fferegrino :)

tacOmetro

Cuando el profesor de aplicaciones móviles me comentó sobre la idea de hacer un tacómetro para Android me pareció un poco descabellada la idea, después de mucho pensarlo (y buscar mucho en internet) se pudo, aquí una breve crónica al respecto, además del enlace a la aplicación y el reporte entregado.

Idea

La idea es hacer que mediante la cámara del dispositivo se perciba una imagen, de esta se extraiga la información necesaria como para crear un análisis en las variaciones de ilumnación de la misma. Se parte de la premisa de que cada que un objeto gire frente a la cámara habrá pequeñas (o muy grandes) variaciones en la iluminación. Entonces, contando estas variaciones y el tiempo que se lleva siguiendo podemos obtener la medición de las revoluciones por minuto. Esta parte de la aplicación se puede observar en este vídeo, en él se aprecia como es que la aplicación responde a las variaciones de iluminación:

El dispositivo a medir

Desde el inicio se supo que no podríamos medir cualquier cosa, ya que la prueba se debe desarrollar en ambiente controlado así que agarré mis Legos y de armar se trató esto:

Para finalizar

Ya para terminar les muestro un vídeo del producto funcionando, así como el reporte para que lo descargen y el enlace a la aplicación.

Ah, por cierto, esta la considero una aplicación muerta (ya no piennso seguirla actualizando) así que si alguien lo desea puede obtener el código fuente en GitHub para emplearlo como desee.

Reporte


¡Saludos!
@fferegrino :)

Para "perder el tiempo"

Si eres como yo, de esos que les gusta pasear por el internet, seguro te gustará conocer unos cuantos sitios más. Encontré unos blogs acerca del espacio y la tierra, estos sitios tienen unas cuantas fotos impresionantes y que espero ustedes disfruten "perdiendo su tiempo" tanto como yo lo hice.

Infinity Imagined
Heck Yeah Galaxies
Pappus' plane
Terra et Cosmos
Col. Chris Hadfield

En fin, todos son interesantes, si conocen otro más, coméntenlo para agregarlo a la lista.

¡Saludos!
@fferegrino :)

AndroidWebServer

La aplicación

Para construir un servidor web es necesario contar con un programa que haga las veces de “servidor”, es decir, que esté escuchando siempre en uno o varios sockets a la espera de algún cliente para servirle la información solicitada.
La interfaz gráfica será muy sencilla, una etiqueta para mostrar la IP del servidor, un botón para encender o apagar el servidor web y una consola para ver que es lo que está sucediendo, es decir llevar un registro de eventos.