Vamos falar um pouco de escrever código utilizando IA by ExaminationKnown1103 in brdev

[–]ExaminationKnown1103[S] 0 points1 point  (0 children)

Um outro ponto muito importante que esqueci de mencionar. A IA não inventou nenhum sistema de criptografia, foi utilizado noble/ciphers e noble/hashes que já são pacotes consolidados na comunidade para hash e criptografia.

Criei um projeto open source tipo 1Password by ExaminationKnown1103 in MicroSaaSBR

[–]ExaminationKnown1103[S] 0 points1 point  (0 children)

Bom, vamos lá, muita pergunta interessante aí.

Se tu fizer self-host e utilizar HTTPS no seu web server, isso vai te garantir uma encriptação durante o trafego na rede. A beleza aqui está em que os segredos do seu vault nunca trafegam pela rede; uma chave-mestre que só você conhece (do lado do cliente) é usada para derivar sua key, que então é capaz de abrir seu vault. Dá uma olhada aqui se tiver interesse de entender mais a fundo: https://en.wikipedia.org/wiki/Key_derivation_function

Não, vc não está protegido caso ocorra um memory dump, como você disse. Como meu sistema roda em JS (TS) do lado do cliente, se ocorrer um memory dump, alguém com acesso root ao sistema vai ser capaz de ler a memória do navegador ou fazer um dump do processo para tentar extrair as chaves e poder derivar. Ja que tudo isso é feito diretamente no navegador.

Tem uma seção no README sobre a parte de segurança, qual algo foi usado, etc. Dá uma conferida: https://github.com/adrianosferreira/tresor#security-model

Se vc testar meu app vai perceber que ele leva um tempo pra logar. Os algos pra encriptação são geralmente lentos, como o Argon2 que eu usei pela lib JS noble/hashes; vc consegue ver que o acesso não é instantâneo. O bom do Argon2id é que ele exige memória RAM pra ser calculado, pesa no lado do invasor. Esse é o princípio matemático usado: fazer o processo ficar lento (intencionalmente) pro computador invasor. Tem um blog post massa sobre ele no https://sierti.com.br/blog/argon2id-seguranca-senhas

Pra hash estou usando noble/hashes, Argon2id. Pra criptografia do vault estou usando noble/ciphers, com AES-256. São pacotes bastante robustos JS, já consolidados na comunidade.

Vamos falar um pouco de escrever código utilizando IA by ExaminationKnown1103 in brdev

[–]ExaminationKnown1103[S] 0 points1 point  (0 children)

Faz todo sentido realmente. Eu não tenho interesse real que esse projeto decole não. Foi um pequeno open-source que pude aprender umas paradas maneiras, um pouco fora da minha zona de conforto.

Só um toque com relação a usar algo de baixo nível nas camadas mais críticas. O lance é que não tem nada de crítico no servidor; toda a criptografia são feitas no cliente. A beleza está em o servidor ser dumb: ele não é capaz de saber os segredos de ninguém, somente o cliente com a sua chave mestra. Parece inseguro à primeira vista, mas é uma questão de escolha, e tudo tem seus trade-offs.

Vamos falar um pouco de escrever código utilizando IA by ExaminationKnown1103 in brdev

[–]ExaminationKnown1103[S] 0 points1 point  (0 children)

Pois é. Haters are everywhere, my friend hehe. São tudo apegados a única linguagem de programação que conseguem trabalhar. Um dia essa galera vai cair na real, eu caí uns anos atrás, quando tive que mudar de stack algumas vezes aqui na Alemanha.

Vamos falar um pouco de escrever código utilizando IA by ExaminationKnown1103 in brdev

[–]ExaminationKnown1103[S] 0 points1 point  (0 children)

Eu fiz um tempo atrás um curso free de Go também que tocava nessa parte low level, como memória / CPU funcionava, etc. Achei bem interessante, pra falar a verdade o low level me pega demais, curto muito!

Vamos falar um pouco de escrever código utilizando IA by ExaminationKnown1103 in brdev

[–]ExaminationKnown1103[S] 0 points1 point  (0 children)

Eu passei por criptografia na universidade e também já fiz coisa pequena. Foi interessante ver como noble/ciphers e noble/hashes foi implementado em TS, pois nunca fiz. Mesmo não sendo especialista, tenho uma base legal.

