<?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: Sreya Satheesh</title>
    <description>The latest articles on DEV Community by Sreya Satheesh (@sreya-satheesh).</description>
    <link>https://dev.to/sreya-satheesh</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%2F3754294%2F57d1b5e5-7f14-4239-bf13-dc77e8e0ba9b.jpg</url>
      <title>DEV Community: Sreya Satheesh</title>
      <link>https://dev.to/sreya-satheesh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sreya-satheesh"/>
    <language>en</language>
    <item>
      <title>Behind Every 429 Too Many Requests</title>
      <dc:creator>Sreya Satheesh</dc:creator>
      <pubDate>Thu, 18 Jun 2026 08:05:53 +0000</pubDate>
      <link>https://dev.to/sreya-satheesh/behind-every-429-too-many-requests-pfn</link>
      <guid>https://dev.to/sreya-satheesh/behind-every-429-too-many-requests-pfn</guid>
      <description>&lt;p&gt;👉 &lt;a href="https://rate-limiter-two.vercel.app/" rel="noopener noreferrer"&gt;https://rate-limiter-two.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most developers have seen this message before:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;429 Too Many Requests&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A request gets rejected because a limit has been reached.&lt;/p&gt;

&lt;p&gt;But what actually happens behind the scenes?&lt;/p&gt;

&lt;p&gt;How does the system know you've made too many requests?&lt;/p&gt;

&lt;p&gt;Where are those requests counted?&lt;/p&gt;

&lt;p&gt;What happens when millions of users are sending requests at the same time?&lt;/p&gt;

&lt;p&gt;Those questions got me interested in rate limiter design.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is a Rate Limiter?
&lt;/h2&gt;

&lt;p&gt;A rate limiter controls how many requests a user, client, or service can make within a given period of time.&lt;/p&gt;

&lt;p&gt;You'll find them almost everywhere:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;APIs&lt;/li&gt;
&lt;li&gt;Authentication systems&lt;/li&gt;
&lt;li&gt;Payment services&lt;/li&gt;
&lt;li&gt;AI applications&lt;/li&gt;
&lt;li&gt;Public platforms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without rate limiting, a single user or script could overwhelm a system with requests.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpauegz8a6ybqjwjmp3mr.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpauegz8a6ybqjwjmp3mr.png" alt=" " width="800" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Designing One Matter?
&lt;/h2&gt;

&lt;p&gt;A simple rate limiter might work for a small application.&lt;/p&gt;

&lt;p&gt;Things become more interesting when the traffic grows.&lt;/p&gt;

&lt;p&gt;Where should request counts be stored?&lt;/p&gt;

&lt;p&gt;How much data needs to be maintained?&lt;/p&gt;

&lt;p&gt;How many requests should the system handle every second?&lt;/p&gt;

&lt;p&gt;How do multiple servers share the same limits?&lt;/p&gt;

&lt;p&gt;Answering those questions is where system design comes in.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo6r3a2suyf1sjucb3gy3.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo6r3a2suyf1sjucb3gy3.png" alt=" " width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Breaking Down the Design
&lt;/h2&gt;

&lt;p&gt;The project covers the different stages involved in designing a rate limiter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Functional Requirements&lt;/li&gt;
&lt;li&gt;Non-Functional Requirements&lt;/li&gt;
&lt;li&gt;Capacity Estimation&lt;/li&gt;
&lt;li&gt;High-Level Design&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each section builds on the previous one.&lt;/p&gt;

&lt;p&gt;Requirements influence the scale.&lt;/p&gt;

&lt;p&gt;Scale influences the architecture.&lt;/p&gt;

&lt;p&gt;And the architecture influences the implementation choices.&lt;/p&gt;

&lt;h2&gt;
  
  
  High-Level Design
&lt;/h2&gt;

&lt;p&gt;Once the requirements and scale are clear, the architecture becomes much easier to understand.&lt;/p&gt;

&lt;p&gt;The High-Level Design section explains the major components involved and how requests move through the system.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;Algorithms and race conditions are currently being added.&lt;/p&gt;

