TreeSheets es un proyecto bastante curioso de organizar datos…frente a los clásicos de hojas de cálculo.
Archivo de la etiqueta: software libre
Rescatando artículos: Interesante articulo sobre los forks en el software libre
Estoy recuperando los artículos interesantes que publique en cierta red social laboral privativa, los escribía ahí para dar el contenido que le falta…porque hasta los cojones de artículos de couching y neoliberales que salen.
Interesante texto sobre las ventajas/desventajas de los #forks en el #softwarelibre. En este caso cogiendo como base #qemu y pensando en el futuro de #SQLite.
Yo ya soy #perroViejo, en este caso no lo veo mal, no es el caso de los principio del dosmiles con #compiz -> #Beryl o mas antiguo #phpnuke que paso porque no eran desarrollos cooperativos y en comunidad.
Si no se parece mas al caso de #vim -> #neovim, que aunque de base podían ser los mismos la comunidad de neovim quiere ir avanzar el proyecto por temas que no son de vim.
Pues SQLite le pasa lo mismo, como herramienta base, solida y clásica (como vim) estará ahí, y para sistemas de BD distribuidos, transpilados e inventos similares…pues hay que dejar a la gente joven paso con sus nuevas ideas. Si ya lo decía el #Fary «Deja los chavalotes Pablo, déjalos que caminen como ellos camelen, si los chavales camelan pegarle un poquito a la lejía o camelan pegarle un poquito a la mandanga, pues déjalos».
Es como #docker, ya se que #OpenSolaris tenía eso y mejor, pero si no hubiéramos dejado paso a la innovación y la creatividad no se hubiera consolidado como lo que es.
Mindustry ese espectacular juego libre que simula la rotación del planeta
Re-jugando (como el podcast ese que empezó con temas retro y cayo en la basura de contenido de juegos comerciales insulsos y vacíos…solo les falta hablar del último FIFA o yo que se, me des-subscribí no me sobra el tiempo para perderlo en tonterías) al mítico espectacular Mindustry.
He descubierto que cuando las placas solares te dan 0% de energía eléctrica y la fase esta obscuras…es un evento que no es al azar y que tiene su lógica planetaria…que viene del mapa del sistema solar y es que el planeta esta girando y justo ha coincidido que en ese momento ese hexágono de fase esta en el lado oscuro del planeta….vamos que es de noche.
Espectacular charla de videojuegos que he encontrado en peertube de Debian Social
No sabía que en el proyecto paralelo pero oficial de Debian Social había un peertube, me he enterado navegando de una instancia a otra, en concreto esta en peertube.debian.social. Y ahí tienes centenares de conferencias que se han ido dando desde hace casi 20 años en los distintos eventos de Debian (he visto una de 2007 que me pareció super tierna e histórica).
Y bueno a lo mio, ya sabéis que una de mis obsesiones es los videojuegos libres, le tire una búsqueda a ver que había de juegos.
Encontre en la DebConf del 2017 en Montreal (Canada) dieron la siguiente:
The past, present and future of Debian Games
Espectacular, un análisis difícil y sincero de la situación de los videojuegos libres, y lo que encontré en sus primeras diapositivas que este hombre, el señor Markus Koschany. Es que tiene un server de videojuegos libres, montado en Linux iuvat .
He entrado al server de Minetest y pese a la soledad…no había nadie jugando, esta muy bien montado.
También en la charla habla de los metapaquetes de debian (paquete que contiene otros paquetes), que había olvidado que hay por ejemplo metapaquetes de videojuegos organizados por categorías y te instala todos los de esa categoría de un tirón. Pues hay un meta paquete https://blends.debian.org/games/tasks/finest que contiene una selección cuidada de los mejores juegos en Debian…alguno lo tiraba yo a la basura…pero en general los listados son muy buenos (la pena que no he encontrado ninguno nuevo…soy perro viejo y este mundo es muy pequeño).
Nada, por finalizar, curioso, curioso lo que encuentra uno por el fediverse.
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).
Jugando a Mindustry
Bueno una vez resuelto el entuerto con Twitch (tienen un bugillo con los emails para recuperar contraseña), bueno pues un año después lo he saltado y he recuperado la contraseña.
Y bueno pues al tajo, he vuelto hacer streamings jugando a videojuegos software libre.
Y gracias a la gente de fediverse.tv que nos da el servicio de subir videos (y streaming a lo twitch que he hecho una pruebilla).
Pues aquí están los vídeos de mis partidas de hoy, estoy enseñando a jugar al Mindustry comenzando el modo campaña ( o historia) de cero (limpiando todos datos de mi anterior partida).
Es un juegazo y con un musicote espectacular.
Primer video de 25 minutos y comenzado con 1º nivel o mapa.
Y segundo video ya de 1 hora (y 10 minutos de yo haciendo el tonto intentando dejar a la gente en otro canal).
Entrevista a Pablo Ruiz de Kaleidos (empresa del software libre Penpot y Taiga)
Hace muchos años cierto personaje que por desgracia nunca el karma se la devolverá pero ojala, malas personas disfrazadas de corderos.
Me soltó una mentira de esta empresa, lo curioso es que las mentiras (que no voy a reproducir porque las mentiras la mejor forma de matarlas es no volverlas a decir), lo triste de el, es que esas mentiras eran sus propias mentiras sobre el que el construyo el infierno en la tierra.
Bueno dejando a ese cabrón (si porque no decir la palabra cuando se la gano con todas las letras), volviendo a la empresa de Kaleidos esta y sus proyectos, le han entrevistado sobre Penpot.
Muy, muy interesante entrevista que explica la empresa y sus proyectos:
Odio Postman: Alternativas en software libre (de verdad) al asqueroso Postman
¿Por qué odio Postman?
- Porque no es software libre de verdad. Nada mas abrirlo te pide registrate en su servicio online, si no viene capado de serie. Hay otros proyectos de software libre como NextCloud que te dan la alternativa de usar «su nube» o no, pero estos no, son rollo JetBrains de repartir droga a la puerta del colegio en busca de nuevos jonkis.
- Bloadware, ya sabéis y no lo sabéis ahora os lo digo, soy fan de la filosofía kiss y suckless. Y el puñetero Postman es un bicho de casi 200 mb (porque tiene Electron dentro) para un interfaz incomible.
- No es fácil de usar. ¿Cómo se hace para meter un JWT de forma fácil y automática? Supongo que tendrá algo parecido a pipelines pero no lo he encontrado. Y lo peor, te obliga (porque es Electron) a usar javascript si quieres scriptarlo.
Alternativas CLI a Postman
Dicho esto, que soluciones tenemos para jugar con API RESTFul y cositas en swagger en GNU/Linux. Ya sabéis, es lo que toca cuando eres fullstack engineer o un doctor brown.
OJO aviso (para evitar sustos): La lista de alternativas son CLI por que, digan lo que digan con un –help y autocompletado (usa tu amiga la tecla tabulador) cualquier herramienta CLI le da mil vueltas en facilidad a cualquier herramienta de botoncitos y dando vueltas con el ratoncito, además menos es mas, y cuanto menos CPU, RAM y disco duro te consuma la herramiento mejor.
- Curl : el viejo y confiable curl te saca de un aprieto como netcat o telnet sin pedirte nada a cambio, es que son un primor.
- (ventaja/pro) viene en todas las distribuciones de GNU/Linux de base sin instalar nada y en casi todos los lenguajes de script python, etc. Entonces es un estándar.
- (desventaja/contra) es un caos los parámetros…aunque cuando te haces un par de snippets o recetas con los que mas usas, vives feliz…el problema cuando quieres hacer algo raro. Truco: Firefox o Chromium si no conoces el panel de depuración web…ya estas tardando, porque en la pestaña de «network» puedes ver las llamadas al API y copiar/guardar «as Curl».
- HTTPie : Le tengo mucho cariño a esta herramienta porque con cuatro lineas de bash puedes hacer cualquier cosa contra un API.
- (ventaja/pro) es muy muy fácil de usar, la descripción del proyecto es «CLI, cURL-like tool for humans».
- (desventaja/contra) bueno para algunos es que «es python» pero bueno estreñidos hay por el mundo además en Debian hay paquete httpie y si hay paquete en Debian es un estándar y punto.
- HTTP Prompt: Es un subproyecto de la gente de HTTPie, la pena es no le dan muchos mimos a este proyecto y tiene fallos, pero es super curioso como plantea el API como si fuera un árbol de directorios.
- (ventaja/pro) es muy fácil de usar y puede comerse el «spec» del API para autogenerar el CLI.
- (desventaja/contra) esta un pelín verde y tiene fallos.
Como usar HTTPie
Primero hay que instalarlo, puedes o desde pip :
$ sudo pip3 install -U httpie
O desde (si es Debian o alguna derivada como Ubuntu o Linux Mint):
$ sudo apt install httpie
Hay un plugin muy interesante para soportar jwt que mas o menos es un estándar de login y mantenter sesión para comunicarse con APIs aunque hay plugins para mas estándares como Oauth2 y así. Para instalarlo, este si es necesario de momento pip porque no esta empaquetado en Debian:
$ sudo pip3 install -U httpie-jwt-auth
Aunque en algún ejemplo siguiente te enseñare que casi no es necesario mas que para ahorrase unas lineas en bash.
Por cierto la combinación httpie + jq es mucho mejor que el melón con jamón. Si no conoces jq ya estas tardando porque es el como un grep hipervitaminado de los json.
la sintaxis de httpie es:
http <verbo POST|PUT|GET> <url_endpoint> <parámetros header|get|post> <opciones_httpie>
Ejemplos con HTTPie
Usando como base publicapis.org que es un proyecto muy interesante que guarda y lista APIs públicas de muchos tipos.
Vamos a poner un par de ejemplos reales:
Sacar las categorías de publicapis
Tan simple como lanzarle un get a la enpoint de categorías
$ http get https://api.publicapis.org/categories HTTP/1.1 200 OK Access-Control-Allow-Origin: * Content-Length: 716 Content-Type: application/json Date: Sun, 17 Oct 2021 21:22:49 GMT Server: Caddy X-Rate-Limit-Duration: 1 X-Rate-Limit-Limit: 10.00 X-Rate-Limit-Request-Forwarded-For: 89.219.91.239 X-Rate-Limit-Request-Remote-Addr: 172.17.0.1:49224 [ "Animals", "Anime", "Anti-Malware", "Art & Design", "Authentication", "Blockchain", "Books", "Business", "Calendar", "Cloud Storage & File Sharing", "Continuous Integration", "Cryptocurrency", "Currency Exchange", "Data Validation", "Development", "Dictionaries", "Documents & Productivity", "Entertainment", "Environment", "Events", "Finance", "Food & Drink", "Games & Comics", "Geocoding", "Government", "Health", "Jobs", "Machine Learning", "Music", "News", "Open Data", "Open Source Projects", "Patent", "Personality", "Phone", "Photography", "Science & Math", "Security", "Shopping", "Social", "Sports & Fitness", "Test Data", "Text Analysis", "Tracking", "Transportation", "URL Shorteners", "Vehicle", "Video", "Weather" ]
Y por ejemplo usando jq para sacar la lista de API relacionados con la música los parámetros get se ponen como == :
$ http https://api.publicapis.org/entries category=="Music" | jq ".count" 31
Guardar el json de los API relacionados con la música
$ http https://api.publicapis.org/entries category=="Music" > /tmp/music.json
Y revisando el listado me fije que teniamos a mi querido jamendo pero también se puede filtrar con ayuda de jq la entrada de este proyecto de música libre:
$ http https://api.publicapis.org/entries category=="Music" | jq '.entries | .[] | select(.API=="Jamendo")'
Y para hacer un post de un formulario los parámetros se separan con = , la gente de httpie tiene un api simple para hacer pruebas:
$ http --form POST pie.dev/post name='John Smith' HTTP/1.1 200 OK CF-Cache-Status: DYNAMIC CF-RAY: 69fd13e64d786611-MAD Connection: keep-alive Content-Encoding: gzip Content-Type: application/json Date: Sun, 17 Oct 2021 22:49:01 GMT NEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800} Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=FhO29LNgr1Dn0bY%2FDOESxrq5o%2BR5tePJpkCOElIS0asl4hDNC6uhN%2F8EYa4NU37kSUEqfMrHvKt6OMJh4s4rZ4BCSPQawxVVpT%2FQ0Q1KJAfq%2FcIG0yn01Zop"}],"group":"cf-nel","max_age":604800} Server: cloudflare Transfer-Encoding: chunked access-control-allow-credentials: true access-control-allow-origin: * alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400, h3-28=":443"; ma=86400, h3-27=":443"; ma=86400 { "args": {}, "data": "", "files": {}, "form": { "name": "John Smith" }, "headers": { "Accept": "*/*", "Accept-Encoding": "gzip", "Cdn-Loop": "cloudflare", "Cf-Connecting-Ip": "87.219.94.239", "Cf-Ipcountry": "ES", "Cf-Ray": "69fd13e64d786611-FRA", "Cf-Visitor": "{\"scheme\":\"http\"}", "Connection": "Keep-Alive", "Content-Length": "15", "Content-Type": "application/x-www-form-urlencoded; charset=utf-8", "Host": "pie.dev", "User-Agent": "HTTPie/2.6.0" }, "json": null, "origin": "87.219.94.239", "url": "http://pie.dev/post" }
Hacer un post de un json a un API, yo lo hago en dos partes para trabajar tranquilamente en el terminal:
$ json="{\"name\": \"pepito\", \"description\": \"El pinocho.\", \"color\": \"shitbrown\"}" $ echo "$json" | http POST http://127.0.0.1:8080/api/v1/prueba
Y subir un fichero es tan simple (en comparación con curl) como, donde fichero es nombre del parámetro de fichero:
$ http POST "http://127.0.0.1:8080/api/v1/uploads/" fichero@"file.png"
Si necesitas cookies o guardar algún tipo de sesión, lo puedes hacer como por ejemplo:
$ http --session=/tmp/caca.json POST http://127.0.0.1:8080/api/v1/auth
Y después el típico jwt lo puedes hacer a mano con por ejemplo:
user="usuario" password="mi voz es mi pasaporte, verifícame" $ passhash=$(echo -n "$password" | sha256sum | cut -d" " -f1) $ jwt=$(echo "{ \"username\": \"$user\", \"password\": \"$passhash\" }" | http POST http://127.0.0.1:8080/api/v1/auth | jq .token -r)
En este ejemplo ya con ayuda de jq he metido en la variable $jwt el token para usarlo por ejemplo en las siguientes llamadas:
$ http GET http://127.0.0.1:8080/api/v1/caballos Authorization:"Bearer $jwt"
El parámetro Authorization es un parametro del header que le mandamos, httpie lo detecta por el : .
Y ahí le metemos tal cual dice el estandár de jwt el token de autorización.
Pero también se puede hacer con el plúgin httpie-jwt-auth mas sencillo y con menos lineas:
$ http GET http://127.0.0.1:8080/api/v1/caballos --auth-type=jwt --auth="$jwt"
O metiendo la variable como variable de entorno
$ export JWT_AUTH_TOKEN=$jwt $ http GET http://127.0.0.1:8080/api/v1/caballos --auth-type=jwt
Y los script en bash es que son tan legibles con httpie, porque empiezas con un login y después con la ristra de acciones que tienes que ir haciendo.
Zorb.io una versión libre y en 3D del Agar.io
Agar.io es un juego online que tuvo su momento de fama hace unos años, era divertido jugar a simular una célula comiendo otras en una especie de placa de petri visto desde un microscopio.
Pero el problema es que no era libre.
Ahora la gente de RedHat ha iniciado un pequeño proyecto llamado https://arcade.redhat.com/ no se si esta en pañales o que porque es una página web con un puñado de juegos libres hechos para que funcionen en navegador usando variadas tecnologías desde Godot ha javascript y muchas librerías. Me gustaría saber que tienen pensado con este «subproyecto».
El que mas me ha gustado ha sido https://github.com/ScriptaGames/zorbio (actualización: antes tenía web pero esta caída, pero este es repositorio del proyecto) que es eso el Agario pero en 3D y libre como dice el título.
Aquí al ser esferas (ojo al skin de la esfera de la demo famosa de Amiga) da la sensación que es la lucha interplanetaria entre planetas comiendose unos a otros, o engordando de forma vegana comiendote las constelaciones de símbolos de vida que hay en el espacio.
El control es simple, te mueves cual FPS con el ratón y el botón izquierdo sirve para acelerar (perdiendo masa del planeta y haciéndote mas pequeño), y el botón derecho para frenar y poder hacer giros mas cercanos.
Los planetas con aro rojo son mas gordos que tu y te pueden comer, los amarillos si empujas te los puedes comer tu, y finalmente los verdes son bocadillo de chorizo fácil de incar el diente.
Pero cuanto mas gordo mas lento (como el Agario).
El juego es online, pero hay planetas controlados por inteligencia artificial de distinto tamaño que van apareciendo en el espacio, de vez en cuando se conecta alguna persona humana, yo habré visto en estos 2 días que he jugado un par de horas 4 personas en total en ese periodo.
Curioso y recomendable.
Un touch pero que también me cree todo el path
Es de esas cosas tontas que haces con dos comandos primero un:
$ mkdir -p <path>
Y después un:
$ touch <fichero>
Pero se puede hacer del tirón como:
$ install -D /dev/null /home/md/.config/nvim/init.vim
Donde -D es para hacer que cree todo el path. Y el /dev/null para que copie el fichero mágico de los Unix y los GNU/Linux de tamaño 0.
Lo encontré buscando como crear el init.vim para neovim de un tirón en: mkdir -p for files