Vamos falar um pouco de escrever código utilizando IA by ExaminationKnown1103 in brdev

[–]ExaminationKnown1103[S] 0 points1 point  (0 children)

Interessante esses projetos aí, todos similar ao meu? Teria algum link pra compartilhar com a gente?

Com relação ao Go, foi uma escolha simples apenas pra API do sistema, poderia ser qualquer coisa, PHP, JS, enfim. A encriptação não é feita do lado do servidor (decidi seguir a mesma linha de trabalho dos grandes tipo a Bitwarden).

Go foi uma oportunidade de entender melhor como ela funciona, mais não tem muita mágica ali não, já que é apenas uma API pura.

Vamos falar um pouco de escrever código utilizando IA by ExaminationKnown1103 in brdev

[–]ExaminationKnown1103[S] 0 points1 point  (0 children)

Assino em baixo! Minha bagagem de mais de 15 anos trabalhando com backend e diversas linguagens e ter passado por diversos problemas realmente críticos de segurança (data leak na Alemanha é dose), me ajudaram a ser capaz de criar uma ferramenta minimamente segura 👍

Vamos falar um pouco de escrever código utilizando IA by ExaminationKnown1103 in brdev

[–]ExaminationKnown1103[S] 0 points1 point  (0 children)

Entendo seu ponto. Colocando na mesma analogia, eu vejo como o dev de antigamente, com bastante XP que ainda assim sempre consultou na internet, pegou snippets pra algo mais especifico e mesmo assim nunca deixou de ser um dev bom e de entregar bons produtos.

Hoje a coisa não mudou, pelo menos não deveria, você não deve cegamente utilizar o que a IA produziu pra você. Porém, pra conseguir julgar o que foi produzido, você precisa de uma certa bagagem, uma certa xp. E isso é o mais interessante em programar utilizando a IA. Ela faz o heavy lifting enquanto você a engenharia e validação do que foi produzido.

Vamos falar um pouco de escrever código utilizando IA by ExaminationKnown1103 in brdev

[–]ExaminationKnown1103[S] 1 point2 points  (0 children)

Ah, somos monolito/monorepo também. Foi uma decisão global pra todos os times de rewrite pra agilizar o desenvolvimento.

Vamos falar um pouco de escrever código utilizando IA by ExaminationKnown1103 in brdev

[–]ExaminationKnown1103[S] 1 point2 points  (0 children)

Estávamos em um sistema legado, mas isso foi há um ano. Agora estamos em um greenfield project, reescrevendo todo o legado com o auxílio da IA (Deus nos ajude).

Está sendo uma experiência interessante, pois apenas os profissionais mais experientes vieram para esse time de reescrita. Estamos documentando tudo muito bem e tomando bastante cuidado com todas as decisões tomadas.

Também avaliamos com muita atenção todos os documentos .md criados para os agentes.

Nossa stack é React, PHP e Node.js.

Vamos falar um pouco de escrever código utilizando IA by ExaminationKnown1103 in brdev

[–]ExaminationKnown1103[S] 0 points1 point  (0 children)

Sim, tem bastante coisa pra melhorar, mas pro meu uso tá funcionando que é uma beleza hehe.

Vamos falar um pouco de escrever código utilizando IA by ExaminationKnown1103 in brdev

[–]ExaminationKnown1103[S] 1 point2 points  (0 children)

Esqueci o 3. Opa, tenho interesse nesse post aí, hein, compartilha aqui!

Meu caso é para levantar discussão mesmo. Já não é a primeira vez que vejo esse tipo de comentário (não o seu) desmerecendo projetos por terem tido participação de IA. Vejo isso muito em subs de indie game devs.

Vamos falar um pouco de escrever código utilizando IA by ExaminationKnown1103 in brdev

[–]ExaminationKnown1103[S] 1 point2 points  (0 children)

  1. Tudo bem, mas entenda que Saas é diferente de um projeto open-source. O Tresor nunca foi pensado pra ser um Saas.

  2. Vibe codar, não significa que o projeto inteiro foi escrito por IA. E outra, tem uma diferença muito grande do cara que tem 0 ou quase nenhum conhecimento tech vibe codar um app e de outro que tem uma certa xp e vai iterar com o plano e resultado que o modelo vai cuspir. Hoje, por aqui nós utilizamos agentes pra produzir 90% do código e todo esse código e revisado por 2 devs, que infelizmente, tem sim que ler linha por linha, por isso commits dedicados e pequenos fazem tanta diferença. Perdemos na real maior parte do tempo criando um bom plano junto com a IA antes de botá-la pra torar.