&lt;p&gt;Future updates will cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fixed Window&lt;/li&gt;
&lt;li&gt;Sliding Window&lt;/li&gt;
&lt;li&gt;Token Bucket&lt;/li&gt;
&lt;li&gt;Leaky Bucket&lt;/li&gt;
&lt;li&gt;Distributed rate limiting challenges&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 &lt;a href="https://rate-limiter-two.vercel.app/" rel="noopener noreferrer"&gt;https://rate-limiter-two.vercel.app/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>systemdesign</category>
      <category>backend</category>
      <category>ratelimiter</category>
    </item>
    <item>
      <title>What If DSA Was Taught Visually Instead of Just Theory?</title>
      <dc:creator>Sreya Satheesh</dc:creator>
      <pubDate>Thu, 11 Jun 2026 05:45:07 +0000</pubDate>
      <link>https://dev.to/sreya-satheesh/what-if-dsa-was-taught-visually-instead-of-just-theory-4fgf</link>
      <guid>https://dev.to/sreya-satheesh/what-if-dsa-was-taught-visually-instead-of-just-theory-4fgf</guid>
      <description>&lt;p&gt;👉 &lt;a href="https://www.decoded-app.com/" rel="noopener noreferrer"&gt;https://www.decoded-app.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When learning DSA, it's easy to fall into a familiar cycle.&lt;/p&gt;

&lt;p&gt;You solve a problem, understand the solution, and move on.&lt;/p&gt;

&lt;p&gt;A few days later, you come across a similar problem—and suddenly it feels unfamiliar again.&lt;/p&gt;

&lt;p&gt;The frustrating part is that you did understand the solution.&lt;/p&gt;

&lt;p&gt;What often doesn't stick is the reasoning behind it.&lt;/p&gt;

&lt;p&gt;How do you know where to start?&lt;/p&gt;

&lt;p&gt;How do you recognize patterns?&lt;/p&gt;

&lt;p&gt;How do you arrive at an efficient approach before writing any code?&lt;/p&gt;

&lt;p&gt;Those questions are what led me to build Decoded.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is Decoded?
&lt;/h2&gt;

&lt;p&gt;Decoded is a small app focused on helping people understand how DSA problems are approached, not just how they're solved.&lt;/p&gt;

&lt;p&gt;Instead of jumping straight to the final solution, it breaks problems down step by step.&lt;/p&gt;

&lt;p&gt;The goal is to show:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;how you begin thinking about a problem&lt;/li&gt;
&lt;li&gt;how patterns start becoming visible&lt;/li&gt;
&lt;li&gt;how an approach gradually forms&lt;/li&gt;
&lt;li&gt;and how the final solution evolves from there&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Rather than memorizing answers, the focus is on understanding the path that leads to them.&lt;/p&gt;

&lt;h2&gt;
  
  
  See Algorithms in Action
&lt;/h2&gt;

&lt;p&gt;One feature I found especially useful while learning was seeing algorithms unfold visually.&lt;/p&gt;

&lt;p&gt;So Decoded includes step-by-step dry runs that show how variables, pointers, and state change throughout execution.&lt;/p&gt;

&lt;p&gt;For example, in the Longest Substring Without Repeating Characters problem, you can watch the sliding window expand and shrink as duplicate characters are encountered.&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%2Fpbjj9q0a93t34uw57w9z.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%2Fpbjj9q0a93t34uw57w9z.png" alt="A step-by-step dry run of the **Longest Substring Without Repeating Characters** problem, showing how the sliding window expands and shrinks as duplicate characters are detected. The visualization tracks pointer movement, current window state, character memory, and maximum substring length in real time.&lt;br&gt;
" width="800" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Instead of reading through a static explanation, you can follow the algorithm's behavior step by step and see exactly why each decision is made.&lt;/p&gt;

&lt;p&gt;The goal is to make the process feel less abstract and easier to follow.&lt;/p&gt;




&lt;h2&gt;
  
  
  Learning Patterns Instead of Memorizing Problems
