<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2462713939557598184</id><updated>2011-11-23T04:28:43.171+01:00</updated><category term='tecnología turismo informática XML webservices'/><category term='bienvenida'/><title type='text'>Soy un vocoder</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>56</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-6644938493962596187</id><published>2011-11-18T13:44:00.001+01:00</published><updated>2011-11-18T17:23:01.349+01:00</updated><title type='text'>Google Plus es el Reader social.</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://ssl.gstatic.com/s2/oz/images/google-logo-plus-0fbe8f0119f4a902429a5991af5db563.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://ssl.gstatic.com/s2/oz/images/google-logo-plus-0fbe8f0119f4a902429a5991af5db563.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Google+ me parece un éxito a pesar de lo que se esperaba de la herramienta. No es el nuevo facebook en absoluto, no creo que tenga nada que ver. Por suerte, todo el ruido de Facebook se quedará en Facebook. &lt;br /&gt;&lt;br /&gt;Para mí, Google+ es una red mucho más calmada, producto de una esperada mejora social de Google Reader. Creo que las publicaciones en esta red son un "esto quizá te interese" más que el "esto es lo que me interesa a mí" de Facebook o "esto es lo que estoy pensando" de Twitter.&lt;br /&gt;&lt;br /&gt;En mi caso, los círculos que tengo en G+ son una proyección perfecta de los contactos a los que quiero enviarles un enlace, una opinión o un álbum de fotos. Antes, en Reader, solía compartir un enlace si a alguno de mis seguidores le podía interesar, enviando ruido al resto. Ahora puedo separar lo relativo a programación e informática, de lo referente a Arduino, DIY y electrónica, de lo de comida y cocina o del poco contenido personal que pongo en G+.&lt;br /&gt;&lt;br /&gt;Es evidente que en Facebook se puede hacer también, pero no está tan bien implementado y sus usuarios como mucho utilizan los grupos para separar amigos de familia y así limitar las fotos etiquetadas que ven sus padres. Google obliga a sus usuarios a ser más organizados.&lt;br /&gt;&lt;br /&gt;Lo que echo en falta es la forma de tratar los +1s (por lo visto pronunciados "masunos", "plusones" o "plasguans"). Me gustaría que G+ copiara la forma en la que Facebook te dice que a un contacto le gusta algo. "A Fulanito le gusta tal artículo y 5 más". Por ahora la única forma de verlos es en el perfil de cada uno, algo tipo los favoritos de Twitter, que ya podían llamarse "pendiente de leer".&lt;br /&gt;&lt;br /&gt;Por otro lado, sigo muchas más empresas o "Pages" en G+ que en Facebook porque puedo gestionarlas con los círculos. Así, si tengo poco tiempo veo los círculos más interesantes y si tengo más veo los de empresas. En Facebook tienes dos opciones: leer sus actualizaciones o ignorarlas completamente.&lt;br /&gt;&lt;br /&gt;Si se amplia el concepto de círculos, Google Plus podría reemplazar a Reader en el futuro.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-6644938493962596187?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/6644938493962596187/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=6644938493962596187' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/6644938493962596187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/6644938493962596187'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2011/11/google-plus-es-el-reader-social.html' title='Google Plus es el Reader social.'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-2411283886793480588</id><published>2011-11-02T17:10:00.000+01:00</published><updated>2011-11-02T17:14:13.077+01:00</updated><title type='text'>Cinco pasos para mejorar la velocidad de un PC</title><content type='html'>Escucho con asombro las historias de compañeros de trabajo y familiares sobre lo lento que funcionan sus ordenadores. Les suelo recomendar estas tareas:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;1. Cambia tu disco duro principal cada dos años&lt;/span&gt; (50€)&lt;br /&gt;En mi caso, el disco duro principal (el de los sistemas operativos) lo paso a almacenamiento (fotos, música y vídeos) y el más viejo de almacenamiento lo dejo para backup y lo retiro de su actividad. Utiliza programas como &lt;a href="http://download.cnet.com/HDClone-Free-Edition/3000-2248_4-10504284.html"&gt;HD Clone&lt;/a&gt; (hay versión gratuita) para copiar discos duros enteros, aunque sean de distinta capacidad. Si tienes un portátil, necesitarás un &lt;a href="http://www.blogger.com/goog_1344760050"&gt;adaptador &lt;span id="goog_1344760047"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://www.blogger.com/"&gt;&lt;/a&gt;&lt;a href="http://www.dealextreme.com/p/usb-2-0-to-sata-esata-adapter-dongle-with-cables-81392"&gt;SATA-USB&lt;/a&gt;&lt;span id="goog_1344760048"&gt;&lt;/span&gt; o un puerto eSATA para conectar dos discos duros al ordenador. En cualquier caso es mejor hacerlo con uno de sobremesa. Los discos duros mueren antes o después y siempre va a perjudicarte. Éste es el único método de evitarlo y un disco duro nuevo se nota en velocidad de arranque y ruido.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;2. Amplia tu RAM &lt;/span&gt;(20€)&lt;br /&gt;Si sueles tener muchas pestañas abiertas en tu navegador o muchos programas a la vez, los precios de la RAM son de risa y es muy fácil ampliar. Tienes que tener en cuenta: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tipo de ram (DDR2, DDR3 etc.).&lt;/li&gt;&lt;li&gt;Si es para sobremesa (DIMM) o portatil (SO-DIMM). &lt;/li&gt;&lt;li&gt;Cantidad máxima de memoria que admite tu placa base.&lt;/li&gt;&lt;li&gt;Velocidad del bus (1333 MHz, 1666 MHz...).&lt;/li&gt;&lt;/ul&gt;Lo mejor en este caso es abrir el ordenador y mirar directamente en la pegatina de la RAM, donde suele venir toda esta información.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;3. No utilices antivirus&lt;/span&gt;&lt;br /&gt;Si usas Windows, asegúrate de que las actualizaciones te llegan todos los días y tómate en serio su instalación. Lo mismo con tu navegador web. Utiliza el sentido común y no abras archivos ejecutables o extraños.  Si necesitas bajar un fichero y es de dudosa procedencia, analízalo con &lt;a href="http://www.virustotal.com/"&gt;Virustotal&lt;/a&gt; (gratis) antes de ejecutarlo. Si no tienes plena confianza en ti, usa Microsoft Security Essentials, que no es demasiado pesado y es gratis.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;4. Borra las aplicaciones que no utilices&lt;/span&gt;&lt;br /&gt;Especialmente las que te venían instaladas con el PC. Aunque no se usen, muchas aplicaciones ralentizan el inicio del sistema operativo para arrancar ellas más rápido. Si la aplicación es mala, seguramente lo sea también su desinstalador. Pásale a tu Windows limpiadores como &lt;a href="http://www.ccleaner.com/"&gt;CCleaner&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;5. Cambia de sistema operativo&lt;/span&gt;&lt;br /&gt;Si no quieres pagar por Windows, pásate a un sistema operativo libre y gratis, como &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt; (Linux). Que el código sea abierto garantiza que las aplicaciones vayan cada vez a mejor. Chrome y Firefox funcionan igual o mejor que en Windows y seguramente sea lo que vayas a usar el 99% del tiempo. Para hacer documentos y presentaciones pásate a &lt;a href="http://docs.google.com/"&gt;Google Docs&lt;/a&gt; o, si te da miedo el salto a la Nube, a &lt;a href="http://www.openoffice.org/"&gt;OpenOffice&lt;/a&gt;. Si trabajas con otro tipo de software como AutoCAD o Photoshop, compra una licencia de Windows. Mac es una opción si no te importa pagar desproporcionadamente ni aceptar limitaciones sobre lo que puedes y no puedes hacer con tu ordenador.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-2411283886793480588?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/2411283886793480588/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=2411283886793480588' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/2411283886793480588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/2411283886793480588'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2011/11/cinco-pasos.html' title='Cinco pasos para mejorar la velocidad de un PC'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-3040502807632308452</id><published>2011-09-16T14:30:00.002+02:00</published><updated>2011-09-19T11:27:11.104+02:00</updated><title type='text'>Tutorial emulación/simulación de Arduino en FPGA - Índice y Conclusiones</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-m-bmafBdIS8/TnM-pWOx0uI/AAAAAAAAAcs/dOhXbkx5AIE/s1600/ilustraciongeneral.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-m-bmafBdIS8/TnM-pWOx0uI/AAAAAAAAAcs/dOhXbkx5AIE/s1600/ilustraciongeneral.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Este tutorial se ha creado como complemento a la charla titulada &lt;i&gt;Codiseño y cosimulación basado en FPGAs para plataforma Arduino&lt;/i&gt; del &lt;a href="http://oshwcon.org/"&gt;Open Source Hardware Convention 2011&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Tiene seis partes:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Parte I - &lt;a href="http://pepevi.blogspot.com/2011/08/tutorial-emulacionsimulacion-de-arduino.html"&gt;Introducción&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Parte II - &lt;a href="http://pepevi.blogspot.com/2011/08/tutorial-emulacionsimulacion-de-arduino_30.html"&gt;Emulación del modelo RTL de Arduino&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Parte III - &lt;a href="http://pepevi.blogspot.com/2011/08/tutorial-emulacionsimulacion-de-arduino_6642.html"&gt;Simulación con ModelSIM&lt;/a&gt; (si se usa una versión de pago)&lt;/li&gt;&lt;li&gt;Parte IV - &lt;a href="http://pepevi.blogspot.com/2011/08/tutorial-emulacionsimulacion-de-arduino_31.html"&gt;Simulación con ISim&lt;/a&gt; (integrado en Xilinx ISE)&lt;/li&gt;&lt;li&gt;Parte V - &lt;a href="http://pepevi.blogspot.com/2011/09/tutorial-emulacionsimulacion-de-arduino.html"&gt;Compilar programas Arduino para simulación&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Parte VI - &lt;a href="http://pepevi.blogspot.com/2011/09/tutorial-emulacionsimulacion-de-arduino_15.html"&gt;Acelerar, personalizar y optimizar Arduino&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusiones*:&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt; Emular el microcontrolador de &lt;a href="http://arduino.cc/"&gt;Arduino&lt;/a&gt; o cualquier otro en una FPGA permite personalizar ancho de buses, número y tipo de salidas y entradas, frecuencias de reloj, tamaño de memoria o puertos de comunicación e inhabilitar los recursos que no sean utilizados para optimizar y&lt;b&gt; adaptar el hardware al proyecto&lt;/b&gt; (y no viceversa).&lt;/li&gt;&lt;li&gt;Simular el proyecto completo, hardware y software, &lt;b&gt;a nivel de señal&lt;/b&gt; desde un PC sin necesidad de programación en una FPGA es una ventaja tremenda hasta para proyectos básicos de Arduino.&lt;/li&gt;&lt;li&gt;Existen otras ventajas de utilizar hardware reconfigurable como son la capacidad de procesado o la protección de obsolescencia pero no son tan importantes en el ámbito DIY/Hardware Libre.&lt;/li&gt;&lt;/ol&gt;&amp;nbsp;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;b&gt;Trabajos futuros:&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Crear una herramienta open-source que permita configurar un sistema completo, añadir módulos con funcionalidades, comunicaciones, co-procesamiento, etc. El prototipo se llama Oruga y está escrito en Javascript: &lt;a href="http://oruga.tk/"&gt;http://oruga.tk&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Crear módulos en HDL (VHDL, Verilog...) administrados desde Arduino, independientes de ellas o conectados a otros módulos como, por ejemplo:&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Salida PWM con frecuencia configurable.&lt;/li&gt;&lt;li&gt;Entrada RC-PPM de varios canales desde una misma señal.&lt;/li&gt;&lt;li&gt;Salida VGA. &lt;/li&gt;&lt;li&gt;Memoria externa. &lt;/li&gt;&lt;li&gt;Generadores de ondas.&lt;/li&gt;&lt;li&gt;Entrada analógica. &lt;/li&gt;&lt;li&gt;Comunicación genérica de protocolos serie como I2C o SPI.&lt;/li&gt;&lt;li&gt;Generación y mezcla de sonido y otras funciones DSP.&lt;/li&gt;&lt;li&gt;Módulos de coprocesamiento.&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;span style="font-size: x-small;"&gt;*Las conclusiones se ponen junto al índice porque son un buen resumen.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-3040502807632308452?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/3040502807632308452/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=3040502807632308452' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/3040502807632308452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/3040502807632308452'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2011/09/tutorial-emulacionsimulacion-de-arduino_16.html' title='Tutorial emulación/simulación de Arduino en FPGA - Índice y Conclusiones'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-m-bmafBdIS8/TnM-pWOx0uI/AAAAAAAAAcs/dOhXbkx5AIE/s72-c/ilustraciongeneral.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-8839465157540399206</id><published>2011-09-15T19:30:00.000+02:00</published><updated>2011-09-19T11:31:05.850+02:00</updated><title type='text'>Tutorial emulación/simulación de Arduino en FPGA - Parte VI</title><content type='html'>&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: bold;"&gt;Acelerar, personalizar y optimizar Arduino&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hasta ahora no hay ninguna razón por la que utilizar una FPGA para ejecutar código Arduino: es mejor y más barato programar una Arduino convencional. En este capítulo se van a discutir y explicar varias razones para emular Arduino -o cualquier microcontrolador- en una FPGA:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Aceleración&lt;/span&gt;&lt;br /&gt;Una FPGA puede realizar operaciones complejas en uno o pocos ciclos de reloj. Un microcontrolador está especializado en hacer un gran número de operaciones sencillas por segundo. En algunos casos es muy beneficioso resolver un problema con lógica reprogramable. Los ámbitos interesantes son: criptología, tratamiento de imágenes, reconocimiento de voz, radioastronomía...&lt;br /&gt;&lt;br /&gt;Es una ventaja interesante especialmente para la investigación. Hay pocos usos en los que una FPGA sea más rápido que un  microprocesador moderno o una GPU. En el ámbito Arduino (bajo coste), no importa demasiado.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Obsolescencia&lt;/span&gt;&lt;br /&gt;Este problema se presenta especialmente en la industria: un microcontrolador utilizado hace años en un proyecto aún en producción, se deja de fabricar. Normalmente el código programado para microcontroladores están especialmente concebidos para un modelo concreto e incluso con una frecuencia de reloj concreta.&lt;br /&gt;&lt;br /&gt;Este problema no existe si se emula el microcontrolador en una FPGA. Aunque la FPGA se deje de fabricar, se puede emular el mismo código, con el mismo comportamiento, en cualquier modelo parecido de chip reprogramable.&lt;br /&gt;&lt;br /&gt;En el ámbito de Arduino este problema no se suele dar: es más fácil cambiar el código.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Paralelismo&lt;/span&gt;&lt;br /&gt;Esta es la primera ventaja que sí es interesante en el mundo hazlo-tú-mismo/Arduino.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ejemplo I&lt;/span&gt;: es necesario encender 8 LEDS exactamente a la vez, sin un retraso mayor de un ciclo de reloj entre la primera y la última. Además, hay que encender sólo algunos, dependiendo de una entrada.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ejemplo II&lt;/span&gt;: se está generando una señal con la Arduino que se transmite por radio. Una modulación PWM cuya distorsión debe ser mínima. Además, hay que generar 5  con distintas frecuencias. Además, hay que usar el micro para leer del puerto serie y otros trabajos que utilizan el microcontrolador por períodos indeterminados de tiempo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ejemplo III&lt;/span&gt;: en un sistema que controla un robot se están utilizando 4 timers, 30 LEDS, 8 entradas analógicas y varios sensores que piden interrupciones para dar su dato.&lt;br /&gt;&lt;br /&gt;En estos tres ejemplos una Arduino convencional estaría saturada o no sería capaz de cumplir requisitos. Un número importante de interrupciones puede saturar el microcontrolador y, sobre todo, convertir el desarrollo del proyecto en un auténtico infierno.&lt;br /&gt;&lt;br /&gt;Una solución podría ser la siguiente: un microcontrolador para cada sensor, uno para cada salida PWM, uno para cada LED, uno para cada servo y cada motor y una Arduino para gobernarlos a todos.&lt;br /&gt;&lt;br /&gt;Con una FPGA es posible llegar a un término medio y es una de sus aplicaciones más comunes: un microcontrolador gobierna un sistema de módulos independientes con un sistema de comunicación entre ellos eficiente y simple.&lt;br /&gt;&lt;br /&gt;Entonces, en el ejemplo I se programaría en VHDL un módulo que gestione 8 salidas digitales a la vez, en el mismo ciclo de reloj, en el momento que le llegue la orden del microcontrolador.&lt;br /&gt;&lt;br /&gt;En el ejemplo II se programaría un módulo VHDL que genera una señal PWM. Para ello utilizaría un contador, parecido al timer del microcontrolador pero sin interferir con él. Para generar 5 señales sólo hay que instanciar este módulo 5 veces y conectarlos con las salidas correspondientes. Cualquier pin físico sería válido.&lt;br /&gt;&lt;br /&gt;En el ejemplo III se generaría un módulo en VHDL para cada timer, módulos de gestión de cada sensor, etc. El microcontrolador sólo tendría que atender las entradas de usuario y enviar los mensajes correspondientes a cada módulo. Todo a máxima velocidad y mínima saturación del micro.&lt;br /&gt;&lt;br /&gt;La comunicación entre módulos se hace utilizando las direcciones de ram externa que no están siendo utilizadas en el proyecto AVR8. Se definen tantos registros como sea necesario para cada módulo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Personalización&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Tener el código del microcontrolador a utilizar tiene sus ventajas. Es posible, por ejemplo, aumentar el número de salidas digitales o analógicas (y hacerlo de forma más eficiente gracias al punto anterior).&lt;br /&gt;&lt;br /&gt;En el siguiente ejemplo se crea una Arduino emulada y se modifica para tener 48 salidas pseudo-analógicas PWM.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;48 módulos independientes con un temporizador de una resolución de 8 bits.&lt;/li&gt;&lt;li&gt;Cada módulo se conecta a un pin de la Papilio.&lt;/li&gt;&lt;li&gt;48 direcciones de memoria externa reservadas para la comunicación entre Arduino y los módulos.&lt;/li&gt;&lt;li&gt;Si el valor en cada registro es mayor que el contador, a la salida del módulo se pone un uno. Si no, un cero.&lt;/li&gt;&lt;/ol&gt;Con la herramienta Oruga (pendiente de publicación) es posible crear puntos base para desarrollar este tipo de proyectos&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-F195CD8X2VE/TnHdBM_rtAI/AAAAAAAAAcg/v4DEbPNP470/s1600/oruga.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-F195CD8X2VE/TnHdBM_rtAI/AAAAAAAAAcg/v4DEbPNP470/s320/oruga.jpg" width="317" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Herramienta Oruga&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Además, se baja el módulo PWMout.vhd que está preparado para ser utilizado con un proyecto Oruga. Es un módulo que recoge un valor de 8 bits de un registro de memoria (cuya dirección es definida en el momento de instanciarlo) y lo utiliza para generar una señal PWM con un ciclo de trabajo proporcional al valor que le llegue.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;En el siguiente código (auto-generado por Oruga) se instancia el módulo que se configura con la dirección de memoria E/S 0x0FE0 y se conecta con el pin físico 0 del puerto A. Además, se configura ese pin para ser de salida en la última línea. &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;OrugaA_0:component Oruga_PWMout &lt;br /&gt;GENERIC MAP(&lt;br /&gt;&lt;b&gt;io_base_address_generic =&amp;gt; x"0fe0")&lt;/b&gt;&lt;br /&gt;PORT MAP(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nReset =&amp;gt; nrst,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; clk =&amp;gt; clk16M,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; adr =&amp;gt; core_adr,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dbus_in =&amp;gt; core_dbusout,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iore =&amp;gt; core_iore,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iowe =&amp;gt; core_iowe,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;output_sig =&amp;gt; porta(0)&lt;/b&gt;&lt;br /&gt;);&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;DDRAReg(0)&amp;lt;='0';&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Se genera un proyecto con 48 pines conectados a instancias de módulos PWMout. Por defecto se reservan dos direcciones de memoria para cada módulo. El primer módulo tendrá las direcciones 0xFE0 y 0xFE1, el segundo 0xFE2 y 0xFE3 y así hasta el último módulo: 0x103e y 0x103f. Esto es así para poder utilizar un byte de escritura y otro de lectura, pero en este caso sólo es necesario enviar datos al módulo PWM (sólo se usan las direcciones pares).&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;El esquema con los 48 módulos es peculiar:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-LFnxEtF0dG4/TnHgXZfb4_I/AAAAAAAAAck/OKQ-5TQ2YUA/s1600/48pwm.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-LFnxEtF0dG4/TnHgXZfb4_I/AAAAAAAAAck/OKQ-5TQ2YUA/s1600/48pwm.PNG" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;El código Arduino inicial va a ser:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;void setup()&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;{&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; for (int i = 0; i&amp;lt;48; i++){&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; writePWM(i, 256*i/48);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;void loop() &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;{&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&amp;nbsp;Junto con el fichero Oruga.pde, que contiene lo siguiente:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;#define io_start_address 0x0FE0&lt;br /&gt;&lt;br /&gt;byte writePWM(int pin, byte value){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _SFR_IO8(io_start_address+pin*2) = value;&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Este sketch va a configurar el estado inicial de cada módulo PWM con código Arduino, por lo que la configuración va a hacerla el microcontrolador, módulo a módulo.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-zrEF75tV35Y/TnHrALDwaxI/AAAAAAAAAco/duUK0nRkZDw/s1600/sim48pwm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-zrEF75tV35Y/TnHrALDwaxI/AAAAAAAAAco/duUK0nRkZDw/s320/sim48pwm.png" width="203" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Se puede observar que en 800 microsegundos (menos de un milisegundo) se han configurado los 48 canales, cada uno con un valor distinto de ciclo de trabajo, con 3 líneas de Arduino y ni una sola de VHDL, gracias a la herramienta Oruga. Además, la función loop() de Arduino está vacía, por lo que el microcontrolador está totalmente libre para otros trabajos.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://pepevi.blogspot.com/2011/09/tutorial-emulacionsimulacion-de-arduino_16.html"&gt;Índice y conclusiones&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;ol&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-8839465157540399206?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/8839465157540399206/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=8839465157540399206' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/8839465157540399206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/8839465157540399206'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2011/09/tutorial-emulacionsimulacion-de-arduino_15.html' title='Tutorial emulación/simulación de Arduino en FPGA - Parte VI'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-F195CD8X2VE/TnHdBM_rtAI/AAAAAAAAAcg/v4DEbPNP470/s72-c/oruga.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-8849771269445581259</id><published>2011-09-14T10:13:00.005+02:00</published><updated>2011-09-14T13:55:15.187+02:00</updated><title type='text'>Tutorial emulación/simulación de Arduino en FPGA - Parte V</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;Compilar programas Arduino para simulación&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En capítulos anteriores se ha simulado un programa Arduino previamente cargado. Para programar la FPGA con un sketch personalizado conviene diferenciar dos métodos:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Modificar los bits directamente de la memoria en la FPGA y reemplazar el sketch cargado.&lt;/li&gt;&lt;li&gt;Modificar el código inicial con el que se sintetiza el diseño del microcontrolador.&lt;/li&gt;&lt;/ol&gt;El primer método sólo sirve para la ejecución del sketch pero no habría forma de probarlo previamente. Es la forma de programar con el Arduino IDE modificado por Gadget Factory. Sólo hay que seleccionar la "board" aplicable en el menú Tools de Arduino. Por ejemplo &lt;span style="font-weight: bold;"&gt;Gadget Factory Papilio One 500K Board&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Para proyectos complejos es necesario simular y para ello el código del sketch debe ir previamente escrito en el proyecto (en VHDL).&lt;br /&gt;&lt;br /&gt;El código inicial se guarda en bloques de memoria que lleva la FPGA, (de tipo BRAM). En el core se instancian bloques de tipo RAMB16_S18, que es un componente que proporciona Xilinx. En la hoja de características de la FPGA hay más explicaciones sobre los diferentes tipos de memoria que se pueden instanciar.&lt;br /&gt;&lt;br /&gt;En el código suministrado se instancia el componente de memoria 8 veces: RAM_Word0 a RAM_Word7. En el código de inicialización de la instancia (ver fichero sources/Memory/XPM8Kx16.vhd) es posible dar los datos iniciales de cada bit, son los registros INIT_00 a INIT_3F.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;RAM_Word0:component RAMB16_S18 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;generic map (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;INIT =&amp;gt; X"00000", -- Value of output RAM registers at startup&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SRVAL =&amp;gt; X"00000", -- Ouput value upon SSR assertion&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;WRITE_MODE =&amp;gt; "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;-- The following INIT_xx declarations specify the intial contents of the RAM&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;-- Address 0 to 255&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;INIT_00 =&amp;gt; PM_Inst_RAM_Word0_INIT_00,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;INIT_01 =&amp;gt; PM_Inst_RAM_Word0_INIT_01,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;INIT_02 =&amp;gt; PM_Inst_RAM_Word0_INIT_02,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En cada registro se pueden almacenar 64 dígitos hexadecimales, es decir  4x64 = 256 bits. En cada bloque hay 64 (3F) registros, por lo que hay  16.384 bits en cada bloque. Juntando los 8 bloques inicialmente  instanciados, se pueden utilizar 16KBytes de memoria para programas  Arduino.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;PM_Inst_RAM_Word0_INIT_XX&lt;/span&gt;&lt;/span&gt; son constantes, que están definidas en el fichero sources/Memory/prog_mem_init.vhd:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_00  : bit_vector(0 to 255) := x"0053940C0053940C0053940C0053940C0053940C0053940C0053940C0030940C";&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_01  : bit_vector(0 to 255) := x"0053940C0053940C0053940C0053940C0053940C0053940C0053940C0053940C";&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Los caracteres hexadecimales son el sketch compilado para ser utilizado en ATmega.&lt;br /&gt;&lt;br /&gt;En el fichero hardware\tools\butterfly_platform\Makefile del Arduino IDE modificado, se modifica la siguiente línea y se cambia por la ruta correcta:&lt;br /&gt;&lt;br /&gt;PAPILIO_SIM_PATH = "C:/Arduino-Soft-Core/sources/Memory/prog_mem_init.vhd"&lt;br /&gt;&lt;br /&gt;Si alguna de las carpetas tiene un espacio, es importante añadirle el carácter \ antes.&lt;br /&gt;&lt;br /&gt;Ahora se selecciona la Gadget Factory Papilio Custom Board del menú Tools y al pulsar "Upload" se generará el nuevo fichero prog_mem_init.vhd.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-oJtv9x2j4T8/TnB-mUJSpbI/AAAAAAAAAcc/jKIdwmGVl6w/s1600/arduino_boards.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 271px;" src="http://2.bp.blogspot.com/-oJtv9x2j4T8/TnB-mUJSpbI/AAAAAAAAAcc/jKIdwmGVl6w/s320/arduino_boards.jpg" alt="" id="BLOGGER_PHOTO_ID_5652156729057781170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sólo queda repetir los pasos de los capítulos anteriores del tutorial para simular el sketch.&lt;br /&gt;&lt;br /&gt;En el siguiente capítulo se modificará el diseño del proyecto para crear módulos de aceleración.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Parte I - &lt;a href="http://pepevi.blogspot.com/2011/08/tutorial-emulacionsimulacion-de-arduino.html"&gt;Introducción&lt;/a&gt;&lt;br /&gt;Parte II - &lt;a href="http://pepevi.blogspot.com/2011/08/tutorial-emulacionsimulacion-de-arduino_30.html"&gt;Emulación del modelo RTL de Arduino&lt;/a&gt;&lt;br /&gt;Parte III - &lt;a href="http://pepevi.blogspot.com/2011/08/tutorial-emulacionsimulacion-de-arduino_6642.html"&gt;Simulación con ModelSIM&lt;/a&gt; (si se usa una versión de pago)&lt;br /&gt;Parte IV - &lt;a href="http://pepevi.blogspot.com/2011/08/tutorial-emulacionsimulacion-de-arduino_31.html"&gt;Simulación con ISim&lt;/a&gt; (integrado en Xilinx ISE)&lt;br /&gt;Parte V - Compilar programas Arduino para simulación&lt;br /&gt;Parte VI - Acelerar, personalizar y optimizar Arduino&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-8849771269445581259?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/8849771269445581259/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=8849771269445581259' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/8849771269445581259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/8849771269445581259'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2011/09/tutorial-emulacionsimulacion-de-arduino.html' title='Tutorial emulación/simulación de Arduino en FPGA - Parte V'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-oJtv9x2j4T8/TnB-mUJSpbI/AAAAAAAAAcc/jKIdwmGVl6w/s72-c/arduino_boards.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-855035750659867924</id><published>2011-08-31T08:57:00.011+02:00</published><updated>2011-09-19T11:30:34.132+02:00</updated><title type='text'>Tutorial emulación/simulación de Arduino en FPGA - Parte IV</title><content type='html'>En este capítulo se va a simular el proyecto con ISim, por si no se cuenta con una versión de pago de ModelSIM.&lt;br /&gt;&lt;br /&gt;El procedimiento es mucho más sencillo que con ModelSIM. Hay que asegurarse de haber seleccionado ISim como simulador a la hora de crear el proyecto.&lt;br /&gt;&lt;br /&gt;Para poder estimular a la Arduino se necesitan, por lo menos, dos cosas: un reloj y una señal de reset. Esto se hace desde un banco de trabajo o testbench. En el código de Gadget Factory se facilita uno, en scripts\XilinxISE\testbench.vhd. En el menú Project se selecciona "Add copy of source" y se busca este fichero.&lt;br /&gt;&lt;br /&gt;Antes de simular se deben hacer algunos cambios, abriendo el testbench con doble click:&lt;br /&gt;&lt;br /&gt;Cambiar&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;constant clk_period : time := 1us;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;por&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;constant clk_period : time := 31.25 ns;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para que el reloj sea de 32Mhz.&lt;br /&gt;&lt;br /&gt;Además hay que comentar estas dos líneas:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        portb &amp;lt;= "11111111";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        portd &amp;lt;= "10101010";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Que deben quedar de esta forma:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        --portb &amp;lt;= "11111111";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        --portd &amp;lt;= "10101010";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El programa de Arduino que vamos a grabar para la prueba es el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;int ledPin =  13;&lt;/span&gt;  &lt;span style="font-family: courier new;"&gt;void setup()   {&lt;br /&gt;          &lt;/span&gt; &lt;span style="font-family: courier new;"&gt;  pinMode(ledPin, OUTPUT);     &lt;/span&gt; &lt;span style="font-family: courier new;"&gt;&lt;br /&gt;}&lt;/span&gt;  &lt;span style="font-family: courier new;"&gt;&lt;br /&gt;void loop()                     &lt;/span&gt; &lt;span style="font-family: courier new;"&gt;{&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;&lt;br /&gt;    digitalWrite(ledPin, HIGH);   // set the LED on&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;&lt;br /&gt;    digitalWrite(ledPin, LOW);    // set the LED off&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Que simplemente hace parpadear el pin 13 constantemente.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-os1rVT0S-KI/Tl3pquPZ_dI/AAAAAAAAAZw/XTHFi-LqWXw/s1600/isimisefiles.PNG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5646926427968896466" src="http://3.bp.blogspot.com/-os1rVT0S-KI/Tl3pquPZ_dI/AAAAAAAAAZw/XTHFi-LqWXw/s320/isimisefiles.PNG" style="cursor: hand; cursor: pointer; display: block; height: 237px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;En la ventana Files de ISE se edita prog_mem_init.vhd y se reemplazan las siguientes líneas:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 78%;"&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_00  : bit_vector(0 to 255) := x"00B1940C00B1940C00B1940C00B1940C00B1940C00B1940C00B1940C008E940C";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_01  : bit_vector(0 to 255) := x"00B1940C00B1940C00B1940C00B1940C00B1940C00B1940C00B1940C00B1940C";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_02  : bit_vector(0 to 255) := x"00B1940C00B1940C00B1940C00B1940C00B1940C00B1940C00B1940C013B940C";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_03  : bit_vector(0 to 255) := x"0039000000270023003200350038003B000000280022003100340037003A0000";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_04  : bit_vector(0 to 255) := x"0303030303030202020202020202010101010101010100200021003000330036";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_05  : bit_vector(0 to 255) := x"2010080402010606060606060606050505050505050504040404040404040303";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_06  : bit_vector(0 to 255) := x"2010080402018040201008040201804020100804020180402010080402018040";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_07  : bit_vector(0 to 255) := x"0000000000000500000100000000000000000000000080402010080402018040";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_08  : bit_vector(0 to 255) := x"BE1F241100000000000000000000000000000000000000000000000000000000";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_09  : bit_vector(0 to 255) := x"9631920D95D8C004BF0B9503EF0FE0F3E3E8E0B0E6A0E010BFCDBFDEE0DFEFCF";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_0A  : bit_vector(0 to 255) := x"940C0134940EF7E107B136AB921DC001E0B0E6A2E010BE1BF7C907B136A2F3C8";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_0B  : bit_vector(0 to 255) := x"00609180950800EC940EE0600060918000EC940EE061006091800000940C019A";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_0C  : bit_vector(0 to 255) := x"4F3F57262D9095C82FF92FE84F9F54862F932F82E0302F28950800C4940EE061";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_0D  : bit_vector(0 to 255) := x"95C896312DA095C84FFF5AE01FFF0FEEE0F02FE8F0A923882D8095C82FF32FE2";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_0E  : bit_vector(0 to 255) := x"2F952F84E0502F489508938C2B89918C9508938C23899590918CF42923662DB0";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_0F  : bit_vector(0 to 255) := x"4F5F57462D9095C82FF92FE84F9F54862F952F842D2095C82FF92FE84F9F5186";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_10  : bit_vector(0 to 255) := x"B58FF4213024C004778FB58FF4193023F0B12322F16923332D3095C82FF52FE4";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_11  : bit_vector(0 to 255) := x"E0F02FE3BD857D8FB585F4193025C005BF837D8FB783F4213021C00BBD8F7D8F";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_12  : bit_vector(0 to 255) := x"9508938C23899590918CF42923662DB095C896312DA095C84FFF59E21FFF0FEE";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_13  : bit_vector(0 to 255) := x"2411920FB60F920F921FCFFD00B3940E00BE940E0183940E9508938C2B89918C";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_14  : bit_vector(0 to 255) := x"006A9130006991B0006891A0006791900066918093BF93AF939F938F933F932F";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_15  : bit_vector(0 to 255) := x"939000669380006A93201DB11DA19601572DF020372D5F2D2F231DB11DA19601";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_16  : bit_vector(0 to 255) := x"1DB11DA19601006591B0006491A00063919000629180006993B0006893A00067";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_17  : bit_vector(0 to 255) := x"BE0F900F912F913F918F919F91AF91BF006593B0006493A00063939000629380";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_18  : bit_vector(0 to 255) := x"BD8E6081B58EBD8E6082B58EBF876081B787BF836084B78394789518901F900F";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_19  : bit_vector(0 to 255) := x"000000000000000DCFFF94F89508BD856081B585BD856082B585BD8F6081B58F";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_1A  : bit_vector(0 to 255) := x"0000000000000000000000000000000000000000000000000000000000000000";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;    constant PM_Inst_RAM_Word0_INIT_1B  : bit_vector(0 to 255) := x"0000000000000000000000000000000000000000000000000000000000000000";&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El programa sólo ocupa estas líneas, desde INIT_00 hasta INIT_19. El resto de líneas se rellenan con ceros. La explicación de compilar programas Arduino y convertirlos en este formato se hará más adelante.&lt;br /&gt;&lt;br /&gt;Una vez guardado el fichero, se vuelve a la ventana Design y se selecciona la vista Simulation. Al seleccionar testbench, se habilita el proceso Simulate Behavioral Model. Al hacer doble click sobre él se abre ISim.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-CQOV0lrGEdY/Tl3pSsbGVjI/AAAAAAAAAZg/QoN1qm-DTsw/s1600/isimstart.PNG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5646926015164208690" src="http://4.bp.blogspot.com/-CQOV0lrGEdY/Tl3pSsbGVjI/AAAAAAAAAZg/QoN1qm-DTsw/s320/isimstart.PNG" style="cursor: hand; cursor: pointer; display: block; height: 237px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-ku46fwi_-UA/Tl3qUfziUhI/AAAAAAAAAaI/cwK7nj2_Ot0/s1600/isim1.PNG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5646927145648411154" src="http://3.bp.blogspot.com/-ku46fwi_-UA/Tl3qUfziUhI/AAAAAAAAAaI/cwK7nj2_Ot0/s320/isim1.PNG" style="cursor: hand; cursor: pointer; display: block; height: 193px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;En la barra de herramientas&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-LQMxj9JwCPo/Tl3pqS5a3MI/AAAAAAAAAZo/tdzoP0e2mI4/s1600/isimtool.PNG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5646926420628921538" src="http://3.bp.blogspot.com/-LQMxj9JwCPo/Tl3pqS5a3MI/AAAAAAAAAZo/tdzoP0e2mI4/s320/isimtool.PNG" style="cursor: hand; cursor: pointer; display: block; height: 27px; margin: 0px auto 10px; text-align: center; width: 267px;" /&gt;&lt;/a&gt;&lt;br /&gt;se escribe 300us y se pincha en el tercer icono, "Run for the time specified on the toolbar".&lt;br /&gt;&lt;br /&gt;En el visor de señales se comprueba perfectamente que el pin 13 (pin 5 del puerto B) parpadea tal y como estaba previsto.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-6OZosmCBmJE/Tl3pqoEe3MI/AAAAAAAAAZ4/cztB6lhDjFI/s1600/isimwave.PNG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5646926426312465602" src="http://4.bp.blogspot.com/-6OZosmCBmJE/Tl3pqoEe3MI/AAAAAAAAAZ4/cztB6lhDjFI/s320/isimwave.PNG" style="cursor: hand; cursor: pointer; display: block; height: 195px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Se puede comprobar que digitalWrite es una función muy lenta ya que tarda 15 microsegundos en cambiar de estado.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-A3vaSzB0828/Tl3pq6obfdI/AAAAAAAAAaA/sHDMfa7ESBk/s1600/isimdigitalwrite.PNG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5646926431295077842" src="http://2.bp.blogspot.com/-A3vaSzB0828/Tl3pq6obfdI/AAAAAAAAAaA/sHDMfa7ESBk/s320/isimdigitalwrite.PNG" style="cursor: hand; cursor: pointer; display: block; height: 191px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Parte V - &lt;a href="http://pepevi.blogspot.com/2011/09/tutorial-emulacionsimulacion-de-arduino.html"&gt;Compilar programas Arduino para simulación&lt;/a&gt;&lt;br /&gt;&lt;a href="http://pepevi.blogspot.com/2011/09/tutorial-emulacionsimulacion-de-arduino_16.html"&gt;Índice del tutorial&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-855035750659867924?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/855035750659867924/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=855035750659867924' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/855035750659867924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/855035750659867924'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2011/08/tutorial-emulacionsimulacion-de-arduino_31.html' title='Tutorial emulación/simulación de Arduino en FPGA - Parte IV'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-os1rVT0S-KI/Tl3pquPZ_dI/AAAAAAAAAZw/XTHFi-LqWXw/s72-c/isimisefiles.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-5545085762233604729</id><published>2011-08-30T15:36:00.018+02:00</published><updated>2011-09-19T11:29:58.390+02:00</updated><title type='text'>Tutorial emulación/simulación de Arduino en FPGA - Parte III</title><content type='html'>En esta parte del tutorial se va a utilizar ModelSIM PE o SE. Lamentablemente el Student Edition (gratuito) está limitado a 10.000 líneas de código y sólo el proyecto AVR8 tiene 16.000. Es posible simular unos cuantos ciclos con él pero es muy muy lento.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-7WZ90MM6zB4/Tl3wzVOxLkI/AAAAAAAAAcI/BAVTNC5R8Og/s1600/designimpl.PNG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5646934272455552578" src="http://2.bp.blogspot.com/-7WZ90MM6zB4/Tl3wzVOxLkI/AAAAAAAAAcI/BAVTNC5R8Og/s320/designimpl.PNG" style="cursor: hand; cursor: pointer; display: block; height: 250px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;Antes de abrir ModelSIM, en ISE es necesario seleccionar el nodo xc3s500e-4vq100 del árbol en la ventana de diseño. La ventana de procesos muestra una serie de acciones y seleccionar "Compile HDL Libraries". Esto va a tardar unos minutos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-hsUbyf_h3EU/Tl3u6M2KJcI/AAAAAAAAAbI/6PaxI3pLTwY/s1600/compiled.PNG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5646932191440676290" src="http://2.bp.blogspot.com/-hsUbyf_h3EU/Tl3u6M2KJcI/AAAAAAAAAbI/6PaxI3pLTwY/s320/compiled.PNG" style="cursor: hand; cursor: pointer; display: block; height: 66px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;Ya en ModelSIM, al iniciar un nuevo proyecto hay que seleccionar la configuración generada por ISE. En el mismo fichero del proyecto ISE hay un fichero llamado modelsim.ini, que dice a ModelSIM dónde encontrar las librerías que se han compilado previamente.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-L7hfrn_jS58/Tl3sQPO6hDI/AAAAAAAAAaw/loareMtI7ds/s1600/sim1.PNG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5646929271503619122" src="http://2.bp.blogspot.com/-L7hfrn_jS58/Tl3sQPO6hDI/AAAAAAAAAaw/loareMtI7ds/s320/sim1.PNG" style="cursor: hand; cursor: pointer; display: block; height: 270px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;Una vez completado el resto del formulario, se añaden ficheros al proyecto. Se seleccionan directamente del directorio del proyecto ISE, excepto FrqDiv.vhd, que no se utiliza.&lt;br /&gt;&lt;br /&gt;Aparecerá una lista de ficheros en la ventana Project. En cualquiera de ellos, seleccionar, con el botón derecho, Compile - Compile Order.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-HTEwJG-fbQw/Tl3romAgw8I/AAAAAAAAAaY/mo5GYgiQcqw/s1600/compileorder.PNG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5646928590422459330" src="http://2.bp.blogspot.com/-HTEwJG-fbQw/Tl3romAgw8I/AAAAAAAAAaY/mo5GYgiQcqw/s320/compileorder.PNG" style="cursor: hand; cursor: pointer; display: block; height: 314px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;Hacer click en Auto Generate. Debería decir "46 compiles, 0 failed with no errors".&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-5j-tAL2wnOA/Tl3rvJFsQqI/AAAAAAAAAao/L44-z8cBF4o/s1600/sim2.PNG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5646928702918640290" src="http://4.bp.blogspot.com/-5j-tAL2wnOA/Tl3rvJFsQqI/AAAAAAAAAao/L44-z8cBF4o/s320/sim2.PNG" style="cursor: hand; cursor: pointer; display: block; height: 238px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ahora es necesario añadir un testbench. Es un fichero que estimula el proyecto y sin el cual no haría nada. Gestiona la simulación de entradas y salidas físicas y señales como el reset y el reloj. En la carpeta scripts\XilinxISE del AVR8 hay un testbench.vhd, que hay que añadir al proyecto.&lt;br /&gt;&lt;br /&gt;Antes de simular se deben hacer algunos cambios, abriendo el testbench con doble click:&lt;br /&gt;&lt;br /&gt;Cambiar&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;constant clk_period : time := 1us;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;por&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;constant clk_period : time := 31.25 ns;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para que el reloj sea de 32Mhz.&lt;br /&gt;&lt;br /&gt;Además hay que comentar estas dos líneas:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        portb &amp;lt;= "11111111";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        portd &amp;lt;= "10101010";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Que deben quedar de esta forma:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        --portb &amp;lt;= "11111111";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        --portd &amp;lt;= "10101010";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El programa de Arduino que vamos a grabar para la prueba es el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;int ledPin =  13;&lt;/span&gt;  &lt;span style="font-family: courier new;"&gt;void setup()   {&lt;br /&gt;       &lt;/span&gt; &lt;span style="font-family: courier new;"&gt;  pinMode(ledPin, OUTPUT);     &lt;/span&gt; &lt;span style="font-family: courier new;"&gt;&lt;br /&gt;}&lt;/span&gt;  &lt;span style="font-family: courier new;"&gt;&lt;br /&gt;void loop()                     &lt;/span&gt; &lt;span style="font-family: courier new;"&gt;{&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;&lt;br /&gt; digitalWrite(ledPin, HIGH);   // set the LED on&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;&lt;br /&gt; digitalWrite(ledPin, LOW);    // set the LED off&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Que simplemente hace parpadear el pin 13 constantemente.&lt;br /&gt;&lt;br /&gt;Se edita prog_mem_init.vhd y se reemplazan las siguientes líneas:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 78%;"&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_00  : bit_vector(0 to 255) :=  x"00B1940C00B1940C00B1940C00B1940C00B1940C00B1940C00B1940C008E940C";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_01  : bit_vector(0 to 255) :=  x"00B1940C00B1940C00B1940C00B1940C00B1940C00B1940C00B1940C00B1940C";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_02  : bit_vector(0 to 255) :=  x"00B1940C00B1940C00B1940C00B1940C00B1940C00B1940C00B1940C013B940C";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_03  : bit_vector(0 to 255) :=  x"0039000000270023003200350038003B000000280022003100340037003A0000";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_04  : bit_vector(0 to 255) :=  x"0303030303030202020202020202010101010101010100200021003000330036";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_05  : bit_vector(0 to 255) :=  x"2010080402010606060606060606050505050505050504040404040404040303";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_06  : bit_vector(0 to 255) :=  x"2010080402018040201008040201804020100804020180402010080402018040";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_07  : bit_vector(0 to 255) :=  x"0000000000000500000100000000000000000000000080402010080402018040";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_08  : bit_vector(0 to 255) :=  x"BE1F241100000000000000000000000000000000000000000000000000000000";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_09  : bit_vector(0 to 255) :=  x"9631920D95D8C004BF0B9503EF0FE0F3E3E8E0B0E6A0E010BFCDBFDEE0DFEFCF";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_0A  : bit_vector(0 to 255) :=  x"940C0134940EF7E107B136AB921DC001E0B0E6A2E010BE1BF7C907B136A2F3C8";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_0B  : bit_vector(0 to 255) :=  x"00609180950800EC940EE0600060918000EC940EE061006091800000940C019A";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_0C  : bit_vector(0 to 255) :=  x"4F3F57262D9095C82FF92FE84F9F54862F932F82E0302F28950800C4940EE061";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_0D  : bit_vector(0 to 255) :=  x"95C896312DA095C84FFF5AE01FFF0FEEE0F02FE8F0A923882D8095C82FF32FE2";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_0E  : bit_vector(0 to 255) :=  x"2F952F84E0502F489508938C2B89918C9508938C23899590918CF42923662DB0";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_0F  : bit_vector(0 to 255) :=  x"4F5F57462D9095C82FF92FE84F9F54862F952F842D2095C82FF92FE84F9F5186";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_10  : bit_vector(0 to 255) :=  x"B58FF4213024C004778FB58FF4193023F0B12322F16923332D3095C82FF52FE4";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_11  : bit_vector(0 to 255) :=  x"E0F02FE3BD857D8FB585F4193025C005BF837D8FB783F4213021C00BBD8F7D8F";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_12  : bit_vector(0 to 255) :=  x"9508938C23899590918CF42923662DB095C896312DA095C84FFF59E21FFF0FEE";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_13  : bit_vector(0 to 255) :=  x"2411920FB60F920F921FCFFD00B3940E00BE940E0183940E9508938C2B89918C";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_14  : bit_vector(0 to 255) :=  x"006A9130006991B0006891A0006791900066918093BF93AF939F938F933F932F";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_15  : bit_vector(0 to 255) :=  x"939000669380006A93201DB11DA19601572DF020372D5F2D2F231DB11DA19601";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_16  : bit_vector(0 to 255) :=  x"1DB11DA19601006591B0006491A00063919000629180006993B0006893A00067";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_17  : bit_vector(0 to 255) :=  x"BE0F900F912F913F918F919F91AF91BF006593B0006493A00063939000629380";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_18  : bit_vector(0 to 255) :=  x"BD8E6081B58EBD8E6082B58EBF876081B787BF836084B78394789518901F900F";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_19  : bit_vector(0 to 255) :=  x"000000000000000DCFFF94F89508BD856081B585BD856082B585BD8F6081B58F";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_1A  : bit_vector(0 to 255) :=  x"0000000000000000000000000000000000000000000000000000000000000000";&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;     constant PM_Inst_RAM_Word0_INIT_1B  : bit_vector(0 to 255) :=  x"0000000000000000000000000000000000000000000000000000000000000000";&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El  programa sólo ocupa estas líneas, desde INIT_00 hasta INIT_19. El resto  de líneas se rellenan con ceros. La explicación de compilar programas  Arduino y convertirlos en este formato se hará más adelante.&lt;br /&gt;&lt;br /&gt;Botón derecho en cualquier fichero de la pestaña Project - Compile All. Mientras no se está familiarizado con un diseño es recomendable compilar todos los ficheros siempre. Cuando hay más confianza, es más rápido utilizar "Compile out-of-date".&lt;br /&gt;&lt;br /&gt;En el menú Simulate, seleccionar "Start Simulation". Se elige work.testbench y se dejan todas las opciones como están.&lt;br /&gt;&lt;br /&gt;Se añaden unas cuantas señales al visor de ondas tal y como se indica en la siguiente figura, haciendo click derecho en testbench, Add, To Wave, All items in region.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-3HJ-cvPHT6c/Tl3ru7AOOHI/AAAAAAAAAag/TYrXYm6vqOg/s1600/sim3.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5646928699137603698" src="http://1.bp.blogspot.com/-3HJ-cvPHT6c/Tl3ru7AOOHI/AAAAAAAAAag/TYrXYm6vqOg/s320/sim3.png" style="cursor: hand; cursor: pointer; display: block; height: 200px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Si no sale la ventana Wave, seleccionarla desde el menú View. La simulación debería hacer parpadear el pin 13 (pin 5 del puerto B).&lt;br /&gt;&lt;br /&gt;(Pendiente de publicar el resultado de la simulación.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Parte V - &lt;a href="http://pepevi.blogspot.com/2011/09/tutorial-emulacionsimulacion-de-arduino.html"&gt;Compilar programas Arduino para simulación&lt;/a&gt;&lt;br /&gt;&lt;a href="http://pepevi.blogspot.com/2011/09/tutorial-emulacionsimulacion-de-arduino_16.html"&gt;Índice del tutorial&lt;/a&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-5545085762233604729?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/5545085762233604729/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=5545085762233604729' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/5545085762233604729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/5545085762233604729'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2011/08/tutorial-emulacionsimulacion-de-arduino_6642.html' title='Tutorial emulación/simulación de Arduino en FPGA - Parte III'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-7WZ90MM6zB4/Tl3wzVOxLkI/AAAAAAAAAcI/BAVTNC5R8Og/s72-c/designimpl.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-1091210601020623667</id><published>2011-08-30T12:18:00.013+02:00</published><updated>2011-09-19T11:32:45.713+02:00</updated><title type='text'>Tutorial emulación/simulación de Arduino en FPGA - Parte II</title><content type='html'>En los siguientes capítulos del tutorial se va a describir la forma de simular un programa Arduino. El objetivo es ejecutar un sketch de Arduino sin utilizar la placa, emulando el microcontrolador en un ordenador.&lt;br /&gt;&lt;br /&gt;Para ello se puede utilizar ModelSIM o ISim de Xilinx. El Student Edition de ModelSIM está limitado y no se recomienda. Sin un ModelSIM de pago, utilizaremos ISim, que no es tan completo pero es gratuíto y suficiente para el cometido del tutorial.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/--Xxyqy0-m6A/Tl3uIwgI7iI/AAAAAAAAAa4/I5108aiw3b8/s1600/modelsim.PNG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5646931342018539042" src="http://3.bp.blogspot.com/--Xxyqy0-m6A/Tl3uIwgI7iI/AAAAAAAAAa4/I5108aiw3b8/s320/modelsim.PNG" style="cursor: hand; cursor: pointer; display: block; height: 193px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;span style="font-size: 78%; font-style: italic;"&gt;Captura general de ModelSIM&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-zO3JUgC3k60/Tl3uIwARa4I/AAAAAAAAAbA/4zHPox2jeIQ/s1600/isim1.PNG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5646931341884877698" src="http://4.bp.blogspot.com/-zO3JUgC3k60/Tl3uIwARa4I/AAAAAAAAAbA/4zHPox2jeIQ/s320/isim1.PNG" style="cursor: hand; cursor: pointer; display: block; height: 193px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;span style="font-size: 78%; font-style: italic;"&gt;Captura general de ISim&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: 100%; font-weight: bold;"&gt;¿Qué es simular un diseño de lógica reprogramable?&lt;/span&gt;&lt;br /&gt;La simulación en este tipo de software se realiza a muy bajo nivel, visualizando directamente señales digitales dentro del chip, no variables u objetos. El objetivo de la simulación es depurar y comprobar el correcto funcionamiento de un diseño antes de implementarlo físicamente en un chip, ya sea una FPGA o un circuito integrado de propósito concreto.&lt;br /&gt;&lt;br /&gt;El funcionamiento de las FPGA u otros dispositivos hardware de lógica reconfigurable está fuera del propósito de este tutorial pero, resumiendo, son circuitos integrados que se configuran para actuar como cualquier otro circuito integrado. Esta versatilidad se paga en precio y en algunos casos, rendimiento.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;¿Cómo se carga un sketch en el modelo emulado?&lt;/span&gt;&lt;br /&gt;La FPGA utilizada tiene unos cuantos bloques de memoria BRAM. La memoria de programa y datos del microcontrolador también se van a emular, utilizando estos bloques. El código compilado de un sketch se transforma al formato apropiado con una herramienta de Xilinx llamada data2mem.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Uso de Xilinx ISE Webpack&lt;/span&gt;&lt;br /&gt;Vayamos a simular con ModelSIM o ISim, antes hay que cargar el proyecto en Xilinx ISE.&lt;br /&gt;&lt;br /&gt;El proyecto AVR8 &lt;a href="http://papilio.cc/index.php?n=Papilio.Download"&gt;se baja&lt;/a&gt; y descomprime en una carpeta temporal. En el momento de escribir este tutorial la última versión es &lt;span style="font-weight: bold;"&gt;GadgetFactory Arduino Soft Core v1.6-0&lt;/span&gt;. Se abre el Project Navigator y se crea un nuevo proyecto. En este paso hay que seleccionar un tipo de FPGA. Si se va a utilizar más tarde la Papilio, habrá que elegir por ejemplo XC3S500E para la Papilio 500k. También es importante elegir en este punto (aunque luego se puede cambiar) el simulador. ModelSIM si se cuenta con una versión de pago e ISim, si no.&lt;br /&gt;&lt;br /&gt;En el menú Project se elige "Add copy of source". Todos los ficheros de la carpeta sources del con extensión vhd y ucf se añaden. Son unas cuantas carpetas y hay que ir una por una.&lt;br /&gt;&lt;br /&gt;En la ventana Design, con la opción Implementation seleccionada, se genera un árbol de instancias de componentes y componentes sin instanciar: xc3s500e-4vq100 es la FPGA. Papilio_AVR8 es la instancia de la Arduino, o del microcontrolador de la Arduino.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-SaZ0sSIYVFI/Tl3xrEzZCnI/AAAAAAAAAcQ/kduLwgIPRJk/s1600/designimpl.PNG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5646935230118431346" src="http://1.bp.blogspot.com/-SaZ0sSIYVFI/Tl3xrEzZCnI/AAAAAAAAAcQ/kduLwgIPRJk/s320/designimpl.PNG" style="cursor: hand; cursor: pointer; display: block; height: 250px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;¿Significa esto que es posible instanciar varias Arduinos en una sola FPGA? Sí, en ésta en concreto, caben cuatro.&lt;br /&gt;&lt;br /&gt;FrqDiv, XDM*** y XPM*** son componentes que se han añadido y no se han instanciado. El resto de componentes cuelgan de Papilio_AVR8. Al expandir su rama salen una serie de componentes instanciados y otros ficheros de configuración. Hay dos que salen con una interrogación, Inst_DCM32to16 y papilio_core_template_COMP. Uno está en la carpeta descomprimida previamente scripts\XilinxISE\ipcore_dir y otro en submodules\papilio_core_template\sources. Se añaden.&lt;br /&gt;&lt;br /&gt;Para entender mejor el microcontrolador es recomendable seleccionar Papilio_AVR8 en el árbol de diseño y seleccionar el proceso "View RTL Schematic", después seleccionar "Start with a schematic of the top-level block".&lt;br /&gt;&lt;br /&gt;Se generará el siguiente diagrama:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-MRJQ0ZgtMhU/Tl3vPoQsCmI/AAAAAAAAAbQ/Lu4VqTYzHK0/s1600/schem1.PNG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5646932559576959586" src="http://2.bp.blogspot.com/-MRJQ0ZgtMhU/Tl3vPoQsCmI/AAAAAAAAAbQ/Lu4VqTYzHK0/s320/schem1.PNG" style="cursor: hand; cursor: pointer; display: block; height: 320px; margin: 0px auto 10px; text-align: center; width: 230px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Haciendo doble click sobre un bloque, se abre. Abriendo Papilio_AVR8 se puede empezar a ver las tripas del microcontrolador. Control + rueda del ratón hace zoom.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-bcPRb5LOnLQ/Tl3vPyrUPDI/AAAAAAAAAbY/gKbyj5X-BEQ/s1600/schem2.PNG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5646932562373000242" src="http://3.bp.blogspot.com/-bcPRb5LOnLQ/Tl3vPyrUPDI/AAAAAAAAAbY/gKbyj5X-BEQ/s320/schem2.PNG" style="cursor: hand; cursor: pointer; display: block; height: 320px; margin: 0px auto 10px; text-align: center; width: 198px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Es interesante ver que hay un componente llamado AVR_Core_Inst (instancia de AVR_Core) que gestiona todos los buses, enables, etc. Sus periféricos son módulos como PM_Inst que es la memoria de programa (donde vamos a cargar el sketch) o los módulos de RAM utilizados en la ejecución de programas, en principio vacíos.  DCM32to16 convierte el reloj de 32Mhz de la Papilio en 16Mhz, que es la frecuencia correcta para Arduino.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-js2PZa9dDeU/Tl3vQAFr5BI/AAAAAAAAAbg/tdffGk1ypPg/s1600/schem3avrcore.PNG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5646932565973263378" src="http://3.bp.blogspot.com/-js2PZa9dDeU/Tl3vQAFr5BI/AAAAAAAAAbg/tdffGk1ypPg/s320/schem3avrcore.PNG" style="cursor: hand; cursor: pointer; display: block; height: 320px; margin: 0px auto 10px; text-align: center; width: 215px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-BBm_p74TuRs/Tl3vQcsw8cI/AAAAAAAAAbo/vzJklTE6NRg/s1600/schem4.PNG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5646932573653365186" src="http://1.bp.blogspot.com/-BBm_p74TuRs/Tl3vQcsw8cI/AAAAAAAAAbo/vzJklTE6NRg/s320/schem4.PNG" style="cursor: hand; cursor: pointer; display: block; height: 230px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;También es interesante fijarse en que hay diferentes tipos de puertos para cada instancia de puerto en la Papilio.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-y548lDxn4m8/Tl3vQiPbJfI/AAAAAAAAAbw/45pzWm-AJYY/s1600/schem5.PNG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5646932575140914674" src="http://1.bp.blogspot.com/-y548lDxn4m8/Tl3vQiPbJfI/AAAAAAAAAbw/45pzWm-AJYY/s320/schem5.PNG" style="cursor: hand; cursor: pointer; display: block; height: 320px; margin: 0px auto 10px; text-align: center; width: 278px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El estudio gráfico de un diseño hardware con esta herramienta es bastante más sencillo que analizar el código VHDL por lo que es recomendable intentar entender qué hace cada módulo si más tarde se va a modificar el hardware para adaptarlo a alguna necesidad concreta.&lt;br /&gt;&lt;br /&gt;Siguientes partes:&lt;br /&gt;Parte III - &lt;a href="http://pepevi.blogspot.com/2011/08/tutorial-emulacionsimulacion-de-arduino_6642.html"&gt;Simulación con ModelSIM&lt;/a&gt; (si se usa una versión de pago)&lt;br /&gt;Parte IV - &lt;a href="http://pepevi.blogspot.com/2011/08/tutorial-emulacionsimulacion-de-arduino_31.html"&gt;Simulación con ISim&lt;/a&gt; (integrado en Xilinx ISE)&lt;br /&gt;&lt;a href="http://pepevi.blogspot.com/2011/09/tutorial-emulacionsimulacion-de-arduino_16.html"&gt;Índice del tutorial&lt;/a&gt;&amp;nbsp; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-1091210601020623667?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/1091210601020623667/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=1091210601020623667' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/1091210601020623667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/1091210601020623667'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2011/08/tutorial-emulacionsimulacion-de-arduino_30.html' title='Tutorial emulación/simulación de Arduino en FPGA - Parte II'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/--Xxyqy0-m6A/Tl3uIwgI7iI/AAAAAAAAAa4/I5108aiw3b8/s72-c/modelsim.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-5339309062842813966</id><published>2011-08-25T09:51:00.017+02:00</published><updated>2011-09-19T11:28:15.872+02:00</updated><title type='text'>Tutorial emulación/simulación de Arduino en FPGA - Parte I</title><content type='html'>&lt;span style="font-size: 130%;"&gt;Introducción&lt;/span&gt;&lt;br /&gt;Hay que entender que el hardware de Arduino es un microcontrolador muy común, con su memoria, multiplexores, registros, buses, etc. No es más que un circuito digital. En sitios como &lt;a href="http://opencores.org/"&gt;opencores.org&lt;/a&gt; podemos encontrar &lt;a href="http://en.wikipedia.org/wiki/Register_transfer_level"&gt;modelos RTL&lt;/a&gt; de muchos microprocesadores. Es una descripción abstracta de lo que un circuito digital hace.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-hBJYAFn-WtY/TlZgO0k6yNI/AAAAAAAAAZY/MLhgcGPGsUc/s1600/atmega2560.jpg"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5644804990703421650" src="http://2.bp.blogspot.com/-hBJYAFn-WtY/TlZgO0k6yNI/AAAAAAAAAZY/MLhgcGPGsUc/s320/atmega2560.jpg" style="cursor: hand; cursor: pointer; display: block; height: 259px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;a href="http://www.flylogic.net/blog/"&gt;ATmega2560 por dentro&lt;/a&gt; (físicamente)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Ejemplo: un inversor digital da a su salida el valor negado de la entrada. En esta descripción abstracta no se habla de tecnología utilizada de transistores, de encapsulados o de medidas de rendimiento como el tiempo de respuesta.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-WW-SImuF1H0/TlYNUCrRK9I/AAAAAAAAAZI/FO7ADrWRTSs/s1600/inversor.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5644713820922391506" src="http://2.bp.blogspot.com/-WW-SImuF1H0/TlYNUCrRK9I/AAAAAAAAAZI/FO7ADrWRTSs/s400/inversor.png" style="cursor: hand; cursor: pointer; display: block; height: 80px; margin: 0px auto 10px; text-align: center; width: 150px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: 85%;"&gt;Representación de un modelo de inversor&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-6R9Kq_fvs1g/TlYNvpcJXgI/AAAAAAAAAZQ/YGDqhceQgHU/s1600/encapsulado.jpg"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5644714295184416258" src="http://4.bp.blogspot.com/-6R9Kq_fvs1g/TlYNvpcJXgI/AAAAAAAAAZQ/YGDqhceQgHU/s320/encapsulado.jpg" style="cursor: hand; cursor: pointer; display: block; height: 63px; margin: 0px auto 10px; text-align: center; width: 80px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Seis inversores en un encapsulado&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Si cada componente de un microcontrolador se define de esta forma y se establecen las conexiones entre los cientos o miles de componentes, se puede crear un modelo RTL bastante complejo pero funcional.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-t21rWrsPlHw/TlYM7LGl2oI/AAAAAAAAAZA/dbsMsMLIDx0/s1600/rtlgeneral.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5644713393687747202" src="http://2.bp.blogspot.com/-t21rWrsPlHw/TlYM7LGl2oI/AAAAAAAAAZA/dbsMsMLIDx0/s400/rtlgeneral.png" style="cursor: hand; cursor: pointer; display: block; height: 345px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Representación esquemática de componentes y conexiones en un ATmega103 modificado&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Un modelo RTL se crea con lenguajes de descripción de hardware (HDL) como son VHDL o Verilog.&lt;/li&gt;&lt;li&gt;Un modelo RTL sirve para simular el comportamiento de un circuito hardware con ayuda de un ordenador.&lt;/li&gt;&lt;/ul&gt;Es la forma de diseñar hardware hoy. No puede haber un prototipo físico en cada cambio que haya en el proceso de diseño de un microprocesador o microcontrolador.&lt;br /&gt;&lt;br /&gt;Una FPGA es un dispositivo hardware que se configura con un modelo RTL. Esto significa que es posible hacer que una FPGA se comporte como un microcontrolador determinado y, por lo tanto, hacer que se comporte como cualquier circuito digital. Este ejercicio se llama emulación.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;El objetivo de este tutorial es emular un microcontrolador ATmega103 en una FPGA y hacer que ejecute programas Arduino. &lt;/li&gt;&lt;li&gt;Además, se optimizarán programas para crear procesos paralelos y se personalizará el hardware para, por ejemplo, crear salidas analógicas PWM en cualquier pin.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size: 130%; font-weight: bold;"&gt;Software utilizado&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 100%;"&gt;&lt;a href="http://www.xilinx.com/support/download/index.htm"&gt;Xilinx ISE Webpack&lt;/a&gt; 13.1 para sintetizar el diseño. Incluye ISim para simularlo.&lt;br /&gt;Opcional: &lt;a href="http://www.model.com/"&gt;ModelSIM&lt;/a&gt; SE o PE para simularlo (no sirve el Student Edition)&lt;/span&gt;&lt;a class="urllink" href="https://github.com/GadgetFactory/Arduino-Soft-Core/zipball/v1.6" rel="nofollow" title=""&gt;AVR8 Source Code V1.6&lt;/a&gt;&lt;span style="font-size: 100%;"&gt;. Código fuente en VHDL del ATmega103 modificado por Gadget Factory.&lt;/span&gt;&lt;span style="font-size: 100%;"&gt;&lt;br /&gt;&lt;a href="http://papilio.cc/index.php?n=Papilio.Download"&gt;Butterfly Arduino IDE&lt;/a&gt;. IDE de Arduino 0018 modificado por Gadget Factory.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pepevi.blogspot.com/2011/08/tutorial-emulacionsimulacion-de-arduino.html"&gt;&lt;/a&gt;&lt;br /&gt;Parte II - &lt;a href="http://pepevi.blogspot.com/2011/08/tutorial-emulacionsimulacion-de-arduino_30.html"&gt;Emulación del modelo RTL de Arduino&lt;/a&gt;&lt;br /&gt;&lt;a href="http://pepevi.blogspot.com/2011/09/tutorial-emulacionsimulacion-de-arduino_16.html"&gt;Índice del tutorial&lt;/a&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-5339309062842813966?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/5339309062842813966/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=5339309062842813966' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/5339309062842813966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/5339309062842813966'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2011/08/tutorial-emulacionsimulacion-de-arduino.html' title='Tutorial emulación/simulación de Arduino en FPGA - Parte I'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-hBJYAFn-WtY/TlZgO0k6yNI/AAAAAAAAAZY/MLhgcGPGsUc/s72-c/atmega2560.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-7037835339106691462</id><published>2011-05-24T10:28:00.002+02:00</published><updated>2011-05-24T11:40:47.113+02:00</updated><title type='text'>El DoD siempre por delante</title><content type='html'>Cuando me tengo que presentar -como últimamente en clases y seminarios- choca un poco que defienda con argumentos de fanático el sofware y hardware libres pero que profesionalmente me dedique a la defensa, el ámbito más cerrado que existe.&lt;br /&gt;&lt;br /&gt;Esto puede cambiar ya que hace una semana (16/05/2011) se publicó un informe desde el DoD (Departamento de Defensa de los EE.UU.) llamado "Open Technology Development (OTD): Lessons Learned &amp; Best Practices for Military Software". &lt;a href="http://dangerousprototypes.com/2011/05/24/us-dod-gives-thumbs-up-to-open-source/"&gt;Dangerous Prototypes se ha hecho eco&lt;/a&gt; del mismo y destaca un párrafo que voy a traducir libremente:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Imagina que sólamente el fabricante de un rifle tuviera permiso para limpiar, arreglar, modificar o mejorar ese rifle. Las fuerzas armadas se encuentran muy a menudo en esta situación con fondos de los impuestos del contribuyente y software desarrollado por un proveedor: un proveedor con un monopolio de la información sobre un sistema software militar y con el control de su código fuente. Esto es óptimo sólo para el proveedor pero crea ineficiencias e ineficacia para el gobierno, reduce oportunidades para el tejido industrial, limita severamente la competencia de actualizaciones de software, merma recursos que pueden ser utilizados para mejores efectos y malgasta los fondos públicos.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;En general es importante simplificar el uso, modificación y distribución. Si se necesita un equipo de abogados para determinar si están establecidos los derechos adecuados para modificar un programa, no va a modificarse.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;El &lt;a href="http://www.oss-institute.org/OTD2011/OTD-lessons-learned-military-FinalV1.pdf"&gt;documento&lt;/a&gt; se compone de 68 páginas en las que se habla de utilizar estándares libres, formatos, herramientas de gestión, arquitecturas... y cómo llevar a cabo una selección de proveedores o soluciones Open-Source.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-7037835339106691462?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/7037835339106691462/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=7037835339106691462' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/7037835339106691462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/7037835339106691462'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2011/05/el-dod-siempre-por-delante.html' title='El DoD siempre por delante'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-7257759325192349804</id><published>2011-05-20T09:58:00.003+02:00</published><updated>2011-05-20T12:49:51.250+02:00</updated><title type='text'>Algunos números sobre Democracia Real</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-v-okvdUvXjc/TdZFCLd5pXI/AAAAAAAAATM/4vaVnzPiuVw/s1600/elecciones.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 278px;" src="http://2.bp.blogspot.com/-v-okvdUvXjc/TdZFCLd5pXI/AAAAAAAAATM/4vaVnzPiuVw/s400/elecciones.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5608746289676789106" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Me pregunto si los miles de personas que se están reuniendo por toda España han hecho las cuentas de lo que piden. A diferencia de las manifestaciones a las que estamos acostumbrados, que aburren, ésta tiene muy bien definidas sus propuestas.&lt;br /&gt;&lt;br /&gt;Centrándonos en el concepto "un español, un voto" que se pide (aunque no literalmente en las &lt;a href="http://webcache.googleusercontent.com/search?q=cache:uO-3WNX5sjsJ:democraciarealya.es/%3Fpage_id%3D234+democracia+real&amp;cd=4&amp;hl=en&amp;ct=clnk&amp;client=firefox-a&amp;source=www.google.com"&gt;propuestas&lt;/a&gt;) en contraposición al método actual de &lt;a href="http://es.wikipedia.org/wiki/Sistema_electoral_espa%C3%B1ol"&gt;reparto de escaños&lt;/a&gt; y posterior aplicación del &lt;a href="http://es.wikipedia.org/wiki/Sistema_D%27Hondt"&gt;método de D'Hont&lt;/a&gt;, he sacado &lt;a href="https://spreadsheets.google.com/spreadsheet/ccc?key=0AsGOpsTCTrKHdGVVMGxnSXNmWVZuNTFZV1JwYndwUlE&amp;hl=en_US"&gt;algunos datos&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Primero, para conseguir un escaño se necesitaron (año 2008) 36.000 personas en Teruel. En Madrid o Barcelona, 124.000. Al hacer un reparto equitativo (33 millones de votos / 350 diputados), 96.000 personas se necesitarían por asiento en el congreso, de cualquier provincia. &lt;br /&gt;&lt;br /&gt;La forma de eliminar estas diferencias es meter todos los votos en un saco único. IU pasaría de 2 a 10 diputados y CiU se quedaría casi igual con 11. PNV bajaría 2 y los grandes castigados serían PP y PSOE. (Ver &lt;a href="https://spreadsheets.google.com/spreadsheet/ccc?key=0AsGOpsTCTrKHdGVVMGxnSXNmWVZuNTFZV1JwYndwUlE&amp;hl=en_US"&gt;Hoja de cálculo, Hoja de Partidos&lt;/a&gt; y Disclaimer abajo)&lt;br /&gt;&lt;br /&gt;Es bastante evidente que el actual es un sistema que por un lado no afecta demasiado a partidos minoritarios de provincias y castiga, y mucho, a los partidos minoritarios nacionales. &lt;br /&gt;&lt;br /&gt;Por otro lado beneficia a las circunscripciones (las provincias, vamos) con pocos habitantes porque todas tienen, de regalo, dos escaños (excepto Ceuta y Melilla, con 1) pero ¿beneficia a sus ciudanos? Si aplicamos el concepto "un español, un voto" estaríamos dando a Madrid y Barcelona un poder equivalente a diez diputados más de lo que tiene ahora. El sistema de reparto actual es, en principio, solidario con las provincias pequeñas.&lt;br /&gt;&lt;br /&gt;Si aplicamos más allá el concepto estaríamos eliminando el de las circunscripciones y votaríamos las propuestas a nivel nacional por lo que un voto de alguien de Melilla o Teruel sería útil, incluso el de un partido pequeño. Igual de útil que en Madrid. La consecuencia es que estaríamos hablando de quitar protagonismo a las provincias y por lo tanto a las autonomías. ¿Están de acuerdo con esto los nacionalistas? Viendo los resultados, excepto quizá en el caso del PNV, creo que sí.&lt;br /&gt;&lt;br /&gt;El único perjudicado sería el partido grande estatal. Ni las provincias pequeñas ni las grandes sufren necesariamente. Para mí tiene sentido que unas elecciones estatales no pasen por las autonomías. Intentaré leer no obstante opiniones contrarias.&lt;br /&gt;&lt;br /&gt;Disclaimer: He sacado los datos de una &lt;a href="http://actualidad.abc.es/elecciones-2008/resultados/congreso/total-estatal"&gt;fuente bastante poco neutral&lt;/a&gt; porque no es fácil encontrar la tabla de un medio oficial, pero &lt;a href="http://www.larepublica.es/spip.php?article22789"&gt;comprobando algunos datos&lt;/a&gt;, parece que son correctos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-7257759325192349804?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/7257759325192349804/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=7257759325192349804' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/7257759325192349804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/7257759325192349804'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2011/05/algunos-numeros-sobre-democracia-real.html' title='Algunos números sobre Democracia Real'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-v-okvdUvXjc/TdZFCLd5pXI/AAAAAAAAATM/4vaVnzPiuVw/s72-c/elecciones.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-5070538196873972966</id><published>2011-05-17T10:12:00.004+02:00</published><updated>2011-05-17T13:26:33.260+02:00</updated><title type='text'>El hardware reconfigurable libre</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-JUN4INnjcQw/TdJJf7DXIVI/AAAAAAAAAS0/xUEg7XlOfps/s1600/fpga.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 202px;" src="http://3.bp.blogspot.com/-JUN4INnjcQw/TdJJf7DXIVI/AAAAAAAAAS0/xUEg7XlOfps/s320/fpga.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5607625298806251858" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El Hardware Libre es complicado de definir. En este caso, "libre" no es "gratis" ya que nadie regala Arduinos. Además, en pocos casos todos los componentes de un objeto libre son libres. La Arduino tiene circuitos integrados cuyos esquemas conocemos pero no son del dominio público, ni su método de fabricación. Además, el súmmum del Hardware Libre sería desarrollar la obra con herramientas libres.&lt;br /&gt;&lt;br /&gt;A efectos prácticos no creo que utilizar componentes o herramientas libres nos dé una ventaja real. Creo que &lt;span style="font-style: italic;"&gt;libertad &lt;/span&gt;en cuanto a diseño o fabricación se debería traducir por &lt;span style="font-style: italic;"&gt;libertad de elección&lt;/span&gt;. Si nuestro fabricante de PCBs sube los precios o baja la calidad podemos cambiarlo o hacer las placas nosotros. ¿Qué ocurre si un fabricante de microcontroladores declara obsoleto el que estamos utilizando?&lt;br /&gt;&lt;br /&gt;En aeronáutica detectaron este problema hace bastante tiempo y ya lo han solucionado: Usar FPGAs. Estos chips destacan por su versatilidad. Son capaces de configurarse como un microcontrolador, como un controlador de VGA, como un host USB, como una máquina de estados, como cualquier circuito digital combinacional y secuencial. Todo esto además lo puede hacer a la vez y de forma independiente. Sus miles de puertas lógicas se configuran al gusto de programador para hacer lo que necesite. El precio de cada &lt;span style="font-style: italic;"&gt;chip &lt;/span&gt;es alto: una gama media está en torno a 20€. &lt;a href="http://es.rs-online.com/web/search/searchBrowseAction.html?method=retrieveTfg&amp;amp;Nty=1&amp;amp;Ntx=mode%2bmatchallpartial&amp;amp;Ntk=I18NAll&amp;amp;Ns=I18NPrc1_es&amp;amp;Nr=AND%28avl:es,searchDiscon_es:N%29&amp;amp;N=4294577097&amp;amp;Nso=0&amp;amp;binCount=210&amp;amp;binCount=210&amp;amp;Ntt=fpga&amp;amp;No=200"&gt;En RS tienen un precio desde 2 hasta 7000€&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Esta cualidad camaleónica permite a las FPGA comportarse como cualquier microcontrolador, microprocesador o memoria del mercado (en &lt;a href="http://opencores.org"&gt;opencores.org&lt;/a&gt; existen bastantes ejemplos de esto). Por lo tanto, FPGAs de familias o marcas distintas pueden emular un mismo microcontrolador. A nivel físico también son tremendamente versátiles ya que cada pin puede emular comportamientos eléctricos de varios estándares o tecnologías.&lt;br /&gt;&lt;br /&gt;La desventaja es el precio y la distribución de los pines, que no es siempre la misma por lo que cambiar una FPGA por otra requiere cambiar la placa casi seguro.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-5070538196873972966?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/5070538196873972966/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=5070538196873972966' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/5070538196873972966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/5070538196873972966'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2011/05/el-hardware-reconfigurable-libre.html' title='El hardware reconfigurable libre'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-JUN4INnjcQw/TdJJf7DXIVI/AAAAAAAAAS0/xUEg7XlOfps/s72-c/fpga.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-7416078341867983840</id><published>2011-05-11T10:12:00.004+02:00</published><updated>2011-05-11T15:39:12.317+02:00</updated><title type='text'>Google lanza Android Open Accesory Development Kit basado en Arduino</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-mug9BGpAh-U/TcqM6CaSCBI/AAAAAAAAASs/TxTfWKs8jVQ/s1600/20110511ads.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 229px;" src="http://3.bp.blogspot.com/-mug9BGpAh-U/TcqM6CaSCBI/AAAAAAAAASs/TxTfWKs8jVQ/s320/20110511ads.jpg" alt="" id="BLOGGER_PHOTO_ID_5605447614923409426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Lo que presentó Google ayer es un estándar para comunicación entre un dispositivo Android y otro dispositivo electrónico. Además, lo que se muestra en la imagen es un kit de desarrollo basado en Arduino.&lt;br /&gt;&lt;br /&gt;Ya investigué esta posibilidad a la que veía muchísimo potencial y que usé para obtener datos de brújula y GPS de un móvil Android utilizando una &lt;a href="http://code.google.com/p/android-serialport-api/"&gt;librería muy sencilla&lt;/a&gt; pero que requería recompilar el kernel de un HTC Magic y enviar bits a través de una interfaz hardware de conversión de niveles que hice con un transistor y unas resistencias. Bastante laborioso.&lt;br /&gt;&lt;br /&gt;Después Sparkfun sacó a la venta &lt;a href="http://www.sparkfun.com/products/10585"&gt;IOIO&lt;/a&gt;, un hardware y una librería para Android que facilita el paso de datos desde un circuito electrónico al teléfono. El creador de esta plataforma daba las gracias a Google por toda la ayuda que le habían prestado a la hora de programar la parte de Android.&lt;br /&gt;&lt;br /&gt;¿Qué hacía Google interesándose en un proyecto así? En ese momento me pregunté por qué no habían usado Arduino como interfaz. No me gustaba que, de dar el paso al hardware, lo hicieran sin utilizar estándares de facto como Arduino. No obstante, no se ha vuelto a hablar mucho de IOIO. Quizá no haya pasado suficiente tiempo.&lt;br /&gt;&lt;br /&gt;Supongo que la evolución dentro de Google de ese desarrollo ha sido lo que presentaron ayer, el ADK (en imagen), una Arduino Mega modificada más una Shield para desarrollar aplicaciones.&lt;br /&gt;&lt;br /&gt;Hay una interesante charla en &lt;a href="https://groups.google.com/forum/?pli=1#%21topic/ioio-users/3JDn6XZJ9aE"&gt;este hilo de IOIO&lt;/a&gt; sobre las diferencias entre una y otra plataforma. En cualquier caso, &lt;span style="font-weight: bold;"&gt;lo importante es la parte software&lt;/span&gt; que corre en Android y &lt;span style="font-weight: bold;"&gt;haber definido un estándar&lt;/span&gt; para, por fín, dar paso al futuro, donde la integración de dispositivos está libre de patentes, protocolos secretos, conectores imposibles y demás manzanas mordidas.&lt;br /&gt;&lt;br /&gt;Esto no implica la creación de un interfaz entre Android y Arduino, aunque ese ha sido el mensaje que más he visto repetido. &lt;a href="http://www.youtube.com/watch?v=HXhgJvFQ6v8"&gt;Se podrá utilizar este estándar con microcontroladores PIC de MicroChip&lt;/a&gt; por ejemplo. Han utilizado, convenientemente, Arduino para su kit hardware de desarrollo, pero no significa que la máquina de gimnasio a la que se conecte el móvil deba llevar una Arduino ni que haya que conectar necesariamente el mando de la XBOX a una Arduino para utilizarlo en juegos en Android (como vimos en el &lt;a href="http://www.youtube.com/watch?v=OxzucwjFEEs"&gt;vídeo de Google I/O&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Lo que me apetece ahora es ver cómo las empresas con visión abren su hardware para utilizar este estándar y, sin pagar licencias ni pedir permiso a nadie, inventan aparatos que complementan la experiencia de usar un sistema operativo abierto tan increíble como Android.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-7416078341867983840?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/7416078341867983840/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=7416078341867983840' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/7416078341867983840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/7416078341867983840'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2011/05/google-lanza-android-open-accesory.html' title='Google lanza Android Open Accesory Development Kit basado en Arduino'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-mug9BGpAh-U/TcqM6CaSCBI/AAAAAAAAASs/TxTfWKs8jVQ/s72-c/20110511ads.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-4079183617870523301</id><published>2011-04-11T15:46:00.003+02:00</published><updated>2011-04-11T16:02:50.901+02:00</updated><title type='text'>Taller de electrónica para creación artística @ UC3M</title><content type='html'>El 27 de abril empezaremos &lt;a href="http://javiernoguerol.com"&gt;Javier&lt;/a&gt; y yo a impartir, de nuevo, el primer taller de electrónica que hicimos en el &lt;a href="http://escopica.net"&gt;Aula de Propulsión Escópica&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Fueron cinco días de un esfuerzo mental y creativo brutal donde lo más destacable fue la gente que conocimos, de inquietudes peculiares.&lt;br /&gt;&lt;br /&gt;Aunque no podemos recrear exactamente las mismas condiciones nos han llamado de la Universidad por lo que tendremos muchos más recursos.&lt;br /&gt;&lt;br /&gt;Hoy (11 de abril) voy a presentar el taller en Leganés a las 17:30. Inscripción y más información en &lt;a href="http://control.escopica.net"&gt;http://control.escopica.net&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-2YR3jNumRI0/TaMJvhNarcI/AAAAAAAAASQ/l_Dqkxh2RKk/s1600/cartel.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 285px; height: 400px;" src="http://2.bp.blogspot.com/-2YR3jNumRI0/TaMJvhNarcI/AAAAAAAAASQ/l_Dqkxh2RKk/s400/cartel.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5594325874097434050" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-4079183617870523301?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/4079183617870523301/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=4079183617870523301' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/4079183617870523301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/4079183617870523301'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2011/04/taller-de-electronica-para-creacion.html' title='Taller de electrónica para creación artística @ UC3M'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-2YR3jNumRI0/TaMJvhNarcI/AAAAAAAAASQ/l_Dqkxh2RKk/s72-c/cartel.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-8072992120804837228</id><published>2011-03-24T11:55:00.006+01:00</published><updated>2011-03-24T13:47:51.489+01:00</updated><title type='text'>Tarjeta de crédito + extranjero = FAIL</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-aGo4gHp51No/TYslg0TQWyI/AAAAAAAAASA/psdQcXSf7m4/s1600/card.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 230px;" src="http://1.bp.blogspot.com/-aGo4gHp51No/TYslg0TQWyI/AAAAAAAAASA/psdQcXSf7m4/s320/card.jpg" alt="" id="BLOGGER_PHOTO_ID_5587601008408681250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;En febrero estuve de vacaciones en Nueva York y, como confío en la tecnología y en la globalización, me llevé poco dinero en dólares para intentar pagar todo con tarjeta de débido y crédito. El plan, erróneo, era llevar una de débito para las compras propias, otra de débito con cargo a una cuenta compartida con mi novia y la de crédito, para pagar el hotel. Con Wi-Fi en el hotel puedo ir vigilando los cobros y en el improbable caso de tener que reclamar algo, poder actuar allí.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Según leí, el sistema de pago con tarjeta de débito internacional está basado en que desde USA hacen la petición a mi banco en España. Es éste el que autoriza y se hace la transacción. En ese momento se debería reflejar el cargo a mi cuenta, ya que mi banco recibe y autoriza la información.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Nada más lejos, el primer problema es que &lt;b&gt;los pagos con tarjeta de débido se reflejan en la cuenta en unos días&lt;/b&gt;. Para más humor y por lo que he visto,&lt;b&gt;el número de días es aleatorio&lt;/b&gt;. (Aleatorio para mí, está claro que los bancos/Visa saben muy bien cuánto tiempo juegan con el dinero.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Un concepto poco intuitivo es el de la "&lt;b&gt;autorización&lt;/b&gt;". Por lo visto es posible que un establecimiento pida dinero al banco/Visa y por lo que he entendido éste se "guarda" por si es necesario hacer el pago. De pronto apareció en la web de mi banco dos saldos: el real y el disponible. Hasta ahora no les había prestado atención. Las autorizaciones sirven, por ejemplo, para garantizar que un hotel se va a pagar aunque te des la fuga sin hacer el &lt;i&gt;check-out&lt;/i&gt;. &lt;b&gt;¿Qué diferencia hay entre eso o que me hagan el cargo? Ninguna&lt;/b&gt;. Al menos para mí, ya que yo no puedo disponer del dinero autorizado por lo que es como si no lo tuviera. Supongo que para el hotel es más fácil cancelar la autorización que devolver dinero, pero al usuario sólo le confunde. De hecho, los establecimientos dejan caducar la autorización, más que cancelarla.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Dos ejemplos de la poca prudencia de los establecimientos al utilizar la tarjeta:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;En USA se suele pagar un 16-20% de propina en los restaurantes. Como no es precisamente calderilla es bastante común pagarla con la tarjeta. Este es el procedimiento: pides la cuenta, das la tarjeta y te traen un ticket para firmar en el que puedes añadir la propina a mano. No hace falta volver a dar la tarjeta, ya puedes irte. Esto genera dos operaciones en tu tarjeta de crédito/débito, primero una autorización por el valor de la cuenta y después un cargo con la propina añadida. En el caso de un restaurante mexicano (&lt;span style="font-style: italic;"&gt;Sin Igual&lt;/span&gt;, NYC), aparecieron dos cargos y cancelaron el primero. El primer cargo fue rápido, el segundo tardó un par de días y la cancelación del primero una semana. &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-sMBRbqxMkoU/TYsllJ-rBfI/AAAAAAAAASI/7B7CVRqjNrg/s1600/tip.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-sMBRbqxMkoU/TYsllJ-rBfI/AAAAAAAAASI/7B7CVRqjNrg/s320/tip.jpg" alt="" id="BLOGGER_PHOTO_ID_5587601082947405298" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;En el hotel (Wingate by Windham Manhattan) utilizaron mi tarjeta de sparring. Al entrar me hicieron una autorización de toda la reserva, con lo que dejaron el saldo disponible tiritando. En el check-out hicieron el cargo y se rechazó, porque la autorización seguía ocupando casi todo el saldo disponible. No me dijeron nada de esto y después siguieron probando cosas con mi tarjeta (¡y ya me había ido!). Consiguieron hacer un cargo de 1000 dólares, cuando sólo tenían que pasar 600. Les llamé y me dijeron que ya estaba anulado, pero tardaría en llegarme la cancelación. Tardó una semana y me devolvieron menos euros de lo que me habían cobrado. ¿Por qué? Porque el banco/Visa/quien sea se lleva comisión de cada transacción con lo que el hotel devuelve 1000 dólares pero yo veo 950. He perdido 50 dólares sin comerlo ni beberlo. Y no puedo reclamar al hotel.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Mi sugerencia: conservar todos los tickets, pagar la propina en metálico y preguntar a los establecimientos como el hotel, el del coche de alquiler y los de otros pagos grandes antes de darles la tarjeta.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;El día que un banco sea transparente con sus operaciones y tenga una web amigable (lo que parecía que iba a pasar con PayPal), estaré muy contento de contratar y pagar por sus servicios. Hasta entonces, mejor pagar con camellos.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-8072992120804837228?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/8072992120804837228/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=8072992120804837228' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/8072992120804837228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/8072992120804837228'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2011/03/tarjeta-de-credito-extranjero-fail.html' title='Tarjeta de crédito + extranjero = FAIL'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-aGo4gHp51No/TYslg0TQWyI/AAAAAAAAASA/psdQcXSf7m4/s72-c/card.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-9135715086607574667</id><published>2011-01-31T11:44:00.004+01:00</published><updated>2011-01-31T15:46:32.418+01:00</updated><title type='text'>Homeopatía</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.1023.org.uk/"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 200px; height: 112px;" src="http://2.bp.blogspot.com/_5QB2H105vuU/TUabGOnV1WI/AAAAAAAAARU/UmD3oU1wIKU/s320/logo.png" alt="" id="BLOGGER_PHOTO_ID_5568308520594822498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Intento usar el blog como escaparate de las cosas que hago y trato de no darle contenido personal, por si en el futuro me arrepiento. Pero voy a hacer una excepción: puedo decir que me considero escéptico.&lt;br /&gt;&lt;br /&gt;El Escepcitismo como filosofía no me interesa demasiado ya que cuestiona todo y descarta la objetividad. Es el pensamiento crítico lo que defiendo, que da paso al &lt;span style="font-weight: bold;"&gt;escepticismo científico&lt;/span&gt; o racional, que se basa en la ciencia, en la práctica y en la humildad.&lt;br /&gt;&lt;br /&gt;Nunca llegué a creerme las historias de brujas que curaban males menores, como verrugas, pero respetaba (ignoraba) a la gente que lo hacía. Siempre me pareció que el horóscopo era una sección insólita en los periódicos, pero respetaba a la gente que se divertía leyéndolos. También he sido de la opinión de que lo natural (remedios y medicinas) no tiene razón para ser mejor en absoluto.&lt;br /&gt;&lt;br /&gt;Aquí es donde entra la homeopatía. He conocido gente de bien que la administra y la respeto, igual que respeto a un pediatra cuando le dice a un niño que si deja de llorar le da una piruleta y entonces le deja de picar el brazo.&lt;br /&gt;&lt;br /&gt;Ahora bien, tras la promoción del día de suicidio homeopático colectivo organizado por &lt;a href="http://www.1023.org.uk/"&gt;http://www.1023.org.uk/&lt;/a&gt; y todas las cosas que estoy escuchando, artículos que estoy leyendo y opiniones de gente en contra y a favor, creo que hay que empezar a cambiar la opinión pública.&lt;br /&gt;&lt;br /&gt;¿Por qué? No es nada nuevo, todas las asociaciones en contra de la homeopatía lo dejan bien claro: &lt;span style="font-weight: bold;"&gt;Si alguien se deja de medicar, reemplazando sus medicinas por los preparados homeopáticos, está cometiendo una imprudencia contra sí mismo&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;¿Que pasaría si un paciente muriese por ignorar a su especialista y haberse &lt;span style="font-style: italic;"&gt;pseudomedicado&lt;/span&gt;?  ¿Podría un juez pedir el histórico de preparados suministrados por el curandero? Al darse cuenta de que se trata simplemente de caramelos de azúcar, ¿podría ir el homeópata a la cárcel? Pues por lo visto no, porque en su &lt;span style="font-style: italic;"&gt;disclaimer&lt;/span&gt;, o lo que tengan, se cubren las espaldas diciendo que, efectivamente, no se les debe hacer mucho caso.&lt;br /&gt;&lt;br /&gt;En cambio los médicos tienen responsabilidad. Los investigadores y las farmacéuticas, también. Y estos sinvergüenzas reparten caramelos a nueve euros la caja y se lavan las manos.&lt;br /&gt;&lt;br /&gt;Razones para no creer en la homeopatía hay cientos en todas partes pero creo que, fórmulas químicas aparte, el más contundente es el práctico: Si funcionase, no sería algo alternativo. Se usaría, sin más, en la medicina científica. Porque en la ciencia real cabe el error y la rectificación. Lo que no cabe es la desfachatez.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.rtve.es/mediateca/audios/20110131/noche-vela-homeopatia-debate-31-01-11/1001893.shtml"&gt;Ayer, en el programa de Radio Nacional, La Noche en Vela&lt;/a&gt;, estuvo mi amigo Borja. Con sus declaraciones y las llamadas de oyentes acaban los tertulianos convencidos del timo, con datos y hechos. Espero que mucha más gente también. Bien por nuestra radio pública. La semana que viene estarán los homeópatas en el mismo programa y seguro que será interesante.&lt;br /&gt;&lt;br /&gt;No voy a ir a la manifestación del día 5 porque no me gustan, pero la apoyo. En cambio, habrá que tener en cuenta &lt;a href="http://www.publico.es/ciencias/358153/el-templo-de-la-homeopatia-pagado-por-los-madrilenos"&gt;las cosas que hacen quienes tienen poder&lt;/a&gt; (y &lt;a href="http://www.publico.es/ciencias/305784/pseudociencia-ahora-en-holograma"&gt;II&lt;/a&gt;, y &lt;a href="http://alt1040.com/2010/10/leire-pajin-y-la-power-balance"&gt;III&lt;/a&gt;) en próximas urnas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-9135715086607574667?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/9135715086607574667/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=9135715086607574667' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/9135715086607574667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/9135715086607574667'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2011/01/homeopatia.html' title='Homeopatía'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5QB2H105vuU/TUabGOnV1WI/AAAAAAAAARU/UmD3oU1wIKU/s72-c/logo.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-5962591403920947191</id><published>2010-12-04T21:05:00.005+01:00</published><updated>2010-12-05T18:50:37.185+01:00</updated><title type='text'>Introducción al PFM</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_5QB2H105vuU/TPvQCVP7xmI/AAAAAAAAARE/9rtDtAPcWmY/s1600/tn_Barcode_Genie_Top-W490.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://2.bp.blogspot.com/_5QB2H105vuU/TPvQCVP7xmI/AAAAAAAAARE/9rtDtAPcWmY/s320/tn_Barcode_Genie_Top-W490.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5547256104519190114" /&gt;&lt;/a&gt;&lt;br /&gt;Ya tengo elegido tema para el proyecto fin de máster que estoy haciendo. No tiene título pero va a ser algo así:&lt;div&gt;&lt;ul&gt;&lt;li&gt;FPGAs en Open Hardware&lt;/li&gt;&lt;li&gt;Hardware reconfigurable abierto&lt;/li&gt;&lt;li&gt;Arduino en FPGA&lt;/li&gt;&lt;li&gt;Plataformas de Hardware de altas prestaciones y bajo coste&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;O cualquier combinación de esas palabras. El objetivo del proyecto va a ser sacar una conclusión del estado en el que el hardware reconfigurable por si alguien hubiese sido tan inteligente de haberlo adaptado a la moda: Arduino (que parece que sí y pretendo ayudar a ello).&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;El hardware reconfigurable abierto es lo contrario a un core 2 quad.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Primero, es abierto en el sentido que todos sus componentes están conectados de un modo que es del dominio público y no cae sobre él ninguna patente ni secreto. Además, las herramientas para conseguir programarlo también son abiertas en el sentido de que puedes bajarte la herramienta y su código fuente por si necesitases hacerle algún cambio. Para que se entienda en oposición al core 2 quad, los esquemas de un microprocesador de Intel son un secreto mejor guardado que el de la coca-cola. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Segundo, es reconfigurable. El core 2 quad tiene cientos de instrucciones simples. Sumar, cargar desde la memoria, comparar con cero, etc. Éstas se aplican contra una serie de memorias (llamadas registros) que hay dentro del chip y sus resultados se guardan en otras.Tras un complicadísimo proceso van pasando de chip en chip hasta que sus resultados se muestran en pantalla o se envían por bluetooth o lo que sea. Está creado de tal forma que las instrucciones se ejecutan muy deprisa. En el hardware reconfigurable las instrucciones son preparadas por nosotros: &lt;i&gt;hacer la raíz cuadrada de un número A y luego restarle la mitad de otro número B para devolver la cotangente de su inversa&lt;/i&gt;. A y B se pueden poner directamente en los pines de una FPGA (ejemplo de hw reconfigurable) y el resultado sale en otros pines de forma casi instantánea. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cada operación se hace en menos tiempo que en el Intel. Pero esto no siempre es mejor. No es que las FPGA sean mejores que los microprocesadores o más rápidas. Simplemente hacen ciertas cosas a un coste mucho más bajo. Coste es tiempo, energía y, en algunos casos, peso y volumen. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Tienen otras ventajas, como que al ser reconfigurables nunca están obsoletas. Puede dejar de fabricarse una FPGA pero será perfectamente reemplazable por otra de la misma marca o de otra, porque es totalmente personalizable. Por esta razón se usan en aviones, que son máquinas que tienen que durar 25 años y es necesario garantizar que siempre va a haber repuestos y piezas.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;La única razón por la que las FPGA se estudian en la universidad es porque las marcas (básicamente Xilinx y Altera) morirían si no donaran miles de aparatos cada año a los laboratorios para que los alumnos hagan un semáforo. Estas placas cuestan de doscientos a miles de euros. Tienen de todo, Ethernet, salidas VGA, audio, botones, switches, potenciómetros, pantallas LCD, LEDs...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yo siempre he estado obsesionado con las FPGAs. Uno de los requisitos de elección del máster fue que aparecieran en algún lado del programa porque me apetecía volver a programarlas, ahora que las entiendo y no como pasó en la carrera. &lt;b&gt;Lo que me molesta, razón principal por la que me he inventado este proyecto, es que yo no pueda comprar una placa, programarla en el entorno que yo quiera, con el lenguaje que yo quiera y usarla para lo que yo quiera&lt;/b&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;¡Hasta ahora! Gracias a la revolución iniciada por Arduino (bueno, iniciada por el open-source hace treinta años), la gente está pensando que aprender a programar hardware en la comodidad de un hogar no tiene comparación con la presión, olor y frío de un laboratorio en una universidad. Y lo que es más importante:&lt;b&gt; puedo programar lo que yo quiera&lt;/b&gt; y no el semáforo de la práctica de teleco o industriales.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Pues lo que me hizo decidirme por la investigación en este ámbito es que, como era de esperar, ya hay alguien que está aprovechando este tirón y aplicándolo a las FPGA. Hace una semana me compré una placa Papilio Platform a Gadget Factory y ahora mismo tengo un LED parpadeando cada 600 milisegundos programado desde el entorno de desarrollo de Arduino, como si estuviera programando una duemilanove o una Arduino Uno.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;He comprado la más potente (500.000 puertas, que es una cantidad media) y me ha costado $70. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ahora, lo que toca, es comprobar qué programas y shields de Arduino son compatibles con esto, detectar por qué no lo son los que fallan e intentar corregir esas cosas para facilitar a otros, con más capacidad creativa, crear cosas increíbles.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Por ahora he comprobado que no se puede escribir un valor analógico. Esta parte requiere cierto dominio de los temporizadores del Atmega103 que se emula en la placa y como ya me peleé en su momento con ellos voy a intentar empezar por aquí.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-5962591403920947191?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/5962591403920947191/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=5962591403920947191' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/5962591403920947191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/5962591403920947191'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2010/12/introduccion-al-pfm.html' title='Introducción al PFM'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5QB2H105vuU/TPvQCVP7xmI/AAAAAAAAARE/9rtDtAPcWmY/s72-c/tn_Barcode_Genie_Top-W490.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-8301893281386060434</id><published>2010-11-23T17:01:00.002+01:00</published><updated>2010-11-23T17:19:29.544+01:00</updated><title type='text'>Workshops que se deberían hacer y no se hacen</title><content type='html'>&lt;ul&gt;&lt;li&gt;El Kernel de Linux (teoría, hackeos, compilación)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Sniffing lógico (una báscula, una xbox, un kinect)&lt;/li&gt;&lt;li&gt;Hackeando el kinect&lt;/li&gt;&lt;li&gt;Arduino &amp;amp; FPGAs&lt;/li&gt;&lt;li&gt;Empezar en x (x=[Java, Python, Ruby, C#])&lt;/li&gt;&lt;li&gt;Consumo de &lt;a href="http://en.wikipedia.org/wiki/Application_programming_interface"&gt;APIs&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Tipografía práctica&lt;/li&gt;&lt;li&gt;HTML5, CSS3&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/User_experience"&gt;UX&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Unit_testing"&gt;Unit testing&lt;/a&gt; (o cómo dormir tranquilo)&lt;/li&gt;&lt;li&gt;Bases de datos (y su funcionamiento microscópico)&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Software_deployment"&gt;Software Deployment&lt;/a&gt; (o el mundo real)&lt;/li&gt;&lt;li&gt;Hacer un quadcóptero&lt;/li&gt;&lt;/ul&gt;Estoy seguro de que hay miles de personas en cada ciudad con inquietudes pero demasiado ocupadas como para empezar de cero. Los workshop son el empujón perfecto.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-8301893281386060434?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/8301893281386060434/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=8301893281386060434' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/8301893281386060434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/8301893281386060434'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2010/11/workshops-que-se-deberian-hacer-y-no-se.html' title='Workshops que se deberían hacer y no se hacen'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-6387486241200931910</id><published>2010-11-17T10:33:00.002+01:00</published><updated>2010-11-17T10:49:26.637+01:00</updated><title type='text'>Agenda Workshop Django</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: arial; font-size: small;"&gt;Algunos apuntes para un futuro workshop sobre &lt;a href="http://es.wikipedia.org/wiki/Django"&gt;Django&lt;/a&gt;:&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Nivel de los asistentes&lt;/span&gt;: Conocimiento básico de php/asp/jsp y bases de datos (entender un UML estático).&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Material&lt;/span&gt;: portatil con linux, python 2.6, python-django 1.2. Con windows: Quake II, Counter Strike y &lt;a href="http://es.wikipedia.org/wiki/Re-Volt"&gt;Re-Volt&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Objetivo&lt;/span&gt;: &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Trabajar con una aplicación distinta a lo que se pueda encontrar en vídeo-tutoriales de django/RoR (Es decir, no programar un blog) e incidir en que se entienda de la forma más rápida posible.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Evitar caer en el error típico de un tutorial para un framework: programar y mostrar código durante quince minutos para, al final, mostrar una página web funcional. Empezar por el tejado. Enseñar el producto terminado e ir explicando cada parte.&lt;/li&gt;&lt;li&gt;No se puede explicar una vista genérica antes de una vista común. Explicar lo completo y después los atajos.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Temario/claves&lt;/span&gt;:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Muestra de una aplicación de ejemplo en navegador.&lt;/li&gt;&lt;li&gt;La shell. Uso de&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;i&gt;active record&lt;/i&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;y primeras líneas de python. Listas.&lt;/li&gt;&lt;li&gt;&lt;i&gt;connection.queries&lt;/i&gt;. Muestra de consultas SQL puras.&lt;/li&gt;&lt;li&gt;Consultas many-to-many desde shell.&lt;/li&gt;&lt;li&gt;CRUD desde shell&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;models.py.&lt;/li&gt;&lt;li&gt;Ver código SQL generado &lt;/li&gt;&lt;li&gt;urls.py&lt;/li&gt;&lt;li&gt;views.py&lt;/li&gt;&lt;li&gt;templates, bases.&lt;/li&gt;&lt;li&gt;settings.py&lt;/li&gt;&lt;li&gt;Hacer un cambio a los modelos&lt;/li&gt;&lt;li&gt;MTV (Model Template View) &lt;/li&gt;&lt;li&gt;Otros frameworks de ejemplo. ¿Es jQuery un framework o una librería?&lt;span class="Apple-style-span" style="font-family: arial; font-size: small;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;Middlewares (definición)&lt;/li&gt;&lt;li&gt;Scripts de mantenimiento con django&lt;/li&gt;&lt;li&gt;Apps dentro de un proyecto. Instalar django-debug-toolbar,&lt;/li&gt;&lt;li&gt;Context_processors (definición)&lt;/li&gt;&lt;li&gt;Deployment&lt;/li&gt;&lt;li&gt;Práctica: Iniciar un proyecto&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div&gt;Un workshop no es una clase magistral, es un taller donde el moderador explica lo que sabe y todos aprendemos. Las pausas son para jugar al Quake II y demás joyas de finales de los 90.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-6387486241200931910?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/6387486241200931910/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=6387486241200931910' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/6387486241200931910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/6387486241200931910'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2010/11/agenda-workshop-django.html' title='Agenda Workshop Django'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-5245606975252500078</id><published>2010-06-27T21:30:00.001+02:00</published><updated>2010-06-27T21:32:07.483+02:00</updated><title type='text'>Diferencias entre ingeniería Técnica y Superior</title><content type='html'>Cuando me gradué en ingeniería técnica empecé a trabajar como ingeniero.  En mi ámbito estoy acostumbrado a ser el más joven, ya que mi carrera  era de tres años y con el proyecto la hice en cuatro. Además, al tener  experiencia laboral me salté los años de becario y prácticas. Aun con mi  expediente bastante del montón ha sido curioso ver cómo mi recuerdo de  los temas vistos en la carrera y de cultura ingenieril general es el  mismo o superior al de mis compañeros superiores (ellos tienen cuatro  años más de media), en parte por la simple razón de que hace más tiempo  que lo estudiaron.&lt;br /&gt; &lt;br /&gt;Con este panorama, llevo tiempo preguntándome para qué sirve  (servía) hacer una superior. Hablar de un problema que ya no existe  parece algo absurdo, pero puede haber alguien en mi situación. Al acabar  la técnica mi plan era hacer un máster para adaptarme a Bolonia y ya  ser posgraduado. Estas son las únicas pegas que he encontrado:&lt;br /&gt;  &lt;ul&gt;&lt;li&gt;Al hacer un &lt;b&gt;máster &lt;/b&gt;no es posible &lt;b&gt;convalidar &lt;/b&gt;asignaturas  de la técnica. Cosa que sí ocurre con una superior y es perfectamente  viable hacer un máster cursando una asignatura o dos más el proyecto.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Para acceder a un &lt;b&gt;doctorado &lt;/b&gt;hay que tener 300 créditos  ECTS. En mi carrera hice 235 y en un máster de un año se hacen 60. Casi  llego. Pues no. &lt;b&gt;Sólo se reconocen 180 de los créditos de la carrera  técnica&lt;/b&gt;, así que aún quedarían otros 60 y pico. Lo que sí es posible es hacer dos másters.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-5245606975252500078?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/5245606975252500078/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=5245606975252500078' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/5245606975252500078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/5245606975252500078'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2010/06/diferencias-entre-ingenieria-tecnica-y.html' title='Diferencias entre ingeniería Técnica y Superior'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-617788956104962946</id><published>2010-04-21T12:25:00.002+02:00</published><updated>2010-04-21T13:15:33.358+02:00</updated><title type='text'>Android</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.elandroidelibre.com/wp-content/uploads/2010/04/android-s1-box3-300x225.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 300px; height: 225px;" src="http://www.elandroidelibre.com/wp-content/uploads/2010/04/android-s1-box3-300x225.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Mi móvil Android, un HTC Magic, va a ir a parar en algún momento a mi quadcóptero (sobre lo que ya explicaré muchos más detalles) y casualmente los chicos de &lt;a href="http://www.elandroidelibre.com/"&gt;El Androide Libre&lt;/a&gt; han organizado un concurso en el que &lt;a href="http://www.elandroidelibre.com/2010/04/el-gran-sorte-de-el-androide-libre.html"&gt;sortean un Nexus One&lt;/a&gt;. Si me toca, ya tengo reemplazo para mi lento Magic. Esta entrada es mi boleto puesto que hay que crear un post en un blog para participar. Así aprovecho para hablar de Android.&lt;br /&gt;&lt;br /&gt;Tras unos cuantos meses con este sistema operativo en el móvil, no voy a cambiarlo aunque cambie de terminal. Aun así sigo recomendando a los que tienen cuentas de correo en hotmail que usen móviles Nokia simples y a los que prefieren reemplazar a reparar, que se compren un iPhone.&lt;br /&gt;&lt;br /&gt;La razón de usar open-source es difícil de explicar. No es por su gratuidad. No funciona tan fluído como un iPhone o un Nokia pero puedo tener cinco programas a la vez. Pueden no tener ninguna utilidad real pero yo puedo cambiarlos, cerrarlos o dejarlos corriendo por detrás. Puedo instalar programas que sólo existan para USA. Puedo tener todos mis datos y contactos en los servidores de Google - o de quien sea -  y cambiar de terminal sin darme ni cuenta. Puedo subir los mp3 que quiera y no tengo que pasar por iTunes ni por sincronizadores de dudosa calidad que ralenticen mi ordenador. Además. puedo programar aplicaciones para mi móvil de forma gratuita y muy sencilla o cambiar el núcleo, si alguna vez necesitara hacerlo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm4.static.flickr.com/3503/3987644477_f7be77e690.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 375px; height: 500px;" src="http://farm4.static.flickr.com/3503/3987644477_f7be77e690.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;En resumidas cuentas: ¡uso Android porque puedo!&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;[Foto con licencia Creative Commons del usuario &lt;a href="http://www.flickr.com/photos/certo/3987644477/"&gt;xornalcerto en flickr&lt;/a&gt;]&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-617788956104962946?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/617788956104962946/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=617788956104962946' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/617788956104962946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/617788956104962946'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2010/04/android.html' title='Android'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3503/3987644477_f7be77e690_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-3696467619572212999</id><published>2010-03-21T13:06:00.008+01:00</published><updated>2011-01-31T19:46:46.871+01:00</updated><title type='text'>Veinte curiosidades (técnicas) del mundo aeronáutico</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm2.static.flickr.com/1383/1022897411_fb61b20c84.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 500px; height: 375px;" src="http://farm2.static.flickr.com/1383/1022897411_fb61b20c84.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Los &lt;a href="http://en.wikipedia.org/wiki/Horizontal_stabilizer"&gt;estabilizadores horizontales de cola&lt;/a&gt; (las alas de la parte posterior de los aviones) más  que sustentar, empujan hacia abajo la cola de los aviones.&lt;/li&gt;&lt;li&gt;No es  lo mismo la ignición que el arrancado de un motor. Se arranca con fuerza  hidráulica (líquido a presión) y una vez se alcanza una velocidad, se inicia la combustión.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Donde menos gasto de combustible se hace es en el límite de la  troposfera. Por debajo hace más calor (es más difícil refrigerar) y por  encima no hay suficiente aire para empujar el avión. [Edit: sólo aviones turbofán]&lt;/li&gt;&lt;li&gt;En el Ecuador  se vuela a 20km sobre el nivel del mar. En los polos a 11.&lt;/li&gt;&lt;li&gt;La temperatura del exterior de un avión comercial es de -65ºC y la  presión 0.2 bares. &lt;/li&gt;&lt;li&gt;La medición de altitud de los aviones se basa  en la presión y depende de ésta por lo que no es real. Los aviones no se  chocan porque todos llevan el mismo error, al compartir el mismo  entorno. [Edit: ahora hay radioaltímetros]&lt;/li&gt;&lt;li&gt;Con aire seco es más fácil despegar.&lt;/li&gt;&lt;li&gt;Una persona sin  suficiente oxígeno puede pensar que está haciendo todo bien cuando no es  para nada así. En ciertas situaciones es obligatorio que los pilotos  usen máscara de oxígeno.&lt;/li&gt;&lt;li&gt;Algunos aviones tienen un sistema de emergencia de generación  eléctrica consistente en un pequeño molino de viento (aerogenerador) que  sale del fuselaje. Se llama RAT.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;El RAT cae por gravedad cuando ninguno de los generadores funciona.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;El aire acondicionado debe compensar el calor  que produce cada pasajero, que es equivalente a una bombilla de 100W.&lt;/li&gt;&lt;li&gt;En los lavabos, se tira del aire desde fuera, a diferencia del resto  de la cabina, que se empuja para renovarlo. Así si hay algún problema,  el olor no se cuela a la cabina.&lt;/li&gt;&lt;li&gt;Peor que el hielo, para los  aviones, es el agua &lt;a href="http://es.wikipedia.org/wiki/Sobrefusi%C3%B3n"&gt;superenfriada&lt;/a&gt;. Las gotas sin impurezas no  cristalizan bajo cero hasta que impactan en el avión. Para estos casos  se montan sistemas anti-hielo.&lt;/li&gt;&lt;li&gt;Lo malo de tener los motores detrás de las alas es que el hielo  acumulado en ellas puede desprenderse de golpe y dañarlos.&lt;/li&gt;&lt;li&gt;Los  motores funcionan mejor en lluvia, porque tienen más capacidad de empuje  con agua que con aire (no se puede nadar en el aire). [Empujan más pero no gastan menos]&lt;/li&gt;&lt;li&gt;Un avión se estrelló porque, al aterrizar, la lluvia apagó un motor. Desde entonces  hay que tomar tierra con los motores en un régimen del 45%.&lt;/li&gt;&lt;li&gt;El botón más  difícil de accionar en cabina es el de extinguir fuego en un motor. La  razón es que sale muy caro reparar la acción del extintor.&lt;/li&gt;&lt;li&gt;Antes del amerizaje del Hudson (causado por pájaros en el motor), en  la cabina olía a pollo frito porque el aire acondicionado se saca del  motor. Este proceso se llama sangrado.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;El Boeing 787 es revolucionario por (casi) no utilizar aire sangrado del motor. Por ello, necesita generar cuatro veces más de potencia eléctrica que un A330 para aire acondicionado, sistemas antihielo, etc. Airbus decidió seguir usándolo en su A350. Esta diferencia puede hacer interesante la competencia en un futuro cercano.&lt;/li&gt;&lt;li&gt;En el ala derecha hay una luz verde y en la izquierda una roja. Aunque parezca que sirven para saber si un avión va o viene, las &lt;a href="http://en.wikipedia.org/wiki/Navigation_light"&gt;luces de navegación&lt;/a&gt; no se ven desde atrás. Su cometido es actuar de semáforo en un cruce de dos aviones en el aire. Si un piloto ve la luz verde (del ala derecha del otro avión) tiene preferencia. Si no, verá una luz roja. Como en los coches, tiene preferencia el que viene por la derecha.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Estos datos son apuntes que estoy recogiendo de comentarios de profesores y algo de wikipedia por mi parte en un módulo del &lt;a href="http://www.uc3m.es/portal/page/portal/postgrado_mast_doct/masters/Master_en_integracion_sistemas_aeronaves"&gt;Máster en Integración de Sistemas de Aeronaves&lt;/a&gt; de la Universidad Carlos III, que nos están dado a empleados de EADS/CASA.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;La foto que ilustra el post tiene licencia Creative Commons bajo condición de reconocimiento. Es del usuario &lt;a href="http://www.flickr.com/photos/individuo/1022897411/"&gt;individuo&lt;/a&gt; de flickr.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-3696467619572212999?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/3696467619572212999/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=3696467619572212999' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/3696467619572212999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/3696467619572212999'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2010/03/veinte-curiosidades-del-mundo.html' title='Veinte curiosidades (técnicas) del mundo aeronáutico'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm2.static.flickr.com/1383/1022897411_fb61b20c84_t.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-4904372066803036775</id><published>2010-03-02T21:12:00.004+01:00</published><updated>2010-03-02T21:32:29.617+01:00</updated><title type='text'>Controlar un vehículo aéreo no tripulado desde Android</title><content type='html'>Este post no es un tutorial, sólo una recopilación de apuntes.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/155/402804780_07d8d084ca.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 500px; height: 375px;" src="http://farm1.static.flickr.com/155/402804780_07d8d084ca.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Un Vehículo Aéreo no Tripulado (UAV - Unmanned Air Vehicle, desde ahora) es un avión, helicóptero, quadcóptero o cualquier cosa que vuele sin la supervisión en tiempo real de un humano. La diferencia entre un UAV y un vehículo radiocontrolado es que el último necesita la intervención y supervisión continua de algún ente que lo domine y el primero tiene los sistemas típicamente electrónicos que le confieren la inteligencia suficiente para ejecutar órdenes, lidiando con los obstáculos o impedimentos (viento, fallos de comunicación, etc.) por sí mismo.&lt;br /&gt;&lt;br /&gt;Hay gran cantidad de proyectos de UAVs, desde los de bajo presupuesto hasta los utilizados en operaciones militares, capaces de transportar y disparar armamento (UCAV, Unmanned Combat Air Vehicle). Además, teniendo en cuenta que los aviones de transporte civil aterrizan de forma automática en la mayoría de las situaciones, habría que tenerlos en cuenta al hablar de vehículos no tripulados.&lt;br /&gt;&lt;br /&gt;En lo que estoy &lt;span style="font-style: italic;"&gt;trabajando &lt;/span&gt;desde hace unos meses con un compañero del trabajo es en crear la -ya clásica- estructura para un quadcopter. Gracias a lo que ha avanzado la tecnología en motores R/C, es bastante económico hacer un vehículo volador con cuatro motores brushless y un controlador tipo Arduino.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://diydrones.com/profiles/blogs/ardupilot-main-page"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 300px; height: 215px;" src="http://api.ning.com/files/kn4JvqxTCSy6ACv*DXvc6kPgNY-DH7sbPejgbaS9zcs8QtLicvaUcBZJ9jDDqb*YSwo*4o8CRHyvFe4vXXI3r6tESKxUjnNU/ardupilot.jpg?width=300" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Las características del sistema que hay que maximizar en principio son:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Duración del vuelo&lt;/li&gt;&lt;li&gt;Peso que es capaz de levantar&lt;/li&gt;&lt;li&gt;Dureza y tolerancia a los choques&lt;/li&gt;&lt;li&gt;Capacidades (GPS, cámara, acelerómetro, brújula, telemetría, etc.)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Lo que hay que minimizar es:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Peso de todo el sistema&lt;/li&gt;&lt;li&gt;Tiempo de respuesta (en general)&lt;/li&gt;&lt;li&gt;Coste&lt;/li&gt;&lt;/ul&gt;Un móvil moderno tiene las siguientes capacidades y características, por orden de importancia:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Peso reducido&lt;/li&gt;&lt;li&gt;Procesador de 300Mhz-1Ghz&lt;/li&gt;&lt;li&gt;Puerto de comunicación USB&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Conexión GPRS/UMTS&lt;/li&gt;&lt;li&gt;Batería de larga duración&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Acelerómetro de tres ejes&lt;/li&gt;&lt;li&gt;Brújula&lt;/li&gt;&lt;li&gt;GPS&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Altavoz&lt;/li&gt;&lt;li&gt;Pantalla gráfica&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Dispositivo de almacenamiento&lt;/li&gt;&lt;li&gt;Cámara de fotos y vídeo&lt;/li&gt;&lt;li&gt;Cierta dureza&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Micrófono&lt;/li&gt;&lt;/ul&gt;Es una elección lógica, por lo que no soy el primero en pensar que es un controlador perfecto para un UAV. Si elegimos un móvil Android para el proyecto, dado que es Open-Source y se basan en hardware potente, el equipo parece tener un potencial impresionante (y bastante divertido).&lt;br /&gt;&lt;br /&gt;Temas resueltos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Aunque la electrónica de control y comunicaciones se realice en el móvil, un controlador externo basado en Arduino (con chip AVR) deberá lanzar las órdenes a los motores.&lt;/li&gt;&lt;li&gt;Desde Android se cambian los parámetros de vuelo, no se controlan directamente los motores.&lt;/li&gt;&lt;li&gt;La comunicación con el móvil se hace por GPRS/UMTS o Wi-Fi indistintamente.&lt;/li&gt;&lt;li&gt;Aunque se cuente con un GPS, el control se debe hacer en base a datos de un sensor de altura o barométrico, externo al sistema.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.instructables.com/image/FZC1DLRFSMSY5WH/Android-G1-Serial-to-USB-Cable.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 500px; height: 218px;" src="http://www.instructables.com/image/FZC1DLRFSMSY5WH/Android-G1-Serial-to-USB-Cable.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Los asuntos que aún hay que tratar son (algo así como un TO-DO List):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Habilitar la comunicación serie en el móvil, modificando el kernel del móvil: &lt;a href="http://code.google.com/p/android-serialport-api/" target="_blank"&gt;http://code.google.com/p/&lt;wbr&gt;android-serialport-api/&lt;/a&gt; y &lt;a href="http://forum.xda-developers.com/archive/index.php/t-496976.html" target="_blank"&gt;http://forum.xda-developers.&lt;wbr&gt;com/archive/index.php/t-&lt;wbr&gt;496976.html&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Crear el circuito interfaz entre móvil y el controlador externo. &lt;a href="http://www.instructables.com/id/Android_G1_Serial_Cable/" target="_blank"&gt;http://www.instructables.com/&lt;wbr&gt;id/Android_G1_Serial_Cable/&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Dotar al software de prioridad suficiente en el móvil para evitar que otras aplicaciones lo saturen&lt;/li&gt;&lt;li&gt;Conseguir un quadcopter totalmente funcional radiocontrolado con Arduino y alguno de los proyectos libres disponibles:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.google.com/url?q=http%3A%2F%2Fdiydrones.com%2Fprofiles%2Fblog%2Fshow%3Fid%3D705844%253ABlogPost%253A44814&amp;amp;sa=D&amp;amp;sntz=1&amp;amp;usg=AFrqEzfdQimzxrii0i1iWchVVRuBJaRNCQ" target="_blank"&gt;http://diydrones.com/profiles/&lt;wbr&gt;blog/show?id=705844%&lt;wbr&gt;3ABlogPost%3A44814&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/quaduino-ng/" target="_blank"&gt;http://code.google.com/p/&lt;wbr&gt;quaduino-ng/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Probar si el acelerómetro del móvil es suficientemente:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Sensible&lt;/li&gt;&lt;li&gt;Rápido detectando cambios,&lt;/li&gt;&lt;li&gt;Rápido comunicándose con el software&lt;/li&gt;&lt;li&gt;Rápido comunicándose con la Arduino&lt;/li&gt;&lt;/ul&gt;Puesto que es bastante posible que falle en alguno de estos pasos, habrá que tener en cuenta la posibilidad de adaptar un acelerómetro externo conectado directamente a la Arduino.&lt;li&gt;Crear un protocolo de comunicaciones que admita comandos desde un portatil como:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Ir a un punto con el GPS&lt;/li&gt;&lt;li&gt;Pararse, manteniendo una altura.&lt;/li&gt;&lt;li&gt;Tomar una foto&lt;/li&gt;&lt;li&gt;Empezar un vídeo&lt;/li&gt;&lt;li&gt;Terminar un vídeo&lt;/li&gt;&lt;li&gt;Calibrar a 0&lt;/li&gt;&lt;li&gt;Aterrizar&lt;/li&gt;&lt;li&gt;Desplegar un paracaídas (por qué no)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Crear un sistema de telemetría que envíe datos por el mismo canal de comunicación al portatil.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Datos del GPS&lt;/li&gt;&lt;li&gt;Datos del acelerómetro&lt;/li&gt;&lt;li&gt;Vídeo en tiempo real&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;Nota sobre licencias: todas las fotos son CC de fuentes mencionadas y vinculadas en el post.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-4904372066803036775?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/4904372066803036775/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=4904372066803036775' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/4904372066803036775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/4904372066803036775'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2010/03/controlar-un-vehiculo-aereo-no.html' title='Controlar un vehículo aéreo no tripulado desde Android'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm1.static.flickr.com/155/402804780_07d8d084ca_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-3761820377261360785</id><published>2009-08-24T09:46:00.002+02:00</published><updated>2009-08-24T10:10:37.342+02:00</updated><title type='text'>Intercalación en SQL Server</title><content type='html'>&lt;span style="font-size:85%;"&gt;[Tengo el blog olvidadísimo por culpa de Twitter. Parece que todo lo que tengo que decir es comprimible en 140 caracteres.]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El deployment (despliegue, paso a producción) de software es a mi juicio el punto más frustrante del ciclo de desarrollo de una aplicación, ya sea web o para escritorio. En el caso de mi último proyecto, mi Everest ha sido la intercalación de SQL Server.&lt;br /&gt;&lt;br /&gt;La intercalación (&lt;span style="font-style: italic;"&gt;collation&lt;/span&gt;) es básicamente la manera en la que un motor de base de datos va a ordenar las listas. En español la 'ch' solía considerarse un carácter que iba después de la c, la ñ sigue colocándose después de la n, etc. Cosa que en inglés no ocurre y en hebreo menos. Pero hay programadores que necesitan definir muy bien este orden y es un problema muy grave para ellos hacer convivir varias intercalaciones.&lt;br /&gt;&lt;br /&gt;Parece trivial la definición del orden de una lista pero precisamente la optimización de búsquedas en las bases de datos se basan en la forma en la que los registros de una tabla están ordenados.&lt;br /&gt;&lt;br /&gt;Al instalar mi servidor local de SQL Server para desarrollo de una aplicación ASP.NET MVC no pensé que utilizar la intercalación española fuese a darme grandes problemas pero al subir la aplicación a Godaddy me estaba dando un error fatal que me ha tenido varios días parado.&lt;br /&gt;&lt;br /&gt;Cambiar la intercalación por defecto de una base de datos se hace de forma intuitiva con el SQL Server Management Studio y no he tenido ningún problema con mis tablas. Lo difícil ha sido cambiarlo en los objetos generados por &lt;span style="font-style: italic;"&gt;aspnet_regsql.exe&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;aspnet_regsql&lt;/span&gt; es una aplicación que genera, entre otras cosas, una serie de tablas y objetos en la base de datos dedicados a la gestión de usuarios de una aplicación. Hay, por lo menos, un procedimiento que depende directamente de la intercalación por defecto establecida en el momento de generar las tablas por lo que aunque se cambie la intercalación por defecto de la base de datos, nunca se va a poder exportar a otro servidor con otra intercalación por defecto.&lt;br /&gt;&lt;br /&gt;Para subirla, he tenido que borrar todos los objetos generados (por suerte sigo de pruebas), cambiar la intercalación a &lt;span style="font-style: italic;"&gt;Latin&lt;/span&gt; y volver a generarlos.&lt;br /&gt;&lt;br /&gt;El error típico que sale es&lt;br /&gt;&lt;blockquote&gt;Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "SQL..." in the equal to operation.&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-3761820377261360785?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/3761820377261360785/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=3761820377261360785' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/3761820377261360785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/3761820377261360785'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2009/08/intercalacion-en-sql-server.html' title='Intercalación en SQL Server'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-5760632146761174120</id><published>2009-04-28T23:57:00.004+02:00</published><updated>2009-04-29T10:40:19.164+02:00</updated><title type='text'>Aburrimiento</title><content type='html'>Esta entrada está disparada por el siguiente comentario:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Tú te aburres mucho, ¿no?&lt;/blockquote&gt;&lt;br /&gt;Suelen sorprender con esta frase ya lamentablemente hecha los que no llegan a comprender un proyecto o los que creen inusual que cierta gente invierta tiempo en llevar a cabo un desarrollo de una idea original o intelectualmente interesante.&lt;br /&gt;&lt;br /&gt;Esta gente, que se &lt;span style="font-style: italic;"&gt;aburriría &lt;/span&gt;sin los programas del corazón, concursos y el deporte televisado, no me parece interesante. Es la gente que viaja para enseñar las fotos a sus amigos, es la que, como máxima, quiere tener un trabajo cómodo.&lt;br /&gt;&lt;br /&gt;No es que mi vida sea un torrente de sensaciones fuertes, precisamente, pero intento seguir a gente inspiradora como &lt;a href="http://en.wikipedia.org/wiki/Steve_Wozniak"&gt;Steve Wozniak&lt;/a&gt; y &lt;a href="http://en.wikipedia.org/wiki/Adam_Savage"&gt;Adam Savage&lt;/a&gt;. No porque hayan triunfado en la vida laboralmente, sino porque han vivido en torno a &lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;oi=video_result&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fwww.ted.com%2Findex.php%2Ftalks%2Fadam_savage_s_obsessions.html&amp;amp;ei=iw_4SZWBKMLI-AaY9vTDDw&amp;amp;usg=AFQjCNEuV3f-YB6WJhIgH1s0h5n6l_NEOw"&gt;obsesiones&lt;/a&gt;, han dormido poco y han hecho cosas que, aparte de su relevancia, les ha realizado profundamente.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-5760632146761174120?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/5760632146761174120/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=5760632146761174120' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/5760632146761174120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/5760632146761174120'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2009/04/aburrimiento.html' title='Aburrimiento'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-4566139317287932453</id><published>2009-04-02T16:45:00.005+02:00</published><updated>2009-04-02T16:52:43.862+02:00</updated><title type='text'>Microsiervos rebeldes</title><content type='html'>Estoy bastante interesado en el &lt;a href="http://en.wikipedia.org/wiki/ASP.NET_MVC"&gt;framework MVC para ASP.NET&lt;/a&gt; que han creado los chicos de Microsoft. Lo sorprendente es que (hasta que se den cuenta) las capturas de los &lt;a href="http://www.asp.net/learn/mvc/tutorial-09-cs.aspx"&gt;tutoriales&lt;/a&gt; han sido hechas por un microsiervo rebelde:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_5QB2H105vuU/SdTQCCuzZdI/AAAAAAAAALY/eyzf8ZpqMhA/s1600-h/mvc_tutorial09_cs_figure01s.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 239px; height: 320px;" src="http://2.bp.blogspot.com/_5QB2H105vuU/SdTQCCuzZdI/AAAAAAAAALY/eyzf8ZpqMhA/s320/mvc_tutorial09_cs_figure01s.png" alt="" id="BLOGGER_PHOTO_ID_5320105793342891474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;¡Pedazo de Firefox que se les ha colado! En el resto de páginas las capturas son de un pulcro IE.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-4566139317287932453?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/4566139317287932453/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=4566139317287932453' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/4566139317287932453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/4566139317287932453'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2009/04/microsiervos-rebeldes.html' title='Microsiervos rebeldes'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5QB2H105vuU/SdTQCCuzZdI/AAAAAAAAALY/eyzf8ZpqMhA/s72-c/mvc_tutorial09_cs_figure01s.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-3179175600221921342</id><published>2009-02-13T09:16:00.004+01:00</published><updated>2009-02-13T10:58:07.357+01:00</updated><title type='text'>Una semana con el ADSL de Jazztel</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_5QB2H105vuU/SZVCtkSZikI/AAAAAAAAALQ/F_XfbGe5lzg/s1600-h/logo.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 220px; height: 77px;" src="http://3.bp.blogspot.com/_5QB2H105vuU/SZVCtkSZikI/AAAAAAAAALQ/F_XfbGe5lzg/s320/logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5302217486901021250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Llamé para contratar el ADSL de 6Mb de Jazztel y el &lt;span style="font-style: italic;"&gt;argentino embaucador&lt;/span&gt; me dijo que como había una oferta del 50% para los tres primeros meses, que me pusiera 20Mb, lo probara y al terminar la promoción, me bajara a 6Mb. Lo vendió bien.&lt;br /&gt;&lt;br /&gt;Contraté el ADSL de 20Mb con línea nueva de Jazztel.&lt;br /&gt;&lt;br /&gt;Mi reseña:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Hice la contratación por teléfono para acogerme a una oferta de "mete a un amigo" donde te ahorras 45€. Fueron muy amables aunque tardé &lt;span style="font-weight: bold;"&gt;media hor&lt;/span&gt;a (y llamé desde el trabajo, oops). Tengo la teoría de que si llamas a un callcenter por la mañana siempre te atienden mejor.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;El contrato tardó cuatro días en llegar por correo y &lt;span style="font-weight: bold;"&gt;al quinto día&lt;/span&gt; me llamó un técnico de telefónica para instalarme la línea y por la tarde vinieron dos subcontratados de telefónica y me pusieron la línea, que es un número feo; empieza por 91-143. En Madrid un número que empiece por 1 es raro. Me llevé una buena descarga por cierto, el cable de teléfono sí que tiene tensión.&lt;/li&gt;&lt;li&gt;Enchufé un router adsl2+ que me dejó un amigo, de Jazztel. Al abrir una página salió un programa de instalación y le dí a un botón de &lt;span style="font-weight: bold;"&gt;autoconfiguración&lt;/span&gt;. En un minuto ya salía a Internet con un ping de 26ms.&lt;/li&gt;&lt;li&gt;Al día siguiente me llama un tipo al teléfono del trabajo con un nombre impronunciable para ofrecerme un ADSL de Jazztel. Le digo amablemente que ya lo contraté. Me dice que me borra de la base de datos.&lt;/li&gt;&lt;li&gt;Ese mismo día por la tarde &lt;span style="font-weight: bold;"&gt;me vuelve a llamar&lt;/span&gt; otro tipo para ofrecerme un ADSL de Jazztel. Le digo amablemente que ya lo contraté, que me está llamando al trabajo y que me borre.&lt;/li&gt;&lt;li&gt;A los dos días me llama otro tipo para ofrecerme un ADSL de Jazztel,&lt;span style="font-weight: bold;"&gt; por tercera vez&lt;/span&gt;. Le hablo no amablemente con algún que otro taco y le cuelgo.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ese día me llega el router de Jazztel. Un &lt;span style="font-weight: bold;"&gt;COMTREND CT-576+&lt;/span&gt;. Es el router doméstico más completo que conozco. La señal wifi es excelente en toda la casa y me sincroniza a 2Mb más que el HUAWEI que me prestaron. Ningún problema para meter seguridad WPA2-PSK y es posible abrir puertos por rangos, cosa que normalmente se echa en falta. Tiene dos puertos RJ45 reservados, uno para IPTV y otro llamado HG. Según he leido se pueden habilitar como Ethernet normal.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;La velocidad es buena, &lt;span style="font-weight: bold;"&gt;14Mb de bajada y 800Kb de subida&lt;/span&gt;, aunque estoy relativamente cerca de la central. La estabilidad por ahora es absoluta y el ping para jugar al Call of Duty desde la XBOX es muy bueno (y no he activado fast-path aún).&lt;/li&gt;&lt;li&gt;Estoy teniendo algún &lt;span style="font-weight: bold;"&gt;problema con youtube&lt;/span&gt; por algún motivo que no entiendo. A veces no carga los vídeos simplemente y sospecho que es un tema de DNS, así que habrá que hacer pruebas.&lt;/li&gt;&lt;li&gt;La &lt;span style="font-weight: bold;"&gt;web &lt;/span&gt;de jazztel en general es muy buena aunque jazztel.es (sin www.) no funciona. Eso no es nada 2.0.&lt;/li&gt;&lt;li&gt;Los &lt;span style="font-weight: bold;"&gt;servicios autogestionados&lt;/span&gt; que ofrece Jazztel en su página web permiten activar fast-path, desviar llamadas, sacar estadísticas, incluso configurar números cortos para los teléfonos más habituales, ocultar el número... Todo esto necesidad de aguantar un callcenter en el otro lado del mundo.&lt;/li&gt;&lt;li&gt;Acaban de sacar algo llamado &lt;a style="font-weight: bold;" href="http://www.anexom.es/"&gt;Anexo M&lt;/a&gt; donde es posible apuntarse para un "experimento" y utilizar una modalidad de adsl2+ que hasta ahora no ha sido explotada y repartir el ancho de banda de forma distinta entre subida y bajada. Hasta usan Google Docs en la página.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Este tipo de ideas, los paneles beta, los blogs, la comunicación al cliente y la experimentación son las que dan la impresión de estar en la cresta de la ola en cuanto a proveedores de Internet. ¿Una empresa grande y española manejada por gente capaz y creativa? ¿Estamos cambiando?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-3179175600221921342?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/3179175600221921342/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=3179175600221921342' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/3179175600221921342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/3179175600221921342'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2009/02/una-semana-con-el-adsl-de-jazztel.html' title='Una semana con el ADSL de Jazztel'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5QB2H105vuU/SZVCtkSZikI/AAAAAAAAALQ/F_XfbGe5lzg/s72-c/logo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-4542122478072680040</id><published>2009-01-28T15:34:00.005+01:00</published><updated>2009-01-29T09:33:06.207+01:00</updated><title type='text'>3dsymax - El canal de la infografía española</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_5QB2H105vuU/SYCEfb0ZM6I/AAAAAAAAALI/jBlZN8h8AEg/s1600-h/3dsymax_logo.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 230px; height: 75px;" src="http://1.bp.blogspot.com/_5QB2H105vuU/SYCEfb0ZM6I/AAAAAAAAALI/jBlZN8h8AEg/s320/3dsymax_logo.gif" alt="" id="BLOGGER_PHOTO_ID_5296378837366027170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;Orígenes: las news y el IRC&lt;/h3&gt;&lt;br /&gt;Al principio de los tiempos de Internet (hace miles de e-años), antes de los portales, antes del IRC y continuando el rollo en las BBS, existían las &lt;a href="http://en.wikipedia.org/wiki/Newsgroup"&gt;news&lt;/a&gt;. Este concepto de comunicación es totalmente desconocido para el que haya entrado en la red a partir del año 2001. Esta forma de comunidad emigró a los foros en la www.&lt;br /&gt;&lt;br /&gt;Empecé en el mundo de las news coincidiendo con la salida de unos fascículos que había sobre 3d Studio R3 en 1996. En algún grupo de news leí sobre el &lt;a href="http://es.wikipedia.org/wiki/IRC"&gt;IRC&lt;/a&gt; y sobre el canal de chat #3dsymax.&lt;br /&gt;&lt;br /&gt;Recordemos que en 1997 se pagaba Internet a precio de llamada local, que no era gratis como ahora. El de padres más permisivos con las horas al día de Internet era el que más tiempo se pasaba en el IRC, con lo que al poco tiempo ya era uno de los administradores del canal.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;La web&lt;/h3&gt;&lt;br /&gt;En la web había contados tutoriales de 3d Studio y 3d Studio Max (y buscar en &lt;a href="http://yahoo.com/"&gt;yahoo&lt;/a&gt; y en &lt;a href="http://www.altavista.com/"&gt;altavista&lt;/a&gt; era un infierno por lento) por lo que me dediqué a recopilarlos. La web se llamaba 3d Vision y era la típica página personal que teníamos los infógrafos amateur por entonces. Lista de tutoriales, lista de links a otras webs y galería con todos nuestros trabajos.&lt;br /&gt;&lt;br /&gt;Esta web dejó de ser personal para convertirse en la página oficial del canal #3dsymax y en el año 2000 se compró el dominio 3dsymax.org. Hasta hice una base de datos en Access y no tengo la menor idea de cómo conseguí conectarla a una página web para mostrar la lista de tutoriales, una lista de usuarios, etc. Como una subsección más se creó el foro, dedicado a las consultas técnicas sobre 3D Studio, Max y otros programas de modelado y animación.&lt;br /&gt;&lt;br /&gt;[&lt;a href="http://web.archive.org/web/20001018195056/http://www.3dsymax.org/"&gt;Primeras versiones de 3dsymax.org en archive.org&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;El foro&lt;/h3&gt;&lt;br /&gt;Poco a poco el foro fue ganando importancia hasta tal punto que "la web" se convirtió en "el foro" e incluso cuando el Messenger mató al IRC, 3dsymax ya era un foro y no un canal de IRC. Hacíamos concursos (alguno hasta patrocinado), teníamos clanes de juegos como del Counter Strike, hacíamos quedadas en las que nos reuníamos 30 ó 40... En esos tiempos pertenecer a un grupo de este tipo era muy &lt;span style="font-style: italic;"&gt;geek &lt;/span&gt;por lo que todos teníamos bastante en común.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;La primera &lt;a href="http://es.wikipedia.org/wiki/Crisis_Seldon"&gt;crisis&lt;/a&gt;&lt;/h3&gt;&lt;br /&gt;Había dos tipos de usuarios, los que veníamos del IRC, en muchos casos amigos y conocidos desde hacía años y los nuevos usuarios del foro, que no necesariamente se habían pasado por el canal. En ese momento el caracter técnico cedió ante la conversación casual y fuera de tema ya que antes para contar el fin de semana teníamos el chat.&lt;br /&gt;&lt;br /&gt;Los moderadores y administradores tomamos la decisión de crear la categoría &lt;span style="font-style: italic;"&gt;Offtopic&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;(fuera de tema)&lt;span style="font-style: italic;"&gt; &lt;/span&gt;para mover este tipo de conversaciones y durante un tiempo estuvimos vigilando activamente que nadie se saliera de los temas para preservar la calidad de las respuestas y de la información. Al fin y al cabo el servidor tenía un coste y los Gigas de transferencia que se hacían al mes se iban en chorradas.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Más crisis&lt;/h3&gt;&lt;br /&gt;Surgió una plataforma autóctona que operaba en el subforo &lt;span style="font-style: italic;"&gt;Offtopic&lt;/span&gt; y que tenía una especie de cruzada contra los administradores. Eran los rebeldes de la clase y de vez en cuando salían por el resto de foros a sembrar cizaña. En muchos casos eran grandes infógrafos que simplemente querían pasar un buen rato y de hecho era gente bastante graciosa y ocurrente. &lt;a href="http://web.archive.org/web/20040605121312/www.3dsymax.org/foro/"&gt;En 2004&lt;/a&gt; Offtopic llegó a los 1000 mensajes, teniendo 4000 el foro "general".  &lt;a href="http://web.archive.org/web/20061004053503/http://3dsymax.org/"&gt;Dos años más tarde&lt;/a&gt; ambos foros se empataron con unos 20.000 &lt;span style="font-style: italic;"&gt;posts &lt;/span&gt;cada uno.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;La muerte&lt;/h3&gt;&lt;br /&gt;La solución desesperada y un tanto autocrática fue acabar con la sección de &lt;span style="font-style: italic;"&gt;Offtopic&lt;/span&gt; y prohibir su dispersión por el resto de foros. Incluso sugerimos crear un foro completamente independiente para los &lt;a href="http://es.wikipedia.org/wiki/Rebeli%C3%B3n_en_la_granja"&gt;sublevados&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Por lo tanto el foro murió de cansancio y dejadez a mediados de 2006. Los buenos artistas y técnicos no veían sentido a publicar sus trabajos en un gallinero para que se pierdan entre el bullicio. Más tarde, otro de los antiguos administradores intentó reflotarlo. Compró otro motor de foros e hizo un portal de infografía con éxito relativo y aunque le he perdido la pista a la web, sé que ha tenido problemas con el hosting y se pasaba semanas inactivo. Según las últimas estadísticas (agosto de 2008), cuando está activo recibe miles de visitas al día desde google, de toda la información que hemos generado en diez años. Hay miles de palabras clave asociadas a la web y hay que decir que se hizo un gran trabajo de posicionamiento desde el inicio. La publicidad que se puso, por cierto, daba unos luctuosos $100 al año.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Conclusiones&lt;/h3&gt;&lt;br /&gt;Me he propuesto recuperar toda esa información y colgarla en algún lado. Al fin y al cabo son miles de horas las dedicadas aunque creo que fueron una buena inversión, aprendí mucho sobre páginas web, programación, mantener un proyecto grande y lo más importante, fracasar.&lt;br /&gt;&lt;br /&gt;El primer foro de infografía española hoy es &lt;a href="http://www.3dpoder.com/"&gt;3dpoder&lt;/a&gt;. Tienen un &lt;a href="http://www.foro3d.com/f40/debate-3dsymax-vs-3dpoder-62748.html"&gt;hilo sobre 3dsymax&lt;/a&gt;. No he podido leerlo entero porque tiene 20 páginas y la mitad de los mensajes son &lt;span style="font-style: italic;"&gt;offtopic&lt;/span&gt;. Incluso parece que una usuaria anuncia que va a ser madre por la página 4.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-4542122478072680040?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/4542122478072680040/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=4542122478072680040' title='8 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/4542122478072680040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/4542122478072680040'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2009/01/3dsymax-el-canal-de-la-infografia.html' title='3dsymax - El canal de la infografía española'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5QB2H105vuU/SYCEfb0ZM6I/AAAAAAAAALI/jBlZN8h8AEg/s72-c/3dsymax_logo.gif' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-6316339915665797417</id><published>2009-01-20T11:51:00.002+01:00</published><updated>2009-01-20T11:58:13.272+01:00</updated><title type='text'>Periodista estúpido I</title><content type='html'>&lt;a href="http://www.elpais.com/articulo/internet/servicio/correo/electronico/Microsoft/Yahoo/Google/seguro/elpeputec/20090120elpepunet_3/Tes"&gt;Leo en elpais.com&lt;/a&gt; que ningún webmail es seguro. Una vez han atrapado tu atención con el titular absurdo y han contabilizado tu visita (supongo que habrá un plus por atraer lectores), lees que "sólo con la pregunta secreta se saca la contraseña". Dejando de lado lo estúpida que es esta medida (especialmente cuando te sugieren que pongas tu DNI, que casi siempre se saca con una búsqueda en Google), tiene delito decir que gmail no es seguro.&lt;br /&gt;&lt;br /&gt;Creo que voy a dejar de leer a periodistas y voy a limitarme a los blogs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-6316339915665797417?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/6316339915665797417/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=6316339915665797417' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/6316339915665797417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/6316339915665797417'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2009/01/periodista-estpido-i.html' title='Periodista estúpido I'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-8911579944540918076</id><published>2009-01-16T20:35:00.003+01:00</published><updated>2009-01-16T21:04:46.103+01:00</updated><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_5QB2H105vuU/SXDnPUAjaMI/AAAAAAAAALA/gHRLNGxkArA/s1600-h/orbiter_8.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 182px;" src="http://3.bp.blogspot.com/_5QB2H105vuU/SXDnPUAjaMI/AAAAAAAAALA/gHRLNGxkArA/s320/orbiter_8.jpg" alt="" id="BLOGGER_PHOTO_ID_5291983812415416514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.botjunkie.com/2009/01/16/irish-uav-gets-lost-tries-to-make-it-home-from-africa-fails/"&gt;Leo&lt;/a&gt; que un &lt;a href="http://es.wikipedia.org/wiki/UAV"&gt;UAV&lt;/a&gt; irlandés se perdió en Chad en Diciembre de 2008 y tenía programado volver a la base cuando perdiera el contacto con ella. El operador del avión se olvidó de cambiar las coordenadas de regreso así que el &lt;a href="http://www.israeli-weapons.com/weapons/aircraft/uav/orbiter/Orbiter.html"&gt;Orbiter&lt;/a&gt; apuntó su rumbo hacia Irlanda.&lt;br /&gt;&lt;br /&gt;Cuando se acabó la batería de su motor eléctrico, cayó en el desierto.&lt;br /&gt;&lt;br /&gt;Es bastante gracioso para todos excepto para el operador y sus jefes. ¿Fallo de documentación o de operación?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-8911579944540918076?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/8911579944540918076/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=8911579944540918076' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/8911579944540918076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/8911579944540918076'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2009/01/leo-que-un-uav-irlands-se-perdi-en-chad.html' title=''/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5QB2H105vuU/SXDnPUAjaMI/AAAAAAAAALA/gHRLNGxkArA/s72-c/orbiter_8.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-6499916671150362644</id><published>2009-01-06T02:14:00.004+01:00</published><updated>2009-01-06T03:34:55.922+01:00</updated><title type='text'>Noche de vacaciones. De Gene Kelly a Darth Vader.</title><content type='html'>Por suerte vuelvo al trabajo pronto. Dejaré de perder el tiempo en viajes absurdos por Internet.&lt;br /&gt;&lt;br /&gt;No sé cómo me encuentro viendo un vídeo de &lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Singin%27_In_The_Rain"&gt;Singin' in the Rain&lt;/a&gt; (&lt;a style="font-style: italic;" href="http://www.youtube.com/watch?v=Yu6--WBPBHo"&gt;Good Morning&lt;/a&gt;[youtube]) y recuerdo que &lt;a href="http://en.wikipedia.org/wiki/Gene_Kelly"&gt;Gene Kelly&lt;/a&gt; es el que &lt;a href="http://www.youtube.com/watch?v=DP0kQFvj9rs"&gt;sale bailando&lt;/a&gt;[youtube] con &lt;a href="http://en.wikipedia.org/wiki/Stewie"&gt;Stewie&lt;/a&gt; en un capítulo de &lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Family_guy"&gt;Family Guy&lt;/a&gt; así que me pregunto con quién actuaba originalmente. Con Jerry (de &lt;a href="http://en.wikipedia.org/wiki/Tom_and_jerry"&gt;Tom y Jerry&lt;/a&gt;). En un &lt;span style="font-style: italic;"&gt;related &lt;/span&gt;de youtube me sale el vídeo "&lt;a style="font-style: italic;" href="http://www.youtube.com/watch?v=u7FUvz9Dym4"&gt;Ding fries are done&lt;/a&gt;" de &lt;a href="http://en.wikipedia.org/wiki/Peter_griffin"&gt;Peter Griffin &lt;/a&gt;y recuerdo que es una versión del que me parece el villancico más escalofriante, &lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Carol_of_the_bells"&gt;Carol of the Bells&lt;/a&gt; [&lt;a href="http://www.youtube.com/watch?v=D-_9fbLqXBg&amp;amp;feature=related"&gt;en youtube&lt;/a&gt;], que según leo en la wikipedia es de origen ucraniano (&lt;span style="font-style: italic;"&gt;Shchedryk&lt;/span&gt;, de &lt;a href="http://en.wikipedia.org/wiki/Mykola_Leontovych"&gt;Mykola Leontovych&lt;/a&gt; aunque basado a su vez en el Folk del país [&lt;a href="http://hermes.ffn.ub.es/%7Eoleg/schedryk/shchedryk.html"&gt;unas cuantas versiones en mp3&lt;/a&gt;]). Para encontrarlo, busco información sobre &lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Home_Alone_%28film%29"&gt;Home Alone&lt;/a&gt; y me sorprende ver que el responsable de la banda sonora es ni más ni menos que &lt;a href="http://en.wikipedia.org/wiki/John_Williams"&gt;John Williams&lt;/a&gt;. Por un momento pienso que es el compositor del villancico. Técnicamente es una obra en &lt;a href="http://en.wikipedia.org/wiki/Time_signature"&gt;3/4&lt;/a&gt; alternada con un impetuoso 6/8 (&lt;span style="font-style: italic;"&gt;merry merry merry Christmas&lt;/span&gt;) basada en un &lt;a href="http://es.wikipedia.org/wiki/Motivo_%28m%C3%BAsica%29"&gt;motivo musical&lt;/a&gt; llamado &lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Ostinato"&gt;ostinato&lt;/a&gt;. Básicamente es una repetición que construye la composición. Es la base de la música dance y gran parte de la electrónica y el jazz pero me intereso por otros usos, especialmente en clásica. Hablan del movimiento &lt;a href="http://www.youtube.com/watch?v=F4oDDmoWf1M"&gt;&lt;span style="font-style: italic;"&gt;Mars&lt;/span&gt;&lt;/a&gt;[youtube], de la suite &lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/The_Planets"&gt;The Planets&lt;/a&gt;, de &lt;a href="http://en.wikipedia.org/wiki/Gustav_holst"&gt;Gustav Holst&lt;/a&gt;. Al escuchar su bélico &lt;a href="http://en.wikipedia.org/wiki/Time_signature#Unusual_meters"&gt;5/4&lt;/a&gt; vuelvo a John Williams, ya que recuerda muchísimo a las escenas previas a la guerra en &lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Star_Wars"&gt;Star Wars&lt;/a&gt;. En el &lt;a href="http://en.wikipedia.org/wiki/Star_Wars_music"&gt;artículo sobre su banda sonora&lt;/a&gt; leo que &lt;span style="font-style: italic;"&gt;The Planets&lt;/span&gt; se puede escuchar en &lt;a href="http://en.wikipedia.org/wiki/Return_of_the_jedi"&gt;El Retorno del Jedi,&lt;/a&gt; pero con su movimiento &lt;a href="http://www.youtube.com/watch?v=SeF2mMUiw9o&amp;amp;feature=related"&gt;&lt;span style="font-style: italic;"&gt;Uranus&lt;/span&gt;&lt;/a&gt;[youtube]. Me pongo la película que, por cierto, he re-visto la semana pasada así que encuentro rápidamente la escena de Luke ayudando a Vader a subir a una lanzadera. Reconozco las ocho primeras notas de &lt;span style="font-style: italic;"&gt;Uranus &lt;/span&gt;pero nada más. Indago un poco, me extraña que &lt;span style="font-style: italic;"&gt;Mars &lt;/span&gt;no venga referenciado. Al final, &lt;a href="http://en.wikipedia.org/wiki/Star_Wars_music#Similarities_with_other_compositions"&gt;encuentro&lt;/a&gt; que &lt;a href="http://en.wikipedia.org/wiki/George_Lucas"&gt;George Lucas&lt;/a&gt; utilizó este movimiento como banda sonora temporal por lo que Williams la fusiló totalmente.&lt;br /&gt;&lt;br /&gt;Así que me voy a dormir.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-6499916671150362644?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/6499916671150362644/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=6499916671150362644' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/6499916671150362644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/6499916671150362644'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2009/01/noche-de-vacaciones-de-gene-kelly-darth.html' title='Noche de vacaciones. De Gene Kelly a Darth Vader.'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-2985552323266660716</id><published>2008-12-10T21:47:00.002+01:00</published><updated>2008-12-10T21:54:42.810+01:00</updated><title type='text'>Usuario estúpido II</title><content type='html'>Leo que &lt;a href="http://www.tuenti.com"&gt;tuenti&lt;/a&gt; es la cuarta búsqueda con mayor crecimiento este año, una gran noticia para ellos ya que tener usuarios que buscan en &lt;a href="http://google.com"&gt;G&lt;/a&gt; en vez de entrar directamente en la página es justo lo que buscan los anunciantes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-2985552323266660716?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/2985552323266660716/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=2985552323266660716' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/2985552323266660716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/2985552323266660716'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/12/usuario-estpido-ii.html' title='Usuario estúpido II'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-4223910082150965424</id><published>2008-12-04T09:20:00.003+01:00</published><updated>2008-12-04T09:47:52.266+01:00</updated><title type='text'>gmail</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_5QB2H105vuU/STeYLRUL_iI/AAAAAAAAAK4/Sj1BruwcjhQ/s1600-h/20060226-gmail-logo-google-tm.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 232px;" src="http://2.bp.blogspot.com/_5QB2H105vuU/STeYLRUL_iI/AAAAAAAAAK4/Sj1BruwcjhQ/s320/20060226-gmail-logo-google-tm.jpg" borde="" r="0" alt="" id="BLOGGER_PHOTO_ID_5275852807881883170" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El servicio de correo electrónico de Google es con diferencia el mejor, el más rápido, el más usable y completo y el mejor pensado. Cada vez que tengo que abrir hotmail pienso quién será el primate que sigue utilizándolo. (La mayoría&lt;acronym title="nunca sé si este punto va dentro o fuera del paréntesis xD"&gt;.&lt;/acronym&gt;)&lt;br /&gt;&lt;br /&gt;Puesto que la página de gmail es una de las que más rápido carga a pesar de ser relativamente compleja, que además cuenta con una versión aún más liviana en "HTML estándar" y que además el motor de búsqueda es simplemente perfecto, la estoy empezando a utilizar para mis anotaciones.&lt;br /&gt;&lt;br /&gt;Por ejemplo, si alguien me da una receta que quiero conservar, &lt;span style="font-weight: bold;"&gt;me mando un correo&lt;/span&gt; y pongo las palabras clave en el asunto "receta pollo a la cerveza". También tengo cosas guardadas desde hace años con palabras como "muebles cocina", "chistes", "posters", "libros"...&lt;br /&gt;&lt;br /&gt;Además uso los &lt;span style="font-weight: bold;"&gt;borradores &lt;/span&gt;para hacer listas que necesito editar. Por ejemplo, tengo uno con todos los teléfonos de la agenda de mi móvil, por si en algún momento necesito uno y no lo llevo encima. También una lista llamada "viajes" que repaso cada vez que hago una maleta y la clásica "to do".&lt;br /&gt;&lt;br /&gt;Como sé que voy a tener la cuenta de gmail durante muchos años, está bien tener un "registro de la vida" que además puedo consultar y editar desde el móvil.&lt;br /&gt;&lt;br /&gt;...lo que me recuerda que tengo que &lt;a href="http://www.genbeta.com/2008/11/05-gmail-backup-hacer-copias-de-seguridad-de-los-correos-de-gmail-comodamente"&gt;hacer un backup&lt;/a&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-4223910082150965424?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/4223910082150965424/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=4223910082150965424' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/4223910082150965424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/4223910082150965424'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/12/gmail.html' title='gmail'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5QB2H105vuU/STeYLRUL_iI/AAAAAAAAAK4/Sj1BruwcjhQ/s72-c/20060226-gmail-logo-google-tm.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-7439402137610501410</id><published>2008-11-20T16:08:00.002+01:00</published><updated>2008-11-20T16:15:53.230+01:00</updated><title type='text'></title><content type='html'>&lt;blockquote&gt;&lt;p&gt;&lt;br /&gt;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.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p align="right"&gt;&lt;br /&gt;Arthur C. Clarke - &lt;em&gt;2001: A Space Oddyssey&lt;/em&gt; (1968)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-7439402137610501410?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/7439402137610501410/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=7439402137610501410' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/7439402137610501410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/7439402137610501410'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/11/floyd-se-preguntaba-veces-si-el-bloque.html' title=''/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-1641169342661583973</id><published>2008-11-19T09:17:00.005+01:00</published><updated>2011-01-31T19:50:38.611+01:00</updated><title type='text'>Apple el cerrado</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_5QB2H105vuU/SSPZoWNmnlI/AAAAAAAAAKw/9fT9s9PYZ_k/s1600-h/thumb-HomerApple.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5270295276134243922" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 220px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_5QB2H105vuU/SSPZoWNmnlI/AAAAAAAAAKw/9fT9s9PYZ_k/s320/thumb-HomerApple.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Sigo con mi campaña contra Apple. A pesar de que admiro a la compañía por su historia, que Jobs me parece una herramienta de márketing épica y que realmente hace muy buena ingeniería, no aguanto a los fanboys y seguidores aférrimos que ha creado.&lt;br /&gt;&lt;br /&gt;Es un ejército de dos tipos de gente, los que simplemente quieren llamar la atención con su manzana iluminada (lo cual es lícito, como llevar un coche bonito o ropa de marca) y los que hacen cola para comprarse un aparato que te va a costar mil euros al año, que es un ladrillo y que para que no se raye va a ponerle una carcasa que esconda su estética y lo haga aún más grande porque &lt;em&gt;Jobs dixit&lt;/em&gt;. En este segundo grupo hay gente muy racional que en este tema se vuelve cerrada y absurda. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Mientras por un lado Google está intentando hacer un sistema operativo libre y abierto, por otro está Microsoft trabajando en su Windows Mobile que aunque es feo y propietario, &lt;a href="http://gizmodo.com/5090205/flash-for-windows-mobile-about-to-leapfrog-iphone-for-no-good-reason"&gt;permite cualquier tipo de aplicación&lt;/a&gt;. De hecho, es posible bajar una edición gratuita de Visual Studio y crear aplicaciones para WinMo sólo arrastrando componentes a un lienzo.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Después, muy al final, está apple con el sistema operativo de su iPhone que se ha superado a sí mismo. En Apple &lt;strong&gt;no quieren permitir aplicaciones Flash&lt;/strong&gt; (todo un universo de aplicaciones hoy en día on y offline) &lt;strong&gt;porque sería un coladero de aplicaciones de terceros[&lt;/strong&gt;&lt;a href="http://www.elpais.com/articulo/internet/iPhone/soporta/Flash/elpeputec/20081119elpepunet_1/Tes"&gt;al menos eso opinan en wired&lt;/a&gt;&lt;strong&gt;]&lt;/strong&gt;. La única forma de instalar lícitamente una aplicación en un iPhone es mediante la tienda de Apple &lt;a href="http://gizmodo.com/5089845/even-google-gets-shafted-by-apples-ridiculous-app+approval-process"&gt;previa aprobación&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-1641169342661583973?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/1641169342661583973/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=1641169342661583973' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/1641169342661583973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/1641169342661583973'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/11/apple-el-cerrado.html' title='Apple el cerrado'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5QB2H105vuU/SSPZoWNmnlI/AAAAAAAAAKw/9fT9s9PYZ_k/s72-c/thumb-HomerApple.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-6169997361222972650</id><published>2008-09-23T20:47:00.008+02:00</published><updated>2008-10-20T18:04:57.457+02:00</updated><title type='text'>Mi guía de reinstalación</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_5QB2H105vuU/SPyrC4s-W1I/AAAAAAAAAKc/FvXrlP4sHmY/s1600-h/windows_vista_logo.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_5QB2H105vuU/SPyrC4s-W1I/AAAAAAAAAKc/FvXrlP4sHmY/s320/windows_vista_logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5259266530931006290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nunca apunto las cosas que instalo al formatear o comprar un nuevo PC, si lo escribo aquí lo haré con más cuidado:&lt;br /&gt;&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Windows Vista&lt;/span&gt;: 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:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;audiodg.exe&lt;br /&gt;&lt;/li&gt;&lt;li&gt;csrss.exe (x2)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;dwm.exe&lt;/li&gt;&lt;li&gt;explorer.exe (22.6Mb Memoria)&lt;/li&gt;&lt;li&gt;lsass.exe&lt;/li&gt;&lt;li&gt;lsm.exe&lt;br /&gt;&lt;/li&gt;&lt;li&gt;MSASCui.exe&lt;/li&gt;&lt;li&gt;SearchIndexer.exe&lt;/li&gt;&lt;li&gt;services.exe&lt;/li&gt;&lt;li&gt;sidebar.exe&lt;/li&gt;&lt;li&gt;SLsvc.exe&lt;/li&gt;&lt;li&gt;smss.exe&lt;/li&gt;&lt;li&gt;spoolsv.exe&lt;/li&gt;&lt;li&gt;svchost.exe (x11)&lt;/li&gt;&lt;li&gt;System&lt;/li&gt;&lt;li&gt;taskeng.exe (x2)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;taskmgr.exe&lt;br /&gt;&lt;/li&gt;&lt;li&gt;wininit.exe&lt;/li&gt;&lt;li&gt;winlogon.exe&lt;/li&gt;&lt;/ul&gt;416MB de RAM usados, con 1Gb en total.&lt;br /&gt;&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Desactivar el UAC&lt;/span&gt; para que no salga el mensaje de ¿Quiere continuar? cada vez que se hace algo más o menos raro (Panel de control -&gt; Cuentas de usuario)&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Actualizar&lt;/span&gt; el Vista (&lt;span style="font-weight: bold;"&gt;evita antivirus&lt;/span&gt;, antimalwave, antitroyanos, firewalls y antispyware).&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;EmEditor&lt;/span&gt;. Un editor de texto que se añade al botón derecho de todos los ficheros y es rapidísimo. $39.&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Firefox &lt;/span&gt;+ extensiones + buscadores&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;PowerISO&lt;/span&gt;&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Office 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(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.)&lt;br /&gt;- Quitar el centro de bienvenida.&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;WinRAR &lt;/span&gt;3.71 Developer Edition&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Visio 2007&lt;/span&gt;. Un sencillo programa para crear diagramas de todo tipo. Muy útil para hacer esquemas rápidos eléctricos o de flujo.&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Putty &lt;/span&gt;(SSH)&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;WinSCP &lt;/span&gt;(Transferencia de ficheros por SSH)&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;K-Lite Mega Codec Pack&lt;/span&gt; (Ver divx, xvid, mov, mp4...)&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Filezilla &lt;/span&gt;(FTP)&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Microsoft Visual Studio 2008&lt;/span&gt; (Lo bueno de Microsoft)&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Microsoft Live Messenger&lt;/span&gt; (Lo malo de Microsoft) + apatch + messenger plus&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Skype&lt;/span&gt;&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;TortoiseSVN&lt;/span&gt;&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Adobe Flash CS3&lt;/span&gt;&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Adobe Photoshop CS3&lt;/span&gt;&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Adobe Illustrator CS3&lt;/span&gt;&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Orcad &lt;/span&gt;(Diseño y simulación de circuitos electrónicos)&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;ActiveSync &lt;/span&gt;(Para sincronizar la HTC)&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Properllerhead Reason&lt;/span&gt; (Música: Secuenciador, sampleadores, sintetizadores, etc.)&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt; Ableton Live&lt;/span&gt;(Lo mismo, diferente)&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Sony Sound Forge&lt;/span&gt; (Edición de audio)&lt;br /&gt;- Reproductor de &lt;span style="font-weight: bold;"&gt;Last.fm&lt;/span&gt; (Reproductor de radio que se adapta a tus gustos, ligero y rápido)&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Serious Samurize&lt;/span&gt; (Tengo que ver si hay algo para Vista como esto; hace gráficas de rendimiento del sistema en tiempo real)&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;FileZilla &lt;/span&gt;(cliente FTP)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;To be updated.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-6169997361222972650?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/6169997361222972650/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=6169997361222972650' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/6169997361222972650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/6169997361222972650'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/09/mi-gua-de-reinstalacin.html' title='Mi guía de reinstalación'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5QB2H105vuU/SPyrC4s-W1I/AAAAAAAAAKc/FvXrlP4sHmY/s72-c/windows_vista_logo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-1211853767757301423</id><published>2008-09-21T13:50:00.009+02:00</published><updated>2008-10-20T17:58:36.051+02:00</updated><title type='text'>Apple TV Take 2 Hack</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_5QB2H105vuU/SPyppI7XqjI/AAAAAAAAAKE/K2a8OCEhM0Q/s1600-h/macworld08204.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_5QB2H105vuU/SPyppI7XqjI/AAAAAAAAAKE/K2a8OCEhM0Q/s320/macworld08204.jpg" alt="" id="BLOGGER_PHOTO_ID_5259264989098125874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;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:&lt;br /&gt;&lt;br /&gt;- 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.&lt;br /&gt;- Ahora tengo un ATV completamente nuevo y no funciona nada de lo que instalé.&lt;br /&gt;- 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.&lt;br /&gt;- 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):&lt;br /&gt;&lt;br /&gt;http://www.chrysocome.net/download&lt;br /&gt;&lt;br /&gt;- Me bajo dd-05, por ejemplo.&lt;br /&gt;- Ejecuto dd.exe y se tira un buen rato hasta que saca mucha información, de la que me interesa:&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;\\.\Volume{830e44e5-5b88-11da-a701-00c09fe3fe7a}\&lt;br /&gt;link to \\?\Device\Harddisk1\DP(1)0-0+4&lt;br /&gt;removeable media&lt;br /&gt;Mounted on \\.\e:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- Creo la imagen en un pendrive de 512Mb:&lt;br /&gt;&lt;br /&gt;dd if=ATVpatchstick2.1.img of=\\?\Device\Harddisk1\Partition0 bs=1M --progress&lt;br /&gt;&lt;br /&gt;( - 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...)&lt;br /&gt;&lt;br /&gt;- La copio al pendrive. No cabe en el de 512 porque la imagen es de 1GB.&lt;br /&gt;- No tengo un pendrive mayor pero sí tengo uno que desmonté de 2GB... pues le pongo un cable:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_5QB2H105vuU/SPypA0c6cjI/AAAAAAAAAJ8/CS04g9pxhm8/s1600-h/200809211515_043.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_5QB2H105vuU/SPypA0c6cjI/AAAAAAAAAJ8/CS04g9pxhm8/s320/200809211515_043.jpg" alt="" id="BLOGGER_PHOTO_ID_5259264296406905394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Meto el patchstick en el puerto USB del ATV y reinicio.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_5QB2H105vuU/SPyqS5v2VxI/AAAAAAAAAKM/6p6WntblWa4/s1600-h/200809211453_041.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_5QB2H105vuU/SPyqS5v2VxI/AAAAAAAAAKM/6p6WntblWa4/s320/200809211453_041.jpg" alt="" id="BLOGGER_PHOTO_ID_5259265706577778450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Compruebo que el SSH está activado en frontrow@192.168.1.10 que es la ip configurada de mi ATV.&lt;br /&gt;- 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.&lt;br /&gt;- Pues no entra.&lt;br /&gt;- Miro la tabla DHCP del router. No ha conservado la IP, entro con 192.168.1.205.&lt;br /&gt;- No entra. Esa es una que se quedó en la tabla DHCP pero ya no es nada. Intento de nuevo.&lt;br /&gt;- AGGH, qué ip tiene???&lt;br /&gt;- Me bajo iptools ya que en este PC no tengo nada para escanear la red.&lt;br /&gt;- No era este el iptools que esperaba pero bueno lo instalo. Va uno por uno. Eterno...&lt;br /&gt;- Pienso que igual lo que hace el patchstick es instalar el SSH, no ejecutar uno. Reinicio el ATV sin el pendrive.&lt;br /&gt;- ¡Ya hay SSH!&lt;br /&gt;&lt;br /&gt;- Instalo nitoTV:&lt;br /&gt;&lt;pre&gt;http://nitosoft.com/nitoTVInstaller_tt.zip&lt;br /&gt;&lt;/pre&gt;- Paso el contenido del zip al ATV con WinSCP (es para transferir ficheros por SSH).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;-bash-2.05b$ sudo ./installme&lt;br /&gt;installer: Package name is nitoTV 0.5.6&lt;br /&gt;installer: Installing onto volume mounted at /.&lt;br /&gt;installer: The install was successful.&lt;br /&gt;Restarting Finder...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- En el menú del ATV: nitoTV -&gt; install software -&gt;&lt;br /&gt;-&gt;Perian (los codecs para poder ver divx, etc)&lt;br /&gt;-&gt;mplayer codecs&lt;br /&gt;-&gt;Turbo's Kextloader (aún no tengo muy claro para qué es esto)&lt;br /&gt;-&gt;Smart Installer (todo lo que sea smart...)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_5QB2H105vuU/SPyqTWfUfdI/AAAAAAAAAKU/81xCDen6nv8/s1600-h/200809211532_046.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_5QB2H105vuU/SPyqTWfUfdI/AAAAAAAAAKU/81xCDen6nv8/s320/200809211532_046.jpg" alt="" id="BLOGGER_PHOTO_ID_5259265714293079506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;-ERROR! Necesito un tal &lt;a href="http://www.apple.com/support/downloads/macosx1049comboupdateintel.html" class="external text" title="http://www.apple.com/support/downloads/macosx1049comboupdateintel.html" rel="nofollow"&gt;MacOS X 10.4.9 Combo Updater&lt;/a&gt; (310MB agggh!).&lt;br /&gt;- Lo copio en ~/Documents.&lt;br /&gt;-&gt;Smart Installer de nuevo. Hace un montón de cosas y reinicio el ATV.&lt;br /&gt;- 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.&lt;br /&gt;- Problemas con las carpetas compartidas, tengo que crear en el windows un usuario "atv" para quitarme de lios.&lt;br /&gt;- 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:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;plist&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;version=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;"1.0"&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;dict&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;0&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;dict&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;autoMount&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;true&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;customMount&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;integer&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;1&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/integer&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;customPath&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;/Users/frontrow/Movies&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;mountAddress&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;windows02&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;mountName&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;G&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;mountType&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;integer&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;2&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/integer&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;mountVolume&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;G&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;requiresAuth&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;integer&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;0&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/integer&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;userLogin&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;****&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;userPassword&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;****&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/true&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;1&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;dict&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;autoMount&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;true&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;customMount&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;integer&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;1&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/integer&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;customPath&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;/Users/frontrow/Movies&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;mountAddress&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;windows02&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;mountName&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;Series&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;mountType&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;integer&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;2&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/integer&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;mountVolume&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;Series&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;requiresAuth&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;integer&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;0&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/integer&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;userLogin&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;****&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;userPassword&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/key&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;****&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/string&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/true&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/dict&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/dict&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/dict&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/plist&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;&lt;strong&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;/span&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;Este fichero es "/mnt/Scratch/Users/frontrow/Library/Application Support/nito/mounts.plist".&lt;br /&gt;&lt;br /&gt;- Abro el nitoTV y ejecuto un .avi.&lt;br /&gt;- Fin.&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-1211853767757301423?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/1211853767757301423/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=1211853767757301423' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/1211853767757301423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/1211853767757301423'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/09/apple-tv-take-2-hack.html' title='Apple TV Take 2 Hack'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5QB2H105vuU/SPyppI7XqjI/AAAAAAAAAKE/K2a8OCEhM0Q/s72-c/macworld08204.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-3599591549043180032</id><published>2008-09-06T13:22:00.003+02:00</published><updated>2008-09-06T13:45:43.224+02:00</updated><title type='text'>Sobre si el LHC va a destruir el planeta...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_5QB2H105vuU/SMJtWH8DmDI/AAAAAAAAAIs/Xes2ONySQDA/s1600-h/lhc.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_5QB2H105vuU/SMJtWH8DmDI/AAAAAAAAAIs/Xes2ONySQDA/s400/lhc.jpg" alt="" id="BLOGGER_PHOTO_ID_5242873143068170290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;Mira, hay un &lt;a alt="0.0000000000000000001"&gt;10^-19&lt;/a&gt; de posibilidades y tienes &lt;a alt="0.00000000001"&gt;10^-11&lt;/a&gt; de evaporarte mientras te afeitas.&lt;br /&gt;&lt;/blockquote&gt;Vía &lt;a href="http://www.boingboing.net/2008/09/04/lhc-will-not-destroy.html"&gt;BoingBoing&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-3599591549043180032?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/3599591549043180032/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=3599591549043180032' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/3599591549043180032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/3599591549043180032'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/09/sobre-si-el-lhc-va-destruir-el-planeta.html' title='Sobre si el LHC va a destruir el planeta...'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5QB2H105vuU/SMJtWH8DmDI/AAAAAAAAAIs/Xes2ONySQDA/s72-c/lhc.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-5232162761217964300</id><published>2008-09-01T22:30:00.006+02:00</published><updated>2008-09-06T13:47:11.176+02:00</updated><title type='text'>Comienzan las guerras clon</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_5QB2H105vuU/SMJrec_OwvI/AAAAAAAAAIc/AihtomjZFO8/s1600-h/300px-RQ-9_Predator.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_5QB2H105vuU/SMJrec_OwvI/AAAAAAAAAIc/AihtomjZFO8/s400/300px-RQ-9_Predator.jpg" alt="" id="BLOGGER_PHOTO_ID_5242871087134327538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gizmodo.com/5042370/first-fully+unmanned-machine-combat-in-history-heralds-robotic-apocalypse"&gt;Leo en Gizmodo&lt;/a&gt; que recientemente un &lt;a href="http://en.wikipedia.org/wiki/UCAV"&gt;U[C]AV&lt;/a&gt; (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.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;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.&lt;br /&gt;&lt;br /&gt;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 &lt;span style="font-style: italic;"&gt;tan &lt;/span&gt;seguros y caros.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;  &lt;div&gt; &lt;/div&gt; &lt;div&gt;Me imagino que los nuevos oficiales del ejército serán los diseñadores de videojuegos y sus estrategas, los &lt;span style="font-style: italic;"&gt;gamers &lt;/span&gt;del &lt;i&gt;StarCraft&lt;/i&gt; o del &lt;i&gt;Age of Empires&lt;/i&gt; 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 &lt;a href="http://es.wikipedia.org/wiki/El_juego_de_Ender"&gt;&lt;span style="font-style: italic;"&gt;El juego de Ender&lt;/span&gt;&lt;/a&gt;, se reclutarán los oficiales del futuro mirando los &lt;span style="font-style: italic;"&gt;high scores &lt;/span&gt;de los juegos de sus consolas.&lt;/div&gt;  &lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_5QB2H105vuU/SMJsmB-UtYI/AAAAAAAAAIk/jVJsNgtXU8I/s1600-h/ageofempires.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_5QB2H105vuU/SMJsmB-UtYI/AAAAAAAAAIk/jVJsNgtXU8I/s400/ageofempires.jpg" alt="" id="BLOGGER_PHOTO_ID_5242872316833346946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Por supuesto que todas estas guerras se seguirán por Internet y las casas de apuestas harán el Agosto.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt; &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-5232162761217964300?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/5232162761217964300/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=5232162761217964300' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/5232162761217964300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/5232162761217964300'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/09/comienzan-las-guerras-clon.html' title='Comienzan las guerras clon'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5QB2H105vuU/SMJrec_OwvI/AAAAAAAAAIc/AihtomjZFO8/s72-c/300px-RQ-9_Predator.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-6838237651558620933</id><published>2008-08-25T17:19:00.006+02:00</published><updated>2008-08-25T19:29:01.093+02:00</updated><title type='text'>Más sabe el diablo por viejo</title><content type='html'>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 &lt;span style="font-style: italic;"&gt;post&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;La idea general es que en industria &lt;span style="font-weight: bold;"&gt;más vale el que más tiempo lleva&lt;/span&gt;. 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.&lt;br /&gt;&lt;br /&gt;Es chocante hablar con un tipo de 40 años sobre rectificadores trifásicos y que te suelte:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Claro que la masa es flotante, ¡eso es obvio!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La trifásica para mí ha sido muchas cosas pero &lt;span style="font-style: italic;"&gt;obvia&lt;/span&gt;...&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;El jefe.&lt;/h3&gt;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, &lt;span style="font-weight: bold;"&gt;no sabe ni quiere saber&lt;/span&gt; de nuevas técnicas ni soluciones. Además, lo normal es que las aplicase mal.&lt;br /&gt;&lt;br /&gt;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, &lt;span style="font-weight: bold;"&gt;lo sabe todo&lt;/span&gt; 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.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_5QB2H105vuU/SLLbDTyib_I/AAAAAAAAAIM/YD0WAihkf-o/s1600-h/lab.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_5QB2H105vuU/SLLbDTyib_I/AAAAAAAAAIM/YD0WAihkf-o/s400/lab.jpg" alt="" id="BLOGGER_PHOTO_ID_5238490166483644402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Aprendizaje.&lt;/h3&gt;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...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_5QB2H105vuU/SLLbDDgNLTI/AAAAAAAAAIE/FJ4B5RPSYQY/s1600-h/220px-LaptopOLPC_a.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_5QB2H105vuU/SLLbDDgNLTI/AAAAAAAAAIE/FJ4B5RPSYQY/s400/220px-LaptopOLPC_a.jpg" alt="" id="BLOGGER_PHOTO_ID_5238490162111786290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_5QB2H105vuU/SLLbCwIPuEI/AAAAAAAAAH8/I508nMrktJ8/s1600-h/sold.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_5QB2H105vuU/SLLbCwIPuEI/AAAAAAAAAH8/I508nMrktJ8/s400/sold.jpg" alt="" id="BLOGGER_PHOTO_ID_5238490156911016002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Transcendencia.&lt;/h3&gt;En informática hay una base teórica creciente y un fondo que es capaz de generar &lt;span style="font-weight: bold;"&gt;discusión política&lt;/span&gt; (open source frente a sistemas propietarios), se plantean &lt;span style="font-weight: bold;"&gt;problemas filosóficos&lt;/span&gt; (heredados de las matemáticas), &lt;span style="font-weight: bold;"&gt;cuestiones sociales &lt;/span&gt;(&lt;a href="http://es.wikipedia.org/wiki/OLPC"&gt;OLPC&lt;/a&gt;) y surgen movimientos importantísimos (soft e ideas libres, wikipedia). Hay trasfondo más allá de las líneas de código.&lt;br /&gt;&lt;br /&gt;En la industria hay plazos que cumplir y hojas de características. Creo que nadie ha escrito un libro comparando a &lt;a href="http://es.wikipedia.org/wiki/Leyes_de_Kirchoff"&gt;Kirchoff&lt;/a&gt; con Jesucristo. Los números son discretos y finitos. El tornillo se aprieta en el sentido que diga la especificación. Punto.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Valía.&lt;/h3&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Habla con fulanito que es quien sabe de esto.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Conclusión.&lt;/h3&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_5QB2H105vuU/SLLfgb3IkDI/AAAAAAAAAIU/9s2uA22GTeA/s1600-h/a380.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_5QB2H105vuU/SLLfgb3IkDI/AAAAAAAAAIU/9s2uA22GTeA/s400/a380.jpg" alt="" id="BLOGGER_PHOTO_ID_5238495064913121330" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-6838237651558620933?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/6838237651558620933/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=6838237651558620933' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/6838237651558620933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/6838237651558620933'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/08/ms-sabe-el-diablo-por-viejo.html' title='Más sabe el diablo por viejo'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5QB2H105vuU/SLLbDTyib_I/AAAAAAAAAIM/YD0WAihkf-o/s72-c/lab.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-8181942346292074028</id><published>2008-08-19T08:55:00.012+02:00</published><updated>2008-08-19T12:40:55.616+02:00</updated><title type='text'>HTC Touch Diamond y el teléfono inteligente</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_5QB2H105vuU/SKqfCLGHMwI/AAAAAAAAAH0/NAD6kgG0OaE/s1600-h/htc_diamond.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5236172376458605314" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_5QB2H105vuU/SKqfCLGHMwI/AAAAAAAAAH0/NAD6kgG0OaE/s400/htc_diamond.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;El Diamond es mi nuevo &lt;em&gt;terminal móvil&lt;/em&gt;, porque lo de &lt;em&gt;teléfono móvil&lt;/em&gt; es muy 2007.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;Tras una semana utilizándolo, puedo dar algunos consejos y aclarar cosas.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;En general es un maquinón&lt;/strong&gt; 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.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Hay que tener en cuenta que es un sistema Windows multitarea, no un autómata programado para funciones básicas por lo que &lt;strong&gt;hay que acostumbrarse a esperar a que las aplicaciones y pantallas se abran&lt;/strong&gt;. 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.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Por el otro lado, es un &lt;strong&gt;Windows&lt;/strong&gt; 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 &lt;a href="http://www.koushikdutta.com/2008/07/using-htc-touch-diamond-sensor-sdk-from.html"&gt;ya tiene su wrapper&lt;/a&gt; para utilizarlo desde C#.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;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.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;También se puede tocar el registro para hacer cientos de &lt;strong&gt;tweaks&lt;/strong&gt; que ya están documentados por los foros.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;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 &lt;a href="http://es.wikipedia.org/wiki/Android"&gt;Android&lt;/a&gt; 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á &lt;strong&gt;cerrado&lt;/strong&gt; a su inflexible hardware. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Sobre la &lt;strong&gt;interfaz gráfica&lt;/strong&gt;, 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:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_5QB2H105vuU/SKqaI87wiqI/AAAAAAAAAHs/HHYKex4Dm6I/s1600-h/vauss.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5236166995358026402" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_5QB2H105vuU/SKqaI87wiqI/AAAAAAAAAHs/HHYKex4Dm6I/s400/vauss.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;El TouchFlo3D es la aplicación que han hecho en HTC como&lt;strong&gt; interfaz gráfica principal&lt;/strong&gt;, 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.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;El hecho de que &lt;strong&gt;no tenga teclado&lt;/strong&gt; es acostumbrarse. Para escribir cosas largas está el puntero aunque con un poco de práctica se escribe bastante bien con los dedos.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Se &lt;strong&gt;ensucia&lt;/strong&gt; 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. &lt;strong&gt;No pesa&lt;/strong&gt; 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.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;La &lt;strong&gt;batería&lt;/strong&gt; 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. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;Para fardar&lt;/strong&gt;, pero de dudosa utilidad: &lt;/div&gt;&lt;br /&gt;&lt;div&gt;- &lt;strong&gt;Ver un divx a través de la red&lt;/strong&gt;, conectado por Wi-Fi desde la piscina con la colección de películas y series en un PC en casa.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;- &lt;strong&gt;Escuchar música por GPRS/UMTS&lt;/strong&gt; desde last.fm o desde un servidor en casa (utilicé gnump3d hace tiempo para esto pero no lo he probado desde el móvil)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;- Usar &lt;strong&gt;WebCamera Plus &lt;/strong&gt;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.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;- Usar el &lt;strong&gt;GPS&lt;/strong&gt; con el TOMTOM. Además tiene una función para coger satélites mucho más rápido.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Vínculos&lt;/strong&gt;:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;- &lt;a href="http://www.htcmania.com/"&gt;Foro de HTCMANIA&lt;/a&gt;, la comunidad más activa de habla hispana.&lt;/div&gt;&lt;div&gt;- &lt;a href="http://xda-developers.com/"&gt;Foro de xda-developers&lt;/a&gt;, la comunidad más activa en el i+d de las máquinas HTC, en inglés.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-8181942346292074028?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/8181942346292074028/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=8181942346292074028' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/8181942346292074028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/8181942346292074028'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/08/htc-touch-diamond-y-el-telfono.html' title='HTC Touch Diamond y el teléfono inteligente'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5QB2H105vuU/SKqfCLGHMwI/AAAAAAAAAH0/NAD6kgG0OaE/s72-c/htc_diamond.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-2326692369835271945</id><published>2008-07-08T21:28:00.015+02:00</published><updated>2008-07-10T15:57:43.982+02:00</updated><title type='text'>Lowrey Symphony Holiday</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_5QB2H105vuU/SHXhfHgrYsI/AAAAAAAAAGM/XvZ-_TMcQFc/s1600-h/lowrey_front.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_5QB2H105vuU/SHXhfHgrYsI/AAAAAAAAAGM/XvZ-_TMcQFc/s400/lowrey_front.jpg" alt="" id="BLOGGER_PHOTO_ID_5221327267714261698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Lowrey Symphony Holiday (1975)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Al activar el &lt;a href="http://en.wikipedia.org/wiki/Leslie_speaker"&gt;Leslie&lt;/a&gt; suena un ruido parecido a lo que debió ser el Big Bang. El motor no está en las mejores condiciones, pero funciona.&lt;br /&gt;&lt;br /&gt;El problema es que las teclas no suenan, directamente. No sale sonido, sólo ruido.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_5QB2H105vuU/SHXi7q3GfyI/AAAAAAAAAGU/w6in1SN7Roc/s1600-h/lowrey_back.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_5QB2H105vuU/SHXi7q3GfyI/AAAAAAAAAGU/w6in1SN7Roc/s400/lowrey_back.jpg" alt="" id="BLOGGER_PHOTO_ID_5221328857751519010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;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:&lt;br /&gt;&lt;br /&gt;Placas:&lt;br /&gt;- Sonidos de ritmo&lt;br /&gt;- Secuenciador de ritmo&lt;br /&gt;- Generador de chorus&lt;br /&gt;- Filtros de las cuerdas&lt;br /&gt;- Filtros de las flautas&lt;br /&gt;&lt;br /&gt;Otros:&lt;br /&gt;- Tanque de reverberación (es la misteriosa bolsa negra, en medio)&lt;br /&gt;- Cabina del subwoofer&lt;br /&gt;- Leslie (original, tapado con gomaespuma)&lt;br /&gt;- Fuente de alimentación, volumen general y amplificadores&lt;br /&gt;- Pedales&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_5QB2H105vuU/SHXjkCtfUaI/AAAAAAAAAGc/q5YfQsDbjs8/s1600-h/lowrey_generador_chorus.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_5QB2H105vuU/SHXjkCtfUaI/AAAAAAAAAGc/q5YfQsDbjs8/s400/lowrey_generador_chorus.jpg" alt="" id="BLOGGER_PHOTO_ID_5221329551348421026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Arriba: Circuitería de ritmo. Frente: Filtros de chorus.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_5QB2H105vuU/SHXklTv2vbI/AAAAAAAAAGk/8vWy2K-SPwY/s1600-h/lowrey_filtro_flautas.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_5QB2H105vuU/SHXklTv2vbI/AAAAAAAAAGk/8vWy2K-SPwY/s400/lowrey_filtro_flautas.jpg" alt="" id="BLOGGER_PHOTO_ID_5221330672613244338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Arriba: Circuitería de ritmo. Frente: Filtros de flautas.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_5QB2H105vuU/SHXlSjKT64I/AAAAAAAAAGs/ueQGyWhGWjg/s1600-h/lowrey_filtro_strings.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_5QB2H105vuU/SHXlSjKT64I/AAAAAAAAAGs/ueQGyWhGWjg/s400/lowrey_filtro_strings.jpg" alt="" id="BLOGGER_PHOTO_ID_5221331449844853634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Arriba: Circuitería de ritmo. Frente: Filtros de cuerdas.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_5QB2H105vuU/SHXlyFu4lnI/AAAAAAAAAG0/myawI8BpRms/s1600-h/lowrey_filtros_altavoces.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_5QB2H105vuU/SHXlyFu4lnI/AAAAAAAAAG0/myawI8BpRms/s400/lowrey_filtros_altavoces.jpg" alt="" id="BLOGGER_PHOTO_ID_5221331991701001842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Filtros de audio&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_5QB2H105vuU/SHXmiXMf0VI/AAAAAAAAAG8/v8gklZX7jGw/s1600-h/lowrey_psu_amp2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_5QB2H105vuU/SHXmiXMf0VI/AAAAAAAAAG8/v8gklZX7jGw/s400/lowrey_psu_amp2.jpg" alt="" id="BLOGGER_PHOTO_ID_5221332821022331218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Pedal de volumen, fuente de alimentación y amplificación&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_5QB2H105vuU/SHXnWT2VYkI/AAAAAAAAAHE/HTAFyz3tb88/s1600-h/lowrey_psu_amp1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_5QB2H105vuU/SHXnWT2VYkI/AAAAAAAAAHE/HTAFyz3tb88/s400/lowrey_psu_amp1.jpg" alt="" id="BLOGGER_PHOTO_ID_5221333713477263938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;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.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_5QB2H105vuU/SHXvv9mgO0I/AAAAAAAAAHM/tU9sH-EJmQ4/s1600-h/lowrey_leslie1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_5QB2H105vuU/SHXvv9mgO0I/AAAAAAAAAHM/tU9sH-EJmQ4/s400/lowrey_leslie1.jpg" alt="" id="BLOGGER_PHOTO_ID_5221342950274906946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Altavoz Leslie&lt;/span&gt;. Consiste en hacer girar un altavoz para conseguir un trémolo (fluctuación de volumen). Este efecto se puede apreciar en &lt;span style="font-weight: bold;"&gt;Lucy in the Sky with Diamonds&lt;/span&gt;, por ejemplo. Ojo a las instrucciones de mantenimiento (click para agrandar).&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_5QB2H105vuU/SHYD3pHwfUI/AAAAAAAAAHU/YzJnXhtYBy4/s1600-h/lowrey_pedalera.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_5QB2H105vuU/SHYD3pHwfUI/AAAAAAAAAHU/YzJnXhtYBy4/s400/lowrey_pedalera.jpg" alt="" id="BLOGGER_PHOTO_ID_5221365072448748866" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Pedalera en regulares condiciones.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_5QB2H105vuU/SHYRviuWVII/AAAAAAAAAHc/WxOnZQGLzXM/s1600-h/lowrey_bottom.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_5QB2H105vuU/SHYRviuWVII/AAAAAAAAAHc/WxOnZQGLzXM/s400/lowrey_bottom.jpg" alt="" id="BLOGGER_PHOTO_ID_5221380326455399554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Colocación de los altavoces frontales. Leslie a la izquierda, subwoofer arriba a la derecha, graves abajo a la derecha.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:130%;"&gt;Algunas preguntas&lt;/span&gt;:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;La obvia: &lt;span style="font-weight: bold;"&gt;¿Por qué no funciona?&lt;/span&gt; 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.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;¿Qué integrado se utiliza en las placas de coro, flauta y cuerda?&lt;/span&gt; No he encontrado nada en Google con la referencia P-24103 RAYT7643.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;¿Qué valor puede tener?&lt;/span&gt; Según he leido &lt;a href="http://www.cgs.synth.net/organ/tgs.html"&gt;aquí&lt;/a&gt;, se habla de $1000.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;¿De qué material está hecho?&lt;/span&gt; Pesa como un camión...&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;¿Por qué &lt;a href="http://www.lowrey.com"&gt;la web de Lowrey&lt;/a&gt; parece una asociación cristiana de la tercera edad?&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-2326692369835271945?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/2326692369835271945/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=2326692369835271945' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/2326692369835271945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/2326692369835271945'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/07/lowrey-symphony-holiday.html' title='Lowrey Symphony Holiday'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_5QB2H105vuU/SHXhfHgrYsI/AAAAAAAAAGM/XvZ-_TMcQFc/s72-c/lowrey_front.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-2566280011793133825</id><published>2008-07-07T17:37:00.002+02:00</published><updated>2008-07-07T18:11:25.668+02:00</updated><title type='text'>Tantos años de evolución en el desarrollo de virus para nada</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_5QB2H105vuU/SHI9UNDm1AI/AAAAAAAAAGE/RunzEKV14QU/s1600-h/Untitled-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_5QB2H105vuU/SHI9UNDm1AI/AAAAAAAAAGE/RunzEKV14QU/s400/Untitled-2.png" alt="" id="BLOGGER_PHOTO_ID_5220302335387292674" border="0" /&gt;&lt;/a&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Esto &lt;span style="font-weight: bold;"&gt;no es un virus&lt;/span&gt;. 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.&lt;br /&gt;&lt;br /&gt;Solución para los &lt;span style="font-style: italic;"&gt;infectados&lt;/span&gt;: 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.&lt;br /&gt;&lt;br /&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-2566280011793133825?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/2566280011793133825/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=2566280011793133825' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/2566280011793133825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/2566280011793133825'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/07/tantos-aos-de-evolucin-en-el-desarrollo.html' title='Tantos años de evolución en el desarrollo de virus para nada'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_5QB2H105vuU/SHI9UNDm1AI/AAAAAAAAAGE/RunzEKV14QU/s72-c/Untitled-2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-2649600288256492122</id><published>2008-07-07T12:34:00.014+02:00</published><updated>2008-07-07T15:52:36.145+02:00</updated><title type='text'>Abrir el precinto invalida la garantía</title><content type='html'>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 &lt;a href="http://www.neufeld.newton.ks.us/electronics"&gt;Keith's Electronics Blog&lt;/a&gt; y de paso explico cómo hacer un potenciómetro rudimentario.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_5QB2H105vuU/SHH2-eRBxvI/AAAAAAAAAE0/zTqRdyxQgIg/s1600-h/reuseorgan-748167.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_5QB2H105vuU/SHH2-eRBxvI/AAAAAAAAAE0/zTqRdyxQgIg/s400/reuseorgan-748167.jpg" alt="" id="BLOGGER_PHOTO_ID_5220224996235921138" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_5QB2H105vuU/SHH3WmD3y7I/AAAAAAAAAE8/3lOxTb-CFrk/s1600-h/DSCN1514_mid.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_5QB2H105vuU/SHH3WmD3y7I/AAAAAAAAAE8/3lOxTb-CFrk/s400/DSCN1514_mid.jpg" alt="" id="BLOGGER_PHOTO_ID_5220225410645085106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Auténtico &lt;span style="font-style: italic;"&gt;gear pr0n&lt;/span&gt;. Abatiendo el pedal movemos el brazo que presiona una barrita a la izquierda.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_5QB2H105vuU/SHH4nHXP6mI/AAAAAAAAAFE/nb9dyUqbB7Y/s1600-h/DSCN1526_mid.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_5QB2H105vuU/SHH4nHXP6mI/AAAAAAAAAFE/nb9dyUqbB7Y/s400/DSCN1526_mid.jpg" alt="" id="BLOGGER_PHOTO_ID_5220226793974262370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_5QB2H105vuU/SHH6OanjCWI/AAAAAAAAAFM/ajt68XmFA5k/s1600-h/DSCN1529_mid.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_5QB2H105vuU/SHH6OanjCWI/AAAAAAAAAFM/ajt68XmFA5k/s400/DSCN1529_mid.jpg" alt="" id="BLOGGER_PHOTO_ID_5220228568669423970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Como dice Keith: &lt;span style="font-style: italic;"&gt;É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.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://en.wikipedia.org/wiki/Resistor_Ladder"&gt;escalera de resistencias&lt;/a&gt;. 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á.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_5QB2H105vuU/SHH_Pt8s1vI/AAAAAAAAAFU/Nb68mV7s9X4/s1600-h/320px-R2R.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_5QB2H105vuU/SHH_Pt8s1vI/AAAAAAAAAFU/Nb68mV7s9X4/s400/320px-R2R.png" alt="" id="BLOGGER_PHOTO_ID_5220234088596428530" border="0" /&gt;&lt;/a&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_5QB2H105vuU/SHIV8KxIS7I/AAAAAAAAAFs/sHWMOfhOccE/s1600-h/potenciometro.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_5QB2H105vuU/SHIV8KxIS7I/AAAAAAAAAFs/sHWMOfhOccE/s400/potenciometro.png" alt="" id="BLOGGER_PHOTO_ID_5220259041502579634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;En este otro caso, cada interruptor que se cierra cortocircuita una resistencia. Una resistencia cortocircuitada no afecta al resto del circuito.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_5QB2H105vuU/SHIWOxTGa0I/AAAAAAAAAF0/OIoti9PbvAE/s1600-h/potenciometro2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_5QB2H105vuU/SHIWOxTGa0I/AAAAAAAAAF0/OIoti9PbvAE/s400/potenciometro2.png" alt="" id="BLOGGER_PHOTO_ID_5220259361083255618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;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 &lt;span style="font-style: italic;"&gt;vintage &lt;/span&gt;en un circuito moderno para por ejemplo controlar un sistema basado en &lt;a href="http://arduino.cc/"&gt;Arduino&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;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:&lt;br /&gt;&lt;br /&gt;1.000&lt;br /&gt;0.741&lt;br /&gt;0.549&lt;br /&gt;0.407&lt;br /&gt;0.301&lt;br /&gt;0.223&lt;br /&gt;0.165&lt;br /&gt;0.122&lt;br /&gt;0.091&lt;br /&gt;0.067&lt;br /&gt;0.050&lt;br /&gt;0.037&lt;br /&gt;0.027&lt;br /&gt;0.020&lt;br /&gt;0.015&lt;br /&gt;0.011&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_5QB2H105vuU/SHIcLzX_dhI/AAAAAAAAAF8/A8whspfKTZg/s1600-h/exp.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_5QB2H105vuU/SHIcLzX_dhI/AAAAAAAAAF8/A8whspfKTZg/s400/exp.png" alt="" id="BLOGGER_PHOTO_ID_5220265907170801170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Por lo que podemos, por ejemplo, construir la siguiente serie de resistencias:&lt;br /&gt;&lt;br /&gt;0.008&lt;br /&gt;0.003&lt;br /&gt;0.004&lt;br /&gt;0.005&lt;br /&gt;0.007&lt;br /&gt;0.010&lt;br /&gt;0.013&lt;br /&gt;0.017&lt;br /&gt;0.024&lt;br /&gt;0.032&lt;br /&gt;0.043&lt;br /&gt;0.058&lt;br /&gt;0.078&lt;br /&gt;0.105&lt;br /&gt;0.142&lt;br /&gt;0.192&lt;br /&gt;0.259&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;El potenciómetro del pedal es un poco más complejo pero la idea es la misma.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-2649600288256492122?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/2649600288256492122/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=2649600288256492122' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/2649600288256492122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/2649600288256492122'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/07/abrir-el-precinto-invalida-la-garanta.html' title='Abrir el precinto invalida la garantía'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_5QB2H105vuU/SHH2-eRBxvI/AAAAAAAAAE0/zTqRdyxQgIg/s72-c/reuseorgan-748167.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-1962442433094396475</id><published>2008-06-27T17:44:00.004+02:00</published><updated>2008-06-30T21:09:20.997+02:00</updated><title type='text'>jesusibanez.com</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_5QB2H105vuU/SGUTc9hRJEI/AAAAAAAAAEs/M0EYWHRupw4/s1600-h/1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_5QB2H105vuU/SGUTc9hRJEI/AAAAAAAAAEs/M0EYWHRupw4/s400/1.jpg" alt="" id="BLOGGER_PHOTO_ID_5216597131649950786" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Hoy hemos publicado la nueva web de &lt;a href="http://www.jesusibanez.com/"&gt;Jesús Ibáñez&lt;/a&gt; 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 &lt;a href="http://www.gndcontrol.com/lab/tensegrity/"&gt;Tensegrity&lt;/a&gt; fue sólo un experimento.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://silverlight.net/"&gt;SilverLight&lt;/a&gt; y me voy a poner con ello cuando saque un rato.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-1962442433094396475?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/1962442433094396475/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=1962442433094396475' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/1962442433094396475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/1962442433094396475'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/06/jesusibanezcom.html' title='jesusibanez.com'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_5QB2H105vuU/SGUTc9hRJEI/AAAAAAAAAEs/M0EYWHRupw4/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-8842723241285219230</id><published>2008-06-27T16:14:00.010+02:00</published><updated>2008-06-27T17:43:35.313+02:00</updated><title type='text'>Aprendiendo a ser geek</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_5QB2H105vuU/SGUGcPECytI/AAAAAAAAAEU/suCRWX3Ylx8/s1600-h/R0015893.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://bp1.blogger.com/_5QB2H105vuU/SGUGcPECytI/AAAAAAAAAEU/suCRWX3Ylx8/s400/R0015893.jpg" alt="" id="BLOGGER_PHOTO_ID_5216582825528183506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;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.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Acostumbrado al taller del &lt;a href="http://escopica.net"&gt;Aula de Propulsión Escópica&lt;/a&gt; (Enero 2008), en el que me encontré a cuarenta y cinco personas adultas &lt;span style="font-style: italic;"&gt;escuchándome &lt;/span&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_5QB2H105vuU/SGUG6yxiCXI/AAAAAAAAAEk/AtggTyABuIo/s1600-h/arduino.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_5QB2H105vuU/SGUG6yxiCXI/AAAAAAAAAEk/AtggTyABuIo/s400/arduino.jpg" alt="" id="BLOGGER_PHOTO_ID_5216583350510291314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Además, promocionar la &lt;a href="http://arduino.cc/"&gt;Arduino&lt;/a&gt; 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.&lt;br /&gt;&lt;br /&gt;Mucho se habla del &lt;span style="font-style: italic;"&gt;pasotismo &lt;/span&gt;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 &lt;span style="font-weight: bold;"&gt;hay alumnos que no saben hacia qué lado se aprieta un tornillo&lt;/span&gt;. Es cierto que es difícil tener un cuarto en casa completamente dedicado al bricolaje y al &lt;a href="http://es.wikipedia.org/wiki/Do_it_yourself"&gt;D.I.Y.&lt;/a&gt; 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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Animo a todo el mundo que sepa de algún tema a organizar cursos y talleres&lt;/span&gt;. 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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-8842723241285219230?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/8842723241285219230/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=8842723241285219230' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/8842723241285219230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/8842723241285219230'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/06/aprendiendo-ser-geek.html' title='Aprendiendo a ser geek'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_5QB2H105vuU/SGUGcPECytI/AAAAAAAAAEU/suCRWX3Ylx8/s72-c/R0015893.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-1649480063885939523</id><published>2008-05-26T14:03:00.004+02:00</published><updated>2008-05-26T16:02:12.833+02:00</updated><title type='text'>Tensegrity 0.1</title><content type='html'>Un &lt;a href="http://en.wikipedia.org/wiki/Tensegrity"&gt;tensegrity&lt;/a&gt;[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.&lt;br /&gt;&lt;br /&gt;Con unos cuantos palos y unas gomas se puede construir &lt;a href="http://www.youtube.com/watch?v=a7agYb_rZ6U&amp;amp;feature=related"&gt;un tensegrity casero&lt;/a&gt; [video youtube] que se puede simplificar bastante. Yo he hecho una esfera con sólo seis aristas, no es nada difícil.&lt;br /&gt;&lt;br /&gt;La versión del &lt;a href="http://www.gndcontrol.com/lab/tensegrity/"&gt;tensegrity&lt;/a&gt; [flash] que he &lt;span style="font-style: italic;"&gt;liberado &lt;/span&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://gndcontrol.com/lab/tensegrity/"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_5QB2H105vuU/SDrCZl-qnYI/AAAAAAAAAD0/Z4tXtFAngGg/s400/tensegrity.jpg" alt="" id="BLOGGER_PHOTO_ID_5204686064327499138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Además hay pequeñas fuerzas en el recuadro que empujan los círculos hacia su centro.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-1649480063885939523?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/1649480063885939523/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=1649480063885939523' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/1649480063885939523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/1649480063885939523'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/05/tensegrity-01.html' title='Tensegrity 0.1'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_5QB2H105vuU/SDrCZl-qnYI/AAAAAAAAAD0/Z4tXtFAngGg/s72-c/tensegrity.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-2760120981802305360</id><published>2008-05-26T13:39:00.003+02:00</published><updated>2008-05-26T16:04:42.418+02:00</updated><title type='text'>Nueva web</title><content type='html'>Éste es mi quinto o sexto blog y ésta es mi centésima web:&lt;br /&gt;&lt;p align="center"&gt;&lt;object type="application/x-shockwave-flash" data="http://gndcontrol.com/gndcontrol.swf" height="60" width="350"&gt;&lt;br /&gt;    &lt;param name="movie" value="gndcontrol.swf"&gt;&lt;br /&gt;    &lt;param name="quality" value="high"&gt;&lt;br /&gt;  &lt;/object&gt;&lt;/p&gt;&lt;a href="http://gndcontrol.com/"&gt;http://gndcontrol.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;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. &lt;span style="font-style: italic;"&gt;Ground Control&lt;/span&gt; es parte de la canción &lt;a href="http://en.wikipedia.org/wiki/Space_Oddity"&gt;Space Oddity&lt;/a&gt; de &lt;a href="http://en.wikipedia.org/wiki/David_bowie"&gt;Bowie&lt;/a&gt;, una de esas canciones perfectas. &lt;span style="font-style: italic;"&gt;GND &lt;/span&gt;es la abreviatura típica de un nodo conectado a tierra en electrónica. &lt;span style="font-style: italic;"&gt;Control &lt;/span&gt;es una parte bastante importante de mi rama de ingeniería.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-2760120981802305360?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/2760120981802305360/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=2760120981802305360' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/2760120981802305360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/2760120981802305360'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/05/nueva-web.html' title='Nueva web'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-7011914146913332438</id><published>2008-04-25T11:55:00.003+02:00</published><updated>2008-04-25T13:38:04.433+02:00</updated><title type='text'>I still love programming</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_5QB2H105vuU/SBHCcgXSdMI/AAAAAAAAADs/UKYR3n3Wdow/s1600-h/code.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_5QB2H105vuU/SBHCcgXSdMI/AAAAAAAAADs/UKYR3n3Wdow/s320/code.jpg" alt="" id="BLOGGER_PHOTO_ID_5193145640314631362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://chema.escopica.net/Control/Code.pdf"&gt;documento sobre tres o cuatro cosas&lt;/a&gt; [&lt;span style="font-style: italic;"&gt;pdf, 500KB, imperfecto inglés&lt;/span&gt;] que escribí ayer con una recopilación de códigos que me parecieron bonitos al escribirlos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-7011914146913332438?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/7011914146913332438/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=7011914146913332438' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/7011914146913332438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/7011914146913332438'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/04/i-still-love-programming.html' title='I still love programming'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_5QB2H105vuU/SBHCcgXSdMI/AAAAAAAAADs/UKYR3n3Wdow/s72-c/code.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-8078651668408290930</id><published>2008-04-14T17:46:00.002+02:00</published><updated>2008-04-14T18:01:28.242+02:00</updated><title type='text'>Shine a light</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.worstpreviews.com/images/shinealight.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://www.worstpreviews.com/images/shinealight.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;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?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-8078651668408290930?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/8078651668408290930/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=8078651668408290930' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/8078651668408290930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/8078651668408290930'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/04/shine-light.html' title='Shine a light'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-1458112103525311634</id><published>2008-04-05T14:55:00.000+02:00</published><updated>2008-04-11T10:57:58.389+02:00</updated><title type='text'>Tecnología de la hostelería II</title><content type='html'>(Viene de &lt;a href="http://pepevi.blogspot.com/2008/04/tecnologa-de-la-hostelera.html"&gt;Tecnología de la hostelería&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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...&lt;br /&gt;&lt;br /&gt;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&lt;br /&gt;y que están hechas con frameworks y entornos WYSIWGY (&lt;span style="font-style: italic;"&gt;What you see is what you get&lt;/span&gt;) como ASP.NET, que puede derivar en páginas web terribles.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Algunas disfunciones técnicas que me he encontrado son:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Un _&lt;span style="font-weight: bold;"&gt;viewstate &lt;/span&gt;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.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Utilización de&lt;span style="font-weight: bold;"&gt; entornos de programación &lt;/span&gt;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.&lt;/li&gt;&lt;li&gt;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.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Comprobar el usuario y la contraseña&lt;/span&gt; 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.&lt;/li&gt;&lt;/ul&gt;Sobre usabilidad y administración de tarifas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;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.&lt;/li&gt;&lt;li&gt;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.&lt;/li&gt;&lt;li&gt;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.&lt;/li&gt;&lt;li&gt;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.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;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.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;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.&lt;/li&gt;&lt;li&gt;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.&lt;/li&gt;&lt;/ul&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-1458112103525311634?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/1458112103525311634/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=1458112103525311634' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/1458112103525311634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/1458112103525311634'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/04/tecnologa-de-la-hostelera-ii.html' title='Tecnología de la hostelería II'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-718253807115530063</id><published>2008-04-04T12:15:00.000+02:00</published><updated>2008-04-04T13:58:04.610+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tecnología turismo informática XML webservices'/><title type='text'>Tecnología de la hostelería</title><content type='html'>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.&lt;br /&gt;&lt;br /&gt;La posición media ante las mejoras tecnológicas es &lt;span style="font-style: italic;"&gt;No me lo toques que yo me apaño con esto&lt;/span&gt; aunque está presente en un rango entre &lt;span style="font-style: italic;"&gt;Yo es que no tengo ni idea&lt;/span&gt; hasta &lt;span style="font-style: italic;"&gt;Este programa es una castaña&lt;/span&gt;. 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 &lt;span style="font-style: italic;"&gt;perder tiempo&lt;/span&gt; en mejorar ni invertir en desarrolladores que les organicen los sistemas.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://en.wikipedia.org/wiki/Webservice"&gt;webservice &lt;/a&gt;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.&lt;br /&gt;&lt;br /&gt;Los intermediarios grandes como &lt;a href="http://www.booking.com/"&gt;Booking&lt;/a&gt;, &lt;a href="http://www.ghrshotels.com/"&gt;GHRS&lt;/a&gt;, &lt;a href="http://www.expedia.com/"&gt;Expedia&lt;/a&gt;... tienen estas integraciones definidas aunque es difícil trabajar con ellos.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Booking &lt;/span&gt;sólo permite integrar si el hotel deja de hacer cambios manualmente, lo cual huele a overbooking si se cae el sistema. Descartado.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;GHRS &lt;/span&gt;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.&lt;/li&gt;&lt;li&gt;La especificación de &lt;span style="font-weight: bold;"&gt;Expedia &lt;/span&gt;parece bastante completa pero aún no la he probado ya que no me han puesto en contacto con ningún técnico.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Hotelbeds &lt;/span&gt;desarrolló en 2007 su servicio para integraciones y aunque se respira cierto ambiente &lt;span style="font-style: italic;"&gt;beta&lt;/span&gt;, 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.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Transhotel &lt;/span&gt;fue la primera empresa española que conocí con webservices. Ésta fue mi conversación en FITUR de 2007, en la que decían:&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Os mandamos la especificación y cada vez que haya una búsqueda se os hará una consulta.&lt;/li&gt;&lt;li&gt;¿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.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Pues sí. Ha pasado.&lt;/li&gt;&lt;li&gt;Hay que poner servidores sólo para vosotros entonces.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;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.&lt;br /&gt;&lt;/ul&gt;Intentaré actualizar esta lista según vayamos evolucionando pero no creo que lo haga muy a menudo, me temo.&lt;br /&gt;&lt;br /&gt;É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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-718253807115530063?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/718253807115530063/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=718253807115530063' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/718253807115530063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/718253807115530063'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/04/tecnologa-de-la-hostelera.html' title='Tecnología de la hostelería'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-4143778022059470814</id><published>2008-04-04T00:16:00.000+02:00</published><updated>2008-04-04T01:43:52.802+02:00</updated><title type='text'>Mala fe en la w3: Softonic, experts-exchange.</title><content type='html'>&lt;span style="font-style: italic;"&gt; - ¡No sabía que el Messenger costara 3€ ahora!&lt;br /&gt;- ¿Cómo va a c...? No me digas que te lo has bajado de Softonic...&lt;br /&gt;- Sí, ¡y no me funciona! jaja.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Maldito Google qué &lt;span style="font-weight: bold;"&gt;mal &lt;/span&gt;funciona a veces. Buscando &lt;span style="font-style: italic;"&gt;messenger &lt;/span&gt;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).&lt;br /&gt;&lt;br /&gt;Además, Google guarda los clicks de los usuarios en estas páginas y los usuarios no ayudan a bajarlas de PageRank.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Softonic &lt;/span&gt;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.&lt;br /&gt;&lt;br /&gt;Lo que me hace hervir la sangre es la web &lt;span style="font-weight: bold;"&gt;experts-exchange.com&lt;/span&gt;. 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 &lt;a href="http://en.wikipedia.org/wiki/Web_crawler"&gt;crawler&lt;/a&gt; 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.&lt;br /&gt;&lt;br /&gt;Si esta web es la única que tiene nuestra solución, recomiendo &lt;span style="font-weight: bold;"&gt;usar la versión cacheada&lt;/span&gt; que tiene Google, que está limpia y en perfecto unicode.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-4143778022059470814?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/4143778022059470814/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=4143778022059470814' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/4143778022059470814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/4143778022059470814'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/04/mala-fe-en-la-w3-softonic-experts.html' title='Mala fe en la w3: Softonic, experts-exchange.'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-1363600227079644557</id><published>2008-04-03T01:52:00.000+02:00</published><updated>2008-04-03T02:07:38.291+02:00</updated><title type='text'>tuenti</title><content type='html'>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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-1363600227079644557?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/1363600227079644557/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=1363600227079644557' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/1363600227079644557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/1363600227079644557'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/04/tuenti.html' title='tuenti'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-2135463632608733402</id><published>2008-04-01T22:32:00.000+02:00</published><updated>2008-04-02T18:59:07.734+02:00</updated><title type='text'>De daft punk a la minería de datos</title><content type='html'>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.&lt;br /&gt;&lt;br /&gt;La minería de datos consiste en analizar millones de pequeños datos. &lt;a href="http://lastfm.es/"&gt;Last.fm&lt;/a&gt; es un ejemplo genial de ello. Una vez te registras te observan. Si abres tu winamp o &lt;s&gt;tienes la mala suerte de usar&lt;/s&gt; 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 &lt;span style="font-style: italic;"&gt;Play &lt;/span&gt;para que te ponga música según lo que te gusta escuchar.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-2135463632608733402?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/2135463632608733402/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=2135463632608733402' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/2135463632608733402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/2135463632608733402'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/04/de-daft-punk-la-minera-de-datos.html' title='De daft punk a la minería de datos'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2462713939557598184.post-1622803403915228981</id><published>2008-04-01T22:25:00.000+02:00</published><updated>2008-04-01T22:32:16.736+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bienvenida'/><title type='text'>Soy un vocoder</title><content type='html'>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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2462713939557598184-1622803403915228981?l=pepevi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pepevi.blogspot.com/feeds/1622803403915228981/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2462713939557598184&amp;postID=1622803403915228981' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/1622803403915228981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2462713939557598184/posts/default/1622803403915228981'/><link rel='alternate' type='text/html' href='http://pepevi.blogspot.com/2008/04/soy-un-vocoder.html' title='Soy un vocoder'/><author><name>chema</name><uri>http://www.blogger.com/profile/06650345323171274892</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
