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!
DevOps Dojo: Lean Product – Part 1
To become wise, you need to have models in your head. Models are formal structures represented in mathematics and diagrams that help us to understand the world. Mastery of models improves our ability to reason, explain, design, communicate, act, predict, and explore. When our thinking is informed by diverse, logically consistent, and empirically validated frames, we are more likely to make wise choices.
We will dedicate three blogs to exploring the product-centric model and the lean product model developed by our DevOps Dojo community. This blog is Part 1.
Check out the article: DevOps Dojo: Lean Product – Part 1
DevOps Dojo: Lean Product – Part 2
In Part 1 of our “DevOps Dojo: Lean Product” blog, we discussed the need to build foundational concepts of the product-centric model. This enables us to explore more advanced concepts in the lean product-centric model.
Check out the article: DevOps Dojo: Lean Product – Part 2
Introducing the new Azure Front Door: Reimagined for modern apps and content
In 2019, we launched Azure Front Door to bring enterprise-grade content delivery network (CDN) capabilities to our customers. This was a result of our own cloud journey over the past 13 years, which led us to develop unique infrastructure and services hardened by support for Microsoft’s largest applications like Bing, Microsoft 365, LinkedIn, Skype, and Azure. Read about LinkedIn’s experience1 migrating their own infrastructure to Azure Front Door.
Since then, a lot has changed for you and your customers. The acceleration of digital transformation to adapt to new ways of doing business, hybrid working models, and increasing security costs has driven the demand for a new type of cloud CDN that can address these modern challenges and simplify internet-first architectures in the cloud.
Today, we are announcing the general availability of the new Azure Front Door, our native, modern cloud content delivery network (CDN) catering to both dynamic and static content acceleration with built-in turnkey security, and a simple and predictable pricing model. There are two Azure Front Door tiers—Azure Front Door Standard and Premium—that provide a unified, secure solution for delivering your applications, APIs, and content on Azure or anywhere.
Check out the article: Introducing the new Azure Front Door: Reimagined for modern apps and content
Public preview: Azure Cosmos DB partition key advisor notebook
Use the Azure Cosmos DB partition key advisor notebook to choose the optimal partition key for your workload. Using the notebook, you can enter information about a new or existing workload including basic details, query information, and candidate partition keys. The advisor will use this information to rank the candidate keys you enter and give you a recommendation, as well as details about the benefits and trade-offs for each candidate. The advisor also gives you analysis of any cross-partition queries you may have as a result of choosing one candidate or another. The advisor works with any large or small, read heavy or write heavy workloads.
Check out the article: Public preview: Azure Cosmos DB partition key advisor notebook
Azure Cost Management and Billing updates – March 2022
Whether you're a new student, a thriving startup, or the largest enterprise, you have financial constraints, and you need to know what you're spending, where, and how to plan for the future. Nobody wants a surprise when it comes to the bill, and this is where Azure Cost Management and Billing comes in.
We're always looking for ways to learn more about your challenges and how Azure Cost Management and Billing can help you better understand where you're accruing costs in the cloud, identify and prevent bad spending patterns, and optimize costs to empower you to do more with less.
Check out the article: Azure Cost Management and Billing updates – March 2022
dotnet / C#
.NET Framework 4.5.2, 4.6, and 4.6.1 will reach End of Support on Apr 26, 2022
If you are currently using .NET Framework 4.5.2, 4.6, or 4.6.1 runtime you need to update your deployed runtime to a more recent version – at least .NET Framework 4.6.2 before April 26, 2022 – in order to continue to receive updates and technical support. There is no need for you to retarget or recompile your application against .NET Framework 4.6.2.
Check out the full article: .NET Framework 4.5.2, 4.6, and 4.6.1 will reach End of Support on Apr 26, 2022
How segments and regions differ in decommitting memory in the .NET 7 GC
We just snapped the source with regions in GC on by default for the next .NET 7.0 preview build this past Monday (and the build will be release in April). So I wanted to explain how the regions feature differs in its policy for decommitting memory from segments so you can evaluate whether you are seeing something by design or not if you decide to try it out. Note that the regions feature is only available in 64-bit and for now we disable it for macOS. So everything in this article will assume 64-bit. Also we are still in the middle of the development cycle for .NET 7.0 so I’ll mention things that might change later.
Check out the full article: How segments and regions differ in decommitting memory in the .NET 7 GC
Avoiding Distributed Transactions with the Reservation Pattern
A long-running business process could last seconds to days, you cannot lock resources within a service using a distributed transaction. So what’s the alternative? The real world has a solution, it’s a reservation. The reservation pattern allows you to have a time-bound limited guarantee which allows you to coordinate with other services.
Check out the full article: Avoiding Distributed Transactions with the Reservation Pattern
Simple web site crawler using .NET Core and C#
This is an elementary Web site crawler written using C# on .NET Core . What do we mean by crawling a web site ? No! We are not indexing the content of the pages.
This is a simple component which will crawl through a web site (example: www.cnn.com), find sub-links and in turn crawl those pages . Only links which fall the under the domain of the parent site are accepted.
Check out the full article: Simple web site crawler using .NET Core and C#
Our latest major version includes out-of-the-box improvements like automatic batching, new APIs like startTransition, and streaming server-side rendering with support for Suspense.
Many of the features in React 18 are built on top of our new concurrent renderer, a behind-the-scenes change that unlocks powerful new capabilities. Concurrent React is opt-in — it’s only enabled when you use a concurrent feature — but we think it will have a big impact on the way people build applications.
Check out the article: React v18.0
React Libraries for 2022
React has been around for a while. Since then, a well-rounded yet overwhelming ecosystem of libraries evolved around the component driven library. Developers coming from other programming languages or libraries/frameworks often have a hard time figuring out all the libraries for creating web applications with React.
Check out the article: React Libraries for 2022
An Introduction to the useId() Hook in React 18
The useId is a new hook introduced in React 18. The useId hook helps generate a unique Id on both the client-side and server-side.
The previous one was called the
useOpaqueIdentifier hook in React. The
useOpaqueIdentifier hook had many bugs and limitations, so the
useId hook was delayed.
In React 18, all the issues were resolved correctly, and the React team introduced the
useOpaqueIdentifier hook with the new name
Check out the article: An Introduction to the useId() Hook in React 18
Concepts That Every React Native Developer Should Know
Since then, the framework has seen an ongoing increase in adoption by the mobile development community used by tech giants such as Microsoft, Uber, Spotify, and Pinterest.
Developing large-scale projects can be challenging, and we should build a strong structure and concepts at the early stages to create a stable development environment.
Check out the article: Concepts That Every React Native Developer Should Know
This Pattern Will Make Your React Hooks Cleaner
So you don’t have to redo work.
Check out the article: This Pattern Will Make Your React Hooks Cleaner
ZEN and the art of Reliability
Zendesk’s reliability principles and the real-world stories as we transitioned from a humble IT help desk software to providing mission critical systems for enterprises.
Check out the full article: ZEN and the art of Reliability
Please put units in names
There is one code readability trap that is easy to avoid once you are aware of it, yet the trap is pervasive: omitting units. Consider the following three snippets in Python, Java, and Haskell:
How long do these programs sleep for? The Python program sleeps for five minutes, the Java program sleeps for 0.3 seconds, and the Haskell program sleeps for 0.3 milliseconds.
How can you tell this from the code? You can’t. You just have to know by heart that
time.sleep takes seconds, while
threadDelay takes microseconds. If you look it up often enough, eventually that knowledge will stick, but how can we keep the code readable even for people who haven’t encountered
Check out the full article: Please put units in names
On building scalable systems
In software engineering, scalability is the idea that a system should be able to handle an increase in workload by employing more computing resources without significant changes to its design.
Check out the full article: On building scalable systems
I built a receipt printer for GitHub issues
I have a lot of side projects on GitHub. Some of them are kind of popular, and I tend to get issues posted from time to time. The problem though is that usually they kind of get lost in the mix of my emails, or I forget to go through my repos and add new items to my todo list.
I've been occasionally writing new issues down on sticky notes whenever I see a notification for an issue, but I always wanted an excuse to streamline the process a bit more. After seeing a receipt printer spitting out orders while grabbing some take-out the other day, I wondered if I could use one to print out a ticket each time an issue was added to one of my repos.
Spoiler alert, it worked!
Check out the full article: I built a receipt printer for GitHub issues
BBC Online — A year with serverless
Its been a little over a year since I published my last two blog posts, in which I outlined the process we went through to choose the technology for BBC online and the steps we took to optimise serverless for our use. Recently my colleague Graeme has published a blog post on the organisational challenges we’ve faced in delivering this project.
Check out the full article: BBC Online — A year with serverless
Episode #128: Serverless-First Engineers and the Flywheel Effect with David Anderson
On this episode, Jeremy and Rebecca chat with David Anderson about the importance of being Well-Architected, what companies must do to embrace a serverless transformation, the evolution of Serverless-First engineers, how to accelerate your organization to the "modern cloud" with his new book "The Flywheel Effect", and much more.
Check out the episode: Episode #128: Serverless-First Engineers and the Flywheel Effect with David Anderson