Last Week
Last Week is a weekly column with an emphasis in articles and posts that I read and appreciated, it is a collection from a dozen of different sources. All the content shared is made by people which I believe that would highly appreciate your feedback, so don't forget to say thank you.
If you have a topic you would like to see reflected in this Last Week initiative, please leave a comment below!
Have an amazing week and always keep learning!
Azure
Top Stories from the Microsoft DevOps Community – 2022.08.04
We’re back for another top stories from the #AzureDevOps #Community! After last weeks’ ‘catch-up’ from the last month, this week feels so much quieter, but there is some awesome content for you!
Check out the article: Top Stories from the Microsoft DevOps Community – 2022.08.04
From 0 to hero: connecting your web app to Microsoft Teams using Azure Communication Services
In this tutorial, we’ll show to use Azure Communication Services (ACS) to enable real-time audio/video conferences in your existing web apps, including making calls directly from your app to Microsoft Teams!
In this first article of the series, we start with some basics of the service. You don’t need to be a developer nor is it necessary to install anything specific on your machine. You can try it right in your browser in a couple of minutes. This shows you how to make calls between various users using your app or by directly call a user using Microsoft Teams.
Check out the article: From 0 to hero: connecting your web app to Microsoft Teams using Azur
Register now for Azure Cosmos DB Conf on April 19 – 20
Azure Cosmos DB Conf, our free, virtual developer event, returns April 19-20. The event will include three, 3-hour live streams in the Americas, Asia-Pacific and Australia, and Europe, the Middle East, and Africa. Each live stream will feature its own unique, region-specific content that will be created and delivered by local members of the Azure Cosmos DB community. You’ll learn more about Azure Cosmos DB and see the kinds of apps others in the community are building.
Check out the post: Register now for Azure Cosmos DB Conf on April 19 – 20
Azure REST libraries for JavaScript
The Azure SDK for JavaScript team has been working on a new class of libraries called Azure REST libraries. They’re optimized for developer experience and bundle size. In this blog post, we’ll showcase the Azure REST libraries’ development experience and the footprint they have on a web application bundle.
Check out the post: Azure REST libraries for JavaScript
Increase remote storage performance with Azure Ebsv5 VMs—now generally available
Today, we are announcing the general availability of the Ebsv5 VM series, a new addition to the Ev5 Azure VM family. The Ebsv5 and Ebdsv5 VMs offer up to 120,000 IOPS and 4,000MBps of remote disk storage throughput. They also include up to 512 GiB of RAM and local SSD storage (maximum 2,400 GiB). This new VM series provides up to three times an increase in remote storage performance compared to previous VM generations and helps consolidate existing workloads on fewer VMs or smaller VM sizes to achieve potential cost savings. Additionally, the Ebdsv5 series features a local disk, and Ebsv5 is without a local disk to best match your workload requirements. To checkout regional availability, please visit Microsoft Azure Products by Region.
Check out the article: Increase remote storage performance with Azure Ebsv5 VMs—now generally available
Public preview: Azure Backup supports metrics and metric alerts for Azure Blobs
A few months ago, Azure Backup released backup and restore health metrics (in preview) for Azure Virtual Machines, SQL/HANA databases in Azure Virtual Machines, and Azure Files.
Now, Azure Backup also supports restore health metricsfor Azure Blobs. This feature enables the following key capabilities:
• Monitor restore job health of your backed up blobs via Azure Monitor and backup center.
• Write custom alert rules on metrics for the thresholds and granularity that you are interested in.
• Route fired metric alerts to various notification channels that Azure Monitor supports, such as email, ITSM, webhook, logic apps, and so on.
Check out the article: Public preview: Azure Backup supports metrics and metric alerts for Azure Blobs
Update: Azure AD Graph retirement date
Note:Azure AD Graph will not retire on 30 June 2022 per announcement below. We are extending the retirement date for Azure AD Graph. A follow up announcement will be published before 31 December 2022 with more information on additional tools to assist you with your migration and an updated retirement date.
Azure AD Graph will continue to be supported but will not be receiving any new feature updates as we are investing our engineering resources in Microsoft Graph. We encourage you to update your apps to use Microsoft Graph as soon as possible. Please view details below to migrate to Microsoft Graph.
Check out the article: Update: Azure AD Graph retirement date
dotnet / C#
Announcing .NET Community Toolkit v8.0.0 Preview 3
As we’re getting close to the official launch of the new .NET Community Toolkit, we’re happy to announce that the third preview of the upcoming 8.0.0 release is now live! As is the case with every new public preview, there’s lots of new features to explore, as well as several improvements and bug fixes. Once again, all changes were influenced by feedback received both by teams here at Microsoft using the Toolkit as well as other developers in our community. We’re so thankful to everyone that has contributed and is helping the .NET Community Toolkit get better every day! 🎉
As a small refresher, the 8.0.0 release will be the first release from the brand new .NET Community Toolkit repository, which will be the home of all our general .NET libraries going forward. Libraries in this new toolkit have no dependencies on any specific UI frameworks, so they can be used by all developers regardless of the framework or runtime they choose to work on their projects. These libraries multi-target .NET Standard 2.0 and .NET 6, so they can both support as many platforms as possible and be optimized for best performance when used on newer runtimes.
Check out the full article: Announcing .NET Community Toolkit v8.0.0 Preview 3
CPU Usage Tool Improvements
With Visual Studio 2022, we have converted the CPU Usage tool in the Performance Profiler to the profiler’s new analysis engine. This new change provides the tool with better source resolution, incremental/cancelable symbol loading, a performance boost, and a new flame graph.
Note: This is only available in the Performance Profiler (Alt+F2) version of the tool, but we are still working on supporting it in the Diagnostic Tools. Give it a shot and see what insights you can find!
Check out the full article: CPU Usage Tool Improvements
Value types and exceptions in .NET profiling
Here comes the end of the series about .NET profiling APIs. This final episode describes how to get fields of a value type instance and how to deal with exceptions.
Check out the full article: Value types and exceptions in .NET profiling
Anti-corruption Layer for mapping between Boundaries
What does an anti-corruption layer solve? Most systems rely on data or behaviors from another service or an external 3rd party. The problem is they often don’t share the same semantics or data structures. Left unchecked this leads to convoluting up your own boundary with concepts from another boundary. Let me explain how you can use an anti-corruption layer as a way to translate the concepts from another boundary in isolation.
Check out the full article: Anti-corruption Layer for mapping between Boundaries
Middleware in ASP.NET 6 - Conditionally Adding Middleware to the Pipeline
Welcome back! So far in this series, we've covered the basics of Middleware in .NET 6 applications, shown how to create custom Middleware classes, and discussed why the order of operations of the Middleware pipeline is so important.
In this final part of the series, we will show two ways to conditionally execute middleware in the pipeline: by using settings in the AppSettings.json file to determine whether or not to add the middleware to the pipeline in the first place, or by using the incoming request's data to conditionally execute a middleware piece already in the pipeline.
Check out the full article: Middleware in ASP.NET 6 - Conditionally Adding Middleware to the Pipeline
React
React MUI Templates - Open-Source and FREE
This article presents a curated list with Open-Source MUI Templates crafted by well-known agencies and released for free under permissive licenses (MIT, LGPL). All mentioned products can be downloaded from Github and used in commercial projects or eLearning activities. For newcomers, MUI is a popular components library built on top of React
, a leading JS library used to code interactive user interfaces.
Check out the article: React MUI Templates - Open-Source and FREE
Writing Redux Reducers in Rust
At Fiberplane, we are building a collaborative notebook editor for incident response and infrastructure debugging. As part of the challenges we faced implementing such an editor, we had several complex functions written in Rust that we had to use on the frontend through WebAssembly.
This post will explore how we integrated this WASM code into a React/Redux application, as well as why we ended up writing our own bindings generator for it.
Check out the article: Writing Redux Reducers in Rust
Test component interactions with Storybook
Components fetch data, respond to user interactions, and manage app state. To verify this functional behavior, developers rely on automated tests. But most testing tools are Node and JSDOM based. That means you’re forced to debug visual UIs in a textual command line.
At Storybook, we’re improving component testing by using the browser to run tests. Over the past six months, we introduced several features—play function, test-runner, assertion library—to make this a reality. This article walks through the entire Storybook interaction testing workflow.
Check out the article: Test component interactions with Storybook
Automatic batching for fewer renders in React 18
React 18 adds out-of-the-box performance improvements by doing more batching by default, removing the need to manually batch updates in application or library code. This post will explain what batching is, how it previously worked, and what has changed.
Check out the article: Automatic batching for fewer renders in React 18
When Does React Render Your Component?
When and why does React render my component exactly?
This post is my version of Mark Erikson's essay A (Mostly) Complete Guide to React Rendering Behavior where I try to answer one of the most commonly asked questions in this React community – "when or why does React render my component?" – with a tiny amount of React source code walkthrough.
Normally I am not a big fan of drilling down to the implementation details and you certainly don't need to know that in order to be productive in React. However, when it comes to understanding the rendering behaviour and rules for bailing out of re-renders, the React docs haven’t provided a thorough enough explanation to satisfy me. Therefore to adequately answer those questions, I had to peek into the source code. That being said, this is not going to be a post about hard-core source code walkthrough. If you are interested in that, here is a great series made by JSer that you should check out.
Check out the article: When Does React Render Your Component?
All React Hooks and Concepts In A Single Post!!
First of all React is a JS Library not a Complete Framework 🙂 so for making a complete web application you need to know a lot of other things 🤭 that you can use with React. In this Post I will cover React concepts, Hooks and some good practices Ofc... 😁
We use React to make reusable components that can be used in a logical way to make UI. Making components in React is as easy as making a function 🤩.
For Example 👇🏻 it is a simple react component in which we can pass data as arguments which can be easily referenced inside the functions.
Check out the article: All React Hooks and Concepts In A Single Post!!
Software Architecture
The project with a single 11,000-line code file
A long time ago at one of my first software jobs, I received a bug report for a internal product that I didn't even know existed.
It turned out to be an application that serves up basically every form that any employee within the company might need. Essentially a catch-all resource. Do you need to report someone to HR? There is a form for that. Do you need a contract for a new client? There is a form for that.
The responsibility of maintaining the project had been bounced from team to team over the years. Apparently it belonged to my team. And by my team, I mean me.
Check out the full article: The project with a single 11,000-line code file
Cloud, Load, and Modular Code: What 2022 Looks Like for Shopify
You may have heard that 2021 was Shopify’s biggest Black Friday Cyber Monday (BFCM) ever. This four-day period was monumental for both Shopify’s merchants and our engineering teams.
Last year’s numbers capture a moment in time but can also help us predict what’s to come in the year ahead. On our cloud in 2021, our peak BFCM traffic surpassed 32 million app server requests per minute (RPM). In the same time period our load balancers peaked at more than 34 million RPM. To put that in perspective, this means that the equivalent of Texas’s total population hit our load balancers in a given minute. One flash sale—a short-lived sale that exceeds our checkout per minute threshold—even generated enough load to use over 20% of our total computing capacity at its peak.
Check out the full article: Cloud, Load, and Modular Code: What 2022 Looks Like for Shopify
How to design a system to scale to your first 100 million users
It is not easy to design a system that supports hundreds of millions of users. It always is a big challenge for a software architect (but it’ll be easy from today after reading my article 🤣)
Here are some topics covered by me in this article.
- Start with simplest: all in one.
- The art of scalability: scaling out, scaling up.
- Scaling a relational database: master-slave replication, master-master replication, federation, sharding, denormalization, and SQL tuning.
- Which database to use: NoSQL or SQL?
- Advanced concepts: caching, CDN, geoDNS., etc.
Check out the full article: How to design a system to scale to your first 100 million users