06 de May de 2012

Samuel Rodriguez

Creación de paquetes Debian (1 de 3)

Como prometí en mi anterior entrada, voy a tratar el tema de creación de paquetes para distribuciones de tipo Debian. La explicación va a estar dividida en tres partes:

  1. Motivación de la creación de paquetes
  2. Creación de paquetes
  3. Distribución de paquetes

Motivación

Mucha gente que usa Linux por primera vez se da cuanta enseguida de la gran cantidad de aplicaciones que hay a golpe de una pulsación de ratón. No son necesarios los números de serie, ni los típicos cracks. De hecho, en una distribución como Debian puede encontrarse cerca de 30.000 paquetes preparados para instalar.

Por desgracia no siempre está la herramienta que buscamos o la versión que hay es muy vieja y le faltan características. En ese momento es cuando se complica la cosa y toca preparar el programa por nosotros mismos. Esto suele suponer la ejecución de alguna secuencia de comandos terminada en “make ; make install”. Cuando hacemos esto último corremos el riesgo de sobrescribir configuraciones, bibliotecas o programas si  querer. Muchas veces esto no tiene porque ser importante, pero si, por ejemplo, estamos instalando algo en un servidor esto puede suponer un grave problema en el futuro.

Por el motivo anterior en las distribuciones de Linux se utiliza una cosa llamada paquete. Un paquete es un fichero que contiene información sobre los requisitos para instalar su contenido, acciones a ejecutar durante la instalación y los ficheros a instalar. Toda esta información facilita la eliminación y/o sustitución del paquete y comprobación de posibles conflictos con otros paquetes.

Finalmente, utilizando un sistema de distribución de paquetes conseguiremos que al tratar de instalar el sistema sea capaz descargar las dependencias (de otro modo solo comprobaría si hay o no problemas).

En las siguientes entradas veremos el proceso de creación de un paquete y su posterior distribución.

06 de May de 2012 a las 12:36

27 de April de 2012

Samuel Rodriguez

Heartbeat

Pensabais que me había olvidado del blog, que me había vendido a las redes sociales mass-media, pues no. ¡Ojalá! Simplemente que no ando ni bien de tiempo y que el poco que tengo no lo organizo bien.

Desde la última vez que escribí han pasado muchas cosas, tanto en lo laboral como lo personal, y, lo más importante, tengo cosas técnicas para contar.

La semana que viene espero publicar un par de cosillas sobre creación de repositorios debian (no es que sepa mucho, pero me ha tocado hace poco hacer alguna cosilla sobre ésto).

27 de April de 2012 a las 05:41

23 de January de 2012

Jose Manuel

Contenedores: repaso general y OpenVZ en Debian

¿Que son los contenedores?

Como expliqué en entradas anteriores los contenedores son como entornos chroot con esteroides.

Dicho rápido y mal se trata de meter un sistema entero en un directorio y ejecutar el proceso init del mismo. A este proceso init y todos sus hijos se les aplican unas cuotas y unos permisos.

De esta forma todos los procesos corren dentro del servidor pero con ciertas restricciones de forma que desde dentro del contenedor podrías jurar que estás en una máquina virtual.

leer más

23 de January de 2012 a las 09:49

24 de December de 2011

Fernando Cerezal

Script rtve



#!/bin/sh
#usage: ./rtve urlVideoToDownload OR ./rtve -f fileWithOneURLPerLine
#License: Public Domain

option="-f"

download(){

#Phase 1: get xml Id
xml=/tmp/$id.xml
urlpart=`sed 's/^.*\(.\)\(.\)\(.\)\(.\)$/\4\/\3\/\2\/\1/' $id`
wget http://www.rtve.es/swf/data/es/videos/video/$urlpart/$id.xml --output-document=$xml


#Phase 2: get video Id
dataId=`sed 's/.*assetDataId::\([^"]*\).*/\1/;tx;d;:x' $xml`
urlpart2=`sed 's/^.*\(.\)\(.\)\(.\)\(.\)$/\4\/\3\/\2\/\1/' $dataId`
xml2=/tmp/$dataId.xml
wget http://www.rtve.es/scd/CONTENTS/ASSET_DATA_VIDEO/$urlpart2/ASSET_DATA_VIDEO-$dataId.xml --output-document=$xml2


#Phase 3 get video
videoUrl=`sed 's/.*defaultLocation="\([^"]*\).*/\1/;tx;d;:x' $xml2`
title=`tr -d "\n" $xml2 | sed 's/.*AS_TITLE_URL\/key>[" "]*\([^]*\).*/\1/;tx;d;:x'`
wget www.rtve.es/resources/te_ngva/flv$videoUrl --output-document="$title.flv"

}



if [ "$1" = "$option" ] ; then

while read line; do
id=`sed 's/.*\/\(.*\)\/$/\1/' $line`
download
done $2

else
id=`sed 's/.*\/\(.*\)\/$/\1/' $1`
download
fi


24 de December de 2011 a las 12:32

06 de December de 2011

Jose Manuel

Sustituyendo el portátil por un tablet con Android

Como ya comenté en otra entrada anterior, mi intención es sustituir el portátil por un tablet con Android y Debian por si necesitara hacer algo más avanzado.

Mi hermano eligió por mí un tablet chino de la marca ainol que ha resultado funcionar realmente bien.

leer más

06 de December de 2011 a las 17:01

Pitando en los arcos

Tras el nacimiento de una criatura al sufrido padre le quedan un montón de horas de ir y venir a la administración, trabajos y papeleos varios.

Pues cada vez que pasaba por un arco pitaba y tras ver que no tenía nada al final me dejaban pasar por aburrimiento diciendo que "será algún corchete de la chaqueta".

Pues hace unos días he ido a lavar la chaqueta y he encontrado el corchete:

No sabía ni que la tenía ahí. Me la compró mi padre cuando era pequeño en una feria del pueblo, pero por si alguien tenía alguna duda: no, los arcos de seguridad no sirven más que para molestar al personal.

leer más

06 de December de 2011 a las 15:47

25 de November de 2011

Luis de Bethencourt

happy users

I received a very cool thankful email from a snappy user today:

"After testing I quickly found out that Snappy is what I've been looking for ever since I started using Linux, 5-6 years ago.

In my work as an animator I've felt that there have always been a lack of a production quality video player. That is a player that lets me view my clips without getting in the way and gives me full control of playback.
For instance there haven't been a single player that could do frame stepping backwards, I've asked for this feature from all of the players but only got answers like impossible, too much work, why would anyone want that?, etc.
Now snappy is out with exactly that feature. And that is in version 0.2.
Snappy is also targeted towards us professionals. That is reassuring as focus will be on what important to us, playback of video, instead of eyecandy like a gazillion effects.
It fits perfectly in my production pipeline as a tool that does one thing, plays videos, and does it well.

Snappy has been a pleasue to know for the last couple of months.

Thank you!
-David"


... aaand that made my day! \o/
so, no, Thank You David

25 de November de 2011 a las 16:00

13 de November de 2011

david::

Los bancos son tus amigos y se preocupan por ti.

Fíjate si serán buenos los bancos que hoy me ha llamado el director de la sucursal donde tengo una cuenta para preguntarme por qué me he llevado dinero a otra cuenta en otra sucursal. Se preocupa el señor. De hecho, su preocupación es tan grande que me ha propuesto un trámite para solucionar el problema y recuperar mi dinero perdido: un trámite que conlleva que mis padres hagan de mensajeros para la sucursal.

13 de November de 2011 a las 12:48

12 de November de 2011

Jose Manuel

¡POR FIN TENGO UNA MÁQUINA DE ESCRIBIR!


leer más

12 de November de 2011 a las 08:00

01 de November de 2011

Victor Pimentel

La mejor red social que nunca conociste

Ayer Google celebraba su Halloween particular dándonos un susto a los usuarios más fieles a Google Reader eliminando sus aspectos sociales. Es algo que ya avisó con un par de semanas de antelación (TOLE TOLE), pero no había querido comentarlo porque tenía que ver cómo lo iban a ejecutar. Resumiendo: han usado la guillotina. Aviso que el resto del artículo es algo largo (más de mil palabras), pero es que han sido muchas horas gastadas en Google Reader.

Desde el principio, Google Reader es una de las aplicaciones de Google que más tumbos han dado desde su creación, probablemente porque el propio Google no le veía una monetización directa que justificase los recursos que necesita. De hecho, la primera versión era una auténtica basura (no se podía colapsar elementos), y muchos nos quedamos en Bloglines, que tampoco era precisamente una maravilla. Un año después rediseñaron la interfaz, Bloglines se quedaba demasiado atrasado y prácticamente todos los usuarios de lectores RSS nos pasamos en masa al nuevo invento de Google. Era mucho mejor que cualquier alternativa, rápido y estable.

Aunque el diseño se mantuvo desde entonces, fueron añadiendo más funcionalidades y cambiando el aspecto social. Primero podías compartir tus entradas con el mundo, aunque esas entradas solo las podían ver si visitaban tu página de compartidos (tipo Tumblr o Posterous). Posteriormente, añadieron la posibilidad de añadir notas a esos compartidos, de añadir comentarios y de, algo muy importante, suscribirte a los compartidos de otra gente directamente desde Google Reader. Al contrario que otras alternativas, sin salir de Google Reader podías leer contenidos enteros compartidos por otras personas sin necesidad de visitar la página original.

Poco a poco, estas funciones sociales fueron calando en algunos usuarios. El número de usuarios de RSS no se puede comparar con el gran público, pero lo que es cierto es que casi todos son grandes consumidores de información. Leen múltiples feeds y dado que el sistema te informa de los elementos leídos/no leídos, no se pierde tanta información como con Twitter o Facebook. Es mucho más eficiente simplemente porque el ratio de ruido es bajo. Y si es alto, es que algo estás haciendo mal porque nadie te obliga a seguir a tus amigos o a seguir a ciertos blogs. Sin duda, necesita más configuración que otros servicios, y la barrera de entrada es dura para los novatos.

Así que te podías suscribir a los compartidos de un usuario y automáticamente te llegaba lo mejor que ha leído ese usuario día a día. Horas que ese usuario había gastado leyendo cientos de elementos comprimidas en tres o cuatro noticias interesantes. Si sigues a muchos usuarios, noticias que son compartidas por más de uno eran fusionadas de tal manera que no tienes que volver a leerlas. Por supuesto tú también puedes comentar lo que lees, así que a medida que vas encontrando cosas nuevas en sus suscripciones, con un click o una tecla lo podías compartir y comentar, infinitamente más eficiente que cualquier alternativa.

Más adelante los comentarios de esos compartidos fueron poblándose gradualmente con una pandilla de colegas de orígenes muy diversos. No exagero que había expertos en casi cualquier tema, así que cualquier cosa podía volverse interesante y siempre aprendías algo nuevo, siempre aparecían nuevas caras comentando en los compartidos de tus amigos. En muchas ocasiones las conversaciones no tenían nada que ver con el compartido. En otras había discusiones sesudas. En otras cada comentario consistía de solo una palabra. Chistes internos. Complicidad. Tetas.

De manera auténticamente natural, como nacen las redes sociales que han tenido cierto éxito, Google había creado una experiencia maravillosa sin ni siquiera saberlo. Había creado la primera red social basada en el contenido, no en las relaciones entre los usuarios.

Y ayer Google, decidió echar las llaves y dejarnos fuera con un cartel que dice “Nos movemos a Google+”. La GreaderGang se disuelve.

Google Reader no era perfecto, tenía bastantes carencias y su uso no era decididamente intuitivo. La interfaz era mejorable, el diseño estaba muy anticuado y la barra lateral era un desastre. Google no le había prestado la más mínima atención en demasiado tiempo. Tras todo eso, el nuevo diseño podría haber sido una bienvenida actualización. Al fin y al cabo, el cambio no es malo, quitando excesivos espacios en blanco y arreglando problemas de contraste, a mí me gusta.

Pero quitar todos los compartidos y comentarios para dejar simplemente un botón para compartir en Google+ destroza completamente esa red de contactos que habíamos forjado durante los últimos años. Lo peor es que entiendo perfectamente las razones y no veo ninguna solución. Entiendo la necesidad de promover Google+ y de arreglar Google Reader. Entiendo la nula integración entre los dos porque la experiencia de Buzz demuestra que la actividad en un servicio web se convierte en ruido si automatizas el envío a otro servicio web. Entiendo que Google+ sea más sencillo de monetizar. Entiendo que Google quiera más actividad, más sencillez, menos sensación de control sobre lo que estás leyendo, como en Twitter.

No, Google+ no es lo mismo ni se le acerca. No puedes controlar qué has leído y qué no. Querer eso no implica automáticamente sufrir de Síndrome de Diógenes digital, y más teniendo el botón de Marcar todo como leído a un click. Simplemente es mucho menos eficiente, de una sentada como mucho puedes ver veinte compartidos, y te llevará sensiblemente más tiempo leerlos dado que tienes que visitar las páginas originales.

Como otras redes sociales (Twitter, Tuenti, Facebook), en Google+ hay más ruido y gente hablando sobre su vida personal, así que la información realmente interesante se pierde salvo que estés todo el día delante del stream. Y por qué no negarlo, dado que la barrera de entrada para compartir es mínima, la calidad de lo que se comparte es mucho menor que si solo sigues a superconsumidores. Y hay más cantidad, es decir, más ruido. Y eso sin contar que en Google Reader no sientes la obligación social de seguir a todos tus amigos reales aunque solo te pongan fotos de todos los bares que pisan o de sus bebés en quinientos ángulos.

En los meses finales yo visitaba Google Reader con más frecuencia que el propio Gmail. Progresivamente me he ido desuscribiendo a la enorme mayoría de sitios que seguía, y ahora sin esos compartidos (más de cien contactos) el panorama es desolador. Google, triunfes o no con Google+, gracias por devolverme mi productividad.

En otro orden de cosas, tampoco entiendo el paso atrás que ha dado este verano el panel de administración de WordPress pasando de una de las más bellas interfaces para escribir, a un diseño mucho más tosco. ¿Ya nadie evalúa las interfaces antes de sacarlas al público?

01 de November de 2011 a las 14:26

23 de October de 2011

Jose Manuel

Como instalar Debian en cualquier sistema con Android

Poder instalar una distribución con linux en un cacharrito de mano era algo que ya había hecho en otra ocasión.

En aquel momento lo hice por cacharrear (si, me gasté 250€ para cacharrear, otros se los gastan en alcohol y no se les dice nada) pero ahora es por un tema bastante más práctico.

leer más

23 de October de 2011 a las 15:59

21 de October de 2011

Victor Pimentel

¡Adiós, Universidad!

Referencia friki

Tras largos meses de trabajo salpicados de tiempos muertos, viajes por Europa y proyectos personales, ayer presenté de una vez por todas y de manera exitosa el proyecto fin de carrera. Allí relato la tarea principal que desarrollé durante esos felices seis meses en Berlín en los laboratorios de Deutsche Telekom. Por si alguien tiene curiosidad por el contenido o por cómo montar un PFC en LaTeX, he abierto al público el repositorio con el código usado para crear el mastodonte de 254 páginas.

Es curioso pararse a pensar en el pipiolo de 18 años que empezó la carrera y el, a veces feliz, a veces no tanto, camino que ha recorrido hasta hoy. Y tener la impresión de que, o bien no era tan pipiolo, o lo sigo siendo tanto como antes. Pero eso es otra historia.

Lo importante es que ya puedo cambiar de ciclo y avanzar con todo lo que tenía en pausa. Ahora toca buscar un trabajo interesante sobre cualquier tema relacionado con el desarrollo web, la inteligencia artificial, aplicaciones móviles, etc… en fin, para venderme mejor mi perfil en LinkedIn.

21 de October de 2011 a las 10:18

29 de July de 2011

david::

Ni PSOE ni PP

En las pasadas elecciones, durante la acampada de #sol, unos decían que #nolesvotes era un slogan contra el PP, otros afirmaban que era contra el PSOE, y otros que promovía la abstención.

