Archivo de la categoría: Sin categoría

El camino de Emacs

Este es mi RoadMap con respecto a Emacs:

– [X] Editor de texto / IDE

– [X] Cliente IRC

– [X] Chat / Facebook chat

– [X] Agenda / anotador / Life planner / time tracking/ project planner (Org-mode)

– [X] Shell / terminal

– [-] Cliente RSS (lo usé como tal pero no me convenció mucho.

– [X] Wiki personal

– [X] Lector de PDF

– [ ] Cliente de Email

– [ ] Lanzadera espacial.

Quién sabe qué nuevos usos tendré con este editor. Sus capacidades son casi ilimitadas. Seguro me estoy olvidando otros usos que le doy.

Programadores matando a un dragón

Del sitio de Angel «Java» López (un programador argentino multilenguaje y multidisciplina, como podemos ver en su blog no técnico) saqué este artículo: cómo se las arreglan los diferentes tipos de programadores para matar un dragón y rescatar a una princesa.

Programadores matando un dragón

Java – Llega, encuentra al dragón,
desarrolla un framework para aniquilación de Dragones en múltiples capas,
escribe varios artículos sobre el framework… pero no mata al dragón.

.NET – Llega, ve la idea del desarrollador de Java y la copia,
intenta matar al dragón, pero el bicho se lo come.

C – Llega, mira al dragón con mirada de desprecio,
tira de espada, degolla al dragón, encuentra a la princesa…
y la ignora para ver los últimos checkins del cvs del kernel de Linux.

COBOL – Llega, ve al dragón y piensa que es demasiado viejo para conseguir
matar un bicho de ese tamaño y quedarse con la princesa, y entonces se va.

Pascal – Se prepara durante 10 años para crear un sistema de
aniquilación de dragones… cuando llega el momento descubre que el
programa sólo acepta lagartijas como entrada.

Delphi- Crear una serie de componentes para eliminar dragones, pero
cuando se da cuenta esta corriendo en otro ambiente y los componentes
son inutiles para este tipo de dragon, asi que mata al caballero y se
coje a la princesa. Luego el dragon se los come.

VB – Monta un arma de destrucción de dragones a partir de varios
componentes,
salta encima del lomo del dragón, y en la hora H descubre que la
espada sólo funciona durante las noches de lluvia…

PL/SQL – Recoge datos de otros matadores de dragones, crea tablas con
N relaciones de complejidad ternaria, datos en tres dimensiones, OLAP,
tarda quince años para procesar la información… y para entonces la
princesa se volvió le[sb]iana.

Ensamblador – Cree que está haciendo lo más correcto y eficiente…
pero pone un A en lugar de un D y mata a la princesa para terminar
fol[lá]ndose al dragón.

FOX PRO – Desarrolla un sistema para matar al dragón.
Por fuera es precioso y funciona, pero por dentro está todo parcheado
y cuando va a ejecutar el aniquilador de dragones recuerda que olvidó
indexar los DBF.

ANALISTA DE PROCESOS – Se acerca al dragón con dos toneladas de
documentación desarrollada sobre el proceso de matar un dragón
genérico,
desarrolla un DFD para liberar a la princesa y casarse con ella,
convence al dragón de que es lo mejor para él y que no va a doler.
Al ejecutar el proceso estima el esfuerzo y el tamaño del daño que
causará con la firma del Papa, de Buda y de Joan Manuel Serrat para el
plano, y entonces compra dos bombas nucleares, 45 cañones, un
portaaviones y contrata a 300 hombres armados hasta los dientes…
Cuando en realidad tan sólo el dragón ya se fue… obviamente con la
princesa (ella contenta)…

HTML: Monta una web sobre espadas famosas usadas para matar dragones,
pero se pasa los estándares W3C por el forro. Cuando se encara con el
dragón descubre que el código no es compatible con su navegador, por
lo que se queda compuesto y sin espada. El dragón se lo merienda como
aperitivo. (Darkblade, barrapunto)

PHP: Crea una página web que al ejecutarla eliminará al $dragón tirando
de una base de datos de armas en MySQL y sobre un servidor Apache.
Sin embargo, se olvidó el Where en la query de delete y mata a la princesa,
al dragón, a los campesinos, a la bruja, al hechicero y al propio
programador.

_BLOCKED SCRIPT El programador intenta matar al gran dragón verde que
lanza fuego por la boca. Crean un script que borrará al dragón cuando
cargue una página web para
unos segundos después crear unas damiselas que lancen flores y hagan
soniditos de aplausos. Por desgracia no tuvo en cuenta la estructura
Dom del lagarto, también conocido como Mozilla, y lo único que
consigue es rellenar su consola de errores
y que el libro de Mozilla narre como acabó devorado.

Programador de videojuegos: Se pasa dos años programando una espada
state of the art, con shaders y todo. A la hora de matar al dragón se
encuentra con que la mitad de los caballeros no tienen fuerza para
mover la espada. Luego alguien programa un parche que revela las
escenas de se[x]o con la princesa y Hillary Clinton le monta un
escándalo (rogerdv, en barrapunto).

Perl – El caballero decide matar al dragón con una expresión regular,
pero se equivoca en los caracteres de comodín y acaba incluyendo en el
patrón de mortalidad a Dragones, Iguanas, lagartos, perros, gatos,
osos, princesas y ratones.

ASP (el primo de .Net) – ¿Quién no fue invitado a matar el dragón
demanda a esta Web por 2.000.000 por discriminación, se reparte el
dinero con el dragón y se van a vivir juntos a Florida.

Analista funcional
– Define todos las posibles ataques del dragón, llamaradas,
posibles puntos débiles y fuertes, su árbol genealógico, etc.
Para cuando tiene listo un primer prototipo,
los tataranietos de la princesa se cargan al caballero
por el sólo hecho de insinuar el matar a su mascota preferida .

🙂 🙂

Acá van algunos más que he estado pensando (disculpen la falta de acentos):

LISP: Envuelve al dragon en una serie de parentesis infinito, y lo asfixia.
Como nunca vuelve de esa funcion recursiva, no llega a procesar princesa.

APL: Designa una letra griega para representar dragon, le aplica la
identidad, y luego lo hace desaparecer en una sarta inintelegible de
aplicaciones de funciones.

Maquina de Turing: pone al dragon en alguna parte de la cinta de entrada, y
haciendola avanzar y retroceder, consigue que el dragon se maree, vomite, y
muera ahogado en su propio vomito. La princesa, lamentablemente, sigue la
misma suerte.

Prolog: se escribe un predicado dragon(X), y en la parte derecha le pone
tantos «cut» que el dragon muere desangrado. Nunca tiene un fail, asi que no
llega al predicado princesa(Y), donde a la derecha, hay predicados referidos
a sexo sin limite, algo como princesa(Y) :- sexocon(Y), princesa(Y).

Kernel de Linux: pone al dragon al final de la tabla de procesos, y le
aplica un parche que ejecuta todos los procesos menos el ultimo, asi que el
dragon deja de existir. Cuidado, que con un rootkit, puede hacer que el
dragon se convierta en administrador. Princesa no existe: no hay mujeres en
Linux.

NUnit, JUnit: se escribe un test que prueba si el dragon existe, si tiene
hambre, si esta despierto, si esta enojado. Se lo ejecuta a cada momento,
con integracion continua, y el pobre dragon se suicida, ante tal panorama de
vida. Mientras, todos los test de la princesa quedan en verde.

Smalltalk: Los programadores de Smalltalk no se dedican a matar dragones.
No, ellos no programan. No, ellos tienen un ambiente. No, no insistan, no es
programar. Ni tampoco son objetos. No les hablen de Java, .NET o dragones.
No, estan todos equivocados. Ellos saben que es la realidad y todo eso,
porque la simulan. Crean su propio universo, sin dragones, sin gente molesta
que «dice que programa», y lo guardan en la imagen, que es imposible de
subir a memoria, en ningun otra variante de Smalltalk que la original….

XML/XSLT: Convierten al dragon a XML, lo pasan por un XSLT inintelegible, y
sale una lagartija mareada que ni recuerda para que estaba ahi, y nadie
recuerda para que se hizo eso, solo saben que XML es cool y que debe servir
para algo. Asi que luego le aplican un XSLT para ver si sale algo util, en
vano. La princesa queda serializada en algun XML pero no la pueden rescatar
porque el schema no se encuentra en ninguna parte.

SOA: Arman el contrato MatarDragon, arman el mensaje Dragon, Princesa, lo
envian por Indigo o el nuevo framework de IBM, alguien en alguna parte se
olvide de actualizar el contrato, todo aborta, todo desaparece, y todo el
departamento de IT se pregunta: «donde m… fue a parar ese mensaje??»

UML: Arman el diagrama de clases Dragon, Princesa. Tratan de aplicarle un
caso de uso Matar Dragon. Comienza sencillo, pero de pronto explota en
actores, diagramas de secuencia, diagramas de actividad. Se llena el disco
con diagramas, antes de poder llegar a alguna conclusion. En la version
86.12 de los documentos, alguien se da cuenta que hay que agregar un metodo
matardragon(). Gran discusion: será estático? será de la instancia? Cada
diagrama de secuencia, se hace tan ancho como Rusia, y su impresion amenaza
con deforestar el Amazonas… Finalmente alguien programa 10 lineas en
cualquier lenguaje, y mata el dragon. En el post mortem, se decide usar una
nueva version de UML, porque esta les quedo chica.

Software Libre: Si el Dragon adopta la GPL, está todo bien: bravo dragón, princesa mala,
la próxima versión de Hurd se llamará Draco, etc. Si no, dragón malvado, propietario,
no ético, dragón malo y perverso, todos nuestros post en todos los postnukes del
planeta, irán contra tí. Y el dragón sigue vivo…

Eclipse: Hay un plugin para matar dragones…. Dejenme ver donde estaba… El EasyDraconis,
hmmm… la semana pasada estaba…..Nones, no hay suerte, el ruso que lo hizo emigro, y ahora
vende campos de golf en Florida…. A ver, estaba el DracoEclipse…. No, anda con las versión
2.x… Habia un proyecto en http://www.eclipse.org, el Draco Eclipse Project, cierto, hay que bajar
el Eclipse Modeling Framework, en Visual Project, y cuatro proyectos mas, y con suerte
levanta…. .Nones, no tuvimos suerte, conflicto con otro plugin instalado de antes…
Veamos, ah…. WebSphere tiene un plugin… a comprar el WebSphere, muchachos…

EJB: Se arma un SessionBean que tenga el metodo matarDragon(), se arma la Home, Remote Interface
la Local, la implementacion….. Usamos XDocLet, bien, lo hace solo, en vez de armar todo eso por separado
(5 archivos de 1000 lineas), lo tenemos todo en un solo archivo (5000 lineas) con comentarios de generacion
de codigo para el XDocLet… Creo que algo mejoramos…. Bien, pasemos al Entity Bean….. hacemos todo de
nuevo, para el Entity… Seguimos, falta el ValueObject, vamos por el, unos comentarios mas en el XDocLet,
vamos que ya sale…. Ultimo momento, EJB 3.0 en puerta….. No, todo de nuevo, cambio…. El xml de descripcion
del proyecto tiene un error….. lo corregimos…. esa version solo levanta en las versiones del JBoss que terminan
en numero primo…. bueno, ya estamos…. Lo vemos la semana que viene, les parece?

Estos los agrego yo (ya que estoy…):

SVN: todos los programadores del proyecto eliminan al dragón de su código, pero al comitear surge problemas de merge entre las diferentes versiones del parche. Buscan algún tag estable, pero no tienen ninguno. Tratan de buscar el commit donde el dragón fue creado, pero para ese entonces otros programadores ya comitearon otros hacks que, en lugar de eliminar al dragón, lo mergearon con la princesa y el castillo en un sólo monstruo incontrolable que acaba devorándose todo el proyecto. El Proyect Manager aparece a última hora y ordena hacer un tag del nuevo código y cambiar el nombre del proyecto por «MonsterMaker».

Git: cada programador clona el repositorio y mata al dragón en su propio entorno. Luego, cada uno sube su fork a GitHub. Pero el dragón sigue vivo en el repositorio principal, y su dueño no acepta el pull request. Se come a la princesa.

Javascript: trata de matar al dragón, pero sólo logra arrojarle objetos DOM a mansalva. Tanta manipulación hace que el parser del navegador se realentize y así logran inmovilizar al dragón. Pero entonces en navegador alerta que detendrá la ejecución del script que está consumiendo todos los recursos, el dragón se acelera y mata a la princesa y al programador.

JQuery: se baja un plugin para matar al dragón, y lo hace. Le resulta tan fácil que se aburre y decide dejar la programación y dedicarse a la botánica.

Bash: el dragón se suicida al ver la espantosa sintaxis del script destinado a matarlo. La princesa huye aterrorizada.

Ruby: usando metaprogramación y una gem que encontraron en GitHub modifican la clase dragón, lo hacen inocuo y rescatan a la princesa. La comunidad de Ruby crea un framework web para regenerar dragones, usando nombres fashion y real-language. Fabrican remeras sobre el framework, y le agregan funcionalidad hasta olvidarse de su objetivo original.

Vim: %s/dragon//g

Emacs: la Iglesia de Emacs convence al dragón de no usar Vim y, a cambio, lo dejan comerse a la princesa. Sin embargo cuando Richard Stallman lo descubre usando Windows lo aniquila con un discurso de tres horas sobre las cuatro libertades fundamentales.

Las 11 tristes reglas de Bill Gates

Bill gates

Están aquí

Si bien se dan muchas veces esas cosas en esta sociedad, por lo cual en gran parte del mundo estas reglas son ciertas, al parecer Bill Gates se conforma con ser hábil en el mundo tal como está hecho, y no en ver uno nuevo. Al parecer se conforma con la injusticia, siempre que él pueda evadirla.

Me causó un poco de tristeza leer esto, que haya gente que piense así…

Para mi, el éxito debe ser una consecuencia del talento. Mi meta es el talento.

Hay una frase que rondó en mi cabeza hace un tiempo, «jugá el juego que ganes». Quizás Bill Gates es feliz con todo esto. Yo no, y por eso me resultaría dificultoso. Mi juego será otro, y voy a jugarlo bien, pero también voy a disfrutarlo. Y será el mío.

Java vs C# (Constructor)

Hola! Bienvenidos a este blog, en donde, paradójicamente, no pondré estúpidos artículos comparando las características de Java y las de C#, sino que pondré artículos de cosas que estoy descubriendo yo y que podrían llegar a serle útil a alguien (y a mi para acordarme)