Releases: oskardudycz/ArchitectureWeekly
Release list
21st March 2022
Ukraine is still under brutal Russian invasion. A lot of Ukrainian people are hurt, without shelter and need help. You can help in various ways, for instance, directly helping refugees, spreading awareness, putting pressure on your local government or companies. You can also support Ukraine by donating e.g. to Red Cross, Ukraine humanitarian organisation. You may also consider joining Tech for Ukraine initiative.
Architecture
- The 6 Figure Developer Podcast - Fundamentals of Software Architecture with Neal Ford
- Cedric Pontet - EventStorming – From Big Picture to Software Design
- Tim Batty - Eating an Elephant
- Red Monk - What is Developer Experience? a roundup of links and goodness
- Mark Hinkle - Is Serverless Just a Stopover for Event-Driven Architecture?
Distributed Systems
- Andrew Carr - Comparing Apache Kafka, Amazon Kinesis, Microsoft Event Hubs and Google Pub/Sub
- Elliot West - Handling Incompatible Schema Changes with Avro
Databases
- Ongres - Performance Benchmark PostgreSQL/MongoDB
- Lev Kokotov - PostgreSQL pooler with sharding, load balancing and failover support
- Alex Klibisz - Optimizing Postgres Text Search with Trigrams
DevOps
- Dan Lorenc - OCI Artifacts Explained
- github-action-benchmark - GitHub Action for continuous benchmarking to keep performance
Go
Java
- Bartłomiej Słota - Concurrency control in REST API with Spring Framework
- springdoc-openapi - Library for OpenAPI 3 with spring-boot
- Baeldung - Documenting a Spring REST API Using OpenAPI 3.0
- Minel Aydın - Spring Boot — Accessing Data with JPA Hibernate and PostgreSQL
- CK Gan - A True Atomic Microservices Implementation with Debezium to Ensure Data Consistency
JavaScript
- Hugh Haworth - Comparing Node JavaScript to JavaScript in the Browser
- Microsoft - A Proposal For Type Syntax in JavaScript
.NET
- Alexey Zimarev - Event Sourcing with .NET
- Mikhail Shilkov - Event Driven Applications in F#
- Jérémie Chassaing - #NOMEMALLOC
- Tom Deseyn - Debug .NET applications running in local containers with VS Code
Rust
Tools
Industry
Product Design
14th March 2022
Ukraine is still under brutal Russian invasion. A lot of Ukrainian people are hurt, without shelter and need help. You can help in various ways, for instance, directly helping refugees, spreading awareness, putting pressure on your local government or companies. You can also support Ukraine by donating e.g. to Red Cross, Ukraine humanitarian organisation. You may also consider joining Tech for Ukraine initiative.
Architecture
- Casper Bollen - A Conceptual Framework for Medical Data
- Justin Miller - Path to a Software Architect
- Dan North - CUPID ‒ for joyful coding!
- Henrique Vicente - You don't need UUID
Distributed Systems
Operations
Testing
- Alexei Ledenev - Pumba: chaos testing tool for Docker
- WireMock - Mock your APIs for fast, robust and comprehensive testing
- Adven27 - grpc-wiremock - gRPC Mock Server
Go
Java
- Cameron McKenzie - A simple Java Function interface example: Learn Functional programming fast
- Justin Albano - Dependency Injection in Spring
- Mahmoud Anouti - 20 Examples of Using Java’s CompletableFuture
JavaScript
.NET
- Simon Cropp - MarkdownSnippets - Extracts snippets from code files and merges them into markdown documents
- dj-nitehawk - FastEndpoints - A light-weight REST Api framework for ASP.Net 6 that implements REPR (Request-Endpoint-Response) Pattern
- TNG - ArchUnitNET - A C# architecture test library to specify and assert architecture rules in C# for automated testing
- Barry Dorrans - C# Password Generator
AI
Coding Life
- Samir Talwar - All Problems Are Hard
- Ted Johansson - Trim your inheritance tree, one twig at a time
- Raycast - No code reviews by default
- Chris James - Reduce WIP by practicing trunk-based development, rather than pull requests
Management
Security
- Keycloak - Open Source Identity and Access Management
- Wall Street Journal - Using a New Cyber Tool, Westerners Have Been Texting Russians About the War in Ukraine
Industry
7th March 2022
Ukraine is still under brutal Russian invasion. A lot of Ukrainian people are hurt, without shelter and need help. You can help in various ways, for instance, directly helping refugees, spreading awareness, putting pressure on your local government or companies. You can also support Ukraine by donating e.g. to Red Cross, Ukraine humanitarian organisation. You may also consider joining Tech for Ukraine initiative.
Architecture
- Jakub Nabrdalik - What I wish I knew when I started designing systems years ago
- Robert Pankowecki - Correlation id and causation id in evented systems
- Cindy Sridharan - Monitoring and Observability
- Marc Brooker - Will circuit breakers solve my problems?
- ThoughtWorks - State of Data Mesh 2022
Distributed Systems
API
Databases
Testing
Frontend
- Luca Mezzalira - The Future of Micro-Frontends
- Netanel Basal - Using Web Components in Angular, React, Preact, Vue and Svelte
Functional Programming
.NET
- Serverless Land - Using the new .NET 6.0 runtime in AWS Lambda
- Taşkın Binbir - Extended Swagger in .net core 6
- Maoni Stephens - Diagnosing Memory Leaks
- Microsoft - Safe storage of app secrets in development in ASP.NET Core
NodeJS
- node-postgres - a collection of node.js modules for interfacing with your PostgreSQL database
- @databases - TypeScript clients for databases that prevent SQL Injection
TypeScript
Security
Industry
- Tech for Ukraine - Non-profit organizations need tech support to maximize impact in the light of the ongoing war. Help them design digital solutions that matter
- Microsoft suspends new sales in Russia
- The New York Times - David Boggs, Co-Inventor of Ethernet, Dies at 71
- Concoda - The Crypto Revolution Was Over Before It Started
- Jonatan Heyman - Avoid the Apple App Store
28th February 2022
In IT, we’re living in a bubble. Compared to others we have good working conditions. We learned to complain about tiny things. We’re running disputes on which framework is better or worse. We even do heated discussions around new language syntax. It’s a gigantic bubble. Bubbles tend to burst.
We believe that technology is objective. AI and Machine learning will serve us only good and won’t gather our biases, right? I’m afraid that’s not the case.
Some of us believe that we can create a safe zone in our work without politics. We think we’re building the World Wide Web without boundaries and national prejudices. Globalisation unifies us. You can buy iPhones around the world.
Unfortunately, it’s only wishful thinking. It’s easier to build a bubble and ignore what’s outside. It’s comfortable to forget that world is changing, and those changes will get us all.
Last week brutal attack from Russia came to Ukraine. A country that, step by step, was evolving and building its independence painstakingly. They have a strong IT industry with a lot of talented people. It’s hard to give any pragmatic reason for such a cruel move besides creating war games to hide internal Russian issues. Unfortunately, this is not a game. It’s also not a movie, even though that may look like from the comfortable couch. This madness needs to stop, and we need to do it now. Living in Poland, I know that we can be next if Putin won’t be stopped.
Of course, life has different shades of grey. For instance, our Polish-Ukraine relations went through extreme ups and downs. My grandparents were born where now is Ukraine and previously was Polish territory. Ukraine was on the wrong side of WWII. My family suffered. Yet, do I have doubts that we should help Ukraine? No, I’m 100% sure that we should do everything we can to help as much as possible. Sometimes the only way to fight with the bully is to “outbully” them.
How can you help?
- You can make donations, even without getting up from your couch. Most humanitarian organisations are gathering help, e.g. Red Cross or Ukrainian organisation. Refugees are lacking even basic stuff like food, blankets, etc. You can find organisations gathering all of that and bringing it to them.
- A patient drop cuts through the rock. Put pressure on your company (or those that you’re a customer) to drop any connection to Russian money. You can always ask how they’re planning to react and if they’re aligned with sanctions. Don’t be afraid to stand up.
- If you know Ukrainian, ask if you could help. If not, then ask your friends if they know someone. We have to be united.
- It will be a long run. Ukraine will need continuous help for a long time. So prepare yourself.
It’s also important to watch carefully, as our world is changing. I wrote some time ago that the split for IT and business is obsolete, as now IT is business. The same applies to war. IT is an important aspect here. Weapons are already filled with chips and software. Two hundred years ago, Edward Bulwer-Lytton wrote that “The pen is mightier than the sword”. IT may be already mightier than a rocket. Cambridge Analytica already impacted the USA president’s elections, Brexit. And that’s just a proven case. Have you heard about the geopolitics issue with processors production? Do you remember that a single company (Cloudflare) created that Internet was practically not working for a few hours? Luckily, Anonymous decided to be on the right side, but will they always be like that? Beware of the fake news and misinformation. They’re also weapons now. Don’t reshare what you see on the Internet, as this may help Russians.
And lastly, if you don’t stand up, then who will? We don’t always can do much, I’m also feeling powerless, but even a small impact is an impact.
Last but not least.
Russia, shame on you! The world will remember that.
Ukraine, stay strong!
Слава Україні!
Oskar
21st February 2022
Architecture
- Pat Helland - Immutability Changes Everything
- Pat Helland - Data on the Outside vs. Data on the Inside
- Aaron Stannard - Technical Spec Template
- Bobby Iliev - Decoupled Microservices Architecture with Materialize
- Rory Roberts - Depending on Functions
- Alexey Zimarev - Overselling Event Sourcing
- Yves Reynhout - Projections Explained
- DDD Crew - Core Domain Charts
Databases
DevOps
- CNCF - Principles for designing and deploying scalable applications on Kubernetes
- InfoQ - Container Security and Observability in Kubernetes Environments
Frontend
Functional Programming
Azure
Go
Kotlin
.NET
- Sharpliner - Use C# instead of YAML to define your Azure DevOps pipelines
- Stefan Prodan - AspNetCoreRateLimit - ASP.NET Core rate limiting middleware
- Maxime Lemaitre - A curated list of .NET Compiler Platform ("Roslyn") diagnostic analyzers and code fixes
- QuestPDF - An open-source, library that can help you with generating PDF documents
NodeJS
Rust
Tools
Product Design
Trivia
14th February 2022
Architecture
- Leslie Lamport - Learning TLA+
- Asbjørn Ulsberg - What's In A Model?
- Jan Kronquist - Don't publish Domain Events, return them!
- Maciej "MJ" Jedrzejewski - Story 2: Call it microservices…or distributed modules?
Distributed Systems
DevOps
FrontEnd
Testing
Java
- Sameer Kulkarni - How to configure Dependabot with Gradle
- Java - JEP 359: Records
- Java - JEP 405: Record Patterns
- Java - JEP 406: Pattern Matching for switch
.NET
- Julio Casal - .NET Microservices Basics Course
- Mark Rendle - My 20 Years with .NET
- Andrew Lock - NetEscapades.EnumGenerators: a source generator for enum performance
- Microsoft Docs - Tutorial: Use feature flags in an ASP.NET Core app
Rust
TypeScript
Coding Life
- Dodgy Coder - "Yoda Conditions", "Pokémon Exception Handling" and other programming classics
- Szymon Kulec - Blaming the tools, not behaviors
Management
Industry
- Irish Council for Civil Liberties - GDPR enforcer rules that IAB Europe’s consent popups are unlawful
- City A.M. - Mark Zuckerberg and team consider shutting down Facebook and Instagram in Europe if Meta can not process Europeans’ data on US servers
- Rufus Pollock - Awesome critique of crypto/web3
Trivia
7th February 2022
Architecture
- Udi Dahan - Race Conditions Don't Exist
- Gregor Hohpe - Here's why enterprise IT is so complex
- Jessica Kerr, Matthew Skeleton - Observability in Sociotechnical Systems: How to Use Telemetry Data to Inform Software and Org Design
- The Hanselminutes podcast - New Ways to Teach Computer Science with Maria Naggaga
- Michał 'Chlebik' Piotrowski - GC Theory
- Callum Linington - My Current Architecture
Distributed Systems
DevOps
Databases
- Syed Sadat Nazrul - CAP Theorem and Distributed Database Management Systems
- Martin Kleppmann - Please stop calling databases CP or AP
- Canonical - Dqlite - Embeddable, replicated and fault tolerant SQL engine
- Emily Shea - Refactoring to single-table design in Amazon DynamoDB
Frontend
WebAssembly
JVM
.NET
- Wouter Huysentruit - CashFlow - Application for managing cash flows written in ASP.NET Core 6 and Angular 13 (EF Core, Apollo, GraphQL, CQRS)
- 6 .NET Myths Dispelled — Celebrating 21 Years of .NET
- Jason Bock - AutoDeconstruct - A library that automatically adds support for object deconstruction in C#
- Jeremy D. Miller - Batch Querying with Marten
Rust
Tools
- DevToys - Swiss Army knife for developers
- Postman - Postman Now Supports gRPC
- Learn Vim - Learn Vim right within VSCode. Use this extension to learn and practice your Vim skills.
- David Peter - Bat - A cat(1) clone with wings
Industry
31st January 2022
Architecture
- Mauro Servienti - Let's get logical! On logical and physical architectural views
- Designing Tinder
- Ted Newart - 2022 Tech Predictions
- Netflix Tech Blog - Fixing Performance Regressions Before they Happen
- InfoQ - The Major Software Industry Trends from 2021 and What to Watch in 2022
- W. Ptak, E. Damiani, L. Sartoni, A. Brandolini - Collaborative asynchronous communication
DevOps
- LocalStack - fully functional local cloud stack, which provides an easy-to-use test/mocking framework
- Rancher Desktop - provides Kubernetes and container management on the desktop
- HoneyPot - Kubernetes the Documentary part 1
- HoneyPot - Kubernetes the Documentary part 2
- Vladislav Supalov - Docker ARG, ENV and .env - a Complete Guide
API
Frontend
Low Level
C++
.NET
- Khalid Abuhakmeh - ASP.NET Core image gallery with Marten, ImageSharp, and HTMX
- Andrew Lock - Reducing initial request latency by pre-building services in a startup task in ASP.NET Core
- Tomasz Maruszak - SlimCluster - Consensus (Raft) and Memberlist (SWIM) implementation for .NET micro-services
- .NET Blog - Performance improvements in ASP.NET Core 6
PHP
Scala
Tools
Management
Coding Life
Industry
- Tim O'Reilly - Andy Warhol, Clay Christensen, and Vitalik Buterin walk into a bar
- Emma Irvin - How We're Making Code of Conduct Enforcement Real — and Scaling it
Security
24th January 2022
Architecture
- Troy Hunt - How I Got Pwned by My Cloud Costs
- Nick Tune - From Consultant to Facilitator
- Natalie Rothfels, Karen Sun - Why Engineers Should Invest in Decision-Making Skills Early
Distributed Systems
Databases
- Pavel "Xemul" Emelyanov - The Taming of the B-Trees
- GitHub - Trilogy is a client library for MySQL-compatible database servers, designed for performance, flexibility, and ease of embedding
- Aaron Francis - Efficient Pagination Using Deferred Joins
- Damian Widera - Quantum Computing Explained With Demos!
API
- Matthew Reinbold - 5 Tips for a Game-Changing API Design Review
- InfoQ - GraphQL Reference Guide: Building Flexible and Understandable APIs
Frontend
.NET
- Gérald Barré - Custom certificate validation in .NET
- Andrey Akinshin - Posts about Research: P² quantile estimator
- Andrew Lock - Series: Creating a source generator
- F# - FSharp.UMX - F# units of measure for primitive non-numeric types
Coding Life
Tools
- Etienne Baudoux - DevToys - A Swiss Army knife for developers on Windows 11
- FullStory - Like cURL, but for gRPC: Command-line tool for interacting with gRPC servers
Coding Life
Management
Industry
Trivia
17th January 2022
Architecture
- Tom Glib - 10 Suggested Principles for Human Factors Systems Engineering
- Best of JS - 2021 JavaScript Rising Stars
- David Boyne - Introducing EventCatalog
- Tech Lead Journal Podcast - Vaughn Vernon - Strategic Monoliths and Microservices
- Virtual Domain-Driven Design - Mathias Verreas - Design & Reality
Distributed Systems
- Pat Helland - Decoupled Transactions: Low Tail Latency Online Transactions Atop Jittery Servers
- Leslie Lamport - Time, Clocks, and the Ordering of Events in a Distributed System
- Bartosz Sypytkowski - Behind collaborative text editing
- Strimzi - Kafka authentication using OAuth 2.0
- Splunk - Comparing Pulsar and Kafka: Unified Queuing and Streaming
DevOps
Databases
C++
Go
Java
.NET
- Duende - Fair Trade Software License
- Stryker.NET - Mutation testing for .NET core and .NET framework!
- OpenTelemetry .NET Contrib - Set of components extending functionality of the OpenTelemetry .NET SDK
- .NET Docs - Performance best practices with gRPC
NodeJS
- Netanel Basal - Falso - All the Fake Data for All Your Real Needs
- Faker.js - An update from the Faker team