Por esa razón, creo que el slogan No Les Votes no debería seguir usándose, y creo que debería cambiarse por algo más explícito y menos susceptible de interpretaciones. Ahora mismo solo me me ocurre “Ni PSOE ni PP”, que no es muy bueno, pero iré pensando en alguno más y si se me ocurre alguno bueno se lo propondré a @acampadasol.

29 de July de 2011 a las 18:37

23 de July de 2011

david::

¡Vacaciones!

Ayer tuvimos un HolaMundo bastante especial, por varias razones. Porque duró más de dos horas. Porque nos lo pasamos fenomenal. Porque charlamos de temas muy interesantes de los que nadie hablaría en la radio, como la codificación de símbolos en una transmisión digital. Porque sirvió como un estupendo inicio de la vacaciones de todos los que hacemos el programa. Porque lo celebramos con unas pizzas riquísimas. Y porque el lunes que viene estaremos los cuatro de viaje.

En mi caso me voy con Ali a Londres y estaremos tres semanas, viviendo en una residencia en Chelsea. Tendremos tres horas de clase por la mañana y el resto del día, pues a disfrutar de las baked beans, del reloj de los 10K años y de los perritos calientes callejeros. Se supone que tengo internet en la resi, así que quizá pueda ir colgando alguna foto.

Pero no pienso tomar café inglés.

Bueno, quizá un día, por recordarlo.

23 de July de 2011 a las 14:19

18 de June de 2011

david::

Fiestas de Getafe

18 de June de 2011 a las 09:23

12 de June de 2011

Fernando Cerezal

Re: Divagando propuestas para los políticos

Esto es en respuesta a algunas de las propuestas de Samuel en el planeta del GUL:

3. Tuve un compañero que decía, con razón, que el sueldo mínimo sólo sirve aumentar la inflación. Si todo el mundo tiene más dinero los precios suben. La idea no es esa, es repartir mejor la riqueza que hay. Cambiar en que punto de la campana está la media de la gente, no desplazar la campana.
5. Un político de verdad no sólo va a los plenos, sino que participa en comisiones, redacta propuestas, etc... Puede asisitir a los plenos y no hacer nada más, o matarse a trabajar y no poder asistir a algún pleno. La asistencia a los plenos no es una buena métrica.
6. Ahora es proporcional a lo que se obtuvo la legislatura anterior. Tienes que tener en cuenta que se pueden presentar muchos partidos y que mientras algunos pueden salir en la tele por lo que han dicho en el congreso, otros sólo podrán salir desde su despacho en su sede vendiendo su película porque no han obtenido representación ni hay gente suficiente a la que le interese su programa. ¿Generas contenido artificial para llenar cupo?
8. Vale, quitas a los políticos y pones el problema de como se elije la comisión. Tapas un problema con otro.
9.Vuelves a lo mismo ¿cómo se elige a la asamblea? ¿O nos metemos el millón y medio de madrileños en un sitio a discutir? Al final eliges representantes que... bueno que ya has elegido representantes votando. El problema es elegir a unos que te representen de verdad.
10. Bien, a los 4 meses y medio el que puso al denuncia comete un error y termina llevando el tráfico.. O lo haces inhabilitación directamente o la acción tiene que ir por otro lado.
11. Básicamente, les subes los impuestos y luego el estado ya gestiona como gastarlo. Sigues sin solucionar el problema de los bancos. Con eso consigues que para obtener los mismos beneficios presionen más a los clientes.
12. No tienes idea de donde te metes ahí. La mayoría de los productos bancarios no son cuentas corrientes, no es tan fácil como tú lo pintas. La mayoría es virtual y tienes que elegir a que le das respaldo físico y a que no. Ponte en algo tan sencillo como una línea de crédito a una empresa ¿El banco estatal se queda como activo?¿se condona la deuda?¿sigue abierta la línea de crédito? Y este es el más sencillo de los casos.
13. Eliminas los puestos a dedo por políticos y das a alas a los puestos a dedo por los sindicatos. Y da igual que digas que no hay sindicato a lo que sea, la gente se puede asociar públicamente o sin publicarlo.
15. Entonces baja un 5% tres años consecutivos (sería -15%, pero como si baja no cuenta) y luego sube un 5%. Es decir, el IPC se queda en un 90%, pero los sueldos en un 105%. Has hecho un 15% más rico a todo el mundo.. pero claro, luego que si suben los precios y tal porque la gente tiene más dinero y.. bueno, espiral sin final.
16. Esto es con algo en mente que no cuentas y intentas aplicar a todo. ¿Cómo decides si alguien puede aplicar nuevas tecnologías o no?¿Y si aplicarlas lleva tal inversión que hace peligrar o quebrar la empresa?
17. Se supone que los de ahora son competentes. Tu propuestas es eliminar los cargos de confianza.
18. Error. Mucha gente cree que si la empresa factura 100, 100 tiene que ir nóminas. No cuentas impuestos ni el sutil hecho de que las empresas son organizaciones con ánimo de lucro. Te pongo otro ejemplo que te sea familiar: ingenieros cobran X por desarrollar. La empresa factura Y. Contrata a un comercial y ese comercial hace que la empresa facture 5Y. ¿Deben cobrar los ingenieros 5X por eso? Su trabajo sigue siendo el mismo, no tienen porqué cobrar más. Es aplicable a cualquier campo.
19. Error. Cuando se abre una empresa hay alguien que corre un riesgo, invirtiendo su dinero para intentar obtener un beneficio. Y si yo soy un incompetente, quebraré y perderé mi dinero. Pero desde luego, encima no me pueden pedir responsabilidades por haber quebrado. Es mi empresa y me la follo como quiero. Si hay directivos cobrando del bote es problema de los accionistas que arriesgan su dinero, no de los empleados. ¿Por qué no multas a los empleados al quebrar una empresa por no esforzarse más? La respuesta es que ellos sólo responden con su puesto de trabajo, igual que el accionista sólo responde con su dinero.
Esa idea de que los puestos de trabajo hay que mantenerlo obligatoriamente, como si el hecho de que la empresa vaya bien o no dependa de como se levante el directivo, es bastante.. bueno, me cayo.
El problema es la falta de profesionalidad: Llevo 20 años haciendo lo mismo y me tienen que seguir pagando lo mismo más el IPC y antigüedad, aunque mi trabajo haga 15 años que ya es superfluo y no me haya formado en nada.
21. Crear Red de Comunicaciones Española, como existe Red Eléctrica Española.
24. La ley de la oferta y la demanda por si misma no funciona, de ahí las burbujas y que tenga que existir "defensa de la competencia". Hay que cambiar el modelo. El problema en tu caso sería ¿Qué es más allá de los razonable?
27. No puedes obligar a un tipo de educación, tengo que poder elegir sino estás quitando libertades. Como mucho puedes eliminar los concertados. Y creo que habría que cambiar la constitución, porque dice algo así como que el estado tiene que poner lo medios para dar cualquier educación que soliciten los padres, dentro de unas pocas restricciones.
Siempre va a haber sitios privados donde formarse, de una forma o de otra.
29. Error. El inglés está bien para campos técnicos, pero en otros es un error. El español mismamente es mucho más amplio en muchísimas áreas que el inglés, y ya es más utilizado que el inglés a nivel mundial. Obligar a usar el inglés es todos los ámbitos universitarios es un error.
34. Arma de doble filo. Como hay muchas cosas que hay versión libre, la administración pública se la encarga a... elige, el resultado es el mismo. Y en cuanto a los expertos, se supone que los de ahora son expertísimos.
35. No puedes incrementar a y dejar fijo x(a). Si sube el mínimo subirá el de los políticos.
36. Ya está hecho para cierto tipo. Para otro hay que hacer verificaciones, escrituras.. ya sabes esas cosas que quieres que queden en un papel porque te estás jugando mucho dinero y si no lo haces bien hacienda te puede crujir.
37. ¿Y de donde sacas el dinero para pagar esas empresas? Porque la gente tiene la manía de pedir dinero al final de mes por trabajar. ¿Y quien lo arriesga para esas empresas? ¿A cuentos de tus compañeros de carrera les prestarías dinero para una empresa?
38. Volvemos a la asamblea ciudadana ¿Quienes son?¿Los primeros que pasen?¿Se eligen entre los que se presenten?¿Y quien lo elige?¿Los que pasen por allí?¿referendum?¿se eligen por sorteo? La asamblea ciudadana la usas como macguffin.
39. ¿Incluyendo solicitudes de gente y certificados? ¿Tu relación con el estado tiene que ser pública?¿Tus vecinos tienen que saber que estás en el paro?¿y tu casero?
40. Bien, la gente no son máquinas. Sería más sencillo si lo fueran, pero mucho menos divertido. Esto es inviable por su propia naturaleza.
43. Estás intentando quitar la enfermedad mediante los síntomas. Yo puedo endeudarme a 20 años por 2X o a 40 por X (más o menos), es mi problema. El problema es cuanto cuesta una vivienda. La gente necesita casa, y si tiene que endeudarse de por vida, lo hará, porque necesita donde vivir. Si te tienes que hipotecar a 20 años por 2X y tu sueldo es 1.8X, cumple tus parámetros, y no se soluciona el problema.
44. Y mientras tanto quiebran bancos, corralito, quiebra de empresas, etc... vamos, que se quedarán en sus casas, pero no van a poder salir de allí ni tener que llevarse a la boca.
45. Error de concepto. Por ejemplo, como no de beneficios no me puedo presentar a concursos y muchos clientes no me querrán ¿Quien se fía de que la empresa dure dos días más?
Eso de que los empleados son los más débiles... cuidado. Un empleado dice que se va y lo único que pasa es que tiene que avisar. Pero un empleador no puede decir que ya no necesita tus servicios sin más, tiene que indemnizarte.
Esto lo que promueve es que las empresas mantengan lastres en sus puestos, porque si prescindes de sus servicios tienes que indemnizarle encima.
Cuando los empleados eran prácticamente analfabetos, podía tener su sentido. Ahora si tienes una relación profesional-empleador, creo que carece de sentido. Nadie se va a quejar porque te viene muy bien, pero desde luego es injusto.
Deja de pensar en telefónica y piensa en que eres tú el que tiene una empresa con diez empleados a tu cargo. Tú eres el que responde si la empresa va mal, y la has abierto con un crédito personal, y relee tus propuestas, a ver si te parece justo.
46. Esto ya está prohibido.
47. Entonces ¿Subcontrato a la de la limpieza para que la media esté más alta? Este tipo de medidas son arbitrarias.
48. Ni de coña. Que las cagadas de la gente caigan hacia abajo, no hacia arriba también. Olvídate de que la empresa es de los empleados, la empresa es de quien ha puesto dinero en ella. Los empleados se llevan su nómina cada mes a riesgo cero. ¿Por qué el voto tiene que valer un 10%? En mi empresa un 50% de la plantilla quiso que la empresa quebrase hace seis meses. Sí, la estupidez humana es así. He hicieron todo lo posible para demorar unos trámites para que quebrase, menos mal que no tenían otra capacidad de maniobra, si no yo llevaba seis meses en el paro.
49 Esto ya existe. La gracia de un paraíso fiscal es que es otro estado y, por tanto, el estado originario no puedes hacer nada. Y la fuga de capitales también está prohibida, pero siempre hay formas de saltárselo.
50. El directivo es el único que hace labores comerciales, típico en empresas pequeñas. Así que le reduces la jornada a él. Al mes siguiente todos en la calle.
51. No será una beca, será un contrato de aprendizaje profesional no remunerado. Tratas de resolver la forma y no el fondo.
53. ¿Mejor guardar el dinero o construir infraestructuras que te permitan ganar más continuamente? Las infraestructuras seguirán ahí y el dinero se deprecia.
54. Quitando el hecho de que el coche eléctrico es una tecnología inmadura ¿vas a obligar a todo el mundo a endeudarse para cambiar de coche?¿O el estado les va a prestar todo ese dinero?¿y si no lo devuelven?
55. En esto es lo mismo que lo de la lay de la oferta y la demanda
58. Esto ya es así.

El problema de todo esto es que se hacen propuestas sin conocer algunos ámbitos, y como puede que en todo el grupo no haya nadie que los conoca, se quedan así. Si quedase en una discusión entre amigos, no pasa gran cosa, pero si se va a presentar en algún sitio, hay que tener cuidado con lo que se propone. Te asombrarías de lo que la gente puede llegar a apoyar.

12 de June de 2011 a las 00:31

09 de June de 2011

Ana

Consumir

"Consumir preferentemente antes de ver bolsa".

Mierda, ya la he visto.

09 de June de 2011 a las 12:31

05 de June de 2011

Samuel Rodriguez

Divagando propuestas para los políticos

A estas alturas doy por hecho que todo el mundo sabe qué es democracia real ya, 15m, la acampada de Sol (web de la asamblea de Sol y la acampada) y, con suerte, las asambleas de barrios y pueblos que se han formado por gran parte de Madrid y otras provincias y comunidades autónomas.

