martes, 26 de mayo de 2015
Mark V Shaney: Trolleando a lo Grande
No soy para nada amigo de los trolls, aunque he sido víctima de ese epiteto en algunos foros debido a lo obsesivo que puedo hacer en algunas cosas ... y a lo abusivas que pueden ser algunas personas con eso de calificar de trolls a los demás.
En la vieje Usenet a alguien se le ocurrio crear un programa que generara textos aleatorios utilizando un truco basado en las cadenas de Markov. Ese programa se hacía pasar por un usuario de nombre Mark V Shaney, el programa tuvo cierto éxito, al parecer alguna personas pensaron que se trataba de un tipo extravagante. El funcionamiento del programa en realidad es muy sencillo y no hay que entender del todo el concepto matemático de las cadenas de Markov para comprenderlo. Se basa en tomar uno o muchos textos y crear una base de datos de la palabra que sigue a un grupo de palabras tomandolas en número fijo de 2 o más . Luego a partir de esa data se generan oraciones aleatorias basandose en la precedencia de la palabra. Por ejemplo, si se va a crear una base de datos de las palabras que siguen a un grupo de palabras de 2, y para el caso de "iba al" hay se encontraron 6 palabras que seguian a esas dos: parque, parque, estadio, campo, paraiso, paraiso, entonces en la oración generada con el grupo de palabras de "iba al" , habrá la posibilidad 2/6 de que la siguiente palabra que siga sea "parque" o "paraiso" (esas palabras se repitieron 2 veces) y 1/6 de que la que siga sea "estadio" o "campo". Luego que se ha generado la oracion de tres palabras se toman las dos ultimas palabras y se genera, repitiendo el mismo proceso anterior, una nueva palabra, y así hasta tener un texto completo o de tantas palabras como se quiera. ¿Y cómo hacer con los signos de puntuación, el '.', la ',', ':', etc. Simple, se toman las palabras con los signos de puntuación, como si fuera una palabra más. Es decir que al final tendremos un texto con signos de puntuación y todo.
Lo fantástico es que en no pocos casos las oraciones pareceran tener sentido y se dejará al juicio del lector pensar si lo escrito es un sin sentido o un enigma. Hay gente que tiene una enorme grado de tolerancia a la ubicuidad y al caos literario, asi que la posibilidad de que el programa se gane la empatía de algunos cuantos no es poca. De hecho lo más impresionante es que si el programa funciona para algún idioma alfabético podría funcionar perfectamente para cualquier otro. Incluso estoy casí seguro que funcionaría en chino.
Me estaba planteando si hacía o no un programa tipo Mak V Shanney cuando me topé con el código de Timothy Musson un tipo interesante. El programa lo escribio en lenguaje C y es muy sencillo de utilizar, se maneja desde la consola de Linux. Básicamente el programa toma un conjunto de archivos cuyos nombres se le pasan como argumento a través de la consola y con ellos genera un texto aleatorio. Tiene un parámeto denomidonado "depth" que viene hacer el número fijo de palabras precedentes a partir de la cual se generara la palabra siguiente, por defecto utiliza el valor de 2. Es bastante claro que a menor profundidad el numero de textos generados puede ser mayor y por tanto el texto resultante es más ubicuo, quiero decir caótico, mientras que a mayor profundidad el número de textos generados es menor y por tanto el texto resultante es menos ubicuo, de hecho se dara el caso de que obtendremos uno de los los textos originales pasada una profundidad mínima. Por ejemplo, aunque el número de textos que le pasemos sea muy grande, con un 8 de profundidad será muy probable que obtengamos uno de los textos originales, siempre y cuando nos refiramos a textos normale y corrientos (extratos de novelas, ensayos, articulos periodisticos, etc).
Decidí pues experimentar con el programa de Timothy Musson y me busque un foro con un alto grado de ubicuidad. Encontrandome con decondicionamiento.org, me metí en uno de los hilos más disparatados que conseguí. Tome todos los textos que pude, copiando y pegando, y me puse a jugar. El resultado fue el siguiente:
Fijaos en lo que pasa en zona de caos?. Vamos, ni que hubiera empezado el foro parecería que se va a hablar de supercosastochísimas que parecen una peli de Harry Potter o fantocherias x el estilo... para eso está Ekiria jajaja Twisted Evil Laughing También es importante destapar la propaganda política de un vil ataque de hemorroides espirituales, pues se acusa a decond de desprestigiar a ZDC y decond tiene una orientación más amplia desde un principio de tal modo que permita que la ciencia y los resultado objetivos y la magia del caos, te haces un sigilo y eres el puto amo. a veces como con Laynd, es como el tao pero mas punk. esas son las reglas del buen caota.a mi no me ofende que me suena bien así. En esa dirección a la Magia del Caos en los bares pero os aseguro que no me suelo leer nada de lo real" de tal forma que los que pasamos de la magia(k) puede ser un rito de paso. En mi caso lo unico que he pactado con Luscious es la propia realidad lo deseará el discipulo), pero si así lo hace el "discípulo" estará asumiendo una dinámica dictada por el trolleo y bronquismo constante. Más adelante, fue un poco en suspenso la forma en que tono me dices esto ANLALA, porque se que tu me miras con cierto recelo por mis subidones, pero vamos... que la habilidad se desarrolle sóla, pero el tipo habia amenazado con denunciar a la ciencia y la repetición en el inconciente; quizás no has contemplado todas las posibilidades pero no a corto plazo pq no tengo tiempo) sería programar algún sistema con el universo estaba hecho de Leyes inmutables a la Pasionaria. Sin vosotros no hubiera podido. Gracias> Y que no te has tomado nada) y es una falta de decencia, oyes ... seDADA,
No puse el texto completo, es muy largo. Luego se me ocurrio mezclar los comentarios del foro con otro de conspiranaia y el texto de "La precesión de los simulacros", de Baudrillard, todo un clásico, uno de los resultados que obtuve fue este (tampoco pongo el texto completo):
Fijaos en lo que le buscamos la coherencia a los de El Monasterio, ¿cómo nos va a ser una apariencia y pertenece al orden de la negación radical del signo como reversión y eliminación de toda forma simbólica y de la ciencia. Supongo que por algún motivo no resulte aceptado por el otro, una autoridad por así decirlo y que malmetio durante muchisimos meses (en los que pudiera tener ahora entre foros son cosecha del pajillero de kabala777 (tambien alias francisco). O es que por ahí(léase Zdc) utilizan la magia intenta responder al "¿qué?". añadiría la cuestión es más que a la vez se hunde en su forma pura, la desmuseificación es una buena apariencia y pertenece al orden del sacramento. En el tiempo a confundirse con el lado irracional de la apariencia, sino al
de la negación radical del signo como valor, parte del foro ni le interese siquiera necesariamente el rollo sadomaso, determinar de antemano los papeles, límites, etc a los locos, etc.), ni cuando la Unión Soviética intervino en Afganistán. La familia Bin Laden ya trabajó para la práctica es entre otras cosas el desarrollo de un museo. El pánico invade de pronto a occidente ante la posibilidad de escapar a la gruta auténtica y después se visita la reproducción). Es posible que la peña venga a leer un articulo sobre el asunto, sino que has "creído" que iba a funcionar, has dado ese paso mental, ese salto al abismo(tampoco es para tanto) que significa que no se si me explico. ..bueno se me ha mandado foto esas kosas hay ke kurrárselas más hombre jajaj Si, May
hem, hay santo y seña. La palabra es: "Abrahadabra". Muy interesante todo esto de evitar las fantocherías y demás tontadas pueda servir para que la ciencia no pueda más que sus efectos no se equivoca: en este sentido, todos los indios por parte de lo real y lo que se supone que debería.
¿Interesante? Este programa como dije es muy sencillo, a estas alturas existen programas mucho más sofisticados. Uno de ellos es uno de los links que tengo en el panel derecho del blog. Es un programa que simula escribir articulos cientificos aunque lo que dice no tiene ni pies ni cabeza. Aun así algunos de esos artículos han pasado el visto bueno para publicarse en revistas o dar conferencias, con la expresa intención de ridiculizar al supuestamente muy serio filtro de selección que hay detrás de todo eso. El que inicio esta ola de fraudes académicos fue Alan Sokal con su famoso escándalo, quien pretendia con ello burlarse y desenmascarar el lenguage pseudo cientifico, pomposo y sin sentido de muchos de los textos y personajes de la postmodernidad.
Hace no mucho leí que uno o algunos de los programas que han participado en el Premio Loegner, se han basado en versiones más o menos sofisticadas de las cadenas de Markov. Minsky ha denunciado dicho premio como un truco publicitario. Sea como sea, para efectos de la postmodernidad pareciera que estos programas han pasado la prueba de Turing.
Recomiendo también leer el texto de "Cómo deconstruirlo casi todo", en inglés, de Chip Morningstar.
domingo, 24 de mayo de 2015
Ver mapa topográfico (con cotas o curvas de nivel) en Google Maps
Supongo que normalmente la forma de ver un mapa topográfico en Google Maps seria hacer lo que dice este video, desgraciadamente a mi no me funciona, de haberlo hecho no me hubiese puesto a escribir esta entrada.
Por alguna razón en el google chrome que instale en Trisquel no puedo acceder a las funciones de ver el relieve del mapa. Recuerdo que cuando utilizaba los navegadores tiempo atrás eso no era ningún problema. ¿Era en Windows o en Linux?. Uso Linux y no he probado eso en Windows, tal vez ni siquiera lo haga o me acuerde de hacerlo.
El caso es que si no puedes ver las cotas de un mapa con google a través de la interfaz gráfica hay parámetros de URL que se le podrían pasar para ver el mapa topográfico con cotas. Por ejemplo, este link muestra un mapa con el pico de Naigutá en el centro y sin relieve:
https://www.google.co.ve/maps/@10.5398457,-66.7780024,14z?hl=es-419
Si se quiere ver el mapa con cotas y relieve basta con quitar el parámetro hl=es-419 y colocar el parámetro "data=!5m1!1e4" de esta forma:
https://www.google.co.ve/maps/@10.5398457,-66.7780024,14z/data=!5m1!1e4
En este link se explica como utilizar los parámetros de URL de google chrome utilizando la sintaxis vieja, aunque recomendaría comenzar por los comentarios de stack overflow. La nueva sintaxis, la que utilice en el ejemplo, tiene también una explicación aunque mucho menos exhaustiva en el mismo site.
Lo que hace google chrome cuanto tipeamos la vieja sintaxis es mapear la a la nueva y redirigir al link. Como se puede comprobar al colocar una dirección como esta:
http://maps.google.com/?ll=40.921555,-3.873539&spn=0.089888,0.181789&t=p&z=13
Me topé con este problema cuando buscaba una forma fácil de identificar todos los picos del Waraira Repano. A ojo por ciento no es fácil de hacerlo porque hay picos que sobresalen y tapan a otros, los picos se parecen y las perspectivas te impiden apreciar con seguridad cuál es el más alto, todo es mucho más intrincado, la información que tiene que procesar el cerebro es más compleja o al menos así lo veo yo. Creo que con mapa de cotas bidimensional eso es mucho más fácil y ayuda muchisimo a la visión tridimensional, pero no pude culminar el trabajo en las 3 o 4 horas que me propuse y es difícil que consiga otro espacio de tiempo para hacerlo. Lo hacía por puro hobbie.
miércoles, 20 de mayo de 2015
Colocar subtitulos de idioma a un video
$ mencoder -sub archivo_subtiulos.srt -subcp iso-8859-1 -ovc xvid -xvidencopts bitrate=14400 -subfont-text-scale 2.5 -oac pcm -o video_entrada.mp4 video_salidad.mp4
Además de lo difícil que es utilizarlo (la instrucción anterior no vale para todos los casos) mencoder es sumamente lento para colocar los subtitulos. No se recomienda utilizar esa herramienta, que parece más hecha para propósitos investigativos o académicos que para los propósitos mucho más mundanos de la mayoría de la gente.
El parámetro iso-8859-1 es la fuente en la que esta códificado el archivo de texto '.srt' y que es por lo general en la cual se codifican las traducciones que se descargan de la página citada. Para saber con seguridad cuál es la fuente en la que esta codificado el archivo se utiliza el comando file:
$ file nombre_archivo.X
Una forma mucho más sencilla y muchísimo más rápidad de colocar los subtitulos es con mkvmerge, esta es la que se recomienda.
$ mkvmerge -o video_salida.mkv video_entrada.mp4 --sub-charset 0:ISO-8859-1 -s 0 archivo_subtitulos.srt
Luego de traduccir 2 videos con esta instrucción no tuve problemas para ver los subtitulos en ninguno en los reproductores de video de Linux como VLC, ¡Y no tarda más de 5 segundos en comparación con mencoder que puede tardar hasta media hora para traducir un video de hora y media !!!. Pero en el caso de uno de los videos no logré verlo en el televisor digital que poseo en mi casa. Aun desconozco si me falto colocar algo más en los parámetros de la instrucción de arriba para evitar ese inconveniente. Si lo descubro haré las correcciones pertinentes en esta entrada.
jueves, 30 de abril de 2015
Alternativas Monetarias para Venezuela
Tengo que aclarar que no soy economista, sino informático y este blog hasta ahora ha estado centrado solo en los tópico de mi área específica. Sin embargo crear otro blog para verter las ideas y opiniones que voy a dar aquí es algo que me parece un desperdicio. Tengo otro blog pero es sobre temas algo más raros y lo publico bajo seudónimo. Hasta ahora no he querido romper ese anonimato. Pero seria complemente errado suponer que los informáticos no estamos en la capacidad de opinar o razonar sobre temas como estos, los requerimientos del mundo actual nos obligan a ser expertos de negocio y el caso del dinero o la moneda no es una excepción como lo demuestra el origen de las actuales criptodivisas.
La otra razón que mi impulsa a escribir esta entrada es la terrible y insufrible crisis que estamos atravesando los venezolanos, la muy relativa paz y el silencio atronador con la cual la estamos sobrellevando muchos de nosotros. Asi que de momento voy a salirme de la línea del blog para comentar que alternativas monetarias tendríamos los venezolanos para salir de la crisis.
Nuestro país esta atravesando una crisis financiera. Con crisis financiera se quiere decir que el problema de raíz no es una crisis de escasez de recursos, que no es una crisis humanitaria sino básicamente una crisis del flujo del dinero y la entrada del dinero, los problemas derivan de eso. Hay escasez de dólares, una alta demanda del mismo y una baja oferta de esa codiciada moneda, por otra parte los únicos que compran bolívares son los colombianos. Esta escasez de dólares es causada por el control monetario y la fuga de divisas.
Debemos entender que una moneda es un producto y que como tal esta sujeta a las leyes de la oferta y la demanda. Esto puede sonar extraño a algunos, pero no lo es. Una moneda es un producto basado en la confianza y la solidez del estado que la emite. El estado además le da un uso obligatorio a la moneda y hace necesaria su circulación con tan solo tasar sus tributos en la misma.
Básicamente el dólar sube porque hay una alta demanda del mismo y hay una alta demanda de dólares debido a la gran cantidad de importaciones que tiene el país. Nada más en lo que comemos se importa el 70%. El país importa, pero no produce. El flujo de dólares entrante proviene de las exportaciones de un recurso no renovable al cual la naturaleza le tomo millones de años producir, mientras que el hombre lo consumirá en apenas un par de siglos: el petróleo.
El problema de raíz de Venezuela es en realidad que no produce. Importa alimentos, vehiculos de transporte terrestre y aéreo, electrodomésticos, maquinaria pesada, repuestos para maquinaria, etc, todo, casi todo. Somos grandes consumistas y para seguir importando necesitamos dólares. De allí la escasez de la divisa.
La escasez de dólares provoca la depreciación monetaria del bolívar y la escasez de los productos que importamos de forma directa o la escasez inducida por el cierre de las fábricas nacionales que a su vez dependen de los dólares para la compra de repuestos o insumos.
El dólar se encarece y nuestra moneda cada vez vale menos hasta que llegamos al punto de cuestionarnos si realmente sigue teniendo sentido sequir usándola.
Además la depreciación monetara aupada al control cambiario y al control de precios trae aparejada una seria de distorsiones que en la actualidad son el flagelo de la economía venezolana:
- El contrabando: se obtiene una altisima rentabilidad al llevarse los productos nacionales de forma ilegal, dado que el control de precios pone esto muy por debajo de los equivalentes en dólares en el mercado vecino. Las ganancias son multimillonarias.
- Bachaqueo: comprar productos regulados por el control de precios para después venderlos más caros.
- Mercado negro de dólares: para el caso de Venezuela que es el que tratamos se dice que tiene su principal sede el Cúcuta, Colombia, el país que más se benecia del contrabando con Venezuela y cuya deflación no seria exagerado suponer que se debe en gran parte a la merma e inflación de la economía venezolana.
Hay pocas alternativas que están sobre la mesa y que se podrían considerar para o bien sustituir la moneda o aumentar la apreciación de la misma. Entre estas alternativas están:
- Dolarización
- Bolivarización del precio del petróleo
- Moneda electrónica
Dolarización
Es la alternativa de la que más se ha hablado y la que parece más viable y atractiva de todas. Ha sido implementada con éxito en paises como Ecuador. Jairo Larotta de Aporrea esta entre quienes han defendido esta propuesta. Otro de quienes intentan impulsarla es Jose Luis Cordeiro.
La dolarización parece una alternativa razonable pero ¿por qué podría funcionar?. En primer lugar porque la economía venezolana esta virtualmente dolarizada y lo ha estado no ahora sino desde hace mucho tiempo. Lo esta y lo ha estado porque desde hace mucho tiempo que somos un país que importa más y más. Una moneda nacional tiene sentido en una economía fuerte, autosustentable, con la capacidad de producir por si misma los alimentos, bienes y servicios que demandan la mayoría de sus ciudadanos o bien en una economía con la capacidad de producir bienes y servicios demandados por el mercado internacional y en donde la mayoría de la gente trabaja para lograr algo así. Pero una moneda que no esta sustentada por semejante economía solo sirve de juguete para las especulaciones financieras y otras distorsiones del economicas.
La dolarización no haría imposible que aun hubiese fuga de divisas, es decir gente que enviara el capital al exterior en busca de un mayor rendimiento. Pero la verdad es que seria mucho menos lucrativo de lo que es ahora. Básicamente los altos rendimientos no se han debido a los intereses de los bancos en paraísos fiscales sino a la depreciación monetaria. Por eso en lugar de enviar los dólares al exterior tendría más sentido invertirlos aquí en donde se puede obtener un mayor rendimiento si se hace bien. Como sabemos aun somos un país con muchos atractivos en ese sentido. Evidentemente el Banco Central tendría ninguna o mucho menos posibilidad de controlar la oferta monetaria. ¿Pero qué pasaría con todos los dólares que seguirían entrando por concepto del petróleo? Puede que se traducirían en mayores reserva internaciones y unos mayores sueldos para los empleados publicos, aunque tampoco hay que hacerse muchas ilusiones. La estabilidad económica parece segura, pero no la bonanza.
El otro problema que tendría una medida así es el impacto psicológico en el sentimiento de independencia y soberanía. A partir de ese momento habría un nuevo chivo expiatoria al cual culpar cuando las cosas vayan mal: la dolarización económica.
Bolivarización del precio del petróleo
De quien leí esta propuesta originalmente fue de Jairo Larotta en Aporrea. En su artículo el habla es de bolívares-oro no simplemente de bolívares. La propuesta original de Jairo no la he podido comprender del todo, de modo que de lo que hablaré es simplemente de la bolivarización del petróleo tal como la entiendo.
Se trata de vender el barril del petróleo en bolívares, de modo que invertiriamos las reglas de juego. En lugar de tener que comprar dólares con bolivares podríamos vender bolívares para obtener dólares. Desde luego que una propuesta como esta parece muy arriesgada y seria completamente ridiculizada.
Como dije anteriormente no soy economista. Pero se muy bien que lo normal es que todas las materias primas se tasen en dólares y es en dólares que cotizan en bolsa. Desconozco si eso aplica para todas las materias primas en general. Lo que conozco bien es que todas las cestas petroleras cotizan en dólares, sin excepción. En Iraq Sadam habría considerado vender el petróleo en euros y por eso se especula que lo tumbaron, algo parecido se dice de Gadafi en Libia.
¿Seria posible hacer algo así? y si es posible ¿nos convendría? Como siempre el petróleo tendría que cotizar en bolsa así que su precio seria fijado por el mercado y no por el Estado de Venezuela. Veriamos al principio una alta demanda de bolívares para obtener petróleo y por tanto lo normal seria que la tasa de cambio del bolivar con respecto al dólar también se dejara en manos del mercado. Pero a pesar de cuán alta pueda ser la demanda lo que cabe suponer es que habría una sobreoferta de bolívares, por tanto lo que se esperaría es que el petróleo se termine vendiendo más barato que cuando se vendía en dólares. Tal como están las cosas ahora fácilmente los compradores podrían obtener 200 bolívares por un dólar. Si tasamos el petróleo a la tasa de cambio actual del dólar en el mercado negro, el barril tendría que venderse a algo así como 10 000 bolívares, al cambio del mercado negro que es bastante cercano al del Simadi ( 50 dolares por barril x 200 bolivares por dólar), para que alcance cierta paridad con la situación actual. Pero no es tan improbable. La sobre oferta de bolívares tendría como efecto resorte la subida del precio del petróleo porque a mayor sobre oferta de bolívares también mayor puede ser el precio del petróleo en bolívares. Es por eso que esta jugada es muy interesante y solo la cobardía o mi ignorancia pueden explicar porque nadie la ha hecho. Me refiero no solo a nosotros sino a algún otro país en alguna otra moneda.
El problema con esta medida es que el estado tendría que competir con otros entes para obtener el acceso a los dólares, es decir, para vender bolívares por dólares. Pero la hipotética ventaja es que en lugar de estar compitiendo con otros entes lo que podría terminar ocurriendo es que el bolívar fuese una moneda de aceptación en los mercados transformandose en una divisa más. En lugar de utilizar el petróleo para fortalecer el dólar estariamos utilizando el petróleo para fortalecer nuestro bolívar.
¿Es tan simple? En realidad no lo es. No es del todo cierto que exista un mercado libre y los compradores supuestamente lucharían en las subastas de las bolsas por obtener el petróleo cada vez más escaso, digase lo que se diga, en realidad podrían ponerse de acuerdo para obtenerlo a un bajo precio. Pero precisamente para que NO se puedan poner de acuerdo deberían ser muchos compradores o tratarse de un bien escaso o ambas cosas y al menos se cumple el segundo caso.El fracking es solo un burbuja que esta comenzando a estallar. Desconozco como es el mercado de los compradores del petróleo. Debería saber más sobre eso. También debería poderse disponer de más información, pero lo que se consigue en la Web es a gotas y esta muy disperso. De momento no se ve ni la pericia ni la habilidad de quien podría hacer algo así.
Debo aclarar que el petróleo venezolano NO COTIZA EN BOLSA, su precio se fija y es calculado tomando como referencia el WTI, pero la página de PDVSA, que se queda corta en muchos aspectos, no específica cuál es ese cálculo, pero no es difícil de deducir y hay al menos una formula, la cual recientemente vi, circulando por la web. El hecho que el petróleo venezolano valga menos que el WTI ocurre porque es de menor calidad, su calidad también es inferior al del restos de los crudos de la OPEP . En el caso del petróleo de la OPEP el precio es fijado en base al promedio de otras canastas petróleras. Hasta muy recientemete pensaba que la cesta venezolana, al igual que el de la OPEP cotizaba en bolsa. Un terrible error que demuestra cuán ignorantes somos del negocio petrolero.
Moneda Electrónica
La ventaja de una moneda electrónica es que haría más difícil romper el control cambiario, si se implementa con todo el rigor que debería. También tendría un impacto contundente sobre el contrabando, el lavado de dinero e incluso la delicuencia en general.
Tenemos que comprender aquí que la ventaja y gran desventaja del dinero en efectivo es la facilidad con la que se transfiere la riqueza de forma que no queda rastro de las manos por las cuales ha pasado. Una moneda electrónica haría difícil semejante grado de clandestinidad y anonimato, porque todas las transacción estarían expuestas al escrutinio público o de las instituciones del estado tal como ocurre más o menos hoy con la cadena de bloques por el bitcoin . En primer lugar dado que la plataforma con la que operaria estaría controlada por los organismos de politica monetaria del estado, desapareciría como por arte de magia cosas como el mercado negro de divisas en Cúcuta. Es importante destacar que para que esto sea así debería estar prohibido de manera estricta las transacciones anónimas, en el caso del bitcoin no ocurre esto , se trata además un sistema descentralizado, el sistema que necesita Venezuela es un sistema centralizado.
La naturaleza de esta moneda electrónica seria la de un celular, una tarjeta o un disposivo como un pendriver, debidamente identificada con los datos de su portador. Los pagos y las compras deberían ser tan fáciles como enviar un mensaje electrónico. Operaría utilizando en parte la tenología utilizadas por las tarjetas electrónicas bancarias y las critptodivisas como el bitcoin. Esta moneda tendría un libro de transacciones de autoditaria pública tal como ocurre ahora con la cadena de bloques en donde constaría cada transacción y quienes la realizarón.
La moneda electrónica no seria directamente transable a otras divisasas. Se podría sin embargo hacer transacciones de divisas que se ocultarían bajo otro tipo de operación. Para que haya una transacción así los dos operadores deberían contar con la criptodivisa electrónica y deberían hacerla en bajo volumenes para que esta no llamara la atención. En principio se supone que los actores de la transacción deberían ser connacionales dado que esta es una criptodivisa nacional. También habría que idear un mecanismo para otorgar la criptodivisa a turistas e inversores extrangeros. En otras palabras son varios los mecanismos de control que habría que pasar para acceder a las criptodivisas y realizar algún tipo de transacción ilegal, la cual siempre dejara una huella electrónica y la que se estará muy expuesto. Todo esto restringiría terriblemente la corrupción.
Si se implementara no seria posible que a uno lo secuestren o lo roben para quitarle el dinero. Nadie va a obligar a otra persona a que le otorgue una parte de sus criptodivisas para que después el estado le quite las mismas y encima bloqueo su capacidad de hacer transacciones, para finalmente meterlo preso. Se podría todavía robar los bienes . Pero el robo espectacular de grandes cantidades de riqueza a través del robo de dinero (el robo de un banco, un secuestro, etc) es algo que seria cosa del pasado. Paises como Suecia están comenzando a eliminar el direro en efectivo, entre otras razones para evitar el robo del mismo.
Lo ingenioso de este mecanismo es que pueden implantarse politicas de control monetario sumamente eficaces a un relativamente bajo costo y sin aumentar en un mínimo la burocracia. Solo se requiere de una poderosa plataforma informática y una tecnología con que la contamos actualmente: la moneda electrónica y las criptodivisas.
Los problemas de una tecnología como esta reside en los problemas para la privacidad, aunque esta sacrificio es mínimo si se piensa en la enormidad de los sacrificios que hacemos actualmente por hacer uso de nuestra débil moneda.
El estado venezolano cuenta con los recursos y la capacidad para llevar a caba una transición como esta. En lo personal creo que podría funcionar y valdría la pena llevar a cabo una medida si es que queremos que nuestra economía vuelva a tener algún tipo de sentido.
Una acotación y advertancia que debo finalmente hacer es que no considero que las actuales criptodivisas como el bitcoin realmente sean un mecanismo viable a futuro para sustituir el dinero, no recomendaría invertir en ellas. Entre otras cosas porque no cuenta con el respaldo de ningún estado. Son los estados los que imponen las monedas a través de mecanimos como los tributos. En lo personal creo que toda moneda debería tener el respaldo de un estado para ser realmente una moneda. Es cierto sin embargo que el bitcoin da poder a las personas, es por eso que si los estados no se adelantan a las iniciativas privadas como las que han dado surgimiento al bitcoin una revolución impulsada por ese tipo de moneda no es ninguna fantasía, aunque no apostaría por esa posibilidad. La mayoría de las personas también quieren formar parte de un estado fuerte y no es precisamente a su nacionalidad a lo que quieren renunciar.
Tal vez sea precisamente la llegada de las critodivisas y la predominancia del dinero electrónico la razón por la cual no convenga migrar al dolar, seria demasiado tarde para eso. Pero la dolarización es todavía preferible a dejar las cosas como están.
miércoles, 29 de abril de 2015
X11 como usuario root o cualquier otro usuario
Muchos de los usuarios de linux se han sentido tentados alguna vez por ejecutar una aplicación gráfica desde la terminal en modo root o cualquier otro usario, pero se han encontrado con algo como esto:
.... cannot open display: :0.0
Si se trata de una aplicación java dira algo así:
java.lang.internalerror can't connect to X11 window server using ' 0.0' as the value of the DISPLAY variable
La forma más fácil de salir de esto seria mediante un:
$ xhost +si:localuser:nombre_usuario
También se podría modificar directamente los archivos involucrados en esto, aunque como era de suponer, es más tedioso, lo indico a modo de curiosidad.
Para permitir que la aplicación se ejecute con el usuario activo en la consola se debe primero ubicar una clave en el directorio /var/run/xauth/ , allí se encuentra un archivo que se puede también conseguir con el comando:
$ find /var/run/xauth/A${DISPLAY}-*|tail -n1
Publicado por KENTNL, de cuyo blog extrage toda esta información . Luego de identificado el archivo (en mi máquina solo es uno), se debe imprimir y decodificar la clave con el comando:
$ sudo xauth -f /var/run/xauth/nombre_archivo list
Lo cual mostrara algo como esto:
#ffff##: MIT-MAGIC-COOKIE-1 711f067eae4ec73599dc38dbfaa164f0
Es casi obvio que 711f067eae4ec73599dc38dbfaa164f0 es la clave. Dentro del usuario en el cual queremos tener acceso tipearemos finalmente un comando como este:
$ xauth add :0 MIT-MAGIC-COOKIE-1 711f067eae4ec73599dc38dbfaa164f0
El cual creara un archivo llamado .Xauthority en el directorio home del usuario logueado con las credenciales que le daran finalmente el acceso a X11. Si después se le quiere quitar acceso a X11 basta con borrar ese archivo. Desgraciadamente la clave cambia con cada reinicio de la computadora asi que si se quiere hacer este cambio permanente deben seguirse las recomendaciones del blog de KENTNL.
viernes, 24 de abril de 2015
El Misterio del pase de parámetros en Java: ¿por valor o referencia?
Resulta sorprendente como después de llevar tiempo programando en Java y haber hecho infinidad de maravillas uno se pueda quedar perplejo y hasta embarazado con la cuestión de si se pasan o no los parámetros por valor o referencia y cómo y cuándo. En un aula de clases no se le suelen dedicar ni dos horas ha hablar sobre eso. De hecho en la Web existen diversidad opiniones sobre este tema, ¡pero no debería estar sujeto a opinión!, estamos hablando de algo que indiscutiblemente tiene una implementación formal, de algo que esta programado y definido por el standar de Java por lo siglos de los siglos y que nadie puede cambiar ¿pero de cuál standar estamos hablando? ¿sera uno de estos? ¿o estos? ¿quién sera tan sesudo y paciente como para ponerse a revisarlos?. La polémica esta armada, vean la que se armo en stack overflow por este tema.
Parece que el problema esta en la forma en como hablamos. De hecho creo que eso de parámetros por valor y referencia es semánticamente confuso, pero Scott Stanchfield que es mucho más experto que yo, no esta de acuerdo con mi opinión, ni con la de muchos otros. Hablar de parámetros por valor y referencia no es algo muy típico de java o de los libros que tratan sobre java, no les extrañe si no consiguen nada sobre eso en muchos o no pocos de ellos. Eso es algo más bien propio de lenguaje C. En java no se declara explicítamente parámetros por referencia o por valor, no existen por ejemplo los punteros , que es de donde viene esa distinción. Y sin embargo los parámetros implicítamente se pasan por valor o por referencia. Así que no es simplemente una extrapolación invalidad de los conocimientos de lenguaje C.
Un tema tan sencillo como este es algo que este link, parece haber cubierto plena y satisfactoriamente. Lo dice y lo muestra muy claro:
En primer lugar lo que dice allí hecha por tierra que en Java se pasen parámetros por referencia y valor, dado que dice que solo se pasan por valor, y por tanto si se estaría extrapolando de forma invalidad los conceptos de lenguaje C. Pero antes de discutir eso vamos a ver cómo es que maneja java el pase de los parámetros.
Según ese link si los parámetros son primitivos la función tomará sus valores pero no podrá modificar el valor del parámetro original. Si los parámetros son objetos, la función podrá modificar los contenidos de los objetos.
Pero ¿qué pasa si los parámetros que se le pasan son arrays de primitivos? Efectivamente el link no dice nada sobre eso. Los arrays en Java son objetos aunque sean array de primitivos, no es algo que sea obvio o haya que deducir (excepto programando), hay que saberlo. Alguien que comento en Stack overflow dice que eso se especifica claramente en en la sección 4.3.1 de la Java Language Specification.
Asi que si escriben:
char bb[] = {'s', 'o', 'p'};
if (bb instanceof Object) System.out.println("Yes!");
dira 'Yes!' .
Así que eso que se decía de que todos las clases de Java heredaban de Object es también cierto para los arrays primitivos.
Eso si, si escriben:
char bb[] = {'s', 'o', 'p'};
System.out.println("Nombre de Clase: " + bb.getClass().getName());
Les saldrá una cosa rara.
El link también decia que si se pasaban objectos a un método el contenido de estos podría ser modificado por el mismo. Por el contenido entiendo los atributos del objeto. Sin embargo hay ciertos objetos que sobrecargan el operador '=' (extrapolando la terminología de C++ dado que en Java en realidad no se sobrecargan los operadores) para lo eso no es cierto. Me refiero al objetos como String o Integer.
Si se hace:
String cadena = 'dsfskjlf';
luego se pasa como parámetro a un método y allí se sustituye por otro valor eso no tendrá ningún efecto sobre el parámetro que se paso luego de salir del método. Parece que esto es cierto para todo Objecto que sobrecargue (extrapolando como dije antes) al operador '=', los cuales no son muchos.
Formalmente no se como se explicaría estas excepciones en Java, porque en general es cierto que si los atributos de un objeto que se paso como parámetro a un método se modifican en dicho método los cambios se mantendrán luego de salir del método. En el caso de String y Integer parece claro. aunque sea raro, que el valor que se le asiga a los mismos no constituye un atributo del objeto.
Para evitar las extrapolaciones con lenguje C, Java debe tener un lenguage complementamente propio y autosufienciente, en donde los casos que he mencionado anteriormente no induzcan la menor confusión. Sin duda que Java tiene eso, aunque no lo maneje a ese nivel y al parecer son muchos los que tienen ese problema. Quiero decir, por ejemplo, que encuentro incomodo, referirme a casos como los anteriores sin hablar de parámetros por referencia y valor o referirme a algo como la sobrecarga que como se ha visto no serían terminos muy propios o apropiados para el lenguaje Java. Incluso seria errado simplemente decir que en Java los parámetros siempre se pasan por valor, allí también se esta extrapolando. ¿Pero no refleja esta confusión también debilidades en el lenguaje Java?.
Concluyo finalmente con un código que de forma empírica muestra como maneja los parámetros Java. Con esto espero no volver a tener nuevamente esta confusión.
package misc;
/**
* Programa que ilustra el pase de parámetros en Java
* @author alexander
*/
public class PasoParametrosFunciones {
public PasoParametrosFunciones () {
int a=3;
char c='a';
byte e= (byte)11;
System.out.println("Paso de valores primitivos: ");
System.out.println("Valor antes de ejecutar la función: a = " +a + ", c = " +c + ", d =" + e);
paso_primitivos (a, c, e );
System.out.println("Valor despues de ejecutar la funcion: a = " +a + ", c = " +c + ", d =" + e);
int aa[] = {1, 2, 7};
char bb[] = {'s', 'o', 'p'};
System.out.println("Paso de arrays primitivos: ");
System.out.println("Valor antes de ejecutar la función: aa[2] = " +aa[2] + ",bb[1] = " + bb[1]);
paso_array_primitivos (aa, bb);
System.out.println("Valor despues de ejecutar la función: aa[2] = " +aa[2] + ",bb[1] = " + bb[1]);
System.out.println("Paso de Objectos: ");
String veronica = new String ("Veronica");
Persona persona = new Persona("Carlos Fuentes", 'M', 21);
Integer v = 4333;
System.out.println("Valor antes de ejecutar la función: String veronia = " +veronica + ", Entero v " + v +
", Nombre Persona = " + persona.getNombre() + ", Edad Persona = " + persona.getEdad());
paso_objectos (veronica, persona, v);
System.out.println("Valor antes de ejecutar la función: String veronia = " +veronica + ", Entero v " + v +
", Nombre Persona = " + persona.getNombre() + ", Edad Persona = " + persona.getEdad());
}
static public void main(String args[]) {
new PasoParametrosFunciones ();
}
void paso_primitivos (int a, char c, byte e) {
a=199; c='3'; e= (byte) 'f';
}
void paso_array_primitivos (int aa[], char bb[]) {
aa[0]= 7;
aa[1]= 99;
aa[2]= 88;
bb[0]= 'z';
bb[1] ='b';
bb[2] = 'i';
}
void paso_objectos(String nombre, Persona p, Integer aa) {
nombre= "Laura";
p.setNombre("Jaimito");
p.setEdad(1000);
aa = 821;
}
}
class Persona {
private String nombre;
private char sexo;
private int edad;
public Persona(String nombre, char sexo, int edad) {
this.nombre = nombre;
this.sexo= sexo;
this.edad = edad;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public char getSexo() {
return sexo;
}
public void setSexo(char sexo) {
this.sexo = sexo;
}
public int getEdad() {
return edad;
}
public void setEdad(int edad) {
this.edad = edad;
}
}
Ghost Effect con la programación script de GIMP (script-fu)
#!/bin/bash
# Script para crear animaciones que trabaja con dos capas
# - Una en la que hay un fondo estático
# - Y otra de la animación la cual se transparenta contra el fondo
# El resultado es aspecto fantasmal de la imagen animada.
# Tanto el fondo estático como la capa animada deben tomarse en la misma posición y sin mover la cámara
{
cat <<EOF
(define (crea-transparencia imagen_fondo imagen_animacion imagen_salidad)
(let* (
(image (car (gimp-file-load RUN-NONINTERACTIVE imagen_fondo imagen_fondo)))
(layer nil)
(drawable nil)
)
(set! layer (car (gimp-file-load-layer RUN-NONINTERACTIVE image imagen_animacion)))
(gimp-image-add-layer image layer 0 )
(gimp-layer-set-opacity layer 25)
(set! drawable (car (gimp-image-merge-visible-layers image EXPAND-AS-NECESSARY)))
(file-jpeg-save RUN-NONINTERACTIVE image drawable imagen_salidad imagen_salidad 1 0 0 0 " " 0 1 0 1)
(gimp-image-delete image) ; ... o la memoria explotara
)
)
(gimp-message-set-handler 1) ; Messages to standard output
EOF
imagen_fondo="../00554/0531.jpg"
for i in ../00554/*.jpg; do
imagen_salidad=`echo $i | cut -d '/' -f 3`
echo "(gimp-message \"$i\")"
echo "(crea-transparencia \"$imagen_fondo\" \"$i\" \"$imagen_salidad\")"
done
echo "(gimp-quit 0)"
} | gimp -i -b -
Este es un ejemplo de un video que desarrolle para un proyecto en la universidad hace un tiempo: