Monday, December 19, 2011

Programación de Dispositivos móviles por Mangocast Radio en Ñandutí AM

Ayer me invitaron Gunter Krone y Lucho Benítez a su programa de radio Mangocast que va por Ñanduti AM los domingos de 22:00 hasta la media noche. A no confundir Mangocast Radio y Mangocast Internet (el podcast que pueden oir de este feed).

El tema era hablar un poco sobre Programación de Dispositivos móviles, sobre todo aplicada a nuestro mercado paraguayo. Así como también, despejar algunas dudas al respecto.

Estuvo muy bueno el programa, hubo preguntas muy interesantes, tanto de Gunter y Lucho, así como también de los oyentes. Aprovecho la oportunidad para agradecerles la invitación. Grabar en un estudio profesional es otra historia, la calidad del audio final es sencillamente muy superior a lo que estamos acostumbrados en nuestro podcast de tecnología.

En fin, lastimosamente no se pudo grabar todo el programa completo por un problema técnico, pero les dejo los primeros 30 minutos por si quieran escuchar. También pueden escucharlo directamente desde la misma página de Ñandutí.




Wednesday, November 30, 2011

wall@roshka

Este mes inauguramos el wall@roshka.
El wall nos servirá para "postear" cualquier tipo de información interna, "levantar" fotos y "taguear" a personas.
Arrancamos compartiendo con todos la lista de cumpleanhos, el mayor, entre otros chistes internos. Seguido de un update
de las propagandas de los trabajos realizados por Roshka.
Gracias al wall, volveremos a elegir al "empalado" y al "chongo" de cada semana!
El evento se realizó compartiendo chipas con cocido ya tadicionales en la Roshka.








Tuesday, October 18, 2011

Charla sobre Programación de Dispositivos Móviles en STI 2011

Me invitaron a dar una charla sobre programación de dispositivos móviles en la Universidad Católica de Itapua. Es un congreso anual organizado por los alumnos que se llama STI: Seminario de Tecnología de la Información.

Primero que nada quiero decir que la organización fue muy buena. A los charlistas y penalistas nos trataron muy bien, y la cantidad de gente que asistió fue importante. Calculo que casi 200 participantes de la zona: San Ignacio, San Juan, Posadas y, por supuesto, Encarnación.



Hablé fundamentalmente de dos cosas:

  1. Programación de dispositivos móviles como concepto general
  2. Programación de plataformas modernas móviles: iOS, Android, BlackBerry, Windows Phone 7
A pesar de que no hubo demasiadas preguntas al final como me hubiese gustado y esperado, creo que el mensaje se entendió y la charla gustó. No fue muy técnica porque solo debería haber durado una hora. Cada vez estoy más convencido que a los paraguayos no nos gusta preguntar, porque el tema realmente daba para algo de debate.

Acá hay un link para bajar la presentación en PDF. Como se trató de una charla de programación de dispositivos móviles, usé por primera vez un iPad con KeyNote para la presentación, y quedé muy contento con el resultado. Funciona realmente muy bien, y no tuve necesidad de hacer ninguna conexión aparatosa o transporte de ninguna laptop.

Acá hay un video de un extracto de la misma.




También me invitaron a dar la misma charla en San Ignacio, Misiones el 19 de Noviembre. Donde tengo muchísimos buenos amigos. Tengo que gestionar mi permiso en casa. Si lo obtengo, con mucho gusto me doy una vuelta por ahí.

Me tocó también conocer a un fellow programador paraguayo que también fue a dar una charla muy buena sobre MongoDB: César Rodas (crodas en Twitter). Muy interesante todo lo que pude hablar con él (compartimos el viaje de vuelta) y tiene muchísimas cosas que contar que estoy seguro le van a ser muy útiles a todos los programadores paraguayos (y de otras partes también). Le voy a invitar en dos semanas a grabar Mangocast con nosotros, y quiero hacerle una extensa entrevista.

También di una charla sobre PostgreSQL. La misma que di en Free Software Asunción 2011 hace unas semanas.


Finalmente, quiero mencionar que hacía como 8 años que no iba al sur y Encarnación está irreconocible. Muy, muy, muy linda sinceramente. La próxima vez voy con más tiempo.

