Archivo de la categoría: Tecnología

Un puñado de vídeos de thEpOpE – Sergio sobre el «formato de ficheros» de las cintas de Spectrum: la crisis de los 40 friki versión (parte 3)

Posts in this series
  1. Volviendo : la crisis de los 40 friki versión (Parte 1)
  2. El sistema de ficheros del Spectrum : la crisis de los 40 friki versión (Parte 2)
  3. Un puñado de vídeos de thEpOpE - Sergio sobre el "formato de ficheros" de las cintas de Spectrum: la crisis de los 40 friki versión (parte 3)

Gracias al chat de telegram de encontré el canal de thEpOpE – Sergio el cual tiene muchos videos muy agradables de escuchar (como odio los youtuber/streamers chillones) , pero a destacar en este articulo recomiendo:

Y nada disfrutarlos y darles las gracias a el en algún comentario.

Proyectos que son una mierda por las «tecnologías» que usan

Tengo un blog y aunque las redes sociales libres como mastodon ya permiten textos largos….pues me voy a explayar aquí porque tengo un blog.

¿Por qué Yacy se come los mocos? Si no conoces Yacy, te tendría que flipar porque intenta desde hace años ser la alternativa libre y descentralizada al buscador de google. Y desde hace años se come los mocos y esta ahí sin ser lo que tiene que ser.

¿Pero por que se come los mocos? Pues por Java, en su momento (2003) cuando nació pocas alternativas había, pero el camino que tomaron fue malo malo, en vez de intentar «hacer un protocolo» que era tan simple como «ya tenemos definido todo y funcionando, vamos a picarnos servidores de Yacy en otras cosas menos apestosas que Java» pues ahí siguen dandose de cabezazos, es como si torrent no hubiera salido de C++.

Hay ejemplos de como cambiar de lenguaje (o al menos tener servers compatibles en otros lenguajes) le ayuda mucho, como por ejemplo SQLite que aunque no sea un server el pepinazo que pego el poder tenerlo en otros lenguajes le dio cuerda para mucho rato.

Gente de Yacy no se si me oís pero necesitáis un server en Python como el comer.

Pues otro que veo que se esta pegando la hostia y enterrandose así mismo es Sandspiel  Studio , lo conocí hace algunos meses y me parece la hostia, aunque parezca un juguete, lo que plantea es bestial, es coger el viejo juego de arena que tanto flipo a la gente hace años y darle un pequeño lenguaje de programación.

Y eso hace que lleguemos a agentes autónomos (pequeños pixeles de colores con una inteligencia limitada) que se convierten automáticamente (y para facilidad visualmente) en sistemas emergentes, vamos, de una «tonta» hormiga ves que un montón de ellas un complejo meta-organismo llamado hormiguero. Ejemplos clásicos son los autómatas celulares, que por cierto se pueden implementar en Sandspiel Studio.

Porque lo interesante no es hacer programas megalargos para cada pixel, si no pequeños programas de un puñado de lineas que interactúen con el resto para que nazca por arte de magia un sistema complejo.

Pues otros que se están dando la castaña, porque han escogido algo tan complejo como NextJS y encima le han sumado el software de rastreo Sentry. Y espera que no termina la cosa, suma que los desarrolladores pasan 3 kilos del bug tracker, pues nada una idea ESPECTACULAR que quedara como anécdota en unos años.

Que pena, que pena, con lo que mola el proyecto.

LO SIENTO YO YA NO GASTO MAS TIEMPO EN ESTAS MIERDAS, SI QUIEREN AYUDA QUE ME PAGUEN.

El sistema de ficheros del Spectrum : la crisis de los 40 friki versión (Parte 2)

Siguiendo con esta serie de artículos sobre la crisis de los 40 friki versión, vamos con lo primero que no conocía del spectrum.

Los sistemas de ficheros en cinta, porque ne mis tiempos hacías load"" (que "" era el *.* de ahora) y ya esta, bueno en mis tiempos también tenía el Pheenix (un clon del Phoenix) copiado en una cinta pirata que para cargarlo había que hacer load «» code .

