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

2026's EV Sales Hit 1.1M - But Europe Surges While North America Slides

1 Share
Europe's EV sales for January and February spiked 21% from last year, according to new data from Benchmark Mineral Intelligence. Electrek reports that just in those two months over 600,000 EVs were sold in Europe. And figures for "rest of world" (which excludes Europe, North America, and China) are up a whopping 84% — with 370,000 EVs sold in January and February. (EVs now represent more than 30% of the vehicles sold in South Korea.) But for the same period China's sales are down 26% from last year, with 1.1 million vehicles sold. And North America showed an even larger drop of 36% from the January/February figures in 2025, now selling just 170,000 electric vehicles, while Canada's EV sales were down 23%. EV sales seem heavily influenced by government incentives, with Germany and France leading Europe's growth: EV sales in Germany are up 26% so far this year, following the country's introduction of a new subsidy program at the start of 2026. France's market is up 30%, supported by its existing incentive program. Italy is also seeing rapid growth. EV sales there jumped 23% month-over-month in February, making it the country's strongest month ever for EV sales. The Italian market is now up 98% year to date. That surge follows the Italian government's October 2025 launch of a new subsidy program, funded by the EU's Recovery and Resilience Facility, to increase EV adoption. Households can receive up to €11,000 ($12,700) in incentives, while smaller businesses can get up to €20,000 ($23,200)... [T]he global EV transition isn't slowing, but it's becoming much more uneven depending on policy, incentives, and trade rules.

Read more of this story at Slashdot.

Read the whole story
alvinashcraft
10 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

Getting better at networking

1 Share

Share Episode         
         
We are joined by Daan Boerlage, CTO at Mavexa as we tackle the long-awaited arrival of IPv6 in cloud infrastructure. Here, we highlight how migrating to an IPv6-native setup eliminates public/private subnet complexity and expensive NAT gateways natively. As well as entirely sidestepping the nightmare of IP collisions during VPC peering.

         

Beyond the financial savings of ditching IPv4 charges, we explore the technical superiority of IPv6. Daan breaks down just how mind-bogglingly large the address space is, and focuses on how it solves serverless IP exhaustion while systematically debunking the pervasive myth that NAT is a security feature. We also discuss how IPv6's end-to-end connectivity, paving the way for next-generation protocols like QUIC, HTTP/3, and WebTransport.

         

The episode rounds out with a cathartic venting session about legacy architecture, detailing a grueling nine-year migration away from a central shared database that ironically culminated in a move to Salesforce. Almost by design, Daan recommends his pick, praising its intuitive use of signals and fine-grained reactivity over React. And Warren's pick explores storing data in the internet itself by leveraging the dwell time of ICMP ping packets.

         đź’ˇ Notable Links:         
🎯 Picks:         




Download audio: https://dts.podtrac.com/redirect.mp3/api.spreaker.com/download/episode/70648087/download.mp3
Read the whole story
alvinashcraft
10 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

The State of the Game Dev Industry

1 Share

Hello and Welcome, I’m your Code Monkey!

As I'm starting to write this I'm still in San Francisco so a a shorter newsletter today. The weather is beautiful here, going to go visit Alcatraz today, should be fun!

This was a very intense week, my throat is messed up from saying hi to so many people, but I am more than willing to suffer that, I love these events to put faces to the numbers behind the screens.

If you also attended GDC I hope you enjoyed it as much as I did!



Game Dev

The State of the Game Dev Industry

The Game Developer Conference happened this week in San Francisco, I was there and wrote about my experience in the last post. This is an awesome yearly event meant for professionals in the industry, not gamers, so it's mostly focused on tools and business.

As part of GDC they released their State of the Game Industry report it's a very detailed report with 52 pages full of information and stats. This is awesome to get a sense of the current state of the industry and where things are going in the future.

The survey went out to 2300 developers, that's a big enough sample to get some good results. On questions about AI, platforms, jobs and more.

The industry is still mostly male (64%) and 70% between 25 and 44. Interestingly more than half (54%) had less than 10 years of experience in the industry, in terms of studios it's a mix of AAA (31%), AA (18%) and 55% indies. 8% are solo devs and 57% work at companies with 50+ people.

The sad reality of the industry is still pretty rough with 1 in 4 people having been laid off in the past 24 months, and more than half (53%) expect layoffs to continue in the next 12 months. This also makes it so that both students and educators are concerned about their future in the industry.

Then comes the section everyone is waiting for, AI and how developers feels about it. 52% of companies report using GenAI for work, mostly using LLMs like ChatGPT, Gemini and Microsoft Copilot, followed by tools like Midjourney and Sora. The great majority (81%) uses these tools for brainstorming (which is also one of my own primary use cases), then for writing emails and code assistance (47%) while only 5% use it for player facing features, likely due to wanting to avoid backlash from players. For the most part usage of these tools is optional with only 6% mandating their usage and 16% forbidding them.

Despite all this usage, 52% feel GenAI is a negative for the industry, and this is a sentiment that has been growing, back in 2024 only 18% felt negative about it. For the most part developers are ok with using it for non-creative tasks but are heavily against using it in player facing ways.

