jueves, 20 de noviembre de 2008


Floyd se preguntaba a veces si el bloque de noticias, y la fantástica tecnología que tras él había, sería la última palabra en la búsqueda del hombre en perfectas comunicaciones. Aquí se encontraba él, muy lejos en el espacio, alejándose de la Tierra a miles de millas por hora, y sin embargo, en unos pocos milisegundos podía ver los titulares de cualquier periódico que deseara. (Verdaderamente que esa palabra de «periódico» resultaba un anacrónico pegote en la era de la electrónica.) El texto era puesto al momento automáticamente cada hora; hasta si se leía sólo las versiones inglesas, se podía consumir toda una vida no haciendo otra cosa sino absorber el flujo constantemente cambiante de información de los satélites— noticiarios. Resulta difícil imaginar cómo podía ser mejorado o hecho más conveniente el sistema, pero más pronto o más tarde, suponía Floyd, desaparecería para ser reemplazado por algo tan inimaginable como pudo haber sido el bloque de noticias para Caxton o Gutemberg.


Arthur C. Clarke - 2001: A Space Oddyssey (1968)

martes, 23 de septiembre de 2008

Mi guía de reinstalación



Nunca apunto las cosas que instalo al formatear o comprar un nuevo PC, si lo escribo aquí lo haré con más cuidado:

- Windows Vista: Aún no di el salto. Tras el global gruñido contra vista me he dado cuenta de que los que más se quejan son los que menos saben o menos tolerancia al cambio (a la mejora) tienen. Tres o cuatro personas me han dicho que les va perfecto y coinciden con las tres o cuatro personas que más usan PCs. Importantísimo: procesos tras instalar y entrar:
  • audiodg.exe
  • csrss.exe (x2)
  • dwm.exe
  • explorer.exe (22.6Mb Memoria)
  • lsass.exe
  • lsm.exe
  • MSASCui.exe
  • SearchIndexer.exe
  • services.exe
  • sidebar.exe
  • SLsvc.exe
  • smss.exe
  • spoolsv.exe
  • svchost.exe (x11)
  • System
  • taskeng.exe (x2)
  • taskmgr.exe
  • wininit.exe
  • winlogon.exe
416MB de RAM usados, con 1Gb en total.

- Desactivar el UAC para que no salga el mensaje de ¿Quiere continuar? cada vez que se hace algo más o menos raro (Panel de control -> Cuentas de usuario)
- Actualizar el Vista (evita antivirus, antimalwave, antitroyanos, firewalls y antispyware).
- EmEditor. Un editor de texto que se añade al botón derecho de todos los ficheros y es rapidísimo. $39.
- Firefox + extensiones + buscadores
- PowerISO
- Office 2007

(En este punto: Iniciar windows: 1:10 minutos hasta que sale el cuadro de la contraseña, 1:30 hasta que se inicia Vista y se carga el centro de bienvenida. Wow.)
- Quitar el centro de bienvenida.
- WinRAR 3.71 Developer Edition
- Visio 2007. Un sencillo programa para crear diagramas de todo tipo. Muy útil para hacer esquemas rápidos eléctricos o de flujo.
- Putty (SSH)
- WinSCP (Transferencia de ficheros por SSH)
- K-Lite Mega Codec Pack (Ver divx, xvid, mov, mp4...)
- Filezilla (FTP)
- Microsoft Visual Studio 2008 (Lo bueno de Microsoft)
- Microsoft Live Messenger (Lo malo de Microsoft) + apatch + messenger plus
- Skype
- TortoiseSVN
- Adobe Flash CS3
- Adobe Photoshop CS3
- Adobe Illustrator CS3
- Orcad (Diseño y simulación de circuitos electrónicos)
- ActiveSync (Para sincronizar la HTC)
- Properllerhead Reason (Música: Secuenciador, sampleadores, sintetizadores, etc.)
- Ableton Live(Lo mismo, diferente)
- Sony Sound Forge (Edición de audio)
- Reproductor de Last.fm (Reproductor de radio que se adapta a tus gustos, ligero y rápido)
- Serious Samurize (Tengo que ver si hay algo para Vista como esto; hace gráficas de rendimiento del sistema en tiempo real)
- FileZilla (cliente FTP)

To be updated.

domingo, 21 de septiembre de 2008

Apple TV Take 2 Hack



Hay demasiados tutoriales para hackear el Apple TV. Cuando lo compré tardé varios días y tuve que sacar el disco duro para instalar ciertos programas. Cometí el error de no apuntar nada y he decidido instalar el take 2 (la nueva versión) y documentar todo:

- Actualización desde un ATV 1.1 hackeado con nitoTV, SSH, etc. a una 2.1 por el método normal de actualización automática.
- Ahora tengo un ATV completamente nuevo y no funciona nada de lo que instalé.
- Para evitar abrir el ATV voy a intentar con el método del patchstick: crear un pendrive especial para habilitar el acceso por SSH y ya desde ahí instalar lo demás.
- El material necesario es la imagen del patchdisk que como lleva programas sacados de MacOS, hay que bajarlo con torrent y para crear la imagen en el pendrive, la aplicación DD (GPL):

http://www.chrysocome.net/download

- Me bajo dd-05, por ejemplo.
- Ejecuto dd.exe y se tira un buen rato hasta que saca mucha información, de la que me interesa:

\\.\Volume{830e44e5-5b88-11da-a701-00c09fe3fe7a}\
link to \\?\Device\Harddisk1\DP(1)0-0+4
removeable media
Mounted on \\.\e:


- Creo la imagen en un pendrive de 512Mb:

dd if=ATVpatchstick2.1.img of=\\?\Device\Harddisk1\Partition0 bs=1M --progress

( - por estar escribiéndolo aquí, me confundo y meto Harddisk0 con lo que se me formatea medio disco duro y pierdo el portátil. Bueno, ya es hora de meterle Vista...)

- La copio al pendrive. No cabe en el de 512 porque la imagen es de 1GB.
- No tengo un pendrive mayor pero sí tengo uno que desmonté de 2GB... pues le pongo un cable:



- Meto el patchstick en el puerto USB del ATV y reinicio.



