divendres, desembre 19, 2008

Si els llenguatges de programació fossin religions

C would be Judaism - it's old and restrictive, but most of the world is familiar with its laws and respects them. The catch is, you can't convert into it - you're either into it from the start, or you will think that it's insanity. Also, when things go wrong, many people are willing to blame the problems of the world on it.

Java would be Fundamentalist Christianity - it's theoretically based on C, but it voids so many of the old laws that it doesn't feel like the original at all. Instead, it adds its own set of rigid rules, which its followers believe to be far superior to the original. Not only are they certain that it's the best language in the world, but they're willing to burn those who disagree at the stake.

PHP would be Cafeteria Christianity - Fights with Java for the web market. It draws a few concepts from C and Java, but only those that it really likes. Maybe it's not as coherent as other languages, but at least it leaves you with much more freedom and ostensibly keeps the core idea of the whole thing. Also, the whole concept of "goto hell" was abandoned.

C++ would be Islam - It takes C and not only keeps all its laws, but adds a very complex new set of laws on top of it. It's so versatile that it can be used to be the foundation of anything, from great atrocities to beautiful works of art. Its followers are convinced that it is the ultimate universal language, and may be angered by those who disagree. Also, if you insult it or its founder, you'll probably be threatened with death by more radical followers.

C# would be Mormonism - At first glance, it's the same as Java, but at a closer look you realize that it's controlled by a single corporation (which many Java followers believe to be evil), and that many theological concepts are quite different. You suspect that it'd probably be nice, if only all the followers of Java wouldn't discriminate so much against you for following it.

Lisp would be Zen Buddhism - There is no syntax, there is no centralization of dogma, there are no deities to worship. The entire universe is there at your reach - if only you are enlightened enough to grasp it. Some say that it's not a language at all; others say that it's the only language that makes sense.

Haskell would be Taoism - It is so different from other languages that many people don't understand how can anyone use it to produce anything useful. Its followers believe that it's the true path to wisdom, but that wisdom is beyond the grasp of most mortals.

Erlang would be Hinduism - It's another strange language that doesn't look like it could be used for anything, but unlike most other modern languages, it's built around the concept of multiple simultaneous deities.

Perl would be Voodoo - An incomprehensible series of arcane incantations that involve the blood of goats and permanently corrupt your soul. Often used when your boss requires you to do an urgent task at 21:00 on friday night.

Lua would be Wicca - A pantheistic language that can easily be adapted for different cultures and locations. Its code is very liberal, and allows for the use of techniques that might be described as magical by those used to more traditional languages. It has a strong connection to the moon.

Ruby would be Neo-Paganism - A mixture of different languages and ideas that was beaten together into something that might be identified as a language. Its adherents are growing fast, and although most people look at them suspiciously, they are mostly well-meaning people with no intention of harming anyone.

Python would be Humanism: It's simple, unrestrictive, and all you need to follow it is common sense. Many of the followers claim to feel relieved from all the burden imposed by other languages, and that they have rediscovered the joy of programming. There are some who say that it is a form of pseudo-code.

COBOL would be Ancient Paganism - There was once a time when it ruled over a vast region and was important, but nowadays it's almost dead, for the good of us all. Although many were scarred by the rituals demanded by its deities, there are some who insist on keeping it alive even today.

APL would be Scientology - There are many people who claim to follow it, but you've always suspected that it's a huge and elaborate prank that got out of control.

LOLCODE would be Pastafarianism - An esoteric, Internet-born belief that nobody really takes seriously, despite all the efforts to develop and spread it.

Visual Basic would be Satanism - Except that you don't REALLY need to sell your soul to be a Satanist...

Llegit a Aegisub.

dimecres, desembre 10, 2008

Democràcia Re[i]al

dimarts, novembre 04, 2008

Planificadores de disco genéticos

