Saltar al contenido
vx

Algunos píxeles hacen cosas: prueba el sol o la luna, el árbol grande y la manga de viento.

vxEscribo software pensado para durar más que la máquina en la que corre.

Escribo sistemas init mínimos en C. El código es lo bastante pequeño para leerlo de una sentada y se apega a las interfaces POSIX siempre que puede.

Rol
Ingeniería de sistemas
Enfoque
Sistemas init, C POSIX
Ahora
4suite / 4rc
Código
github.com/vx9k

Trabajo

Programas pequeños que hacen una sola cosa cada uno, en el orden en que se ejecutan.

4suite

github.com/vx9k/4suite ↗

Una pila de arranque autocontenida en C: init, rc, logger y user, cada uno con su propio alcance y su propio README.

Lenguaje
C
Plataforma
Linux, BSD planeado
Compilación
Ninja
Licencia
MIT

Por ahora solo Linux. signalfd es una interfaz de Linux; el soporte para BSD está planeado.

Componentes

  • 4initdisponible

    PID 1 mínimo. Bloquea las señales y las lee con un signalfd, lanza 4rc con fork en su propia sesión y recoge a los procesos hijos en cada SIGCHLD. Inspirado en el init mínimo de rofl0r.

  • 4rcen progreso

    El gestor de servicios que arranca 4init. Está en sus inicios: su propio README dice que “larps as being functional”.

  • loggerplaneado

    Forma parte del alcance de la suite. Sin empezar.

  • userplaneado

    Forma parte del alcance de la suite. Sin empezar.

website

github.com/vx9k/website ↗

Un export estático de Next.js servido desde Cloudflare Workers. El paisaje de arriba es pixel art: se dibuja al compilar el sitio y llega como SVG. Los árboles se mueven con un viento hecho de CSS, el sol cambia la paleta y la página está en inglés, español y portugués.

Lenguaje
TypeScript
Framework
Next.js
Gráficos
SVG
Alojamiento
Cloudflare Workers

Principios

Tres reglas que resuelven casi todas mis decisiones de diseño antes de escribir una línea.

  1. Estándares antes que atajos

    Interfaces POSIX antes que extensiones de un fabricante. Si un programa corre en una sola plataforma, alguien lo decidió, y esa decisión necesita una razón.

  2. Una sola tarea, predecible

    Un init que solo gestiona procesos. Un gestor de servicios que solo gestiona servicios. Cuando el alcance crece sin control, suele ser la primera señal de que algo va a dejar de ser confiable.

  3. Lo bastante pequeño para entenderlo entero

    Mejor código que te cabe en la cabeza que código en el que tienes que confiar. Si no puedo explicar por qué está una línea, se va.

Herramientas

Lenguajes
C, TypeScript
Web
Next.js, React, Tailwind CSS
Utilidades
clang-format, Ninja, pnpm, Git, GitHub Actions

Contacto

Prefiero publicar algo pequeño que entiendo por completo que algo grande cuyos límites todavía estoy descubriendo.

github.com/vx9k Código de este sitio