ER-UFCG-2018
Analista de Sistemas e Pesquisador · LSI/UFCG · Campina Grande, PB
SLxS-ER2026 · OUTUBRO 2018
REVISADO OUTUBRO 2026 · Rev. 2026.10
Contato

Ezequias Rocha Pesquisa em IA e engenharia de software, do embedding de 128 dimensões ao endpoint testado

1FeaturesCaracterísticas

  • Replicação em PyTorch de um paper de inferência não supervisionada de amizades a partir de trajetórias de check-in (Information Sciences, vol. 626, 2023)
    • embeddings de 128-d por aspecto, projeções TransH / TransR / TransD
    • ~2.400 linhas de Python em 8 módulos
  • APIs Python com FastAPI e Pydantic v2; lint, testes e cobertura disparados por um único comando
  • Full stack TypeScript em três plataformas: API, web e mobile
  • Tempo real com WebSocket e consultas geoespaciais em MongoDB
  • Contribuição open source: auto-digitação corrigida para teclado ABNT no Wayland
  • Ensino de algoritmos: segment tree, lazy propagation, algoritmo de Mo
  • ~1.110 commits autorais em 22 repositórios próprios, de 2019 a 2026
  • Ambiente: Linux (Pop!_OS), Neovim em Lua, tmux

2ApplicationsAplicações

3DescriptionDescrição

Ezequias Rocha é analista de sistemas e pesquisador no Laboratório de Sistemas de Informação (LSI) da UFCG, bacharel em Ciência da Computação pela mesma universidade e mestrando.

O trabalho recente junta as duas metades do cargo. Na pesquisa, replicou em PyTorch o ANES, um modelo que infere amizades só a partir de onde e quando as pessoas fazem check-in, com tempo discretizado em 168 slots semanais e amostragem negativa por busca binária na CDF. Na engenharia, mantém uma API FastAPI em Python 3.14 em que o comando de teste roda o Ruff antes e gera o relatório de cobertura depois, e corrigiu no turbo-whisper um bug em que a aspa digitada saía como til em teclados brasileiros.

Antes disso vieram três produtos full stack em JavaScript e TypeScript (Ecoleta, DevRadar, be-the-hero), cada um com API, web e app mobile, e anos de trilhas de algoritmos montadas e gravadas para turmas da UFCG. No GitHub desde outubro de 2018: 50 repositórios públicos, 138 seguidores.

Device Information · Informações do dispositivo
Part numberPackageLocalização
ER-UFCG-2018DIP-40 (40 tecnologias, 4 portas)Campina Grande, PB, Brasil
Foto de Ezequias Rocha
Figura 3-1. Encapsulamento, vista frontal
ER-UFCG-2018SLxS-ER2026 · OUTUBRO 2018 · REVISADO OUTUBRO 2026

4Pin Configuration and FunctionsPinagem e funções

Encapsulamento DIP-40, vista superior. Cada pino é uma tecnologia que aparece no código dele; as portas agrupam por área. Passe o mouse, use o teclado ou toque num pino para acender os projetos que o usam. Tocar num projeto faz o caminho inverso.

Pinagem DIP-40, vista superior: 40 tecnologias em 4 portas ER ER-UFCG-2018 DIP-40 · LSI/UFCG Rev. 2026.10 1 PYTHON 2 PYTORCH 3 SKLEARN 4 PANDAS 5 NUMPY 6 JUPYTER 7 TRANSx 8 WHISPER 9 POSTGRES 10 MONGODB 11 FASTAPI 12 PYDANTIC 13 NODE 14 EXPRESS 15 NEXT.API 16 KNEX 17 MONGOOSE 18 SOCKETIO 19 SQLITE 20 SQL 21 TS 22 JS 23 REACT 24 RNATIVE 25 EXPO 26 NEXTJS 27 LEAFLET 28 VUE 29 CSS 30 WEBPACK 31 PYTEST 32 JEST 33 SUPERTST 34 RUFF 35 PRETTIER 36 POETRY 37 DOCKER 38 COMPOSE 39 CUDA 40 VERCEL IA/DADOS · 1–10 BACKEND · 11–20 FRONT/MOBILE · 21–30 QUALIDADE/INFRA · 31–40
PINO —PORTA —
Selecione um pino