* Foto de novaparaguay.com

Thursday, October 13, 2011

Dennis M. Ritchie 1941 – 2011. El mundo de la tecnología continua en luto.


En menos de una semana dos genios extremadamente influyentes en el área tecnologica han dicho adiós.

Ayer se conoció la triste noticia que el fin de semana pasado falleció Dennis MacAlistair Ritchie, a la edad de 70 años.

Algunos de sus aportes mas significativos:

1. El desarrollo del lenguaje de programación C, junto con Brian Kernigan. También fue autor del célebre y clásico libro (probablemente todos los informáticos lo habremos leído) "The C Programming Language", conocido a veces como K&R.

Este libro sigue siendo la referencia fundamental del Lenguaje, y se continua utilizando en muchas universidades en los cursos de C.

2. Colaboro en el diseño y en el desarrollo de los sistemas operativos Multics y Unix.

La genialidad de D.M.R radica en la gran influencia que tuvieron estos proyectos en el mundo de la tecnología.

Hoy el Lenguaje C continua siendo uno de los mas utilizados del mundo, particularmente en el desarrollo de aplicaciones que requieren alta performance como los sistemas operativos, la maquina virtual de Java, embedded system's, etc. Ademas, se puede notar claramente la influencia del Lenguaje C en la mayoría de los lenguajes modernos.

Así también, Unix sentó las bases de los sistemas operativos modernos, estableciendo principios y conceptos que hasta hoy son ampliamente adoptados.

Su legado es realmente inmenso, cuesta muchísimo imaginarse qué hubiese sido del mundo tecnológico hoy sin él.

Descansa en paz Dennis.

Monday, October 10, 2011

Entrevista en Mangocast Ñanduti sobre la muerte de Steve Jobs

Ayer me entrevistaron Gunter Krone y Lucho Benítez desde Mangocast Ñanduti sobre Steve Jobs en la semana de su muerte. Traté de hacer un resumen de su vida, de sus logros y de su legado.

Acá el audio por si a alguien le interesa.


Qué bueno es que haya espacio en los medios para este tipo de programas en Paraguay!

Wednesday, October 5, 2011

Steve Jobs 1955-2011

Es poco lo que se puede decir en un día tan triste como hoy para todos los que de alguna manera u otra trabajamos en la industria. 

Directa o indirectamente, es difícil no haber sido inspirado o influido de alguna manera u otra por este ícono de la era contemporánea.

Hoy sobra recordar todos los inventos de Steve, todas las industrias que revolucionó y todas las vidas que cambió. Hoy sobra mostrar su gran liderazgo e influencia en todo el mundo, hoy sobra recordar sus grandes y espectaculares discursos y frases.

Hoy simplemente toca honrarlo tratando de vivir la vida como él siempre trató de enseñarnos:

No te conformes. Sacá lo mejor de vos siempre viviendo tu vida al máximo y dejando de vivir vidas y sueños que no son los tuyos.

Gracias por todo, Steve.


Friday, September 30, 2011

PostgreSQL: "El Elefante de las Grandes Ligas" en Free Software Asunción 2011

Me invitaron el 19 de Septiembre a Free Software Asunción 2011 a hablar sobre una base de datos que no sé si es Free Software (en el estricto sentido que le da al término la Free Software Foundation) pero que es definitivamente Open Source: PostgreSQL.



Preparé la charla y la titulé "El Elefante de las Grandes Ligas" y hablé de 3 cosas:

  1. Un poco de historia.
  2. 10 razones por las que el PostgreSQL juega en las grandes ligas.
  3. PostgreSQL en Paraguay
El título, para aquellas personas no acostumbradas a usar metáforas deportivas, hace alusión al hecho de que hoy día, la base de datos está realmente con posibilidades de competir mano a mano con otros grandes competidores de marcas como Oracle y SQLServer (productos de dos compañías que están entre las 5 más grandes empresas de tecnología del mundo).

Aprovecho la oportunidad para agradecer a quienes me pasaron información de estadísticas de uso de PostgreSQL en Paraguay para usarlas en la presentación.

