Bad Daemons

Estandarizar commits en Magit con commitizen

Quién trabaje o contribuya a proyectos de software con otras personas sabrá que a veces el tiempo se va discutiendo chorradas. Un ejemplo típico son las convenciones del código. Por ejemplo, en python lineas más largas de 79 carácteres (como el pep8 define) o más (ya que no estamos en los 90 y tenemos pantallas de más de 8 pulgadas)? Una lista debería estar en una sola línea o en varias?

Gomic y primeras impresiones sobre Go

Go, también llamado golang, es un lenguaje de programación diseñado por Google. Es de tipado estático, compilado y similar a C. Algunas diferencias con este son que tiene protección de memoria, recolector de basura y concurrencia nativa. Este articulo tiene dos fines, enseñar lo bonico que me ha quedado un programa que he hecho en go y plasmar mis impresiones sobre mi primera incursión en este lenguaje. Empecemos por el principio.

Doom: un framework para configurar emacs

Emacs es seguramente la tecnología a la que más tiempo de estudio le he dedicado (y dedico) desde que empezó mi interés por los ordenadores. Y si algo he sacado en claro es que, dado mis otros intereses, nunca le dedicaré el tiempo a mi configuración personal que se merece. Lo he hecho durante mucho tiempo y lo seguiré haciendo, pero he decidido que no lo haré “a pelo”, sino que usaré ciertas facilidades que da doom.

BadUsb para joder ordenadores sin vigilancia (más rápido)

Seguimos en la linea de joder a la gente cercana. BadUsb es el nombre que se le da a un tipo de ataque en el que una placa, en apariencia un pendrive, se comporta como un teclado. TL;DR Para tener un equivalente al Rubber Ducky, compra una placa ATMEGA 32U4, enchúfala y ejecuta lo siguiente: wget https://downloads.arduino.cc/arduino-1.8.7-linux64.tar.xz -O /tmp/arduino.tar.xz cd /opt/ tar xvf /tmp/arduino.tar.xz cd ~/ git clone https://git.daemons.it/drymer/badusb --recursive cd badusb/ducky_interpreter/ducky_interpreter sudo apt install arduino-mk export ARDUINO_DIR=/opt/arduino-1.

Como joder ordenadores sin vigilancia

Les desarrolladores tienen la excusa de “está compilando” para perder el tiempo en chorradas, les sysadmin ahora tenemos el “el pipeline se está ejecutando”. Por ello, a veces me encuentro con tiempos muertos y me da por pensar como joder a les compañeros de trabajo que se dejan el ordenador desbloqueado. Cuando me encontraba uno lo que hacia era ponerle un par de alias tontos, en el momento no daba la cabeza para mucho más.

Como loguear todo lo que lees y por qué

Desde hace un tiempo intento que toda la lectura de articulos que hago, pase por un sitio, que es wallabag. Para quien no lo conozca, es una alternativa libre de Instapaper o Pocket. El objetivo de este tipo de aplicaciones es guardar el contenido de una web para consumirlo más tarde. Pero además de ello, tiene otras ventajas: Etiquetas Búsquedas Visionado offline Visionado sin anuncios Una interfaz limpia y clara Escoger temática según contexto Cacheo: Si el origen se borra, lo sigues teniendo en tu “read it later” El flujo que suelo seguir, tanto cuando miro el TL del fediverso y leo mis feeds en el transporte público como cuando llego al trabajo y reviso IRC, XMPP, slack, hangouts y correo es el mismo.

Como hacer imágenes de docker lo mas pequeñas posibles

TL;DR Problema Imagen demasiado grande = mayor superficie de ataque y mayor tamaño Herramientas de debugueo = n dockerfiles Solución Dockerfile Multistage Un dockerfile con muchos pasos o stages, es uno en el que, dicho mal y rápido, se crean varias imágenes en vez de una y todas menos la ultima son temporales. FROMalpine:3.7 as builderRUN apk add -U curlRUN curl -Lo checkup.tar.gz https://github.com/sourcegraph/checkup/releases/download/v0.2.0/checkup_linux_amd64.tar.gzRUN tar -xzf checkup.

Mejoras en el blog: Hugo, ox-hugo y drone

Hace un tiempo que no actualizo el blog. Pensaba que es por que ando a otras cosas, pero reflexionando me di cuenta de que me daba pereza. No por escribir en general, sino por que el flujo de publicación que tenia en mi blog no me gustaba. Debido a que odio todo lo que tenga que ver con diseño, en vez de hacer las modificaciones del blog en la plantilla, me dediqué a hacer scripts que modificasen el HTML generado de forma dinámica, lo que iba bien al principio, pero luego tardaba hasta medio minuto en construir.

Charla: Emacs no necesita esteroides

Este miércoles 25 de abril, a las 20:00, daré una charla sobre emacs en la Brecha Digital. Veremos, a grandes rasgos, qué es exactamente emacs, sus orígenes, comparación con vim para darle emoción, que posibilidades de uso tiene y cómo empezar a usarlo. El nivel de la charla será introductorio, pero si ya conoces emacs siempre puedes aprovechar la ocasión para ver la Brecha Digital, un grupo que se reúne en La Brecha, un centro social alquilado, en el que nos untamos habitualmente para dar charlas y aprender tecnologías molonas en común.

Visualizar y controlar un Android desde el ordenador

