

Author profile
Daniel Balcarek
Senior software engineer building and analyzing backend systems with a focus on architecture and performance.
Articles by @gramli
Browse the latest writing surfaced through DevArt.


Build a Minimal WebMCP Agent with Playwright and Gemini
WebMCP lets a web page expose tools that AI agents can discover and execute inside the browser. That...

Tower Before Dusk: I Built a Puzzle Game for Humans and AI
This is a submission for the June Solstice Game Jam It's interesting how the most exciting ideas...

I Used My Last 7% of Copilot Tokens to Bring a 2014 WinForms Game Back to Life
This is a submission for the GitHub Finish-Up-A-Thon Challenge Originally, I didn't plan to join...

Building with Gemma 4 E2B showed me that small models are more reliable when the backend handles orchestration.
How to Use Gemma 4 E2B the Smart Way: Family Trip Advisor Gemma 4 Challenge: Build...

How to Use Gemma 4 E2B the Smart Way: Family Trip Advisor
This is a submission for the Gemma 4 Challenge: Build with Gemma 4 In a previous article, I...

Old PC vs New AI: Can a 2015 Desktop Actually Run Gemma 4? (2B vs 4B Benchmark)
This is a submission for the Gemma 4 Challenge: Write About Gemma 4 Running modern AI models locally...

OpenClaw Sandbox Guide: One-Click .WSB Setup & AI Provider Comparison
Running OpenClaw in Windows Sandbox is a simple way to test and run it in an isolated environment...

Run OpenClaw Locally on Windows Using Windows Sandbox for Secure Isolation
This is a submission for the OpenClaw Writing Challenge Many developers (myself included) are...

.NET Reflection Performance: CSV Export Benchmarks (Part 2)
.NET Reflection is often criticized for its performance overhead, but its real impact depends heavily...

.NET Reflection Performance: Enum Attribute Benchmarks (Part 1)
.NET reflection has a reputation for being slow, hard to read and something to avoid. But does this...
Google Translate Who? The Only Translator You’ll Ever Need, Powered by Neural Networks & 90s Scams
This is a submission for the DEV April Fools Challenge I don’t have much time right now because...

Clean Unit Testing in .NET: Practical xUnit and Moq Tips
When writing unit tests in .NET, the basics are easy to learn. Frameworks like xUnit and Moq make it...

How Much AI-Generated Code Are We Actually Shipping to Production? My Reality So Far
Every day I see posts where people claim they barely code anymore or that in a few months most...

Node.js Dependency & Version Management with nvm, npm ci and Registries
Working with multiple Node.js projects often means switching between different Node versions,...

Echoes of Experience: Don’t Be "Too Senior" to Ask
This is a submission for the 2026 WeCoded Challenge: Echoes of Experience As a junior developer, I...

What’s the Worst Advice AI Has Given You? Here’s Mine.
I recently saw a meme about terrible legacy code on platform X and it gave me an idea for a...

.NET: CopyToAsync vs WriteAsync: The Benchmark You Didn’t Know You Needed
I had a task where one small part involved writing a byte array to a MemoryStream. Since this was a...

Clean Architecture in .NET: Real-World Pros, Cons and Trade-offs
I have experience with Clean Architecture across multiple projects, both when creating new...

Angular: HTTP Caching with RxJS shareReplay
At some point in every Angular application repeated HTTP calls start to hurt, slower page loads,...
A Silly Idea: A Star Wars Lightsaber Duel in the Terminal with GitHub Copilot CLI
This is a submission for the GitHub Copilot CLI Challenge 🎬 What I Built In a previous...

.NET: Exceptions vs Result Pattern - Performance Benchmark
In the realm of error handling and control flow, developers often choose between two primary...

msg-rocket: From Diff to Decision with GitHub Copilot CLI
This is a submission for the GitHub Copilot CLI Challenge I started thinking about how GitHub...

Space Station Portfolio: An Engineer Beyond the UI
This is a submission for the New Year, New You Portfolio Challenge Presented by Google AI 🎮...

Angular: Stop Overusing ChangeDetectorRef
In Angular development, we often run into change detection issues, for example when some fields are...

.NET: Vertical Slice Architecture vs Clean Architecture — A Practical Comparison Using Real APIs
There are plenty of articles comparing Clean Architecture and Vertical Slice Architecture, but most...

Angular: Custom Multi-File Translation Loader for ngx-translate
In the Angular ecosystem, many projects use @ngx-translate for runtime translations, especially when...

C# Minimal API: Multiple Authentication Schemes with Swagger Support
Minimal APIs make it easy to get started quickly, but production APIs almost always require...

C# Minimal API: A Practical Way to Keep Endpoints Clean
Minimal APIs make it tempting to write everything inline, but this quickly becomes unmaintainable....

C# Minimal API: Output Caching
Minimal API: Output Caching Stores the generated response on the server and serves it...
Advertisement