Recomendados de la semana XXIV

Un pequeño post con cuatro aplicaciones recomendadas para Android:

  • Hace poco conocí AirDroid y se ha convertido en una de mis herramientas favoritas. Es una aplicación, extremadamente fácil de usar, que permite conectarse al teléfono utilizando la red WiFi y transferir archivos, enviar SMS, ver los mensajes existentes, ver la información de los contactos, crear nuevos contactos, reproducir las canciones que se encuentran en el dispositivo, ver los vídeos, instalar aplicaciones, entre otras cosas, todo desde el navegador web.
Interfaz web de airdroid
  • Una de las tareas más comunes en el teléfono, para mí, es navegar en Internet. Generalmente usaba el navegador predeterminado de Android, hasta que conocí Dolphin. Dolphin es un navegador muy rápido que  tiene características como control de voz (que, al menos en inglés, es muy acertado), control por gestos y soporte para complementos.

  • Pocket es un servicio que nos permite guardar enlaces para leer más adelante, es el sucesor de Read it Later. La aplicación para Android no sólo nos permite guardar enlaces, integrándose con otras aplicaciones mediante la función compartir, sino que también se sincroniza con el servicio y nos permite ver los contenidos guardados incluso sin conexión.

Get pocket Android

  • Otra aplicación que no puede faltar es de un servicio muy conocido y en extremo útil: Dropbox. La aplicación es muy intuitiva y nos permite seleccionar archivos favoritos, que estarán disponibles sin conexión.

Dropbox for Android

Esto es todo, de momento… hasta una próxima ocasión con más recomendados 😛

Serendipia

Llovía. Ese día me dejaba llevar por el sonido de la lluvia, no podía concentrarme, estaba inquieto sin saber por qué. Decidí entonces salir a despejarme, sólo quería caminar un rato entre la gente, no pensar en el trabajo, sólo sentir.

Y sentí. No estaba preparado, era imposible estarlo, su presencia llegó a mí repentinamente. Aún llovía, ya no importaba, mientras la contemplaba nada más tenía sentido. Estaba claro que no podía pertenecer a este mundo, tal perfección es imposible en un mundo imperfecto, tal vez era un ángel, tal vez una musa, tal vez un sueño. Estaba despierto, de eso estoy seguro, pero eso no elimina ninguna de las opciones. De repente el brillo del sol hizo su aparición, bajo sus rayos se veía aún más bella.

¿Qué pasó después? Sólo una pista: Serendipia.

Blockly

Estaba buscando actividades, para asignarles como “Bono” a los estudiantes de algorítmica y programación, y recordé blockly, que permite programar usando elementos visuales (como armar un rompecabezas). Blockly permite generar código en los lenguajes Javascript, Dart, Python o XML. La filosofía del lenguaje de Blocky lo hace perfecto para nuevos programadores.

Mi solución al laberinto (Demo de blockly)

Una solución para el Laberinto

El editor de Blocky es libre (bajo licencia Apache) e implementado en Javascript, lo que permite incluirlo fácilmente en cualquier proyecto web, sin requerimientos especiales en el lado de servidor. Después de hacer checkout y copiarlo al servidor, podemos usar el playground que se encuentra en los test.

Por defecto tiene un conjunto de “bloques” bastante completo, que incluye: Estructuras de control, manipulación de texto, manejo de variables, listas, expresiones aritméticas, expresiones lógicas, definición y llamada a procedimientos. Si necesitamos algo que no está definido, el lenguaje se puede extender fácilmente. Por ejemplo, si quiero que puedan mostrar un mensaje al usuario (Lo que en JavaScript sería un alert…) puedo definir el bloque diciendo en qué categoría se mostrará, que valores tendrá como entrada, si retorna o no un valor, entre otras cosas. Una vez el bloque está definido es necesario implementar los generadores para los lenguajes que queremos soportar (para las funciones incluidas, Blockly incluye generadores para JavaScript, Dart y Python).

if (!Blockly.Language) {
  Blockly.Language = {};
}
Blockly.JavaScript = Blockly.Generator.get('JavaScript');
Blockly.Dart = Blockly.Generator.get('Dart');
Blockly.Python = Blockly.Generator.get('Python');

Blockly.Language.alert = {
  // Bloque para mostrar un mensaje al usuario (alert)
  category: 'Commands',
  helpUrl: 'http://www.christian-ariza.net/techstuff/Blockly#alert',
  init: function() {
    this.setColour(290);
    this.appendTitle('alert');
    this.setPreviousStatement(true);
    this.appendInput('Mensaje', Blockly.INPUT_VALUE, 'MSG');
    this.setNextStatement(true);
    this.setTooltip('Muestra un mensaje (modal) al usuario');
  }
};

