martes, diciembre 26, 2006

Año nuevo, vida nueva (8)

Este 31 de diciembre viene el nuevo año... para los occidentales, o tal vez solo para algunos

Porque con ayuda de wikipedia se da uno cuenta que a veces en medio del etnocentrismo se le olvida a uno que el mundo es un poquito mas grande... De hecho, en un comercial de national geographic daban cuenta de que solo el treinta porciento de la población mundial celebraba el año nuevo en diciembre 31. Pero bueno, despues del dato que solo sirve para "descrestar visitas" me pongo a pensar ¿Porqué surgen estas celebraciones?...

Trato de encontrar que es común independiente de las culturas.

Y tal vez ya lo hice... :S

Reviso en el blog del msn y me doy cuenta que ya había escrito sobre eso, pero en aquel entonces solo había significado una especie de ciclo de renovación.

Pareciera ser que estos periodos son, de hecho, importantes para los simples sapiens-sapiens. Solo observando las expectativas y costumbres que tiene la humanidad durante estos periodos, (como es el caso de quemar el año viejo) se puede establecer que ,en primer lugar, representa un simbolo de olvido.
Sucede frecuentemente despues de una tragedia, que una de las estrategias es el olvido. Un ejemplo claro es las amnesias post-traumaticas, o cuando una nación instaura políticas educativas de olvido contra atentados terroristas, masacres y demás.
El Olvido a final de cuentas se convierte en un renacer. Convivir con recuerdos o imagenes que van en contra de nuestros ideales resulta horrible. Quemar el "yo" del año pasado resulta siendo tan útil como eliminar fotografías del holocausto nazi... nos hace sentir mejores personas.
Hoy ademas de eso se me ocurre otra idea al respecto. El año nuevo sirve de continuo recordatorio del paso de tiempo, y su orgiástica celebración un vano intento de no prestarle atención. Igual sucede con los cumpleaños.

El paso del tiempo, solo evoca la finita existencia... y que mejor forma de olvidar aquel asunto que con alcohol, comida y música?
............

Dejando a un lado el existencialismo, tal vez nunca me había enfrentado a un próximo año tan critico. Por un lado comenzara el proceso de búsqueda de practica. Y si. Terror seria la palabra correcta a la sola idea de terminar lustrandole las botas a un imbécil analista que con algo de éxito paso las matemáticas discretas para dedicarse a aprenderse las buzzwords del momento.

Y esque lo veo venir... Terminando en la odiada practicidad de aquellos que se sacian de dopamina a punta de sueldos módicos con los cuales invitan a sus noviecitas-trofeos-de-caza a andar en sus twingos-clios mientras piensan "que exitosos son" cuando la realidad es otra.

Cambian una directa satisfacción profesional por la indirecta satisfaccion fruto de acumular riquezas. Viviendo en el mas puro materialismo y chauvinismo de prototipicos chimpances.

Pero bueno... mejor cuento hasta diez antes de explotar pensando en aquellos personajes o en la terrible posibilidad de terminar como ellos.

.......................

Como resulta costumbre siempre... daré las acostumbradas palabras tan útiles como rezos cristianos. ( eso es... un prospero año como yo lo haria)

Le deseo a mis amigos algo de felicidad fruto del trabajo duro (tal vez la mejor felicidad que desearían tener)...

Los que se vayan a practica, que consigan una bien dificil, pero cuando la terminen se llenen de orgullo al contar todos los problemas que tuvieron y como los superaron

Los que siguen vidas normales, les espero algo de anormalidad que les haga un poco emocionantes sus existencias.

Y a los que no aplica nada de lo anterior, pero que igual se hacen llamar amigos... un dinerillo extra para que me inviten a una que otra cervecita. y un live long and prosper al mejor estilo de Star Trek

Y a la humanidad?
Unión... para llevar las utopías científicas al extraño mundo de la realidad

A mis enemigos... sífilis! o tisis!
pueden escoger! ;)


..............
no tildes... teclado gringo y me da pereza

viernes, diciembre 15, 2006

Cosas que nunca cambian... otras que tal vez si.

