Sr. Content Developer at Microsoft, working remotely in PA, TechBash conference organizer, former Microsoft MVP, Husband, Dad and Geek.
154304 stories
·
33 followers

Mastering Dynamic Components, HTTP Resources, and AI Writing Assistants ️

1 Share
This week in the Angular community week of May 18 2026

Sometimes the best way to learn is to dive straight into the code! This week, we’re highlighting several hands-on repositories that demonstrate the latest Angular patterns and how to integrate Google Gemini for real-time user assistance.

Check out these essential code samples and templates:

Advanced Dynamic Component Creation

Antonio Cardenas @yeoudev provides a masterclass in using ViewContainerRef. This repository and StackBlitz demo show you exactly how to handle dynamic component instantiation in a clean, scalable way.

Explore the code: https://github.com/AntonioCardenas/ngviewcontainerref

Try the demo: https://stackblitz.com/~/github.com/AntonioCardenas/ngviewcontainerref

Angular Vibe Coding: The Ultimate CRUD Template

Need to start a project fast? Antonio Cardenas @yeoudev offers a “Vibe Coding” template that comes ready with basic CRUD functionality and helpful scripts to clean up boilerplate, letting you focus on your unique logic.

Grab the template: https://github.com/AntonioCardenas/angularvibecoding

Mastering httpResource with Pirates

Deborah Kurata @deborahkurata brings her signature clarity to the new Signal-based httpResource. This fun “Pirates” example demonstrates how to fetch and manage data using the newest reactive primitives in Angular.

Check out the examples: https://github.com/DeborahK/angular-http-resource-pirates

Build an AI-Powered Grammar Assistant

Ankit Sharma @ankitsharma_007 shows the power of the Google Gemini API in a lightweight Angular app. This project provides real-time grammar corrections as you type — a perfect blueprint for adding AI utility to your own editors.

See the AI writer: https://github.com/AnkitSharma-007/angular-gemini-writing-assistant

Have you built a cool helper tool with Gemini or tried the new httpResource? Your code samples could be the missing piece for another developer!

Keep the community growing!
Use #AngularSparkles and #AngularAI to share your latest GitHub repos and StackBlitz demos! 👇


Mastering Dynamic Components, HTTP Resources, and AI Writing Assistants 🛠️ was originally published in Angular Blog on Medium, where people are continuing the conversation by highlighting and responding to this story.

Read the whole story
alvinashcraft
just a second ago
reply
Pennsylvania, USA
Share this story
Delete

Deno 2.8

1 Share
`import defer`, six new subcommands (`deno transpile`, `deno pack`, `deno bump-version`, `deno ci`, `deno why`, `deno audit fix`), network debugging in Chrome DevTools, framework-aware `deno compile`, and 3.66x faster cold npm installs.
Read the whole story
alvinashcraft
15 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

Turn Your Blog Posts Into Podcast Episodes

1 Share

Some readers love settling in with a post. Others catch up while walking, commuting, cooking, or working through a long list of tabs.

Posts to Podcast gives your audience another way to keep up with what you publish.

Starting today, WordPress.com bloggers can turn recent posts into AI-generated podcast episodes directly from their dashboard. Choose the posts you want to include, generate a two-host audio conversation, review the draft, and publish it when you’re ready.

Find it in your dashboard

You’ll find Posts to Podcast under Media -> Create AI Podcast in your WordPress.com dashboard. Choose a time range, such as the last week or month, or select specific posts yourself.

The episode below was generated from recent WordPress.com blog posts using the same feature we’re announcing today:

How it works

Posts to Podcast turns the posts you select into a two-host audio conversation. The finished episode is saved to your Media Library, and WordPress.com prepares a draft post with the audio and transcript already included.

From there, you stay in control: review the draft, make any edits you want, and publish it like any other post. Since the audio is saved to your Media Library, you can also reuse it elsewhere, upload it to another platform, or keep it as part of your site’s media archive.

