<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Aref</title>
    <description>The latest articles on DEV Community by Aref (@stormaref).</description>
    <link>https://dev.to/stormaref</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3964933%2F8f28bbac-3877-4951-acae-103f91e17642.jpg</url>
      <title>DEV Community: Aref</title>
      <link>https://dev.to/stormaref</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/stormaref"/>
    <language>en</language>
    <item>
      <title>Most glassmorphism is blur + a white overlay. I extracted the actual refraction into a Claude Code skill</title>
      <dc:creator>Aref</dc:creator>
      <pubDate>Sat, 15 Aug 2026 12:18:21 +0000</pubDate>
      <link>https://dev.to/stormaref/most-glassmorphism-is-blur-a-white-overlay-i-extracted-the-actual-refraction-into-a-claude-code-19b4</link>
      <guid>https://dev.to/stormaref/most-glassmorphism-is-blur-a-white-overlay-i-extracted-the-actual-refraction-into-a-claude-code-19b4</guid>
      <description>&lt;p&gt;Every glassmorphism snippet I've seen is &lt;code&gt;backdrop-filter: blur()&lt;/code&gt; plus a white overlay. That's a blurred rectangle. Real glass &lt;em&gt;bends&lt;/em&gt; what's behind it, hardest at the edge — and that part is missing everywhere.&lt;/p&gt;

