{"id":237302,"date":"2022-04-04T16:02:26","date_gmt":"2022-04-04T15:02:26","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=dotnet&#038;p=237302"},"modified":"2025-09-18T14:57:47","modified_gmt":"2025-09-18T13:57:47","slug":"net-annotated-monthly-april-2022","status":"publish","type":"dotnet","link":"https:\/\/blog.jetbrains.com\/en\/dotnet\/2022\/04\/04\/net-annotated-monthly-april-2022","title":{"rendered":".NET Annotated Monthly | April 2022"},"content":{"rendered":"\n<p>Did you know? ReSharper once existed as a standalone IDE built with WinForms, in addition to being a plugin to Visual Studio. If you\u2019re interested in ReSharper\u2019s and Rider\u2019s inner workings, Maarten Balliauw has a <a href=\"https:\/\/www.youtube.com\/watch?v=2DB7qr9saOc\" target=\"_blank\" rel=\"noopener\">great talk on the subject<\/a>.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-default\"><img decoding=\"async\" loading=\"lazy\" width=\"1600\" height=\"800\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/07\/image-4-1.png\" alt=\"\" class=\"wp-image-630758\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">.NET news<\/h2>\n\n\n\n<p>Updates for spring in the Northern Hemisphere\/fall in the Southern Hemisphere:&nbsp;<\/p>\n\n\n\n<ul>\n<li><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/announcing-dotnet-7-preview-2\/\" target=\"_blank\" rel=\"noopener\">Announcing .NET 7 Preview 2 \u2013 The New, \u2018New\u2019 Experience<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/asp-net-core-updates-in-dotnet-7-preview-2\/\" target=\"_blank\" rel=\"noopener\">ASP.NET Core updates in .NET 7 Preview 2<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/dotnet-maui-preview-14\/\" target=\"_blank\" rel=\"noopener\">Announcing .NET MAUI Preview 14<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/dotnet-5-end-of-support-update\/\" target=\"_blank\" rel=\"noopener\">.NET 5.0 will reach End of Support on May 08, 2022<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Featured content&nbsp;<\/h2>\n\n\n\n<p><em>We\u2019d like to thank <\/em><strong><em>Nick Chapsas<\/em><\/strong><em> for curating this month\u2019s featured content, as well as the introductory trivia. Nick is a Senior Engineering Manager at Checkout.com, a <\/em><a href=\"https:\/\/www.youtube.com\/channel\/UCrkPsvLGln62OMZRO6K-llg\" target=\"_blank\" rel=\"noopener\"><em>YouTube Content Creator<\/em><\/a><em> for .NET, a Microsoft MVP and a <\/em><a href=\"https:\/\/nickchapsas.com\/\" target=\"_blank\" rel=\"noopener\"><em>course author<\/em><\/a><em>. You can also <\/em><a href=\"https:\/\/twitter.com\/nickchapsas\" target=\"_blank\" rel=\"noopener\"><em>find him on Twitter<\/em><\/a><em> where he doesn\u2019t talk about himself in the third person.<\/em><\/p>\n\n\n\n<p>The development of .NET 7 continues and this month <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/announcing-dotnet-7-preview-2\/\" target=\"_blank\" rel=\"noopener\">.NET 7 Preview 2<\/a> was released. The biggest feature of this preview is the introduction of the <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/announcing-dotnet-7-preview-2\/#introducing-the-new-regex-source-generator\" target=\"_blank\" rel=\"noopener\">Regex Source Generator<\/a> (it\u2019s pronounced Regex btw) which allows developers to automatically generate source code based on the Regex pattern specified. This means that applications can get a significant boost to their startup time and also a minor boost to their Regex match time. If you\u2019d like to know more about how this works check out <a href=\"https:\/\/www.youtube.com\/watch?v=WosEhlHATOk\" target=\"_blank\" rel=\"noopener\">my video on the topic<\/a>.<\/p>\n\n\n\n<p>Minimal APIs were introduced in .NET 6 and very quickly people started getting their hands dirty and seeing what they can build with these newly granted low-level powers. One of the projects that has stood out to me is <a href=\"https:\/\/fast-endpoints.com\/\" target=\"_blank\" rel=\"noopener\">FastEndpoints<\/a>. It is an open-source project that allows people to build elegant and fast APIs in .NET using Minimal API technology at its core. The approach almost looks too good to be true, but if you\u2019re looking for a simple and clean way to build APIs in .NET you should check the project out.<\/p>\n\n\n\n<p>Event Sourcing seems to be one of the most popular patterns for software development and for good reason. The idea that every change to the state of an application is captured in an event object, and that these event objects are themselves stored in the sequence they were applied to for the same lifetime as the application state itself, is brilliant. It does, however, sound very complex. <a href=\"https:\/\/twitter.com\/anton_t0shik\" target=\"_blank\" rel=\"noopener\">Anton Wieslander<\/a> at his YouTube channel \u201c<a href=\"https:\/\/www.youtube.com\/c\/RawCoding\" target=\"_blank\" rel=\"noopener\">Raw Coding<\/a>\u201d has taken it upon himself to break this concept down to its fundamentals and show us <a href=\"https:\/\/www.youtube.com\/watch?v=EGYMNsI_Opo\" target=\"_blank\" rel=\"noopener\">how we can implement it in C#<\/a> in his unique teaching way.<\/p>\n\n\n\n<p>Still can\u2019t make sense out of the new application bootstrapping approach in .NET 6? Wondering what happened to Startup.cs? <a href=\"https:\/\/www.youtube.com\/channel\/UC-ptWR16ITQyYOglXyQmpzw\" target=\"_blank\" rel=\"noopener\">Tim Corey<\/a> has you covered. In one of <a href=\"https:\/\/www.youtube.com\/watch?v=vdhFw1VSowg\" target=\"_blank\" rel=\"noopener\">his latest videos<\/a>, Tim is going through the .NET 6 changes step by step and explains how the Startup.cs was changed to be integrated directly into the Program.cs.<\/p>\n\n\n\n<p>Are videos not your thing? Do you prefer to listen to podcasts when working or on long drives? Then I got you covered. <a href=\"https:\/\/twitter.com\/dracan\" target=\"_blank\" rel=\"noopener\">Dan Clarke<\/a> and his <a href=\"https:\/\/unhandledexceptionpodcast.com\/\" target=\"_blank\" rel=\"noopener\">Unhandled Exception Podcast<\/a> has quickly become one of my favorite podcasts to listen to. And, what a coincidence! I happen to be the guest of <a href=\"https:\/\/unhandledexceptionpodcast.com\/posts\/0034-nickchapsas\/\" target=\"_blank\" rel=\"noopener\">the latest episode<\/a> where me and Dan geek out on several topics around software development and .NET.<\/p>\n\n\n\n<p>To wrap this up, I\u2019d like to give a shoutout to a new GitHub repository by <a href=\"https:\/\/twitter.com\/jost0101\" target=\"_blank\" rel=\"noopener\">Matthias Jost<\/a> called <a href=\"https:\/\/github.com\/matthiasjost\/dotnet-content-creators\" target=\"_blank\" rel=\"noopener\">dotnet-content-creators<\/a>. If you\u2019re looking for people to follow and learn from in the .NET space, this repository contains a lot of the people that should be on your radar. If you know someone who\u2019s creating content and isn\u2019t in that list, feel free to create a pull request.<\/p>\n\n\n\n<p>And as always, keep coding.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">.NET &amp; programing tutorials and tips&nbsp;<\/h2>\n\n\n\n<p>Below are some recent articles on .NET and related topics.<\/p>\n\n\n\n<p><strong>.NET tutorials and tips<\/strong><\/p>\n\n\n\n<ul>\n<li><a href=\"https:\/\/askxammy.com\/replicating-contact-message-ui-in-xamarin-forms\/\" target=\"_blank\" rel=\"noopener\">Replicating Contact &amp; Message UI in Xamarin Forms<\/a> &#8211; Leomaris Reyes demonstrates a really nice way to layout contacts for messaging. Done in Xamarin Forms.<\/li>\n\n\n\n<li><a href=\"https:\/\/xamgirl.com\/statelayout-with-collections-in-xamarin-forms-maui\/\" target=\"_blank\" rel=\"noopener\">StateLayout with Collections in Xamarin Forms\/MAUI<\/a> &#8211; Displaying different views\/layouts is often a tedious task to do. Charlin Agramonte breaks it down and shows the best way to do it.<\/li>\n\n\n\n<li><a href=\"https:\/\/irina.codes\/custom-media-types-in-net\/\" target=\"_blank\" rel=\"noopener\">Using custom media types in .NET<\/a> &#8211; Irina Scurtu shows how to use and create custom mime types in .NET, how to respond to them in your APIs, and answers some common questions regarding mime types in .NET.<\/li>\n\n\n\n<li><a href=\"https:\/\/andrewlock.net\/cancelling-await-calls-in-dotnet-6-with-task-waitasync\/\" target=\"_blank\" rel=\"noopener\">Cancelling await calls in .NET 6 with Task.WaitAsync()<\/a> &#8211; Andrew Lock shows an eloquent technique to cancel await calls.<\/li>\n\n\n\n<li><a href=\"https:\/\/exceptionnotfound.net\/middleware-in-asp-dotnet-6-intro-and-basics\/\" target=\"_blank\" rel=\"noopener\">Middleware in ASP.NET 6 &#8211; Intro and Basics<\/a> &#8211; A major value proposition of .NET is middleware! Matthew Jones goes back to basics in demonstrating what you need to know about ASP.NET middleware.<\/li>\n\n\n\n<li><a href=\"https:\/\/www.codeproject.com\/Articles\/5325820\/DateOnly-in-NET-6-and-ASP-NET-Core-6\" target=\"_blank\" rel=\"noopener\">DateOnly in .NET 6 and ASP.NET Core 6<\/a> &#8211; .NET 6 has a new DateOnly and TimeOnly struct and Zijian shows us how and where we can use it. He also covers nice tidbits about integrating this type with code generators, TypeScript, and other languages and techs.<\/li>\n\n\n\n<li><a href=\"https:\/\/code-maze.com\/csharp-10-new-features\/\" target=\"_blank\" rel=\"noopener\">C# 10 New Features<\/a> and <a href=\"https:\/\/code-maze.com\/aspnetcore-rabbitmq\/\" target=\"_blank\" rel=\"noopener\">How to Use RabbitMQ in ASP.NET Core<\/a> &#8211; Check out C# 10\u2019s new features and then get to learning about RabbitMQ in ASP.NET Core by Code Maze.&nbsp;<\/li>\n\n\n\n<li><a href=\"https:\/\/medium.com\/it-dead-inside\/lets-learn-blazor-creating-a-desktop-app-with-electron-net-d256c956a96a\" target=\"_blank\" rel=\"noopener\">Let\u2019s Learn Blazor: Creating a Desktop App with Electron.NET<\/a> &#8211; Cross-platform apps are really important to many businesses, not to mention apps that are deployed from app stores. Learn how to do cross platform Blazor with this article by Christopher Laine.&nbsp;<\/li>\n\n\n\n<li><a href=\"https:\/\/khalidabuhakmeh.com\/loop-around-index-with-csharp-collections\" target=\"_blank\" rel=\"noopener\">Loop Around Index with C# Collections<\/a> and <a href=\"https:\/\/khalidabuhakmeh.com\/using-libman-to-manage-client-side-dependencies\" target=\"_blank\" rel=\"noopener\">Using LibMan To Manage Client-Side Dependencies<\/a> &#8211; Two great posts by Khalid Abuhakmeh. This month it\u2019s working with C# collections and LibMan, the seriously underrated and often overlooked package manager for .NET.<\/li>\n\n\n\n<li><a href=\"https:\/\/codeopinion.com\/domain-logic-where-does-it-go\/\" target=\"_blank\" rel=\"noopener\">Domain Logic: Where does it go?<\/a> &#8211; Derek Comartin answers this question regarding use of a domain model for domain logic, as well as common programming pattern errors found in domain logic.&nbsp;<\/li>\n\n\n\n<li><a href=\"https:\/\/auth0.com\/blog\/using-https-in-your-development-environment\/\" target=\"_blank\" rel=\"noopener\">Using HTTPS in Your Development Environment<\/a> &#8211; Andrea Chiarelli outlines several reasons why you should use HTTPS in your dev environment. Andrea also shows you how to set it up and how it works..&nbsp;<\/li>\n\n\n\n<li><a href=\"https:\/\/www.learmoreseekmore.com\/2022\/03\/dot6-web-api-crud-operation-with-mongodb.html\" target=\"_blank\" rel=\"noopener\">.NET6 Web API CRUD Operation With MongoDB<\/a> &#8211; A classic CRUD example, but with MongoDB by Naveen Bommidi.<\/li>\n\n\n\n<li><a href=\"https:\/\/www.code4it.dev\/blog\/postgres-crud-entityframework\" target=\"_blank\" rel=\"noopener\">How to perform CRUD operations with Entity Framework Core and PostgreSQL<\/a> &#8211; In a similar notion, Davide Bellone has written a classic CRUD example but with PostgreSQL.<\/li>\n\n\n\n<li><a href=\"https:\/\/www.telerik.com\/blogs\/connecting-dotnet-application-mongodb-atlas\" target=\"_blank\" rel=\"noopener\">Connecting a .NET Application With MongoDB Atlas<\/a> &#8211; Here\u2019s more MongoDb: Assis Zang provided a step-by-step guide on connecting with the Atlas database from MongoDb.<\/li>\n\n\n\n<li><a href=\"https:\/\/www.claudiobernasconi.ch\/2022\/03\/03\/integration-testing-asp-net-core-6-webapi-applications\/\" target=\"_blank\" rel=\"noopener\">Integration Testing ASP.NET Core 6 WebAPI Applications<\/a> &#8211; Claudio Bernasconi goes into detail on how to do integration testing in ASP.NET Core 6 WebAPI (though it will work for any ASP.NET app). Blog post + video.<\/li>\n\n\n\n<li><a href=\"https:\/\/weblog.west-wind.com\/posts\/2022\/Mar\/29\/Combining-Bearer-Token-and-Cookie-Auth-in-ASPNET\" target=\"_blank\" rel=\"noopener\">Combining Bearer Token and Cookie Authentication in ASP.NET<\/a> &#8211;&nbsp; Someone finally had enough and documented their frustrations with multi-scheme authentication in .NET. So thank you Rick Strahl! This is much needed.<\/li>\n\n\n\n<li><a href=\"https:\/\/code-maze.com\/serialization-deserialization-csharp\/\" target=\"_blank\" rel=\"noopener\">Serialization and Deserialization in C#<\/a> &#8211; From C# to JSON and back, Code Maze shows basics of serialization and how you can use it in .NET apps.<\/li>\n\n\n\n<li><a href=\"https:\/\/blog.elmah.io\/search-videos-through-the-youtube-data-api-from-c\/\" target=\"_blank\" rel=\"noopener\">Search videos through the YouTube Data API from C#<\/a> &#8211; This is handy! Who at some point didn\u2019t want to make a quick app that tracks shows you want to watch, or bookmarks videos? Tutorial by Thomas Ardal.<\/li>\n\n\n\n<li><a href=\"https:\/\/gregorsuttie.com\/2022\/03\/09\/net-4-x-app-running-in-a-container-using-docker\/\" target=\"_blank\" rel=\"noopener\">.NET 4.x app running in a container using Docker<\/a> &#8211; It\u2019s going to be a lot easier maintaining legacy apps in containers than trying to recreate the dev or production environments so this post by Gregor Suttie demonstrates how to do it.<\/li>\n\n\n\n<li><a href=\"https:\/\/csharp.christiannagel.com\/2022\/03\/22\/windowsservice-2\/\" target=\"_blank\" rel=\"noopener\">Creating a Windows Service with .NET 6<\/a> &#8211; Not everyone creates microservices and cloud enabled solutions. Some of us are creating classic and mature solutions like a service in Windows, for those occasions when it\u2019s appropriate. Christian Nagel shows how to do this.<\/li>\n<\/ul>\n\n\n\n<p>Daniel tweets some excellent pointers on the popular AutoMapper library.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/twitter.com\/danylaws\/status\/1506280583361609729\n<\/div><\/figure>\n\n\n\n<p><strong>Related programming tutorials and tips:<\/strong><\/p>\n\n\n\n<ul>\n<li><a href=\"https:\/\/www.syncfusion.com\/blogs\/post\/using-design-patterns-in-javascript-the-ultimate-guide.aspx\" target=\"_blank\" rel=\"noopener\">Using Design Patterns in JavaScript \u2014The Ultimate Guide<\/a> &#8211; It\u2019s good to know common patterns for a variety of languages. This time, Nishani Dissanayake goes over a whirlwind tour of JavaScript patterns.&nbsp;<\/li>\n\n\n\n<li><a href=\"https:\/\/www.mssqltips.com\/sqlservertip\/7065\/create-table-sql-server-syntax-examples\/\" target=\"_blank\" rel=\"noopener\">How To Create a Table in SQL Server<\/a> &#8211; Another back to basics with Aubrey Love showing how to create a table in SQL. Every .NET developer does this at some point when they have no DBA to manage databases or perhaps when prototyping.<\/li>\n\n\n\n<li><a href=\"https:\/\/www.telerik.com\/blogs\/using-conditional-logic-improve-form-design-ux\" target=\"_blank\" rel=\"noopener\">Using Conditional Logic to Improve Form Design and UX<\/a> &#8211; Suzanne Scacca shows the results of conditional logic after it has been applied to a UX. Consider the scenarios here and convert them into the programming language of your choice.<\/li>\n\n\n\n<li><a href=\"https:\/\/code.tutsplus.com\/tutorials\/how-to-crop-or-resize-an-image-with-javascript--cms-40446\" target=\"_blank\" rel=\"noopener\">How to Crop or Resize an Image with JavaScript<\/a> &#8211; Monty Shokeen<\/li>\n\n\n\n<li><a href=\"https:\/\/www.c-sharpcorner.com\/article\/10-reasons-why-software-projects-fail\/\" target=\"_blank\" rel=\"noopener\">10 Reasons Why Software Projects Fail<\/a> &#8211; While it seems like the reasons for failed projects are far more than 10, the 10 that Mahesh Chand outlines here are often cited. Read on so you can get ahead of the game before the project goes into the red zone.<\/li>\n\n\n\n<li><a href=\"https:\/\/whitep4nth3r.com\/blog\/delete-all-merged-git-branches-one-terminal-command\/\" target=\"_blank\" rel=\"noopener\">How to delete all merged git branches with one terminal command<\/a> &#8211; Are all those branches clogging up your screen? You bet! Salma Alam-Naylor shows how to get rid of all those pesky merged branches with one command to rule them all! Ok, ok, it\u2019s one command for this specific scenario but it\u2019s a pretty good one.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Interesting and cool stuff<\/h2>\n\n\n\n<p>Check out these recent off-topic links.<\/p>\n\n\n\n<ul>\n<li><a href=\"https:\/\/blog.trello.com\/raise-ideas-up-the-chain-of-command\" target=\"_blank\" rel=\"noopener\">How To Raise Your Ideas Up The Chain Of Command<\/a> &#8211; If we want our ideas to launch inside our workplaces then we have to sell those ideas to management. Unfortunately there\u2019s no way around this. So Sam Milbrath hopes this post will help you convey why your ideas matter.<\/li>\n\n\n\n<li><a href=\"https:\/\/stackoverflow.blog\/2022\/04\/01\/embracing-ambiguity-in-software-with-one-of-youtubes-ux-engineers\/\" target=\"_blank\" rel=\"noopener\">Embracing ambiguity in software with one of YouTube\u2019s UX engineers<\/a> &#8211; It\u2019s hard to do! Programmers like certainty and uncertain outcomes makes our lives difficult. In this podcast, Eira May interviews Mattaniah Aytenfsu from YouTube on how to work with ambiguity swirling around you.<\/li>\n<\/ul>\n\n\n\n<p>This is really interesting to think about. In many places, folks don\u2019t use cover letters anymore. Instead, they send an email and the email text serves as the cover letter. Or they upload a resume through a corporation\u2019s website and there is no option to upload a cover. Should we revive this old practice? Do you think it makes a difference?&nbsp;<\/p>\n\n\n\n<blockquote class=\"twitter-tweet\"><p lang=\"en\" dir=\"ltr\">I can confirm that I just read a &#8220;cover letter&#8221; (only a paragraph) that changed my view on candidate. <br><br>It was short and captured why this role was special to them. <br><br>I was on the fence and I saw good things but based on exp I was not sure. They fixed that in 2 sentences.<\/p>\u2014 Kyle Welch (@kylewelch) <a href=\"https:\/\/twitter.com\/kylewelch\/status\/1509213328417165323?ref_src=twsrc%5Etfw\" target=\"_blank\" rel=\"noopener\">March 30, 2022<\/a><\/blockquote> <script async=\"\" src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script>\n\n\n\n<h2 class=\"wp-block-heading\">And finally, the latest from JetBrains<\/h2>\n\n\n\n<p>Here\u2019s a chance to catch up on JetBrains news that you might have missed:<\/p>\n\n\n\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/blog\/2022\/03\/11\/jetbrains-statement-on-ukraine\/\">JetBrains\u2019 Statement on Ukraine<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/dotnet\/2022\/03\/28\/github-essentials-with-rider\/\">GitHub Essentials with Rider<\/a><\/li>\n<\/ul>\n\n\n\n<p>As always, our <a href=\"https:\/\/www.jetbrains.com\/dotnet\/guide\/\" target=\"_blank\" rel=\"noopener\">.NET Guide<\/a> is available as a learning tool with tons of videos, tips, tricks, and info on a variety of .NET related topics.<\/p>\n\n\n\n<p>Feel free to share content that you find useful with other readers. Don\u2019t keep it to yourself! Send us an <a href=\"mailto:dotnet-advocates@jetbrains.com\">email<\/a> with your suggestions for publication in future newsletters. Thank you for reading.<\/p>\n\n\n\n<p><a href=\"https:\/\/info.jetbrains.com\/Dotnet-Annotated-Subscription.html\" target=\"_blank\" rel=\"noopener\">Subscribe to .NET Annotated<\/a><\/p>\n","protected":false},"author":901,"featured_media":81774,"comment_status":"closed","ping_status":"closed","template":"","categories":[4992],"tags":[8363],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/dotnet\/237302"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/dotnet"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/types\/dotnet"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/users\/901"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/comments?post=237302"}],"version-history":[{"count":6,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/dotnet\/237302\/revisions"}],"predecessor-version":[{"id":633259,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/dotnet\/237302\/revisions\/633259"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/media\/81774"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/media?parent=237302"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/categories?post=237302"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/tags?post=237302"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/cross-post-tag?post=237302"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}