More ways to share your posts

Use Posts to Podcast to create weekly recaps, monthly digests, audio companions to newsletters, or listening-friendly versions of recent posts.

  • Summarize your latest posts for subscribers who prefer listening.
  • Turn a month of updates into a conversational recap.
  • Share an audio companion to a newsletter, publication, or personal blog.
  • Make your archive easier to revisit in a new format.

Available to all WordPress.com sites

Posts to Podcast is available to all WordPress.com sites. Whether you publish daily updates, weekly essays, tutorials, newsletters, or personal reflections, you can turn recent posts into a listenable episode directly from your dashboard.

A new format for your writing

Your words do the work. Posts to Podcast gives them a microphone.

Open your dashboard, go to Media -> Create AI Podcast, and turn your recent writing into something your audience can listen to.





Read the whole story
alvinashcraft
37 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

The State of CSS Centering in 2026

1 Share

What? Another article about centering?! But all we have to do is use display: flex | grid, then align-items: center. No, it’s align-content… wait… I think it’s justify-content. Well, let’s use margin: auto, this one works all the time, right?

Despite the countless number of online resources (even CSS-Tricks has a full guide on it), it’s easy to get confused when trying to center an element, whether vertically, horizontally, or both). I am sure you will find something that works by googling or trying different combinations. But do you really understand why the code you picked works? Is it the right one for your use case? Because it really does depend and require consideration!

In this article, we will do a fresh exploration of centering in CSS, and hopefully, you will learn something new by the end of it.

I already master CSS centering. Should I skip this article?

Stay with me because we will explore hidden tricks and modern features that you may not know — safe centering, text-box, centering in anchor positioning, etc.

Is centering still hard?

No, centering is not hard. Considering all the different and various ways to center an element, it’s an easy task that generally requires two or three lines of code. But, how many ways do we have to center an element? I did the count, and I was able to enumerate 100 different ways to center an element vertically and horizontally within a container.

Are you serious,100 ways?! That’s insane.

Yes, 100 is a ridiculously high number for what should be a simple task, but that number is misleading. If you check the list, you will find I marked about 60 of them in red, meaning they are hacky and not recommended. This leaves us with roughly 30 valid approaches. And within those valid options, many are basically the same, only written differently, so we can consider them redundant.

At the end of the day, the number of “unique” and “valid” ways to center an element is less than 15 (or even 10) but it was a fun exercise enumerating the different codes that can center an element. Go check the full list, you may learn something new!

Let’s look at things from a beginner’s perspective. For me, who has been writing CSS day and night for years, it’s easy to say “centering is not hard,” but what about to a newcomer who reads this and confronted with all those different ways to center stuff? Nah, it’s not easy at all. align-items, align-content, justify-content, place-self, margin: auto. What the hell?!

Too many properties for a task that everyone claims is easy! Well, let’s pick a code that works and move on. After all, if the item is in the center, then it’s fine, right? Let’s avoid making a lot of noise around this, or the CSS fanatics will shout at me.

Don’t think that way! Centering can be hard, and that’s fine. It doesn’t mean you are stupid. It simply means you need to understand how it works.

Don’t skip the important step of “learning” (like many do); otherwise you will find yourself doing a lot of copy/paste without really understanding what is going on. Sometimes it works, but sometimes it doesn’t, and it can be very frustrating.

Learn how to align before how to center

Centering is nothing but a special case of alignment in CSS, and alignment is a complex world. It’s not only left, center, right, or top, center, bottom. It’s more than that. The good news is that you can easily learn it. For this purpose, I wrote a deep dive I called “The fundamentals of alignment in CSS.”

It’s probably one of my longest writings, but believe me, it’s worth your time (and effort). I explain how alignment works in all the different CSS layout methods. It starts with understanding the alignment theory, which has two levels of alignment (“content” and “item”) and two axes (horizontal and vertical).

