En estos momentos estoy programando un mecanismo de protección para el ejecutable que surgirá de la compilación de todo mi trabajo con el PFC. Es un sistema clásico de “license-key” en el que no estoy empleando mucho tiempo porque está claro que si quieren sacarte el sistema de protección, lo harán.
Pensaba yo que qué ganaría si en vez de usar un sistema de este tipo pusiera el código de la aplicación bajo GPL y la colgara en una página web. Siempre he leído que libre es distinto de gratis, pero no acabo de pillarle el tranquillo. Qué hago, vendo los fuentes?, vendo la aplicación ya compilada pero dejo libres y gratis los fuentes, vendo todo junto?.
Pongamos el caso de que dejo libres y gratuítos los fuentes, nada impediría a un agricultor bajarse los fuentes, compilarlos e instalarlos en su pocketpc. Es muy posible que nisiquiera llamara al servicio técnico, es decir, yo, para solucionar algún problema, instarle la aplicación o enseñarle a manejar.
Mejor voy a pensar con números. Imaginemos que la aplicación la vendo por 100€ por poner un coste, por la ley de la oferta y la demanda habría X compradores dispuestos a pagarlo. En caso de dejarla libre y gratuíta, esto es, distribuyera los fuentes, por la ley de la oferta y la demanda tendría muchas más personas dispuestas a consumir el software y asumo que un porcentaje de esas personas me llamarían para pedir soporte, instalación o cualquier otra cosa relacionada. Qué porcentaje de personas lo harían? a cúanto debería cobrar el servicio para que fuera tan rentable como venderlo?. uf.
Ahora introduzco otro factor, el HW. La aplicación debe correr en pocketpc cuyo coste actual supera los 250€, con lo cual la ley de la oferta y la demanda en el caso de darlo gratis ya no sería tan favorable, se complica la cosa.
Por tanto no entiendo de donde puede venir el dinero de la gente que se dedica a programar software libre, es más, si yo sacara mi software libre, qué impediría que otra personas cogiera mi código, lo mejorara y lo vendiera, haciendo un 10% del trabajo que yo he empleado. Eso está muy bien cara al usuario, pero no me parecería bien si la persona no me diera la parte correspondiente a mi trabajo del precio de venta del producto.
Miremos desde el punto de vista de la venta del código. Si yo vendo el código, puede darse el caso anterior, una persona me lo compra (como un agricultor más), lo mejora y me jode mi negocio. Supongamos que nadie hace eso, esto es, por cada copia que vendo yo doy los fuentes, los binarios, instalación y cierto soporte, qué mejora que yo entregue el código fuente al agricultor?
Mire por donde lo mire no encuentro cómo funciona el negocio del software libre. Tal vez la gente de consultux pueda explicarmelo ya que tiene área específica de desarrollo de software. Quizás Mario(por cierto, interesante y jugoso artículo sobre creación de meta distros en llaves USB) o Jorge puedan hacerlo, o espero que alguien de planet augcyl.
En mi serie de artículos sobre “usa %s por favor” % cosa no puedo por menos que exponer por qué una personas de la calle _debe_ usar python en el día a día de su relación con su máquina (no hablo de PC, ojo).
Joder, quién no ha querido cambiar un montón de ficheros de una vez, procesaor ficheros de texto, modificar imágenes, capturar imágenes de una webcam, hacer un juego, abrir una hoja de excel y modificarla, hacer una web, dar de comer a tu gato de forma remota, hacer un sistema distribuído, hacer una aplicación de contabilidad, manejar el puerto paralelo/serie o símplemente que querido librarse de crear la típica tarea que sabes que se puede hacer automáticamente pero que realmente no sabes como o eres demasiado vago para ponerte a programarla.
Todos estas cosas y muchas más las puedes hacer con python. Para el que no sepa ni de lo que estoy hablando te diré que python es un lenguaje de programación simple y potente y que en no demasiado tiempo te puede permitir hacer cosas que ahora mismo piensas que son imposibles de hacer para tí. Para abrir boca puedes leer la página de wikipedia sobre python. Si ya sabes lo que es python, no sé qué haces que no estás usandolo pero ya.
Qué tiene python de bueno:
- Es simple de usar y de aprender.
- Permite hacer desde programas de una línea hasta el infinito.
- Permite hacer prácticamente de todo en casi cualquier dispositivo.
Basta con bajarse la última versión para tu SO preferido (windows, en linux suele venir con la distribución, aunque puedes bajarlo y compilarlo tú mismo) y empezar a echar un vistazo a la documentación, en concreto al tutorial (inglés, español) y empezar a hacer cosas. Cuando digo cosas no digo el típico printf(“hola mundo”), hablo de cosas que pueden resultar útiles. En mi caso lo uso casi siempre para ahorrarme trabajo en la edición de código, extraer datos de cabeceras… por ejemplo, en mi proyecto fin de carrera lo uso para generar un fichero de texto con la simulación de una trayectoria de un tractor en una tierra. Es totalmente posible hacerlo en C/C++ o cualquier otro lenguaje, pero Python ofrece un montón de herramientas, por ejemplo , en este caso me permite manipular las cadenas con facilidad, usar perlin noise (para hacer variar la trazada suavemente), grabarlo a fichero, etc.
Lo que más me gusta de python es que cuando llevas un tiempo usándolo puedes empezar a hacer verdaderas virguerías. Por ejemplo, puedes capturar imágenes de tu webcam y procesarlas y todo esto con poquísimas líneas de código:
_
from VideoCapture import Device
cam = Device()
cam.saveSnapshot(‘image.jpg’)
_
Simple no?, pues con esa extensión y, por ejemplo, PIL (python image library) puedes crear listas de las capturas tomadas en pequeñín. Seguro que hay muchísmas cosas que se te puede ocurrir y que fácilmente se pueden hacer con python.
Pero no solo hay esto, puedes hacer juegos con pygame (por ejemplo como este de r3d de rgba XDD) o como makefight (pronto noticias), puedes embeberlo para usarlo desde tu aplicación en C++ con las facilidades que da swig, puedes usarlo en tu nokia, en tu pocketpc… qué más se puede pedir?.
Como lenguaje se puede decir que tiene un API brutal, que es interpretado, que es orientado a objetos incluídas las facilidades del garbage collector y que prácticamente te obliga a mantener un código limpio. No voy a enumerar algunos de sus problemas para no ensuciar el post :/.
Nada más, solo que visites la página oficial de vez en cuando, alguna página de noticias para saber lo que hay de nuevo o el weblog del creador… Ah! y que no dejes de practicar :).