Los planificadores de disco (también conocidos como IO schedulers) son una parte del sistema operativo que se encarga de reordenar las peticiones de acceso al disco para garantizar equidad y el mejor tiempo de acceso posible. Esto es especialmente importante en entornos de multiprogramación, dónde el acceso concurrente de varios procesos al disco puede provocar que el acceso a bloques sea cercano a la aleatoriedad, provocando unos tiempos de posicionamiento (seek time) de los cabezales inaceptables. Para solucionar el problema se pueden aplicar distintas políticas (noop, elevator y sus variantes, etc..), pero en este caso vamos a hablar de schedulers genéticos.

Que son los algoritmos genéticos?

Los algoritmos genéticos son aquellos que, inspirados en la selección natural, ofrecen una heurística basada en la evolución de una población de posibles soluciones hasta llegar a la más óptima. Para ello deberemos determinar una función que sea capaz de evaluar en cada iteración lo adecuadas que son las soluciones. Para la siguiente iteración crearemos un nuevo grupo de soluciones usando los más óptimos del paso anterior y técnicas como la recombinación genética y la mutación.

Muy bien, todo muy bonito y elegante, pero ..

¿Por que usarlos para diseñar IO schedulers?

Las políticas de planificación de entrada/salida sirven a un fin en concreto; el Noop funciona muy bien para discos de estado sólido, el CFQ es ideal para sistemas multiusuario, y el anticipatorio funciona muy bien para servidores Apache, por ejemplo. Todos tienen terrenos muy marcados, y en caso de tener un entorno muy dinámico, con cargas de trabajo cambiantes, no sabremos por cual nos debemos decantar. Dado este ambiente, ¿que mejor que un algoritmo que evolucione hasta encontrar la solución más adecuada?

Las implementaciones actuales[1], desgraciadamente, no son capaces de estabilizar la población para encontrar una solución óptima en un tiempo razonable (se barajan tiempos de unos 1000 segundos para responder adecuadamente a la nueva carga del sistema). Afortunadamente, esto abre camino a nuevas investigaciones en este campo que prometen interesantes avances.

[1] A Study of Genetic Algorithms for I/O Scheduling

divendres, agost 29, 2008

Pressuposts participatius al Consell de Mallorca

El Consell de Mallorca ha posat en marxa una campanya molt atractiva que comença avui, uns pressuposts pseudo-participatius on els ciutadans poden votar a 5 programes del Consell que trobin que necessiten més inversió pels pressuposts de l'any 2009. A hores d'ara, a poques hores de l'inici del projecte, els programes més votats són els de Refugis, Persones Majors i Biblioteques, Museus, Arxius.

Tot i això, una petita objecció òbvia. No penseu que es tracta de democràcia directa, ni molt manco. A la plana web se'ns explica que "una vegada obtinguts els resultats finals hi haurà una sessió del Consell Executiu", on "s’analitzaran les propostes de la ciutadania per al pressupost del 2009 amb l'objectiu d'orientar el pressupost a les polítiques que la ciutadania més voti". És a dir, que serà simplement orientatiu. A més, es diu que "es farà la prova pilot per destinar fins a un 1% del pressupost del Consell a reforçar les polítiques que venguin marcades pels ciutadans". Què vol dir això? Un 1% del pressupost es repartirà exactament com diguin els ciutadans, en relació directa al percentatge de vots de cada programa?

Un altra tema que es deixa de banda, i que és important; tot i que la classe mitja hipotecada pel consumisme inunda la societat i quasi tots tenim un (o varis) ordinadors a casa, hem de recordar que encara existeix una gran escletxa digital, i molts no tenen accés a internet ni a les noves tecnologies. S'han de fer més esforços per posar els avantatges de la tecnologia al servei de la ciutadania.

Em sap greu, sóc un cul inquiet i sempre he de posar pegues, però així com m'agrada la crítica constructiva també he de donar l'enhorabona al Consell per aquests avenços en participació ciutadana.

dilluns, juliol 14, 2008

Què cony és la Bioinformàtica?


Podriem dir que la Bioinformàtica, a falta d'una definició consensuada, és l'aplicació de la computació a la resolució de problemes de la Biologia. Però això és massa genèric, alguns dels camps de la biologia als que s'apliquen solucions (o aproximacions) informàtiques són.