Diagram showing that place-content equals align-content plus justify-content, place-self equals align-self plus justify-self, and place-items equals align-items plus justify-items, alongside a visual example of all three inside a white container and black border.

Identifying the “content” and the “item” in every layout is the key to understanding how everything works. I insist on “every layout” because assuming it works the same everywhere is a very common mistake.

Do yourself a favor and read that detailed article — you will thank me later! And once you understand the core concept of alignment, centering will become child’s play.

Should I use Flexbox or Grid?

I see a lot of people who always use the same method to center an element, whatever the situation. You have the CSS Grid team and the Flexbox team. While both work, I don’t advise you to think that way. Remember that the goal is to understand and avoid quick copy/paste approaches.

Study your layout and your requirements, then decide which method to use. Maybe your case requires position: absolute or a simple text-align: center. Flexbox or CSS Grid aren’t always mandatory for centering stuff, and there is no one way that’s better than another.

That said, if I have to pick something, I would consider the following codes. Each one for each type of layout.

.container { 
  display: block;
  align-content: center;
  justify-items: center; 
}
.container {
  display: grid;
  place-content: center;
}
.container {
  display: flex;
  flex-wrap: wrap;
  place-content: center;
}

Note: justify-items in the context of a block container is not supported by all the browsers. It’s Chrome-only for now, so consider using Chrome to see the following demos.

The properties are defined in one place (the container), and the methods are suitable for centering one or multiple items.

You won’t notice a difference when centering a single item. The three methods behave the same.

With multiple items, Flexbox behaves differently. It has a responsive behavior where the items are initially laid out horizontally and wrap when the container is narrowed. Resize the container and see what happens.

And with multiple items of different sizes, they all behave differently.

We started with three approaches that give us the same “visual” result when working with a single item, but upon adding more items, we can clearly see they are different. This difference is important as it shows that it’s not about picking a random code to center stuff. It’s about understanding how each code behaves in different situations, then picking the most suitable one. It’s wrong to assume that we can center the same way using Flexbox, CSS Grid, etc. All the methods are different and rely on different mechanisms, even if they give the same result in the context of one item.

This also explains why we technically have 100 ways to center stuff. We have different layout types, and each layout has its own alignment logic. But when the structure is reduced to one item inside a container, we have a lot of choices, and many methods may look identical even though they are not.

So, let me repeat myself: Study the alignment logic behind each code to know which one is suitable for your use case. Don’t blindly copy/paste a code that simply “works.”

What about centering text?

When centering “boxes,” we generally don’t have any issues if we apply the properties correctly. But once we start dealing with text, it can be tricky to perfectly center things vertically. You know the extra space above or below that you cannot really control and you have to use magic values for line-height or padding to rectify it.

We now have a new property that allows us to fix this: text-box. It trims the extra space based on your configuration.

In both boxes, I align the content in the center using a common code. Notice that the first box is not that good. The text seems to be off, even though I am using the CSS properties correctly.

It’s frustrating, right? For CSS, everything is perfectly centered, but for us, it’s not. why!?

It’s related to how the font is designed and the space reserved for each character. Adding a border around the text will make things clear.

Two examples of the word Text next to a red square. The first example is slightly off center due to line height and the second is perfect centered against the square due to removing extra line height.

As you can see, the “text box” is centered, but there is unwanted space inside it. I was able to remove that space using one line of code:

text-box: cap alphabetic;

Let’s try lowercase text without descenders or ascenders.

This time I am using slightly different keywords:

text-box: ex alphabetic;

…to remove the space for perfect centering

Two examples of the word awesome next to a red square. The first example is slightly off center due to line height and the second is perfect centered against the square due to removing extra line height.

The values look strange and unintuitive, but I have created a small generator where you can easily specify which space you want to trim and get the code in no time.

Highlighting the rendered line height of a text showing the space it adds to the content.

