🌿 Docker ≠ Docker Desktop
Registrando como utilizo Docker sem Docker Desktop e porque eu acho melhor. TL;DR Docker Desktop é só uma GUI e um wraper na instalação dos componentes necessários É possível instalar esses componentes separadamente (Linux host, docker engine e docker CLI) O host e a engine existem somente para Linux. Então fora do Linux é necessário uma VM Linux com boa e rápida interação com o host, principalmente em rede e volume Pacotes: Ubuntu: (apt install) docker-ce docker-ce-cli containerd.io Windows...
Read post
🌱 ADR - Architecture Decision Records
Registro de Decisões Arquiteturais (ADRs) Why: registrar decisões arquiteturais significativas What: registros da decisão em texto e contextualizados When: quando qualquer proposta significativa surge (proposta, aceita, ou rejeitada) How: criar uma pasta no repositório e um arquivo para cada decisão Exemplos de ADRs /adr/0000-architecture-decision-records.md (meu modelo para sugerir o uso de ADRs, quando aplicável, em um novo repositório) # Architecture Decision Records ## Status `propose...
Read post
🌿 Guia: produtividade para novos programadores
Esse guia fornece sugestões de conteúdo que vão além do estudo usual de programação, especialmente destinado a pessoas que fizeram transição de área ou não tem muita proficiência ainda com o uso de computadores. O guia é dividido em diversos pilares, contendo diferentes conteúdos em cada um, alguns bastante iniciantes e outros menos, escolha os que fazem sentido para seu contexto. Sugiro fazer de forma linear (digitalização, digitação, sistema operacional e então IDE), mas pode ser como prefe...
Read post
🌱 PoC Azure FrontDoor
PoC to secure Azure Function behind an Azure FrontDoor, gaining load balancing, DSA and WAF capabilities. TL/DR Gist containing artefacts: https://gist.github.com/myreli/fd37b6f29957c9b9180bed984ae5f1bd Total costs R$0.21 on Azure App Service (Due to the serverfarms, all other resources fall into always free services) Concept Expose azure apps and functions through a secure FrontDoor instead of direct access (which is insecure) or API Gateway setup (which is a bit more complex, but combi...
Read post
🌱 [talks] Architectural Integration Styles
Slides presented on Enterprise Integration Styles talk. Content extracted from Enterprise Integration Patterns. 🌱 Seedlings são ideias que recém tive e precisam de cultivo, não foram revisadas ou refinadas. O que é isso? ...
Read post
🌱 PoC ETL from Azure Storage to CosmosDB
PoC to transfer a CSV file from Azure Storage to Azure CosmosDB. TL/DR Gist containing artifacts: https://gist.github.com/myreli/fea928cf46d328838697833fd354eb23 Simple ETL implementation to transfer a file from a storage to a database (a "modern" implementation of the file transfer integration style) Total costs R$0.69 on Azure Data Factory (Storage and CosmosDB fall into always free services) Concept Azure Storage Blob → Azure Data Factory → CosmosDB [File: 295f22f3-158f-4a63-9b34-646...
Read post
🌱 A Jornada de Desenvolvedor para Arquiteto (Developer to Architect)
I'm a Software Architect, Now What? Developer to Architect I'm a Software Architect, Now What? Materiais Livros Fundamentals of Software Architecture: An Engineering Approach Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions Your Code as a Crime Scene: Use Forensic Techniques to Arrest Defects, Bottlenecks, and Bad Design in Your Programs Cursos Developer to Architect Software Architecture Fundamentals atualizado: https://www.oreilly.com/videos/sof...
Read post
🌿 [talks] Introdução Rápida a Criptografia Assimétrica
Versão textual da tech talk de introdução à criptografia assimétrica. Conceitos Criptografia Criptografia Assimétrica Exemplos: Aplicativos de Mensagens Ambiente Node.js >= 14 <= 18 TypeScript Jest Instruções podem ser encontradas aqui. Demonstração // src/AsymmetricCrypto.test.ts import { AsymmetricCrypto } from "./AsymmetricCrypto" /** * Async-Await (ou callbacks) * Node.js Event Loop */ it("should enable secure message exchange between Ana and Bob", async () => { ...
Read post
🌱 [Resumo] RabbitMQ in Depth: An in-depth tour of message properties
Esse é resumo do capítulo 3 do RabbitMQ in Depth com foco em quais são as propriedades disponíveis e como impactam as mensagens. As propriedades da mensagem ficam nos headers da mensagem (Basic.Properties). Propriedades content-type Define o tipo de conteúdo do corpo da mensagem content-encoding Define se o conteúdo está codificado ou comprimido de alguma forma. Por exemplo aqui podemos definir que o corpo das mensaagens estará comprimido utilizando GZIP, e assim os consumidores consegue...
Read post
🌱 KOTLIN IDIOMÁTICO: Valor padrão ou inicialização tardia?
Em Kotlin, o uso inicialização tardia torna inicialização fora do construtor bem mais elegante. Em alguns casos não conseguimos injetar as propriedades via construtor, como em testes, e tendemos a aplicar um valor padrão, por exemplo: var cobaia: Cobaia = null // ... várias coisas até a cobaia estar disponível cobaia = Myreli() Isso é muito comum com testes, porque em vez de inicializar no construtor, inicializamos em uma etapa de setup para nos aproveitarmos da injeção de dependências com mo...
Read post
🌱 [Gestão de Incidentes] Postmortem: aprendendo com os próprios erros
Uma abordagem sugerida para *postmortem *e gestão de incidentes (SRE at Google). RASCUNHO O que é e como aplicar postmortem. Registro por escrito de um incidente, o impacto, a resolução e as causas raízes Diretiva Primária "Independentemente do que descobrimos, nós entendemos e acreditamos de verdade que todos fizeram o melhor trabalho que podiam, dado o que se sabia na época, suas habilidades e aptidões, os recursos disponíveis e a situação em questão." Premissas Focar em uma reun...
Read post
🌱 Por que eu gosto de Node.js? Streams FTW
Devaneios sobre a evolução da experiência de desenvolvimento no JavaScript e porque eu gosto de Node. devaneios #javascript #node #streams A primeira vez que eu trabalhei com JavaScript foi uma experiência tenebrosa. Era um grande ecommerce construído em Java, com as famosas JSPs servindo HTML, JS e ~~só alegria~~ tristeza. 📥 [side-topic] a página era "responsiva" – carregava as duas versões (mobile e web) para o cliente, testava o agente do navegador e então utilizava o famoso $("#element"...
Read post
🌿 Uma breve comparação entre await e then para lidar com operações assíncronas
async + await vs then e legibilidade de código.Em construção!Existe uma conversa frequente nos fóruns de Node.js acerca de como lidar com funções assíncronas. Ainda que async e then nos fornecem a mesma funcionalidade para lidar com código assíncrono em JavaScript, ambas são distintas em seu funcionamento e efeitos colaterais.Essa não é uma introdução as promises ou programação assíncrona, apenas devaneios sobre formas de lidar com o resultado dessas operações. Aqui estão excelentes materiais pa...
Read post
🌱 Complexidade Cognitiva: quão simples é compreender seu código e uma nova abordagem a Complexidade Ciclomática
Quero escrever sobre complexidade cognitiva em algum momento. #Refactoring #Complexity #CleanCode Em construção! Hoje durante uma reunião de retrospectiva da Sprint estava discutindo com o time maneiras de medir a qualidade do código. Como utilizamos o Sonar, estávamos buscando a conhecida métrica de Complexidade Ciclomática dentre as mapeadas pela própria ferramenta para exemplificar. Surpreendentemente (para mim) a métrica não existia. Em vez disso, Complexidade Cognitiva era exibida nos re...
Read post
🌿 O estado-da-arte do Bluetooth para comunicação em 2021
Fiquei indignada com Headsets, Bluetooth e áudio horrível nas ligações. Tecnologia sem fio está mais em pauta do que nunca com a migração para trabalho remoto e popularização dos Earbuds TWS (leia-se airpods e similares). No entanto, a tecnologia não avançou o suficiente na qualidade de áudio em geral mas, principalmente, na qualidade de comunicação. Parafraseando um cliente que avaliou um fone bluetooth de uma marca famosa na Amazon: Em vez de "plug and play" recebemos "buy and pray". ...
Read post
🌳 LocalStack
Uma abordagem para desenvolvimento e testes de aplicações cloud em ambiente local: rápida, sem custo e offline. Como simular os recursos da AWS localmente com LocalStack Uma abordagem para desenvolvimento e testes de aplicações cloud em ambiente local: rápida, sem custo e offline. Neste artigo vamos estudar uma abordagem para o desenvolvimento de aplicações que utilizem AWS, para desenvolvimento e testes em Integração Contínua. Ao fim, queremos pode executar os principais serviços da AWS (com...
Read post
🏡 Jardim (📌)
Meus rascunhos são Seedlings 🌱, Budding 🌿 ou Evergreen 🌳 🌱 Seedlings são as mudinhas, as ideias nuas e cruas, recém plantadas. 🌿 Budding são os brotos, quando as ideias que já foram revisitadas e estão crescendo. 🌳 Evergreen são as ideias maduras, com menor chance de mudarem, que já foram refinadas e estão relativamente concluídas. A ideia é compartilhar as notas o quanto antes, quase assim que surgem, e aprender em público: https://maggieappleton.com/garden-history#3-imperfection--learning-...
Read post