<?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: Gowrishankar Rangasamy</title>
    <description>The latest articles on DEV Community by Gowrishankar Rangasamy (@gowrishankar_rangasamy_f9).</description>
    <link>https://dev.to/gowrishankar_rangasamy_f9</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3849591%2Fe8332593-0557-46d5-a56e-45d7855884fa.png</url>
      <title>DEV Community: Gowrishankar Rangasamy</title>
      <link>https://dev.to/gowrishankar_rangasamy_f9</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gowrishankar_rangasamy_f9"/>
    <language>en</language>
    <item>
      <title>Challenges in Building Real-Time Video Chat Applications (WebRTC Guide)</title>
      <dc:creator>Gowrishankar Rangasamy</dc:creator>
      <pubDate>Thu, 09 Apr 2026 17:42:03 +0000</pubDate>
      <link>https://dev.to/gowrishankar_rangasamy_f9/challenges-in-building-real-time-video-chat-applications-webrtc-guide-8g0</link>
      <guid>https://dev.to/gowrishankar_rangasamy_f9/challenges-in-building-real-time-video-chat-applications-webrtc-guide-8g0</guid>
      <description>&lt;p&gt;Real-time video chat applications look simple on the surface — open a page, allow camera access, and start talking.&lt;/p&gt;

&lt;p&gt;But behind this smooth experience, there’s a lot happening: network negotiation, media handling, latency optimization, and constant connection management.&lt;/p&gt;

&lt;p&gt;In this article, I’ll walk through the real challenges developers face when building video chat systems using WebRTC — based on practical experience.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Makes Real-Time Video Chat Hard?
&lt;/h2&gt;

&lt;p&gt;Unlike traditional web apps, real-time communication systems are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;State-heavy&lt;/li&gt;
&lt;li&gt;Network-dependent&lt;/li&gt;
&lt;li&gt;Highly sensitive to delays&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even a small issue can break the experience.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Establishing Peer-to-Peer Connections
&lt;/h2&gt;

&lt;p&gt;WebRTC primarily uses peer-to-peer (P2P) communication. Instead of routing video through a central server, users connect directly.&lt;/p&gt;

&lt;p&gt;This reduces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Latency&lt;/li&gt;
&lt;li&gt;Server costs&lt;/li&gt;
&lt;li&gt;Bandwidth usage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, direct connections don’t always work smoothly.&lt;/p&gt;

&lt;p&gt;Many modern apps aim to let users &lt;strong&gt;&lt;a href="https://chatzyo.in/" rel="noopener noreferrer"&gt;connect with strangers instantly via video chat&lt;/a&gt;&lt;/strong&gt; without going through complex steps, but internally this requires multiple negotiation layers.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. NAT Traversal (The Real Pain Point)
&lt;/h2&gt;

&lt;p&gt;Most users are behind routers or firewalls.&lt;/p&gt;

&lt;p&gt;To solve this, WebRTC uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;STUN servers → discover public IP&lt;/li&gt;
&lt;li&gt;ICE candidates → find best route&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If that fails:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TURN servers relay traffic (expensive + slower)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is one of the main reasons why building a &lt;strong&gt;&lt;a href="https://chatzyo.in/" rel="noopener noreferrer"&gt;browser-based video calling experience without signup&lt;/a&gt;&lt;/strong&gt; is technically challenging.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Signaling Complexity
&lt;/h2&gt;

&lt;p&gt;Before any connection happens, both peers must exchange:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Session Description Protocol (SDP)&lt;/li&gt;
&lt;li&gt;ICE candidates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;WebRTC doesn’t define signaling — you must build it yourself.&lt;/p&gt;

&lt;p&gt;Common approaches:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WebSockets&lt;/li&gt;
&lt;li&gt;HTTP polling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A poorly designed signaling layer can break connections completely.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Maintaining Low Latency
&lt;/h2&gt;

&lt;p&gt;Latency directly impacts user experience.&lt;/p&gt;