Hubo preguntas interesantes, pero nadie siquiera mencionó la que pensé que iba a ser la primera pregunta de todas: cómo se compara PostgreSQL con MySQL? Si mal no recuerdo, todas las preguntas fueron en la línea de estrategias de migración a nuevas versiones de PostgreSQL

Acá dejo la presentación en formato PDF por si a alguien le interesa. Creo que filmaron la charla, pero no sé si están disponibles los videos de la misma. Ojalá los publiquen en algún momento.

Por último, les dejo un video de UNICANAL cubriendo el evento donde justo se ve por un momento la charla de PostgreSQL:


Actualización: como dice Jaime Casanova en los comentarios, PostgreSQL sí puede ser considerado Software Libre pues usa una licencia BSD que está aceptada por la FSF.

Tuesday, September 13, 2011

Este tipo de ideas...

Hoy, una pequeña compañía de Software radicada en New York que personalmente admiro mucho llamada FogCreek Software, sacó al mercado un nuevo producto que se llama Trello.

El producto es extremadamente sencillo: permite mantener y compartir en "la nube" algo tan simple como una lista de tareas, con un valor agregado que los programadores muchas veces cometemos el error de dejar de lado, o peor aun, menospreciar: un lindo diseño junto con una atractiva interfaz del usuario.



Por qué me llamó la atención este producto? Porque tiene una característica fundamental que nos debería ser atractiva a todas las empresas de Software del Paraguay: hay capacidad técnica de sobra para hacer algo así en nuestro país. Y creo que sería lindo que alguna vez una empresa de Software nacional tenga el reconocimiento, influencia y alcance que va a tener (en mi opinión) este productito.

A nuestros alumnos, estudiantes y entusiastas del Software hay que formarlos no solamente en ser excelentes técnicos y programadores, sino en saber crearse su propio espacio y sus propias ideas más allá del analisis y debate de si usar "Software libre" o "Software propietario", el "lenguaje X" o el "lenguaje Y". Y después de la idea, formarlos en algo que también nos cuesta muchísimo: terminación y perseverancia hasta poner algo funcionando que el mercado acepte como bueno, innovador y útil.

Dejo esta reflexión porque creo y quiero este tipo de ideas para nuestra insipiente e incipiente Industria Nacional del Software.

Sunday, August 21, 2011

El futuro es móvil II

Ya hablamos anteriormente de nuestro compromiso de cara a nuestros clientes y el futuro inexorablemente móvil. En esa línea, junto con nuestro cliente Banco Familiar, lanzamos hace algunos meses la banca celular accesible a través de HTTP.

Para acceder a dicha banca celular, lo único necesario es un celular, que tenga configurado el acceso a Internet a través del mismo y que esté equipado con un navegador WEB.

Si bien es cierto cada días son más los equipos que cumplen con estos dos requisitos (*), y cada día son más los usuarios que tienen acceso a Internet en Paraguay a través de sus proveedores de telefonía celular (Tigo, Personal, Claro, VOX), también es cierto que estos requerimientos dejan afuera a la mayor parte de los casi 6 millones de usuarios que tienen estar compañías.

Por eso, a principios de este mes, junto con el Banco Familiar y las operadoras de telefonía celular Tigo y Personal, lanzamos lo que internamente llamamos Banca Móvil Light, y lanzamos al mercado como Banca Celular. Esto es, poner acceso a la información bancaria a los clientes que tengan un celular, aun cuando este no posea un navegador o acceso a Internet a través de las operadoras.

Cómo es posible esto? Gracias a una tecnología que está intrínsecamente ligada a las redes GSM, llamada USSD.

Con USSD la penetración al mercado de celulares de Tigo y Personal es total. No importa marca, modelo, plan de llamadas, configuración de datos o plan de datos disponible para el subscritor, la Banca Celular a través de USSD simplemente funciona para todos.

Cómo se accede? Sencillo: Marcando desde el teléfono *322# y luego apretando la tecla de llamada (send).

Al hacer esto, se obtiene un menú dentro del teléfono, que varía de modelo en modelo, pero se parece a esto:


Una vez que el usuario ingresa su PIN secreto (que tiene que gestionar con el Banco Familiar), se puede acceder a menú de opciones financieras disponibles del Banco.


