Pular para o conteúdo
vx

Alguns pixels fazem coisas: experimente o sol ou a lua, a árvore grande e a biruta.

vxEscrevo software feito para durar mais que a máquina onde roda.

Escrevo sistemas init mínimos em C. O código é pequeno o bastante para ler de uma vez só e segue as interfaces POSIX sempre que possível.

Função
Engenharia de sistemas
Foco
Sistemas init, C POSIX
Agora
4suite / 4rc
Código
github.com/vx9k

Trabalho

Programas pequenos, cada um com uma só tarefa, na ordem em que rodam.

4suite

github.com/vx9k/4suite ↗

Uma pilha de boot independente em C: init, rc, logger e user, cada um com escopo próprio e README próprio.

Linguagem
C
Plataforma
Linux, BSD planejado
Build
Ninja
Licença
MIT

Por enquanto, só Linux. signalfd é uma interface do Linux; o suporte a BSD está planejado.

Componentes

  • 4initdisponível

    PID 1 mínimo. Bloqueia os sinais e os lê por um signalfd, faz fork do 4rc em uma sessão própria e recolhe os processos filhos a cada SIGCHLD. Inspirado no init mínimo do rofl0r.

  • 4rcem andamento

    O gerenciador de serviços que o 4init inicia. Ainda está no começo: o próprio README diz que ele “larps as being functional”.

  • loggerplanejado

    Faz parte do escopo da suíte. Ainda não começou.

  • userplanejado

    Faz parte do escopo da suíte. Ainda não começou.

website

github.com/vx9k/website ↗

Um export estático de Next.js servido pelo Cloudflare Workers. A paisagem no topo é pixel art, desenhada no build do site e entregue como SVG. As árvores se movem com um vento feito de CSS, o sol troca a paleta e a página está em inglês, espanhol e português.

Linguagem
TypeScript
Framework
Next.js
Gráficos
SVG
Hospedagem
Cloudflare Workers

Princípios

Três regras que resolvem quase todas as minhas escolhas de projeto antes de eu escrever uma linha.

  1. Padrões em vez de atalhos

    Interfaces POSIX em vez de extensões de um fornecedor. Se um programa roda em uma só plataforma, alguém decidiu isso, e a decisão precisa de um motivo.

  2. Uma tarefa, feita de forma previsível

    Um init que só gerencia processos. Um gerenciador de serviços que só gerencia serviços. Quando o escopo cresce sem controle, costuma ser o primeiro sinal de que algo vai deixar de ser confiável.

  3. Pequeno o bastante para entender por inteiro

    Código que cabe na sua cabeça é melhor que código em que você precisa confiar. Se eu não sei explicar por que uma linha está ali, ela sai.

Ferramentas

Linguagens
C, TypeScript
Web
Next.js, React, Tailwind CSS
Utilitários
clang-format, Ninja, pnpm, Git, GitHub Actions

Contato

Prefiro lançar algo pequeno que eu entendo por completo do que algo grande cujos limites ainda estou descobrindo.

github.com/vx9k Código deste site