- Compruebo que el SSH está activado en frontrow@192.168.1.10 que es la ip configurada de mi ATV.
- La primera vez tarda un poco porque tiene que generar ciertas cosas, es posible que dé timeout, se prueba unas cuantas veces hasta que entramos.
- Pues no entra.
- Miro la tabla DHCP del router. No ha conservado la IP, entro con 192.168.1.205.
- No entra. Esa es una que se quedó en la tabla DHCP pero ya no es nada. Intento de nuevo.
- AGGH, qué ip tiene???
- Me bajo iptools ya que en este PC no tengo nada para escanear la red.
- No era este el iptools que esperaba pero bueno lo instalo. Va uno por uno. Eterno...
- Pienso que igual lo que hace el patchstick es instalar el SSH, no ejecutar uno. Reinicio el ATV sin el pendrive.
- ¡Ya hay SSH!

- Instalo nitoTV:
http://nitosoft.com/nitoTVInstaller_tt.zip
- Paso el contenido del zip al ATV con WinSCP (es para transferir ficheros por SSH).

-bash-2.05b$ sudo ./installme
installer: Package name is nitoTV 0.5.6
installer: Installing onto volume mounted at /.
installer: The install was successful.
Restarting Finder...



- En el menú del ATV: nitoTV -> install software ->
->Perian (los codecs para poder ver divx, etc)
->mplayer codecs
->Turbo's Kextloader (aún no tengo muy claro para qué es esto)
->Smart Installer (todo lo que sea smart...)



-ERROR! Necesito un tal MacOS X 10.4.9 Combo Updater (310MB agggh!).
- Lo copio en ~/Documents.
->Smart Installer de nuevo. Hace un montón de cosas y reinicio el ATV.
- Configuro el montado automático de los directorios Series, Peliculas, Sonoescopias. Por ahora todo sin tildes, después tengo que comprobar si por smb funcionan.
- Problemas con las carpetas compartidas, tengo que crear en el windows un usuario "atv" para quitarme de lios.
- Monto "Series" y se monta perfectamente en /mnt/Scratch/Volumes/Series pero no sale en "files" del nitoTV. ¿Para qué se montará ahí? En fin, lo hago manualmente:




<plist version="1.0">
<dict>
<key>0</key>

<dict>
<key>autoMount</key>
<true>
<key>customMount</key>
<integer>1</integer>

<key>customPath</key>
<string>/Users/frontrow/Movies</string>
<key>mountAddress</key>
<string>windows02</string>

<key>mountName</key>
<string>G</string>
<key>mountType</key>
<integer>2</integer>

<key>mountVolume</key>
<string>G</string>
<key>requiresAuth</key>
<integer>0</integer>

<key>userLogin</key>
<string>****</string>
<key>userPassword</key>
<string>****</string>

</true>
<key>1</key>
<dict>
<key>autoMount</key>
<true>

<key>customMount</key>
<integer>1</integer>
<key>customPath</key>
<string>/Users/frontrow/Movies</string>

<key>mountAddress</key>
<string>windows02</string>
<key>mountName</key>
<string>Series</string>

<key>mountType</key>
<integer>2</integer>
<key>mountVolume</key>
<string>Series</string>

<key>requiresAuth</key>
<integer>0</integer>
<key>userLogin</key>
<string>****</string>

<key>userPassword</key>
<string>****</string>
</true>
</dict>
</dict></dict></plist></span>

Este fichero es "/mnt/Scratch/Users/frontrow/Library/Application Support/nito/mounts.plist".

- Abro el nitoTV y ejecuto un .avi.
- Fin.


sábado, 6 de septiembre de 2008

Sobre si el LHC va a destruir el planeta...


Mira, hay un 10^-19 de posibilidades y tienes 10^-11 de evaporarte mientras te afeitas.
Vía BoingBoing.

lunes, 1 de septiembre de 2008

Comienzan las guerras clon



Leo en Gizmodo que recientemente un U[C]AV (Unmanned [Combat] Aerial Vehicle - Vehículo aéreo no tripulado [de combate]) ha destruido de forma más o menos autónoma un vehículo que cargaba un explosivo.

Parece ser la primera batalla real que libran dos máquinas autónomas de facciones enemigas. Puesto que la tendencia actual es dotar de cada vez más autonomía a las máquinas de guerra, podemos ir preparándonos para auténticas batallas de robots por tierra, mar y aire.

A corto plazo es evidente que los pilotos de caza cuestan mucho dinero y si se pudieran cambiar por ordenadores se ahorrarían muchos costes no sólo en salarios, también en los sistemas de aire acondicionado, el asiento eyectable, pantallas y paneles certificados para volar, etc. y no habría que hacer los aviones tan seguros y caros.

Me imagino que los nuevos oficiales del ejército serán los diseñadores de videojuegos y sus estrategas, los gamers del StarCraft o del Age of Empires que vigilarán el campo de batalla desde satélites y no sabrán si están en un simulador o en guerra real. Como en El juego de Ender, se reclutarán los oficiales del futuro mirando los high scores de los juegos de sus consolas.


Por supuesto que todas estas guerras se seguirán por Internet y las casas de apuestas harán el Agosto.


lunes, 25 de agosto de 2008

Más sabe el diablo por viejo

Tras unos cuantos años ejerciendo de informático (programador, administrador, webero, etc.) he tenido la suerte de pasar a la industria y el cambio es tan radical que me da para un post.

La idea general es que en industria más vale el que más tiempo lleva. No vale más el que más ha estudiado, ni el que ha practicado en casa, ni el que en su tiempo libre ha hecho proyectos por su cuenta. Aquí el sueldo estratosférico del que lleva quince años está plenamente justificado, lo que en la informática tiene casi exactamente el efecto contrario.

Es chocante hablar con un tipo de 40 años sobre rectificadores trifásicos y que te suelte:

Claro que la masa es flotante, ¡eso es obvio!

La trifásica para mí ha sido muchas cosas pero obvia...

El jefe.

En programación, un experto puede llevar tres o cuatro años trabajando y cuando salen nuevas tecnologías tarda semanas en probarlas. Si sale un nuevo lenguaje, un nuevo sistema operativo para móviles o un nuevo entorno de desarrollo, se puede poner al día en un par de semanas o en un par de meses. Su jefe, el que lleva quince años trabajando y es manager, no sabe ni quiere saber de nuevas técnicas ni soluciones. Además, lo normal es que las aplicase mal.