También salió hace un tiempo el hastag de twitter #propuestasconcretas para hacer propuestas políticas y me gustaría hacer un listado de todas aquellas que a mi se me ocurren para dejar constancia de las mismas y por si pudieran ser de interés a alguien (advierto que es bastante largo y aburrido):

  1. Toda persona que esté en posesión de un escaño en cualquiera de los órganos de gobierno (senado, congreso, alcaldía, etc.) no podrá realizar actos públicos de inauguración tanto en tiempo de campaña electoral como fuera del mismo. Para enterarnos de que obras se hacen ya tenemos a los medios de comunicación.
  2. Igualmente, no podrán hacer acto de presencia para la promoción de acuerdos con empresas o instituciones, públicas o privadas. El objetivo es eliminar el efecto foto, que solo sirve para hacer publicidad, pero desvía la atención de cosas más importantes.
  3. El sueldo máximo de un cargo político será 3 veces el salario mínimo interprofesional. No se trata de que controlemos su sueldo, sino de que este sea justo. Si quieren subírselo, ya saben lo que toca.
  4. Un cargo político sólo podrá percibir un sueldo de la administración y en caso de ser éste una pensión vitalicia, ésta se terminará en el momento en que cobre otro sueldo público o privado. Se debe evitar a toda costa que se acumule dinero público cuando ya no lo necesiten.
  5. El sueldo de un político será proporcional a las veces que asista a los plenos. Si no hace su trabajo, no cobra. Si solo hace la mitad, cobrará la mitad.
  6. Durante el periodo electoral, todos los partidos dispondrán del mismo tiempo para realizar publicidad por televisión y por radio y el mismo espacio en medios escritos. Se evita que los partidos mayoritarios se queden con el espacio. Todos deben ser iguales en tiempo de campaña.
  7. La circunscripción será única a la hora de repartir el voto y no habrá un mínimo de votos para optar a escaño. Igualmente, el voto en blanco se contabilizará como válido y contará para el reparto de escaños de modo que podrán quedar asientos libres. Esto pretende forzar a los partidos a hacer bien su trabajo so pena de perder escaños.
  8. En caso de que la representación en escaños no llegue al 50% (hay al menos un 51% de voto en blanco), se deberá constituir una asamblea ciudadana para la gestión del ayuntamiento que podrá gobernar hasta un máximo de 2 años. A diferencia de lo que sucede actualmente, que si no hay gobierno es una comisión nombrada desde fuera, serán los propios ciudadanos quienes tomarán las riendas o podrán proponer elecciones.
  9. Durante la elaboración de cualquier ley, los gobernantes tendrán la obligación de reunirse con una asamblea ciudadana para que esta le exprese su opinión sobre la misma. La opinión de la asamblea computará siempre como un 25% del voto final para la aprobación o no de dicha ley. Este trámite supone ralentizar el proceso de aprobación de leyes, pero permite a los ciudadanos participar en el mismo y que su opinión cuente.
  10. Las fuerzas del orden deberán cumplir estrictamente la ley y dar ejemplo al resto de ciudadanos. En caso de que reciban una orden de un superior y ésta sea contraria a la ley, deberán interponer una denuncia inmediatamente. El castigo por este tipo de orden deberá ser la inhabilitación de 3 meses del cargo correspondiente y de por vida en caso de reincidir. Hay que evitar el abuso de poder por parte de los gobernantes y las fuerzas del orden. Aún así, hay que tener en cuenta que no se puede evitar a veces el uso de la fuerza (imaginad una persona en estado de enajenación lo que podría hacer…).
  11. La banca estará obligada a socializar, al menos, un 5% de sus beneficios antes de impuestos. Dicho de otro modo, los bancos se convertirán en cajas.
  12. En caso de quiebra de un banco o caja, se considerará a sus directivos responsables y deberán pagar con su patrimonio. Por otra parte, el banco no podrá hacer uso del dinero de sus clientes para pagar sus deudas. El estado deberá reconducir las cuentas corrientes a un banco estatal que se encargará de garantizar que los ciudadanos afectados sufran lo mínimo posible la quiebra. A diferencia de lo que se propone muchas veces, no abogo por la nacionalización bancaria, porque eso supone que el estado deberá pagar la deuda del mismo y no es en absoluto justo.
  13. El gobierno de las cajas será independiente y autónomo, y será una asamblea de los trabajadores junto a la directiva la que tomará la decisión de nuevas incorporaciones en la junta. Se elimina el poner puestos a dedo para pagar favores o colocar amigos, lo que ha llevado a la una muy mala situación a muchas cajas.
  14. Los sindicatos solo podrán financiarse con el dinero que obtengan de sus afiliados. Hay que evitar las sangrantes situaciones que vivimos hoy día donde al sindicato le sale mejor firmar EREs que cobrar de los afiliados que pueda tener en la empresa.
  15. Cada año se revisará el sueldo mínimo. Este deberá crecer siempre como mínimo el incremento del IPC o nada en caso de que el IPC sea negativo. Hay que garantizar que los sueldos estén acorde con los precios.
  16. Se debe reducir el número de ayudas a empresas para promocionar nuevas tecnología, debiéndose promocionar el uso de incrementos de impuestos. De este modo, en lugar de dar ayudas para que haya menos emisiones de CO2, se deberán cobrar más impuestos por no adaptarse. En España se da el caso de que las ayudas solo sirven para encarecer las cosas y favorecer amigismos, los impuestos son para todos por igual, así que no habría más discriminación que no hacer bien las cosas.
  17. Los servicios y empresas del estado estarán gestionadas por personal competente para el cargo que, a su vez, serán funcionarios. No se debe permitir cargos a dedo, como hasta ahora. Los políticos deberán usar solo funcionarios para la administración.
  18. Todas las empresas deberán presentar sus cuentas de resultados a sus trabajadores al igual que a hacienda. Muchos empresarios, tanto pequeños como grandes, se abstienen de dar este dato para poder controlar la idea de si va bien o mal la empresa y presionar a los trabajadores.
  19. Cuando una empresa se considera que está a punto de entrar en quiebra y no ha habido una renovación de la junta directiva (en caso de las empresas que la tengan) en al menos 1 año, pasará a control de los empleados. Durante este periodo se podrá abrir una investigación para estudiar las responsabilidades de la junta directiva en la situación de la empresa. En caso de que sea culpable deberá abonar una multa correspondiente a la mitad de sus sueldo en un año y la devolución de cualquier prima que haya podido cobrar. Se trata de eliminar el factor sangrante de las directivas que viven del bote o que les preocupan poco sus empleados.
  20. El estado no podrá financiar directa ni indirectamente a ninguna organización religiosa (esto incluye colegios concertados religiosos, empresas controladas por el Opus Dei, etc.). No se trata de estar contra la religión, pero ésta debe ser sustentada por sus fieles, no por el estado.
  21. Todo servicio que deba ser universal utilizará infraestructuras del estado (tanto telefonía, internet, etc.). En caso de que las empresas no quieran dar el servicio al usuario final, será el estado quien lo de. Esto convertirá a todos los operadores de telefonía en virtuales y garantizaría la calidad de las comunicaciones. Es importante tener en cuenta que es solo para el servicio universal, si por ejemplo queremos ir más allá, habrá que utilizar la infraestructura del operador (por ejemplo, si el servicio universal de internet es de 1Mb, el estado no está obligado a poner más).
  22. Toda persona que sea declarada culpable en un caso de corrupción quedará inhabilitada automáticamente para cualquier cargo público por un periodo de 15 años. Sé que todos quieren que sea eliminado automáticamente, pero todo el mundo tiene derecho a ser perdonado.
  23. Los delitos de corrupción, apropiación indebida, tráfico de influencias no prescribirán. Ahí delitos que pueden dejar en la ruina a cientos o miles de familias directa o indirectamente, no se puede permitir que salgan impunes.
  24. Influir artificialmente sobre los precios de los productos más allá de lo razonable será considerado un delito en el código penal. La ley de la oferta y demanda está razonablemente bien, pero hay muchas fuerzas que pugnan por alterar el funcionamiento de éste sistema.
  25. La apuesta a la baja en bolsa será considerado un delito por el código penal. Este ha sido el sistema utilizado para tirar por tierra la bolsa de Grecia, Irlanda, Portugal o España (fundamentalmente) y de otros países de Europa.
  26. Todos los políticos tendrán que hacer pública su declaración de la renta. Hay que evitar el secretismo en cargos que se supone tienen que rendir cuentas ante nosotros.
  27. Solo habrá educación pública. Evita el problema de que se beneficie (como en Madrid) a colegios privados frente a los públicos.
  28. Los hijos de los políticos deberán ir obligatoriamente a instituciones públicas dentro del país. De este modo se obliga a que se legisle con sentido sobre educación en lugar de seguir haciendo cambios absurdos como hasta ahora.
  29. La educación universitaria será íntegramente en inglés. Hay que empezar a pensar que nos movemos en un entorno internacional.
  30. Todos los departamentos de las universidades deberán tener el menos un 10% de puestos destinados a profesores invitados de otros países. Hay que empezar a importar nuevas ideas y formas de ver las cosas en lugar de tener departamentos cerrados y herméticos.
  31. Cuando un departamento tenga que convocar nuevas plazas, éstas serán gestionadas desde un órgano independiente para evitar favoritismos (generalmente será un órgano dependiente del ministerio de cultura). En la actualidad hay muchos puestos a dedo y eso siempre es perjudicial.
  32. A la hora de optar a un puesto de profesor titular universitario contará tanto su experiencia en docencia, sus publicaciones y las valoraciones que del él se tenga por parte de antiguos alumnos (ninguna de éstas valoraciones podrá tener un peso menor del 20%, ni superior al 40% para la ponderación del candidato). En la actualidad se tiene un sistema de meritocracia donde pesa mucho la investigación, pero para una plaza de profesor también debe contar que éste explique bien y eso solo sus alumnos lo pueden decir.
  33. Los derechos de autor prescribirán a los 10 años de la publicación de la obra y no serán heredables. Se pretende evitar el abuso sobre obras no físicas que existe en la actualidad. No se puede tener a gente viviendo del cuento, que con los políticos ya es bastante.
  34. La administración pública solo hará uso de herramientas que sean software libre y que hayan sido compiladas por expertos de la admisnistración para garantizar la seguridad nacional y la interoperabilidad. Igualmente el servicio de mantenimiento del software estará a cargo de los expertos anteriormente mencionados. De este modo se pretender reducir el gasto en software y los problemas de seguridad que puedan estar derivados del espionaje por parte de otras naciones. No lo elimina del todo, pero nos da más posibilidades de maniobra. Igualmente, garantiza que todos los ciudadanos podrán comunicarse con la administración sin la necesidad de comprar un paquete de software valorado de cientos de euros.
  35. En época de crisis económica se congelaran los sueldos de los políticos, no así las revisiones del sueldo mínimo. Esto pretende animar a las clase política a hacer cosas para realmente salir de la crisis. Aunque sean cosas relativamente puntuales en el tiempo es mejor que haya leyes (o incluso en la propia constitución) que regulen esto.
  36. Se facilitarán los tramites para crear empresas, no pudiendo ser nunca el tiempo necesario para esta labor superior a 2 días. España adolece de graves problemas para la creación de empresas lo que perjudica al entramado económico.
  37. En las universidades de se fomentará la creación de empresas antes que la búsqueda de empleo. No puede ser que gente muy preparada solo vea como opción ser contratados en lugar de utilizar todo su potencial en sacar sus ideas adelante.
  38. Cuando una administración pública deje de pagar alguno de los servicios de los que ella depende será automáticamente intervenida y su gabinete sustituido por una asamblea ciudadana. Se pretende evitar casos como el de los abogados del turno de oficio de Madrid, el de correos y los jugados de Valencia, etc.
  39. El estado deberá hacer pública toda la documentación que vaya generando en un plazo máximo de 2 semanas. Hay que evitar el secretismo.
  40. Los programas electorales tendrán caracter contractual y su redacción deberá ser concisa y medible para controlar su grado de consecución. Igualmente, existen causas por las que no puedan cumplirse los puntos propuestos y deberán tratarse como sigue:
    • Cuando por cuestión de votos no se alcance la mayoría necesaria, y siempre que se haya negociado con todas las partes, no se tendrá en cuenta. No siempre salen adelante todas las leyes.
    • Cuando los cambios sociales o econímicos conviertan en inservible la propuesta y siempre que esté debidamente documentada la razón de no llevarla a cabo.
  41. No se realizará ningún tipo de discriminación, ni siguiera la discriminación positiva. Es habitual que cuando se hace discriminación positiva el grupo discriminado pueda realizar abusos sobre el resto. Este tipo de discriminación se puede evitar realizando las adecuadas políticas de educación. Esto supone años hasta la adaptación, pero son cambios más profundos y duraderos.
  42. Los partidos deberán hacer públicas todas sus cuentas y finanzas, además, no se podrá tener más de un 40% de capital en forma de deuda. Hay que evitar la financiación ilegal y evitar el sobreendeudamiento actual de los partidos, lo que les hace esclavos de los bancos.
  43. Los créditos hipotecarios no podrán tener una duración mayor a 20 años en el momento de la firma y solo podrá renegociarse este tiempo en caso de problemas económicos sobre la familia afectada. Los tiempos casi infinitos para pagar los créditos ha permitido que los precios se disparen.
  44. En caso de crisis general no se podrá realizar ejecuciones hipoteacarias sobre familias, por lo que queda paralizado hasta 2 años después de que se considere terminada la crisis y solo si la familia no ha podido continuar pagando en ese momento. En momentos de crisis se debe proteger a los más desprotegidos, por eso se paran las ejecuciones hipotecarias en ciertos casos, pero no se cancelan. Se da un margen de tiempo tras la crisis para retomar los pagos en si no se vuelve, entonces sí podrá realizarse dicha ejecución hipotecaria.
  45. Las empresas que obtengan beneficios no podrán realizar EREs. Más de lo mismo sobre la protección de los más débiles.
  46. Durante las campañas, los partidos no podran dar ningún tipo de regalo a los ciudadanos. Evita comprar el voto con chorradas. Esl voto se debe ganar, no comprar.
  47. El suedo de los directivos de una empresa no podrá ser nunca superior a 22 veces el suendo más bajo dentro de la misma. Creo recordar que esto no es gratuito, sino que más de un experto en economía recomendaba este máximo para evitar grandes desigualdades.
  48. En las empresas con más de 100 trabajadores, éstos deberán tener representación en la junta directiva y su voto pesará un 10% sobre las decisiones a tomar. Esta representación será consensuada en asamblea por los trabajadores. Cuando una empresa es muy grande puede suponer la desconexión entre la directiva y el empleado. Con esto se pretende garantizar que el empleado está siempre presente.
  49. El estado debe intervenir los capitales que se encuentren en paraisos fiscales. Igualmente, se debe impedir el acceso a dichos paraisos fiscales. Se debe evitar ocultar los capitales.
  50. Durante los momentos de crisis puede darse que el único médio de salir adelante de una empresa sea reducir salarios o realizar despidos. En estos casos, la junta directiva siempre deberá dar ejemplo y deberá reducirse el sueldo o el número de personas de forma proporcional. Es bonito cuando los empresarios de la CEOE dicen que hay que apretarse el cinturón, y no niego que sea mentira, pero hay que dar ejemplo, no pueden cargar con todo el peso solo los trabajadores.
  51. No podrá haber becas de ningún tipo fuera las instituciones educativas, por lo que se prohíbe sistemáticamente la contratación de becarios por parte de las empresas o administraciones públicas. En la actualidad se abusa mucho de las becas, por lo que se prohíbe su uso en los casos más sangrantes: las empresas.
  52. No se permitirán las prejubilaciones de excepto para aquellos trabajos que supongan un esfuerzo físico importante, como pueda ser la minería. En la actualidad hay un problema importante con las pensiones y es que muchas empresas prejubilan a gente en perfecta edad para trabajar y es el estado el que carga con ésto. Este tipo de prejubilación debe darse solo en casos especiales y no a discreción.
  53. Se creará un sistema de ahorro e inversión para los momentos de super-habit económico para garantizar que el estado tenga remesas económicas suficientes para futuras crisis. Dicho de otro modo, lo que no hemos hecho aquí cuando iban bien las cosas. El estado no debe ser sólo una máquina de gastar, también debe poder ahorrar para un futuro.
  54. En un plazo de 10 años todos los vehículos que circulen deberán ser híbridos o eléctricos. Hay que empezar a reducir la dependencia con los carburántes fósiles por convertir al sistema financiero muy dependiente de sistemas de especulación.
  55. Se cambiará el sistema de gestión de la red eléctria para garantizar unos precios justos. He leído gran catidad de artículos sobre el tema, pero ya no recuerdo bien como estaba, por lo que no puedo ser ahora más especídigo (puede que una futura revisión).
  56. Se mejorará la gestión del agua, de tal forma que los lugares con gran necesidad de la misma (como Murcia) deberán priorizar el uso de dicho recurso (es más importante el agricultor que un campo de golf). Vamos, evitar toda la movida del trasvase para regar campos de golf mientras se secan los cultivos como se intenta hasta ahora.
  57. Sólo exite la violencia y puede haber atenuantes o agravantes. Con temas como la discriminación positiva se han creado leyes como la mal llamada ley de la violencia de género. La violencia puede darse de muchas formas en familia y fuera de ella, entre parejas, por lo que no puede legislarse solo sobre la que pueda realizar el hombre sobre su pareja o expareja.
  58. Las cárceles deben ser centro para la rehabilitación de los presos. Por este motivo los presos trabajarán y serán educados para poder salir preparados. Igualmente se crearán programas de reinserción para facilitar la incorporación de éstas personas al múndo laboral. Siempre se piensa en la carcel como un castigo, pero su función no debe quedarse ahí y toda persona tiene derecho a arrepentirse y el derecho de ser tratado como una persona normal una vez termine su condena.

Se me ocurren muchas cosas más, pero me van y me vienen constantemente a la cabeza. Yo creo que éstas con las principales y puede que vaya actualizándolo con el tiempo.

05 de June de 2011 a las 20:26

29 de May de 2011

Fernando Cerezal

Asamblea de sol

Acaba de terminar la asamblea de sol.
La acampada de momento continúa. No ha habido consenso sobre la próxima reunión.
Varias comisiones han pedido, de distintas maneras, organizar ya la salida y levantar como tarde el fin de semana que viene, porque hay problemas de medios y personas para mantenerlo.
la gente ha votado que no sé levanta y entonces estos han dicho que para no levantar tiene que haber más gente trabajando en el campamento. Varias personas sé han comprometida a ayudar.
El método asambleario supone que la gente es razonable, Lo que es mucho suponer entre 3000 personas.
Los acampados están ahora entre la encrucijada de Lo que creen que deben hacer y Lo que la gente les pide. Esa gente que incluso les ha negado que el campamento tenga los problemas que ellos mismos exponen o que les dicen que tienen que aguantar Lo que sea por los demás.
En el último momento la gente de legal ha informado de que la policía les informa de que hasta el martes no hay problema, pero luego sólo incertidumbre.
Aún así la gente pedía que el campamento continuas hasta el domingo. Quizás no sean conscientes de que hasta la resistencia pasiva es resistencia y está penada con cárcel.
Espero que los acampados sé vuelvan a reunir entre ellos y lleguen a algo racional.