40 pinos, 11 projetos. O painel mostra a função do pino e quais projetos ele alimenta.

Clique fixa a seleção; Esc limpa.

Tabela 4-1. Funções dos pinos
PinoNomeTecnologiaPortaFunçãoProjetos
1PYTHONPythonIA/DADOSLinguagem da pesquisa e das APIs recentes; 223 KB em repos próprios.replication-ANES, turbo-whisper, fast_zero, ia-ufcg, Estudos (Web, Python, Java)
2PYTORCHPyTorchIA/DADOSModelo ANES: embeddings, projeções e laço de treino.replication-ANES
3SKLEARNscikit-learnIA/DADOSAprendizado de máquina clássico na stack de IA.ia-ufcg
4PANDASPandasIA/DADOSManipulação de dados tabulares.ia-ufcg
5NUMPYNumPyIA/DADOSComputação numérica.ia-ufcg
6JUPYTERJupyterIA/DADOSNotebooks; 294 KB no volume de código.ia-ufcg
7TRANSxTransH / TransR / TransDIA/DADOSProjeções de embeddings de grafo de conhecimento.replication-ANES
8WHISPERWhisper / faster-whisperIA/DADOSReconhecimento de fala, 99 idiomas; self-hosted com CUDA.turbo-whisper
9POSTGRESPostgreSQLIA/DADOSBanco do clone-tabnews, de pé via Docker Compose.clone-tabnews
10MONGODBMongoDBIA/DADOSConsultas geoespaciais; $lookup nos estudos.DevRadar, Estudos (Web, Python, Java)
11FASTAPIFastAPIBACKENDCRUD REST de usuários com HTTPStatus e 404 tratados.fast_zero
12PYDANTICPydantic v2BACKENDEmailStr; schemas de entrada, saída, banco e lista.fast_zero
13NODENode.jsBACKENDRuntime das APIs JavaScript.Ecoleta, DevRadar, be-the-hero, clone-tabnews, Estudos (Web, Python, Java)
14EXPRESSExpressBACKENDServidor HTTP de três APIs e dos estudos.Ecoleta, DevRadar, be-the-hero, Estudos (Web, Python, Java)
15NEXT.APINext.js API routesBACKENDEndpoint /api/v1/status.clone-tabnews
16KNEXKnexBACKENDQuery builder com migrations e seeds.Ecoleta, be-the-hero
17MONGOOSEMongooseBACKENDODM com consultas geoespaciais.DevRadar
18SOCKETIOSocket.ioBACKENDAvisa devs próximos em tempo real.DevRadar
19SQLITESQLiteBACKENDBanco embarcado de Ecoleta e be-the-hero.Ecoleta, be-the-hero
20SQLSQL / MySQLBACKENDJoins, agregação, consultas parametrizadas sem SQL injection.Estudos (Web, Python, Java)
21TSTypeScriptFRONT/MOBILEEcoleta inteiro: API, web e mobile.Ecoleta
22JSJavaScriptFRONT/MOBILE828 KB, maior volume de código.DevRadar, be-the-hero, clone-tabnews, Estudos (Web, Python, Java)
23REACTReactFRONT/MOBILEFront web dos projetos full stack.Ecoleta, DevRadar, be-the-hero, Estudos (Web, Python, Java)
24RNATIVEReact NativeFRONT/MOBILEApps mobile com mapas e localização.Ecoleta, DevRadar, be-the-hero
25EXPOExpoFRONT/MOBILEexpo-location, expo-mail-composer, mapas.Ecoleta, DevRadar, be-the-hero
26NEXTJSNext.js 13FRONT/MOBILEFront e API do clone-tabnews.clone-tabnews
27LEAFLETLeaflet / react-leafletFRONT/MOBILEMapa de pontos de coleta na web.Ecoleta
28VUEVueFRONT/MOBILEEstudos de front; 11 KB.Estudos (Web, Python, Java)
29CSSCSS / HTMLFRONT/MOBILE392 KB de CSS e 330 KB de HTML.Estudos (Web, Python, Java)
30WEBPACKWebpack / GulpFRONT/MOBILEBuild de front nos estudos.Estudos (Web, Python, Java)
31PYTESTpytest + pytest-covQUALIDADE/INFRACobertura com relatório HTML.fast_zero
32JESTJestQUALIDADE/INFRATeste de integração e teste de API.clone-tabnews, be-the-hero
33SUPERTSTSupertestQUALIDADE/INFRARequisições HTTP reais dentro do Jest.be-the-hero
34RUFFRuffQUALIDADE/INFRARegras I, F, E, W, PL e PT, em preview.fast_zero
35PRETTIERPrettierQUALIDADE/INFRAFormatação de JS.clone-tabnews
36POETRYPoetryQUALIDADE/INFRADependências e ambiente Python.fast_zero
37DOCKERDockerQUALIDADE/INFRAPostgres local; servidor faster-whisper com GPU.clone-tabnews, turbo-whisper
38COMPOSEDocker ComposeQUALIDADE/INFRAinfra/compose.yaml.clone-tabnews
39CUDACUDAQUALIDADE/INFRA--gpus all no faster-whisper.turbo-whisper
40VERCELVercelQUALIDADE/INFRADeploy do clone-tabnews.clone-tabnews

