Read more of this story at Slashdot.
Read more of this story at Slashdot.
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: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!

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! |

Why Are Cooling Towers Shaped Like That?
https://www.youtube.com/watch?v=tmbZVmXyOXM
I love this channel and I love the simplicity behind these cooling towers!
Making Wi-Fi Sound Like Dial-Up Internet
https://www.youtube.com/watch?v=OxAJHiVkBEM
Do you remember dial-up? Do you miss that sound? Here's that sound but coming from Wi-Fi!
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
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.
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.
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 outDialog and Drawer Tag Helpers default to "first" without any configuration required. Focus fires via requestAnimationFrame to let the DOM settle before the call.
<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.
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.
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.
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:
Home and End key support in DropdownAlt+ArrowDown and Alt+ArrowUp patterns in Comboboxaria-expanded, aria-haspopup, and role attributes across componentsA 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.
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.
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.
Why creating is the fastest path to confidence, growth, and real opportunity.

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.