Perdón por el orden, pero está escrito con el móvil en el metro camino a casa.

29 de May de 2011 a las 22:41

23 de May de 2011

Fernando Cerezal

Como irse dejando huella (15M)

Es tarde y no voy a andarme con rodeos.
La base de la idea es que la acampada de sol cada vez se parece más a un feria, con distintos stands de ideologías. Se ha planteado la idea de levantar el campamento entre los acampados, pero algunos dicen que entonces puede desparecer todo lo que ha pasado.
Leyendo hoy los tweets de Reverte, estoy de acuerdo con él en que lo importante no es que el campamento siga ahí, si no la movilización que se ha conseguido y que se puede repetir.

¿Como levantar el campamento y dejar un recuerdo?
Con un monumento. No hace falta que sea grande, ni que sea caro. Vale con que sea de un material que no se estropee rápido con el tiempo y que se plante en medio de la puerta del sol. "15 de Mayo de 2011. El día que la democracia española alcanzó su mayoría de edad."

Ya tendríamos punto de encuentro para la próxima vez.

23 de May de 2011 a las 22:47

21 de May de 2011

Samuel Rodriguez

Reflexionar

Según la Real Academia Española, reflexionar significa:

1. intr. Considerar nueva o detenidamente algo. U. t. c. tr.

En el caso de la jornada de reflexión que existe en España, se reflexiona sobre las alternativas políticas que van a presentarse. Aún a pesar de que se deje sólo un día para esta importante actividad lo cierto es que es algo que no solo debe realizarse durante el periodo electoral, sino durante todo el tiempo. Desde el mismo momento en que se instarua un gobierno, alcaldía o lo que sea se debe vigilar la actividad de los políticos de cara a preparar el próximo voto. Hay que comprobar si cumplen o no con su programa, si lo intentan (aún no gobernando) y si su actuación es la más adecuada para el conjunto de ciudadanos. También hay que tener en cuenta la situación de cada momento ya que puede estar bien prometer una cosa, pero al cambiar las circunstancias es mejor hacer otras (hay que dar margen, no siempre se puede cumplir, pero habría que justificar fehacientemente la razón del cambio). Hay que pensar en muchas cosas más, porque si uno sale ganando y 100 perdiendo tal vez las cosas no se estén haciendo bien.

Con todo lo anterior no voy a pedir el voto para tal o cual partido, porque no corresponde al día de hoy y porque tampoco me gusta influir (mucho) en los demás, pero sí pido a la gente que piense bien a quién votar, que no vote a uno para que no salga otro, sino que vote al que cree mejor opción. Pido que se vote y que se haga un voto válido y no en blanco, para que todos los partidos tengas opciones, tanto los pequeños como los más grandes. Y pido, sobre todo, que al votar se piense en el interés general y no en el propio ya que los políticos deben gobernarnos a todos y no solo a unos pocos, porque sino solo conseguiremos salir perdiendo.

Por todo ello, votad, votad con cabeza y sobre todo, votad con esperanza.

21 de May de 2011 a las 14:08

20 de May de 2011

Samuel Rodriguez

Jornada de reflexión

Poca gente creo que, a día de hoy, no ha oído hablar del movimiento democracia real ya. Las últimas noticias son que la Junta Electoral ha prohibido las manifestaciones del sábado aún a pesar de que haya sentencia del Tribunal Constitucional que la avala. Hasta aquí nada raro en la vida normal de los Españoles, donde los jueces se tiran constantemente los trastos a la cabeza dependiendo de si sirven más a la ciudadanía y la legalidad o a la clase política.

Lo que más gracia me hace de la situación es como los medios afines al Partido Popular se han volcado a pedir respeto a la decisión de la Junta Electoral para que el sábado se retire todo el mundo de #acampadasol, curiosamente la misma gente que prácticamente llama al boicot del Tribunal Constitucional por su decisión sobre Bildu (que daría para escribir un artículo completo y que por suerte otras personas ya lo han hecho). Es más, mucha de ésta gente, como Pedro J. Ramírez, ya en su momento se saltaron la ley electoral para poner publicidad de campaña durante el día de reflexión de las elecciones generales del año 2004. Sin duda todo una muestra de coherencia lo de decir que a veces hay que respetar las decisiones de los jueces y otras no…

20 de May de 2011 a las 07:14

17 de May de 2011

Samuel Rodriguez

¡Silencio! Se roba

Algún día mis hijos me preguntarán: “Papá, ¿Tú que hiciste por España?” y avergonzado tendré que responderles que nada.

Este fin de semana pasado se realizó una manifestación en pos de una democracia de verdad, en la que los políticos gobiernen para el pueblo y no para sus intereses, donde las personas sean más importantes que las empresas. Este movimiento, conocido como democracia real ya, ha surgido en internet a causa de las dificultades que los  medios de difusión tradicionales pone a la comunicación de toda actividad que no sea favorecer a empresarios o políticos afines.

Hasta el momento, la mejor información sobre las actividades que se han realizado para defender los derechos de los ciudadanos pueden encontrarse en medios extranjeros (como el Washington Post) o en internet, mientras que, tarde y mal, los medios nacionales han empezado una campaña de difamación y politización de los mismos… ¡No tienen interés en ningún cambio a mejor!

Para los que aún no sepan de qué va la cosa, os recomiendo que busquéis en Twitter los hashtags #15mani, #acampadasol y #spanishrevolution.

Podemos ver como medios como El País atacan al PP por tener imputados por casos de corrupción en sus listas, pero olvidan hacer los mismo con el PSOE. Los medios afines al PP hacen tres cuartos de lo mismo. Y todos se olvidan de informar de que la sociedad empieza a organizarse contra esta gente, porque está cansada de que les engañen, pero eso sí, enseguida llaman vándalos a todos porque unos pocos la arman (entre estos pocos había policía infiltrada, lo que da mucho a pensar sobre quién pudo empezar a armar la bronca…).

Bueno, algo podré decirle a mis hijos que hice: votar. Voy a votar a otros, voy a luchar con mi voto por evitar el apoltronamiento de unos parásitos que viven de chupar del bote, de dietas pagadas por todos, pero que no se justifican en absoluto con el trabajo realizado. Voy a votar para evitar programas electorales llenas de promesas por romper. Sin duda estaremos mejor sin PP y sin PSOE (ni CiU en Cataluña, donde ya han empezado a implantar lindenzas como el co-pago de la sanidad cuando ésta ya se paga con los impuestos…).

Ya sabéis, si queréis luchar por vuestros derechos, votad bien, evitad parásitos, salid a la calle, pero siempre respetando a los demás.

17 de May de 2011 a las 09:06

13 de May de 2011

Samuel Rodriguez

Cambio de aires

Hoy es mi último día en la beca. Han sido 5 años maravillosos y que echaré mucho de menos.

Pero ahora toca un cambio de aires. De momento voy a una empresa en la que espero aprender mucho y en donde creo puedo aportar mucho.

A ver como va esta nueva aventura.

13 de May de 2011 a las 09:29

10 de May de 2011

Samuel Rodriguez

Código ofuscado

Muchos de los que leen este blog seguro que ya saben a qué me refiero por código ofuscado. Si es ese el caso, probablemente lo que cuente a continuación ya lo sepas. Para los demás, si os apetece ver las cosas que un friki de la programación puede hacer cuando se aburre, continúa leyendo.

El código ofuscado es, según la Wikipedia el “[..] acto deliberado de realizar un cambio no destructivo, ya sea en el código fuente de un programa informáticocódigo máquinacuando el programa está en forma compilada o binaria, con el fin de que no sea fácil de entender o leer”. De cara al programado que quiere echarse unas risas es hacer un programa correcto pero que no pueda entenderse leyéndolo. ¿Y eso por qué? Porque podemos.

Imaginemos algo sencillo: en C hacer un programa que muestre por pantalla un “Hola, mundo” es algo tan aburrido como lo siguiente:

int main(void)
{
   printf("Hola, mundo");
   return 0;
}

Sin duda algo muy soso, sería más divertido una cosa como la siguiente:

#define __ main
#define ___ printf
int
__(int _, char **b)
{
   return (_ > 0)? ((_==1)?__(_-1, 0):0):___("Hola, mundo");
}

Ahora mismo no sé si funciona, pero como podéis comprobar es muuuucho más clarooooo (entiendase el sarcasmo). Ya lo único que le faltaría es ocultar el mensaje de algún modo estrafalario.

A parte de las connotaciones divertidas que pueda tener la ofuscación de código (hay códigos con forma de avión, círculos, etc.), también sirve para reducir el tamaño del código de ciertos programas. Por ejemplo, en el mundo de la web, los códigos javascript se suelen comprimir utilizando técnicas de sustitución parecidas a las de la ofuscación para que ocupen menos y se transmitan más rápido por la red.

También hay quien utiliza este tipo de códigos para evitar que se copien los algoritmos utilizados y que no se pueda hacer ingeniería inversa.

10 de May de 2011 a las 10:36

23 de April de 2011

david::

Especialistas FNAC

Comentario de un especialista de FNAC sobre el libro London, de Edward Rutherfurd (click para agrandar):

Ceporro

http://libros.fnac.es/a195812/Edward-Rutherfurd-London?PID=5&Mn=-1&Ra=-1&To=0&Nu=1&Fr=0

#especialistascanis

23 de April de 2011 a las 09:33

07 de April de 2011

Ana

De cuándo uno se define a sí mismo

¿Hasta qué punto es importante hacer lo que uno quiere? ¿Es verdad eso de que más vale pájaro en mano que ciento volando? ¿Intentar cumplir tus sueños a largo plazo o pillar algo seguro aunque no sea lo que quieres?

Cha cha cha chaaaaaaaan (música siniestra).

07 de April de 2011 a las 09:08

31 de March de 2011

Samuel Rodriguez

Manifiesto de #nolesvotes

El próximo 22 de mayo, los ciudadanos españoles están convocados a las urnas para votar a sus representantes públicos en todos los ayuntamientos y en algunos parlamentos autonómicos. Los representantes elegidos tendrán a su cargo la gestión de miles de millones de euros durante un periodo de cuatro años, razón más que suficiente para extremar las precauciones de los votantes: a lo largo de los últimos años, el nivel de corrupción en la política española se ha disparado de manera alarmante en todo el arco parlamentario.

PSOE, PP y CiU son las tres formaciones políticas que han pactado para resucitar la ley Sinde en el Senado, una ley que permite censurar Internet por vía administrativa, sin una intervención judicial que garantice la tutela efectiva de los ciudadanos. Al juez que deba validar el cierre le estará vedado analizar el fondo del asunto, esto es, la vulneración de derechos de propiedad intelectual o la posibilidad de producir un perjuicio patrimonial por parte de la página web cuya clausura se solicite. La ley Sinde crea un “agujero libre de jueces” donde la decisión la toma una comisión administrativa nombrada por el gobierno, para evitar lo que hasta el momento venía ocurriendo: que los jueces no daban la razón a las reclamaciones de la industria de los contenidos.

La ley Sinde es ineficaz. No aborda una reforma integral de la legislación de propiedad intelectual, único camino para favorecer la justa retribución de los creadores y artistas en el marco de una sociedad de cultura digital. Aún así, y a pesar de la oposición de una parte importante de la sociedad incluyendo creadores y artistasPSOE, PP y CiU votaron a favor de ella. Pesaron más laspresiones de gobiernos extranjeros y de grupos minoritarios que el interés social. Pero no todo es culpa de nuestros representantes: nosotros les hemos elegido, por acción u omisión.

Desde Nolesvotes.com consideramos que PSOE, PP y CiU han faltado a su principal obligación con la ciudadanía: defender la Constitución que juraron o prometieron acatar. La ley Sinde somete Internet a una legislación excepcional, con grave merma de los derechos a la libertad de expresión e información y a la tutela judicial efectiva, posibilitando un mayor control político de la red.

Tu decisión es importante. No te pedimos el voto para ningún partido concreto, ni que votes en blanco, ni que te abstengas, sino que te informes para comprobar que existen alternativas contrarias a la ley Sinde en todo el espectro ideológico. Te pedimos que defiendas la libertad en la red con tu voto, no apoyando a aquellos que con sus actos se han hecho claramente merecedores de un voto de castigo.

El próximo 22 de mayo, NO LES VOTES.

31 de March de 2011 a las 17:49

29 de March de 2011

Samuel Rodriguez

Distributed Hash Cracker

Ese nombre tan rimbombante es, ni más ni menos, que la base de mi proyecto final de carrera, felizmente entregado ya. Es una herramienta que en su momento se encontraba en internet con licencia BSD y que por algún motivo desapareció. Lo curioso no es que no esté ya el programa, sino toda la web que lo albergaba junto a más proyectos.

Tras hablarlo con mi director de PFC hemos decidido publicar el código con las modificaciones introducidas en los próximos meses (puede que antes haya que hacer aún algún cambio). De momento mi idea es ponerlo en GitHub y aún tengo la duda de si puedo cambiar la licencia de BSD a GNU GPL v3 o si sólo puedo cambiar los ficheros que haya modificado (que creo son bastantes).

29 de March de 2011 a las 20:52

14 de February de 2011

Ana

Último cuatrimestre

Casi, casi, casi... termino la carrera. Ahora lo típico:
-Qué ansia y qué ganas de terminar ya.
-¿Qué voy a hacer el año que viene?
-¿¡Qué va a ser de mí!?

14 de February de 2011 a las 10:37

25 de January de 2011

Ana

¡Software libre en la uni!

Una cosa que me ha molestado siempre mucho es lo "difícil" que es usar el Firefox en los ordenadores de la universidad. Tienes un acceso directo al explorer, pero no a Firefox. Bueno, eso es así hasta que llegan las fechas de matrícula, aparece un acceso directo con el iconito azul y rojo que pone "automatrícula". Claro, porque es más seguro... si lo saben, ¿por qué no ponen el dichoso acceso directo?

Hoy en cambio tenía que retocar una foto, así que me he ido a buscar el photoshop. No lo veía... nada... no está... ¡ahí vá! ¡El GIMP!

¡Toma! ¡Toma! ¡TOMA!

25 de January de 2011 a las 21:47

Samuel Rodriguez

Actuación contra la ley Sinde

Poco a poco parece que la ley Sinde va a salir adelante. Creo que este es un buen momento para empezar a plantear qué acciones se deberían llevar a para actuar contra esto, tanto a corto como a largo plazo.

Yo propongo las siguientes actuaciones:

  1. No ir al cine, conciertos u otros espectáculos que puedan suponer ingresos directos o indirectos a las arcas de las entidades de gestión de derechos de autor.
  2. No comprar música ni películas (tanto de primera como de segunda mano).
  3. No comprar en España artículos grabados con canon.
  4. No votar a PP, PSOE ni CIU en las próximas elecciones.
  5. Escribir a nuestros senadores informándoles sobre nuestra negativa a que sea votada la ley Sinde.
  6. Exigir el cese inmediato de la ministra de cultura Ángeles González-Sinde Reig.
  7. Informar a todos nuestros conocidos de la situación para que, en la medida que puedan, sigan estas normas.
  8. Descargar música y vídeos libres.
  9. Apoyar y, si es posible, acudir a todas aquellas actividades cuya finalidad sea paralizar la aprobación de la ley Sinde, la dimisión de Sinde.

Seguro que podría hacerse algo mejor, no soy un genio, la verdad, pero creo que es un buen principio.

25 de January de 2011 a las 09:56

18 de January de 2011

Samuel Rodriguez

Meme fin de año o algo

Sí, sé que he tardado mucho en publicar esto, pero es que entre que en navidades no he tocado Internet y el PFC…

1. ¿Qué hiciste en el 2010 que nunca habías hecho antes?