Ambiente de desenvolvimento (Linux Pop!_OS, Neovim em Lua, tmux, Wayland/X11, Git) não ocupa pinos: é a alimentação. Ver 8.3.

Ezequias Rocha · PinagemSLxS-ER20262
ER-UFCG-2018SLxS-ER2026 · OUTUBRO 2018 · REVISADO OUTUBRO 2026

5SpecificationsEspecificações

5.1Absolute Maximum Ratings Limites máximos absolutos(1)

ParâmetroCondiçãoMín.Máx.Unidade
Commits autorais em um anopico em 20223256commits
Commits autorais acumulados22 repositórios próprios, sem forks~1.110commits
Commits dele em um único repositórioWeb-Estudos, de 844 no total479commits
Volume de código por linguagemSQL até JavaScript6828KB
Maior módulo de um projeto de pesquisamodel.py, ANES776linhas
Python em um único projetoANES, 8 módulos~2.400linhas
Plataformas por produtoEcoleta, DevRadar, be-the-hero3API · web · mobile
Repositórios públicosperfil GitHub50repos
Faixa de operaçãoconta GitHub ativaout/20182026ano

(1) Valores medidos, não extrapolados: commits contados só do autor, clonando os 22 repositórios próprios. Volume de código mede bytes por linguagem, não domínio da linguagem.

5.2Electrical Characteristics Características elétricas

ParâmetroCondições de testeMín.Típ.Máx.Unidade
ANES · replicação de paper, PyTorch
Dimensão do embeddingpor aspecto: usuário, POI, tempo, categoria, geografia128d
Resolução temporaldia da semana × hora, fuso corrigido por offset em minutos168slots
Taxa de aprendizadotreino em ANES.py1e-4
Iterações de treinodistância L11000it
Recortes de dadosNYC_20, 40, 60, 80, 10020100NYC_n
Custo da amostragem negativabusca binária sobre a CDFO(log n)por amostra
Termos da função de perdamargin, orthogonal, norm3termos
turbo-whisper · contribuição open source
Idiomas reconhecidosOpenAI Whisper99idiomas
Backends de digitaçãowtype, xdotool, evdev, PyAutoGUI, clipboard5em cadeia
Diff da featureidioma, gravação headless, erro offline+143linhas
Interface do servidorfaster-whisper em Docker, --gpus all127.0.0.1só loopback
fast_zero · API FastAPI
Versão do interpretadorPoetry3.14Python
Famílias de regras do linterRuff, preview: I, F, E, W, PL, PT6famílias
Produtos full stack
Commits dele por produtobe-the-hero · DevRadar · Ecoleta122123124commits
Versão do frameworkclone-tabnews, Next.js13

5.3Typical Performance Characteristics Curvas típicas

