Read Only Memories

Let me annoy you in inglés and español.

Numeritos

El siguiente es uno de los problemas más entretenidos que he encontrado recientemente en uno de esos libros de «Acertijos y Problemas para resolver con computadora».

Demuestre que si un jugador de béisbol registra un promedio de bateo de .334, tiene que haber tomado al menos 287 turnos al bate.

El énfasis en demuestre y al menos, es mío.

Me pareció entretenido porque no es de búsqueda exhaustiva (típico en esos libros), e involucra la frontera entre números racionales e irracionales, dos infinitos diferentes.

Porque computación es matemática...

Verificar vigencia de firmas DNSSEC

Cuando una zona DNS está firmada con DNSSEC, a cada registro (RR) en la zona, se le agregan uno o más registros con las firmas digitales (RRSIG). Cada RRSIG tiene una fecha de inserción (inception) y una fecha de caducidad (expiration). Cuando un DNS de resolución (resolver) consulta la zona para obtener los RR y solicita firmas DNSSEC, una de las cosas que hace es verificar que los RRSIG estén vigentes.

¿cómo puedo asegurarme que estén vigentes?

I (used to) do (a lot of) OpenGL

Not many people know that I used to do a lot of OpenGL back when I was way younger. I'll say about three or four people know that I wanted to do my MsC in Computer Graphics and Multimedia Applications, but «things happened» and I ended up switching back to good ol' Programming Languages (again).

Just today this showed up in my timeline

Since the Orange Combinator meetups have been suspended due to the COVID-19 situation, I thought I'd try to write an equivalent program using Haskell.

and this is what I ended up with

Pirata, como tu teoría del maya disléxico

Lo único gracioso de pensar que la dislexia hizo que un maya escribiera 2012 en lugar de 2021, sería escribirlo en Comic-Sans.

No me tienes que explicar qué es un troll, y que ahora tienen más tiempo libre para ejercer su encomiable labor en pro de la hipertensión de otros. Tampoco es necesario explicar el valor del humor como un mecanismo de trascendencia que va más allá de las ideas preconcebidas sobre el lenguaje y la semiótica. La comedia es tragedia más tiempo, y no tengo tiempo para la tragedia que eres creyéndote comediante.

Pero me distraigo, y no hay que distraerse con trolls...

click para ofenderte

Posted
Examen dentro de un examen

Hasta que entiendas recursión...

El uso de recursión, tanto para definir algunas estructuras de datos, como para expresar algoritmos que resuelven problemas de computación, tiene un lugar especial en mi corazón.

Las definiciones recursivas resultan compactas, libres de efectos de borde o estado mutable, y terminan presentando un problema complejo como un conjunto de relaciones entre versiones más simples del mismo problema, o de problemas más simples.

Y eso es algo que hay que enseñarle a las nuevas generaciones.

click para el examen que no pudo ser

De Subversion a Git

Me encontré con la necesidad de migrar varios repositorios Subversion a nuevos repositorios Git. La migración necesitaba conservar los nombres de los autores de la mejor manera posible.

click para la receta

Continuations

Disclaimer

It's been a few years since I've tried to explain continuations to anyone, much less in English. This is my take on what, why, when, how, and WTF when using continuations for fun and profit. I'm probably not the first one explaining them this way, and I've borrowed ideas from many places.

I hope former CI3641 and CI4251 students who heard the hand-wavy «I want a sandwich» explanation realize I was trying to convey a very complicated topic that wasn't worth mentioning in class. Also hope former CI4721/CI4722 students feel my pain at having to focus on less interesting non-functional code generation instead of vastly superior continuation based code generation for functional languages.

Comments are welcome at the usual e-mail addresses.

continue clicking