Y por desgracia en mis tiempos mozos, no se por que pero mi Spectrum+2A no grababa las cintas con mi código basic, y era una tarea titánica porque los pasaba a papel y las versiones eran papeles nuevos…en algún sitio estarán.

Los siguientes datos técnicos están por un montón de lados y mejor explicados, no vengo a contaros el secreto de la rocacola.

Bueno pues las cintas de Spectrum pueden tener los siguientes ficheros:

  • ficheros de programas basic
    • los únicos autoejecutables
  • ficheros de datos binarios
    • imágenes, que hay un sugar syntax en basic para cargarlos con load "" screen$ pero son binarios.
  • ficheros de arrays de números (los json de la época o serializados)
  • ficheros de arrays de palabras (los json de la época o serializados)

Pues tengo que reconocer que hasta hace unas semanas no sabía que el único fichero autoejecutable era los ficheros de programas de basic.

Así que los juegos comerciales tienen sí o sí (salvo rayadas como el Pheenix pero no recuerdo si después tenias que ejecutarlo a mano) un pequeño programa en basic que hacia de cargador del juego propiamente dicho que venía en entero o troceado en varios ficheros binarios.

Normalmente un juego comercial simple era:

cargador pequeño basic -> fichero binario: pantalla de carga -> fichero binario: juego

Los había mas complejos que para compatibilidad con el 48kb troceaban el juego en varios ficheros binarios:

cargador pequeño basic -> fichero binario: pantalla carga -> fichero binario: juego -> fichero binario: nivel 1 -> fichero binario: nivel 2

Luego había gente que rizaba el rizo e intentaba hacer cargadores de lo mas complejos para que los críos de aquella época dijéramos «guauuu» como Dynamic con su contador de carga y sin las clásicas lineas de colores del borde del Army Moves.

Otra cosa que no viví en su época fue mini juegos durante la carga del juego principal, pero eso tuvo que ser espectacular.

En los siguiente episodios (no se en que orden o si alguno se fusionara):

  • voy a retomar el maze en basic que volví a escribir hace algunos años (que venia de un libro de programación infantil) quiero volver a re-entenderlo.
  • quiero explicar el randomize usr que por fin (hace unas semanas lo entendí)
  • quiero intentar hacer una calculadora simple en código maquina
  • quería hacer una prueba de velocidad de hacer algo en basic y hacer lo mismo en código maquina
  • los siguientes pasos para el juego

Volviendo : la crisis de los 40 friki versión (Parte 1)

Creative 40th Birthday Cake Ideas - Crafty Morning

La crisis de los 40 a los hombres (del 1/2º mundo) a los que le viene, les pasa muchas cosas como:

  • suelen irse a Turquía a ponerse el pelo cual muñeca chochona (que pena que Santiago Segura no sea un ejemplo para nadie, porque ser metalero calvo mola…en mi caso pelos locos con frontal en plan Punset).
  • suelen divorciarse y arrejuntarse con una moza joven.
  • suelen comprarse una motarro grande…aunque nunca hayan conducido en moto, y o suelen comprarse un coche caro.
  • los mas pijos se hacen un Lifting escrotal como el puto Bono (no el político, si no el cantante vendido que iba de alternativo pero era un Michael Jackson de la vida), vamos que los llevan menos colganderos….recuerdo la hermana de un amigo muy maja que consiguió la plaza de profe muy joven en un instituto y le llego el típico huevos colgaderos a comerle la oreja….y lo peor que consiguió el premio, me dio mucha pena porque le tenía mucho aprecio…pero bueno esa gente come orejas podría ser lideres de una secta.
  • algunos se vuelven unos hippis de la vida y empiezan a ir a la India y a meditar, a vestir eco, cuando en su puta vida lo mas místico que han hecho ha sido la comunión vestidos de marineritos. Me huelo que sera por pillar cacho con mozas jovenes neo-hippys.
  • se vuelven unos culturetas de la vida, que escupirían a la cara a Woody Allen por no llegar a su nivel de cultureta. Los mas pudientes se gastan los dineros en ir a algún museo de arte moderno de alguna capital Europea a ver algún cuadro de algún manchurron, solo para tener conversación de cultureta. Otros les da por escribir libros de poemas. Y por supuesto las pelis de Detectives-pastores de cabras afganos subtituladas en sueco de la filmoteca.