- Alineament de seqüències: L'ADN esta format per quatre nucleòtids; Adenina, Guanina, Citosina i Timina. Així, una seqüència d'ADN no és més que una paraula sobre el diccionari d'aquestes 4 lletres. Una vegada extret l'ADN d'un ser viu el podem comparar amb el d'altres per conèixer quina relació han tengut ambdós en el passat, quines característiques comparteixen, a quina familia pertanyen, i molta més informació biològica. El mateix passa amb les proteïnes, que són una seqüència d'aminoàcids, i comparar amb altres proteïnes ens permet trobar relacions de parentesc amb d'altres seqüències ja conegudes, així com trobar centres actius als alineaments múltiples. Per això s'empren tècniques que van des de les expressions regulars als models ocults de markov, passant per la programació dinàmica i les heurístiques del BLAST.

- Predicció de gens: Els gens són seqüències d'ADN necessàries per sintetitzar ARN funcional (per exemple, tARN que s'acabarà convertint en una proteïna si no és inhibit). Per tant, és molt important detectar zones de codificació genètica dins les seqüències d'ADN, una de les altres aplicacions de la computació a la biologia evolutiva.

- Predicció de l'estructura de proteïnes: L'estructura de les proteïnes és crucial a l'hora de determinar la seva funció. A nivell experimental es resolen principalment per difracció de raigs X o altres mètodes, que tot i ser molt fiables són més costosos que les aproximacions computacionals. La idea és partir de la seqüència d'una proteïna per arribar a predir la seva estructura tridimensional, a partir d'homologia amb altres ja existents, o predicció ab initio. És un dels camps més actius de la bioinformàtica, i té una gran importància per a la medicina i la farmàcia. Cada dos anys s'organitza un concurs en el que grups de tot el món competeixen i comparen els seus mètodes de predicció d'estructures 3D, anomenat CASP.

- Docking de proteïnes: Com ja he dit, la funció de les proteïnes esta determinada principalment per la seva estructura tridimensional, però en molts de casos també depèn de la interacció amb altres proteïnes o altres estructures. Per exemple, molts fàrmacs són inhibidors d'enzims, que permeten regular algunes disfuncions enzimàtiques. La indústria farmacèutica també investiga molt en aquest camp, doncs permet crear nous medicaments adaptats a cada patògen o mal funcionament.

- Anàlisi filogenètic: Un arbre filogenètic és una representació en tipus arbre de l'evolució de certs sers vius. A partir d'un alineament múltiple d'ADN o proteïnes, podem veure com ha evolucionat genèticament la mostra, així com trobar ortòlegs i paràlegs. Servidors com ClustalW permeten generar representacions d'aquest tipus.

I molt més, tot això tan sols és una pinzellada! Les possibilitats tan sols estan limitades per la imaginació, la informàtica permet als biòlegs fer una aproximació a molts temes que tan sols seria imaginable amb un grup de teòrics amb un gran laboratori al seu servei. A més, gràcies a l'esperit científic que regeix al gremi, la gran majoria de software i informació produida està llicenciada amb formats lliures i disponible lliurement per tothom amb ganes d'aprendre i contribuir.

La bioinformàtica és una ciència (o una sinergia d'elles) apassionant i amb moltíssim de camí per recórrer!

divendres, juny 20, 2008

A mi també me la sua

L'audiència de Barcelona torna a obrir el cas contra Pepe Rubianes per ultratges a Espanya.



Un país que s'hagi d'autoprotegir coartant la llibertat dels seus ciutadans no és el país en el que jo vull viure.

dijous, juny 19, 2008

N-Prize

N-Prize és un premi de £9,999.99 (12725 €) per el primer grup o persona capaç de posar en orbita un satèl·lit d'entre 9.99 i 19.99 grams, i demostrar que almenys ha fet 9 voltes a la terra. Per fer-ho encara més complicat, el pressupost total no ha de passar de les £999.99, incloent combustible. Sort als que ho intentin, la necessitaran!