In less controversial stats, Unreal is used by 42% of devs while Unity sits at 30% and Godot at a respectable 5%. Unreal dominates the AAA and AA space while Unity is mainly used by Indies. The top platforms are PC at 80%, PS5 at 40% while Xbox sits at 20%. Mobile at 16% and VR at 12%.

As for serious business stats, Premium games are king at 74% compared to just 26% on Free to Play, which honestly surprises me. Perhaps the free to play live service gold rush has finally truly died, especially after many recent high profile flops (like Highguard). As for marketing, social media is at the top at 65% with Streamers right behind it at 39% which honestly seems a bit low, I would have expected a higher number from Streamers since they are so important in marketing nowadays.

One big problem in the industry has always been crunch time, in this survey over half of developers had a 50+ hour workweek in the past 12 months. Perhaps related to that is the sentiment that 82% support unionization efforts in the games industry.

All in all lots of stats that show the trends in the industry. Things are still rough and expected to stay rough for the near future, AI will continue being a contentious topic with some developers using it while others refuse to, and the industry remains mostly male although nicely balanced between indies and everyone else.

In terms of GDC news, Xbox recently unveiled their upcoming Project Helix console. Still not many details but apparently there will be dev kits out in 2027. It will play Xbox and PC games with their goal being making the publishing process as simple as possible for developers. They also say how "indies have never been more important" which is a great message. Google is working on AI stuff, as are many other companies. There were tons of booths dedicated to Motion capture, Face capture, Haptics, Server hosting, AI mesh generation, AI analysis tools, and tons more.

Oh and the IGF awards also happened during GDC. Titanium Court took home the grand prize, it's a very very strange game coming out soon. Baby Steps got "Excellence in Audio", Wednesdays got the audience award, and more winners.

I loved coming to GDC, this was only my second time and it was great, it's awesome to meet tons of people in real life and chat to all kinds of developers! Whenever I come to these events I always go back home with tons of ideas for videos to make, so now that I'm getting back home I have to immediately get back to work, stay tuned for lots of awesome topics covered in future videos!



Get Rewards by Sending the Game Dev Report to a friend!

(please don’t try to cheat the system with temp emails, it won’t work, just makes it annoying for me to validate)

Thanks for reading!

Code Monkey

Read the whole story
alvinashcraft
11 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

htmxRazor v1.3.0: Data Table, Accessibility, and Modern CSS

1 Share

v1.3.0 lands today with six features organized around a clear theme: production patterns for .NET developers building server-rendered UIs that work correctly for everyone, including keyboard users and screen reader users.

Here is what shipped.

Data Table

The data table is the feature request I hear most from .NET developers evaluating htmx. Until now there was no MIT-licensed ASP.NET Core Tag Helper solution for this pattern. v1.3.0 changes that.

Three Tag Helpers compose the component:

  • <rhx-data-table> – the wrapper; handles loading state, sticky header, and ARIA attributes
  • <rhx-column> – child helper that registers column definitions: field, header text, sortable, filterable, width, and alignment
  • <rhx-data-table-pagination> – pagination controls that slot directly into the table via the same slot pattern used by <rhx-dialog-footer>

Sort and filter interactions emit hx-get requests and the server returns <tbody> partials. A new DataTableRequest model binder picks the sort field, direction, page number, page size, and filter values off the query string so handler code stays readable:

public IActionResult OnGetTableData(DataTableRequest request)
{
    var query = _db.Products.AsNoTracking();

    if (!string.IsNullOrEmpty(request.Sort))
        query = request.SortDirection == "desc"
            ? query.OrderByDescending(e => EF.Property<object>(e, request.Sort))
            : query.OrderBy(e => EF.Property<object>(e, request.Sort));

    var items = query
        .Skip((request.Page - 1) * request.PageSize)
        .Take(request.PageSize)
        .ToList();

    return Partial("_ProductTableBody", items);
}

Column declarations live inline in markup:

<rhx-data-table rhx-label="Products" rhx-striped rhx-hoverable rhx-sticky-header>
    <rhx-column rhx-field="Name" rhx-header="Name" rhx-sortable />
    <rhx-column rhx-field="Email" rhx-header="Email" rhx-filterable />
    <rhx-column rhx-field="Status" rhx-header="Status" rhx-width="120px" />
    <rhx-data-table-pagination
        rhx-page="1"
        rhx-page-size="10"
        rhx-total-items="142"
        rhx-url="/data" />
</rhx-data-table>

Every sort button is a native <button>. Every sortable column carries aria-sort. Every filter input includes aria-label. The table renders with role="grid" and a proper <caption>. The loading state toggles aria-busy on the container. This is how it should be built from the start.

One note on security: the DataTableRequest model binder accepts any string value for the Sort field. Your handler should validate that value against an allow-list of known property names before passing it to EF.Property<>. The demo page shows this pattern.

Focus Management After Swaps

WCAG 2.4.3 requires that dynamic content changes move keyboard focus to a predictable location. When htmx swaps content, focus stays wherever it was before the swap, which may now point at a removed element. That strands keyboard users with no indication that anything changed.