&lt;p&gt;Built it for a production Angular app, pulled it out as a Claude Code plugin: &lt;a href="https://github.com/stormaref/LiquidGlassSkill" rel="noopener noreferrer"&gt;https://github.com/stormaref/LiquidGlassSkill&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/plugin marketplace add stormaref/LiquidGlassSkill
/plugin &lt;span class="nb"&gt;install &lt;/span&gt;liquid-glass@stormaref-skills
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The refraction:&lt;/strong&gt; bake a displacement map into a canvas, wire up &lt;code&gt;feImage → feDisplacementMap → feGaussianBlur&lt;/code&gt;, point the element at it with &lt;code&gt;backdrop-filter: url(#filter)&lt;/code&gt;. Since it's a &lt;em&gt;backdrop&lt;/em&gt; filter, the input is the live page behind the element — so it tracks scroll, theme and content changes with nothing to invalidate. Field ported from &lt;a href="https://github.com/dashersw/liquid-glass-js" rel="noopener noreferrer"&gt;liquid-glass-js&lt;/a&gt; (MIT, credited), minus its html2canvas snapshot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it's a skill and not a gist&lt;/strong&gt; — four rules, each of which fails as plausible-looking output:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Glass needs a backdrop.&lt;/strong&gt; Over a flat page it reads as a gray box, which sends you reaching for more blur — the exact move that kills it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The tint is colorless.&lt;/strong&gt; Hue in the tint fights the hue coming through; the surface goes muddy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Children of a glass panel paint no surface.&lt;/strong&gt; An opaque fill covers the refracted backdrop, which is the whole effect.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You can't feature-query it.&lt;/strong&gt; Safari &lt;em&gt;parses&lt;/em&gt; &lt;code&gt;backdrop-filter: url(#…)&lt;/code&gt; and paints nothing, so &lt;code&gt;@supports&lt;/code&gt; says yes and your panel is blank. Gate on engine.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The CSS is 200 lines. Knowing that #1 is why your glass looks nths of things looking subtly wrong.&lt;/p&gt;

&lt;p&gt;MIT. Happy to talk displacement math — the &lt;code&gt;128/255 ≠ 0.5&lt;/code&gt; decly long to find.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>claude</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Cursor made me do it</title>
      <dc:creator>Aref</dc:creator>
      <pubDate>Thu, 04 Jun 2026 10:43:12 +0000</pubDate>
      <link>https://dev.to/stormaref/cursor-made-me-do-it-3nnf</link>
      <guid>https://dev.to/stormaref/cursor-made-me-do-it-3nnf</guid>
      <description>&lt;p&gt;For a long time, I kept telling myself I'd get to it "when I had a free week."&lt;/p&gt;

&lt;p&gt;Three of my open-source packages had been sitting on my backlog for ages:&lt;/p&gt;

&lt;p&gt;• KafkaStorm — a simple .NET client for Kafka built on Confluent.Kafka&lt;br&gt;
• RedisStorm — a lightweight wrapper around StackExchange.Redis for easier pub/sub&lt;br&gt;
• SchemeGenerator — a C# library that generates default values for a given type and serializes them to JSON&lt;/p&gt;

&lt;p&gt;Each one was built for a real need. But the maintenance work kept piling up: upgrading to the latest .NET version, updating dependencies, refactoring outdated APIs, writing tests, and building a proper release pipeline.&lt;/p&gt;

&lt;p&gt;That free week never came.&lt;/p&gt;

&lt;p&gt;Today, with Cursor, I got it all done.&lt;/p&gt;

&lt;p&gt;All three packages are now upgraded to .NET 10, dependencies are up to date, legacy APIs are refactored, tests are in place, and CI/CD plus NuGet release pipelines are rebuilt and running smoothly. Work that would have taken weeks of scattered evenings was done in a single focused day.&lt;/p&gt;

&lt;p&gt;My takeaway on AI editors — especially Cursor — is this: they don't replace engineering judgment. But when they understand your project context, they dramatically speed up the tedious parts. Migrations, refactors, GitHub Actions workflows, documentation, test coverage — that's where they really shine.&lt;/p&gt;

&lt;p&gt;If you maintain open-source projects and your upgrade backlog has been growing for months, it might be worth giving an AI editor a serious try.&lt;/p&gt;

&lt;p&gt;Repos:&lt;br&gt;
&lt;a href="https://github.com/stormaref/KafkaStorm" rel="noopener noreferrer"&gt;https://github.com/stormaref/KafkaStorm&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/stormaref/RedisStorm" rel="noopener noreferrer"&gt;https://github.com/stormaref/RedisStorm&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/stormaref/SchemeGenerator" rel="noopener noreferrer"&gt;https://github.com/stormaref/SchemeGenerator&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;P.S. — I used Cursor to write this post too.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmw7nvnqpre3kmoz6gmeq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmw7nvnqpre3kmoz6gmeq.png" alt=" " width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cursor</category>
      <category>ai</category>
    </item>
    <item>
      <title>Introducing Sub-Agent-MCP: Portable AI Sub-Agents for Any MCP Client</title>
      <dc:creator>Aref</dc:creator>
      <pubDate>Tue, 02 Jun 2026 15:30:24 +0000</pubDate>
      <link>https://dev.to/stormaref/introducing-sub-agent-mcp-portable-ai-sub-agents-for-any-mcp-client-3i0h</link>
      <guid>https://dev.to/stormaref/introducing-sub-agent-mcp-portable-ai-sub-agents-for-any-mcp-client-3i0h</guid>
      <description>&lt;p&gt;One feature I really liked in Claude Code is the concept of sub-agents—specialized agents that can handle specific tasks such as code review, debugging, testing, or research.&lt;/p&gt;

&lt;p&gt;The downside is that these workflows are often tied to a specific tool.&lt;/p&gt;

&lt;p&gt;To address this, I built Sub-Agent-MCP, an open-source MCP server that makes sub-agents portable across MCP-compatible clients.&lt;/p&gt;

&lt;p&gt;With Sub-Agent-MCP, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Define agents in simple Markdown files&lt;/li&gt;
&lt;li&gt;Reuse the same agents across different tools&lt;/li&gt;
&lt;li&gt;Manage agent execution and sessions&lt;/li&gt;
&lt;li&gt;Build a shared library of specialized agents&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project currently supports integrations with Claude Code, Codex, Cursor, Gemini, and can also expose sub-agent workflows to platforms like Open WebUI through MCP.&lt;/p&gt;

&lt;p&gt;The goal is simple: define an agent once and use it anywhere in the MCP ecosystem.&lt;/p&gt;

&lt;p&gt;GitHub Repository:&lt;br&gt;
&lt;a href="https://github.com/stormaref/Sub-Agent-MCP" rel="noopener noreferrer"&gt;https://github.com/stormaref/Sub-Agent-MCP&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'd appreciate feedback, feature requests, and contributions from the community.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>mcp</category>
    </item>
  </channel>
</rss>