Mi primer aniversario de pareja :-)

2. ¿Mantuviste tus resoluciones de Año Nuevo, y harás nuevas?

Solo algunas, no terminé el PFC, pero ya le estoy poniendo remedio. No tengo resoluciones de año nuevo, solo ideas de cosas que hacer.

3. ¿Se casó alguien cercano a ti?

Sí, dos grandes amigos que tengo desde hace mucho tiempo. Les deseo mucha felicidad.

4. ¿Nació alguien cercano a ti?

Creo que no, pero teniendo en cuenta que vivo en mi mundo piruleta…

5. ¿Murió alguien cercano a ti?

Una tía de mi padre con la que echaba unas risas cada vez que iba al pueblo.

6. ¿Qué países visitaste?

Portugal, Finlandia y Reino Unido, o al menos estuve en ellos.

7. ¿Qué te gustaría tener en 2011 que no has tenido en 2010?

¡La carrera terminada!

8. ¿Qué fechas de este año permanecerán en tu memoria?

14 de febrero, 6 de marzo, 19 de marzo, 16 de octubre (me guardo mis razones, pero más de uno sabrá cuales son).

9. ¿Cuál es tu mayor logro del año?

Creo que empezar a ponerme en serio con el PFC es uno :-P

10. ¿Cuál ha sido tu mayor fracaso?

Desarrollo web. Aún me falta un hervor, pero me gusta mucho.

11. ¿Has sufrido una enfermedad o herida?

Soy invulnerable :-P

12. ¿Qué ha sido lo mejor que has comprado?

Cada regalo que ha despertado felicidad a quien lo ha recibido; aunque no han sido muchos… ¡¡soy un poco rata!!.

13. ¿El comportamiento de quién merece celebración?

El de todos aquellos que apoyan y ayudan a organizaciones como WikiLeaks, los que luchan contra las injusticias y por la auténtica igualdad de todos los seres humanos sin ningún tipo de distinción.

14. ¿La actitud de quién te ha hecho sentir deprimido u horrorizado?

La de los gobiernos que se venden a los intereses del mercado y el mejor postor.

15. ¿Donde se ha ido la mayor parte de tu dinero?

En comer con mis amigos y mi novia, en disfrutar con éstos y en chorradas (no lo puedo evitar :-P ).

16. ¿Qué te ha hecho mucha ilusión?

Estar con mi novia.

17. ¿Qué canción te recordará siempre el 2010?

La verdad es que el año pasado estuve poco musical… Diría que cualquiera de las de Tron Legacy.

18. Comparando con hace un año, estás ¿más contento o más triste?

Menos.

ii. ¿Más delgada o más gorda?

Un poco más gordo.

iii. ¿Más rica o más pobre?

Igual.

19. ¿Qué te gustaría haber hecho más?

Ganar dinero ¡bwajajajajaja! En serio, pasar más tiempo con mis amigos.

20. ¿Qué te gustaría haber hecho menos?

Estresarme con el trabajo.

21. ¿Cómo pasarás la Navidad?

En mi casa (ahora lo sé porque ya pasaron).

22. ¿Te has enamorado en el 2010?

Sí, todos los días y de la misma mujer.

23. ¿Cuantos rollos de una noche?

Ninguno.

24. ¿Tu programa de televisión favorito?

Cualquiera de Canal Cocina.

25. ¿Odias a alguien a quien no odiaras a estas alturas del año pasado?

No.

26. ¿El mejor libro que has leído?

No sé si he llegado a terminar alguno TT_TT

27. ¿Cúal ha sido tu mayor descubrimiento musical?

¿Ya dije que el año pasado estuve poco musical?

28. ¿Qué querías y conseguiste?

Viajar.

29. ¿Cuál es tu mejor recuerdo de 2010?

El viaje a Lisboa.

30. ¿Tu película favorita del año?

Tron: Legacy

31. ¿Qué hiciste en tu cumpleaños y cuantos cumpliste?

Quedé con mis amigos para tomar algo y cumplí 30.

32. ¿Qué es lo que hubiera hecho tu año mucho más satisfactorio?

Sinceramente no lo sé, pero trabajaré en descubrirlo ;-)

33. Describe tu concepto de la moda en 2010:

El mismo que el de moda en el * (sustituye * por cualquier cosa): un engañabobos.

34. ¿Qué te ha hecho permanecer cuerdo?

Todos mis amigos.

36. ¿Qué tema político te ha inquietado más?

WikiLeaks.

37. ¿A quién has echado de menos?

A Riva mientras estuvo fuera. A mis amigos cuando no tengo tiempo para verlos. A mi novia todos los días que no la veo.

38. ¿Quién es la mejor persona a la que has conocido?

Complicada pregunta. La verdad ya no sé a quién he conocido y a quién ya conocía y a los que he conocido no he tenido tiempo de tratar suficiente con ellos…

39. Dinos una lección valiosa que has aprendido de 2010:

Poner cera, quitar cera.

40. ¿Dirías que el 2010 ha sido un buen año a pesar de todo?

Sí, todos son buenos, solo hay que saber valorarlos.

18 de January de 2011 a las 12:47

24 de December de 2010

david::

¡Mira, mamá, es el siglo XXI!

Respuestas estúpidas e ignorantesrabietas tras la (primera) votación de la Ley Sinde. Quizá estos chicos se han dedicado tanto a sus carreras artísticas que no se han dado cuenta de que ya llevamos una década en el siglo XXI y las cosas han cambiado un poquito.

Hace años, al volver de vacaciones cogíamos el carrete de fotos y lo llevábamos a revelar, volvíamos al rato y ahí teníamos las fotos. La tecnología evolucionó y aparecieron las cámaras digitales, que ya no había que llevar a revelar. Todo el enorme negocio del revelado de mugrientos carretes de fotos se fue al traste. Hoy en día pocos fotógrafos aficionados a ese tipo de fotografía usan fotografía química.

Durante mucho tiempo, la música se transmitía, compraba y vendía, en discos de vinilo. Los músicos firmaban con una discográfica, grababan sus composiciones y recibían un pequeño porcentaje de cada vinilo vendido. Las cintas y los CDs son soportes más modernos, pero el negocio era el mismo. Algo parecido ocurría con las películas, y todavía hoy ocurre en gran medida con los libros.

La tecnología, mientras tanto, ha tenido la malísima costumbre de avanzar. Es muy probable que Bardem o Sanz usen cámaras digitales en lugar de carretes de fotos, o que escriban correos electrónicos en lugar de enviar cartas en papel, o que ni se acuerden de la última vez que usaron una cabina de teléfonos pública, o una máquina de escribir, o un reloj de cuerda. Todos esos negocios, y muchos más, tuvieron su momento de gloria, pero en el siglo XXI ya no tienen sentido.

El negocio de la música o el cine está en la misma situación. Los vinilos y los CDs tuvieron su momento de gloria, y todavía hay enamorados de esos soportes, como los hay de los carretes de fotos, pero la mayor parte de los ciudadanos ya no los quieren. En el siglo XXI el entretenimiento se transmite por internet, y se almacena en memorias flash. Los CDs son cosa del pasado, y las discográficas son las nuevas tiendas de revelado de fotografías. Obsoletas.

Ante esta situación, Bardem o Sanz tienen dos opciones: quejarse, llorar, patalear, berrear y pedir que se ilegalice el avance de la tecnología, o comportarse como adultos y adaptarse a los nuevos tiempos. En lugar de criminalizar a la gente y tratar de conservar un negocio del siglo pasado, quizá sería una buena idea abandonar ese modelo obsoleto de vender CDs y DVDs y dedicarse a vender directamente por internet.

La metáfora que propone Bardem es, digamos, regular. El pintor no va a tu casa a pintar. No. El pintor ha pintado una sola casa, con esmero y dedicación, con la ayuda de mucha gente, pero un solo salón, y el resto son copias, y hay unas personas que venden esas copias por un precio exageradamente alto. Y si quieres ver en directo al pintor pintar, tienes que pagar un precio desorbitado. Unos pocos están dispuestos a pagar ese precio. Se llaman fans. Los demás, no. Por eso se bajan las películas gratis, porque no merece la pena pagar siete euros por otra película de la Guerra Civil, o de barrios marginales, o de la represión franquista, o de homosexuales con miedo a salir del armario, o la trigésima versión de Corazón Partío. Dejad de vender CDs a precio de oro, vended por internet, así podréis bajar los precios, y venderéis más. Si queréis criminalizar a alguien que sea a esos intermediarios que cogen el trabajo de todo el equipo de artistas y lo venden a precio de oro, os dan una ínfima parte de las ventas y se quedan el resto.

Así que si preferís berrear, patalear y aferraros al siglo pasado, me parece bien. No olvidéis tirar vuestra cámara digital.

24 de December de 2010 a las 16:26

21 de December de 2010

Victor Pimentel

Creando un bot para Twitter

Este domingo busqué un servicio para Twitter que me permitiera seguir automáticamente a gente que escribiera sobre algunas palabras claves desde la cuenta de Wikipedal. No me justificaré, es lo más parecido al spam que existe, pero es bastante efectivo en conseguir microaudiencias. La idea no es solo lograr que te lea gente interesada en lo que escribes, sino también llegar a los influenciadores para que escriban de ti.

El caso es que después de estar un buen rato mirando las alternativas en forma de servicio web o aplicaciones de escritorio, llegué a la conclusión de que todas apestan, o son de pago, o ambas. Así que me puse a escribir algo yo mismo, y en media hora tenía un script que hacía exactamente lo que quería. Es sucio, no sigue ninguna buena práctica y mata moscas a cañonazos, pero funciona. Y si te gusta programar lo verás incluso divertido.

La idea general del script es ir a la portada de Wikipedal, extraer el cóctel del día, buscar en twitter los usuarios que hablan de ese cóctel y, finalmente, seguir a quienes nos interese. Ese cóctel es algo que se genera automáticamente todos los días, y por cuestiones externas e inamovibles (aka Mediawiki apesta), la manera más rápida de obtenerlo es directamente bajarse la portada y buscar el texto que nos interesa.

Para el script escogí Ruby, un lenguaje que me encanta pero que llevaba más de un año sin tocar. Además instalé dos gemas: la primera se llama hpricot y nos ayuda a parsear una página en HTML; la segunda es twitter y es la manera más sencilla de interactuar con la API de Twitter.

doc = Hpricot(open('http://wikipedal.org/', 'User-Agent' => 'ruby'))

En esta línea nos descargamos la página entera, se la pasamos a hpricot y él nos devuelve el documento ordenado por el DOM, con todos los elementos fácilmente accesibles. Lo único feo es que hay que cambiar el User-Agent para que Mediawiki nos permita el paso.

cocktail = (doc / '#mp-tfa .mw-headline').text.strip

Con esto filtramos el documento para que nos dé exactamente el elemento que nos interesa especificando la ruta dentro del DOM (sería como hacer $('#mp-tfa .mw-headline') con jQuery y similares). Cogemos su texto y lo limpiamos un poco para evitar espacios innecesarios.

Ahora viene el trabajo de verdad, la integración con Twitter. Desde la cuenta que queramos actualizar primero nos registramos como desarrolladores y creamos una aplicación. Se tarda muy poco, cuando terminemos nos copiamos las claves para rellenar algo como esto:

Twitter.configure do |config|
  config.consumer_key = 'TU_CONSUMER_KEY'
  config.consumer_secret = 'TU_CONSUMER_SECRET'
  config.oauth_token = 'TU_OATH_TOKEN'
  config.oauth_token_secret = 'TU_OATH_TOKEN_SECRET'
end

Esta es la manera más sencilla, por el tipo de script tan limitado que estamos haciendo, dado que esta mini-aplicación siempre va a trabajar con la misma cuenta de usuario. Una vez configurado, creamos una instancia de búsqueda.

search = Twitter::Search.new

Y llegamos a la traca final. Repito que es un script rápido y sucio, esta no es la manera de crear algo reutilizable. Pongo las últimas líneas todas juntas porque no tiene mucho sentido separarlas.

search.containing(cocktail).language('es').not_from('Wikipedal').not_mentioning('Wikipedal').no_retweets.per_page(10).each do |tweet|
  user = Twitter.user(tweet.from_user)
  if !user.following && user.followers_count > 100 && user.friends_count > 100
    Twitter.follow(user.screen_name)
  end
end

En la primera línea realizamos una búsqueda de tweets que contengan la palabra mágica (la que hemos sacado antes). Dado que Wikipedal está exclusivamente en español, vamos a restringir la búsqueda a tweets en español. Solo nos interesan los tweets originales (nada de retweets) y que no sean de nosotros o de gente que nos menciona. Finalmente limitamos la búsqueda a los últimos diez tweets, no nos interesa más.

Una vez elegidos los diez tweets ganadores, vamos a filtrar los usuarios por cuestiones puramente de marketing. Con la segunda línea cogemos los datos de la cuenta del usuario actual. En la tercera hacemos el filtrado, y lo primero que comprobamos es que no nos siga.

Nos queremos centrar en usuarios influyentes, así que miramos que por lo menos tenga 100 followers. Como también pretendemos que nos siga, buscamos a gente que siga a más de 100 personas, para evitarnos las divas de Twitter que no nos van a seguir en la vida. Todos los usuarios que cumplan esos requisitos se acaban de ganar que los sigamos en la cuarta línea.

Eso es todo, ahora solo queda configurar algún sistema que ejecute automáticamente este script cada cierto tiempo. Para elegir la frecuencia hay que tener en cuenta las personas que hablan sobre ese tema, y también que existe un límite de 2000 personas que podemos seguir sin que nos sigan proporcionalmente. Yo lo ejecuto cada cuatro horas en el propio servidor de Wikipedal, gracias a cron. En mi servidor necesita unos ajustes especiales que no vienen a cuento, si alguien pretende seguir un proceso similar a este y tiene problemas decídmelo en los comentarios.

Momento Github: el código del script completo está en este gist.

21 de December de 2010 a las 16:19

19 de December de 2010

Victor Pimentel

El ocaso de la web 2.0

La noticia de la semana ha sido que Yahoo quiere deshacerse de del.icio.us, algo que nos habría pillado desprevenidos si no conociéramos el mal momento que vive Yahoo. ¿A quién hay que culpar de este fracaso, al propio servicio o a los directivos que no han sabido ubicar su producto?

Al mismo tiempo, otro sitio estandarte de la web 2.0 como Digg lleva años estancado, e incluso perdiendo visitas mes a mes. Algo parecido le está pasando a su clon en castellano, Menéame. Los blogs siguen perdiendo terreno frente a alternativas más fáciles de usar y que requieren menos atención, como Tumblr y las redes sociales mayoritarias.

Este mes, por razones académicas, he tenido que volver a juguetear un poco con Mediawiki, el software detrás de la Wikipedia y que puedes instalar en tu servidor para crear una wiki propia. Tras actualizar Wikipedal e instalarle diversos plugins, he podido comprobar la inmanejable patata que sigue siendo. Sin seguir ningún orden, en los últimos años han cambiado la API interna con cada actualización, y aunque la estructura tiene potencial, la implementación es un Frankestein en PHP al que da miedo meterle mano. Cosas tan sencillas como cambiar un poco el tema que viene por defecto es una odisea que inevitablemente acabará en un sucio hack.

Con todos estos ejemplos podemos pensar que las viejas glorias de la participación en la red se van muriendo poco a poco. No. Estas herramientas son tan válidas como antes, seguramente más con el auge de la conectividad móvil. Lo que se muere lentamente es la noción de que una herramienta tiene que valer para todo el mundo en todas las situaciones.

Yahoo! con del.icio.us y Digg con su nueva versión han querido olvidarse de los nichos e ir indiscriminadamente a por el mainstream, con el resultado de perder los dos públicos. Cualquier curva de crecimiento que sea peor que la de Facebook la consideran un fracaso, olvidando que precisamente su mayor ventaja era que tenían la atención de nichos influyentes. Lamentablemente para ellos, esos nichos más técnicos se han ido a buscar noticias a Reddit o Hacker News, servicios web sin pretensiones ni grandes funcionalidades (de hecho son patéticamente simples).