En la industria, el que lleva tres o cuatro años es poco más que un becario (lo sería, si no hubiese tanta demanda de ingenieros). La industria es la misma que hace cinco años y si hay tecnología nueva, no tiene porqué usarla o ya le vendrá aplicada en los componentes que utilice para diseñar su sistema. Su jefe, el que lleva quince años trabajando y es manager, lo sabe todo sobre hidráulica, mecánica o documentación, porque aquí se aprende al toparse con los errores y un tornillo o una válvula ha cambiado bien poco desde que a él le tocó solucionar un problema parecido.



Aprendizaje.

Si un programador cambia de empresa puede ponerse a tirar líneas y a producir el primer día. Un industrial que lleva un mes aún no sabe de dónde sacar la documentación para empezar a trabajar...



Un programador puede ponerse en su casa a practicar con lo último en tecnología web desde su portátil de 499€. Un industrial lo tiene más difícil si quiere hacer experimentos caseros con materiales compuestos o aviones supersónicos.



Transcendencia.

En informática hay una base teórica creciente y un fondo que es capaz de generar discusión política (open source frente a sistemas propietarios), se plantean problemas filosóficos (heredados de las matemáticas), cuestiones sociales (OLPC) y surgen movimientos importantísimos (soft e ideas libres, wikipedia). Hay trasfondo más allá de las líneas de código.

En la industria hay plazos que cumplir y hojas de características. Creo que nadie ha escrito un libro comparando a Kirchoff con Jesucristo. Los números son discretos y finitos. El tornillo se aprieta en el sentido que diga la especificación. Punto.

Valía.

Un programador puede tener talento y hacer uso de la intuición en cada línea de código que escribe. Un buen programador se detecta a leguas y en dos minutos de conversación. Un ingeniero industrial utiliza mucho más la experiencia y se apoya más en el equipo, por lo que es más difícil destacar.

Habla con fulanito que es quien sabe de esto.

Conclusión.

Es un poco desesperante el cambio pero, la verdad, no es lo mismo ver una gráfica de uso de ancho de banda que un avión levantando el vuelo.

martes, 19 de agosto de 2008

HTC Touch Diamond y el teléfono inteligente




El Diamond es mi nuevo terminal móvil, porque lo de teléfono móvil es muy 2007.


Tras una semana utilizándolo, puedo dar algunos consejos y aclarar cosas.

En general es un maquinón y los fallos que tiene son debidos a que la tecnología aún no ha llegado a la perfección; no creo que ningún pocketPC sea perfecto en términos de rendimiento y velocidad.

Hay que tener en cuenta que es un sistema Windows multitarea, no un autómata programado para funciones básicas por lo que hay que acostumbrarse a esperar a que las aplicaciones y pantallas se abran. Es irónico que cuanto más avanza la tecnología móvil, más tardamos en hacer cosas básicas como buscar a alguien en la agenda.

Por el otro lado, es un Windows multitarea y este hecho es el que le da ventaja frente al iPhone. Sólo hay que visitar los foros sobre HTC para ver que hay muchos desarrolladores haciendo aplicaciones en un suspiro para Windows Mobile, ya que gracias a las SDK y al .net framework que lleva instalado el S.O. es muy fácil acceder a las funciones del móvil. Por ejemplo, el acelerómetro ya tiene su wrapper para utilizarlo desde C#.

Más ventajas de utilizar Windows es que se puede programar un servicio, es decir, un programa que corra en segundo plano para por ejemplo hacer una alarma-despertador. Esto según he entendido, no se puede hacer para el iPhone ya que las SDKs que han liberado son para hacer aplicaciones puras, como meter cartuchos en una supernintendo.

También se puede tocar el registro para hacer cientos de tweaks que ya están documentados por los foros.

En pocos meses empezará a haber aplicaciones serias para Windows Mobile porque por ahora lo que hay es bastante básico y amateur. Es una lástima que medio mercado esté gobernado por el iPhone ya que la gente no se atreverá a hacer aplicaciones sin un estándar claro, como pasaba antes del monopolio de Windows en los PCs. Esperemos que sea Android el que desbanque al resto y se imponga como sistema operativo para móviles definitivo, por el simple hecho de ser abierto. Lo que está claro es que Apple será siempre un segundón en la carrera ya que está cerrado a su inflexible hardware.

Sobre la interfaz gráfica, hay variedad. Los operadores están haciendo sus propias ROMs que son "paquetes" de aplicaciones, tweaks y estilos para que tengan su propia identidad. La que me venía con vodafone no estaba mal pero la de Movistar es bastante fea. Es una lástima que la gente que vea expuesta la Diamond de Movistar se quede con esa idea. Hay usuarios haciendo sus propias ROMs muy superiores a las proporcionadas por los operadores aunque hay que "formatear" para instalarlas. Yo estoy probando la del usuario Vauss del foro htcmania:


El TouchFlo3D es la aplicación que han hecho en HTC como interfaz gráfica principal, para intentar no utilizar el Menú Inicio de Windows y esconderlo un poco, aunque se puede utilizar como un Windows Mobile común. La forma de pasar las fotos y los mensajes es muy original y vistosa, aunque poco práctica, claro.

El hecho de que no tenga teclado es acostumbrarse. Para escribir cosas largas está el puntero aunque con un poco de práctica se escribe bastante bien con los dedos.

Se ensucia bastante. Es imposible tenerlo limpio. La versión de Vodafone lleva una tapa trasera angulada y brillante muy bonita pero poco práctica. Movistar ha puesto la tapa lisa, que afea bastante. La lámina protectora de la pantalla se ensucia mucho más fácilmente que la pantalla directamente, por lo que creo que la voy a quitar. No pesa nada y es bastante más cómodo de llevar que el iPhone, ya que es de grande como un nokia pero la mitad de ancho. Bastante sorprendente el tamaño. Al reproducir un divx por Wi-Fi se calienta bastante.

La batería dura muy poco con el Wi-Fi, el bluetooth, la cámara, el reproductor de divx, el acelerómetro... pero es perfectamente normal. Al menos la batería se puede cambiar ya que tiene toda la pinta de que va a durar pocos meses si se le da un uso intensivo. En el iPhone no se puede cambiar.

Para fardar, pero de dudosa utilidad:

- Ver un divx a través de la red, conectado por Wi-Fi desde la piscina con la colección de películas y series en un PC en casa.