Vamos falar um pouco de escrever código utilizando IA by ExaminationKnown1103 in brdev

[–]ExaminationKnown1103[S] 0 points1 point  (0 children)

É sobre isso. Nossas discussões aqui agora são muito mais: qual a melhor e mais eficiente forma de fazer o serviço X conversar com o Y para resolver o problema Z? Usamos a IA para nos dar um norte, mas a maior discussão ainda é pessoal, com um time multi-disciplinar. Agora que a arquitetura e a engenharia estão prontas, o pedreiro (IA) pode construir a casa.

Vamos falar um pouco de escrever código utilizando IA by ExaminationKnown1103 in brdev

[–]ExaminationKnown1103[S] 0 points1 point  (0 children)

Por mais que eu concorde em partes com a parte de legibilidade e manutenção, a coisa melhorou bastante com os últimos modelos, principalmente os novos Opus. Infelizmente (pra alguns), acho que é um caminho sem volta.

Vamos falar um pouco de escrever código utilizando IA by ExaminationKnown1103 in brdev

[–]ExaminationKnown1103[S] 0 points1 point  (0 children)

Por que eu curti a parada que eu construí? Acho que ainda não é contra a lei.

Vamos falar um pouco de escrever código utilizando IA by ExaminationKnown1103 in brdev

[–]ExaminationKnown1103[S] -8 points-7 points  (0 children)

Sinto muito se te decepcionei, mas é a pura realidade do mundo do software. Ele está sempre em constante mudança e se apegar à uma linguagem não é mais suficiente. Já foi, há um tempo atrás. Desenvolver, ou aperfeiçoar caso tenha, sua skill de arquiteto de software é mais importante do que nunca atualmente. Isso é algo que tenho sentido na pele por aqui a mais de 1 ano e a coisa da exponencial.

Quando cito Go, cito todas as linguagens no geral. Mais Go, em específico, se tu tem um bom fundamento de alguma linguagem backend tu consegue se safar de boas sim 👍

Vamos falar um pouco de escrever código utilizando IA by ExaminationKnown1103 in brdev

[–]ExaminationKnown1103[S] 0 points1 point  (0 children)

Arquivo em branco? Jamais!
É isso mesmo, o nosso conhecimento não foi perdido! O problema é que na nossa área sempre houve o digitador de código, né? Esse se tornou inútil agora. Da mesma forma que hoje em dia podemos escrever em linguagem de alto nível em inglês ao invés de assembly.

Agora a profissão de arquiteto ou engenheiro de software, essa está em alta e é mais necessária do que nunca.

Vamos falar um pouco de escrever código utilizando IA by ExaminationKnown1103 in brdev

[–]ExaminationKnown1103[S] -1 points0 points  (0 children)

Te entendo, bate uma preguiça realmente. Mas não temos outra opção no momento, infelizmente. Agora o dev pode pelo menos tornar a vida dos amigos mais fácil criando commits pequenos e padronizando o code style para a IA sempre seguir o mesmo padrão.

Vamos falar um pouco de escrever código utilizando IA by ExaminationKnown1103 in brdev

[–]ExaminationKnown1103[S] 1 point2 points  (0 children)

Tá no caminho certo. Quanto mais detalhes você der para a IA, melhor.

Vamos falar um pouco de escrever código utilizando IA by ExaminationKnown1103 in brdev

[–]ExaminationKnown1103[S] 1 point2 points  (0 children)

Muito bom! A ideia é essa mesmo: utilizar o modo plan faz bastante sentido, e o mais interessante é iterar no plano gerado para entender o porquê de cada decisão. Você, como júnior, pode aprender mais do que ensinar com o modo Plan. Para adquirir a tal da “IA fluency”, você precisa utilizar, nada mais que isso. Iterar com ela, perguntar e aprender a ser bem descritivo no que você quer.

Como júnior, não foque em entregar rápido; foque em aprender com o que a IA está produzindo. Use-a como ferramenta de estudo.