&lt;/h2&gt;

&lt;p&gt;One thing I noticed while studying DSA is that most problems aren't completely unique.&lt;/p&gt;

&lt;p&gt;Many of them are variations of a handful of recurring patterns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sliding Window&lt;/li&gt;
&lt;li&gt;Two Pointers&lt;/li&gt;
&lt;li&gt;Prefix Sum&lt;/li&gt;
&lt;li&gt;DFS / BFS&lt;/li&gt;
&lt;li&gt;Heaps&lt;/li&gt;
&lt;li&gt;Dynamic Programming
and more&lt;/li&gt;
&lt;/ul&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%2Fxpsp8ueolbaos1xauxp9.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%2Fxpsp8ueolbaos1xauxp9.png" alt="A visual explanation of the Two Pointers pattern, showing how left and right pointers move through an array to solve problems efficiently. The interactive examples demonstrate common approaches like opposite-end traversal and fast/slow pointers, along with real interview-style problems where the pattern is commonly used.&lt;br&gt;
" width="799" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you start recognizing these patterns, solving problems becomes much easier.&lt;/p&gt;

&lt;p&gt;You're no longer starting from scratch every time.&lt;/p&gt;

&lt;p&gt;Instead, you're identifying familiar structures and applying ideas you've seen before.&lt;/p&gt;

&lt;p&gt;Decoded tries to make those patterns easier to spot through visual explanations and guided breakdowns.&lt;/p&gt;

&lt;p&gt;For example, the Two Pointers section shows how pointers move through an array, when they move, why they move, and which types of interview problems commonly rely on the technique.&lt;/p&gt;




&lt;h2&gt;
  
  
  Understanding Data Structures
&lt;/h2&gt;

&lt;p&gt;Alongside problem-solving patterns, I also added short explanations for common data structures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Arrays&lt;/li&gt;
&lt;li&gt;Stacks&lt;/li&gt;
&lt;li&gt;Queues&lt;/li&gt;
&lt;li&gt;Trees&lt;/li&gt;
&lt;li&gt;Graphs&lt;/li&gt;
&lt;li&gt;Heaps&lt;/li&gt;
&lt;li&gt;Hash Maps&lt;/li&gt;
&lt;/ul&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%2F3p3mbzfdt23scw0jy5jv.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%2F3p3mbzfdt23scw0jy5jv.png" alt="An **Update** operation changing an array element at a specific index in constant time ($O(1)$), alongside a comparison between **Linear Search** ($O(n)$) sequentially scanning an unsorted array and **Binary Search** ($O(\log n)$) efficiently dividing a sorted array using index pointers." width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The goal isn't to provide a deep theoretical reference.&lt;/p&gt;

&lt;p&gt;It's simply to help answer a few practical questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How does this data structure behave?&lt;/li&gt;
&lt;li&gt;When should I use it?&lt;/li&gt;
&lt;li&gt;Why does it appear so often in coding interviews?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, you can visualize how array operations work and compare approaches like linear search and binary search to better understand their trade-offs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Built It
&lt;/h2&gt;

&lt;p&gt;The idea behind Decoded is simple.&lt;/p&gt;

&lt;p&gt;I wanted a resource that focused less on memorizing solutions and more on understanding how solutions are discovered.&lt;/p&gt;

&lt;p&gt;Something that makes algorithms feel a little less intimidating and a little more intuitive.&lt;/p&gt;

&lt;p&gt;It's not meant to replace practice.&lt;/p&gt;

&lt;p&gt;It's meant to make the reasoning behind problems easier to see.&lt;/p&gt;

&lt;p&gt;If you're currently learning DSA and want a more visual, step-by-step approach, you can try it here:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.decoded-app.com/" rel="noopener noreferrer"&gt;https://www.decoded-app.com/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>dsa</category>
      <category>programming</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How I Built a Malayalam Learning App as a Tribute to My Mother Tongue</title>
      <dc:creator>Sreya Satheesh</dc:creator>
      <pubDate>Tue, 12 May 2026 08:35:56 +0000</pubDate>
      <link>https://dev.to/sreya-satheesh/aksharam-a-tribute-to-my-mother-tongue-kh5</link>
      <guid>https://dev.to/sreya-satheesh/aksharam-a-tribute-to-my-mother-tongue-kh5</guid>
      <description>&lt;p&gt;I enjoy learning languages.&lt;/p&gt;