El santo grial de la web es balancear la atención de los nichos y del mainstream, algo que nadie ha conseguido completamente. Facebook se acerca al integrarse en servicios de terceros con Facebook Connect, pero la relación es muy asimétrica para considerarlo un éxito útil para los usuarios. Hay demasiados enlaces entrantes y pocos salientes, facilitando solo compartir pero no descubrir.

No sé quién podría dar a luz a esta web, quizás Google, quizás una evolución de Facebook, o quizás alguna empresa pequeña que mediante magia consiga la viralidad suficiente. Seguramente queden algunos años para que alguien dé con la fórmula, y mientras tanto lo que deberían hacer los otros grandes jugadores de la web 2.0 es dejar de disparar al aire, asumir sus posibilidades y centrarse en su público.

19 de December de 2010 a las 16:37

15 de December de 2010

Samuel Rodriguez

Rana supermaña

No voy a negar que mientras trabajamos todos tenemos momentos de inspiración en los que pueden surgir cosas como la Rana Supermaña:image

Y tras esta breve pausa a trabajar de nuevo.

15 de December de 2010 a las 08:35

06 de December de 2010

Victor Pimentel

La alegría de los programadores

En estos días de WikiLeaks y controladores aéreos, se agradece más que nunca cambiar un poco de tema para huir de la presión informativa. En el vídeo de arriba podéis ver la charla que Mr. David Heinemeier Hansson, creador de Ruby on Rails hace unos añitos, dio en la última conferencia de Ruby.

La charla no es técnica y de hecho casi cualquiera puede entenderla, incluso si no sabemos nada de programación. Bajo el título de ¿Por qué Ruby? realmente nos relata una fantástica historia alrededor de la felicidad de los trabajadores como motor de innovación y calidad. Y, señores, en menos de una hora pega una patada a todos los libros de ingeniería del software.

La felicidad del equipo técnico a la hora de desarrollar un proyecto es algo que ningún profesor enseña en la universidad y que muy pocos jefes de proyecto promueven. Sí que es una tarea a estudiar por recursos humanos de manera genérica, basada en dinero, reconocimiento y ambiente de trabajo. Pero no hay que olvidar que el factor fundamental para disfrutar ese trabajo es que la realización del trabajo en sí sea interesante.

Quizás pensemos que ese factor no se puede cambiar: hay que hacer X y punto. Sin embargo, las decisiones del jefe técnico a la hora de elegir plataformas, lenguajes o herramientas puede hacer atractivo hasta el más tedioso de los trabajos. Y aclaro que no tiene que ser precisamente Ruby.

La conclusión a la que quería llegar es que la alegría del equipo técnico no es un factor que hoy en día se considere en las empresas en el desarrollo de software. Hay proyectos heredados en los que no es posible elegir nada, pero en proyectos nuevos desde cero se prefiere usar una tecnología obsoleta que ofrezca un 10% de rendimiento adicional que otra tecnología que facilite el desarrollo, mantenimiento y extensibilidad.

En un escenario en que los gastos de personal y mantenimiento superan con creces al de los servidores y desarrollo, es terriblemente corto de miras. Así que dadles un poco más de libertad a esos programadores, preguntadles con qué tecnologías les gustaría trabajar y tenedlas en consideración a la hora de tomar decisiones. Como dice David, no tengáis miedo a esa libertad, con un poco de suerte conseguiréis crear un sano ambiente dónde la calidad final se decida porque simplemente estén entusiasmados por lo que hacen.

06 de December de 2010 a las 12:41

30 de November de 2010

Samuel Rodriguez

Manifiesto por una Red Neutral

Los ciudadanos y las empresas usuarias de Internet adheridas a este texto manifestamos:

  1. Que Internet es una Red Neutral por diseño, desde su creación hasta su actual implementación, en la que la información fluye de manera libre, sin discriminación alguna en función de origen, destino, protocolo o contenido.
  2. Que las empresas, emprendedores y usuarios de Internet han podido crear servicios y productos en esa Red Neutral sin necesidad de autorizaciones ni acuerdos previos, dando lugar a una barrera de entrada prácticamente inexistente que ha permitido la explosión creativa, de innovación y de servicios que define el estado de la red actual.
  3. Que todos los usuarios, emprendedores y empresas de Internet han podido definir y ofrecer sus servicios en condiciones de igualdad llevando el concepto de la libre competencia hasta extremos nunca antes conocidos.
  4. Que Internet es el vehículo de libre expresión, libre información y desarrollo social más importante con el que cuentan ciudadanos y empresas. Su naturaleza no debe ser puesta en riesgo bajo ningún concepto.
  5. Que para posibilitar esa Red Neutral las operadoras deben transportar paquetes de datos de manera neutral sin erigirse en “aduaneros” del tráfico y sin favorecer o perjudicar a unos contenidos por encima de otros.
  6. Que la gestión del tráfico en situaciones puntuales y excepcionales de saturación de las redes debe acometerse de forma transparente, de acuerdo a criterios homogéneos de interés público y no discriminatorios ni comerciales.
  7. Que dicha restricción excepcional del tráfico por parte de las operadoras no puede convertirse en una alternativa sostenida a la inversión en redes.
  8. Que dicha Red Neutral se ve amenazada por operadoras interesadas en llegar a acuerdos comerciales por los que se privilegie o degrade el contenido según su relación comercial con la operadora.
  9. Que algunos operadores del mercado quieren “redefinir” la Red Neutral para manejarla de acuerdo con sus intereses, y esa pretensión debe ser evitada; la definición de las reglas fundamentales del funcionamiento de Internet debe basarse en el interés de quienes la usan, no de quienes la proveen.
  10. Que la respuesta ante esta amenaza para la red no puede ser la inacción: no hacer nada equivale a permitir que intereses privados puedan de facto llevar a cabo prácticas que afectan a las libertades fundamentales de los ciudadanos y la capacidad de las empresas para competir en igualdad de condiciones.
  11. Que es preciso y urgente instar al Gobierno a proteger de manera clara e inequívoca la Red Neutral, con el fin de proteger el valor de Internet de cara al desarrollo de una economía más productiva, moderna, eficiente y libre de injerencias e intromisiones indebidas. Para ello es preciso que cualquier moción que se apruebe vincule de manera indisoluble la definición de Red Neutral en el contenido de la futura ley que se promueve, y no condicione su aplicación a cuestiones que poco tienen que ver con ésta.

La Red Neutral es un concepto claro y definido en el ámbito académico, donde no suscita debate: los ciudadanos y las empresas tienen derecho a que el tráfico de datos recibido o generado no sea manipulado, tergiversado, impedido, desviado, priorizado o retrasado en función del tipo de contenido, del protocolo o aplicación utilizado, del origen o destino de la comunicación ni de cualquier otra consideración ajena a la de su propia voluntad. Ese tráfico se tratará como una comunicación privada y exclusivamente bajo mandato judicial podrá ser espiado, trazado, archivado o analizado en su contenido, como correspondencia privada que es en realidad.

Europa, y España en particular, se encuentran en medio de una crisis económica tan importante que obligará al cambio radical de su modelo productivo, y a un mejor aprovechamiento de la creatividad de sus ciudadanos. La Red Neutral es crucial a la hora de preservar un ecosistema que favorezca la competencia e innovación para la creación de los innumerables productos y servicios que quedan por inventar y descubrir. La capacidad de trabajar en red, de manera colaborativa, y en mercados conectados, afectará a todos los sectores y todas las empresas de nuestro país, lo que convierte a Internet en un factor clave actual y futuro en nuestro desarrollo económico y social, determinando en gran medida el nivel de competitividad del país. De ahí nuestra profunda preocupación por la preservación de la Red Neutral. Por eso instamos con urgencia al Gobierno español a ser proactivo en el contexto europeo y a legislar de manera clara e inequívoca en ese sentido.

30 de November de 2010 a las 20:37

24 de November de 2010

Samuel Rodriguez

Preparando cambios

Así como suena. No es que vaya a escribir más en el blog, que es verdad que lo tengo algo abandonado, sino que estoy preparando un nuevo diseño del mismo. Cuando tenga completado el nuevo diseño lo publicaré para que lo pueda usar todo el mundo. Eso sí, hay que utilizar WordPress para poder utilizarlo.

Aunque claro este no es el único cambio y probablemente sea el menos importante porque aparte de lo anterior estoy decidido a terminar ya con el PFC. Por unas cuestiones o por otras no lo he terminado. La verdad es que pensándolo mucho es porque me quemé mucho durante la carrera (concretamente el segundo cuatrimestre de 4º) y esto hizo que me plantease de otro modo mi tiempo… ¡para peor!

La cosa es que me he ido ocupando mi tiempo con trabajo y me esto me ha hecho retrasar el tiempo que le dedico a cosas más importantes, como el PFC. Así que espero poder avanzar rápido y presentarlo pronto. El siguiente paso será el máster.

24 de November de 2010 a las 23:03

16 de November de 2010

david::

Si no me encontráis, buscadme en comisaría (V)

Allá donde haya un funcionario que decida buscar en el padrón por nombre y no por DNI, habrá una pareja de policías municipales dispuestos a llevarme a un juzgado.

Al final voy a asesinar a alguien, y cuando vengan a buscarme diré “¡que no, que no soy yo!”

16 de November de 2010 a las 19:28

30 de October de 2010

david::

Abandona el estereotipo

Las personas juzgamos a menudo dejándonos llevar por estereotipos. Es un hecho que por lo general me divierte, pero a veces me desconcierta. Generalmente, un estereotipo tiene una ventaja muy alta, que es reducir el coste computacional, o lo que es lo mismo, ahorrarnos el esfuerzo de pensar. Al que juzga, un estereotipo le permite tomar decisiones aplicando algo así como un criterio de máxima verosimilitud: si ves a un neouniversitario imberbe con rastas y una camiseta de Bob Marley, no te acerques porque olerá mal. No es estrictamente cierto, no hay una ley natural independiente del sistema de referencia que lo provoque, pero coincide en la mayor parte de las ocasiones.

Aparte del lado práctico de los estereotipos, hay otro aspecto inquietante, que es que el ahorro computacional se produce también en el otro lado. Es decir, en el lado que cumple el estereotipo: no se puede ser hippie y trabajar en un banco con traje y corbata. Así que, en lo que respecta al estereotipo, hay dos lados: el lado A (el que juzga) y el lado B (el que actúa). Llámalo cliente-servidor si eres programador, o productor-consumidor si eres arquitecto de software.

En el mundo en el que vivo, que es el del software, los estereotipos no son graciososdivertidos. Y tampoco son meramente útiles. Aquí son la ley. Por ejemplo, es impensable que un programador se interese en la gestión de proyectos. O que un administrador de sistemas quiera participar en una oferta. O que quiera enfundarse un traje y marchar a cliente a hacer una demo del último producto de la empresa. No. La ley es que el friki se queda en Frikilandia, donde viven los teclados y los RAIDs, y de ahí no te muevas, que si tocas algo de fuera lo rompes. O peor todavía, que no sabes.

El lado A, que es el práctico, de esta situación es que puedes juzgar rápidamente a alguien, como cuando te encuentras a un empresario español, gordo, trajeado y con perilla, diciendo que el software libre es una utopía sin futuro porque [exponga aquí una retahíla sin sentido que incluya palabras como conformidad, interoperabilidad y adhesión funcional, tratando de aparentar que domina el mercado de software de servicios así como los aspectos más oscuros de macroeconomía]. Puedes apostar a que ese señor tiene una empresa gracias a Java, JBoss, Hibernate y Spring.

A los defensores del software libre nos juzgan según un estereotipo que incluye las palabras hippie, soñador, iluso, irreverente, inexperto, consentido, inmaduro, ignorante. Pero además, el defensor del software libre es, generalmente, informático, por lo que cae del cielo, como un burro de hormigón, el estereotipo de informático que incluye, por el mismo precio, escasez en la higiene personal, leer y escribir élfico, heavy metal nórdico, espadas jedi, y una experiencia sexual total de tres minutos y ocho segundos.

Hasta aquí todo normal, la gente juzga según un estereotipo. Pero, como hemos dicho, en esta situación se distinguen dos lados. El segundo lado, el B, el inquietante, es que la gente actúa según el que le ha tocado cumplir, siguiendo a rajatabla los mandamientos de una Biblia que vaya usted a saber quién ha escrito.

Y este es el punto que más me inquieta: un defensor del software libre tiene una enorme tendencia a ser clasificado automáticamente como idiota por el lado A en cuanto abra la boca. Por ello, los pro-software libre tenemos que tener mucho cuidado con las cosas que decimos y hacemos, si queremos llegar a buen puerto. Y más mientras las empresas sigan lideradas por empresarios 1.0, cosa que durará muchos años.

Hace poco leí un artículo de un señor que decía que cada vez que algo iba mal en un proyecto de software Java, salían hordas de chavalillos con acné diciendo que el problema es Java, que eso se soluciona usando Python, que si hay que cambiar a Debian, que si Git lo soluciona mejor que Subversion, que si Emacs es mejor que Eclipse, etc. Es estupendo que alguien apoye proyectos como Python o Debian, pero ese comportamiento es un poco errático. El problema no es tener a un trabajador ilusionado con Debian, sino que cuando realmente valga la pena cambiar a Python y Debian, nadie va a hacerle el más mínimo caso.

30 de October de 2010 a las 10:47

28 de October de 2010

Samuel Rodriguez

Servicios técnicos

Esta entrada la tenía pendiente desde ya hace algún tiempo.

A mediados/finales de septiembre, tras una semana preparando el ordenador para un trabajo (instalación de herramientas, pruebas de las mismas, etc.) se estropeó. Concretamente se estropeó la tarjeta gráfica. Para más señas el ordenador es un MacBook Pro de principios de 2008.

El fallo está reconocido por Apple y parece que el culpable es un mal proceso al realizar la soldadura del chio gráfico. Por suerte es un fallo reconocido y lo cubre una garantía extendida de Apple.

Lo malo es que he pasado un mes sin ordenador (realmente más de un mes) porque Apple no permite manipular sus máquinas a terceros, así que todas deben pasar por su servicio técnico y éste debe andar algo saturado. Esto en sí mismo no es un problema, pero si llamaran de vez en cuando para informar del estado de la incidencia en lugar de que tengas que perseguirles para saber qué le pasa al ordenador no estaría mal.

Ya por último, decir que tuve que llevar el ordenador dos veces al servicio técnico porque al parecer al cambiar la placa no debieron poner unos cables bien (no me dieron muchos detalles, así que poco más puedo decir al respecto) y al primer día ya dejó de funcionar de nuevo sin posibilidad de encender.

Por la primera vez que llevé el ordenador a arreglar fueron 3 semanas y algo de espera y por la segunda vez sólo 2. Sinceramente esperaba un servicio un poco más rápido.

Para terminar me gustaría agradecer a la gente de Clínica Micro el aguantarme y hacer de intermediarios con el servicio de Apple para poder enterarme de qué le pasaba a mi ordenador.

P.D.: Si tan saturado está el servicio técnico de Apple es que algo malo le debe estar pasando a su hardware, creo yo.

28 de October de 2010 a las 10:15

21 de October de 2010

Samuel Rodriguez

Sobre la Banda Ancha

Estos días estoy estudiando con mi padre la posibilidad de cambiar el contrato de ADSL que tenemos en casa y andamos viendo las distintas posibilidades que tenemos a nuestro alcance. Nuestros principales requisitos es que sea un paquete completo de teléfono + internet + televisión ya que queremos sustituir también a Digital +.

De momento hemos mirado dos compañías: Telefónica y Ono. La primera nos ofrece sólo hasta 6Mb y la segunda no da servicio a mi calle. Y aquí es a donde quería yo ir a parar. Todas las calles al rededor de donde yo vivo disponen de servicio con Ono. Vivo en una de las calles más céntricas de la población y es la única que no tiene acceso a opciones de una banda ancha algo más ancha que el resto (podríamos llamarlas banda anchas estrechas). Me pregunto cómo puede ser esto :-/