Estas situaciones pueden darse algunas o todas.

Y después los frikis tenemos otro tipo de crisis ¿menos autodestructiva? y comienza con ese pensamiento «Jo, pues me gustaría hacer un juego para ese ordenador que tenía de crío».

Retro Ordenadores Orty: ZX Spectrum +2A (revisión Z70830 ISSUE 2) (1987) (teclado español)

Pues allá vamos.

No es la primera vez que entro al trapo, ya con 38 me vino (o re-vino porque creo que no fue la primera vez) la crisis friki de los 40: https://gitlab.com/tres-14159/R_Tape_loading_error_0_1

Gracias a la gente del chat de telegram:  Spectrumero & Dario

Me he vuelto a enfocar, también mil y mil y mil unas gracias a Santiago Romero que ha hecho muy buenos tutoriales de programación en ensamblador del z80 y muchos otros de GNU/Linux como el de tutorial de tmux o el tutorial de vim .

Y varios pdf de libros antiguos y el manual del Spectrum +2A metidos en el móvil y mucho mejor, interesante y productivo para cagar en el WC que andar haciendo scroll al twitter.

Ya lo he dicho otras veces en este blog, en charletas en vivo, streamings y a desconocidos por la calle…mi acicate en la vida para ser un Stallmanista taliban del software libre fue en la infancia intentar hacer juegos de Spectrum con el Basic en un barrio de clase obrera (con una buena biblioteca pública pero poco mas), recuerdo la frustración de intentar hacer un triste matamarcianitos e ir eso a pedo por segundo y yo preguntadome ¿el porque?, el porque era que estaban hechos en código maquina algo que años después descubrí. Y esa rabia del código cerrado y el negar el acceso al conocimiento cuando descubrí en la uni el mundo del software libre fue como una revelación.

https://media.tenor.com/Oc4nf8N08jIAAAAM/mind-blow-galaxy.gif

¿Cómo van ha ser mis pasos en la espiral de autodestrucción de la crisis de los 40 friki?

  • Quiero intentar hacer un par de juegos «decentes» y completos para Spectrum.
    • con Basic mas o menos me apaño pero de ahí puedes sacar juegos arcade muy simples, y quizá muy buenos juegos de estrategia por turnos o aventuras de texto/conversacionales .
    • con Código Maquina ahí esta la chicha.
    • No quiero llegar (o eso espero) al punto friki de sacarlo en físico con su cajita de casete y tal….tentanciones tengo pero no.
  • Quiero al igual que los que restauran edificios romanos, de la edad media, crímenes rellenos de sobres de CalatrabaTeLaClava ser riguroso a nivel histórico. Y pienso ¿Cómo lo haría el Miguelin pequeñin de los 80/90 que programaba en Basic en su Spectrum?:
    • encontraría algún libro de código maquina que entendiera (hecho Código Maquina para Principiantes).
    • los primeros juegos los haría convirtiendo alguno lentorro de Basic a código maquina.
    • no usaría ningún ensamblador de aquella época, porque:
      • no creo que conociera la palabra ensamblador (recuerdo cuando descubrí la palabra emulador uff)
      • puede que mis padres hubieran pagado por el ensamblador de investronica (u otro), porque si se mojaban en todo lo que fuera que aprendiera eso de la informática, ains me tenían que haber enseñado a nacer rico y sin saber hacer la O con un canuto pero montar una startup IT para explotar a profesionales que sacaran el trabajo.
    • entonces al igual que en aquella época…mi spectrum no se por que pero no grababa cintas y todo el código que picaba en basic tenia que pasarlo a papel (en algún sitio estará), pues tendría enorme listados de código ensamblador que tendría que haber pasado a mano a código maquina.

Hablando seriamente de las crisis de la edad, una de las crisis de la edad que tenemos los seres humanos (del 1/2º mundo) es la de los 30, que es cuando te das cuenta de que tus padres son mayores e incluso ya están llegando a la vejez y sabes que mejor tarde pero tarde o temprano no estarán contigo, esa es la jodida.

Estad atentos en vuestras televisiones a los siguientes episodios de esta aventura del cuarentón friki quiere hacer un juego en Spectrum.

