Skip to content

Instantly share code, notes, and snippets.

View marcelgsantos's full-sized avatar

Marcel dos Santos marcelgsantos

View GitHub Profile

LLM Wiki

A pattern for building personal knowledge bases using LLMs.

This is an idea file, it is designed to be copy pasted to your own LLM Agent (e.g. OpenAI Codex, Claude Code, OpenCode / Pi, or etc.). Its goal is to communicate the high level idea, but your agent will build out the specifics in collaboration with you.

The core idea

Most people's experience with LLMs and documents looks like RAG: you upload a collection of files, the LLM retrieves relevant chunks at query time, and generates an answer. This works, but the LLM is rediscovering knowledge from scratch on every question. There's no accumulation. Ask a subtle question that requires synthesizing five documents, and the LLM has to find and piece together the relevant fragments every time. Nothing is built up. NotebookLM, ChatGPT file uploads, and most RAG systems work this way.

@marcelgsantos
marcelgsantos / sagas-transacionais.md
Created September 2, 2025 05:40
Anotações do Capítulo 12 sobre Sagas Transacionais do Livro Arquitetura de Software: As Partes Difíceis - Clube do Livro Tech Leads club

Sagas Transacionais - Arquitetura de Software: As Partes Difíceis

1. Anotações

  • O conceito de saga é anterior aos microsserviços.
  • Ele foi cunhado em 1987 para lidar com locks de banco de dados nas primeiras arquiteturas distribuídas.
  • Uma saga, para Chris Richardson, é uma sequência de transações locais onde cada atualização publicação um evento, disparando, assim, a próxima atualização na sequência. Se alguma dessas atualizações falhar, a saga emite uma série de atualizações compensatórias para desfazer as alterações anteriores feitas durante a saga.
  • Uma saga pode ser definida sob três características:
    • comunicação - síncrona ou assíncrona
  • consistência - atômica ou eventual
FROM alpine:3.17 AS ext-build
RUN echo "https://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories \
&& apk add --no-cache \
build-base \
c-ares-dev \
curl-dev \
librdkafka-dev \
mpdecimal-dev \
openssl-dev \
php82-dev \

Toda Monad é um tipo genérico. Para um tipo genérico ser uma monad, ele tem que suportar a seguinte "interface":

Dado que nossa monad é o tipo M onde A é algum tipo de parâmetro, devem existir as seguintes funçÕes:

function pure(A): M<A>
function bind<B>(M<A>, A -> M<B>): M<B>

A função pure "injeta" um valor dentro da monad com contexto "neutro".

Roadmap de estudos de SQL

Aviso: Muitas vezes detalhes de várias operações podem variar de banco para banco. Em questões onde fiquei em dúvida, este documento segue o funcionamento do PostgreSQL, pois é o banco que conheço melhor.

Pré-requisito: Álgebra Relacional básica

Antes de começar a escrever SQL, você precisa entender o modelo de como um banco de dados relacional funciona. Não precisa se aprofundar muito, mas você precisa entender como que dados e relacionamentos entre eles são representados. (Nota importante: Relacionamento e relação não são a

@rponte
rponte / using-uuid-as-pk.md
Last active June 8, 2026 16:53
Não use UUID como PK nas tabelas do seu banco de dados

Pretende usar UUID como PK em vez de Int/BigInt no seu banco de dados? Pense novamente...

TL;TD

Não use UUID como PK nas tabelas do seu banco de dados.

Um pouco mais de detalhes

@pedrosancao
pedrosancao / revisao-commit.md
Last active March 1, 2026 06:09
Manual de Revisão de Commit

Manual de Revisão de Commit

O uso de repositórios GIT tem diversos benefícios: trabalho em equipe, desenvolvimento de recursos separadamente, histórico das alterações, etc. Mas para disponibilizar todo o potencial é preciso um pouco de dedicação no momento do commit.

Não é preciso uma vasta experiência para já ter passado por situações como conflito de arquivos onde a mensagem não traz nenhuma informações relevante e é preciso inverstigar o que a outra pessoa estava desenvolvendo ou após

@Ocramius
Ocramius / psalm-compendium.php
Last active April 23, 2025 01:22
A small compendium of what is possible with `vimeo/psalm` 3.9.x to add some decent type system features to PHP
<?php
// -- types are a compile-time propagated concept
// https://psalm.dev/r/338f74a96c
class TheType
{
/** @var string */
public $foo = 'bar';
}
@Jiab77
Jiab77 / real-time-php-fpm-status.md
Last active May 13, 2026 06:16
This gist will explain you how to enable an undocumented feature of PHP-FPM which will give a real-time performance stats.

Real-time PHP-FPM Status

This gist will explain you how to enable an undocumented feature of PHP-FPM which will give a real-time performance stats.

Everybody knows the famous phpinfo() and the page it generates, right? Then the real-time PHP-FPM status page design is very similar.

image

Some informations from the top are not displayed to avoid security issues.

Enable PHP-FPM Status

@diego3g
diego3g / settings.json
Last active July 22, 2026 16:53
VSCode Settings (Updated)
{
"workbench.startupEditor": "newUntitledFile",
"editor.fontSize": 16,
"editor.lineHeight": 1.8,
"javascript.suggest.autoImports": true,
"javascript.updateImportsOnFileMove.enabled": "always",
"editor.rulers": [
80,
120
],