Commits autorais por ano 2019: 21; 2020: 207; 2021: 200; 2022: 256; 2023: 172; 2024: 193; 2025: 61; 2026: 3. 0 50 100 150 200 250 300 2019 2020 2021 2022 2023 2024 2025 2026 21 207 200 256 172 193 61 3 Commits autorais Ano só open source pico
Figura 5-1. Commits autorais por ano. 2026 conta só a contribuição open source.
Volume de código por linguagem em KB JavaScript: 828 KB; CSS: 392 KB; HTML: 330 KB; Jupyter: 294 KB; Python: 223 KB; TypeScript: 55 KB; Java: 36 KB; Lua: 11 KB; Vue: 11 KB; SQL: 6 KB. 0 100 200 300 400 500 600 700 800 900 JavaScript 828 CSS 392 HTML 330 Jupyter 294 Python 223 TypeScript 55 Java 36 Lua 11 Vue 11 SQL 6 Volume em repositórios próprios (KB)
Figura 5-2. Volume de código por linguagem, em KB. Mede quantidade, não nível.
Ezequias Rocha · EspecificaçõesSLxS-ER20263
ER-UFCG-2018SLxS-ER2026 · OUTUBRO 2018 · REVISADO OUTUBRO 2026

6Timing DiagramDiagrama de temporização

Um ciclo de clock por ano. Cada sinal sobe quando a área aparece nos repositórios e desce quando some. O barramento COMMITS carrega o número de commits autorais do ano; em 2018 está em alta impedância. Selecione uma coluna para ler o ciclo.

Diagrama de temporização 2018 a 2026: sinais por área, ligando e desligando por ano 2018 2019 2020 2021 2022 2023 2024 2025 2026 CLK (ano) COMMITS[ano] Z 21 207 200 256 172 193 61 3 GITHUB ESTUDOS JAVA_UFCG FULLSTACK_JS ALGO_ENSINO IA_PESQUISA NVIM_TMUX PY_API OPEN_SRC
t = —

Passe o mouse ou toque numa coluna de ano.

  • ESTUDOS Web-Estudos e Python-Estudos
  • JAVA_UFCG coisa, agenda, controle-de-alunos
  • FULLSTACK_JS Omnistack, NLW, clone-tabnews
  • ALGO_ENSINO trilhas, vJudge, ATAL, aa
  • IA_PESQUISA ia-ufcg, replication-ANES
  • NVIM_TMUX Neovim em Lua, depois tmux
  • PY_API fast_zero
  • OPEN_SRC turbo-whisper
Ezequias Rocha · TemporizaçãoSLxS-ER20264
ER-UFCG-2018SLxS-ER2026 · OUTUBRO 2018 · REVISADO OUTUBRO 2026

7Application InformationInformações de aplicação

Cada projeto aparece como um circuito de aplicação: o diagrama de blocos da arquitetura, os requisitos de projeto e o procedimento detalhado. A ordem segue o peso técnico, não a data.

7.1replication-ANES

2024pesquisaPyTorchrepositório ↗

Replica Aspect-oriented unsupervised social link inference on user trajectory data (Byun, Choi e Kim, Information Sciences, vol. 626, 2023, doi 10.1016/j.ins.2023.01.022). O problema: descobrir quem é amigo de quem sem nenhum rótulo de amizade, olhando só as trajetórias de check-in do Foursquare em Nova York.

Check-insentradaFoursquare, Nova Yorkusuário POI hora cat.preprocessing.py168 slots (dia × hora)fuso: offset em minutosdata.pyNYC_20 … NYC_100pares verd./falsostreino · val. · testemodel.py · 776 l.emb. 128-d × 5 aspectosusuário POI tempo cat. geoproj. TransH/R/DANES · _GEO · LBGC_v4 …loss.pymargin lossorthogonal lossnorm lossnegativos: CDF O(log n)ANES.py · treinolr 1e-4 · L11000 iterações→ laços de amizade→ t-SNE do espaçotriplas aspecto-orientadas + negativos amostradosprojection.py · graphutils.py · utils.py dão suporte aos três blocos de baixo
Figura 7-1. Circuito de aplicação: pipeline do ANES, dos check-ins ao espaço de embeddings.

Design requirements

  1. Cada check-in carrega quatro aspectos (lugar, hora, categoria, geografia) além do usuário. O modelo precisa aprender um espaço para cada um, não um vetor único.
  2. Hora local, não UTC: o mesmo "sábado 22h" tem de cair no mesmo slot em qualquer fuso.
  3. Treino sem supervisão exige negativos baratos; amostrar de uma distribuição com milhares de POIs não pode ser O(n) por amostra.