- Escuchar música por GPRS/UMTS desde last.fm o desde un servidor en casa (utilicé gnump3d hace tiempo para esto pero no lo he probado desde el móvil)

- Usar WebCamera Plus para utilizar la cámara del móvil como webcam completamente compatible con Skype o Messenger y conectarla por Bluetooth o Wi-Fi con un PC. Funciona sorprendentemente bien.
- Usar el GPS con el TOMTOM. Además tiene una función para coger satélites mucho más rápido.
Vínculos:
- Foro de HTCMANIA, la comunidad más activa de habla hispana.
- Foro de xda-developers, la comunidad más activa en el i+d de las máquinas HTC, en inglés.

martes, 8 de julio de 2008

Lowrey Symphony Holiday


Lowrey Symphony Holiday (1975)

Este órgano sufrió una inundación de sótano y desde entonces dejó de funcionar. Al encenderlo se escucha algo de ruido y el pedal de volumen provoca carraspeo.

Al activar el Leslie suena un ruido parecido a lo que debió ser el Big Bang. El motor no está en las mejores condiciones, pero funciona.

El problema es que las teclas no suenan, directamente. No sale sonido, sólo ruido.



Al abrirlo vemos que el hecho de que no suene es lo de menos. La electrónica de este órgano es pura artesanía. Vamos a analizarlo:

Placas:
- Sonidos de ritmo
- Secuenciador de ritmo
- Generador de chorus
- Filtros de las cuerdas
- Filtros de las flautas

Otros:
- Tanque de reverberación (es la misteriosa bolsa negra, en medio)
- Cabina del subwoofer
- Leslie (original, tapado con gomaespuma)
- Fuente de alimentación, volumen general y amplificadores
- Pedales




Arriba: Circuitería de ritmo. Frente: Filtros de chorus.


Arriba: Circuitería de ritmo. Frente: Filtros de flautas.


Arriba: Circuitería de ritmo. Frente: Filtros de cuerdas.

Lógicamente toda la circuitería es la parte interesante del órgano. Teniendo en cuenta que un simple filtro puede estar compuesto por tres amplificadores operacionales, media docena de resistencias y tres o cuatro condensadores, es fácil entender la gran cantidad de componentes que tiene el órgano, con todos los instrumentos que permite generar. Se puede ver que ahorrar en espacio no era importante ya que la circuitería está pensada claramente para la intervención humana. En la era digital todos estos componentes se reemplazarían por diez líneas de código grabadas en un espacio como la punta de un alfiler.

En vez de operar con bits y bytes, por el tamaño de los condensadores y las resistencias, está claro que se usan tensiones y corrientes considerables. También la gran cantidad de componentes, necesariamente imperfectos, generan el ruido y la distorsión que esperamos para que un órgano eléctrico suene a órgano eléctrico. Aunque en el diseño se buscara perfección, es la distorsión y la incompleta emulación la que se imita hoy en día con los sintetizadores digitales.

Tener en las manos un circuito resultado de tantísimo esfuerzo, estudio y erudición es impresionante. La fragilidad de los componentes exhaustivamente colocados y elegidos resta mérito a los simplistas circuitos digitales actuales.


Filtros de audio


Pedal de volumen, fuente de alimentación y amplificación


Abajo: Fuente de alimentación (Transformador a la izquierda y regulación a la derecha). Arriba: Circuitería de amplificación. Alrededor: Transistores en el chasis para disipar el calor.


Altavoz Leslie. Consiste en hacer girar un altavoz para conseguir un trémolo (fluctuación de volumen). Este efecto se puede apreciar en Lucy in the Sky with Diamonds, por ejemplo. Ojo a las instrucciones de mantenimiento (click para agrandar).


Pedalera en regulares condiciones.


Colocación de los altavoces frontales. Leslie a la izquierda, subwoofer arriba a la derecha, graves abajo a la derecha.

Algunas preguntas:
  1. La obvia: ¿Por qué no funciona? La fuente de alimentación y amplificación es lo que se llenó de agua por lo que seguramente el problema esté ahí. Desde luego consume potencia por lo que el problema no es de alimentación general. Habría que comprobar los condensadores electrolíticos grandes y los transistores.
  2. ¿Qué integrado se utiliza en las placas de coro, flauta y cuerda? No he encontrado nada en Google con la referencia P-24103 RAYT7643.
  3. ¿Qué valor puede tener? Según he leido aquí, se habla de $1000.
  4. ¿De qué material está hecho? Pesa como un camión...
  5. ¿Por qué la web de Lowrey parece una asociación cristiana de la tercera edad?

lunes, 7 de julio de 2008

Tantos años de evolución en el desarrollo de virus para nada

Si lo más fácil es hacer una web con un formulario donde introducir dirección de Messenger y contraseña y dejar que entren incautos deseosos de ver fotos de sus amigas.

Una vez que se tiene la contraseña sólo hay que programar un bot que inicie sesión de Messenger con esos datos y diga a todos los contactos "Mira qué fotos me he sacado" con un link a la misma página. Una sorprendente cantidad de gente pica distribuyendo el link de forma exponencial.

Esto no es un virus. No descarga ningún fichero ni ejecuta código malicioso. Simplemente se queda con la contraseña del Messenger del pobre usuario y se conecta, desde otra máquina, para poner el mensaje a todos los contactos.

Solución para los infectados: Cambiar la contraseña de Messenger. Eso sí, la dirección de e-mail y la de todos los contactos se guarda y se mete en una base de datos para hacer futuro spam de viagra, casinos y demás basura.

La lógica (y tener el windows actualizado cada día) sigue siendo el único arma para luchar contra virus, malware y demás usos malvados de la informática. Los antivirus siguen siendo puros consumidores de CPU y memoria.

Abrir el precinto invalida la garantía

Intento generar siempre contenido original y no vincular a otros blogs o noticias así que traduciré este artículo que he encontrado en el genial Keith's Electronics Blog y de paso explico cómo hacer un potenciómetro rudimentario.

Se trata de recuperar un antiguo pedal de órgano (Baldwin Model 5) para hacer un pedal que controle un equipo moderno. Un proyecto simple, retro, muy funcional y con una curiosa sorpresa.

Auténtico gear pr0n. Abatiendo el pedal movemos el brazo que presiona una barrita a la izquierda.