Después de leer un artículo en barrapunto en el que comentan la absolución a dos personas que compraron por internet con la tarjeta de crédito de un tercero, me veo en la obligación de contar algunos casos ocurridos muy cerca de mi entorno con los carnets de identidad.
El carnet de identidad es ese documento oficial que todos debemos llevar en nuestro bolsillo para identificarnos y que es necesario presentar para casi cualquier tipo de contrato. Normalmente no solemos darle la importancia que tiene, cosa por otro lado normal, es sólamente un documento que tiene una firma y una foto, medios que son bastante poco fiables a la hora de autentificar un individuo (tanto mi firma como mi foto cambian a lo largo de los años, supongo que igual que la del resto de individuos que evolucionen). Es muy común, además, que la tenencia del documento te sirva como llave de paso, por ejemplo, basta con llevar un carnet de identidad y una tarjeta de crédito en las que no necesariamente coincide el nombre del titular y basta con entregar al dependiente del centro comercial de turno para que confíe en ti, nisquiera mirando lo mínimo, la coincidencia. Lógicamente el amable señor tampoco mira si la firma “se parece”, y entrecomillo porque es la única verificación que este señor puede hacer además de la citada de comprobar la coincidencia de titulares.
Recientemente he conocido casos graves de utilización fraudulenta de DNI de terceros y lo peor es que no creo que sean los únicos capaces de hacerse. El primero de ellos se trata de abrir una cuenta en un banco, si, repito, en un banco a nombre de la persona propietaria del carnet de identidad sustraído u obtenido por cualquier otro medio y dar de alta en esa cuenta unas decenas de contratos de teléfonos móviles… y bueno, no es la peor, la segunda que he conocido es la de hacer transferencias de vehículos. Para hacer una transferencia de un vehículo es necesaria la firma y el carnet de indentidad, como mínimo, de la persona que recibe el vehículo, pues bien, la jugada es engañar, sobornar o cualquier otra acción a la gestoría que lo tramita y decirla que el que recibe el vehículo no puede venir, enseñan su carnet y dicen que ya le llevan el documento para que lo firme. Lógicamente la gestoría si es como debe ser no hará el papeleo si no están presentes las dos partes, pero todos cometemos errores y a veces pasan estas cosas. Lo peor no es que te transfieran un coche a tu nombre, nisiquiera es que lo hagan sin saberlo o incluso que preparen la de dios con los coches y te lleguen kilos en multas, lo peor es que es muy difícil demostrar que tu no has firmado la transferencia.
Como estas, estoy seguro que habrá muchas más cosas, solo hay que ver la facilidad de hacer un contrato de telefonía (basta con una llamada o una conexión a internet) y me da pena pensar que hay gente que tiene escrupulos para robar un carnet a una persona para hacer este tipo de cosas. Así que hasta que salga un carnet que de verdad nos pueda autentificar con un mínimo de garantía, esto es, como mínimo un certificado y además una clave personal, es mejor tener a buen recaudo el documento de indentidad.
En el trato diario con las personas normalmente encuentras que una gran parte de las personas usan un PC, ya sea en el trabajo, en casa, para chatear, para programar o para lo que les de la real gana. Por ello es muy común que haya conversaciones entre esas personas acerca de sus experiencias, mejor dicho, calvarios con sus máquinas y con su software. Entre esa gente se pueden distinguir dos tipos de personas, los que lo usan, no tienen casi idea y lo dicen y los que lo usan, no tienen casi ni idea y tratan de que parezca que sí la tienen.
Desde la perpectiva de una persona que tiene ciertos conocimientos del tema, esto es, saber electrónica, sabes que existe una parte de la electrónica llamda electrónica digital, sabes cómo se fabrican los circuitos integrados, sabes que gracias a esa electrónica es posible crear puestas lógicas y con estas dispositivos que ejecuten una serie de instrucciones, sabes cual es la arquitectura que ejecutan esas instrucciones, cómo lo hacen y como se relacionan con otros dispositivos que también ejecutan instrucciones y, aquí empieza la fiesta, sabes como se comunica el software y el hardware, qué es un SO, dónde está colocado en la “cadena alimentaria” de un sistema informático, que es un driver, como está programado un software, que se usa, como se comunica con el SO y con los dispositivos, cuales son los problemas del software, como se comunican los softwares de diferentes máquinas, que problemas hay en esas comunicaciones… podría estar días, quizá años explicando TODO lo que he estudiado en la carrera que se puede aplicar en un sistema informático.
Cuando estás en una conversación sobre informática con personas de tipo 2, esto es, se creen que saben pero no saben, te tienes que callar por dos razones: no es bueno para las relaciones personales y, lo peor, no te va a entender y se va a quedar exactamente igual. Confirmado, lo he intentado por activa y por pasiva, pero nadie se entera de por qué un driver mal programado puede hacer que todo un SO se vaya al traste o que cuando en windows aparece un error de “no enviar” (en otros sistemas segment fault) yo no puedo hacer nada por muy ingeniero que sea y tampoco vas a explicarles que si te dejaran el código fuente podrías intentarlo, sería perder el tiempo. Eso sí, te echan en cara que no tienes ni puta idea y se quedan tan contentos ! XD es como decirle a un arquitecto, oye tío, en este pedazo de rescacielos que te has diseñado, hay una humedad en el piso 3, no tienes ni puta idea.
Algunas de las joyitas que he tenido que oir ya las he comentado, las típicas de “arréglame este fallo, me pone algo de no enviar”, pero hay algunas que claman al cielo. Por ejemplo, la gente se cree que por tener más disco duro y más memoria el PC va a ir mejor… disculpa amigo, para qué quieres tener una biblioteca de 3 km^2 si tienes 5 libros? qué es más rápido, buscar en tu estantería de 5 libros o en una biblioteca con 10000 ?. Otra es la de “tú que eres ingeniero te puedes venir a mi casa y tunearme el PC”. Claro, no te preocupes, me bajo el código fuente de windows y te optimizo lo que necesites.
Una variante que me hace mucha gracia es la de la aletoriedad. Es muy habitual escuchar lo de “la informática es así”, esto es, hay un componente aleatorio en la ejecución de los programas. Podrías explicarles que un PC es una máquina que hace lo que tú le dices y que para las mismas entradas obtienes las mismas salidas. El típico caso de un hardware que no tiene drivers y el personaje en cuestión reinstala windows para que le instale el dispositivo, encima te dicen que windows es una mierda por eso .
El especimen que más gracia me hace es el especialista en internet, ese tío que tiene el emule 24horas y que por eso se cree especialista en redes. Saben de routers, ADSL, ethernet, wireless, etc, etc hasta que un día le preguntas… “oye, tu router soporta NAT?”. Acabas de herirle en lo más profundo de su ser, para él los ingenieros no son más que gente que tiene un título pero que no tiene ni puta idea y ese pensamiento permanecerá toda su vida (la visión de los ingenieros por parte de los que no lo son es tema para otro post). Otra muy buena de este mismo individuo es la de: “he instalado un programa que hace que internet me vaya el doble de rápido”… claro, ya entiendo, no me digas más. La última fue uno que me dijo que era algo menos que pringao porque no era capaz de hacer funcionar el típico cliente de P2P en su PC, lógicamente no le expliqué que el informático de la empresa, como es lógico, había chapado los puertos usados por esa aplicación para comunicarse con otra que no es nada menos que el servidor y con muchas otras, que son los demás usuarios. Me levanté y me fui pidiendole perdón, eso sí no se le olvidó recordarme que era ingeniero y que no tenía ni puta idea.
Lo que es el colmo es lo de las tarjetas gráficas, la gente siempre se flipa con sus tarjetones, en mi trabajo sobretodo ya que están trabajando con video continuamente. Creen que cuanto más cueste una tarjeta gráfica mejor irá su programa de edición de video. No intentes explicarles que la tarjeta gráfica no hace uso ni de un 1% (espero que XGL cambie eso) de su capacidad y que con una de 300€ menos le hubiera ido igual de bien, no intentes explicarles que la tarjeta lo que hace bien es renderizar mallas, trabajar con texturas, hacer cálculos con vértices y pixels (los famosos pixels y vertex shaders), pero que su SONY Vegas no aprovecha para nada todo eso, por desgracia.
Existen cientos de cosas que escuchas cada día y que te _tienes que callar_ al escucharlas, pero que son verdaderas aberraciones. Me pongo yo acaso a hablar de arquitectura, de pintura, de literatura ? acaso habla la gente de cosas que no tiene ni idea como si fuera el creador? es obvio que yo ni nadie hablaría del cálculo de una viga, de la tensión que soporta un cable, de la potencia que hay que emitir para que en el receptor tengas una calidad aceptable, eso sí, de informática, lo que quieras.