&lt;p&gt;Even:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;200–300ms delay → noticeable&lt;/li&gt;
&lt;li&gt;500ms+ → frustrating&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To reduce latency:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use P2P whenever possible&lt;/li&gt;
&lt;li&gt;Optimize encoding&lt;/li&gt;
&lt;li&gt;Handle bandwidth dynamically&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is always to keep communication feeling natural and real-time.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Handling Unstable Networks
&lt;/h2&gt;

&lt;p&gt;Real users don’t have perfect internet.&lt;/p&gt;

&lt;p&gt;Common issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Packet loss&lt;/li&gt;
&lt;li&gt;Network switching (WiFi ↔ mobile data)&lt;/li&gt;
&lt;li&gt;Bandwidth drops&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To handle this, apps need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adaptive bitrate&lt;/li&gt;
&lt;li&gt;Reconnection logic&lt;/li&gt;
&lt;li&gt;Connection health monitoring&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. Browser Compatibility
&lt;/h2&gt;

&lt;p&gt;WebRTC is supported widely, but not consistently.&lt;/p&gt;

&lt;p&gt;Challenges include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Safari limitations&lt;/li&gt;
&lt;li&gt;Mobile browser quirks&lt;/li&gt;
&lt;li&gt;Codec differences&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Testing across environments is mandatory.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Privacy and Security
&lt;/h2&gt;

&lt;p&gt;Video chat involves sensitive data.&lt;/p&gt;

&lt;p&gt;WebRTC uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DTLS (encryption)&lt;/li&gt;
&lt;li&gt;SRTP (secure media transport)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But developers must still:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Avoid storing unnecessary data&lt;/li&gt;
&lt;li&gt;Prevent misuse&lt;/li&gt;
&lt;li&gt;Handle permissions properly&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  8. User Experience vs Technical Complexity
&lt;/h2&gt;

&lt;p&gt;From a user’s perspective, it should be:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open site&lt;/li&gt;
&lt;li&gt;Allow camera&lt;/li&gt;
&lt;li&gt;Start chatting&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;But behind that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ICE negotiation&lt;/li&gt;
&lt;li&gt;Media streams&lt;/li&gt;
&lt;li&gt;Network checks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The real challenge is hiding complexity behind a simple interface.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Building a real-time video chat application is not just about streaming video — it’s about handling networking, performance, and user experience all at once.&lt;/p&gt;

&lt;p&gt;WebRTC provides powerful tools, but developers still need to solve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NAT traversal&lt;/li&gt;
&lt;li&gt;Latency optimization&lt;/li&gt;
&lt;li&gt;Network instability&lt;/li&gt;
&lt;li&gt;Cross-browser issues&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is always the same: &lt;strong&gt;make something complex feel simple for the user.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>javascript</category>
      <category>networking</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How I Built an Anonymous Chat Platform Without Signup Using WebRTC (13K+ Users)</title>
      <dc:creator>Gowrishankar Rangasamy</dc:creator>
      <pubDate>Mon, 06 Apr 2026 17:19:23 +0000</pubDate>
      <link>https://dev.to/gowrishankar_rangasamy_f9/how-i-built-an-anonymous-chat-platform-without-signup-using-webrtc-13k-users-16hp</link>
      <guid>https://dev.to/gowrishankar_rangasamy_f9/how-i-built-an-anonymous-chat-platform-without-signup-using-webrtc-13k-users-16hp</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Most chat applications today rely on user accounts.&lt;/p&gt;

&lt;p&gt;Before sending a message, users are asked to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sign up
&lt;/li&gt;
&lt;li&gt;Verify email or phone
&lt;/li&gt;
&lt;li&gt;Share personal information
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For quick conversations, this creates unnecessary friction.&lt;/p&gt;

&lt;p&gt;I wanted to explore a different approach — a system where users can connect instantly without creating an account.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;Chatzyo&lt;/strong&gt;, an anonymous chat platform powered by WebRTC.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Core Idea
&lt;/h2&gt;

&lt;p&gt;Instead of building another feature-heavy chat app, I focused on reducing friction.&lt;/p&gt;