Blockly.JavaScript.alert= function (){
  var mensaje=Blockly.JavaScript.valueToCode(this, 'MSG',
      Blockly.JavaScript.ORDER_NONE) || '\'\'';
  console.log(mensaje);
  var code="alert ("+mensaje+");\n";
  return code;
}
Blockly.Dart.alert= function (){
  var mensaje=Blockly.Dart.valueToCode(this, 'MSG',
      Blockly.Dart.ORDER_NONE) || '\'\'';
  console.log(mensaje);
  var code="window.alert ("+mensaje+");\n";
  return code;
}
Blockly.Python.alert= function (){
  var mensaje=Blockly.Python.valueToCode(this, 'MSG',
      Blockly.Python.ORDER_NONE) || '\'\'';
  console.log(mensaje);
  var code="print("+mensaje+")\n";
  return code;
}

Definiendo estos elementos ya podemos usar el nuevo bloque:

Ejemplo usando el nuevo bloque "alert"

Ejemplo usando el nuevo bloque “alert”

El código generado sería:

JavaScript

var x;
var item;
function procedure(x) {
  item = x;
  alert ('Hola');
  alert (item);
}

procedure('Parametro X');

Dart

Para que funcione el alert en Dart, haría falta importar una librería que maneje DOM, ej #import(“dart:dom”), ese import no fue generado (No encontré como especificarlo…)

var x;
var item;
void procedure(x) {
  item = x;
  window.alert ('Hola');
  window.alert (item);
}

main() {
  procedure('Parametro X');
}

Python

x = None
item = None
def procedure(x):
  global item
  item = x
  print('Hola')
  print(item)

procedure('Hola mundo')

Si quieren seguir experimentando con Blockly pueden usar el “ambiente” que usaré en el curso, es básicamente el demo de generador de código, con el bloque alert que acabo de crear. La idea es ir agregándole nuevos bloques según sea necesario para alguna actividad en particular.

Si el experimento de los bonos es un éxito, el siguiente paso será que construyan una aplicación para Android usando el App Inventor,  puede ser para el último nivel del curso :P.

Recomendados de la semana XXIII

Hace ya un tiempo desde el último post y, para hacer a este un poco diferente, por primera vez los recomendados serán —únicamente— libros.

  • Empezaré por el que tengo más fresco en la memoria, lo terminé hace un par de días: La soledad de los números primos, de Paolo Giordano. Cuando escuché por primera vez el nombre del libro sentí curiosidad, pero cuando supe que el autor era un físico me convencí de que tenía que leerlo :P. Es un libro para solitarios, relata la vida y los encuentros de dos soledades que, como los números primos gemelos, están muy cerca pero no llegan a tocarse.  Es muy fácil identificarse con los personajes y sus circunstancias, detalladamente descritas.
  • El segundo recomendado es uno de mis favoritos: 1984 de George Orwell. Describe una sociedad reprimida, alienada, donde el sentido de la privacidad no existe. El gran hermano lo ve todo, lo sabe todo. No se puede evitar comparar esta realidad distópica con la nuestra. Una de las cosas que me parecieron más interesantes es la neolengua, y el control de la masa a partir del lenguaje.
  • José Saramago se ha convertido en uno de mis autores favoritos. Como recomendados, en esta ocasión, les dejo dos libros que se complementan, de hecho el segundo es la continuación del primero: Ensayo sobre la ceguera y Ensayo sobre la lucidez. Me gusta más el primero, pero los dos dejan ver rasgos de la sociedad usando como pretexto situaciones extremas que las resaltan.
  • Saliendo un poco de las novelas: El ladrón de cerebros, un libro de divulgación científica de Pere Estupinyà. Está escrito de una manera amena, no tiene un orden enciclopédico y los avances son contados a través de historias —y teniendo que “incluso una mala historia es preferida sobre grandes estadísticas” (Thomas E. Kida) — que hacen la lectura bastante entretenida. Los temas son variados, desde genética hasta cosmología, pasando por psicología, neurociencia, cambio climático, entre otros.

Para no perder la costumbre, les dejo algo de música para acompañar a los recomendados, Maldita Dulzura de Vetusta Morla:

http://www.youtube.com/watch?v=m9VrA3g4qVw&w=400&h=233

Por el momento termina, por mi parte, la primera entrega de libros recomendados en el blog, me encantaría recibir recomendaciones en los comentarios. 🙂

Recomendados de la semana XXII

Después de un tiempo, más largo de lo que quisiera, vuelven los recomendados de la semana:

