Saturday, February 27, 2010

The Fine Art of Not Knowing

"being a theoretical physicist is being like the composer of music. In fact I think there's only one essential difference between the two, naming that for musical composers one's hability is judged by the nature of the audience where's in theoretical physics is the audience of nature that provides the judgement."
Just fantastic.


I completely forgot to tell you the names of the people in the video (gràcies Irene): Richard Feynman, Carl Sagan, S. James Gates Jr and Freeman Dyson.

Thursday, February 25, 2010

El derecho al delirio

Ayer, de madrugada, me recomendaron un vídeo que me gustaría hoy recomendar a ustedes. Espero que les guste tanto como a mi.
La letra, de Galeano.



Y ya que estoy, leo en una de sus "ventanas sobre las paredes":
"En Buenos Aires: ¡Resucitaremos aunque nos cueste la vida!
En Lima: No queremos sobrevivir. Queremos vivir.
En la Habana: Todo se puede bailar.
En Río de Janeiro: Quien tiene miedo de vivir, no nace."

Creo que las paredes hablan, y cuando lo hacen, dicen más y mejor que los titulares de los periódicos, los noticieros, los libros de historia y la propagandística electoral porque, al final, todo lo escriben los mismos.
Sin embargo, siempre hay alguien dispuesto a hacer callar esas pocas paredes que echaron a hablar.

Dice John Berger: "las han pintado de blanco, como si no hubiera pasado nada, pero los muros siguen gritando bajo la capa de pintura".

Y pienso que tenemos suerte de que alguien escriba lo que otros borran de las paredes.

Hoy recuerdo la primera pared que vi hablar. Me dijo: "cuidado hombres grises, momo ha vuelto". No creo que yo tuviera más de 12 o 13 años.

Monday, February 22, 2010

A mitad de camino

A mitad de camino entre Las Palmas y Barcelona, empiezo a devorar un libro prestado de John Berger y me encuentro con una cita de Galeano.

"No hay historia muda. Por mucho que la quemen, por mucho que la rompan, por mucho que la mientan, la memoria humana se niega a callarse la boca. El tiempo que fue sigue latiendo, vivo, dentro del tiempo que es."

Me gustaría leerte, trocito a trocito, todos los retazos del libro que me gustan. Creo que a ti también te gustaría. Hasta viene con un poco de Johnny Cash en "Rose of my heart".

Friday, February 19, 2010

It looks like you are installing windows

Últimament escric posts molt aburrits, ho sé. Així que avui toca una tonteria que m'ha fet gràcia.

Wednesday, February 17, 2010

AHDL: Introducción

AHDL es un lenguaje de descripción hardware de alto nivel (propio de Altera) , diseñado para diseñar lógica combinacional compleja, tablas de verdad y diagramas de estados. Yo soy más de VHDL o Verilog, pero como AHDL le interesa a mi hermano, pues a continuación va un breve resumen:
Antes que nada, tenemos que saber que AHDL es un lenguaje concurrente, es decir, todo lo que se evalúa en la sección lógica (la lógica a ejecutar) se evalúa al mismo tiempo.
El lenguaje AHDL ofrece la posibilidad de integrar varias secciones distintas dentro de un mismo código. Están las secciones imprescindibles como la sección de subdiseño (se describen los puertos de entrada/salida y sus nombres) y la sección lógica (operaciones), y luego las opcionales como la declaración de constantes, de funciones, de variables, etcétera.


En primer lugar, declararemos las entradas/salidas en el apartado de subdesign:
SUBDESIGN comb1
{
     a0, a1    :INPUT;      %declaramos los pines de entrada%
     a2[7..0] :INPUT;      %entrada de 8 bits%
     s0, s1    :OUTPUT;  %declaramos los pines de salida%
     s2[15..0] :OUTPUT;  %salida16 bits%
     b0         :BIDIR;       %pines bidireccionales
}
Una vez hecho esto, podemos declarar constantes:
CONSTANT IO_ADDRESS=H"FF30"; %H" especifica valor en hexadecimal %
CONSTANTIO_ADDRESS=B"0010"; %B" especifica valor en binario%
Agrupar variables:
{
    a2[7..0]=s2[15..8]; %el bit 7 de a2 se asocia al bit 15 de s2, el 6 al 14, etc%
    a2[2..0]=inter; %asociamos los bits 2,1 y 0 de a2 a la variable inter
}
Poner opciones:
OPTIONS
    bit0=MSB; %asociamos el bit más significativo a bit0%
    bit0=LSB; %asociamos el bit menos significativo a bit0%