Hemos visto que Jazztel nos ofrece hasta 20Mb, pero no tiene servicio de televisión…

A parte de esto, y también relacionado con la banda ancha, se ha publicado un estudio de Cisco (yo lo he visto gracias a bandaancha). Me pregunto hasta qué punto se puede conseguir que internet de un buen servicio sin subir más la velocidad de subida. Digo esto porque cada vez más se está convirtiendo internet en un sistema de compartir fotografías, vídeo, etc. y antes de bajar algo primero hay que subirlo.

21 de October de 2010 a las 11:13

19 de October de 2010

Ana

Servidor: siempre Linux (o similar)

Esta mañana no había internet en los ordenadores de algunos despachos de uno de los edificios de la universidad. Era algo muy raro, porque todo estaba bien puesto, se llegaba bien al DNS, y todo lo demás, pero aunque pusiera los mismos DNS que los ordenadores de aulas (que sí funcionaban), el navegador no conseguía resolver los dominios.

El problema ya está resuelto y me acaban de avisar de que el problema era uno de los servidores del edificio. Windows 2000 Server, no muy actualizado, por lo visto... ha bastado con desconectarlo y ya va bien todo. Se ve que había pillado un virus.

19 de October de 2010 a las 11:43

08 de October de 2010

david::

Si no me encontráis, buscadme en comisaría (IV)

Pues eso, que da igual que me haya pasado por los juzgados de Móstoles para dejar constancia de que no soy yo el que buscan. Hace escasos minutos, a las 23:45, se han presentado en mi casa, por CUARTA VEZ, una pareja de policías municipales para citarme para un juicio, esta vez por una denuncia de tráfico.

Solo tres cosas:

  1. Hay un señor que se llama como yo, que vive en mi misma ciudad y que es un asesino en serie.
  2. Señores policías, si tenéis que buscar a alguien en el padrón, comprobad el DNI antes de plantaros en mi casa a buscarme.
  3. Las doce de la noche es una hora muy mala para que te busque la policía.

08 de October de 2010 a las 22:09

29 de August de 2010

Ana

Comer o no comer...

Iba yo hacia el supermercado a hacer la compra para la comida del día. De repente veo que en la puerta hay dos personas, uno a cada lado, con pinta de estar haciendo alguna campaña de algún tipo. El de la izquierda estaba gordo... muy, muy gordo. Gordísimo, diría yo. Que no entiendo cómo no tenía la baja por incapacidad física, vamos, no me puedo creer que pueda aguantar ahí de pie una hora.
El caso es que intento pasar de ellos, pero el orondo me habla (lógico, es su trabajo) y me informa de que están recogiendo comida. Precisamente comida. Un tanto irónico. Le dije que tenía lo justo y ya está. Cualquier cosa que le respondas a un gordo pidiendo comida puede sonar muy, muy mal.
El caso es que me hizo dudar bastante del destino que fuera a tener esa comida que pedía.

29 de August de 2010 a las 00:11

28 de August de 2010

david::

Los JARs: esos grandes desconocidos

Esta semana he tenido que enfrentarme a una biblioteca Java creada por alguien que prefiero no citar. Leyendo la documentación me encuentro un párrafo que dice:

Para sobreescribir las propiedades por defecto del API, será necesario establecer un recurso con nombre “/config/sign.properties” anterior al API (xxxxxx.jar) en el classpath de la aplicación.

Leyendo y releyendo, no doy crédito a lo que dice: ¿Tengo que poner en el classpath un archivo antes que otro para que la aplicación funcione? WTF?

No se me ocurre ninguna razón para tomar este criterio de diseño, aparte de un malísimo entendimiento de cómo funcionan los JARs. Así que, con vuestro permiso, voy a intentar explicarlo, a ver si ayuda a alguien.

NOTA: Algunas explicaciones usan fuentes con colores para que se entiendan mejor. Si lees esto a través del Planeta Gul o del feed no los verás.

Máquina Virtual

Todos los programadores Java saben que las aplicaciones Java se ejecutan en una máquina virtual, la JVM, pero parece que nadie hace caso realmente a este hecho. Cuando programas en Java, tienes que olvidar cosas como tu sistema de archivos local o tu ruta actual de trabajo. Estoy harto de encontrarme cosas como:

File f = new File("recursos/blablabla.conf");

Cuando cojas tu aplicación y la metas en un servidor de aplicaciones, por ejemplo, directamente no va a funcionar. Así que el primer paso es no olvidar lo que significan las siglas VM en JVM. Los programadores que hacen este tipo de barbaridades siempre añaden algún tipo de documentación que dice algo así como “asegúrate de ejecutar java en el directorio tal”. Si te encuentras con algún programador así, dile de mi parte que es idiota.

Sistema de archivos virtual

Es cierto que la JVM puede acceder al sistema de archivos local (dependiendo de los permisos que le otorgues, no lo olvides). Pero, y he aquí lo más importante de todo, la JVM tiene un sistema de archivos virtual. No sé si este nombre se usa oficialmente en la documentación de la JVM, pero creo que es un buen nombre. Este VFS no es otra cosa que un árbol de directorios y archivos que contiene todo lo necesario para que funcione tu aplicación.

Cuando ejecutas una aplicación Java, la JVM toma todo lo necesario de tu disco duro (clases, recursos, etc) y los mete en un sistema de archivos virtual, un árbol de archivos. He aquí otra clave para entender el funcionamiento de Java: las clases no se cargan desde el disco duro, sino desde el sistema de archivos virtual.

En este sistema de archivos virtual, los directorios reciben el nombre de paquetes. Habrás leído que los paquetes siguen una jerarquía. Ahora que sabes que un paquete no es más que un directorio, eso de la jerarquía de paquetes te parecerá lo más tonto del mundo.

Por último, en el árbol del VFS, el nodo raíz se llama paquete por defecto, que es otro nombre chulo para algo tan tonto como /

Clases y paquetes

Cuando creas una clase Java, debes especificar el paquete al que pertenece.

package es.voiser.personas;
class Persona {  /* vale por un main() */  }

Guarda el archivo donde quieras. Yo te recomendaría algo así como:

src/es/voiser/personas/Persona.java

pero (por ahora) eres libre de guardalo donde quieras. Ahora lo compilamos, y queremos que los .class resultantes los guarde en el directorio:

classes/

Para ello:

javac -d classes donde/esté/el/archivo/Persona.java

El .class resultante se guarda automáticamente en:

classes/es/voiser/personas/Persona.class

La información de dónde dejar el .class la obtiene de la instrucción package y del parámetro -d. Por tanto, el directorio de clases tiene este aspecto:

Habrás adivinado que el amarillo representa un .class y el resto directorios. Y que el cilindrito del fondo representa tu disco duro :)

En definitiva, cuando creas una clase, la metes en un paquete. Cuando compilas tus clases con un parámetro -d, java escupe los .class creando una jerarquía de directorios y archivos que refleja la jerarquía de paquetes y las clases que contienen.

CLASSPATH

Seguro que has escuchado a alguien decir que el CLASSPATH es la ruta donde Java busca las clases. Probablemente esta definición viene de buscar un paralelismo con el PATH típico de un sistema operativo. En realidad, el CLASSPATH lo que hace es (atención) indicar a la JVM qué archivos y directorios forman el sistema de archivos virtual de la JVM.

Vamos a ejecutar la aplicación. Para ello se hace:

$ java -cp classes es.voiser.personas.Persona

¿Qué hace este comando?

1- Se instancia la JVM:

$ java -cp classes es.voiser.personas.Persona

2- Se toma el contenido del CLASSPATH y se mete en la burbujita:

$ java -cp classes es.voiser.personas.Persona

3- Y ya, por fin, ejecutamos la clase es.voiser.personas.Persona. Fíjate que esta clase ya está en el VFS de la JVM.

$ java -cp classes es.voiser.personas.Persona

Varios CLASSPATH

Cuando una aplicación es muy grande, suele dividirse en componentes o bibliotecas (los puristas dirán que no es lo mismo, no quiero entrar en eso). De esta manera evitamos tener un monstruo de miles de archivos y directorios. Supongamos que nuestra aplicación que versa sobre personas necesita, por la razón que sea, una biblioteca que modele colores (por ejemplo para poder decir el color del pelo de una persona).

Creamos una biblioteca de colores, totalmente aparte del proyecto anterior. Crearemos las clases en el paquete es.voiser.colores, con dos clases: Rojo y Verde:

// Rojo.java
package es.voiser.colores;
Class Rojo { ... }
// Verde.java
package es.voiser.colores;
class Verde { ... }

Guardamos este código donde sea, y compilamos. Quiero generar los .class en el directorio:

classes_colores/

así que haré:

$ javac -d classes_colores donde/este/Rojo.java

Ahora, el disco duro tendrá este aspecto:

Ahora ejecutamos la aplicación:

$ java -cp /donde/esté/classes:/donde/esté/classes_colores es.voiser.personas.Persona

Veamos de nuevo qué hace esto:

1- Se instancia la JVM:

$ java -cp /donde/esté/classes:/donde/esté/classes_colores es.voiser.personas.Persona

2- Se copia el contenido del CLASSPATH al sistema de archivos virtual.

$ java -cp /donde/esté/classes:/donde/esté/classes_colores es.voiser.personas.Persona

3- Por fin, se ejecuta la clase es.voiser.personas.Persona:

$ java -cp /donde/esté/classes:/donde/esté/classes_colores es.voiser.personas.Persona

La moraleja de esta parte es que la JVM trabaja sobre un sistema de archivos virtual que contiene el agregado de todos los directorios especificados en el CLASSPATH.

Como curiosidad, que no debería ser más que un dato anecdótico pero que veremos que no lo es: imagina que existieran estos dos archivos:

classes/es/voiser/app.config
classes_colores/es/voiser/app.config

A la hora de copiarlos al interior de la JVM, ambos archivos se guardarían con el mismo nombre,

/es/voiser/app.config 

Lo que la JVM hace es quedarse con el primero que se especifique en el CLASSPATH, en este caso

 classes/es/voiser/app.config

¿Qué es un JAR?

Un JAR es un árbol de directorios comprimido en ZIP. Sirve para coger una biblioteca de clases, comprimirla en un ZIP y distribuirla como un único archivo. Supongamos que queremos distribuir nuestra biblioteca de colores Rojo y Verde. Haremos esto:

$ jar -C classes_colores cvf colores.jar .

Este comando lo que hace es meter en el archivo colores.jar el contenido del directorio classes_colores.

Lo bonito de un JAR es que puede incluirse en un CLASSPATH. Siguiendo con el ejemplo, ahora tenemos esta situación: un directorio classes donde están las clases de la aplicación de personas, y un JAR que contiene la biblioteca de colores:

Ahora ejecutamos la aplicación de la siguiente manera:

$ java -cp classes:colores.jar es.voiser.personas.Persona

Lo que hará la JVM es crear un sistema de archivos con el contenido de classes y el contenido de colores.jar. O sea, esto:

Que es idéntico a lo que vimos en el caso anterior.

Entonces… ¿Importa el orden del CLASSPATH?

La respuesta es: no debería importar. Cuando una aplicación necesita muchas bibliotecas, se carga el contenido de los JAR en el sistema de archivos virtual de la JVM y punto. Si dos archivos colisionan se toma el primero que llegó, pero este hecho no debería tomarse como criterio para diseñar tu aplicación. Más que nada porque si usas un IDE, cosa muy recomendable al trabajar con Java, es el propio IDE el que escribe el CLASSPATH así que te será complicadillo especificar el orden de los JARs.

¿De qué me vale este sistema de archivos virtual?

Una aplicación no es solo código, sino que también contiene otros recursos como por ejemplo los iconos o los archivos de internacionalización. Si haces un JAR de tu aplicación, estos archivos viajan con tu aplicación, lo cual es estupendo. Una aplicación autocontenida.

Para acceder a estos recursos se puede usar una función Class.getResourceAsStream(String path), que recibe la ruta al archivo en el sistema de archivos virtual y devuelve un ImputStream. Se podría usar, por ejemplo, algo así como

InputStream config = this.class.getResourceAsStream("/es/voiser/app.config");

¿Qué han hecho los de la aplicación que comentabas al principio?

El requisito es el siguiente: la aplicación debe leer un archivo de configuración. Si no se especifica ninguno, se toma una configuración por defecto.

Qué han hecho estos chavales:

1- Nuestra biblioteca lee siempre el archivo “/config/sign.properties”

2- Creamos un archivo “/config/sign.properties” con la configuración por defecto

3- Para sobreescribir esta configuración, meter en el CLASSPATH lo primero de todo un JAR que contenga un /config/sign.properties. Así prevalecerá sobre la configuración por defecto.

Evidentemente este diseño es una basura. Primero, si quieres configurar la aplicación tienes que crearte el archivo, comprimirlo y meterlo en el CLASSPATH en primer orden. Si usas un IDE, probablemente te cueste (o te sea imposible) cambiar el orden del CLASSPATH así que tendrás que hacerlo a manubrio. Si metes la biblioteca en un Tomcat o similar tendrás que lidiar con los Manifest del WAR. Vamos, lo mires por donde lo mires, es una mala idea.

¿Cómo se puede hacer?

De varias maneras, pero una más o menos fácil y general sería:

1- La configuración se carga cuando alguien invoca un método determinado. Nunca automáticamente.

2- La configuración por defecto se guarda en un recurso en el JAR de la biblioteca.

3- La configuración se lee a través de un InputStream que apunta inicialmente al recurso con la configuración por defecto.

4- Un método permite que el InputStream apunte a un archivo del sistema de archivos real.

Y con esto y un bizcocho, te has quitado el problema de encima sin hacks estúpidos, sin tocar las narices al usuario final, y haciendo las cosas bien.

28 de August de 2010 a las 17:18

14 de July de 2010

david::

Pánico en el núcleo

Como quizá sepáis, en el GUL tenemos la suerte de tener a cuatro compañeros que se dedican desde principios de año a hacer un estupendo podcast llamado Pánico en el Núcleo en el que participan Tania, Samuel, De La Cruz y Peris (@SeleneUnder, @laparca, @mgdelacroix y @mrcomputer respectivamente). El podcast trata temas muy interesantes sobre software y cultura libre, noticias y eventos del GUL, resolución de dudas, ruido de servidores… esas cosas.

Atendiendo a su posición respecto al software libre, las personas o empresas pueden catalogarse según dos variables: su posición oficial respecto al software libre y su posición real. La posición oficial se refiere a si apoya o no al software libre, y la real es si es sincero o no en su posición oficial. Dicho de otro modo: qué digo a los demás y qué hago en realidad.

Estas variables dividen el plano en cuatro cuadrantes:

Soy sincero
Soy hipócrita
No apoyo el S.L.
? Microsoft
Apoyo el S.L.
Apache, Mozilla, GUL, etc Pozo sin fondo, podcasters sin ideas

Todo este rollo es solo para pedir a los chicos de Pánico en el Núcleo que no se enfaden ni desesperen por las acciones de Cuartos Cuadrantes ni similares: independientemente de si queréis o no cambiar el nombre, no perdáis de vista el verdadero objetivo del podcast, que es dar un buen contenido, elaborado e interesante.

En otras palabras: ¿Para cuándo el próximo capítulo de Pánico en el Núcleo?

14 de July de 2010 a las 18:04

09 de July de 2010

Ana

Licencias

"1. General. Apple Inc. (“Apple”) le concede (no vende) una licencia para el uso, únicamente bajo los términos de esta licencia, del software"

¿Pago para que me lo presten? Qué majos son, dejarme pagarles para que puedan conederme un permiso...
Nada, mañana iré a pagar por una camiseta para que me permitan usarla siempre y cuando los dueños de la tienda crean que la uso bien, porque como la habré comprado pero seguirá siendo suya...

Edito porque me voy encontrando con más joyitas. Flipad (y sí, venía en mayúsculas):