Las opciones disponibles son de consulta (estado de cuentas, tarjetas, préstamos) así como también transaccionales (transferencias entre cuentas, pago de servicios financieros, pago y compra de servicios generales). 

El futuro es móvil y esto no termina acá. Este es un segmento que va a seguir creciendo día a día en los próximos años, y como empresa de tecnología que somos, pretendemos acompañar a transitar por este camino a todos nuestros clientes. Es nuestro compromiso, porque la vanguardia, es así.

---

(*) Marc Andreessen uno de los fundadores de Netscape, y actualmente Venture Capitalist para varias compañías de tecnología, predijo en este artículo para el Wall Street Jornal esta semana que en los próximos 10 años, 5 billones de usuarios en todo el mundo accederán a Internet a través de sus compañías celulares y dispositivos inteligentes (smartphones).

Saturday, July 30, 2011

Integración y Tecnología en las Redes Sociales: Red Social Tigo

Venimos trabajando en conjunto con la gente de Tigo Paraguay en definir una política de presencia e integración de la empresa y sus clientes con las redes sociales, hace bastante tiempo.
La idea es, utilizar el masivo canal de comunicación que brindan las redes sociales, para poder establecer un vínculo mejor y personalizado con los millones de clientes que utilizan a diario los servicios de Tigo en Paraguay. Un HUB SOCIAL para que los clientes puedan integrar sus vidas sociales virtuales de una mejor manera con sus servicios de telefonía celular.
Luego de largos meses de afinar, probar y definir el producto, nace la Red Social Tigo. Una aplicación de Facebook que va mucho más allá de una simple aplicación de promoción de algún producto, buscando dar, a los clientes de Tigo, servicios complementarios con todas las redes sociales a través de sus teléfonos celulares.

Inicialmente, Red Social Tigo empieza con 3 funcionalidad bien definidas:


  • Poder estar conectado y utilizar el CHAT de Facebook 24 horas sin necesidad de tener una computadora al lado.
  • Poder publicar fotos a Facebook a traves de un MMS, sin necesidad de tener un moderno y costoso smartphone que pueda ejecutar alguna aplicación nativa de Facebook, o que tenga un complejo plan de datos asociado al mismo.
  • Poder enviar TWEETs desde tu teléfono directamente.

Está previsto ir agregando más servicios a la Red Social Tigo a lo largo del año, que van a ser muy interesantes y atractivos para todos los usuarios, en términos de acceso a la información y promociones donde podrán ganar muchas ventajas al usar productos de Tigo. No podemos adelantar la naturaleza de los servicios que van a ser agregados, pero estamos seguros que serán muy atractivos para todos los subscriptores de Tigo.
Con este complejo producto, renovamos nuestro compromiso de proveer valor agregado real a las plataformas existentes, con ideas, implementaciones y tecnologías desarrolladas y hechas en Paraguay.



Tenemos planeado hacer unas entradas futuras en este BLOG detallando algunos componentes tecnológicos interesantes que hay en el sistema.

Monday, July 18, 2011

Logging full HTTP Requests in Java Servlets (à la Django)

I find it very useful to be able to LOG full HTTP requests (parameters, cookies, HTTP headers) when doing web development. It's probably more convenient using a good debugger (Eclipse, Visual Studio and similar products have great debuggers embedded) but there are some scenarios where debuggers are hard to use:


  1. Debugging on remote servers
  2. Debugging API callbacks (Facebook API callbacks, Twitter API callbacks)
  3. Just plain logging information when hosting a RESTful/SOAPAPI
