<?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: shahriyar anwar</title>
    <description>The latest articles on DEV Community by shahriyar anwar (@shahriyar_anwar_c33c14b38).</description>
    <link>https://dev.to/shahriyar_anwar_c33c14b38</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%2F3941638%2F7f62878f-356f-41a6-a265-66455975f897.jpg</url>
      <title>DEV Community: shahriyar anwar</title>
      <link>https://dev.to/shahriyar_anwar_c33c14b38</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shahriyar_anwar_c33c14b38"/>
    <language>en</language>
    <item>
      <title>I Built a Random Letter Tool - Teachers Showed Me What It Was Really For.</title>
      <dc:creator>shahriyar anwar</dc:creator>
      <pubDate>Sun, 05 Jul 2026 10:27:59 +0000</pubDate>
      <link>https://dev.to/shahriyar_anwar_c33c14b38/i-built-a-random-letter-tool-teachers-showed-me-what-it-was-really-for-2k7e</link>
      <guid>https://dev.to/shahriyar_anwar_c33c14b38/i-built-a-random-letter-tool-teachers-showed-me-what-it-was-really-for-2k7e</guid>
      <description>&lt;p&gt;I've spent 35 years in IT. Enterprise systems, software delivery, the usual. So when I decided to build a simple browser tool for teachers, I figured it would be a weekend project. How hard could a &lt;a href="https://randomletter.io/" rel="noopener noreferrer"&gt;random letter generator&lt;/a&gt; be?&lt;/p&gt;

&lt;p&gt;Turns out, building the tool was the easy part. Understanding how teachers actually use it — that's where things got interesting.&lt;/p&gt;

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

&lt;p&gt;I didn't start with teachers in mind, honestly. I just noticed that most random letter tools online were either buried in ads, required signups, or looked like they were built in 2005. I thought I could do better. Clean interface, no registration, works on any device. Done.&lt;/p&gt;

&lt;p&gt;But once the site went live, the search data told a different story. People weren't just looking for "random letter generator." They were searching for things like "letter picker for classroom," "alphabet spin wheel for kids," and "random letter for phonics." Teachers. It was mostly teachers.&lt;/p&gt;

&lt;p&gt;That caught me off guard.&lt;/p&gt;

&lt;h2&gt;
  
  
  How They Actually Use It?
&lt;/h2&gt;

&lt;p&gt;I started paying attention to the search queries and the feedback, and the use cases were way more creative than I expected.&lt;/p&gt;

&lt;p&gt;ESL teachers were using it for warm-up exercises — generate a letter, students shout out words starting with that letter. Fast, simple, gets everyone talking in the first two minutes of class.&lt;/p&gt;

&lt;p&gt;Primary school teachers were projecting it on the whiteboard for phonics practice. A kid spins the wheel, the letter appears, and the whole class practices the sound together. One teacher mentioned she does this every single morning.&lt;/p&gt;

&lt;p&gt;Some were using it for games — Boggle-style challenges where you generate five random letters and students race to make words. Others used it for picking students (assign each kid a letter, generate one randomly — instant fair selection).&lt;/p&gt;

&lt;p&gt;None of this was in my original plan. I built a random letter tool. Teachers turned it into a classroom engagement system.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Non-Tech Users Taught Me
&lt;/h2&gt;

&lt;p&gt;Here's the thing about building for developers — they'll figure out your UI even if it's rough. They'll read documentation. They'll tolerate a loading spinner.&lt;/p&gt;

&lt;p&gt;Teachers won't. And they shouldn't have to.&lt;/p&gt;

&lt;p&gt;I learned this the hard way through a few iterations:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No signup means no signup.&lt;/strong&gt; I originally considered adding optional accounts for saving preferences. Bad idea. Teachers have enough logins. The moment you show a registration form, you lose half your audience. The tool works instantly — open the page, click generate, done.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mobile isn't optional.&lt;/strong&gt; I assumed most users would be on desktops. Wrong. Nearly 70% of my traffic comes from phones. Teachers are pulling this up on their personal phones, holding it up in front of the class, or casting it to a screen. The interface had to work perfectly at every screen size.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fullscreen matters more than features.&lt;/strong&gt; I added a full-screen mode almost as an afterthought. It turned out to be one of the most used features. When a teacher projects the tool on a whiteboard, they don't want browser chrome, tabs, or URL bars visible. They want a big letter on a clean screen that 30 kids can read from the back of the room.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sound is a feature.&lt;/strong&gt; I added text-to-speech so the tool announces the letter out loud. For phonics teachers working with 4 and 5-year-olds who can't read yet, hearing the letter is more important than seeing it. I never would have thought of this if I hadn't paid attention to who was actually using the tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Uncomfortable Truth About "Simple" Tools
&lt;/h2&gt;