"NINGUNA INFORMACIÓN O ASESORAMIENTO ESCRITO O VERBAL FACILITADOS POR APPLE O POR UN REPRESENTANTE AUTORIZADO DE APPLE CONSTITUIRÁN GARANTÍA ALGUNA. EN EL SUPUESTO DE QUE EL SOFTWARE APPLE RESULTARA SER DEFECTUOSO, USTED ASUMIRÁ EL COSTE ÍNTEGRO DE TODOS LOS SERVICIOS, REPARACIONES Y CORRECCIONES NECESARIOS."

09 de July de 2010 a las 09:44

06 de July de 2010

Samuel Rodriguez

El Doctor Finklestein

Desde los blogs de Hellen, Riva, Moriarty y Raven me llega este meme que… bueno, que lleva mucho tiempo desde que lo tenía que haber escrito :-P

La idea es poner el reproductor de música (supongo que en aleatorio) e ir poniendo para cada pregunta la canción que suene (hay que recordar que se debe dar a siguiente canción antes de contestar, para que no se repita constantemente la canción):

  1. ¿Cuál es tu lema?El guardian de tu piel – Beethoven R
  2. ¿Qué piensan tus amigos de tí?Mighty – P. Blaszczak
  3. ¿En qué piensas a menudo?The Fal of the Temple – Inborn
  4. ¿Cuánto son 2 + 2?El anticristo – Warcray
  5. ¿Qué piensas de tu mejor amigo?Fly – Blind Guardian
  6. ¿Qué piensas de la persona a la que quieres?Bludsucker – Deep Purple
  7. ¿Cuál es la historia de tu vida?Ailein Duin – Capercaille
  8. ¿Qué quieres ser de mayor?Cowgirl – B.S.O. Hackers
  9. ¿Qué piensas cuándo ves a la persona a la que quieres?Passenger – Deftones
  10. ¿Qué piensan tus padres de ti?Ain’t It Fun – Guns N’ Roses
  11. ¿Qué bailarás en tu boda?Firestarter – The Prodigy
  12. ¿Qué sonará en tu funeral?The Thin Line Between Love And Hate- Iron Maiden
  13. ¿Cuál es tu afición / interés?Guardian Sunspears – Jeremy Soule
  14. ¿Cuál es tu mayor secreto?Precious Jerusalem – Blind Guardian
  15. ¿Qué piensas de tus amigos?Simpathy For The Devil – Guns N’ Roses
  16. ¿Qué es lo peor que podría pasar?The Modern Things – Gigh Places
  17. ¿Cómo morirás?Paranoia Prima – Anni Morricone
  18. ¿De qué te arrepientes?Dissolved Girl – Massive Attack
  19. ¿Qué te hace reir?Goodnight Moon – Shvaree
  20. ¿Qué te hace llorar?Voodoo People – The Prodigy
  21. ¿Te casarás alguna vez?MX / Bong Hit / Damone – Deftones
  22. ¿Qué es lo que más te asusta?Sweet Home Alabama – Rockapella
  23. ¿Le gustas a alguien?GO!! Fighting Dreamers – Flow
  24. Si pudieras volver atrás en el tiempo, ¿qué cambiarías?Might Just Take Your Life – deep Purple
  25. ¿Qué es lo que más te duele ahora mismo?She’s Madonna – Robbie Williams
  26. ¿Cuál será el título de este post?El Doctor Finklestein – B.S.O. Pesadilla antes de Navidad

06 de July de 2010 a las 07:04

01 de July de 2010

Samuel Rodriguez

Mi deprelista

Desde el blog de la Mujer Imaginaria tengo el placer de presentar mi lista de canciones tristes y/o deprimentes. Esta lista es mi contribución a la tristeza general de la sociedad y estamos creando esto… pues no sé muy bien por  qué, pero parecemos unas malas personas de cuidado.

Aquí va mi contribución:

  1. La canción de marco
  2. The Host of Seraphim (Dead Can Dance)
  3. Requiem (Wolfgang Amadeus Mozart)
  4. Marcha funebre en do meno Op 72 (Frédéric Chopin)
  5. Auf Asche (Franz Ferdinand)
  6. Bela Lugosi’s Dead (Bauhaus)
  7. Knocking on Heaven’s door (Gun’s N’ Roses)
  8. Canción de los títulos de crédito de Blade Runner (Vangelis)
  9. Mad World (Tears of Fear, version de Gary Jules)
  10. A Tout le Monde (Megadeath)

Espero que no haya muchos suicidios a causa de la escucha de las anteriores canciones, en todo caso el autor no se hace responsable.

Por otro lado a ver si saco tiempo para un par de memes musicales que hay por ahí.

01 de July de 2010 a las 20:11

17 de June de 2010

david::

Muse (II)

Tienes que quitarle el tapón a la botella de agua. Métetelo en el bolsillo y ya está, yo lo hago cuando voy al fútbol

- un segurata

Para hacerse una idea de lo que es el espectáculo de Muse (pillada de aquí):

Hubo dos teloneros. Los primeros, The Big Pink, flojillos, al menos en directo. Vale que tampoco es gracioso que hagas canciones de cinco minutos con una única nota de bajo, guitarra y voz. A ver, es bueno si quieres hacer archivos MIDI pequeñitos, pero como música deja algo que desear. Al acabar alguien soltó un “bueno, vale, como broma está bien”.

Los segundos, The Editors, muy muy muy buenos. A medio camino entre Depeche Mode y Coldplay, habrá que informarse.

Después de tres horitas de espera, aparecieron ellos. Una entrada espectacular, con un desfile de tíos con bengalas y pancartas en las que podían leerse frases de la letra de Uprising. El escenario se convirtió en la nave espacial de Encuentros en la tercera fase y nos quedamos alucinados con las pantallas del escenario.

Espero que a mi Ali, que era su primer concierto serio (¡lo de la gala de los 40 no cuenta como concierto, preciosa! :P ) y que se dedicó a empapar a un vigilante de agua y a caminar como si fuera un compás con botellas escondidas en los calcetines se lo pasara tan bien como yo. Ahora a dormir, que 3 horas de sueño no son suficientes :)

17 de June de 2010 a las 20:23

16 de June de 2010

david::

Muse

Teloneros: hordas de góticas emo esperando la música de crepúsculo.

16 de June de 2010 a las 14:54

11 de June de 2010

david::

Una breve historia de casi todo

Acabo de leer la última página de esta famosa obra de Bill Bryson que encontré de casualidad paseando por la Casa del Libro. Tenía muy buenas referencias de él y lo cogí con ganas. Es un libro que está a medio camino entre la divulgación científica, la historia de la ciencia y una revista de cotilleos. En él se aborda la historia de un montón de ramas de la ciencia, haciendo hincapié en personalidades, curiosidades y cifras, por lo general de forma amena y divertida.

No es para nada un libro técnico, apenas toca temas complicados y si en algún momento cuenta algo que se le pueda escapar al lector, rápidamente hace algún tipo de comparativa para que quede claro. Me hizo mucha gracia una que decía que esperar que la vida surgiera espontáneamente de un mar de proteínas es como esperar que un tornado pase por un desguace lleno de piezas sueltas y que al marcharse dejara atrás un avión perfectamente montado. O cuando cuenta que ha habido buceadores que, sometidos a enormes presiones, empezaron a experimentar una borrachera que los animaba a ofrecer las boquilas de oxígeno a los peces que pasaban.

Lo que me ha decepcionado un poco de este libro es que al principio es muy prometedor pero a mitad del libro empieza a flojear y llega a convertirse en un almanaque de cifras y comparaciones. Incluso en algún momento parece unos apuntes de alguna asignatura, con listas de conceptos y millones de cifras. Y para rematar la faena, el final te deja con un poquito de mal sabor de boca. En otras palabras, parece que el autor empezó con ganas pero no pudo mantenerse así hasta el final.

En cualquier caso, si tienes algo más de paciencia que yo y te interesan desde los átomos hasta las migraciones de los homínidos, probablemente te guste el libro.

11 de June de 2010 a las 15:31

10 de June de 2010

Samuel Rodriguez

Viaje a Illescas

Este viernes pasado Madhatter y yo decidimos ir a visitar a la Reina del Hielo a su tierra. La tarde fue tranquila y calurosa. El verano está dando sus primeras muestras de presencia y avisándonos de lo que va a venir.

La Reina nos hizo la visita turística y gastronómica de la zona. La verdad es que el Illescas es encantador (me encantan las poblaciones pequeñas y tranquilas). La tarde transcurrió tranquila, con algunos momentos tensos: los niños con globos siempre son un peligro latente, en especial si corren como locos sin mirar qué tienen delante.

No enteramos de que no está permitido hacer más de 3 alturas en los edificios porque sino el señor cura no puede presumir de iglesia (no lo dijo ella así, pero yo sí lo digo :-P ), que en un antiguo hospital hubo un milagro y ahora es una iglesia (hay dos iglesias muy juntas).

Como todo no puede ser perfecto y algo tenía que fallar: a la hora de la vuelta fuimos a la parda del autobus. A la hora que era, sobre las 23:30, tenía que haber pasado el penúltimo autobus (que no lo vimos) y sobre las 00:00 tenía que pasar el último, que sí  que pasó… ¡Vaya que si pasó! Con un bonito cartel de fuera de servicio y dejando en tierra a las 10 personas que nos encontrábamos esperándolo. Debo agradecer a la compañía de autobuses que lleva la línea de Madrid-Toledo por tan buen servicio. Por suerte la hermana de la Reina vino a nuestro rescate y nos llevó junto Parque Sur (te queremos mucho tanto Madhatter como yo por ello).

Quiero agradecer a la Reina del Hielo que nos aguantase y nos enseñase su ciudad, nos encantó la visita :-)

Y hasta aquí puedo leer. Vale.

P.D.: ¿Os habéis dado cuanta que Parque Sur en inglés es South Park? ;-)

10 de June de 2010 a las 18:32

03 de June de 2010

Ana

900101010

Sé que hace mucho que no decía nada, pero hoy tocaba.

Ese es el número de movistar desde el que te llaman para intentar venderte su fabuloso servicio. No he necesitado mirarlo porque ya me lo sé. Sí, es bastante sencillo, pero creo qeu me voy a acordar de él hasta el día en que me muera, sobre todo si siguen llamándome a razón de una vez por día.

Se supone que había conseguido que pusieran una incidencia para que no volvieran a llamarme, pero no ha funcionado. Tengo trabas por todas partes, los telefonistas no me quieren dar su apellido ni su número de agente, no me quieren pasar con sus jefes y no me quieren dar la dirección.

Y yo no solamente quiero que dejen de llamarme, quiero saber de dónde puñetas han sacado mi número y qué derecho tienen a llamarme si yo no les he dado permiso. Ahora tocará poner denuncia, y a ver quién me compensa a mí el tiempo y los disgustos.

03 de June de 2010 a las 09:29

31 de May de 2010

Samuel Rodriguez

Transformaciones AST para importar clases de IDL

En la anterior entraba hablaba un poco sobre las transformaciones AST de Groovy y que me maravillaban (y si esto último no lo dije, lo digo ahora). Como me gustan y las veo útiles decidí ponerlas en práctica para un uso real.

En donde trabajo se utiliza un lenguaje de programación llamado IDL. Este lenguaje se utilizan en muchos entornos de investigación y para ser sinceros se haría un favor al mundo amputándole las manos a la persona o personas que lo diseñó/aron (pero dejemos esto para un posible futuro artículo). En IDL se pueden crear funciones y procedimientos o se puede crear clases con métodos y atributos. Cuando se necesita ofrecer a otro lenguaje de las funcionalidades que hemos creado en IDL se hace uso siempre de clases y objetos. Además provee de una herramientas denominada Export Bridge Assistant (EBA) para facilitar la tarea de generar los bindings del lenguaje destino. Debo decir que me EBA hace cierto trabajo por el programador, concretamente genera una clase en java o .Net con los métodos seleccionados, pero en el caso de Java no hace distinción de los tipos de datos. Para él solo existe el JIDLNumber, pero está prohibido por el programador su uso, sino que debes utilizar JIDLFloat, JIDLLong, etc. Además, estos tipos de datos no son nativos de Java lo que supone un sobreesfuerzo para el programador.

En esta situación se me ocurrió crear una transformación AST que generase el código de los métodos usando datos nativos de Java. En lugar de llamar a EBA para generar el binding se crea una clase de esta forma:

1
2
3
4
5
@IDLClass(idlclass="CLASE_DE_IDL")
class MiClaseEnJava extends JIDLObject {
   @IDLFunction(name="FUNCION_IDL")
   float miFuncion(float a, float b, String cadena) {}
}

Durante la compilación de la clase se detecta la nota IDLClass y se pasa el control a la transformación AST que añade un constructor por defecto necesario para los objetos que heredan de JIDLObject. Además se busca de nota IDLFunction y cuando se encuentra se interpretan los parámetros para generar el código con las transformaciones de tipos necesarias.

Sinceramente creo que esto es más óptimo que hacer uso de EBA, ya que de todos modos me termino creando métodos que realizan la transformación de tipos y de este modo me ahorro dicho trabajo.

Lo que más me ha costado es entender como funciona la generación de código ya que se basa en la estructura del compilador. Concretamente me ha constado 1 semana hacer la transformación.

En cuanto pueda publicaré el código para que lo pueda utilizar quien quiera, que seguro que mal no hará.

31 de May de 2010 a las 09:28

27 de May de 2010

Fernando J. Pereda

iostreams are VERY thread-unsafe on Mac OS X

This was both surprising and disgusting. Our in-house data acquisition software needs to convert lots of floats to ascii so that they can ve viewed in real time. This is very easy to do with a stringify-like function like the one found in paludis/paludis/util/stringify.hh.

stringify looks trivial, there’s no shared state nor there is any static data, so I thought that I could call stringify from several threads at the same time. I don’t think there’s any guarantee about thread safety of ostringstream’s operator<< but it looked like a safe assumption. Well, incorrect.

operator<< calls vsnprintf, which should be thread-safe by itself. However, OSX's vsnprintf ultimately calls localeconv_l, which is not thread-safe. And, you end up with something like this:

#0 0x96f734a9 in malloc_error_break ()
#1 0x96f6e497 in szone_error ()
#2 0x96e98503 in szone_free ()
#3 0x96e9836d in free ()
#4 0x96e97f24 in localeconv_l ()
#5 0x96e93335 in __vfprintf ()
#6 0x96ecb9b5 in vsnprintf ()
#7 0x0144615e in std::__convert_from_v ()
#8 0x01437d2a in std::num_put<char, std::ostreambuf_iterator<char, std::char_traits > >::_M_insert_float ()
#9 0x0143803d in std::num_put<char, std::ostreambuf_iterator<char, std::char_traits > >::do_put ()
#10 0x0144ab6a in std::ostream::_M_insert ()
#11 0x0000fb25 in std::basic_ostringstream<char, std::char_traits, std::allocator >::str () at sstream:217
...

Which means there’s no way of converting stuff to human readable in a thread-safe manner. I’m not sure whether I’m missing something or not… but this looks very fishy. I ended up adding a stupid big mutex around my stringify calls, but that looks more like a workaround that a final solution to the problem. Plus, this doesn’t protect ANY other uses of iostream’s operator<< such as loggers.

Ok… looks like that wasn’t a very accurate diagnostic. This is going to be more annoying than I thought.

— ferdy


Tagged: C, osx, programming, threads

27 de May de 2010 a las 08:33

01 de May de 2010

Fernando J. Pereda

Finally, a real AMSV (Autonomous Marine Surface Vehicle)

After lots of work from different people, it finally is a real AMSV. Nothing too fancy yet (just a mere PD controller for speed and heading). It is, nonetheless, a very interesting platform for future research.

With semi-strong current and some wind it managed to follow a very nice path across some waypoints:

The trajectory between p2 and the shore was done manually using a joystick. Interestingly enough, that path is less nice than those done by the autonomous control.

I hope to be able to post more niceties soon.

— ferdy


01 de May de 2010 a las 15:15