And if you want more detail on that feature, check Danny Schwarz’s “Two CSS Properties for Trimming Text Box Whitespace.”

Centering with CSS Anchor Positioning

In some cases, you may need to use absolute or fixed position, which means we are dealing with an out-of-flow element and a different alignment logic; hence, another centering technique.

The common way to do that is the classic top/left combined with translate:

left: 50%;
top: 50%;
transform: translate(-50%, -50%);

It works, and everyone is happy, but it’s not the suitable code to use. In 2026, I would consider that code hacky, and worth avoiding. It’s like creating layouts using float. That a was a valid approach until we got Flexbox and CSS Grid, which were intentionally designed for this sort for thing.

It’s the same thing with absolutely-positioned elements. Today, it’s better to rely on modern CSS features like this:

inset: 0;
place-self: center;

The inset property controls the “inset modified containing block” (IMCB) and place-self (the shorthand for justify-self and align-self) aligns the element inside the IMCB. I explain all those concepts in great detail in this article.

Where is anchor positioning in all of this?

Great question! Anchor positioning relies on absolute (or fixed) elements and has its own mechanism for controlling an element’s placement relative to its anchor. We are specifically dealing with centering, so we have to talk about a new value, anchor-center.

Let’s start with the following example:

I am placing the text box above the anchor using position-area: top. You can drag the anchor, and the text box will remain stuck to the top and centered.

Let’s update the alignment and use place-self: center.

The position looks a bit off at first glance, but if you drag the anchor and look closely, you will see the box centered within the top area.

A light blue label that says CSS is Awesome in the top center of a container that includes an anchor icon places at the center left of the container. The container includes dashed red lines that highlight the position of both items.

Centering is indeed not easy! It’s confusing if you don’t know in which area your element is centered. You will think that something is broken because your eyes might not see it as a centered element.

If you want to get back to the previous position, you can use this:

place-self: end anchor-center;

…or this:

align-self: end;
justify-self: anchor-center;

What’s happening here is that, vertically, we place the element at the end (the bottom), and horizontally, we consider the center of the anchor element. In other words, the anchor-center value is what makes the element follow the anchor when you drag it!

This means we have two different ways to use anchor positioning for centering: Either (1) center relative to the selected area using the center value, or (2) center relative to the anchor using the anchor-center value.

You will rarely need to use the anchor-center value in most cases because anchor positioning comes with area-specific default alignment. Setting position-area should be enough, but it’s good to know how to adjust the alignment and understand the difference between center and anchor-center.

If you want to explore alignment in anchor positioning, I have create an interactive demo that allows you to set the area, adjust the alignment, and see the result. There are 36 different positions you can set using position-area and five alignment values per axis.

The UI for an interactive demo that places a label that says CSS is Awesome around different sides and edges of an anchor icon with controls to change that position and generate the CSS code for it.

Safe and unsafe centering

You are probably wondering what safety has to do with centering, right? Don’t worry, centering doesn’t present security risks, per se, but it can be a risky thing for your content!

Take the following example:

I am using CSS Grid to center a red square within a container and we have two situations. The red square is smaller than the container (a classic situation), and the red square is bigger than the container (a less common situation).

In both situations, the red square remains centered, i.e., its center point matches the container’s center point. This is an unsafe centering approach, and yet it’s the default behavior of many centering methods.

Why is it unsafe? The content inside the container is overflowing from all sides, so if you decide to hide the overflow and add a scrollbar, some parts of the content cannot be reached, which is a form of data loss. In this case, the top and left parts are lost. That’s what I mean by unsafe.

Try scrolling the second container, and you will notice that you cannot see the red square’s top and left borders.

We can fix this by using safe alignment like this:

place-content: safe center;

Now, when an overflow occurs, the browser will shift the element to a “safer” position that displays the whole content in case we need to scroll. In other words, the browser prioritizes content visibility over centering (the exact opposite of an unsafe alignment).