&lt;p&gt;There's a bias in the developer community that simple tools aren't real engineering. A random letter generator? That's a weekend project. Where's the complexity?&lt;/p&gt;

&lt;p&gt;But here's what I've realized after months of iterating: simplicity is the product. The wheel animation, the vowel/consonant filter, the multi-letter generation, the accessibility compliance, the PageSpeed optimization — all of that exists so a teacher in a busy classroom can tap one button and get what they need in under a second.&lt;/p&gt;

&lt;p&gt;The complexity isn't in what the user sees. It's in everything they don't.&lt;/p&gt;

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

&lt;p&gt;I'm working on building this into a broader suite of classroom-friendly random generator tools. The random letter generator was tool number one, and the response from educators has been encouraging enough to keep going.&lt;/p&gt;

&lt;p&gt;If you're a developer thinking about building for education — do it. Teachers are an incredibly underserved audience when it comes to simple, free, well-built tools. They don't need another LMS or a complex platform. Sometimes they just need a thing that works, instantly, on their phone, with no friction.&lt;/p&gt;

&lt;p&gt;And if you're a teacher reading this on dev.to for some reason — thank you for showing me what this tool could be. I built it, but you taught me what it was for.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;What's the most unexpected audience you've discovered for something you built? I'd love to hear about it in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>education</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How I Built a Free Random Letter Generator — And Got 7,800+ Impressions in 8 Weeks with Zero Ad Spend</title>
      <dc:creator>shahriyar anwar</dc:creator>
      <pubDate>Wed, 20 May 2026 09:26:37 +0000</pubDate>
      <link>https://dev.to/shahriyar_anwar_c33c14b38/how-i-built-a-free-random-letter-generator-and-got-7800-impressions-in-8-weeks-with-zero-ad-2gp</link>
      <guid>https://dev.to/shahriyar_anwar_c33c14b38/how-i-built-a-free-random-letter-generator-and-got-7800-impressions-in-8-weeks-with-zero-ad-2gp</guid>
      <description>&lt;p&gt;I'm not a full-time developer. I'm an SEO and WordPress specialist. So when I decided to build and launch a web tool from scratch, I knew I had to be smart about every decision — from the tech stack to how I'd get it in front of people.&lt;/p&gt;

&lt;p&gt;This is the story of how I built &lt;a href="https://randomletter.io" rel="noopener noreferrer"&gt;randomletter.io&lt;/a&gt; — a free, fast, accessible random letter generator — and what I learned along the way.&lt;/p&gt;

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

&lt;p&gt;The idea was simple: I wanted to create a suite of small, useful generator tools under one brand. Random letter generator was Tool #1.&lt;/p&gt;

&lt;p&gt;I looked at what was already out there. Most existing tools were cluttered, slow, or just plain ugly. I knew I could do better — and more importantly, I knew a clean, fast, accessible tool could rank well on Google with the right SEO foundation.&lt;/p&gt;

&lt;p&gt;So I got to work.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Stack
&lt;/h2&gt;