Atención a la pegatina: "Abrir el sello invalida la garantía en este control de volumen" en una tipografía cincuentera. Lo está pidiendo a gritos.


Como dice Keith: Ésta es la parte que nos hace decir "wow". Parece que aún no se habían inventado los potenciómetros (es broma, creo) o no existían con una potencia suficiente.

Al bajar la palanca se mueve la barrita verticalmente para activar pequeños interruptores de hoja (traducción libre, mirar la foto en alta resolución para entenderlo) y van cerrando circuitos en la escalera de resistencias. Si no está presionada la palanca, hay una pequeña distancia entre los contactos y según se va apretando, van empujando unos a otros, empezando desde arriba. Cuantos más estén conectados, menos resistencia habrá.

Para entender la escalera de resistencias hay que imaginar que originalmente hay una manguera llenando una piscina. Si se pone otra manguera en paralelo llenando una piscina, se llenará más rápido; más agua entrará cada segundo. Cuantas más resistencias en paralelo, más corriente pasará entre dos puntos. No es intuitivo que cuantas más resistencias haya, menos resistencia se produzca.


Ningún contacto conectado hace que entre Gnd y Out en este ejemplo, haya una resistencia de 2R + R + R + R + R = 6R. Según se van conectando contactos, entran más resistencias en juego y el valor resultante se reduce con lo que se deja pasar más corriente y por lo tanto produce más volumen. Este circuito está diseñado para convertidores analogico/digital así que podemos simplificarlo bastante para entender nuestro potenciómetro.



En este otro caso, cada interruptor que se cierra cortocircuita una resistencia. Una resistencia cortocircuitada no afecta al resto del circuito.



Al ser sólo resistencias, la señal puede ser continua o alterna por lo que se puede poner en serie con un altavoz o un amplificador para limitar su corriente o se puede utilizar una corriente continua fija y leer el valor Out, en un circuito digital, utilizándolo como un potenciómetro común. Ésta opción es genial, permitiendo el uso de un componente vintage en un circuito moderno para por ejemplo controlar un sistema basado en Arduino.

Para controlar valores de audio normalmente se utilizan potenciómetros logarítmicos (o exponenciales), que hacen que el incremento no sea lineal (cuanto más girado esté, más varía el valor de resistencia, o menos, según se conecte). Eligiendo bien el valor de las resistencias podemos hacer una aproximación a una curva exponencial para que cada vez que se conecte un nuevo interruptor, se incremente más que lo que incrementa el anterior. La lista de los 16 valores que buscamos es esta:

1.000
0.741
0.549
0.407
0.301
0.223
0.165
0.122
0.091
0.067
0.050
0.037
0.027
0.020
0.015
0.011



Por lo que podemos, por ejemplo, construir la siguiente serie de resistencias:

0.008
0.003
0.004
0.005
0.007
0.010
0.013
0.017
0.024
0.032
0.043
0.058
0.078
0.105
0.142
0.192
0.259

Todos estos valores suman 1, por lo que si ningún conector está cerrado, habrá 1 unidad de resistencia (multiplíquense los valores al gusto) y si están todos pulsados, no habrá resistencia ninguna. El resto de valores seguirán una acumulación de resistencia exponencial.

El potenciómetro del pedal es un poco más complejo pero la idea es la misma.

viernes, 27 de junio de 2008

jesusibanez.com


Hoy hemos publicado la nueva web de Jesús Ibáñez en la que he colaborado como programador. Puesto que se trataba de un estudio de paisajismo y debía tener estilo y elegancia y no era crítico el posicionamiento en buscadores, acepté el uso de Flash. Ha sido el primer contacto con AS3 serio, ya que el Tensegrity fue sólo un experimento.

Respecto a AS2 hay algunos cambios que no me convencen en absoluto. El uso del antiguo _root no tiene nada que ver con el nuevo root lo cual complica el uso de varibles entre películas incrustadas. El orden z de los objetos (definir cuáles están encima de otros) ha cambiado también. Ya no es posible darle orden 1000 a un objeto y orden 1100 a otro.Para que un objeto se ponga encima de otro, se deben intercambiar sus posiciones para que todos estén seguidos.

Por lo demás, ActionScript sigue siendo un lenguaje de programación limitado. Creo que voy a seguir más de cerca el desarrollo de SilverLight y me voy a poner con ello cuando saque un rato.

Aprendiendo a ser geek


Entre el 16 y el 20 de Junio organicé un taller de electrónica basado en Arduino para enseñar a futuros geeks de 15 y 16 años la programación de la placa y algo de electrónica analógica.

Acostumbrado al taller del Aula de Propulsión Escópica (Enero 2008), en el que me encontré a cuarenta y cinco personas adultas escuchándome en la primera clase, hubo que enfocarla de otra forma ya que los apenas ocho asistentes estaban pensando en las vacaciones de verano y en pasar el rato de una forma entretenida. Por ello fui a lo práctico sin dar demasiadas explicaciones teóricas, que ya se darían durante el desarrollo del taller.

Puesto que era una actividad optativa en el colegio, tuve la suerte de recibir a los chavales más ingeniosos y despiertos y aunque hay que animarles mucho más que al grupo de adultos, aprenden rápido y están acostumbrados a recibir clase.



Además, promocionar la Arduino por los ámbitos docentes es bastante interesante. Es una placa que por 22-25€ nos hace entender muy rápidamente la forma de utilizar un sensor, la potencia que tiene un microcontrolador, la utilidad de multiplexores, encoders, registros de desplazamiento... Por lo que he podido ver, la clase de tecnología que se imparte en E.S.O. y Bachillerato se podría basar enteramente en esta placa y se cubriría un espectro mucho más amplio, interesante y escalable de lo que se hace ahora.

Mucho se habla del pasotismo de los adolescentes y mucho puedo hablar de lo que he visto en la misma carrera de electrónica, donde una terrorífica parte del alumnado no tenía ningún interés ni le veía las posibilidades a nada, más allá de aprobar la práctica o el examen. No creo que sea culpa suya, ni de la televisión, Wii o Internet sino de que llegados al primer laboratorio de la carrera hay alumnos que no saben hacia qué lado se aprieta un tornillo. Es cierto que es difícil tener un cuarto en casa completamente dedicado al bricolaje y al D.I.Y. como fue mi caso, pero más vale un padre/tío/profesor geek, que, ilusionado por haber encontrado la forma de arreglar un vídeo, nos haga querer llegar a saber tanto.