Detailed design procedure

O preprocessing.py converte o horário com o offset em minutos e projeta em 168 slots (7 dias × 24 horas). Cada check-in vira uma tripla aspecto-orientada, e o model.py (776 linhas) aplica projeções no estilo TransH, TransR e TransD, emprestadas de embeddings de grafo de conhecimento. Variantes: ANES, ANES_GEO, ANES_GEO_YELP, ANES_GEO_Others, LBGC_v4.

A perda soma margin loss, uma orthogonal loss que mantém o vetor de relação ortogonal ao hiperplano e uma norm loss. Os negativos saem de busca binária sobre a CDF. Treino com lr 1e-4, distância L1, 1000 iterações; t-SNE para inspecionar o espaço aprendido.

# esboço da ideia da amostragem negativa (não é o código do repositório)
import bisect, itertools, random

cdf = list(itertools.accumulate(pesos))      # pesos por POI, pré-computado uma vez
def amostra_negativo():
    u = random.random() * cdf[-1]
    return bisect.bisect_left(cdf, u)        # O(log n) por amostra

7.2turbo-whisper

set/2026open sourcePython · PyQt6fork ↗

Fork de knowall-ai/turbo-whisper, ditado por voz no estilo SuperWhisper: OpenAI Whisper com 99 idiomas, interface PyQt6, atalho global e waveform. Ele aperta o atalho, fala, e o texto é digitado na janela em foco. No layout brasileiro, era aí que quebrava.

tecla'usuário dita aspaevdevKEY_APOSTROPHEscancode US crulayout ABNTdead key ~mesma tecla físicana tela~caractere errado
Figura 7-2. Modo de falha: o evdev envia scancodes crus assumindo US-QWERTY.
BUG ABNT

O evdev não digita caracteres, aperta teclas físicas. A posição da aspa no US-QWERTY é, no ABNT2, a tecla morta do til. Resultado: ' virava ~. O conserto não é mapear tecla por tecla, é usar uma ferramenta que digite texto respeitando o layout ativo.

textotranscritosaída do WhisperWayland?wtypedigita o caracterexdotool type--clearmodifiers--delayfallbackevdevPyAutoGUIclipboardsimnãofalhoufalhouscancode US cru
Figura 7-3. Circuito de aplicação: cadeia de fallback da auto-digitação depois do fix.
# reconstrução simplificada da lógica do commit
# fix: prefer xdotool/wtype over evdev for auto-typing
wayland = os.environ.get("WAYLAND_DISPLAY") or \
          os.environ.get("XDG_SESSION_TYPE") == "wayland"

if wayland and shutil.which("wtype"):
    run(["wtype", texto])
elif shutil.which("xdotool"):
    run(["xdotool", "type", "--clearmodifiers", "--delay", atraso, texto])
else:
    digitar_por_evdev(texto)   # depois PyAutoGUI, depois clipboard

Revisões enviadas

fix
prefer xdotool/wtype over evdev for auto-typing
feat
language selection, headless recording, clearer offline error · +143 linhas em api.py, config.py, main.py
docs
self-hosted setup notes for Pop!_OS

Servidor self-hosted

Documentou o faster-whisper rodando em Docker com CUDA (--gpus all), modelo Systran/faster-whisper-small, porta publicada só em 127.0.0.1 e cache do HuggingFace montado em volume para não baixar o modelo a cada subida. Áudio via PipeWire e PortAudio.

7.3fast_zero

2025FastAPI · Python 3.14repositório ↗

Um CRUD REST de usuários pequeno de propósito, onde o interessante é a engenharia em volta. Pydantic v2 separa os contratos em UserSchema (entrada), UserPublic (saída, sem senha), UserDB e UserList, com EmailStr validando o e-mail. Respostas usam HTTPStatus e o 404 é tratado explicitamente.

task testtaskipypre_testlint · Ruffpytest+ pytest-covpost_testcoverage htmlTestClient em fixture · I F E W PL PT · relatório em htmlcov/
Figura 7-4. Esteira de qualidade amarrada pelo taskipy.