&lt;p&gt;I kept it deliberately simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WordPress&lt;/strong&gt; as the CMS (I know it well, it's fast to deploy)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kadence Theme&lt;/strong&gt; — lightweight, performance-friendly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom Vanilla JS plugin&lt;/strong&gt; for the actual tool logic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LiteSpeed Cache + Cloudflare&lt;/strong&gt; for speed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rank Math SEO&lt;/strong&gt; for on-page optimization&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hostinger&lt;/strong&gt; for hosting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No React. No npm. No build pipeline. Just clean, dependency-free Vanilla JS wrapped in a custom WordPress plugin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the Tool Plugin
&lt;/h2&gt;

&lt;p&gt;The core tool lives in a custom plugin at &lt;code&gt;wp-content/plugins/&lt;/code&gt;. I built it entirely in Vanilla JS — no frameworks, no libraries.&lt;/p&gt;

&lt;p&gt;Why Vanilla JS? A few reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Performance&lt;/strong&gt; — no library overhead. Every millisecond matters for PageSpeed scores.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simplicity&lt;/strong&gt; — fewer moving parts means fewer things to break.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control&lt;/strong&gt; — I own every line of code.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The plugin handles letter generation, display modes (single letter, multiple letters), and user settings like excluding vowels or consonants. It enqueues its own CSS and JS cleanly, without touching the theme.&lt;/p&gt;

&lt;p&gt;One early mistake: I accidentally enqueued Google Fonts twice — once in the theme and once in the plugin. Fixed it, and PageSpeed jumped immediately. Small things like that compound fast.&lt;/p&gt;

&lt;h2&gt;
  
  
  Accessibility from Day One
&lt;/h2&gt;

&lt;p&gt;This was non-negotiable for me. A tool that teachers and students use needs to work for everyone.&lt;/p&gt;

&lt;p&gt;I made sure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All interactive elements have proper accessibility labels&lt;/li&gt;
&lt;li&gt;Colour contrast meets accessibility standards (I had to fix &lt;code&gt;--rlg-text-muted&lt;/code&gt; — the default was too light)&lt;/li&gt;
&lt;li&gt;The tool is fully keyboard navigable&lt;/li&gt;
&lt;li&gt;Screen reader announcements work correctly when a new letter generates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Result: &lt;strong&gt;100/100 Accessibility score on PageSpeed Insights&lt;/strong&gt;. Not a nice-to-have — a baseline.&lt;/p&gt;

&lt;h2&gt;
  
  
  The PageSpeed Obsession
&lt;/h2&gt;

&lt;p&gt;I'll be honest — I became a little obsessed with PageSpeed scores.&lt;/p&gt;

&lt;p&gt;After a lot of tweaking — removing duplicate font loads, deferring non-critical CSS, optimising the LiteSpeed Cache configuration, and setting up Cloudflare properly — here's where I landed:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Mobile&lt;/th&gt;
&lt;th&gt;Desktop&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Performance&lt;/td&gt;
&lt;td&gt;98&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Accessibility&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best Practices&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SEO&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A perfect or near-perfect score doesn't guarantee rankings — but it removes a barrier. Google won't penalise you for being fast.&lt;/p&gt;

&lt;h2&gt;
  
  
  SEO Strategy: Content Over Tricks
&lt;/h2&gt;

&lt;p&gt;I didn't do anything clever with SEO. I just did the basics well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Targeted low-competition keywords&lt;/li&gt;
&lt;li&gt;Wrote genuinely useful supporting content&lt;/li&gt;
&lt;li&gt;Built clean internal linking&lt;/li&gt;
&lt;li&gt;Made sure the site was fully crawlable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No black hat. No shortcuts. Just content that actually helps people.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Results (8 Weeks In)
&lt;/h2&gt;

&lt;p&gt;As of May 2026, with &lt;strong&gt;zero ad spend&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;7,870 impressions&lt;/strong&gt; on Google Search Console&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;85 clicks&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Average position: 18.2&lt;/strong&gt; (and improving)&lt;/li&gt;
&lt;li&gt;7 pages indexed&lt;/li&gt;
&lt;li&gt;Impressions in &lt;strong&gt;145 countries&lt;/strong&gt; — India, USA, UK, Japan, Canada, Philippines, and counting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not viral numbers. But for an 8-week-old site with no backlinks budget, I'll take it.&lt;/p&gt;

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

&lt;p&gt;Continuing to grow organically — more content, more visibility, more tools under the same brand. Slow and steady.&lt;/p&gt;

&lt;p&gt;No shortcuts. No rushing.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Vanilla JS is underrated.&lt;/strong&gt; You don't need a framework for a focused, single-purpose tool.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility and performance aren't opposites.&lt;/strong&gt; You can have both if you're intentional from the start.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WordPress gets a bad reputation it doesn't always deserve.&lt;/strong&gt; With the right stack, it's genuinely fast.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO is slow. That's fine.&lt;/strong&gt; Compound interest is slow too. Keep going.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you're thinking about building a small web tool — just start. Keep the scope small, the code clean, and the user experience tight.&lt;/p&gt;

&lt;p&gt;You can check it out at &lt;a href="https://randomletter.io" rel="noopener noreferrer"&gt;randomletter.io&lt;/a&gt; — feedback always welcome.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