I know what you’re probably thinking, and you shouldn’t be thinking that! Adding safe everywhere isn’t a good idea. Sometimes the unsafe behavior is actually what we want, so only consider safewhen you’re faced with content obstruction.

Let’s get back to the anchor positioning demo:

If you drag the anchor closer to the edges, the box is stopped by those edges (the containing block) and the default alignment is lost!

A label that says CSS is Awesome centered above an anchor icon that sits toward the left edge of a container.

In anchor positioning, the default behavior is safe alignment. If you don’t know about it, you may spend a lot of time trying to figure out why the element is not centered.

You can change that behavior using the unsafe keyword:

place-self: unsafe end unsafe anchor-center;

Or:

justify-self: unsafe anchor-center;
align-self: unsafe end;

Now, the browser allows the box to overflow the container. It will prioritize alignment over potential content loss due to the overflow.

And if you think it’s useless to work with an unsafe alignment in anchor positioning, then you are wrong. Here is one use case where I needed to switch to an unsafe alignment. We have a sticky header with a small icon next to the website title that you can hover to show a tooltip. The sticky header creates a containing block for the tooltip and, by default, prevents it from overflowing its boundary. I had to use an unsafe alignment to allow the overflow and keep the tooltip correctly placed.

I know it can be confusing, but you will rarely need to mess with safety. Keep using the default browser behavior, but remember you have the safe and unsafe values you can use to rectify a misalignment.

Conclusion

I hope that after this article you will see centering from a different angle. It’s not about picking a code that works, and you’re done. It’s about understanding how alignment works, considering your specific use case and layout, picking the appropriate code, and, more importantly, understanding why it works.


The State of CSS Centering in 2026 originally handwritten and published with love on CSS-Tricks. You should really get the newsletter as well.

Read the whole story
alvinashcraft
47 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

Announcing new builds for 22 May 2026

1 Share
Hello Windows Insiders, Today, we continue to expand the rollout of the new Windows Insider Program changes to devices in channels already announced. As a reminder, we have not yet begun moving devices in the Canary 29500 Series Channel to the new WIP experience.

New builds this week

Today we are releasing new Windows 11 Insider Preview Builds. As a reminder, all Insiders can find the release notes for your device based on the new channel system, even if you haven’t moved yet. This is to make finding build information as easy as possible during the transition. See your channel release notes here: For those on other specific build versions, here are today’s new builds and release notes: As a reminder, you can always find your build number in the watermark on bottom right-hand corner of your desktop.

Notable new features:

[Accessibility – screen tint]

Release channel: Experimental New Accessibility setting – screen tint We're introducing screen tint, a new accessibility setting that applies a color overlay across your entire display, softening its intensity so it's easier on your eyes throughout the day. If bright, saturated screens leave you with tired or sensitive eyes by the end of a long session, screen tint can help. [caption id="attachment_178980" align="aligncenter" width="1024"]UI showing screen tint in Accessibility, with color presets and a strength slider. UI showing screen tint in Accessibility, with color presets and a strength slider.[/caption] See release notes for more details on how to get started and provide feedback

[Narrator]

Release channel: Experimental Braille displays now connect instantly with Narrator We are making refreshable braille displays easier to use in Windows. Narrator now supports displays that use the HID standard — an open industry standard for braille displays. If your display supports HID, simply connect it via USB and start reading — true plug-and-play with no additional setup required. For Bluetooth, pair your HID braille display in Settings > Bluetooth & devices just like any other accessory, and you can work wirelessly without being tethered to your PC.

[Voice Isolation in Voice Access]

Release channel: Experimental We're introducing Voice Isolation, a new option in Voice Access that helps it focus on your voice, even when others are speaking nearby. Whether you're in a shared office, an open floor plan, or at home with family around, Voice Isolation filters out other voices and background noise so Voice Access can better understand you. All processing happens privately on your device. [caption id="attachment_178981" align="aligncenter" width="1024"]Screenshot showing setup of voice isolation. Screenshot showing setup of voice isolation.[/caption] See release notes for more details on how to get started. Thanks, Stephen and the Windows Insider Program team
Read the whole story
alvinashcraft
1 minute ago
reply
Pennsylvania, USA
Share this story
Delete