Típica entrada de blog con frase de cajón.

Hoy hablaba con una amiga sobre youtube... Mas bien, hablábamos de lo frívolo del entretenimiento en Internet (eso si se le puede llamar entretenimiento a ver un gato cortado por una espada; a tener 30 conversaciones sobre nada en messenger o en su defecto leer blogs de Internet :S)

Como siempre, me es inevitable pensar en los 2 o 3 libros de sci fi que he leído, por no decir que me resulta difícil salirme de las mismas 2 o 3 ideas recurrentes... Esta vez pensé en los autos de Fahrenheit 451 como también en el resto de artilugios diseñados para mantener una concentración irreflexiva. En la locura del pensamiento de Erasmo, y por ahí derecho en como todo eso se relaciona con estar jugando vez tras vez buscaminas.

Es eso nuevo?

Responderé eso después...

Recuerdo mis clases de literatura en 11... especialmente recuerdo un cometario que hizo mi profesor Jose Mario sobre la literatura universal. Parafraseando lo que él decía, las obras de literatura Universales tal vez no tienen tiempo ni lugar, da lo mismo que se cambie a Ulises blandiendo una espada por "una porra de puro guayacán". En cambio, contienen constantes del espíritu humano... el heroísmo de un Ulises, Un enamoramiento Wertheriano o la humana debilidad de un Hamlet contemplando la calavera.

No sé que tan cierto haya sido lo que decía mi profesor. La verdad soy un desentendido de cuestiones literarias, sin embargo, en lo poco que he leído a veces me encuentro un párrafo o dos que me aterrizan ante la idea de "este es un mundo totalmente diferente al de hace 30 años".

Lebedev, el intérprete de turno del Apocalipsis en "El Idiota" de Dostoyevski, surge con la idea de que el progreso (encarnado en líneas férreas) hace esto del mundo.

"El Mundo se vuelve demasiado estrepitoso y agitado, ya que no queda paz para el espíritu"

Puede que el estrépito de la frivolidad no sea igual al estrépito y agitación de un medio de transporte de 1800, sin embargo, la idea de que el progreso limita las posibilidades de "paz para el espíritu" no es nueva...

A veces me sorprende el poco tiempo que tengo para pensar... si no es por el diario viaje en bus no sabría que escribir acá.

martes, noviembre 28, 2006

Mi primer portatil

Pues si, ayer por fin llego mi portatil :D

Es un Dell Inspiron 1501

Procesador dual AMD Turion 64 de 1.8Mhz
2 GB de RAM
80 GB de disco duro
Una ATI RADEON xpress 1150 de 256 MB
Unidad lectora-quemadora de DVD's

Con gran esfuerzo, por fin consegui un portatil con ayuda de mis padres. Todo el dinero ahorrado durante la monitoria de arquitectura del computador se fué en este :)

Cosas buenas:

Costo beneficio.

Ahi no se puede decir nada... este computador salía mas o menos a 1000 dólares y con un descuento de 10%, se bajó el precio a 900 algo. Lo cual no pude ver en ninguna otra marca de computadores

Prestaciones

Pues haber... yo no se para que usa la gente los portatiles, pero ya he hecho varias cositas:

1. Guitar Rig funciona!! :D
Guitar Rig es un poderoso software que hace las veces de cabina-pedalera-estudio. Y lamentablemente dado que son efectos en tiempo real tiene unos requerimientos medios-altos.

2. Video
No soy un experto, pero es muy bacano ver los DVDs de zeppelin acostado en una hamaca :D

3. Juegos
Pues la única prueba que hice fue coger el videojuego mas actual que poseia (Hunting unlimited 2 lol) y funciona bastante bien.

Lindura
:P

No es un mac, pero para mi esta lo bastante bien :D