When using  Django (one of many Python's web development frameworks) these lines of code,

logger = logging.getLogger(__name__)
def twitter_callback(request):
    logger.info(request)
    # rest of HTTP processing follows...

yield a very useful print of the HTTP request that looks like:


<WSGIRequest
GET:<QueryDict: {}>,
POST:<QueryDict: {u'signed_request': [u'XXXXXXX',
 'csrftoken': 'XXXXXXX',
 'galletita_67': '6767'},
META:{'CONTENT_LENGTH': '378',
 'CONTENT_TYPE': 'application/x-www-form-urlencoded',
 'CSRF_COOKIE': 'XXXXXX',
 'DOCUMENT_ROOT': 'XXXXXXX',
 'GATEWAY_INTERFACE': 'CGI/1.1',
 'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
 'HTTP_ACCEPT_CHARSET': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
 'HTTP_ACCEPT_ENCODING': 'gzip,deflate,sdch',
 'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8',
 'HTTP_CACHE_CONTROL': 'max-age=0',
 'HTTP_CONNECTION': 'keep-alive',
 'HTTP_COOKIE': '__utma=XXXXX; csrftoken=XXXXX; galletita_67=6767',
 'HTTP_HOST': 'example.com',
 'HTTP_ORIGIN': 'http://apps.facebook.com',
 'HTTP_REFERER': 'http://apps.facebook.com/example/',
 'HTTP_USER_AGENT': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30',
 'PATH': '/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin',
 'PATH_INFO': u'/example/',
 'PATH_TRANSLATED': '/usr/local/www/apps/example_django/django.wsgi/example/',
 'QUERY_STRING': '',
 'REMOTE_ADDR': '192.168.16.240',
 'REMOTE_PORT': '56330',
 'REQUEST_METHOD': 'POST',
 'REQUEST_URI': '/tigo_paraguay/',
 'SCRIPT_FILENAME': '/usr/local/www/apps/example_django/django.wsgi',
 'SCRIPT_NAME': u'',
 'SERVER_ADDR': 'X.Y.Z.Z0',
 'SERVER_ADMIN': 'rachel@example.com',
 'SERVER_NAME': 'example.com',
 'SERVER_PORT': '80',
 'SERVER_PROTOCOL': 'HTTP/1.1',
 'SERVER_SIGNATURE': '',
 'SERVER_SOFTWARE': 'Apache/2.2.17 (FreeBSD) mod_ssl/2.2.17 OpenSSL/0.9.8e DAV/2 mod_wsgi/2.8 Python/2.5.5 PHP/5.3.6 with Suhosin-Patch SVN/1.6.16',
 'UNIQUE_ID': 'XXXXX',
 'mod_wsgi.application_group': 'example.com|',
 'mod_wsgi.callable_object': 'application',
 'mod_wsgi.listener_host': '',
 'mod_wsgi.listener_port': '80',
 'mod_wsgi.process_group': '',
 'mod_wsgi.reload_mechanism': '0',
 'mod_wsgi.script_reloading': '1',
 'mod_wsgi.version': (2, 8),
 'wsgi.errors': <mod_wsgi.Log object at 0x2b6b6da0>,
 'wsgi.file_wrapper': <built-in method file_wrapper of mod_wsgi.Adapter object at 0x2b6a24e8>,
 'wsgi.input': <mod_wsgi.Input object at 0x2b6afb10>,
 'wsgi.multiprocess': True,
 'wsgi.multithread': False,
 'wsgi.run_once': False,
 'wsgi.url_scheme': 'http',
 'wsgi.version': (1, 0)}>

Well, I wanted something similar in Java Servlets. So I did what most of us developers do these days. I posted a question on StackOverflow asking if there is something like this available somewhere. And even though I got a lot of comments (*), five days later I had no answers on the topic.

(*)

So I wrote a little Java helper class to print a HTTP Request in a similar manner, so we can internally use in our devteam. Here's the class' source code in case you want something similar. It works with no other dependencies than JavaEE libraries (for javax.servlet.HttpRequest interface access) and produces output quite similar to what you get on Django.

To use it, just add the class to your Java Web project and use it like this:

public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    // debugInfo should print something similar to what you get in DJANGO
    logger.debug(RequestPrinter.debugString(request));
    // ... rest of servlet code follows...
}


Spanish translated entry will come in a few days.

Monday, May 16, 2011

El futuro es Móvil

Mucho antes de que en 2010 Gartner haga predicciones diciendo que en 2013 el acceso WEB a través de dispositivos móviles sobrepasaría al acceso WEB a través de las PCs convencionales (*), mucho antes de que Apple en 2007 revolucionara el acceso a Internet a través de un móvil con un navegador casi comparable a sus equivalentes en el Escritorio, e incluso mucho antes de que los teléfonos empezaran a introducir tímidamente navegadores móviles en su oferta, todos sabíamos que el futuro es móvil. Se estima así mismo que entre 700 y 800 mil personas (**) en Paraguay tienen la posibilidad de acceder a Internet a través de sus teléfonos celulares.

Es por eso que la semana lanzamos en conjunto con una entidad financiera cliente nuestra, la Banca Celular: para que puedas usar la Banca Web desde tu celular.

Para acceder, solo basta con apuntar tu navegador móvil al URL institucional del banco: www.familiar.com.py. El sistema, automáticamente detectará el acceso a través de un navegador móvil y será automáticamente redirigido a la Banca Celular.

Nada de esto viene sin su desafío tecnológico correspondiente: constantes cambios en los móviles, constante introducción de nuevos dispositivos con distintas características, diferente comportamientos de algunos navegadores móviles (ejemplo, algunos no soportan correctamente redirección HTTP, o no todos tienen cargados todos los Root Certificates Authorities para acceso seguro a través de HTTPS), errores en algunas implementaciones, y podemos citar muchos desafíos más. Pero tampoco nada de esto viene sin la satisfacción de darle a los clientes la ventana al futuro que su negocio necesita.


Las interfaces de usuario para la Banca Celular se diseñan sobre medida para cada clase de teléfono con las características particulares de esa clase. De esta manera, solo basta con tener cualquier teléfono con un navegador y un plan de datos habilitado, y es todo lo que se necesita para acceder al sitio. Por supuesto, como en algunos casos la transmisión de datos a través de las redes celulares pueden ser costosas, todas las páginas están optimizadas para realizar la menor cantidad de transferencia posible sin poner en riesgo la buena experiencia de uso del usuario.

El futuro es móvil y esto no termina acá. Para teléfonos lugares donde la red celular de datos no es lo suficientemente buena, o para clientes que sencillamente no tienen habilitados los parámetros de navegación de su operador celular, estamos preparando la Banca Celular USSD que va a permitir acceso móvil a los servicios del banco con un teléfono GSM cualquiera, sin necesidad de contar con un navegador, plan de datos o simplemente una configuración correcta de sus dispositivos.

(*) By 2013, mobile phones will overtake PCs as the most common Web access device worldwide.
(**) Lastimosamente hoy día no hay una fuente que se pueda citar en esta línea, pero son datos que creemos que se acercan a la realidad por mediciones de empresas amigas a las que tuvimos acceso y no podemos revelarlas.

Friday, April 29, 2011

Escuchando a nuestros usuarios

Siempre queremos escuchar y aprender de nuestros usuarios. Nuestro primer proyecto en el Mac App Store, Quick Events, tuvo buena receptividad entre los usuarios y tuvimos varios comentarios de mejoras para el mismo.

Es por eso que hoy, estamos sacando la versión 1.1 donde escuchamos a nuestros usuarios y seguimos creciendo en este producto. Ejecuten la aplicación del AppStore de sus Macs, y van a tener la posibilidad sencilla y directa de actualización.



Saturday, April 16, 2011

Decimos presente en el Mac App Store



Además de nuestra presencia en el iOS AppStore con nuestros ya conocidos productos como BubbleDrill y iFogOfWar, hoy tenemos el orgullo de presentar nuestra primera aplicación en el Mac App Store: Quick Events for iCal.

Este es el sitio oficial de la aplicación. Por ahora, el único idioma soportado es el inglés. Esta decisión fue influenciada única y exclusivamente por el mercado que, hablando de Mac OS X debe ser de una mayoría absoluta anglo parlante. Pretendemos extender esto para soportar Francés, Alemán, Portugués y por supuesto, Español.

Para aquellos que no tienen una Mac, o no tienen instalado el Mac App Store, así es como luce la aplicación en la tienda virtual:


Quick Events for iCal es una aplicación sencilla que permite automatizar y crear rápidamente entradas en iCal utilizando lenguaje natural. Para ver cómo funciona, en la página oficial pusimos un screen cast.

Con esto, seguimos nuestro compromiso que empezamos en 2003 y continuamos hasta hoy de exportar tecnología e ideas a todo el mundo.

Es gratis por tiempo limitado. Aprovechen!