TWIL: August 29, 2021

I failed to post my TWIL last week, so this week is, once again, a LTWIL (Last Two Weeks I Learned). I’m not going to change the weekly cadence of these posts, mas I might as well embrace that sometimes this will happen 🙂
I still learned a lot of new stuff, even if I didn’t post it, so here it is.


Architecture

Monolithic to Microservices Architecture with Patterns & Best Practices
Article by Mehmet Özkaya describing the step by step journey of software architecture design when evolving a monolithic architecture to an event-driven microservices architecture. He goes through a few of the most common architectural patterns, such as API Gateway, BFF (Backend-for-Frontends), Service Aggregator or Publish/Subscriber.

How To Give Developers Secure Access to Kubernetes Clusters
Setting up a Kubernetes service has become relatively easy, whether it be on-premise or in public cloud services. However, giving secure access to developers can be a painful process involving cluster certificates, access management systems, networking setup, and firewalls. In this article, Edward Ionel explains how to use Lens Spaces in this context.

How Netflix Is Solving Authorization Across Their Cloud [I] – Manish Mehta & Torin Sandall, Netflix
Session from CloudNativeCon North America 2017 where Manish Mehta explains how Neflix solved authorization in their microservice-based platform, using a distributed and highly scalable architecture, as well as leveraging open source components such as Open Policy Agent (OPA).

Design Microservice Architectures the Right Way
Session on Qcon New York 2018 about designing microservice architectures, by the CTO of Flow.io. He goes through a few misconceptions about architecture design and then explains how to use flow.io to build a simple microservices-based solution, starting with API design.


Programming

The 8 Easiest Programming Languages for Kids
Learning to code is a challenge no matter how old you are, but it can be especially tough for kids. Not only are general programming concepts difficult to grasp, but all the rules and syntax required can be tough to get right. Luckily, several languages are naturally easier to learn. There are also excellent online resources that make code much more manageable for children to understand. This list will give you some options to start your child off on their programming journey.

Understanding the cost of C# delegates
Delegates are widely used in C# (and .NET, in general). Either as event handlers, callbacks, or as logic to be used by other code (as in LINQ). Despite their wide usage, it’s not always obvious to the developer what delegate instantiation will look like. In this post, Paulo Morgado shows various usages of delegates and what code they generate so that you can see the costs associated with using them in your code.

F# spoiled me, or why I don’t enjoy C# anymore
Very interesting article from Roman Liman, although a bit long, where he describes why he likes F# so much, even over C# which was his language of choice for enterprise development.

How Microsoft rewrote its C# compiler in C# and made it open source
Roslyn is the codename-that-stuck for the open-source compiler for C# and Visual Basic.NET. Here’s how it started in the deepest darkness of last decade’s corporate Microsoft, and became an open source, cross-platform, public language engine for all things C#.


Azure Services

Azure Table Storage: Cloud NoSQL for Dummies
Interesting article that compares Azure Table Storage with Cosmos DB Table API on a few key features.

How to model relational SQL data for import and indexing in Azure Cognitive Search
Azure Cognitive Search accepts a flat rowset as input to the indexing pipeline. If your source data originates from joined tables in a SQL Server relational database, this article explains how to construct the result set, and how to model a parent-child relationship in an Azure Cognitive Search index.

How to model complex data types in Azure Cognitive Search
External datasets used to populate an Azure Cognitive Search index can come in many shapes. Sometimes they include hierarchical or nested substructures. Examples might include multiple addresses for a single customer, multiple colors and sizes for a single SKU, multiple authors of a single book, and so on. In modeling terms, you might see these structures referred to as complex, compound, composite, or aggregate data types.

Azure Monitor overview
Starting page on the official Azure Monitor documentation. Azure Monitor is Microsoft’s cloud-based monitoring suite which collects, analyzes and acts on telemetry (logs and metrics) from a large number of sources, including most Azure services.

Application Insights overview
Official documentation section for Application Insights, an extensible Application Performance Management (APM) services, part of the Azure Monitor suite.


Data Platform

Data Warehouse Automation Using dbt on (Azure) SQL Server
DBT (Data Build Tool) is one of the rising stars in the world of data and analytics and is therefore part of every modern data stack these days. In a nutshell, dbt simply takes code, compiles it into SQL and runs it against a data warehouse. This article presents 5 things you should be aware of before adapting dbt on (Azure) SQL Server for automating data warehousing/modeling.

How to build an efficient and modern Data Platform
Instead of building and understanding Data Lakes, Warehouses and Marts independently, they should be liberally integrated within each other. This avoids data silos and simplifies data provisioning.


Cool Stuff

ReactiveX
ReactiveX is a library for composing asynchronous and event-based programs by using observable sequences. It extends the observer pattern to support sequences of data and/or events and adds operators that allow you to compose sequences together declaratively while abstracting away concerns about things like low-level threading, synchronization, thread-safety, concurrent data structures, and non-blocking I/O.

Reading Proposals Faster with Natural Language Processing
Interesting article about using Natural Language Processing and Machine Learning to automatically classify RFPs (Request for Proposal) and extract relevant data, with potentially large gains in productivity.

Learn Service Meshes using Interactive Browser-Based Scenarios
Katacoda is a really cool e-learning website, owned by O’Reilly. I recently found you can try a bunch of common use cases using different flavors of Service Mesh, without having to install anything on your infrastructure. Great option to get started with these technologies.


And that’s a wrap for the last two weeks. Tomorrow a new week begins.
Happy Learning!

Photo by Olena Sergienko on Unsplash