&lt;p&gt;The principles were simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No signup
&lt;/li&gt;
&lt;li&gt;No user data storage
&lt;/li&gt;
&lt;li&gt;Instant connection
&lt;/li&gt;
&lt;li&gt;Works directly in the browser
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal: &lt;strong&gt;open → connect → chat&lt;/strong&gt; — similar to how a &lt;a href="https://chatzyo.in/random-video-chat/" rel="noopener noreferrer"&gt;random video chat without login&lt;/a&gt; experience should feel for users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture Overview
&lt;/h2&gt;

&lt;p&gt;At a high level, the system uses a hybrid approach:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Signaling Server (Node.js + Socket.io)
&lt;/h3&gt;

&lt;p&gt;Used only for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User discovery
&lt;/li&gt;
&lt;li&gt;Session creation
&lt;/li&gt;
&lt;li&gt;Connection signaling
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No media is handled here.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Peer-to-Peer Connection (WebRTC)
&lt;/h3&gt;

&lt;p&gt;Once users are matched:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Audio/video flows directly between peers
&lt;/li&gt;
&lt;li&gt;No central server stores or processes data
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This reduces latency and improves privacy.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the Flow Works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;User opens the site
&lt;/li&gt;
&lt;li&gt;A temporary session ID is created
&lt;/li&gt;
&lt;li&gt;Users are matched or share a link
&lt;/li&gt;
&lt;li&gt;WebRTC handshake begins
&lt;/li&gt;
&lt;li&gt;Peer-to-peer connection is established
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No login. No persistence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why WebRTC?
&lt;/h2&gt;

&lt;p&gt;WebRTC is ideal for this use case because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It enables direct browser-to-browser communication
&lt;/li&gt;
&lt;li&gt;It uses built-in encryption (DTLS + SRTP)
&lt;/li&gt;
&lt;li&gt;It minimizes server dependency
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Key Benefits:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Low latency
&lt;/li&gt;
&lt;li&gt;Better privacy
&lt;/li&gt;
&lt;li&gt;Reduced infrastructure cost
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Challenges I Faced
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. WebRTC Connection Failures
&lt;/h3&gt;

&lt;p&gt;WebRTC doesn’t always work reliably due to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NAT restrictions
&lt;/li&gt;
&lt;li&gt;Firewalls
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Solution:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Implemented STUN/TURN servers
&lt;/li&gt;
&lt;li&gt;Added fallback handling
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. TURN Server Optimization
&lt;/h3&gt;

&lt;p&gt;TURN servers are required when direct P2P fails.&lt;/p&gt;

&lt;p&gt;Issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High bandwidth cost
&lt;/li&gt;
&lt;li&gt;Latency impact
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Approach:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Used TURN only as fallback
&lt;/li&gt;
&lt;li&gt;Optimized connection attempts
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Matchmaking Speed
&lt;/h3&gt;

&lt;p&gt;Users expect instant connections.&lt;/p&gt;

&lt;p&gt;Even small delays reduce engagement.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Optimized signaling events
&lt;/li&gt;
&lt;li&gt;Reduced unnecessary backend calls
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Cross-Browser Compatibility
&lt;/h3&gt;

&lt;p&gt;Different browsers handle WebRTC differently.&lt;/p&gt;

&lt;p&gt;Tested across:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chrome
&lt;/li&gt;
&lt;li&gt;Edge
&lt;/li&gt;
&lt;li&gt;Mobile browsers
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WebRTC&lt;/strong&gt; → P2P communication
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Socket.io&lt;/strong&gt; → Signaling layer
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Node.js&lt;/strong&gt; → Backend
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vanilla JS&lt;/strong&gt; → Frontend
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;p&gt;Instead of running ads, I focused on organic growth.&lt;/p&gt;

&lt;p&gt;Within 28 days:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;13K+ clicks from Google Search&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This came from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Targeting long-tail keywords
&lt;/li&gt;
&lt;li&gt;Fast page load
&lt;/li&gt;
&lt;li&gt;Simple UX
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Simplicity &amp;gt; Features
&lt;/h3&gt;

&lt;p&gt;Users prefer instant access over complex systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  Privacy Is Valuable
&lt;/h3&gt;

&lt;p&gt;No-login platforms attract real demand.&lt;/p&gt;

&lt;h3&gt;
  
  
  Speed Matters