Não dá para rodar teste sem passar no lint: o taskipy define pre_test = lint e post_test = coverage html. O Ruff roda em preview com as famílias I, F, E, W, PL (regras do pylint) e PT (estilo pytest). Dependências no Poetry; o TestClient do FastAPI entra como fixture.

7.4clone-tabnews

2023–24Next.js 13 · Postgresrepositório ↗demo ↗
Jestteste de integraçãobate no endpoint realNext.js 13GET /api/v1/statusdeploy na VercelpgclientePostgresfetchDocker Compose · infra/compose.yaml
Figura 7-5. Circuito de aplicação: teste de integração contra o banco real em contêiner.

Next.js 13 com o cliente pg falando com um Postgres de pé via Docker Compose (infra/compose.yaml). O endpoint /api/v1/status é coberto por teste de integração no Jest, que faz a requisição de verdade em vez de mockar o banco. Prettier, .editorconfig e .nvmrc fixam formato e versão do Node; deploy na Vercel.

Ezequias Rocha · AplicaçãoSLxS-ER20265
ER-UFCG-2018SLxS-ER2026 · OUTUBRO 2018 · REVISADO OUTUBRO 2026

7.5Ecoleta

2020NLWTypeScript · 3 plataformas · 124 commitsrepositório ↗

Marketplace de pontos de coleta de resíduos por geolocalização: a entidade cadastra o ponto na web, com foto e posição no mapa, e o morador encontra pelo app os pontos próximos que aceitam o tipo de resíduo que ele tem.

MobileReact Native + Exporeact-native-mapsexpo-locationexpo-mail-composerReact NavigationWebReact + TypeScriptLeaflet / react-leafletreact-dropzonereact-routerAPINode + ExpressCORSCelebrate / Joi valida body e paramsMulter upload da fotorotas de pontos e itensKnexmigrationsseedsSQLiteHTTP/JSONmultipart
Figura 7-6. Circuito de aplicação: dois clientes, uma API, um banco.

API. Node, Express e Knex com migrations e seeds sobre SQLite. Celebrate (Joi) valida o corpo antes do controller; Multer recebe a imagem do ponto; CORS liberado para o front.

Clientes. Web em React e TypeScript com Leaflet / react-leaflet para escolher a posição, react-dropzone para a foto e react-router. Mobile em React Native com Expo: react-native-maps, expo-location, expo-mail-composer para contatar o ponto, React Navigation.

7.6DevRadar

2020OmnistackWebSocket · 123 commitsrepositório ↗
Mobile · Expomapa + localizaçãoWebView (perfil)socket.io-clientWeb · Reactcadastro de devlistaBackendExpressSocket.io emite para quem está no raioaxios → GitHubMongoDBMongoose · geoAPI do GitHubnome, avatar, bioWebSocketHTTPgeo
Figura 7-7. Circuito de aplicação: o cadastro de um dev dispara aviso por socket para quem está perto.

Backend Express com MongoDB/Mongoose usando consultas geoespaciais para achar devs num raio. Ao cadastrar, o servidor busca nome, avatar e bio na API do GitHub (axios) e emite pelo Socket.io para os clientes conectados naquela região. Web em React; mobile em Expo com mapa, localização, WebView para abrir o perfil e socket.io-client.

7.7be-the-hero

2020OmnistackJest + Supertest · 122 commitsrepositório ↗
Jest + Supertestcross-envambiente de testeExpress + Celebraterotas de ONGs e casosvalidação na bordaKnexquerybuilderSQLiteHTTPReactRN / Expo
Figura 7-8. Circuito de aplicação: a API é exercitada por requisições HTTP reais nos testes.

Express, Knex, SQLite e Celebrate, como no Ecoleta, mas aqui a API tem testes: Jest com Supertest sobe a aplicação e faz requisições de verdade, e o cross-env separa o ambiente de teste. Front em React, app em React Native com Expo.

8Device and Documentation SupportSuporte e documentação

8.1Ensino de algoritmos e programação competitiva

Montou trilhas semanais de Aprendizado de Algoritmos com listas no vJudge e gravou vídeos resolvendo as questões para os alunos.

Trilha iniciante

  • ad hoc, two pointers, soma acumulada, busca binária
  • fila, heap, pilha, set, mapa
  • GCD/LCM, crivo, aritmética modular, exponenciação binária