&lt;p&gt;Growing up in Kerala, Malayalam was always around me.&lt;/p&gt;

&lt;p&gt;At some point, I started wondering what it would feel like to build something that helps people learn Malayalam.&lt;/p&gt;

&lt;p&gt;That idea eventually became Aksharam — a simple Malayalam learning app designed to help beginners learn the language.&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%2Fv21vmkns902rm0moswz9.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%2Fv21vmkns902rm0moswz9.png" alt="**Aksharam** is an interactive Malayalam language learning platform that guides users from foundational building blocks to full literacy. The web app features structured navigation tabs at the top for learning vowels, consonants, chillu characters, compound letters, signs, words, and sentences, followed by a dedicated practice section. Each category uses interactive, multimedia cards complete with audio pronunciation support, English transliteration, and real-world vocabulary tracking to help learners effortlessly master the language." width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aksharam (അക്ഷരം) means letter in Malayalam.&lt;/p&gt;

&lt;p&gt;The goal of the app is simple: help beginners learn Malayalam step by step, from individual letters to words and sentences.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Aksharam Includes
&lt;/h2&gt;

&lt;p&gt;The app currently includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;സ്വരാക്ഷരങ്ങൾ (Vowels)&lt;/li&gt;
&lt;li&gt;വ്യഞ്ജനങ്ങൾ (Consonants)&lt;/li&gt;
&lt;li&gt;ചില്ലക്ഷരങ്ങൾ (Chillu Letters)&lt;/li&gt;
&lt;li&gt;കൂട്ടക്ഷരങ്ങൾ (Compound Letters)&lt;/li&gt;
&lt;li&gt;സ്വരചിഹ്നങ്ങൾ (Signs &amp;amp; Combinations)&lt;/li&gt;
&lt;li&gt;വാക്കുകൾ (Words)&lt;/li&gt;
&lt;li&gt;വാക്യങ്ങൾ (Sentences)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each lesson includes audio pronunciation support and English transliteration to make learning easier for beginners.&lt;/p&gt;

&lt;p&gt;The app is designed primarily for people who are new to Malayalam—whether they're language enthusiasts, students, members of the Malayalam diaspora, or simply curious about learning the language.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keeping the Learning Process Simple
&lt;/h2&gt;

&lt;p&gt;While building Aksharam, I wanted the experience to feel simple, clean, and easy to follow.&lt;/p&gt;

&lt;p&gt;Learning a language takes time. It's less about memorizing everything at once and more about becoming familiar with the language through repetition and practice.&lt;/p&gt;

&lt;p&gt;Instead of trying to include too many features, I focused on smaller learning steps and everyday vocabulary that learners are likely to encounter early on.&lt;/p&gt;

&lt;p&gt;The goal was to create something approachable rather than overwhelming.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Built It
&lt;/h2&gt;

&lt;p&gt;This project started as a way to explore language learning, but it gradually became something more personal.&lt;/p&gt;

&lt;p&gt;Malayalam is a language I grew up hearing every day.&lt;/p&gt;

&lt;p&gt;Building Aksharam gave me an opportunity to contribute something back to it in a small way.&lt;/p&gt;

&lt;p&gt;It's still a work in progress, and there are plenty of things I'd like to improve.&lt;/p&gt;

&lt;p&gt;But I'm happy to finally share it.&lt;/p&gt;

&lt;p&gt;If you'd like to explore the language or know someone who might benefit from it, you can try Aksharam here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aksharam-app.vercel.app/" rel="noopener noreferrer"&gt;https://aksharam-app.vercel.app/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>learningapp</category>
      <category>webdev</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
