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!
Introducing Azure Well-Architected Framework for Internet of Things (IoT)
Internet of Things (IoT) projects are high in complexity, and this complexity can increase substantially over time. While IoT is widely adopted in organizations, only a quarter of those IoT projects are in use, while many fail in the proof-of-concept stage. Companies cite a lack of knowledge and technical complexity as many of the challenges preventing them from using IoT more and developing new IoT solutions.
Check out the article: Introducing Azure Well-Architected Framework for Internet of Things (IoT)
Feathr: LinkedIn’s feature store is now available on Azure
Developing a feature store from scratch takes time, and it takes much more time to make it stable, scalable, and user-friendly. Feathr is the feature store that has been used in production and battle-tested in LinkedIn for over 6 years, serving all the LinkedIn machine learning feature platform with thousands of features in production.
At Microsoft, the LinkedIn team and the Azure team have worked very closely to open source Feathr, make it extensible, and build native integration with Azure. It’s available in this GitHub repository and you can read more about Feathr on the LinkedIn Engineering Blog.
Check out the article: Feathr: LinkedIn’s feature store is now available on Azure
Optimize your cloud investment with Azure Reservations
Continuous cost optimization can take place at all stages of an Azure workload’s lifecycle, but your Azure subscription provides a very effective benefit to further optimize your investment when you are ready to deploy that workload.
For cloud workloads with consistent resource usage, you can buy reserved instances at a significant discount and reduce your workload costs by up to 72 percent compared to pay-as-you-go prices. Azure Reservations can be obtained by committing to one-year or three-year plans for virtual machines, Azure Blob storage or Azure Data Lake Storage Gen2, SQL Database compute capacity, Azure Cosmos DB throughput, and other Azure resources.
When you can predict and commit to needed capacity, it gives us visibility into your resource requirements in advance, allowing us to be more efficient in our operations. We can then pass the savings on to you. This benefit applies to both Windows and Linux virtual machines (VMs).
In addition, you now can combine the cost savings of reserved instances with the added Azure Hybrid Benefit when running on-premises and Azure workloads to save up to 80 percent over pay-as-you-go pricing.
Check out the article: Optimize your cloud investment with Azure Reservations
Public preview: Health probes support in Azure Container Apps
Azure Container Apps, a service for building and deploying modern applications and microservices using serverless containers, now supports health probes to provide developers more control over their applications.
Readiness, liveness, and startup probes are now available over HTTP(S) and TCP protocols.
Check out the article: Public preview: Health probes support in Azure Container Apps
General availability: Azure Cosmos DB autoscale RU/s entry point is 4x lower
With Azure Cosmos DB autoscale, you can now set a scale range of 100 - 1000 RU/s, which is 4x lower than the previous minimum scale range of 400 - 4000 RU/s. Autoscale automatically scales the throughput of your database or container within a specified range, removing the need for manual capacity management. For smaller workloads that do not require high throughput, setting the new scale range can make autoscale up to 4x lower in cost, while still providing the ability to scale-up to handle spikes of traffic.
If you’re using an Azure Cosmos DB free tier account, you can use autoscale in your free tier account at no cost. By creating a shared throughput database with autoscale (100 – 1000 RU/s), you can have up to 25 containers sharing the overall throughput for free.
Check out the article: General availability: Azure Cosmos DB autoscale RU/s entry point is 4x lower
Public preview: Azure Monitor activity log insights
The dashboards present data about which users or services performed activities in the subscription and the activities' status.
Activity logs you send to a Log Analytics workspace are stored in a table called AzureActivity.
Activity log insights are a curated Log Analytics workbook with dashboards that visualize the data in the AzureActivity table. For example, which administrators deleted, updated or created resources, and whether the activities failed or succeeded.
Check out the article: Public preview: Azure Monitor activity log insights
dotnet / C#
C# 11 Preview Updates – Raw string literals, UTF-8 and more!
Features for C# 11 are coming along nicely! You can check these features out by downloading Visual Studio 17.2 Preview 3 or .NET 7 Preview 3 for other editors. You can find more about C# 11 features that appeared earlier in What’s new in C# 11 and Early peek at C# 11 features and you can follow the progress of C# 11 on the Feature Status page. You can find out about other .NET 7 Preview 3 features in this .NET Blog post and more about Visual Studio 17.2 in the release notes.
We evolve C# to improve your development productivity, the resiliency of your applications in production, performance and support for new features. The C# team works on both the performance of your application in production, and how the compiler performance affects your development.
Check out the full article: C# 11 Preview Updates – Raw string literals, UTF-8 and more!
Inside the making of the Azure SDK management libraries
As a cloud native developer, which types of developer experiences do you care about the most? Interacting with cloud resources in your app is certainly at the top of your experiences list—whether sending a message to an Azure Service Bus endpoint or creating new VM instances to carry heavier workloads. You can use a cloud SDK, like the Azure SDK, for all these cloud service interactions, but how is the Azure SDK generated? What’s the difference between a cloud SDK and a traditional SDK? Let’s start our journey!
Check out the full article: Inside the making of the Azure SDK management libraries
Announcing .NET 7 Preview 3
Today, we are glad to release .NET 7 Preview 3. The third preview of .NET 7 includes enhancements to observability, startup times, codegen, GC regions, native AOT compilation, and more. The bits are available for you to grab right now and start experimenting with new features like:
- Native AOT
- Default GC regions
- ASP.NET Core startup time improvements
Check out the full article: Announcing .NET 7 Preview 3
Announcing Entity Framework Core 7 (EF7) Preview 3
Today, the .NET data team announces the third preview release of EF Core 7.0 (EF7). In addition to bug fixes and foundation work for larger features, we are pleased to announce the initial preview of scaffolding (database-first) templates. This preview also includes changes to the update pipeline to improve performance and streamline the generated SQL, and support for TPC in migrations. Be sure to read the full plan for EF7 to learn what’s on the roadmap.
You can also view the full list of issues addressed in EF7 Preview 3.
Check out the full article: Announcing Entity Framework Core 7 (EF7) Preview 3
Supercharge your Git experience in VS
Have you experienced delays when viewing your Git repository or branch history in Visual Studio? Have you run a network command like force-push and had to wait for the operation to complete? Your Git repository may be having performance issues due to its large size. We are happy to integrate a relatively new Git feature called the commit graph which leads to improving the performance of your Git operations and significantly improving performance in Visual Studio.
Check out the full article: Supercharge your Git experience in VS
Azure SDK Release (April 2022)
Thank you for your interest in the new Azure SDKs! We release new features, improvements, and bug fixes every month. Subscribe to our Azure SDK blog RSS feed to get notified when a new release is available.
You can find links to packages, code, and docs on our Azure SDK Releases page.
Check out the full article: Azure SDK Release (April 2022)
.NET April 2022 Updates – .NET 6.0.4, .NET 5.0.16 and, .NET Core 3.1.24
Today, we are releasing the .NET April 2022 Updates. These updates contain reliability and non-security improvements. See the individual release notes for details on updated packages.
Check out the full article: .NET April 2022 Updates – .NET 6.0.4, .NET 5.0.16 and, .NET Core 3.1.24
Introducing Central Package Management
Dependency management is a core feature of NuGet. Managing dependencies for a single project can be easy. Managing dependencies for multi-project solutions can prove to be difficult as they start to scale in size and complexity. In situations where you manage common dependencies for many different projects, you can leverage NuGet’s central package management features to do all of this from the ease of a single location.
Historically, NuGet package dependencies have been managed in two main locations:
packages.config– An XML file used in older project types to maintain the list of packages referenced by the project.
<PackageReference />– An XML element used in new project types that manages NuGet dependencies directly within project files.
Starting with NuGet 6.2, you can centrally manage your dependencies in your projects with the addition of a
The feature is available across all NuGet integrated tooling.
Check out the full article: Introducing Central Package Management
ASP.NET Core updates in .NET 7 Preview 3
.NET 7 Preview 3 is now available and includes many great new improvements to ASP.NET Core.
Here’s a summary of what’s new in this preview release:
- Support for route handler filters in minimal APIs
- Improved unit testability for minimal route handlers
- Bind using
TryParsein MVC and API controllers
- Improved HTTP/2 performance when using many streams on a connection
ServerReadyevent for measuring startup time
- Developer exception page dark mode
For more details on the ASP.NET Core work planned for .NET 7 see the full ASP.NET Core roadmap for .NET 7 on GitHub.
Check out the full article: ASP.NET Core updates in .NET 7 Preview 3
Why you should always Cleanup Side Effects in React useEffect and How to Cleanup
Well, because cleaning up is generally a good thing :)
Side effects happen a lot in React applications (in web applications generally. These effects include making asynchronous API calls, updating the DOM, creating sockets, etc. These side effects can happen when a button is clicked, when a form is submitted, or when a component mounts.
useEffect hook in React gave functional components the power to do stuff when a component mounts or when some props or state changes. This hook also allows you to cleanup when the component unmounts.
What are side effects cleanups? Why should you cleanup them? How do you cleanup them?
In this article, I'll answer these questions, and hopefully, you will get a better hang of the
useEffect hook at the end of it.
Check out the article: Why you should always Cleanup Side Effects in React useEffect and How to Cleanup
React components composition: how to get it right
One of the most interesting and challenging things in React is not mastering some advanced techniques for state management or how to use Context properly. More complicated to get right is how and when we should separate our code into independent components and how to compose them properly. I often see developers falling into two traps: either they are not extracting them soon enough, and end up with huge components “monoliths” that do way too many things at the same time, and that are a nightmare to maintain. Or, especially after they have been burned a few times by the previous pattern, they extract components way too early, which results in a complicated combination of multiple abstractions, over-engineered code and again, a nightmare to maintain.
What I want to do today, is to offer a few techniques and rules, that could help identify when and how to extract components on time and how not to fall into an over-engineering trap. But first, let’s refresh some basics: what is composition and which compositions patterns are available to us?
Check out the article: React components composition: how to get it right
An Overlooked Factor For Performance Optimization In React
Many people, including me, sometimes like to seek out simple answers to problems they are faced with. It is relatively easy to arrive at a generic conclusion for most cases – we often forget or intentionally leave out edge cases. In the context of performance optimization in React, one of these edge cases is the position of your component in the component tree.
Check out the article: An Overlooked Factor For Performance Optimization In React
Removal Of Implicit Children
With React 18 we have the opportunity in
@types/react to fix long-standing issues we had to deal with for a long time. We originally wanted to fix these in React 17, but held off because React 17 was a big step in enabling gradual migration. One of these changes is removal of implicit
React.FunctionComponent types. I’ll try to explain why we want to make this change and how you can ease migration.
Check out the article: Removal Of Implicit Children
The Scoop: Inside the Longest Atlassian Outage of All Time
We are in the middle of the longest outage Atlassian has ever had. Close to 400 companies and anywhere from 50,000 to 800,000 users had no access to JIRA, Confluence, OpsGenie, JIRA Status page, and other Atlassian Cloud services.
The outage is on its 9th day, having started on Monday, 4th of April. Atlassian estimates many impacted customers will be unable to access their services for another two weeks. At the time of writing, 45% of companies have seen their access restored. Companies impacted I talked with were as large as 4,000 seats and the smallest company impacted I talked with had 150 seats.
Check out the full article: The Scoop: Inside the Longest Atlassian Outage of All Time
Should you prioritize infrastructure costs?
Before diving into the mechanics of managing infrastructure costs, the first question to answer is whether it’s a valuable use of organizational time to make your current infrastructure spend more efficient. How you think about this will vary a bit depending on whether your company is early-stage, prioritizing growth or profitability.
Check out the full article: Should you prioritize infrastructure costs?
Architecture Patterns: Caching (Part-1)
Performance has always been a key feature of technical systems. Today on the internet, sub-second latencies are the norm. It costs companies money if their pages load slowly because potential customers won’t wait longer than that. On the other hand, there is more and more data from many different sources which have to be loaded into a rich user experience (think of the number of things going on a typical FB page). This data gathering problem is further exacerbated by the trend towards microservices.
Given all this, how are we to build super-fast systems?
Check out the full article: Architecture Patterns: Caching (Part-1)
How Netflix Content Engineering makes a federated graph searchable
Over the past few years Content Engineering at Netflix has been transitioning many of its services to use a federated GraphQL platform. GraphQL federation enables domain teams to independently build and operate their own Domain Graph Services (DGS) and, at the same time, connect their domain with other domains in a unified GraphQL schema exposed by a federated gateway.
Check out the full article: How Netflix Content Engineering makes a federated graph searchable