Y añadir nodos (variables intermedias)
VARIABLE
   Inter: NODE; %definimos variable para uso interno%
Una vez hecho esto, podemos pasar a la sección lógica:
BEGIN
     ..Instrucciones
END;
Las instrucciones pueden ser puertas lógicas: s0=a1&a2; %and% , s0=a1#a2; %or% , s0=!a1 %not%, etc..
Condicionales: IF .... ELSIF... ENDIF;
De selección: CASE a2[] IS
                                  WHEN B"00000010" => s1=1; %por ejemplo%
                                  ....
                     END CASE;
O también tablas de verdad:
TABLE
    %bits entrada=> bits salida%
     a2[]              => b2[];
     B"0000001" => B"1111111111111111";
     B"0000010" => B"1100000011111111"; %según tabla de verdad a implementar%
    ....
ENDTABLE;
Y a continuación, os dejo un ejemplo de una máquina de dos estados (s0 y s1), que es un sumador módulo 2
SUBDESIGN estados
{
     clock, reset, in    :INPUT;
     out                     :OUTPUT;
}
VARIABLE
   ss = MACHINE WITH STATES (s0, s1, s2, s3) %máquina de estados%
BEGIN
  ss.clock=clock;
  ss.reset=reset;
TABLE
  ss,    in  => ss,     out   %estado actual, entrada => siguiente estado, salida
  s0,   0   => s0,     0     %0 + 0 = 0 (devuelvo 0 y me quedo en el estado 0)
  s0,   1  =>  s1,     1     %0 + 1= 1 (devuelvo 1 y paso al estado 1)
  s1,   0  =>  s1,     0     %1 + 0= 1 (devuelvo 1 y el contador sigue a 1)
  s1,   1  =>  s1,     1     %1 + 1= 0 (devuelvo 0 y paso al estado 0)
ENDTABLE;
END;

Sunday, February 14, 2010

Working with Android. Chapter 1: Introduction

It's been at least a couple of weeks since my last post, and there's a lot of things I'd like to talk about. I've been studying and working on different (new) projects (some of them actually interesting).

The one I've been working on this weekend is an app to recognize handwritting for android SO mobiles and PDA's. Working with android SDK and Eclipse has been so cool that I decided to write down a few tutorials so you could also develop your own applications for android.

First: installing the development environment and the android emulator.
1. Remember this page: http://developer.android.com/. You have all the documentation / examples and references you need there. Just go and explore a little.
2. Download and install the last sdk package, which you can find here: http://developer.android.com/sdk/index.html
3. Do you have Eclipse? (better if you are familiar with it but don't worry if you aren't,  it is always a good time to start working with Eclipse). You can download it here: http://www.eclipse.org/downloads (download version 3.4 or newer).
4. Once you have SDK and Eclipse, you need to install the android plugin for Eclipse.  Run Eclipse and go to Help>Install new software>Add. Name: androidplugin Location:  https://dl-ssl.google.com/android/eclipse . Back to software view, select developer tools, then next, accept and finish. Restart Eclipse.
5. Configuring android plugin for eclipse: run Eclipse, select Window>Prefs>Android>SDK Location and fill with the SDK path. After that, apply and ok.

Second: creating an avd (android virtual device) and running the emulator
1. Go to you android sdk path/ and execute SDK Setup. Install the sdk components needed.
2. Create an android avd.  There is a graphical tool to manage/create your avds named android in /tools/.  Run android > select Virtual Devices > new. Write the name > select the android api and if you plan to work with a sdcard emulator (a .img file), then define the size of the sdcard you wish. Select Create AVD.
3. Once your avd is defined, you can start it by clicking Start>Launch. And your virtual Android will start! Easy, right?



Third: starting your own project
1. On Eclipse, select Files>New>Project>Android>Android Project. Click next.
2. Create the "hello world" app. http://developer.android.com/resources/tutorials/hello-world.html
3. On Eclipse, selct Run>Run, and you will be running your application in your virtual android device!

Some basics:
The interface (your application layout) is in /res/layout (an XML file).
The images/icons you are going to use, must be placed in res/drawable directories
Your code (java) is in /src/"package name"
Every application must have an AndroidManifest.xml file in its root directory. It has essential information about the application.  More about the manifest

And you are ready to play! Hope you have fun!