Ahora si cosas malas!!!
:(

BASURA >:(

N
o hay nada mas horrible que la publicidad y servicios no solicitados. A mi personalmente me parece un irrespeto inicializar windows y tener 380 MB de RAM ocupadas! (viniendo uno de un equipo con solo 256 se vuelve uno amarrado :P) y para colmo de males con puros programas trial (o en su defecto con licencia limitada como el caso del norton) únicamente para 2 meses.

Pues bueno, uno entiende que el usuario común es un completo imbecil, pero si algo me parece amoral es aprovecharse de los imbeciles... para que va querer un imbecil SQL Server!!!???

En fin, para todo esto la solución fácil...
format c

Instalación Linux

Para la instalación de Ubuntu tuve el problema de la detección del disco duro, pero si alguien necesita saber es fácil (explicaré lo mas sencillo posible :P)

1. Cambiar el orden de boot en la bios

F2 para entrar, y en la parte de boot se presiona 4 y luego f10 para guardar cambios

2. Forzar deteccion de disco duro

Cuando aparesca el menu de instalación presionamos f6 y ya con esto agregamos la opción pci=nomsi a la lista de opciones.

3. Realizar instalación común y corriente

No hay misterio.

4. Inicializar por primera vez

Estando en el menu del GRUB presionamos 'e' sobre la instalación de ubuntu y despues sobre la linea kernel la editamos y agregamos pci=nomsi, 'enter' y despues 'b' para hacer el boot

5. estando en linux debemos modificar /boot/grub/menu.lst (o algo asi) y agregar pci = nomsi a las lineas de kernell de ubuntu.

y listo! :D

viernes, noviembre 24, 2006

Psicoanálisis de la linea de comandos y el código abierto

"Si suspiras al recordar aquellos días cuando los hombres eran hombres y escribían sus propios drivers. Si te encuentras sin ningún proyecto interesante y te gustaría tener un verdadero sistema operativo que pudieras modificar a tu gusto, si te resulta frustrante tener solo Minix. Entonces este artículo es para ti".

Con esta "frasecita" inicio Linus Torvalds a reclutar, tiempo después, comenzó la leyenda.

Como buen noob de Linux, he estado leyendo uno que otro escrito subversivo en esta pagina. (súper interesante hay traducciones de unos escritos de Djkstra... wow!! Súper recomendados) Después de quedar algo anonadado con algunos detalles técnicos de los formatos .doc, programitas como deFrag y el famoso ScanDisk confieso que tal vez hasta termine siendo otro evangelizador.

Recuerdo que hace algún tiempo le preguntaba a algunos amigos medio fanáticos "ingenuamente" porque linux podía decirse que era mejor que Windows. Sin sorpresa me tope con las respuestas de siempre.

"Los de ingenieros de Microsoft son ineptos"
"Linux es libre, y por tanto mas gente está solucionando los bugs"
"No hay pantallas azules"

Dada la ferviente pasión de algunos de esos amigos por linux me sorprendió lo poco concluyentes de sus respuestas.

Después alguien me hablo del KISS (keep it simple stupid) como típica política de desarrollo en sistemas UNIX y esta me bastó como respuesta. Al tiempo leyendo un articulito de Eric Raymond (el que escribió el famoso HOW TO BE A HACKER) me enteré de otras practicas de desarrollo (liberar rápido, código atómico y un desarrollo evolutivo... entre otras) que sistemas "privativos" no poseen y que a la final han resultando best practices.

Porque los supuestos fanáticos no supieron decirme las ventajas? falta de conocimiento?... no creo, Hasta yo, con mi corta experiencia en sistemas operativos y en especial manejando Linux puedo decir algunas cosas mas de porque Linux es mejor. (Por solo dar un ejemplo... el hecho todo es un archivo).

Será la estabilidad?

Esa es de las cosas que más escucho decir, que la estabilidad esto, que la estabilidad lo otro. A mi la verdad no sé si es por falta de experiencia pero me he encontrado muchas veces con el linux bloqueado. Y en cuanto a rapidez, la única forma con la que pude hacer que linux corriera decentemente fue con xubuntu como distribución.

Lamentablemente, padezco de la enfermedad de encaminar mis razonamientos siempre hacia el libro de turno, y dado que el libro es (de nuevo) Te Second Self, creo que hay una explicación sicoanalítica prestada de este libro jejeje.

Para nadie resulta un misterio cual resulta ser el arquetipo del programador, o en su defecto, del usuario Linux... interés por la programación, videojuegos, RPGs y a veces literatura del mismo tipo (lo cual es descrito por la autora). Según Turkle estas aficiones tienen en común una necesidad de control, es decir, al programar uno esta a cargo de que se hace (así lo que uno escriba pase por 2 o mas compiladores y/o interpretes), el RPG esta supeditado a unas reglas fijas (nada mas frustrante que un master demasiado laxo) y el videojuego tiene también las reglas que decidió el equipo de programación al realizarlo. Así también, la línea de comandos (shell) de linux, resulta mucho más gratificante para aquel que desea control.

La línea de comandos permite al usuario darle la sensación que se comunica con el sistema operativo en su mismo lenguaje (así esto no sea verdad). Permite también que él elija todas las opciones con las que se ejecuta el programa, cuando se lanza pero específicamente cuando termina, cuando lo para. La labor de planeación de procesos del SO se oculta en cierta forma al utilizar el shell, el usuario puede decidir si parar el proceso y al hacerlo se siente bien consigo mismo. Siente poder.

Así también, el código libre da la idea de que la maquina es un ente totalmente comprensible. No hay cajas negras, y así nunca vaya a leer el kernel el usuario puede, en principio, modificarlo a su antojo y entenderlo. El entendimiento genera sensación de control y este control le da poder.

Bueno esto tal vez quede como cortado pero la verdad ya no se me ocurre que decir y concluir porque igual uno podría dar vueltas y vueltas:P

-------------------------------
Ya arregle el link, gracias federico

jueves, noviembre 16, 2006

Transparencia o Invisibilidad?

PRINT frase

todavia recuerdo... esa fué mi primera experiencia de programación en el colegio. En QuikBasic. Me puse super feliz cuando funcionó! :)

En esa época, mi conocimiento sobre lenguajes compilados, interpretados, mixtos, imperativos, funcionales o incluso, orientados a objetos era simplemente nulo. En esa época suponia que cada linea de código de quickbasic correspondia a una instrucción del computador, y por tanto, la eficiencia de un programa se media en el número de líneas que se ejecutaban.

Despues de muchos programas con miles de gotos, llega uno a la universidad y el primer lenguaje que mencionan, o con el que lo ponen a programar es... karell.

Decepción... pasar uno de programar en un "lenguaje de verdad" a mover un pinche robot. Pero bueno, esto solo tenía como objetivo introducir la programación orientada a objetos, porque igual luego nos enseñarian Java.

Pasó el semestre, y a este le siguió lenguajes de programación. (que era mas bien algo asi como... conoscan c y un poquito de c++ con algunos ejemplos de lenguajes "raros"). Uno se daba cuenta que realmente java era como una empleada doméstica (recogía la basura, y se encargaba de que todo "estuviera bien")

Despues, con otras materias, uno puede remitir casi directamente cada sentencia de c a un conjunto ensamblador pero en forma paralela al conocimiento de este mal llamado "bajonivel" se siguen haciendo las practicas en java... Porque? porque es fácil.

Ultimamente, despues de varias discuciones sobre lenguajes y herramientas, y en parte gracias a cierto articulo de Joel on Software donde describía como el manejo de apuntadores es un buen indicador de la capacidad de abstracción, se cayó en un punto álgido.

Es acaso la aptitud en el manejo de herramientas de alto nivel (llámese J2EE, eclipse SQL server y demás) elementos suficientes para juzgar la capacidad de un programador-informatico(1)?

Pienso que no.

En primer lugar, que es la aptitud para manejar herramientas? es acaso este un indicativo de imposibilidad de manejar otras? o por el contrario, es este un indicativo de capacidad de manejarlas? Siendo totalmente objetivos no.

Creo que el indicador realmente importante no es que herramienta utilice sino el saber lo que ocurre tras bambalinas, es decir, lo que llamare transparencia versus invisibilidad.

Que es transparencia e invisibilidad? ambas podria definirlas como una forma de ocultar los cómos interiores, sin embargo a diferencia de la transparencia la invisibilidad ignora la siquiera existencia de los cómos

El ejemplo ya está dado y es el del joven dieguito con su interpretador de quickbasic. Para él, utilizar PRINT resultaba invisible. la siquiera imaginación de la existencia de un como le resultaba extraña. Simplemente voila aparece un mensaje en pantalla. El comportamiento transparente, en cambio, es el del programa en java que pese a estar utilizando una lista se sabe por algo de las estructuras de datos vistas de c, que debe estar haciendo uso memoria dinámica, y que pese a que no se conoce como se implementan especificamente las operaciones se pueden intuir ciertas propiedades.

Siendo asi, creo que cualquier programa que permita hacer invisible su operación puede resultar nocivo para alguien que se digne llamarse cientifico en computación o ingeniero. creo que se compararía a un fisico que resuelva bien las ecuaciones sin entender los conceptos... es decir... a la hora de hablar de lenguajes de programación consideraría que haskell como lenguaje invisible puede ser tan nocivo como java, ruby o c++.

El caso importante es que existen herramientas que permiten ser aprendidas mas fácil en forma invisible que otras (particularmente me cuesta entender como alguien podría trabajar en prolog sin conocer el sustrato lógico :P) asi tambien existen herramientas que resulta imposible aprender en forma invisible (o a veces hasta transparente) como lo son el caso de lenguajes de bajo nivel, sin embargo tienen la posibilidad de hacer visible lo invisible :P

(1) Odio la palabra informático... no se me ocurrió otra :P

(*) creo que lleve demasiado lejos la metafora
(*) Proximamente... algo sobre el primer seminario nacional de ciencias cognitivas
(*) ortografía asquerosa... despues la reviso... LO JURO :P

goto(1/0) and :beyond :P

miércoles, octubre 25, 2006

Ingeniería de software (8)

Tal vez medio copiando a Fuckowsky, o a Builes...
Y es que porqué no? El internet se convirtió en la imprenta personal de cada persona, lo cual me recuerda cuando Burns compra los medios de comunicación... jejeje.

Ahora bien

En un principio... cuando todo era caos, oscuridad y tubos de vacío. La gente que trabajaba con las computadoras podía reducirse a un número mínimo. Los trabajos podían ser desde desencriptar ENIGMA, como también calcular tablas para lanzamiento balística. Turing y los demás de la época estaban a un nivel de heroísmo igual al de cualquier otro soldado que hubiera ayudado a ganar la guerra

Posteriormente, la llegada de la integración a larga escala, permitió a cada cual tener la posibilidad de poseer su propia computadora. Aquellos que estaban dispuestos, podían comprar un kit al mejor estilo "hágalo ud mismo" y construir su computadora. La programación era la tarea fundamental.

Poco a poco, los genios del mercadeo y del dinero fácil se dijeron a sí mismos... "Porque no le damos una computadora a todos los seres ineptos???". Y claro, aquí estamos. Millones de hindúes ahora se dedican a hacer por outsourcing 2 cosas.

Programar
Servicios de CallCenter

La imagen es clara. Una sala con 80 computadoras 386 para que los programadores echen código al ritmo del tambor o del látigo (al mejor estilo de barco de remos persa) y unos cuantos salones al lado, otros hindúes, adiestrados para hablar "perfectamente" el idioma que les toque, recitando la misma retahíla de preguntas una y otra vez. (Conecto ud la computadora?, está seguro que esta encendida?)

No es curioso, que con la llegada de las "aplicaciones" el mundo de la computación de convirtió en un mundo totalmente oscuro para el no conocedor; Sin embargo Esta opacidad(termino tal vez mal traducido del Libro the Second Self de Sherry Turkle) no debería de esperarse del supuesto conocedor.

Inquietante, por no decir terrorífico resulta el hecho de que la opacidad de las computadoras se transmitió cual virus de ebola a los supuestos conocedores. Cada vez se encuentran mas "ingenieros de software" que no saben programar. Peor aún, hay algunos que creen que no lo necesitan.

Al parecer, de una u otra forma, surgieron ciertos mitos sobre la relación modelación-ingeniería de software. En algún momento, de pronto con la llegada de UML, quien sabe, la gente comenzó a imaginarse al ingeniero de software de una forma surreal.

Llega la pequeña empresa con algunos requerimientos-requisitos; sin embargo, como los pobres y asociales programadores les queda imposible comprender que es lo que quiere aquel gerente de saco y corbata. Lo mandan donde el "ingeniero de software". Este hace uso de sus tremendas habilidades para "elicitar requisitos", ponerlos en dibujitos, y escribir un montón de carreta institucional en un montón de "documentación" para que los programadores hagan el trabajo sucio. El de obrero.

Esa imagen viene tal vez de la falsa analogía con la construcción: "mientras los obreros pegan los ladrillos, los ingenieros hacen planos". Pero... ¿Porqué es acaso es falsa esta analogía?

2 razones principalmente.

UML es un mal lenguaje de modelación... es ambiguo, "dependiente del contexto", sobre específico.

Antes de decir porque UML es un mal lenguaje de modelación se deben diferenciar dos cosas. El uso pretendido del objeto en cuestión y el uso real. En este caso me limito al uso real, en el cual UML pasa a convertirse en un conjunto de "formas de hacer dibujos" (eliminemos el concepto formal detrás de él y lenguajes de restricciones como OCL).

Estos dibujos (llámense diagramas de secuencia, casos de uso, diagramas de clase... blablabla) caen en el problema descrito por todos los lenguajes gráficos, el modelo es específico y no permite abstraer la situación proyectada. Tomando las palabras de un comunicado que hizo Djkstra alguna vez, con el modelo gráfico nunca se puede dibujar el triangulo arbitrario, siempre que se dibuje el triangulo será obtuso, rectángulo, isósceles... igual sucede con un modelo de clases o de casos de uso... no se abstrae el hecho transaccional de producto = factura sino que hasta se requiere dibujar un muñequito que será el vendedor!!!! (Soy yo el único que cree que un ingeniero no tiene porque quedarse dibujando muñequitos en el trabajo?)

Cómo sería el plano de construcción civil UML? Tal vez los lugares donde van las puertas tendrían muñequitos de palitos abriendo y cerrándolas para mostrar la "funcionalidad" (sino los obreros como saben que ahí hay una puerta?) Habría "notas UML" que dirían cosas como (la gente no camina en los techos) (esta viga debe ser de concreto) (este lado es arriba)

A diferencia de UML, el plano de construcción (y me refiero al plano ingeniería, no al arquitectónico) este refleja lo que se piensa realizar. Sin entrar en detalles que a la hora de la construcción resultan inútiles...

Perfectamente la inclusión de tanto lenguaje natural en el modelo UML lleva a interminables discusiones que se limitan a la misma ambigüedad del lenguaje natural. De hecho, nunca he entendido siquiera como un lenguaje de modelación puede siquiera imaginar tener lenguaje natural en forma embebida!!

UML no permite verificación ni evaluación

A diferencia de los métodos formales de Modelación como Z, Los diagramas UML no permiten verificación formal. No se puede establecer si en efecto los muñequitos que se dibujaron en el caso de uso reflejan el escenario a modelar.

El plano de construcción permite calcular cargas, escoger materiales, redefinir dimensiones, calcular centro de masa, ocupación máxima... Z permite realizar demostraciones sobre partes o la totalidad del "programa" y dan cuenta de la "correctitud".

Para finalizar y Siguiendo uno la definición de La Wiki...

"La Ingeniería de software es la rama de la ingeniería que crea y mantiene las aplicaciones de software aplicando tecnologías y prácticas de las ciencias computacionales, manejo de proyectos, ingeniería, el ámbito de la aplicación, y otros campos."

Notación no es ciencia
UML es notación
UML no es ciencia ni la ingenieria de software UML


sábado, octubre 21, 2006

Mudanza

Bueno, al parecer me voy a mover para Blogger... es como mas lindo, no se myspace quedará en el pasado :P