🌱 NoSQL vs SQL
Some draft notes when helping clients decide between NoSQL and SQL. References A Brief Overview of the Database Landscape The NoSQL movement https://www.infoq.com/news/2022/10/netflix-timestone-priority-queue/ TL;DR: Decision Tree Questions to Consider Do you need to handle structured data such as tables with rows and columns? If so, SQL is probably the best choice as it directly represents structured data. Will your application handle high volumes or high velocity of data? NoSQL wa...
Read post
🌿 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 Sempre que uma decisão arquitetural significativa (que impacta decisões futuras e como os desenvolvedores interagem ou escrevem código), a decisão deve ser documentada. Geralmente são frutos d...
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
🌱 Trunk Based != Sem Branch
Trunk-based development (TBD) é uma técnica de versionamento de software onde apenas uma branch é a fonte de verdade, chamada de "trunk". 🌱 Seedlings são ideias que recém tive e precisam de cultivo, não foram revisadas ou refinadas. Saiba mais. Rola uma super confusão achando que, por existir apenas uma fonte da verdade, não se pode utilizar outras branches. Isso é um equívoco! A diferença é que são utilizadas branches com um ciclo de vida curtíssimo (máximo dois dias), que são criados s...
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