The Support Length for .NET LTS and STS versions

1 Share

As you might know, a new major release of .NET comes out every year. Even .NET releases like .NET 8 and .NET 10 are so-called long term support (LTS) versions, and odd .NET releases like .NET 7 and .NET 9 are short term support (STS) versions.

You might ask yourself when you should switch to a new version. Let’s clarify this.

What about the quality?

That’s a common misunderstanding. Quite often I hear developers saying they are only using the LTS versions and not the experimental STS versions. That’s actually not correct. In terms of quality, they are all the same. The only difference is the length of support. Even when looking at the official docs from Microsoft for the support policy, you can find this there:

The quality of all releases is the same. The only difference is the length of support. LTS releases get free support and patches for three years. STS releases get free support and patches for two years.

https://dotnet.microsoft.com/platform/support/policy/dotnet-core

The common end date for LTS and STS

Originally, STS had support for only 1.5 years. LTS had always support for 3 years. This 1.5 years support length for STS releases led to a problem. Let’s say you were on .NET 6, which was an LTS release with 3 years of support. One year after the .NET 6 release, the newer .NET 7 came out, which was an STS release with 1.5 years of support.

That meant that at the time .NET 7 came out, you had this situation:

  • .NET 6 has 2 remaining years of support
  • .NET 7 has 1.5 remaining years of support

That meant by switching from .NET 6 to the new .NET 7 version, you decrease the support time by half a year. So, understandably, many developers just stayed on the LTS releases like .NET 6 and never updated to an STS release like .NET 7.

Microsoft noticed this issue. Since .NET 9, the STS versions have not 1.5 years of support, but instead 2 years of support. You can find the original announcement here: https://devblogs.microsoft.com/dotnet/dotnet-sts-releases-supported-for-24-months/

What does the increase of STS support length actually mean?

Let’s take .NET 8 and .NET 9 as an example. When .NET 9 came out, the situation looked like this:

  • .NET 8 has 2 remaining years of support
  • .NET 9 has 2 remaining years of support

This means that the support for the LTS and STS version ends at the exactly same date, which is according to https://dotnet.microsoft.com/platform/support/policy/dotnet-core for .NET 8 and .NET 9 November 10, 2026.

When .NET 11 comes out, the situation is similar with .NET 10:

  • .NET 10 has 2 remaining years of support
  • .NET 11 has 2 remaining years of support

That means that you can switch your projects to .NET 11 if you want, and you will get exactly the same remaining support length as .NET 10, and in addition the latest .NET and C# features for your projects.

This also means that with the release of a major version, the previous LTS and STS versions have 1 year of remaining support. When .NET 12 comes out, it will look like this:

  • .NET 10 has 1 remaining year of support
  • .NET 11 has 1 remaining year of support
  • .NET 12 has 3 remaining years of support

So, from a length-of-support perspective, it’s always worth to switch to a new major version of .NET.

What does switching to a new .NET version mean?

Usually, switching to a new .NET version means that you update the version in all the C# project files (.csproj) of your solution. Then you compile and run your tests. You check in addition the breaking changes on https://learn.microsoft.com/dotnet/core/compatibility/breaking-changes of the version you’re switching to. And of course, check also the impact on the NuGet packages that you reference.

But in my experience, bumping the version of .NET was always a very straight-forward task. This is one of the reasons why I love .NET, things are evolving and growing, but not radically changing with new versions, which made the switch to a new version in the past a joyride. And I strongly believe this stays the same for future versions.

– Thomas

Read the whole story
alvinashcraft
1 minute ago
reply
Pennsylvania, USA
Share this story
Delete
Next Page of Stories