Organizar talleres, concursos, páginas webs, blogs e incluso contribuir a la wikipedia son acciones que no reemplazarán a un padre comprometido con la educación, pero ayudará a que el hijo se pueda buscar la vida para aprender.

Animo a todo el mundo que sepa de algún tema a organizar cursos y talleres. Si no es suficiente realización el mero hecho de darlos, hay otras motivaciones como, por ejemplo, practicar el hablar en público o que queda muy bien en el C.V. Cualquier razón para contribuir a la comunidad de conocimiento libre me parece lícita.

lunes, 26 de mayo de 2008

Tensegrity 0.1

Un tensegrity[wikipedia; inglés] es una construcción que está en equilibrio gracias a partes elásticas que estabilizan cada componente con la particularidad de que si se deforma, intentará volver a su forma original o al menos a una forma en equilibrio.

Con unos cuantos palos y unas gomas se puede construir un tensegrity casero [video youtube] que se puede simplificar bastante. Yo he hecho una esfera con sólo seis aristas, no es nada difícil.

La versión del tensegrity [flash] que he liberado es un pequeño flash hecho para probar el nuevo Adobe Flash 9. Tras leer varios comentarios positivos a favor de ActionScript 3.0 (el lenguaje de programación de Flash), decidí programar algo sencillo que consumiera CPU como es este sistema de planetas o más bien átomos.



Cada círculo es atraído por los círculos lejanos y es repelido por los cercanos, así se consiguen estructuras muy estables, moléculas. Cuando dos círculos se repelen, dibujan una línea roja. Las líneas blancas representan la fuerza con la que son atraídos hacia los círculos lejanos. Todos los círculos interactúan con todos por lo que la complejidad del cálculo crece potencialmente para cada círculo que se añade a la escena.

Además hay pequeñas fuerzas en el recuadro que empujan los círculos hacia su centro.

Me ha desilusionado bastante que el IDE (entorno de programación) de Flash siga siendo tan arcaico. He recordado mis tiempos anteriores a Visual Studio en los que para llamar a métodos había que mirar en la ayuda y documentación, cosa que con el Intellisense ha quedado sólo para casos muy concretos. Es básicamente un cuadro de texto. El code-hint sigue siendo una broma.

El rendimiento no me ha sorprendido. Sigue siendo lento al redibujar cuando disparas el número de círculos. Si se necesita hacer un sistema más complejo habrá que irse a programación a más bajo nivel o a librerías capaces de aprovechar tarjetas gráficas.

Nueva web

Éste es mi quinto o sexto blog y ésta es mi centésima web:




http://gndcontrol.com

El nombre no es fácil de decir ni tiene armonía pero es perfecto ya que voy a publicar proyectos de electrónica, música y programación. Ground Control es parte de la canción Space Oddity de Bowie, una de esas canciones perfectas. GND es la abreviatura típica de un nodo conectado a tierra en electrónica. Control es una parte bastante importante de mi rama de ingeniería.

viernes, 25 de abril de 2008

I still love programming



Tengo la suerte de no ser programador e ingeniero informático a la vez. Esto me permite no tener aversión por la programación. Aquí dejo un documento sobre tres o cuatro cosas [pdf, 500KB, imperfecto inglés] que escribí ayer con una recopilación de códigos que me parecieron bonitos al escribirlos.

lunes, 14 de abril de 2008

Shine a light


No es un documental porque tiene un concierto entero, no es un concierto porque suena a disco y no es la grabación de un disco porque la ejecución es la de un directo. Es una película sin identidad, un directo artificial con una primera fila llena de modelos con tacones y vestido de cocktail. El poco material antiguo de entrevistas no es nada novedoso ni interesante. Todo está improvisado según hacen entender ya que no hay setlist hasta un segundo antes de empezar. ¿Qué hace Scorsese entonces?

sábado, 5 de abril de 2008

Tecnología de la hostelería II

(Viene de Tecnología de la hostelería)

Las centrales de reserva de hoteles firman contratos con ellos y les dan una dirección web a la que pueden acceder para actualizar sus precios y su disponibilidad. Estas webs tienen miles de visitas ya que los hoteles actualizan sus precios a menudo; hacen cambios desde una vez a la semana hasta media docena al día. Son especialmente críticas las épocas de ferias y congresos ya que hay que llenar el hotel maximizando el beneficio, atendiendo a la competencia y la tendencia de las ventas. Es injusto para el cliente pagar más por lo mismo pero muchos hoteles no podrían competir de ninguna forma.

Las páginas de administración que ponen a disposición del hotel son sorprendemente diferentes unas de otras. El objetivo es simple: Poner un precio a cada día y un número de habitaciones a la venta. Se complica considerablemente cuando existen varios tipos de habitación y uso (Doble, Triple, Apartamento, Estudio, uso individual, cama supletoria), varios tipos de ocupantes (adultos, niños, niños menores de x años), varios tipos de regímenes: (sólo alojamiento, alojamiento y desayuno, media pensión, pensión completa, todo incluido), estancias mínimas, anticipación de compra, distintos contratos dependiendo del mercado...

Tantas opciones hacen que los desarrolladores de estos paneles de administración se planteen ayudar al usuario que no tiene por qué saber nada de informática. Estas terribles ayudas derivan en páginas web que sólo funcionan en Internet Explorer, que abusan del (mal) uso de javascript
y que están hechas con frameworks y entornos WYSIWGY (What you see is what you get) como ASP.NET, que puede derivar en páginas web terribles.

Un problema de estas páginas es que no están desarrolladas para el público, son extranets a las que se accede con contraseña, por lo que el presupuesto que tienen para ello está bastante limitado. Prefieren vender más que dar mejor servicio a sus proveedores por lo que se esmeran en el front-end para clientes.

En mi trabajo he tenido que estudiarme estas páginas de arriba a abajo sin tener más que el código fuente y mis herramientas para webscraping (que merecen un post aparte). Casi todas tienen errores graves ya sea de desarrollo o de usabilidad por lo que puedo decir que he aprendido bastante sobre lo que hay que evitar.

