Peter Seibel is the writer of the book Practical Common Lisp which is a magnific introductory tutorial to Lisp or specifically Common Lisp. I have read it from cover to cover and I can’t be more satisfied. Moreover, the book is freely avalaibe on internet. What can you ask more? Some months ago he pleased to make a linking bombing of his tutorial in order to appear the first hint in Google when you look for “Lisp tutorial”. Now is already on the top, but anyway is my little contribution to him. So, again, the link of the book: Common Lisp tutorial.
P. Seibel is currently writting Coders at Work where we’ll can see how think and program masters like D. Knuth, Peter Norvig, Frances E. Allen or Ken Thompson. Hope having it soon!
And to finish this bomb-post I see me in the must to copy one of his big fun posts:
Yesterday I was taking my 10-month old daughter to our parent/infant swim class at the Berkeley YMCA. She happened to be wearing a blue shirt. The woman riding down with us in in the elevator from the parking garage asked how old she was and said, “Oh, what a cute little boy.”
“Girl,” I said.
“Oh, sorry!”
“No worries. It’s the shirt. And the short hair.”
“I know, we’re all so color coded.”
As we were getting out of the elevator she said, “You know, I should be the last person in the world to do that … I teach feminist theory.”
Son las 5 de la mañana. Llevo programando 20 horas seguidas y las que me quedan. Ahora más que pensar me estampo contra punteros que me escupen posiciones de memoria corruptas. No funciona.
Todo comienza unos meses atrás en una soleada mañana de septiembre. Aquél día y animado siempre por la fuerza que emerge de mis caderas decido unirme a un grupo de dos chicas para realizar los proyectos de la asignatura. Danesas y guapas. Perfecto podría pensar yo en esos momentos; “introdujámonos de lleno en el seno de Dinamarca”. Fatal error.
Putas guarras. Putas guarras. Es lo único que puedo pensar ahora. Bien, asigno esta variable aquí, este puntero apunta a la otra variable allá, y aquí nos podemos encontrar con las vísceras al descubierto de esas malnacidas que me hacen estar sin dormir como un gilipollas, ¡putas guarras!
Repasemos lo acontecido. Nos tocaba realizar una medianamente importante aplicación. Ya habíamos hecho otros proyectos y ya me había tocado aguantar toda su ignominia anteriormente. Como habíamos tenido problemas con la elección del lenguaje de programación a utilizar, decido proponer C, el lenguaje por antonomasia. No lo saben. Bien, seamos productivos. Yo me encargo prácticamente de todo, ellas programan una pequeña parte, preparan los tests, y la memoria. Venga chicas a trabajar.
Llega el penúltimo día. Me dispongo a ultimar detalles en el código. A la par me conecto en el messenger a petición de una de mis compañeras para resolver sus dudas con C. A razón de lo que tenían que hacer, ambas tendrían que haber terminado 2 días antes y haberse dispuesto a ayudarme. Pero ahí están aún prácticamente sin nada. Me comenta la primera que no puede hacer funcionar el código debido a sus limitaciones con el lenguaje pero que en sí está todo hecho. Me pide que revise el código y consiga hacerlo funcionar. Lo abrimos. Cuatro líneas de código compilable, quizás ni eso, y lo demás comentarios. Me encuentro algo tal que así:
-Esto tiene que hacer esta cosa.
-Aquello otro debería hacer eso.
-Aquí llamo a tu procedimiento. Y esta función se encargaría de todo lo demás.
Muy bien maja. Miremos por la productividad, no la mencionemos a su madre no vaya a ser que deje el trabajo. La pido que me meta todo lo que ha metido en el main en una función. Me lleva 45 minutos de reloj para que lo logre entender. Me cuenta sus dificultades, “¡es que no sé pensar en estructurado!”. Tres horas después me viene con resultados. Yo por supuesto ya he tenido que centrarme en su parte teniendo que dejar de lado la mía. Abro el código. La función que tenía que hacer todo y no existía al menos ya tiene cuerpo. Tiene que recibir un array de elementos y devolver otro. Descubro que para leer el primero utiliza getchar()’s y el array jamás es mencionado en una sóla línea.
-¿Pero que haces poniendo getchar()’s?????????? -La pregunto inocentemente con unas cuantas interrogaciones menos.
-Sí, para leer los caracteres. Mira aquí viene, te paso este link. -Me responde convencida.
-¡Pero si es una función para leer caracteres del usuario!, y además esto está mal, esto también, ¡¿y qué leches me haces ahí?!
-¡Ay, jo! Lo estoy intentando. Yo creo que debería funcionar bien. No te sería difícil hacer que funcione. Además, sólo me da dos errores de compilación.
¡POM! Observo en mi taza o bien el fin del mundo o bien la llegada de un Tiranosaurio Rex. Me encuentro difusopati. Pero aún como un gran capullo tengo el coraje de responderla que ya me encargo yo y de que se vaya tranquilamente a la cama. Total la pobre lo está intentando. No es su problema ser subnormal. La otra de las dos quizás se encuentre en Indonesia.
Nada de su código es medianamente útil. Además estaba pensando en soluciones que harían el programa terriblemente lento. Me toca reescribirlo todo. Mis energías mentales escasean. No puedo pensar pero sí cagarme varias veces en ellas. Total que así toda la noche y todo el día y no consigo que todo encaje. En el transcurso de estas odiosas horas y dada mi escasez de alimentos me invento nuevas recetas que acaban estando deliciosas. ¡Pero el programa no funciona! Y tenemos que entregarlo hoy. Me hubiera sido más productivo no hacer nada o al menos dormir, pero me forzaba el sentido de la responsabilidad. Llegadas las 11 de la noche al límite de la fecha de entrega decido tirar la toalla y contar los problemas que hemos tenido con la aplicación. Yo ser un gilipollas que lo traga todo y ellas unas descerebradas. Abro la memoria que la descerebrada número 2 ha escrito, con ayuda de la nº1. Un documento word, tres páginas, feo, sin índice, sin secciones, sin formato, con fórmulas matemáticas en el editor de word, con errores y mentiras. Muy bien putas guarras. La base de datos para los tests también son penosos. Hasta aquí hemos llegado. En una increíble maniobra desconocida para mí de rebeldía rompo el grupo y le cuento al profesor mis verdaderos problemas. Ellas no tienen absolutamente nada que entregar. El profesor entiende completamente mi situación y me concede más días para realizar el trabajo. Lo finalizo apropiadamente y ayer día del examen consigo un 12 de 12. Las putas guarras a saber qué han obtenido. Pero las vi que tuvieron la cara dura de contestarle al profesor quizás una respuesta fallida con un papel marcado pegado en la puerta de la habitación del examen. En fin, me la suda y para mí todo está resuelto.
Pero analicemos este tipo de personaje femenino que nos encontramos comúnmente en las facultades de ingeniería. Podríamos denominarlo un parásito que se alimenta de los gordos y feos nerds. Supongo que me toca ser uno de éstos. Estas mujerzuelas de caras bonitas se aprovechan de la buena y fe y falta de sexo de los pobres ingenieros, a men de falta de experiencia con el género opuesto. Una sonrisita por parte de la fémina y el huesped realiza todo el trabajo. Sabemos que tienen novio, que viven en otra escala social y sabemos que jamás podremos tener nada. Es más, a medida que vaya pasando el tiempo y podamos comprobar su desfachatez las iremos odiando profundamente. Pero sus caricias ulteriores lo harán olvidar todo. Así estos culos bonitos acabarán la carrera sin saber ni puta idea habiendo usado a cuanto friki se pusiera por delante. Después en el mundo laboral tendrán más oportunidades porque seguirán encontrándose con gordos y feos nerds. Por contra sus compañeros pisoteados se pasarán todo el día picando código. Total que hay quien dice que los hombres manejan este mundo. Pero yo he dicho basta. Abajo la tiranía de la mujer bonita que nos subyuga entre bucles infinitos y punteros a ninguna parte. Tengamos la valentía para decirlas a la cara que son puramente gilipollas, no saben nada, y que no se merecen el título. Y para evitar problemas, la próxima vez te juntas con un homólogo marginado social tanto o más feo que tú. Ya sé porque el profesor me entendió “completamente”. Nerds del mundo, ¡uníos! ¡Putas guarras!
Con problemas de seguridad en mi residencia. Somos unos de 200 edificios, con alrededor de 10 habitaciones por cada uno, eso hace 2000 personas conectadas a una red común sin ningún tipo de cifrado. Con un simple programa ya puedes leer todas las conversaciones de los demás si estás en modo promiscuo así que me da que este año también voy a aprender mucho sobre seguridad informática.
De hecho ya he recibido 2 ataques y me han colado troyanos. Ayer-hoy andaba instalando Windows XP y el muy hijo de la gran puta se come lo que otros quieran por estar simplemente conectado. De hecho lo he tenido que formatear hasta 3 veces porque no me fiaba del todo si había conseguido limpiar por completo lo que me habían metido. Al menos he detectado dos programas espías, y ambos se han metido instantáneamente así que supongo que habrá aquí un capullo amargado con un lindo programita automático que sondea ordenadores desprevenidos. El muy mamón, ya paro con los insultos, incluso hizo apagar mi ordenador. Bueno, ¡gracias atacante que me recuerdas que debo usar GNU/Linux! Aun así, cierto es que tras instalar el Service Pack 2 no he detectado nada y no es justo criticar a este SO por esto pues son importantes actualizaciones de seguridad.
De todos modos es preocupante la integridad de nuestros ordenadores. Alguien con prácticamente ningún conocimiento informático puede infiltrarse o simplemente leer nuestras conversaciones, emails, o peor aún, descubrir contraseñas de acceso. Hoy leía un viejo post de kriptópolis que a su vez transladaba una interesante entrevista publicada en El País hecha a José Luis Díez Aguado, director técnico del proyecto de DNI electrónico donde éste, entre otras cosas, comentaba que el nuevo dispositivo sólo podría ser pirateado usándose en un ordenador inseguro… Me rio de la seguridad del típco ordenador con el típico usuario delante.
¿Conocen de buenos programas de filtrado en Windows?, ¿firewalls, antivirus, lo que sea? No obstante la solución a aplicar va a ser Linux. Más allá de que está más protegido, lo cierto es que por ser un sistema operativo minoritario, como también MacOS, Solaris, BSD… sencillamente tiene menos probabilidades de ser atacado fructíferamente.
El tema de la privacidad en una lan es complicado si no imposible lamentablemente. Y lo peor es que, gracias a la situación en que me encuentro, me entero que la autenticación de Wordpress no está cifrada !!##@!%! :( La solución de momento pasa por utilizar el plugin Admin-SSL, aún tengo que testearlo adecuadamente, de Haris.tv.
A aprender hackering.
Valid Flash XHTML:
<object
type="application/x-shockwave-flash" data="movie.swf"
width="400" height="300">
<param name="movie" value="movie.swf" />
<p>Optional Description (kind of alt)</p>
</object>
donde “movie.swf” se substituiría por el enlace deseado y sí, hay que incluirlo en los dos items, data y value. La etiqueta <embed> no lo acepta la w3c, así que se ha de eliminar (google video y youtube la tienen escrita en sus enlaces) y luego, y ni idea de porqué, si no escribes el data, en Netscape/Firefox no sale nada, y si no añades la segunda referencia, IE no te muestra el vídeo hasta que no se lo ha bajado entero.
Obtenido del gran tutorial Flash Satay: Embedding Flash While Supporting Standards.