100DaysOfCode: día 11 – refactorizando

Ayer no pude dar continuidad al reto. Una lástima pero estuve bastante ocupado con la administración de sistemas y terminé cansado, sin ganas de más.

Hoy he estado probando algunas ideas con la máquina de estados léxica de ttt, jugando con varias ideas con las que creo que ha quedado bastante escalable. También he escrito otra escena más de la obra que tengo que representar este año y que estoy empleando como fuente de datos para el programa.

Mañana espero poder alimentar un programa y comprobar si lo que he diseñado es factible o no.

Por cierto que veo que necesito pero ya poner en línea el acceso web al repositorio git y a los paquetes Debian. No es indispensable pero me ayudará en un plan que tengo a medio plazo para mi vida laboral. Iba a decir carrera pero me ha entrado la risa. ¿Carrera hacia dónde? ¿Al abismo? Para eso no hacen falta tantas alforjas. :-)

100DaysOfCode: día 10 – máquinas de estado

Hoy es domingo y he hecho lo que he podido programando. Tenía mucho que hacer en casa y no he tenido oportunidad de dedicarme mucho.

He seguido con la parte del código del analizador léxico de los códigos teatrales tratados y me ha salido una máquina de estado muy cuqui porque algunos elementos se extienden más allá de una línea y he preferido ésto a tener que pegarme con expresiones regulares multilínea.

Las máquinas de estados son mi construcción favorita de siempre en programación. Es algo muy raro pero el cosquilleo que siento con ellas es único. Al principio escribo una barbaridad de código y luego, poco a poco, lo voy optimizando hasta dejarlo en su mínima expresión. Es análogo al huevo y la gallina y me lo paso muy bien. Que sí, que ya hay analizadores léxicos de sobra; he usado lexx para hacerme, años atrás, mi propio lenguaje de programación interpretado y tuvo su encanto para aprender a usar la herramienta y centrarme en lo que hacía el lenguaje en sí: campos calculados en formularios de entrada de datos. Excesivo pero gozoso.

En fin, que tengo aún otra máquina de estados más en la parte sintáctica y estoy deseando ponerme con ello.

100DaysOfCode: día 9 – completando partes

El sábado ha sido un día raro para conseguir tiempo para este reto. Ignoro si el que lo propuso tuvo en cuenta los días laborables pero presumo que no. Tampoco es que me parezca mal. Sólo es más complicado.

Me cundió lo suficiente como para que uno de los componentes de ttt estuviese completo: tests variados, código (por supuesto) y documentación. Que es como quiero hacer las cosas. Sí, es más lento. Pero es más mejor. :-)

100DaysOfCode: día 8 – poco que rascar

Ha sido un día extraño y sólo le he sacado algo de partido a la mañana, cuando he estado retocando cosas de administración. Hoy sólo dejo constancia aquí de que estado creando la máquina de estados para el analizador síntactico de ttt y las reglas para su analizador léxico. En papel han quedado bien pero el código apenas ha avanzado.

Mañana más.

100DaysOfHomeLab: día 2 – wordpress, las cachés y su prima

En este servidor, esferas.org, ya tengo cuatro instalaciones de wordpress independientes de todo excepto de la base de datos. El servidor no tiene una gran configuración hardware por lo que intento que la cosa vaya lo más fluida posible. Y hoy me ha dado por revisar el asunto de los cachés. En la página de salud del sitio, en el que siempre me dicen que hay uno o dos o tres elementos a comprobar están insistiendo mucho en que necesito un caché de objetos persistente.

100DaystoOffload: día 3 – aclarando conceptos sobre Mastodon y ActivityPub

Ayer estuve hablando con Ángel sobre el tema del fediverso y las diferencias entre Mastodon y cualquier servidor ActivityPub. Voy a transcribir aquí su respuesta para que quede constancia para el futuro.

En el principio todo era caos y llegó el ActivityPub que es una especificación para mandar mensajes de un usuario a otro, más o menos como un software de mensajería instantánea. Cada usuario tiene anunciado en su objeto JSON Person un URL que acepta HTTP POST en el que puedes escribir mensajes y que se llama Inbox. Cada vez que escribes una genialidad, tu obligación es clavarle en el Inbox de todos y cada uno de los pájaros que un día te dijeron (con el mensaje apropiado) que te quieren seguir.

Entonces alguien se dio cuenta de que si te siguen cienmil pájaros en la misma instancia, eso supone enchufarle cienmil mensajes en cienmil conexiones HTTP POST, y que eso es una puta locura. Entonces inventaron una cosa que se llama sharedInbox: es un Inbox único POR INSTANCIA y que también va anunciado en el objeto Person de cada usuario. Una vez hecho eso, tú solo escribes 1 mensaje en ese Inbox y el software se encarga internamente de distribuir tu mensaje a los cienmil pájaros que te siguen dentro de la instancia. Todo guay.
Fíjate que aún no he mencionado nada de «instancias federadas» ni «tags».

Pero entonces al tipo del Mastodon (a John Mastodon :-) se le ocurrió una cosa: ya que me entran por el sharedInbox chopomil mensajes para distribuir a mis hijitos, ¿por qué no mostrar TODO ESE CHORRO en un feed especial? Y va y lo llama «Federated timeline» porque esto es el fediverso y eso. Así que eso es un «efecto lateral» de los buzones compartidos. Está guay, pero no es parte del protocolo, o no al menos de cómo estaban los nodos ActivityPub pensados desde el principio.

Y después viene lo de los tags: ya que tengo el chorro de mensajes y muchos de ellos vienen marcados por hashtags, ¿por qué no poner búsquedas por hashtag, y después, por qué no seguir a los hashtags directamente? Guay, buena idea, pero tampoco forma parte del protocolo, aunque no está realmente «violándolo». Es más, sí que está saltándose parte de la especificación: cada hashtag, dentro del mensaje ActivityPub, tiene un URL que apunta a DENTRO DE LA INSTANCIA QUE LO GENERA donde se supone que están almacenados los tags. ¿Qué hace Mastodon? Tira ese URL a la basura y lo apunta hacia dentro de sí mismo.

Snac no tiene buzones compartidos. Por tanto, no hay un timeline federado ni hay hashtags a los que seguir.

Menciona a snac como ejemplo de servidor ActivityPub que es mucho más sencillo de instalar y probar que cualquier otra cosa de las que abundan en el fediverso. De lo hinchados que están esos entornos y el hostión que van a darse si tienen éxito de verdad hablaré otro día. Sí que reconozco que haberme acercado al fediverso desde Mastodon ha desvirtuado mucho mi idea sobre ello. He aprendido mal. Pero todos tranquilos, que eso tiene arreglo.