Atualmente trabalho como desenvolvedor frontend pleno no Pravaler, gosto de seguir boas práticas, refatorar código, criar testes automatizados e estou sempre em busca de aprender mais e melhorar.
Amo a comunidade open source, já fiz algumas contribuições em projetos open source como o react icons 876 e 900, mas a maioria das minhas contribuições ainda são em projetos privados, de qualquer forma pretendo continuar com essas contribuições à comunidade sempre que possível.
- Quick Note, uma extensão para anotações rápidas apertando ALT+A para Chrome e Edge
- Youtube Reload Um projeto para você talvez redescobrir algumas músicas legais.
- create-tag-and-release um github action que permite você criar releases e tags
- eslint-plugin-canonical-vocabulary Um plugin para eslint para impor um vocabulário coerente, evitando termos que possam gerar confusão, é um plugin super específico.
- Meu dia, um projeto para ser usado com uma Raspbery pi e com uma tela sensível ao toque, permitindo você definir tasks diárias e até definir cronômetros rápidos.
- page-text-replacer uma extensão do Chrome para editar páginas web, por exemplo, para deixar logs mais legíveis ou testar mudanças de textos em página web de sem precisar de mexer na aplicação.
- Dicas de Valorant, um projeto de estudos do SSR e SSG do nextjs
- Mod Camisa do Typescript no Cyberpunk é literalmente isso haha
- Jogo da velha Gamer, simplesmente me diverti bastante nesse projeto de faculdade.
- Linguagem Safira, um dos meus primeiros e piores projetos em termos de qualidade de código, estava no comecinho de carreira e queria entender até onde dava para levar um projeto sem seguir boas práticas (até porque eu nem sabia o que era isso, só queria sentir na pele a experiência de desenvolver uma aplicação complexa), foi divertido, nada escalável, mas criei uma IDE e uma linguagem de programação usando expressões regulares e criando do zero minha própria forma de criar algo que se parecesse com uma linguagem de programação.
- ESLint, um pouco além do básico Apenas algumas dicas de ESLint
Eu tenho vários outros projetos, mas esses acho que já estão de bom tamanho, foram os 7 primeiros que lembrei.
- Cyberpunk 2077, meu jogo preferido atualmente, já zerei várias vezes e acho que a CD Projekt RED fez um excelente trabalho consertando o jogo. Olha essa vista.
- Microsoft Flight Simulator 2020, é maravilho pilotar um F18 Super Hornet ou tentar ligar um 737-700. Eu facilmente viro o dia nesse simulador, e no modo sem ajuda é ainda mais divertido.
- Valorant, é divertido, não tem como negar haha
- Cod modern warfare 2019, um jogo incrível, sem palavras.
- Call of Duty 4: Modern Warfare, me ensinou a ficar longe de carros em um tiroteio haha
- Grand Theft Auto III, um dos jogos que mais me marcaram e talvez o mais importante para a Rockstar Games.
- Grand Theft Auto: San Andreas, um dos melhores jogos já criados na história.
- Guitar Hero III: Legends of Rock, um jogo muito divertido.
- Horizon Zero Dawn, um jogo espetacular.
- Far Cry 3, um dos melhores jogos já feitos, com o vilão mais icônico dos games para min.
- Gosto de tirar fotos do ambiente ao meu redor, algumas vezes elas ficam bem legais.
Typescript, com strict mode, proibição de anys, detecção de nulos e paths alias.
O vscode que é meu editor/IDE preferido, ele deve estar configurado e o projeto deve ter um .vscode integrando ESLint com o Prettier, e com regras adotadas no projeto. O output do Vscode deve estar sem erros.
Para mim, o eslint deve estar configurado e sempre tendo evoluções, as regras devem ajudar a diminuir apontamentos em code reviews, detectar bugs e problemas, de forma sempre a otimizar a produtividade. Quando o ESLint começa a agilizar o desenvolvimento, para mim, esse é o momento em que o objetivo máximo do ESLint foi alcançado.
Para min, é fundamental ter ferramentas de testes configuradas, como Jest, React Testing Library, Vitest e com cobertura integrada
Para testes e2e atualmente eu tenho mais experiência no Cypress e gosto muito de usar essa ferramenta no dia a dia, criando intercepts e até encontrando bugs usando diretamente o Cypress, sem precisar de recriar cenários mirabolantes e complexos em produção.
Sou apaixonado pelo processo de linting, sempre fico feliz quando minhas aplicações chegam a um nível onde o linting começa a evitar dores de cabeças. Para mim, esse é o ponto perfeito do linting, aquele em que você agradece o seu eu do passado por configurar essa ferramenta maravilhosa, também é onde a produtividade começa a aumentar de forma significativa.
Também é muito satisfatório quando testes quebram devido a um erro que cometi e não tinha percebido, isso faz a gente agradecer por criar aquele teste.
Ter ambiente de dev, de testes e um make file são fundamentais para ter ambientes locais robustos, no frontend nem tanto, mas em backends complexos é fundamental. Eu gosto muito de configurar tudo e criar os atalhos no Makefile.
Valorizo muito a cultura de criticar sempre, de mexer no código alheio e de não ter medo de mexer no código que não é seu, gosto muito de não ter essas fronteiras, para min isso garante o desenvolvimento saudável de qualquer aplicação.
Atualmente eu gosto bastante de usar o mongodb, deve ser porque a maioria dos projetos mais recentes meus fazia sentido usá-lo.
O tailwindcss atualmente é meu framework css preferido, ele traz os poderes do css de uma forma muito simples e dinâmica, e de cara ajuda a evitar important, combinando perfeitamente com frameworks modernos como react
Atualmente uso muito o Ubuntu, é meu sistema favorito há anos e nunca me deixou na mão, além de trazer a melhor experiência para desenvolvimento web sem concorrentes na minha experiência.
Atualmente o Nextjs e Vite são as minhas ferramentas preferidas de frontend, permitindo criarmos frontends estáveis, bonitos, eficientes e otimizados e de uma forma bem simples.
Acho fundamental seguir boas práticas, como não usar abreviações, manter padrões de escrita, manter padrões de formatação, tendo um prettier integrado ao ESLint e atuando continuamente, e resolvendo os problemas sozinhos ao salvar as mudanças com o CTRL+S. Também acho fundamental evitar códigos complexos, profundos, mágicos, etc. (existem dezenas ou centenas de boas práticas, e algumas podem não ser boas práticas em certos contextos.)
O projeto deve estar com commit lint, husk e ferramentas similares para detectar vulnerabilidades, rodar os testes, verificar se o commit está no padrão, etc.
Uma pipeline completa de cicd com o gcp ou github actions, com testes e linting já é muito produtiva.
É um bônus se a pipeline tiver um pré-build, criação de tags, releases, preenchimento de prs já, teste de acessibilidade, integração com coverage, deploy de storybook, criação de ambientes dinâmicos, etc. Existe um mundo em CICD, o básico já é bom, mas tem como ir bem além do básico.
Uma coisa que gosto muito é a possibilidade de revert rápidos, como o que o argocd permite, eu ainda não sei configurar, mas é uma feature que é extremamente util e valiosa para manter a aplicação estável.
Em um frontend, para min é preciso ter pelo menos o Sentry configurado, observando não apenas erros na aplicação, mas erros nas requests também, e conectadas a canais como slack, Telegram ou e-mail. Isso nos permite descobrir quando um problema começa desde a primeira request com problema, isso já abre caminhos para uma investigação e uma correção, muitas vezes antes de ter qualquer report de incidente.
Para um backend, para min é fundamental termos os logs da aplicação, de forma simples, clara, com informações uteis, sem contaminação e de uma forma que até algum leigo possa entender, isso nos permite criar métricas, dashboards, alertas e até queries de anomalias, onde você cria uma quey que dispara alertas caso surja qualquer log novo (anomalia).
Com um ambiente dessa forma, o frontend e o backend estão continuamente vivos e reportando quando acontece qualquer coisa estranha, isso nos permite detectar scans, regressões do projeto ou externas, criar dashboards de fluxo de produto e muito mais.
Logicamente, nem sempre tem como ter tudo isso, e às vezes temos que deixar algumas coisas de lado, mas faz parte, o importante é nunca se acomodar, e sempre voltar para resolver os problemas.
Além disso, essas são algumas preferências minhas quando escrevi esse texto. As coisas mudam e faz parte, eu entendo e mudo junto conforme a necessidade.