v1.3.0 ships rhx-focus-swap.js and adds rhx-focus-after-swap to the base Tag Helper class, making it available on any component:

<div rhx-focus-after-swap="first" hx-get="/load-results" hx-target="#results">
    Load
</div>

Three special values:

  • "first" — focus the first focusable element within the swapped content
  • "self" — focus the element itself
  • "none" — explicitly opt out

Dialog and Drawer Tag Helpers default to "first" without any configuration required. Focus fires via requestAnimationFrame to let the DOM settle before the call.

Command Palette

<rhx-command-palette> opens on Cmd+K (Mac) or Ctrl+K (Windows/Linux), fires a debounced hx-get to a search endpoint, and renders entirely server-provided results. Keyboard navigation uses arrow keys to move through items, Enter to select, and Escape to close and return focus to the trigger element.

<rhx-command-palette
    hx-get="/search"
    rhx-placeholder="Search commands..."
    rhx-debounce="300"
    rhx-min-chars="1" />

Results group server-side with <rhx-command-group> and <rhx-command-item>. The search input carries the full ARIA combobox pattern: role="combobox", aria-expanded, aria-controls, and aria-autocomplete="list". The panel itself is role="dialog" with aria-modal="true". There is no client-side state management for the result list — the server owns that entirely.

Container Queries

The card, dialog, split panel, and data table components now adapt to their container width using @container queries. Components respond to the space they occupy, not the viewport. This matters most in dashboard and sidebar layouts where the same component might sit inside a full-width section or a 280px sidebar column.

/* Before */
@media (max-width: 480px) {
  .rhx-card__image { display: none; }
}

/* After */
@container (max-width: 480px) {
  .rhx-card__image { display: none; }
}

No Tag Helper changes. No configuration. Container query support lands in Chrome 105+, Firefox 110+, and Safari 16+, which covers the full modern browser surface for a .NET 10 audience.

Skip Nav and Landmarks

Two new Tag Helpers for page-level accessibility, addressing WCAG 2.4.1 (Bypass Blocks):

<rhx-skip-nav> renders a visually hidden link that becomes visible on focus and jumps keyboard users past navigation to a configurable target.

<rhx-landmark> wraps content in the correct semantic landmark element with a proper aria-label: main, nav, aside, header, footer, section, search, or form.

Both components are small in surface area but foundational for any application that needs to pass a WCAG audit.

APG Keyboard Audit

All four existing interactive components were audited against the W3C ARIA Authoring Practices Guide keyboard patterns. The components covered: Tabs, Tree, Dropdown, and Combobox. The gaps found and closed:

  • Type-ahead search in Tree and Dropdown
  • Home and End key support in Dropdown
  • Alt+ArrowDown and Alt+ArrowUp patterns in Combobox
  • Missing aria-expanded, aria-haspopup, and role attributes across components

A shared type-ahead utility now lives in rhx-core.js for use across components. The patterns from this audit carry directly into the new Data Table and Command Palette keyboard implementations.

A note on the European Accessibility Act

The European Accessibility Act took effect in June 2025, making WCAG 2.2 AA a legal requirement for digital products sold in EU markets. The accessibility work in v1.3.0 is not decoration. Components ship with correct ARIA semantics, keyboard navigation, and focus management because that is what the standard requires and what users depend on.

Install

dotnet add package htmxRazor

Full changelog, API docs, and live demos at htmxRazor.com. Source at github.com/cwoodruff/htmxRazor.

The post htmxRazor v1.3.0: Data Table, Accessibility, and Modern CSS first appeared on Chris Woody Woodruff | Fractional Architect.

Read the whole story
alvinashcraft
11 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

Stop Learning. Create Your Way to Success.

1 Share

Why creating is the fastest path to confidence, growth, and real opportunity.

Read the whole story
alvinashcraft
11 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

Full Circle Development

1 Share

RockBot

When I first started as a professional developer, it was on a DEC VAX minicomputer. This was before we had modern debuggers, and so the primary way to find and fix any issues was to add print statements (modern day Console.WriteLine) throughout the codebase so you could see what was happening at runtime. It was a tedious process, but it was the best we had at the time.

That was back in the late 1980s, and from the early to middle 1990s through today I’ve enjoyed having access to powerful debuggers that allow me to step through code, inspect variables, and understand the flow of execution in a much more efficient way. It was hard to imagine going back to the days of print statements for debugging. Until AI.

What I find interesting, is that today, with AI development tools like GitHub Copilot and Claude Code, the primary way to allow the AI to effectively debug and troubleshoot code is to use print statements!

We’ve literally come full circle in our development practices. We started with print statements as our main debugging tool, then moved on to sophisticated debuggers, and now we’re back to using print statements as a key part of our AI-assisted development process.

Of course, today the “print” statements are probably actually being generated by an ILogger implementation that (in .NET) uses something like serilog for file output, or open telementry (otel) for distributed tracing, but the concept is the same. We’re using logging to provide insights into our code’s behavior, which is essentially what we were doing with print statements back in the day.

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