Después de 2 semanas de intenso planeamiento, Gustavo, Jose (quien aún no es IcaPlanetario) y yo logramos almorzar sin terremotos en Plaza del Sol. Fue una agradable tertulia de tecnología y vida entre KFCs, y algunos movimientos telúricos causados por algún camión :-)
¿Saben que? Vamos a organizar almuerzos más seguidos. Sería ideal que un día nos reunamos todos en la vida real.
Hace buen tiempo que tengo en mi papel tapiz una vista del planeta tierra, hecha en Blender, que me gusta. Pero conversando con JJ, me di cuenta que estaba un poco estático. Aun no estoy como para programar en OpenGL, así que renderizé 720 cuadros de animación de la tierra girando
El “sol” le da la vuelta a la tierra cada 24 frames, así que tengo 30 días con sus noches distintas. Cada hora, con un cron, ejecuto este script:
#!/bin/bash
# Cambia el papel tapiz según la hora
# por drmad
DIA=`date +%j`
HORA=`date +%k`
OFS=$(( (($HORA - 5) % 24) + ( ($DIA % 30) * 24 ) ))
OFS=`printf %04d $OFS`
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] ; then
# Esto captura la sesión de dbus, para ejecutarlo desde el cron
export DBUS_SESSION_BUS_ADDRESS=`cat /tmp/dbus-drmad`
else
echo $DBUS_SESSION_BUS_ADDRESS > /tmp/dbus-drmad
fi
gconftool-2 --type string --set /desktop/gnome/background/picture_filename ~/Proyectos/earth_wallpaper/pics/$OFS.png
Le resto 5 a la hora, para que mas o menos caiga la iluminación de la tierra con las imágenes de la tierra. El script lo ejecuto una vez al iniciar mi sesión para que coloque el tapiz, y guarde la sesión de dbus, que luego se usa cuando llamo el script via cron.
A las 8 am:
A las 11am:
A las 5pm:
A las 6pm:
Y a las 7:30pm
Justo ahora se ve el océano pacífico en el wallpaper
El 3er monitor muestra un programa que hice en Gambas llamado MultiMon. Aun está recontra incompleto, cuando esté en un beta haré un post al respecto
Mostrará un montón de info, ahorita solo muestra la fecha, y un slideshow.
¡Marquen todos su Google Calendar! ¡Este 28 de Octubre coordinemos algo para celebrar los cuatro años del IcaPlanet!
Espero reunirnos todos esta vez
No necesitas pertencer al IcaPlanet para asistir, cuanto más seamos, mejor. Puede ser un almuercito, ¿que dicen? ¡Espero sus comentarios!
Las diapositivas que presenté en mi exposición de Gambas las he colocado en http://drmad.org/expos/ . Es un programa hecho en Gambas que muestra las diapositivas, controlado vía un servidor web, también hecho en Gambas.
Para probar las diapositivas, necesitas… Gambas
Pequeño detalle, no comenté esto en la exposición
Voy a exponer sobre Gambas en la III Semana Tecnológica FIS-UNICA, el 10 de octubre, a las 10:00 am, en el Teatrín “Abraham Valdelomar” de la Universidad Nacional “San Luis Gonzaga” de Ica (2da cuadra de la Calle Bolivar, frente a “Loma Negra”). ¡Están todos invitados! Lleven sus laptops/smarphones
Traducción al español de un post de Douglas T. Muth sobre este problemita que me estaba haciendo zapatear:
Así que, me encontré iterando a través de los elementos de un formulario hoy. Este código trabajó perfecto en FireFox:
for (key in form.elements) {
var element = form.elements[key];
...
}
Pensaste que eso trabajaría en MSIE también, ¿no? Nooooo… intentar iterar a través de los elementos de esta forma en MSIE hará que obtenga métodos, configuración del lenguaje, y todo tipo de otras cosas que normalmente no se encuentran en el array de elementos. En vez de eso, tuve que hacer esto:
for (var i=0; i < form.elements.length; i++) {
var element = form.elements[i];
...
}
Y por extraño que parezca, form.elements.length retorna solo el número de elementos del formulario, y no los métodos o cualquier otra cosa que haya aparecido antes.
Oh bueno, al menos pude acabar la tarea que se supone debía completar hoy en el trabajo. Eso es la parte importante.
La base de la democracia es el conocimiento. Un pueblo ignorante es fácil de manejar, y es más fácil si lo divides, y los mantienes feliz por separado a cada grupo pequeño.
Pero en estos tiempos, está muy mal visto el feudalismo… no los puedes azotar para que no aprendan. Entonces, ¿Cómo los vuelves ignorantes? Muy sencillo: Les regalas cosas. No importa que sean de pésima calidad, lo que importa es que parezcan cubrir una necesidad. Aquí algunos ejemplos ingeniosos:
Esta historia la conocemos todos los Peruanos . Y ahora, este plan ha dado frutos: Los niños y jóvenes que han crecido con este tipo de vida y educación, han votado en las últimas elecciones presidenciales. El resultado, ya lo conocemos. No quiero ni pensarlo.
Parece que los gobiernos que siguieron al del preso Fujimori les gustó la idea de tener un pueblo idiota, y mantienen algunos de esos elementos destructivos del intelecto. Hace unos días encontré este diario en la esquina de una iglesia (a 1 cuadra de la Gran Unidad Escolar San Luis Gonzaga de Ica):
El “amarillismo” en su máxima expresión. Tener al pueblo con miedo también ayuda a que puedas hacer con él lo que quier– AGUANTA UN SEGUNDO…
OMGWTF?! (Actualización: “Goatse” es algo muy asqueroso, y esa imágen en el diario es un “tributo” a Goatse. Una breve descripción puedes encontrarla en este enlace de la Wikipedia. También encontré el origen de esa foto, fue una broma de mal gusto hecha por el año 2004) Eso explica por qué todos en las fotos se están tapando nariz y boca… ¿Esto es noticia? ¡Qué forma de manipular a la gente! Si pones algo del texto de la noticia en google, encuentras el foro de donde han hecho un copia-y-pega de la noticia. ¿El chupacabras?
También es una copia exacta de un foro de mitos en Internet, con todo y sus errores de escritura. Las demás noticias también son igual de vacías, y estúpidas. Siguen habiendo noticias que juegan con el deseo de la gente de escasos recursos, a salir de su situación. Ahí a la derecha dice “Una PC por 3 mil kilos en botellas de plástico”. Es una excelente idea. Excepto que es en Chile.
Esta es la única noticia científica que sí es real. Pero está redactada como si fuera ciencia ficción, difícil de entender si no ves la noticia original, y el contexto científico. Me pregunto cuántas personas que compran estos diarios tengan nociones de física cuántica.
Ésto es lo que muchos niños han conocido como “noticias”. Desinforma completamente, generando mayor ignorancia, haciéndolos dóciles para hacerlos felices con mentiras sencillas. Es muy probable que si Fujimori regresa al poder, seguirá idiotizando a la gente de bajos recursos, para que sus hijos voten por Kenji para presidente…
Por estar migrando a Paperclip (Ahora es Paperclip X10 SRL), casi me olvido de este detalle. Hace 20 años, recibí mi primera constancia de programador
Programador en Logo Avanzado. Wow. Recuerdo mi primera clase, cuando me senté frente a una IBM PC 5150 de monitor verde, que solo había visto en las revistas que mi padre coleccionaba. Quedé fascinado. Y la fascinación continua hoy, y seguirá en mí hasta el últimos de mis días. Cuando muera, quiero que incineren a Dorothy conmigo
Más tarde iré a buscar a mi profesora de Logo
Después de poco menos de año y medio con Hellboy, me di cuenta que casi no ejecutaba aplicaciones ahí. Lo que más hago es navegar por la Interweb, y conectarme a Dorothy para trabajar ahí. Entonces pensé que tener todo un Ubuntu 10.10 instalado era demasiado. Quería un Linux que cargara “al toque”, y que sea liviano, sin tantos programas cargados, que no uso.
Ya había probado el Ubuntu Netbook Edition. Pero cuando lo probé, estaba esperando un Linux más completo… quizás por eso no quise volverlo a probar. Por ahí leí que Kubuntu era amigable a las netbooks. Lo instalé, y lo borré a la media hora, muy bloated.
Y llegué a Jolicloud.
Jolicloud es un nuevo sistema operativo “basado en la nube”, donde las aplicaciones son páginas web, como Google Docs y Facebook. En versiones anteriores, estuvo basado en Mozilla Prism, ahora usa un fork de Google Chromiun, llamado “Nickel” (y esto les suena un tanto irónico a los fans de Chrome OS, pero Jolicloud tiene una visible delantera en esta carrera).
Lo primero que me llamó la atención, era que el desktop está hecho con HTML5. Incluso puedes instalar la app en tu Chrome y darle una probada antes de instalarlo. Hace mucho tiempo que venía buscando cómo hacer eso, así que me animé a instalarlo.
La versión 1.1 está basada en Ubuntu Netbook Edition 10.04 (lo que es muy conveniente, ya que es un entorno familiar y tiene muchas aplicaciones en sus repos) e inicia muy rápido (con una splash screen animado guapo
)
Para el login usa SLiM, un login manager muy sencillo, ligero, y bastante configurable. Una vez iniciada la sesión (y registrado en su página web), aparece su dashboard:
Puedes sincronizar tu desktop con otra computadora, y ambos tendrá las mismas aplicaciones (incluso las tradicionales, como pidgin), así como otras aplicaciones.
Googleando un poco, encontré que el script /usr/bin/jolicloud-launcher es el responsable de lanzar el dashboard. En la línea 79 está esto:
my $OFFLINE_URL = "file:///usr/share/jolicloud-daemon/htdocs/index.html";
Que define la URL que debe de cargar cuando la PC está sin conexión a Internet (que en mi caso, es siempre, ya que la conexión a la red se da mucho después que todo el sistema ha iniciado). Entonces modifiqué este ficherito para que esperara la conexión a Internet, y redireccionara a una página web mia:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Loading Jolicloud...</title>
<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href="styles.css" />
<script>
URL='http://paris/pwp/';
function redirect() {
setTimeout ( check, 1000 );
}
function check () {
req = new XMLHttpRequest();
req.open ( 'GET', URL + "ping.php", true );
req.onreadystatechange = function() {
if ( this.readyState == 4 ) {
if ( this.responseText == 'OK!' ) {
window.location = URL;
}
}
}
req.send( null );
setTimeout ( check, 2000 );
}
</script>
</head>
<body onload="redirect();">
<div class="loading">Esperando la conexión con Paris...<br />
<br />
<img src="ajax-loader.gif" /></a>
</body>
</html>
Esta nueva web espera a que pueda recabar el contenido del script ping.php en mi servidor (“Paris”). Cuando esto sucede, quiere decir que está conectado a Internet (y en mi caso, a la intranet de Paperclip via VPN). Ya que esto sólo funcionará en Chrome, usa directamente el XMLHttpRequest
El script ping.php es sencillo:
<?php
// Esta página no debe ser guardada en cache
header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header ( 'Access-Control-Allow-Origin: *' );
echo "OK!";
?>
Simplemente imprime un “OK!”, y evita que sea grabado en la caché de los servidores, proxies, y navegador web . El Access-Control-Allow-Origin es para alterar la política del mismo origen, y permitir que el script grabado en Hellboy se conecte vía AJAX a un script en otro lado.
Una vez conectado, se muestra mi desktop HTML5. Es muy fácil programar en Javascript para un único navegador… y el Chrome soporta bastantes cositas del CSS3, como background-size, para hacer que la imagen de fondo cambie de tamaño según el tamaño del contenedor. Así que ahora éste es el escritorio de Hellboy, :
A la izquierda están mis enlaces más usados, que son simples tags <a>. Tendría que hacer una aplicación para Chrome para poder ejecutar programas y otras apps. Eso será después. A la derecha pienso mostrar algún tipo de información, aun no sé qué. Todo está dibujado usando Javascript, el HTML solo tiene un <script>init();</script>, que inicia todo.
Le he puesto también un pequeño selector para el wallpaper:
Un paseo ilegal por flickr me dio algunos de los wallpapers
Ha sido un lindo ejercicio de Javascript, CSS3 y DOM. Aun falta algunas cosas por implementar, pero ahora lo que quiero hacer es compilar el nickel en Ubuntu, y usarlo para el wallpaper de Dorothy. Eso si será alucinante
Paperclip EIRL ha cumplido 8 años de vida. Y para celebrarlo, este sábado 30 de octubre, de 9:00 AM a 1:30 PM estaremos realizando una campaña gratuita de limpieza de computadoras, llamada “Computadoras Felices”.
Para más información, visita la web http://computadorasfelices.com. ¡Larga vida a Paperclip!
| « Entradas antiguas |