Algunas disfunciones técnicas que me he encontrado son:
  • Un _viewstate de 100Kb. El _viewstate es un parámetro que incluyen las páginas ASP.NET. Se le conoce como la "administración de estado" ya que guarda la información (codificada) de todos los elementos de una página web como inputs de texto, etiquetas, desplegables... Guarda propiedades como el color del fondo, los items de un desplegable, la posición, etc.
  • Utilización de entornos de programación que facilitan el desarrollo. Estos entornos, entre los que se incluye ASP.NET con su _viewstate, son muy comunes. ¿Para qué pagar a un desarrollador que entienda conceptos como POST, GET, HTTP, cabeceras, variables de sesión, cookies, cachés y bases de datos, si podemos comprar por 6.000€ una aplicación que lo hace todo y poner a un becario a ejercitar el ensayo-error? Estas aplicaciones pueden ayudar mucho a agilizar el desarrollo pero hay que estudiarlas y controlarlas bien antes de empezar un proyecto. Suelen generar HTML muy, muy feo y repetir mucho código.
  • Un caso concreto de utilización de estos entornos fue una de las páginas que guardaba cada cambio que se hacía en el calendario y generaba 10 líneas javascript. ¡Cada vez que se hacía un cambio crecía el tamaño del html! Era el browser del cliente el que tenía que procesar todos los cambios, desde que se cargó el contrato. Cuando desarrollamos el webscraping estaba en 300Kb de .html y al par de meses ya ocupaba un MB.
  • Comprobar el usuario y la contraseña sólo al principio. En un entorno bajo usuario y contraseña se debe comprobar en cada página y en cada petición que el usuario es quien debería ser. Hay varios métodos para esto siendo el guardar un identificador de sesión en cookie, el más utilizado. Sin entrar en detalles, al modificar un parámetro llamado típicamente "idhotel", "idh", "id_hotel" y ponerle un número cualquiera, es fácil hacer modificaciones a hoteles a los que teóricamente no se tiene acceso. Cuando descubrimos una de estas vulnerabilidades se avisa al intermediario pero nunca han contestado. Dan ganas de irse de viaje por un euro la noche si no fuera porque el problema se lo pasan al hotel.
Sobre usabilidad y administración de tarifas:
  • De validar la página ni hablamos. Se puede ir olvidando un recepcionista de consultar una extranet desde el móvil (cosa que no veo tan descabellada) o un discapacitado de manejar centrales.
  • Hay extranets con pocas opciones que permiten introducir sólo un número de habitaciones y precio. No tienen mucho más y pueden sobrevivir sin javascript perfectamente.
  • Para configuraciones más completas se pueden basar en un precio base: al introducir el precio de la doble estándar, se genera la Doble Uso Individual un 10% más barata, una triple un 20% más cara, etc. No es nada habitual.
  • Basadas en tarifas. Las tarifas se definen por contrato previamente y se les da un nombre orientativo. Así al poner una tarifa llamada "Oferta 2" se establecería la doble a 100€, la DUI a 90€, la triple a 120€, etc. en vez de tener que especificar precio para los tres usos al cambiar de tarifa.
  • Basada en niveles. Como la basada en tarifas pero en vez de llamar "Oferta 2" a la tarifa, se le pone un precio orientativo como "100€" que corresponde con el precio, típicamente, de la habitación doble con uso doble. Es mi opción favorita.
  • Calendarios en ventanas nuevas. Ya de por sí, un pop-up es molesto, pues más lo es si es sólo para elegir una fecha.
  • Lo mejor que he visto es la extranet de atrapalo.com. Hasta te ponen comentarios para webscrapers, lo cual es un detallazo. Consiste en una tabla enorme con una columna para cada tipo de habitación, estancias mínimas y desayunos y un día para cada fila. El precio se introduce a mano al céntimo. Por javascript se puede modificar esta tabla por rangos y marca las modificaciones que se hagan a la tabla.
Nos queda mucho para erradicar la mala praxis webera. Entre las consultoras que meten ingenieros superiores que no han hecho una web en su vida y las empresillas que contratan a un becario que sabe de informática, estamos acostumbrados a que no funcionen bien las cosas.

viernes, 4 de abril de 2008

Tecnología de la hostelería

El mundo del turismo en España, aunque vivamos de él, está atrasadísimo tecnológicamente. Llevo dos años y medio peleándome con intermediarios, software de gestión hotelera, recepcionistas y una larga cola de impedimentos.

La posición media ante las mejoras tecnológicas es No me lo toques que yo me apaño con esto aunque está presente en un rango entre Yo es que no tengo ni idea hasta Este programa es una castaña. El problema se extiende desde la nulidad informática de los empleados en los hoteles y agencias (donde no puedes pretender que un usuario instale un programa) hasta la posición de los directivos y jefes que no quieren perder tiempo en mejorar ni invertir en desarrolladores que les organicen los sistemas.

Es bastante común que en vez de tener un equipo de IT en una empresa de turismo, se opte por contratar a una consultora que haga el trabajo. Evidentemente si se pide algo a una empresa que ha optado por esta forma de trabajo lo último que van a hacer es volver a llamar a la consultora para entender qué es lo que les estás ofreciendo o pidiendo. No es fácil explicar a una recepcionista que quieres realizar una conexión XML entre sistemas.

En lo que a las centrales de reserva respecta (intermediarios, puntos de venta de habitaciones de hotel), pocos quieren hablar de integraciones ni estándares. El producto que vende mi empresa hace que un recepcionista de un hotel actualice su disponibildiad y precio de forma automática en todos sus puntos de venta por lo que mi trabajo es hacer que esta conexión sea automática. El ideal para hacer esta integración se basa en un webservice por parte del intermediario al que se le envían las tarifas cuando se produce un cambio. Estos webservices suelen tener una especificación para crear un documento XML y mandarlo directamente, con una autentificación por SOAP o en el mismo XML. Es decir, un API a través de Internet.