Trilha avançada

  • Segment Tree
  • Lazy Propagation
  • Square Root Decomposition e algoritmo de Mo
[0]3[1]1[2]4[3]1[4]5[5]9[6]2[7]6[0,1]4[2,3]5[4,5]14[6,7]8[0,3]9[4,7]30lazy +2[0,7]39filhos ainda sem o +2
Figura 8-1. Lazy propagation: somar +2 em [4,7] marca um nó e corrige a soma em O(log n), sem descer até as folhas.

ATAL (Análise e Técnicas de Algoritmos, UFCG): soluções do Codeforces organizadas por paradigma: força bruta, backtracking, guloso, divisão e conquista, programação dinâmica e grafos (BFS/DFS).

8.2ia-ufcg

2022–23Jupyterrepositório ↗

Quizzes de Inteligência Artificial da UFCG em notebooks. É de onde vem boa parte dos 294 KB de Jupyter.

8.3nvim / tmux

Neovim configurado em Lua: LSP, Telescope, Treesitter, Harpoon, Fugitive, Undotree, Trouble, Zen Mode, refactoring e cloak. Mais a config de tmux. Roda em Pop!_OS.

8.4Repositórios de estudo de longo prazo

RepositórioPeríodoCommits deleConteúdo
Web-Estudos2019–2025479 / 844JS do zero ao avançado (map/filter/reduce, imperativo vs declarativo), AJAX (XHR, fetch, axios, jQuery), Express, Gulp, Webpack, Vue, React, SQL relacional (joins, agregação), MongoDB ($lookup)
Python-Estudos2019→105banco de dados com consultas parametrizadas, incluindo "selecionar sem SQL injection"; CRUD; paginação com limit/offset
ibdmddatasets para BI: lojas × gerentes × vendas
coisa · agenda-de-contatos · controle-de-alunos2020Java no início da UFCG; coisa é o Controle Institucional da Situação Acadêmica
audio-speed-controller2020extensão que acelera os áudios do WhatsApp Web
bin2dec · casa-criativa · doeexercícios e projetos da MaratonaDev
Ezequias Rocha · Aplicação e suporteSLxS-ER20266
ER-UFCG-2018SLxS-ER2026 · OUTUBRO 2018 · REVISADO OUTUBRO 2026

9Revision HistoryHistórico de revisões

Rev.DataMudança
2026.09cset/2026fix: prefer xdotool/wtype over evdev for auto-typing · turbo-whisper. A aspa volta a ser aspa no ABNT.
2026.09bset/2026feat: language selection, headless recording, clearer offline error · +143 linhas
2026.09aset/2026docs: self-hosted setup notes for Pop!_OS · faster-whisper com CUDA em Docker
20252025fast_zero: FastAPI, Pydantic v2, Python 3.14, Ruff e cobertura. Nova turma de algoritmos (aa).
20242024replication-ANES: ~2.400 linhas de PyTorch replicando paper da Information Sciences. Config de tmux.
20232023–24clone-tabnews: Next.js, Postgres em Docker Compose, teste de integração.
20222022–23IA na UFCG (ia-ufcg). Neovim em Lua. Ano de pico: 256 commits.
20212021ATAL: Codeforces por paradigma.
20202020Ecoleta (124 commits), DevRadar (123), be-the-hero (122). Java na UFCG. Primeiras trilhas de algoritmos.
20192019Início de Web-Estudos e Python-Estudos.
*out/2018Versão inicial: conta no GitHub.

10Ordering InformationInformações para pedido

Para conversar sobre pesquisa, backend ou um projeto, use um destes canais.

Orderable deviceCanalEndereçoUso
ER-UFCG-2018/GHGitHubgithub.com/ezequiasORcódigo, issues, contribuições
ER-UFCG-2018/LILinkedInlinkedin.com/in/ezequias-rochacontato profissional
ER-UFCG-2018/XXx.com/ezolivr@ezolivr
ER-UFCG-2018/IGInstagraminstagram.com/ezequiasr@ezequiasr

Números deste documento vêm de 22 repositórios próprios clonados e lidos, sem forks. Não há percentuais de habilidade aqui de propósito: volume de código mede quanto foi escrito, não quão bem.