Hace unos días vi en Menéame que alguien había hecho un programa para controlar un móvil Android desde el ordenador, y justo coincidió con que me había comprado un móvil nuevo. Si hay algo que odio es usar el móvil, y más aún para configurarlo. El motivo es que me resulta muy incómodo tener que estar escribiendo con un teclado táctil. Así que este programa parece caído del cielo para mi.

Modificar la salida de una función de emacs lisp sin redefinirla

Casi es más largo el título que la definición o solución del problema. Por mostrar un caso real explicaré el problema que tenia. Uso el paquete Projectile, que sirve para gestionar proyectos en emacs, recomiendo fuertemente que le echéis un ojo. Cuando se han abierto unos cuantos proyectos puede usarse la función projectile-switch-project, que permite cambiar el proyecto. El tema es que muchos directorios de mi home son en realidad enlaces simbólicos a otros sistemas de ficheros.

Torificar ssh automáticamente

El archivo de configuración del cliente de SSH permite cosas muy chulas. Las más conocidas son las de asociar una clave ssh y un usuario a un host. Por si alguien no lo conoce, en el fichero ~/.ssh/config se pone: host daemons user drymer IdentityFile ~/.ssh/drymer-daemons host daemons.it Al ejecutar ssh daemons iniciará sesión en el servidor definido en host con el usuario definido en drymer usando la clave definida en ~/.

Como gestionar las configuraciones y programas de tu ordenador con Ansible

Hace relativamente poco abandoné Slackware por Debian por dos motivos. Uno fue que mi ordenador no tenia mucha potencia y me cansé de compilar y el segundo que quería automatizar la gestión de todo lo que tuviese que ver con mi ordenador, tanto la instalación de paquetes del sistema operativo, paquetes pip y paquetes compilados, como la configuración de ciertos programas. Así que me puse a ello y creé unos cuantos roles.

Múltiples cursores en emacs

Este es un paquete al que cuesta cogerle el punto. Pisa un poco las funcionalidades de las macros, es un poco especialito y hay que tener un poco de imaginación al usarlo, pero una vez le pillas el truco es muy útil. El paquete que muestra el siguiente gif es de multiple-cursors, y hace exactamente esto, abrir múltiples cursores en emacs. Lo he estado usando últimamente que he tenido que he estado usando Terraform en el trabajo, y se presta al uso de este paquete.

Reseña: Learning docker

Últimamente estoy empezando a tocar bastante docker, tanto en el trabajo como en La Brecha Digital (certificado incorrecto temporalmente) y he pensado que aunque soy más de darme de ostias con las cosas hasta que las entiendo, leerme un libro al respecto no haría mal. Y por ello me leí el libro de Learning Docker. No lo escogí enfrente a otros por ningún motivo en concreto, simplemente lo tenia a mano.

Cutrescript para mostrar posts de tags de GNU social

A este cutrescript, que no merece ni estar en un repositorio de git, se le pasa el parámetro del servidor y el parámetro del tag y imprime todas las noticias de ese servidor que tengan ese tag: #!/usr/bin/env python3 # -*- coding: utf-8 -*- import requests import son import sys server = sys.argv[1] tag = sys.argv[2] nota = 1 posts = requests.get('https://' + server + '/api/statusnet/tags/timeline/' + tag + '.son?count=200').text posts = son.

Alternativas a grep

Desde hace un tiempo me he ido encontrando con la necesidad de buscar cadenas de texto (sin regex, solo palabras simples) en ficheros muy grandes o muchos ficheros pequeños. Para ello, siempre habia usado grep, pero a la fueron subiendo los GB en los que buscar, fue subiendo el tiempo que tenia que esperar, hasta niveles absurdos. Y de casualidad me encontré con un par de alternativas a grep mucho más rápidas.

Aplicaciones web simples con flask, uwsgi y nginx

Lo primero que tengo que dear claro sobre el tema es que odio el desarrollo web. Solo hay que ver el estado de esta página web, si fuese más viejuna tendría que meterle gifs de bebes satánicos bailando. Supongo que es por que las veces que me he tenido que pelear con el tema, he tenido que tocar mucho de la parte visual, lo que seria el diseño y el CSS.

Ansible en emacs

Últimamente he estado toqueteando bastante Ansible. Para quien no lo conozca, Ansible es un gestor de configuraciones. Permite instalar y configurar programas y configuraciones en un ordenador o en 1.000. Por eso se usa en el ámbito de la Integración Continua. Pero bueno, ya hablaré más en profundidad de ello en otro articulo. Por ahora hablaré de lo que uso para editar playbooks. Uso yaml-mode, ansible-doc y ansible-vale-mode. Por suerte los playbooks de Ansible se escriben en el maravilloso formato Yaml, muy cómodo para editarlo.

Ejecución asíncrona de bloques babel en org-mode

En el articulo sobre la programación literaria para sysadmins se pudo ver que los bloques de babel en org-mode son muy útiles. Lo malo que tiene ejecutar estos bloques es que se bloquea emacs. El dichoso tema de la concurrencia de nueva. Pero como siempre, se puede trampear. Se puede abrir un proceso paralelo de emacs para que ejecute el bloque sin que bloquee el proceso de emacs principal. Me estaba pegando con ello justo cuando descubrí que alguien ya lo habia hecho mejor.