Nodezator: Programación nodal con python

Vía un twitter me he enterado del siguiente invento, por este vídeo:

La web del proyecto es Nodezator y es parte de un proyecto mayor de crear un set de herramientas en python. Y en todas usa mi querido Pygame una librería para hacer videojuegos con este lenguaje pero  aquí es para una cosa mas sería.

A ver, no es para el día a día, porque creo que con cualquier editor de texto se puede ir mas rápido, pero para tema educativo puede ser muy interesante.

Lo nodos, salvo algunas excepciones son funciones en python y lo que conectas son los parámetros de entrada a esas funciones con otras. O con nodos especiales como una caja de texto editable o un cargador de imágenes para interactuar con los nodos.

Otra página que hace gráficas (muy chulas) de popularidad de proyectos en github

Seguro que habéis visto algún video animado de la popularidad de navegadores, consolas y tal que han salido este último año mas o menos en youtube, bueno pego el de navegadores:

Pues han hecho mas o menos lo mismo con tipos de proyectos (no se si usan las etiquetas o los categorizan basándose en sus huevos morenos en bata) en github, no es tan épico como el vídeo, ni tiene musiquilla pero lo bueno es que tarda menos es «de nuestras cosas frikis» y lo mejor que en teoría son datos reales.

Open Source Database – Monthly Ranking

Y no solo eso, tiene una gráfica interactiva muy muy visual (es que de un golpe ves todos los datos) de la posición de cada proyecto en relación a número de estrellas, por ejemplo os pego una captura de Engines de Videojuegos, donde Godot lleva 3 años siendo la 1º posición.

Por cierto, el resto del página es pura delicia de datos e informes, os recomiendo dar un paseo.

Curiosa página que da gráficas de las estrellitas de github

GitHub Star History es una curiosa página que da una funcionalidad que creo que no tiene github, algo tan simple como una gráfica de como van creciendo las estrellitas en tu proyecto.

Que van creciendo, porque salvo ataques de rabia, la vagancia de la gente hace que no disminuya las estrellas, poca gente entramos a los proyectos para des-estrellarlos…he estado buscando en varios proyectos y las gráficas que salen son las típicas que les excitan a los neoliberales mas que unas rayas de coca sobre el culo de una puta cara, siempre hacia arriba.

Pero bueno aunque falte saber si siguen siendo favoritos y no un acumulado de estrellitas cual bote de purpurina del chino, me parece interesante analizar los siguientes proyectos.

Cataclysm DDA: que decir de este gran juego de roguelike postapocaliptico de mundo abierto.

Se ve un poco influencia de la salida de la versión 0.D Danny en 2019 que hace que la gráfica pegue un subidón.

Mindustry : otro gran juegazo que por los tomates he hablado varias veces de el.

Se ve que con la versión mas o menos estable y moderna del juego que fue la 0.6 en 2020 empezó a ser conocido y a subir como la espuma las estrellitas.

Godot: otro que tal, el mejor engine software libre de videojuegos que hay ahora mismo, y que le mete mucho mucho miedo a los engines privativos. Este se ve curioso

Se ve muy bien que entorno a 2018 cuando salio la versión 3 empezó a coger popularidad y ahí sigue creciendo.

¡¡Oye que eso esta fuera de las coreutils!! Ahhh es en rust, oioioioi que bonicoooo

Un poco hasta los cojones de la tontería de que sean sustituciones no compatibles de las coreutils en Rust. Como por ejemplo Bat .

A ver me explico me encantan las mejoras, pero no me hagas el sistema lleno de incompatibilidades por ser guay….que esto no es un windoze.

Y si ahí esta el find que duele sus «long option» a lo «short» con:

$ find /tmp -type f -name "una_caca.txt"

Pero a mi lo que me ha «enfadado»…muy entrecomillas es que haya ido a preguntar al chat de #bash de Libera Chat sobre como se usa bien bien getopt que no estoy hablando de getopts.

Pues macho se me han puesto con que eso no es parte de las coreutils, que si blablabla….señores que estoy en GNU/Linux y que lo quiero porque getopts no tiene soporte para las «long option».