Montt en dosis diarias

  • Existen múltiples servicios, como Dropbox, que permiten la sincronización entre diferentes equipos/plataformas y la nube. Cubby es un nuevo servicio de este tipo con algunas características interesantes, como el poder sincronizar directamente desde los dispositivos sin ocupar espacio de la cuota de almacenamiento online y poder sincronizar cualquier carpeta (sin moverla a una ubicación específica). (vía microsiervos)
  • ¿Necesitas un CMS?¿Eres el único autor o hay un grupo pequeño de autores con publicación centralizada?¿el desempeño es el factor más importante?. Si la respuesta a estas preguntas es sí, entonces Pelican es lo que necesitas. En SIGT tenemos una explicación más a fondo de su funcionamiento, ventajas y desventajas. (one size doesn’t fit all)
  • En tecnología el no adaptarse puede ser muy costoso. Esta es una lección que está aprendiendo RIM de la forma más difícil, Antonio Ortiz –en error500 y en Xataka– y Manu Mateos –en Genbeta– analizan la situación y el posible futuro de RIM con la reestructuración que se avecina.
  • ¿Cansado de memorizar múltiples contraseñas? Puede que eso pronto se convierta en cosa del pasado gracias a la autenticación cognoscitiva.

Para terminar los recomendados de la semana los dejo con un par de cortos de Bird Box Studio:

Ice cream:

Sketchy Guard:

Casualidad

Nota: Este post existe, como borrador, desde enero 30 del 2011. ¿Cómo debería continuar?

Fría y oscura, llena de soledades. No es sólo la descripción de la ciudad en la que vive, es también como se siente después de lo que ha pasado.

Todo comenzó con una decisión que, como muchas otras, llevaba consigo más consecuencias de las esperadas. Un jueves soleado reflejaba su estado de animo, el clima de la ciudad, en los momentos importantes de su vida, parecía conectarse con su alma. Un primero de febrero. Era la última semana de vacaciones y en realidad deseaba que no se acabaran, no porque no quisiera volver a la universidad sino porque tenía la seguridad que este día encontraría algo que necesitaba aunque no sabía bien que era y quisiera disfrutarlo por más tiempo.

La mañana pasó lentamente, esperaba con ansias que llegara la noche. Limpió y organizó la casa para dedicar el resto del tiempo a prepararse, no solía ser vanidosa pero se sentía emocionada por su compañía. No sabía mucho de él y en realidad nunca lo supo, pero el halo de misterio que lo envolvía le atraía en demasía.

La cita era en un sitio neutral, un pequeño restaurante en el centro de la ciudad, llegó un poco temprano y tomó una mesa al lado de la ventana. Él llegó puntual, algo desconcertado por la invitación, solía leer muy bien a las personas y era algo que no esperaba de ella, se acercó lentamente a la mesa. Hablaron durante un par de horas de temas irrelevantes, la verdadera conversación fue sin palabras.

Tan solo han pasado algunos  meses desde esa noche, y ahora lo que siente es completamente opuesto a lo que sintió al salir del restaurante.

Balance del 2011

“De vez en cuando es bueno
ser consciente
de que hoy
de que ahora
estamos fabricando
las nostalgias
que descongelarán
algún futuro”
–Conjugaciones, 8(previsión), Mario Benedetti

El balance del 2011 es, en general, positivo:

  • Grado de la maestría. Un hito importante que encierra muchas cosas aprendidas, experiencias, el trabajo en una tesis en un tema que me apasiona, compañeros y amigos conocidos en el proceso.
  • Compartir, al menos un poco, con personas admirables. Charlas tan interesantes como constructivas.
  • Trabajar en proyectos fascinantes. Entre otros: Mi tesis 🙂 —MagosCloud–, el proyecto de calidad de experiencia para un operador celular, el proyecto de Juego Gerencial (aunque mi participación sea muy pequeña en ese gigante) y varios proyectos Web. 
Quedan algunas “lecciones aprendidas”, cosas que quiero mejorar en este nuevo año: 
  • Pasar más tiempo con los amigos. Este va ligado con el tercer elemento de la lista, me gustaría tener más tiempo para dedicarle a quienes son importantes para mí y conocer mejor algunas personas que están empezando a serlo. 
  • Mejorar la forma de presentar en público. Manejar los nervios, principalmente. El valor de los trabajos muchas veces es medido por la calidad de la presentación, un buen trabajo puede no verse reflejado en la evaluación si la presentación no tiene un buen nivel. He aprendido varias cosas para mejorar… pero sería bueno ponerlas en práctica con más frecuencia. 
  • Aprender a manejar mejor el tiempo. En algunas semanas de inspiración el tiempo alcanza para todo. El potencial está, con algo de disciplina espero poder convertir cada vez más semanas en “semanas de inspiración”.
Sólo queda esperar qué nos depara este 2012, por el momento se ve lleno de retos y oportunidades.