Los intermediarios grandes como Booking, GHRS, Expedia... tienen estas integraciones definidas aunque es difícil trabajar con ellos.
  • Booking sólo permite integrar si el hotel deja de hacer cambios manualmente, lo cual huele a overbooking si se cae el sistema. Descartado.
  • GHRS tiene un captcha en su web para evitar robots que hagan webscraping pero proporciona un método de integración por webservice. Un buen día cerraron el acceso a esta integración porque decidieron que tenían que auditar los programas que enviaban los cambios. Les respondí que lo auditaran todo lo que quisieran y lleva meses caido.
  • La especificación de Expedia parece bastante completa pero aún no la he probado ya que no me han puesto en contacto con ningún técnico.
  • Hotelbeds desarrolló en 2007 su servicio para integraciones y aunque se respira cierto ambiente beta, es de las pocas centrales españolas con un equipo técnico con el que puedes hablar. Aún no la he probado en producción porque llevo semanas esperando a que me pongan un hotel complicado en el entorno de test.
  • Transhotel fue la primera empresa española que conocí con webservices. Ésta fue mi conversación en FITUR de 2007, en la que decían:
    • Os mandamos la especificación y cada vez que haya una búsqueda se os hará una consulta.
    • ¿No es más fácil que cacheeis las tarifas y la disponibilidad de cada hotel? Es un desperdicio de ancho de banda y podríais echar abajo los servidores.
    • Pues sí. Ha pasado.
    • Hay que poner servidores sólo para vosotros entonces.

    Así que a la espera de que evolucionen. ¡Si ya tienen la cache hecha! Sólo tienen que hacer un webservice que modifique los datos que se modifican mediante su extranet.
Intentaré actualizar esta lista según vayamos evolucionando pero no creo que lo haga muy a menudo, me temo.

Éstas son las empresas más avanzadas, porque "tienen" webservices. Sobre las extranets de las centrales de reservas hay mucho que decir, así que voy a ponerlo en un post aparte.

Mala fe en la w3: Softonic, experts-exchange.

- ¡No sabía que el Messenger costara 3€ ahora!
- ¿Cómo va a c...? No me digas que te lo has bajado de Softonic...
- Sí, ¡y no me funciona! jaja.

Maldito Google qué mal funciona a veces. Buscando messenger sale todo tipo de engañabobos. Incluso sospechosísimos enlaces directos a un .exe en ciertas páginas que pagan por salir en enlaces patrocinados (adwords).

Además, Google guarda los clicks de los usuarios en estas páginas y los usuarios no ayudan a bajarlas de PageRank.

Softonic es un ejemplo suave de mala fe. Aunque te lo ponen fácil para que pagues y pienses que estás en la web del producto, también se supone que te ponen un link directo al software gratuito. No te aseguran que funcione y tampoco me extrañaría que no dediquen mucho tiempo a mantenerlo actualizado.

Lo que me hace hervir la sangre es la web experts-exchange.com. Es un foro donde la gente pone sus preguntas técnicas y normalmente en el resumen que sale en Google aparece la solución. Al entrar en la página, para ampliar la información, te dice que tienes que estar suscrito para ver la respuesta. Tienen una página para buscadores y otra para humanos lo cual debería estar castigadísimo. Sería tan fácil como hacer que un crawler no resuelva su dirección a una ip del buscador y que se haga pasar por humano, falsificando también el nombre del navegador que utiliza. No hay más formas de detectar a un crawler. Si la diferencia es grande, se baja la puntuación. Aparece siempre de las primeras sobretodo al desarrollar en .net.

Si esta web es la única que tiene nuestra solución, recomiendo usar la versión cacheada que tiene Google, que está limpia y en perfecto unicode.

jueves, 3 de abril de 2008

tuenti

Hoy he visitado tuenti. Es una oficina enorme en pleno Chueca. Se habla inglés (no php, como asegura edans) y hay gráficos de tráfico en tiempo real en pantallas de tropecientas pulgadas, que parece que se regalaban. Son desarrolladores de los duros, no de los que han hecho un curso o recién licenciados. Ambiente de start-up, de ganas de hacer cosas y de mucho secretismo por todo, lo cual, con diez servidores nuevos cada semana, se entiende.

martes, 1 de abril de 2008

De daft punk a la minería de datos

En el trabajo me gusta sacar estadísticas de eventos que guardo en bases de datos. Rendimiento, velocidad, carga y cosas insustanciales que no dan para más. En mi nuevo Proyecto Secreto pretendo jugar con cargas brutales y registros exhaustivos para aunar comportamientos, relacionar datos y hacer enormes gráficas sacadas de largos procesos nocturnos.

La minería de datos consiste en analizar millones de pequeños datos. Last.fm es un ejemplo genial de ello. Una vez te registras te observan. Si abres tu winamp o tienes la mala suerte de usar tu Itunes se envía la canción que escuchas al iniciarla, así va creando un perfil sobre ti (esto se llama scrobbling, por lo visto). También al usar lastfm tienes varias opciones; escuchar música relacionada con un artista, escuchar la música de un usuario o simplemente darle a Play para que te ponga música según lo que te gusta escuchar.

Si cada uno de los usuarios de Last.fm escucha una canción cada cuatro minutos, la cantidad de información que se guarda en su base de datos debe ser impresionante. Ser el administrador de una base de datos así y entrar por las mañanas debe ser como despertarse todos los días en el Kilimanjaro. Cuantos más usuarios, menos fallo, más verdad. Diez millones de escuchas al día.

Empecé poniendo Daft Punk y Soulwax y en un par de semanas he descubierto Justice, Digitalism, Boys Noize y un montón de música electrónica francesa. También he descubierto nuevos términos para denominar música. De estos que duran dos semanas. Neo-rave o new-rave. Es como decir "música de martes por la tarde". En cualquier caso, es inspiradora. Me hace abrir el Reason todas las noches y lamentarlo por la mañana.

Para mi Proyecto Secreto he decidido guardar un registro en una enorme tabla cada vez que haya un nuevo suceso y cada día procesar los nuevos cambios para sacar estadísticas. La latencia da bastante seguridad porque si se corrompen resultados estadísticos (al utilizar estadística on-the-fly) hay poco que hacer con ellos y para el uso que les voy a dar no hay ninguna prisa. Idealmente los resultados variarán muy poco de un día a otro.

Otra razón por la que optar por un procesado periódico de estadísticas es que si se guardan eventos simples, se pueden sacar en cualquier momento otras estadísticas interesantes, que mejoren el motor de inteligencia artificial (o como se quiera llamar) y apuntarlas hacia datos del pasado para tener el dato instantáneamente en vez de esperar a que se generen.

Soy un vocoder

Este espacio se va a utilizar para dejar apuntes, tutoriales o reseñas sobre distintos temas: Electrónica, música, programación, diseño, etc.