&lt;/h3&gt;

&lt;p&gt;Even milliseconds impact engagement.&lt;/p&gt;

&lt;h3&gt;
  
  
  SEO Still Works
&lt;/h3&gt;

&lt;p&gt;Good content + user intent = traffic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;You can test the platform here:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://chatzyo.in" rel="noopener noreferrer"&gt;Try the platform&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;This project was less about building features and more about removing barriers.&lt;/p&gt;

&lt;p&gt;No signup. No friction. Just real-time connection.&lt;/p&gt;

&lt;p&gt;If you're working with WebRTC or building real-time apps, I’d love to hear your thoughts or suggestions.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>node</category>
    </item>
    <item>
      <title>Hello Dev.to! Building a Privacy-First Random Chat Platform in 2026 (The CHATZYO Build Log)</title>
      <dc:creator>Gowrishankar Rangasamy</dc:creator>
      <pubDate>Sun, 29 Mar 2026 15:49:52 +0000</pubDate>
      <link>https://dev.to/gowrishankar_rangasamy_f9/hello-devto-building-a-privacy-first-random-chat-platform-in-2026-the-chatzyo-build-log-dbh</link>
      <guid>https://dev.to/gowrishankar_rangasamy_f9/hello-devto-building-a-privacy-first-random-chat-platform-in-2026-the-chatzyo-build-log-dbh</guid>
      <description>&lt;p&gt;&lt;strong&gt;Hello, fellow developers!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’m thrilled to join the Dev.to community. My name is Gowrishankar, and I’m a full-stack developer based in Coimbatore, India, with a deep passion for real-time communication technologies and digital privacy.&lt;/p&gt;

&lt;p&gt;I’ve spent the last few months deeply immersed in signaling servers, STUN/TURN traversal, and connection latency. Today, I’m excited to introduce the project that has kept me busy: CHATZYO.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Another Chat Platform?&lt;/strong&gt;&lt;br&gt;
The random chat landscape in 2026 is often characterized by two things: complex login requirements or a complete disregard for user privacy. Users are increasingly skeptical of platforms that monetize their data.&lt;/p&gt;

&lt;p&gt;Our goal with CHATZYO was simple: Build the fastest, most private way to connect with the world, with zero mandatory signup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Technical Challenge (WebRTC + Socket.io)&lt;/strong&gt;&lt;br&gt;
Building a functional random video chat isn't easy. The primary challenge isn't the video stream itself (WebRTC handles that beautifully), but the signaling layer—the initial handshake that connects two strangers.&lt;/p&gt;

&lt;p&gt;We chose to build our architecture with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Node.js &amp;amp; Socket.io: For highly efficient, real-time signaling. This is the logic engine that manages user states and facilitates the "random match" in sub-200ms.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Firebase: To handle scalable backend operations without the overhead of managing dedicated database infrastructure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The "Zero-Data" Architecture: Crucially, we use these tools only for the connection handshake. Once the WebRTC Peer-to-Peer connection is established, the media data flows directly between users. Our servers never touch the video or voice stream.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Focusing on Vernacular &amp;amp; Low-Latency&lt;/strong&gt;&lt;br&gt;
A massive part of our mission is optimizing connections for users in South Asia. We are heavily focused on providing excellent video quality with low latency in India, especially for Tamil-speaking users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's Next?&lt;/strong&gt;&lt;br&gt;
I plan to use my Dev.to profile to share our build logs, focusing on:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Optimizing signaling servers with Socket.io v5.x. &lt;/li&gt;
&lt;li&gt;Managing TURN server costs and performance. &lt;/li&gt;
&lt;li&gt;Implementing real-time AI moderation locally in the browser.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I’d love for you to check out what we’ve built so far:&lt;br&gt;
👉 Live Project: (&lt;a href="https://chatzyo.in/" rel="noopener noreferrer"&gt;https://chatzyo.in/&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;If you have experience with WebRTC or just love chatting about scalable real-time tech, let’s connect in the comments!&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;br&gt;
Gowrishankar&lt;/p&gt;

</description>
      <category>networking</category>
      <category>privacy</category>
      <category>showdev</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