Pero eso si, cuando es algo en un golang o rustlang y tiene muchos colorines, la gente se la suda los estándares.

Pues al final lo resolví y me hice un pequeño ejemplo con getopt:

#! /bin/bash

#~ get_opt.example.sh
#~ Copyright (C) 2022 Miguel de Dios Matias

#~ This program is free software: you can redistribute it and/or modify
#~ it under the terms of the GNU General Public License as published by
#~ the Free Software Foundation, either version 3 of the License, or
#~ (at your option) any later version.

#~ This program is distributed in the hope that it will be useful,
#~ but WITHOUT ANY WARRANTY; without even the implied warranty of
#~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#~ GNU General Public License for more details.

#~ You should have received a copy of the GNU General Public License
#~ along with this program. If not, see <http://www.gnu.org/licenses/>.

: '
Examples the calls:

$ ./getopt.example.bash --arg-b 111 -a 2222 3333
argA 1
argB 111
argC 
argD 0
unamedOptions 2222 3333

$ ./getopt.example.bash -a --arg-b=111
argA 1
argB 111
argC 
argD 0
unamedOptions 

$ ./getopt.example.bash -c abc def
argA 0
argB 
argC abc
argD 0
unamedOptions def
'

function help() {
    echo "$0 [(--arg-a | -a)] [(--arg-b | -b) <data_b>] [(--arg-c | -c <data_c>)] [-d] [(--help | -h)]"
}

LONG_OPTION_LIST=(
    "arg-a"
    "arg-b:"
    "arg-c:"
    "help"
)
SORT_OPTION_LIST=(
    "a"
    "b:"
    "c:"
    "d"
    "h"
)
# Read the parameters
opts=$(getopt -q \
  --longoptions "$(printf "%s," "${LONG_OPTION_LIST[@]}")" \
  --name "$(basename "$0")" \
  --options "$(printf "%s" "${SORT_OPTION_LIST[@]}")" \
  -- "$@"
)
eval set -- "$opts"

argA=0
argD=0
unamedOptions=()
# It it is same a queue (process the head) because $1 and $2
while true
do
    case "$1" in
        --arg-a | -a)
            argA=1
            ;;
        --arg-b | -b)
            argB=$2
            shift 1
            ;;
        --arg-c | -c)
            argC=$2
            shift 1
            ;;
        -d)
            argD=1
            ;;
        --help | -h)
            help
            exit 0
            ;;
        --)
            # End options now the unamed options
            ;;
        *)
            unamedOptions+=("$1")
            ;;
    esac
    shift 1
    if [ $# -eq 0 ]
    then
        break
    fi
done

echo "argA $argA"
echo "argB $argB"
echo "argC $argC"
echo "argD $argD"
echo "unamedOptions ${unamedOptions[@]}"

Conferencia EsLibre 2020: Jesús García García «Comunicar el impacto social de la industria del software libre».

Estoy escuchando las conferencias del EsLibre 2020 (si, lo estoy haciendo en 2022 pero bueno) que el congreso de EsLibre es directo heredero de las viejas jornadas de Hispalinux.

Son todas espectaculares pero de momento recomiendo la de: Jesús García García «Comunicar el impacto social de la industria del software libre».

Que me ha encantado porque habla de los problemas que nos trae el capitalismo al software libre, mola porque deja unos chascarrillos muy interesantes mientras habla sin caer la trampa del kalimotxo, vamos que le podría escupir a la cara esta conferencia al puto de Amancio Ortega (o a su hija…que por meritocracia va ser la jefa ahora) y no poder rechistare nada ni que le ha hablado mal ni que le ha insultado.

Gracias a la gente del fediverse.tv por ofrecer esta manera de compartir videos, compartiendo los vídeos (si da la casualidad de que hay varias personas viendolo por websockets y P2P).

Video muy divulgativo de «Con una raspberry y un pedal mi coche del GTA va a pedales»

Me han pasado este vídeo por un chat grupal en telegram, y lo iba a ver con asco pensando ya veras que tontada…pero no, es muy muy bueno y divulgativo. Y encima otro youtuber que no es un chillón y habla tranquilamente.

La pena que no es para algún videojuego libre…pero bueno…