<?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: Zley</title>
    <description>The latest articles on DEV Community by Zley (@zley_34b5414ca5e486c1c333).</description>
    <link>https://dev.to/zley_34b5414ca5e486c1c333</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%2F3661506%2F9e1adfdf-23f8-4d9c-abf5-71ca925c82df.png</url>
      <title>DEV Community: Zley</title>
      <link>https://dev.to/zley_34b5414ca5e486c1c333</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zley_34b5414ca5e486c1c333"/>
    <language>en</language>
    <item>
      <title>I Started Treating AI Coding Like an Engineering Process, Not a Magic Trick</title>
      <dc:creator>Zley</dc:creator>
      <pubDate>Mon, 25 May 2026 08:31:30 +0000</pubDate>
      <link>https://dev.to/zley_34b5414ca5e486c1c333/i-started-treating-ai-coding-like-an-engineering-process-not-a-magic-trick-nji</link>
      <guid>https://dev.to/zley_34b5414ca5e486c1c333/i-started-treating-ai-coding-like-an-engineering-process-not-a-magic-trick-nji</guid>
      <description>&lt;p&gt;The most useful AI coding improvements I have seen lately are not about making the model sound more confident. They are about making it less reckless.&lt;/p&gt;

&lt;p&gt;That is why Superpowers caught my attention.&lt;/p&gt;

&lt;p&gt;Superpowers is an agentic skills framework and software development methodology from Jesse Vincent. The idea is simple: give coding agents a stricter process so they stop jumping straight into implementation, stop inventing requirements, and stop claiming work is complete before verification.&lt;/p&gt;

&lt;p&gt;In practice, it pushes the agent toward a workflow that looks much closer to real engineering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;clarify requirements before touching code&lt;/li&gt;
&lt;li&gt;write a design before implementation&lt;/li&gt;
&lt;li&gt;split work into small reviewable tasks&lt;/li&gt;
&lt;li&gt;use git worktrees to isolate changes&lt;/li&gt;
&lt;li&gt;follow TDD instead of writing tests after the fact&lt;/li&gt;
&lt;li&gt;verify before claiming completion&lt;/li&gt;
&lt;li&gt;use review-oriented agent workflows when useful&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That matters because the failure mode of AI coding is often not “it cannot write code.” The failure mode is that it writes too much code too confidently.&lt;/p&gt;

&lt;p&gt;If you have ever asked an agent to fix a bug and watched it declare victory without reproducing the issue, you know the problem. If you have ever asked for tests and got something that could never fail, you know the problem too.&lt;/p&gt;

&lt;p&gt;Superpowers does not magically solve software engineering. It adds friction in the right places. For tiny edits, that friction can feel like overhead. For larger features, bug fixes, and refactors, it can prevent a lot of wasted time.&lt;/p&gt;

&lt;p&gt;I wrote a full review of Superpowers on Open Agent Skills, including how it works, where it helps, and where it still feels heavy:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://openagentskills.dev/skills/superpowers" rel="noopener noreferrer"&gt;https://openagentskills.dev/skills/superpowers&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you use Claude Code, Codex, Cursor, Gemini CLI, Copilot CLI, or similar agentic coding tools, Superpowers is worth a look. The bigger lesson is even more important: the future of AI coding may not just be smarter models. It may be stricter processes around models.&lt;/p&gt;

&lt;p&gt;Links:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Superpowers review: &lt;a href="https://openagentskills.dev/skills/superpowers" rel="noopener noreferrer"&gt;https://openagentskills.dev/skills/superpowers&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Open Agent Skills: &lt;a href="https://openagentskills.dev" rel="noopener noreferrer"&gt;https://openagentskills.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub project: &lt;a href="https://github.com/obra/superpowers" rel="noopener noreferrer"&gt;https://github.com/obra/superpowers&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
    </item>
    <item>
      <title>I Built an MD5 Hash Generator Because Checksums Still Show Up Everywhere</title>
      <dc:creator>Zley</dc:creator>
      <pubDate>Fri, 08 May 2026 07:34:09 +0000</pubDate>
      <link>https://dev.to/zley_34b5414ca5e486c1c333/i-built-an-md5-hash-generator-because-checksums-still-show-up-everywhere-51eb</link>
      <guid>https://dev.to/zley_34b5414ca5e486c1c333/i-built-an-md5-hash-generator-because-checksums-still-show-up-everywhere-51eb</guid>
      <description>&lt;p&gt;Even though MD5 is no longer a good choice for storing passwords, it still shows up in everyday developer work: checksum comparisons, legacy integrations, migration scripts, cache keys, and quick data fingerprints.&lt;/p&gt;

&lt;p&gt;So I added a small browser-based tool to Tools Online: &lt;a href="https://toolsonline.run/md5" rel="noopener noreferrer"&gt;MD5 Hash Generator&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;I kept needing a quick way to paste a string and get the standard 32-character MD5 hash without opening a terminal, writing a one-off Node script, or searching for a random page that might send input to a server.&lt;/p&gt;

&lt;p&gt;The tool is intentionally narrow: paste text, optionally add a salt, and copy the generated MD5 output.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it supports
&lt;/h2&gt;

&lt;p&gt;The first version includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Standard 32-character MD5 output&lt;/li&gt;
&lt;li&gt;Short 16-character variant&lt;/li&gt;
&lt;li&gt;Uppercase and lowercase formats&lt;/li&gt;
&lt;li&gt;Prefix or suffix salt support&lt;/li&gt;
&lt;li&gt;Recent hash history&lt;/li&gt;
&lt;li&gt;Copy buttons for the generated values&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It runs directly in the browser, so the input text does not need to leave the device.&lt;/p&gt;

&lt;h2&gt;
  
  
  The important security note
&lt;/h2&gt;

&lt;p&gt;I also wanted the page to be clear about what MD5 should and should not be used for. It is fine for checksums, legacy compatibility, deduplication, and non-security fingerprints. It should not be used for new password storage. For passwords, use bcrypt, Argon2, or PBKDF2 instead.&lt;/p&gt;

&lt;p&gt;That note matters because a hash tool can be useful without pretending the algorithm is modern cryptography.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where AI helped
&lt;/h2&gt;

&lt;p&gt;AI helped me shape the page copy around the edge cases: explaining one-way hashing, clarifying why MD5 is not reversible, calling out rainbow table risks, and keeping the UX focused on real developer workflows rather than overselling the algorithm.&lt;/p&gt;

&lt;p&gt;The final tool is simple, local-first, and built for quick checksum work.&lt;/p&gt;

&lt;p&gt;Try it here: &lt;a href="https://toolsonline.run/md5" rel="noopener noreferrer"&gt;https://toolsonline.run/md5&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tools</category>
      <category>javascript</category>
      <category>security</category>
    </item>
    <item>
      <title>I Built an AI Token Calculator Because Long Prompts Need a Sanity Check</title>
      <dc:creator>Zley</dc:creator>
      <pubDate>Thu, 07 May 2026 07:48:31 +0000</pubDate>
      <link>https://dev.to/zley_34b5414ca5e486c1c333/i-built-an-ai-token-calculator-because-long-prompts-need-a-sanity-check-57eg</link>
      <guid>https://dev.to/zley_34b5414ca5e486c1c333/i-built-an-ai-token-calculator-because-long-prompts-need-a-sanity-check-57eg</guid>
      <description>&lt;p&gt;I keep running into the same small problem when working with LLMs: a prompt looks fine in a text editor, but I still need to know whether it is going to fit inside the model context window before I send it.&lt;/p&gt;

&lt;p&gt;That is why I added a new tool to Tools Online: &lt;a href="https://toolsonline.run/token-calculator" rel="noopener noreferrer"&gt;AI Token Calculator&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It is a browser-based token and context estimator for common AI models. You can paste a prompt, code snippet, document section, or chat draft, pick the provider/model you care about, and see the token count plus context usage immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it supports
&lt;/h2&gt;

&lt;p&gt;The first version focuses on the models I most often need to plan for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenAI / GPT models&lt;/li&gt;
&lt;li&gt;Claude&lt;/li&gt;
&lt;li&gt;Gemini&lt;/li&gt;
&lt;li&gt;Qwen&lt;/li&gt;
&lt;li&gt;GLM&lt;/li&gt;
&lt;li&gt;Kimi&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For OpenAI models, the tool uses compatible local BPE tokenizers. For the other providers, it shows the result as a local estimate because their exact billing tokenizers are either proprietary or exposed through authenticated APIs.&lt;/p&gt;

&lt;p&gt;That distinction is intentional. I did not want the UI to pretend every number has the same precision. If the result is exact, it is marked as exact. If it is an estimate for planning, it is marked as an estimate.&lt;/p&gt;

&lt;h2&gt;
  
  
  No API key, no upload
&lt;/h2&gt;

&lt;p&gt;The part I cared about most was privacy. Prompt drafts often contain product ideas, customer text, logs, or internal notes. I did not want a token calculator that sends that text to another server just to produce a rough number.&lt;/p&gt;

&lt;p&gt;So the calculator runs in the browser and does not require an API key. You paste text, choose the model, and get a quick read on whether the prompt is small, close to the limit, or already too large.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where AI helped during development
&lt;/h2&gt;

&lt;p&gt;AI was useful in the boring but important parts of the build. I used it to map out edge cases, compare how different providers expose token counting, shape the first version of the copy, and check whether the UI explained exact counting versus estimation clearly enough.&lt;/p&gt;

&lt;p&gt;The final product still needed manual decisions: keep the tool simple, avoid implying exact billing numbers for proprietary tokenizers, support multiple languages, and make the context window usage obvious at a glance.&lt;/p&gt;

&lt;h2&gt;
  
  
  When I use it
&lt;/h2&gt;

&lt;p&gt;This has already been useful before sending long prompts to production models, trimming documents for chat, checking code snippets, and estimating whether a multi-message prompt should be split.&lt;/p&gt;

&lt;p&gt;If you work with GPT, Claude, Gemini, Qwen, GLM, or Kimi and want a quick local check before sending a prompt, you can &lt;a href="https://toolsonline.run/token-calculator" rel="noopener noreferrer"&gt;try the AI Token Calculator here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>tools</category>
    </item>
    <item>
      <title>UI UX Pro Max — Multilingual Translation Site for Chinese &amp; Vietnamese Developers</title>
      <dc:creator>Zley</dc:creator>
      <pubDate>Tue, 05 May 2026 02:39:44 +0000</pubDate>
      <link>https://dev.to/zley_34b5414ca5e486c1c333/ui-ux-pro-max-ai-powered-design-intelligence-toolkit-now-with-multilingual-support-m6l</link>
      <guid>https://dev.to/zley_34b5414ca5e486c1c333/ui-ux-pro-max-ai-powered-design-intelligence-toolkit-now-with-multilingual-support-m6l</guid>
      <description>&lt;p&gt;I'm not the author of UI UX Pro Max — I'm just a &lt;strong&gt;multilingual translator&lt;/strong&gt; who built the official translation site.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is UI UX Pro Max?
&lt;/h2&gt;

&lt;p&gt;UI UX Pro Max is an AI-powered design intelligence toolkit with 67 UI styles, 161 color palettes, 57 font pairings, and 99 UX guidelines. It works as a skill for AI coding assistants.&lt;/p&gt;

&lt;p&gt;Original project: &lt;a href="https://github.com/nicekid1/UI-UX-Pro-Max" rel="noopener noreferrer"&gt;https://github.com/nicekid1/UI-UX-Pro-Max&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;I translated the entire project into Chinese and Vietnamese, and built a multilingual site at:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://ui-ux-pro-max-skill.com" rel="noopener noreferrer"&gt;https://ui-ux-pro-max-skill.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Languages available: English / 简体中文 / Tiếng Việt&lt;/p&gt;

&lt;p&gt;If you're a Chinese or Vietnamese developer who wants to use this toolkit with your AI coding assistant, check it out!&lt;/p&gt;

</description>
      <category>aidesignopensourcei18n</category>
    </item>
    <item>
      <title>I Built a Word Count Tool Because SEO Drafts Shouldn't Need a Spreadsheet</title>
      <dc:creator>Zley</dc:creator>
      <pubDate>Sat, 02 May 2026 00:57:02 +0000</pubDate>
      <link>https://dev.to/zley_34b5414ca5e486c1c333/i-built-a-word-count-tool-because-seo-drafts-shouldnt-need-a-spreadsheet-2bc4</link>
      <guid>https://dev.to/zley_34b5414ca5e486c1c333/i-built-a-word-count-tool-because-seo-drafts-shouldnt-need-a-spreadsheet-2bc4</guid>
      <description>&lt;p&gt;I added a small tool to Tools Online today: &lt;a href="https://toolsonline.run/word-count" rel="noopener noreferrer"&gt;Word Count&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It is one of those utilities that looks almost too simple until you notice how often you need it. I hit this all the time when writing README sections, product descriptions, changelogs, SEO snippets, launch posts, and short technical notes.&lt;/p&gt;

&lt;p&gt;The annoying part is not counting words itself. The annoying part is switching context just to check whether a title is getting too long, whether a meta description is still readable, or whether a draft has turned into a wall of text.&lt;/p&gt;

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

&lt;p&gt;I wanted the boring version of this tool:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;paste text&lt;/li&gt;
&lt;li&gt;get the counts immediately&lt;/li&gt;
&lt;li&gt;keep everything in the browser&lt;/li&gt;
&lt;li&gt;avoid uploading draft content anywhere&lt;/li&gt;
&lt;li&gt;include enough numbers to make editing decisions quickly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the tool shows character count, characters without spaces, word count, sentence count, paragraph count, and estimated reading time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it is useful for developers
&lt;/h2&gt;

&lt;p&gt;Developers write more text than we usually admit. A lot of it is not code, but it still affects how people understand the code or the product around it.&lt;/p&gt;

&lt;p&gt;A few places where I keep needing quick counts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;README intros&lt;/li&gt;
&lt;li&gt;PR descriptions&lt;/li&gt;
&lt;li&gt;documentation summaries&lt;/li&gt;
&lt;li&gt;changelog entries&lt;/li&gt;
&lt;li&gt;landing page copy&lt;/li&gt;
&lt;li&gt;SEO titles and descriptions&lt;/li&gt;
&lt;li&gt;short product announcements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, when I am working on a tool page, I often want the description to be short enough for search results but still clear enough for a real person. Having the count update instantly makes that editing loop much faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy matters for tiny tools too
&lt;/h2&gt;

&lt;p&gt;This is also why I prefer small browser-side utilities for text work. Drafts often contain unfinished product ideas, notes, customer wording, or internal phrasing. There is no reason to send that text to a server just to count it.&lt;/p&gt;

&lt;p&gt;You can try it here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://toolsonline.run/word-count" rel="noopener noreferrer"&gt;https://toolsonline.run/word-count&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I am slowly collecting these small daily utilities into Tools Online. The goal is not to make a heavy platform. It is to make the little tasks developers repeat all day faster to finish.&lt;/p&gt;

</description>
      <category>writing</category>
    </item>
    <item>
      <title>I Built a GUID Generator Because Test IDs Shouldn't Slow Me Down</title>
      <dc:creator>Zley</dc:creator>
      <pubDate>Thu, 30 Apr 2026 02:12:52 +0000</pubDate>
      <link>https://dev.to/zley_34b5414ca5e486c1c333/i-built-a-guid-generator-because-test-ids-shouldnt-slow-me-down-i7o</link>
      <guid>https://dev.to/zley_34b5414ca5e486c1c333/i-built-a-guid-generator-because-test-ids-shouldnt-slow-me-down-i7o</guid>
      <description>&lt;p&gt;Sometimes the smallest dev chores are the ones that interrupt flow the most.&lt;/p&gt;

&lt;p&gt;I often need a few GUIDs while testing an API, preparing seed data, writing examples, or filling in mock payloads. It is not hard to generate one from the console, but doing it repeatedly gets annoying fast.&lt;/p&gt;

&lt;p&gt;So I turned that tiny workflow into a browser tool: &lt;a href="https://toolsonline.run/guid-generator" rel="noopener noreferrer"&gt;GUID Generator&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;The tool is intentionally simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate 1 to 20 GUIDs at once&lt;/li&gt;
&lt;li&gt;Switch between uppercase and lowercase&lt;/li&gt;
&lt;li&gt;Keep or remove hyphens&lt;/li&gt;
&lt;li&gt;Add braces when a format needs them&lt;/li&gt;
&lt;li&gt;Copy all generated values in one click&lt;/li&gt;
&lt;li&gt;Restore recent generated batches from local history&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That covers most of the cases I run into when I need IDs for JSON payloads, SQL rows, config examples, or test fixtures.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I made it a separate tool
&lt;/h2&gt;

&lt;p&gt;A GUID generator is not a big feature. But when a tiny task shows up many times a week, it is worth making it frictionless.&lt;/p&gt;

&lt;p&gt;I wanted the flow to be: open the page, choose the format, generate, copy, move on. No login. No backend roundtrip. No extra UI trying to be clever.&lt;/p&gt;

&lt;p&gt;You can &lt;a href="https://toolsonline.run/guid-generator" rel="noopener noreferrer"&gt;try the GUID generator here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where AI helped
&lt;/h2&gt;

&lt;p&gt;AI was useful here in a practical way. I used it to map the small edge cases first: count limits, casing, hyphen handling, brace formatting, copy feedback, and local history.&lt;/p&gt;

&lt;p&gt;After that, I folded the implementation back into the existing Tools Online structure, tightened the TypeScript, and added the multilingual SEO page around it.&lt;/p&gt;

&lt;p&gt;For small tools like this, AI is not replacing the product decision. It is more like a checklist partner that helps catch the boring details before they become bugs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who it is for
&lt;/h2&gt;

&lt;p&gt;This is for developers who need quick IDs while building, debugging, documenting, or testing. If you regularly paste GUIDs into API mocks, database seeds, sample configs, or test data, this should save a few small interruptions.&lt;/p&gt;

&lt;p&gt;It is a small tool, but that is the point. The best utility tools are the ones you can open, use, and forget about.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tools</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>I Built a Text Similarity Checker: Compare Two Texts Instantly in Your Browser</title>
      <dc:creator>Zley</dc:creator>
      <pubDate>Wed, 29 Apr 2026 03:11:49 +0000</pubDate>
      <link>https://dev.to/zley_34b5414ca5e486c1c333/i-built-a-text-similarity-checker-compare-two-texts-instantly-in-your-browser-2323</link>
      <guid>https://dev.to/zley_34b5414ca5e486c1c333/i-built-a-text-similarity-checker-compare-two-texts-instantly-in-your-browser-2323</guid>
      <description>&lt;p&gt;Recently I was working on my online tools website &lt;a href="https://toolsonline.run" rel="noopener noreferrer"&gt;toolsonline.run&lt;/a&gt; and decided to build a &lt;strong&gt;Text Similarity Checker&lt;/strong&gt; — a tool that compares two texts and shows you exactly how similar they are.&lt;/p&gt;

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

&lt;p&gt;I kept running into situations where I needed to compare two blocks of text:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Writing&lt;/strong&gt;: Checking if I accidentally repeated paragraphs in a long article&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO&lt;/strong&gt;: Detecting duplicate content across pages&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Translation&lt;/strong&gt;: Comparing different versions of a translated text&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code review&lt;/strong&gt;: Spotting similar code snippets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most existing tools require registration, file uploads, or charge a fee. I wanted something simpler: paste two texts, get instant results, no strings attached.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;Paste your two texts into "Text A" and "Text B" fields, and the tool instantly calculates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Similarity percentage&lt;/strong&gt; — based on the Sørensen–Dice coefficient&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shared word count&lt;/strong&gt; — how many identical words exist between the two texts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Text overlap rate&lt;/strong&gt; — the coverage of content overlap&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Results update in real time as you type or edit.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Technical Challenge: Chinese Tokenization
&lt;/h2&gt;

&lt;p&gt;The biggest challenge was &lt;strong&gt;Chinese text segmentation&lt;/strong&gt;. English splits on spaces, but Chinese has no natural word boundaries. I used &lt;code&gt;Intl.Segmenter&lt;/code&gt; — a browser-native API that correctly handles tokenization for 15+ languages including Chinese, Japanese, Korean, and Thai. No backend needed.&lt;/p&gt;

&lt;p&gt;The algorithm uses the &lt;strong&gt;Sørensen–Dice coefficient&lt;/strong&gt;, a classic text similarity metric. It compares the intersection of word frequency distributions against their union, producing a 0–100% score.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real-time processing&lt;/strong&gt; — results update as you type&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-language support&lt;/strong&gt; — works with CJK languages via &lt;code&gt;Intl.Segmenter&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;100% client-side&lt;/strong&gt; — no data sent to any server&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Free &amp;amp; no registration&lt;/strong&gt; — just open and use&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href="https://toolsonline.run/text-similarity" rel="noopener noreferrer"&gt;Text Similarity Checker&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's completely free, open-source friendly, and respects your privacy. All calculations happen locally in your browser.&lt;/p&gt;

&lt;p&gt;If you find it useful, feel free to share it. Questions or suggestions? Drop a comment below!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>I built a small Base64 tool because I was tired of opening the console</title>
      <dc:creator>Zley</dc:creator>
      <pubDate>Tue, 28 Apr 2026 05:59:09 +0000</pubDate>
      <link>https://dev.to/zley_34b5414ca5e486c1c333/i-built-a-small-base64-tool-because-i-was-tired-of-opening-the-console-3plf</link>
      <guid>https://dev.to/zley_34b5414ca5e486c1c333/i-built-a-small-base64-tool-because-i-was-tired-of-opening-the-console-3plf</guid>
      <description>&lt;p&gt;There are some developer tools that are not complicated at all, but still manage to interrupt your flow every time you need them.&lt;/p&gt;

&lt;p&gt;Base64 encoding and decoding is one of those for me.&lt;/p&gt;

&lt;p&gt;When I am debugging an API response, checking a payload, testing a data URI, or looking at a config value that someone encoded, I usually do not want to open a terminal, write a quick snippet, or search for a random converter. I just want to paste the text, see the result, copy it, and move on.&lt;/p&gt;

&lt;p&gt;So I built a small browser-based Base64 encoder and decoder for Tools Online:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://toolsonline.run/base64" rel="noopener noreferrer"&gt;https://toolsonline.run/base64&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It does the basic thing: encode text to Base64 and decode Base64 back to text. But I tried to make the workflow feel less annoying:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real-time conversion while typing&lt;/li&gt;
&lt;li&gt;Encode/decode mode switching&lt;/li&gt;
&lt;li&gt;UTF-8 support, including CJK text and emoji&lt;/li&gt;
&lt;li&gt;One-click copy and paste&lt;/li&gt;
&lt;li&gt;Decode error feedback&lt;/li&gt;
&lt;li&gt;Local conversion history in the browser&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One detail I wanted to make clear on the page is that Base64 is not encryption.&lt;/p&gt;

&lt;p&gt;That sounds obvious, but I still see Base64 used in places where people treat "not immediately readable" as "secure". Base64 is just an encoding format. Anyone can decode it. If the data is sensitive, it needs real encryption, not a different text representation.&lt;/p&gt;

&lt;p&gt;I also added a short explanation of how Base64 works: 3 bytes become 24 bits, those bits get split into 4 groups of 6 bits, and each group maps to the Base64 alphabet. Padding with &lt;code&gt;=&lt;/code&gt; is added when the input length does not fit cleanly into groups of 3 bytes.&lt;/p&gt;

&lt;p&gt;The implementation is intentionally simple. The conversion runs in the browser, so the text never needs to be sent to a server. For a tool like this, that matters more to me than adding extra features.&lt;/p&gt;

&lt;p&gt;AI helped with the early checklist: edge cases, UX states, page copy, FAQ structure, and multilingual SEO content. The actual implementation still needed manual cleanup around TypeScript types, browser APIs, error handling, and keeping the UI consistent with the rest of the site.&lt;/p&gt;

&lt;p&gt;It is a small tool, but I like small tools that remove repeated friction.&lt;/p&gt;

&lt;p&gt;If you deal with Base64 often while debugging APIs or frontend data, you can try it here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://toolsonline.run/base64" rel="noopener noreferrer"&gt;Base64 Encode &amp;amp; Decode Online&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tools</category>
      <category>javascript</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How I Built My URL Decode Tool</title>
      <dc:creator>Zley</dc:creator>
      <pubDate>Fri, 13 Mar 2026 11:31:06 +0000</pubDate>
      <link>https://dev.to/zley_34b5414ca5e486c1c333/how-i-built-my-url-decode-tool-56on</link>
      <guid>https://dev.to/zley_34b5414ca5e486c1c333/how-i-built-my-url-decode-tool-56on</guid>
      <description>&lt;p&gt;I have been filling out Tools Online with the kind of developer utilities that are small, boring, and incredibly useful when you need them right now. A URL decode and encode tool was an obvious one to build. When you are debugging API calls, checking callback URLs, or trying to read a string full of &lt;code&gt;%E4%B8%AD%E6%96%87&lt;/code&gt;, you usually do not want to open DevTools and write one more line of JavaScript. You just want a page that works immediately and keeps your data in the browser.&lt;/p&gt;

&lt;p&gt;That was the whole goal here: make it fast, make it clear, and make it convenient enough that I would actually use it myself. If you want to see the finished version first, you can try it here: &lt;a href="https://toolsonline.run/urldecode" rel="noopener noreferrer"&gt;URL Decode tool&lt;/a&gt;.&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%2F0k0jl1ye1wrybp9n2gr3.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%2F0k0jl1ye1wrybp9n2gr3.png" alt=" " width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What this tool does
&lt;/h2&gt;

&lt;p&gt;The tool handles both sides of the workflow.&lt;/p&gt;

&lt;p&gt;On the decode side, it takes percent-encoded content and turns it back into readable text with &lt;code&gt;decodeURIComponent&lt;/code&gt;, which is useful when I am checking query params, callback links, or encoded values from logs.&lt;/p&gt;

&lt;p&gt;On the encode side, I decided not to stop at a single output. The page shows both:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;encodeURI&lt;/code&gt;, for full URLs where the URL structure should stay intact&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;encodeURIComponent&lt;/code&gt;, for parameter values where special characters should be fully escaped&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That distinction matters a lot in real use. People often know they need “URL encoding,” but the difference between those two JavaScript APIs is exactly where mistakes happen. So the tool does not just convert text. It also explains the difference and shows when each option makes sense.&lt;/p&gt;

&lt;p&gt;I also added the smaller quality-of-life pieces that make a tool like this feel complete:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;real-time conversion while typing&lt;/li&gt;
&lt;li&gt;a switch for turning real-time mode on or off&lt;/li&gt;
&lt;li&gt;one-click copy and paste support&lt;/li&gt;
&lt;li&gt;local history for recent conversions&lt;/li&gt;
&lt;li&gt;clear error feedback for invalid encoded input&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of that is flashy, but together it is much nicer than opening the console every time.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I built it
&lt;/h2&gt;

&lt;p&gt;My usual approach for tools like this is to build the smallest working loop first: input, processing, output. Once that works, I add the interaction details that actually affect usability.&lt;/p&gt;

&lt;p&gt;The main component is a client-side React component. The logic is straightforward, but I still wanted the state model to be clean. I split state across the input value, decode output, encode output, current mode, error message, copy feedback, real-time toggle, and history. For the encode flow, I keep both &lt;code&gt;uri&lt;/code&gt; and &lt;code&gt;uriComponent&lt;/code&gt; outputs so the user does not need to make that choice after the fact.&lt;/p&gt;

&lt;p&gt;History is stored in &lt;code&gt;localStorage&lt;/code&gt;, capped at 20 entries. I also made sure it does not get noisy. If the latest entry is effectively the same input in the same mode, it is ignored. In real-time mode, I do not immediately save every keystroke either. I delay history writes slightly so the tool feels like a practical utility instead of a key logger with a UI.&lt;/p&gt;

&lt;p&gt;On the page itself, I did not want a bare input box and a button. I wanted the landing page to be useful on its own, so I included content that explains the context around the tool:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;why URL encoding matters&lt;/li&gt;
&lt;li&gt;what RFC3986 allows and reserves&lt;/li&gt;
&lt;li&gt;common failure cases when text is not encoded properly&lt;/li&gt;
&lt;li&gt;the difference between &lt;code&gt;encodeURI&lt;/code&gt; and &lt;code&gt;encodeURIComponent&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;a quick reference table for common encoded characters&lt;/li&gt;
&lt;li&gt;FAQ, how-to content, and structured SEO metadata&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the end result is not just a working widget. It is a tool page that helps people use the feature and understand the concept.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where AI helped
&lt;/h2&gt;

&lt;p&gt;This was not a one-prompt, fully automated build. I used AI more like a fast development partner. It helped me move faster, but I still made the decisions that shaped the final result.&lt;/p&gt;

&lt;p&gt;The first place AI helped was requirement breakdown. I used it to quickly explore which interactions were worth including beyond basic encode and decode. Real-time conversion, clipboard actions, history, and dual encode outputs all came out of that early exploration phase.&lt;/p&gt;

&lt;p&gt;Then I used AI to help draft an initial component structure. That is where it saves the most time for me: getting a first pass on state layout, processing flow, and UI structure so I can start refining instead of staring at a blank file.&lt;/p&gt;

&lt;p&gt;After that, I tightened the implementation myself. Type details, state behavior, duplicate-history filtering, error handling, and the final interaction choices all needed manual judgment. This project also has real constraints around strict TypeScript, Radix UI usage, i18n file organization, and SEO page structure, so I treat AI output as a draft, not a final answer.&lt;/p&gt;

&lt;p&gt;I also use AI later in the process for cleanup work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;checking whether the copy reads naturally&lt;/li&gt;
&lt;li&gt;filling in page content that users and search engines actually benefit from&lt;/li&gt;
&lt;li&gt;catching obvious edge cases or missing explanations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the workflow I like most. AI handles the repetitive and exploratory parts. I keep control over the parts that determine quality.&lt;/p&gt;

&lt;h2&gt;
  
  
  The parts I like most in this tool
&lt;/h2&gt;

&lt;p&gt;The first one is privacy. Everything runs in the browser. Nothing needs to be sent to a server. For a developer tool that often touches callback URLs, temporary tokens, or debugging data, that boundary matters.&lt;/p&gt;

&lt;p&gt;The second one is that the page explains things instead of only outputting a result. I do not like tools that give you an answer without helping you understand why it works. So I added the &lt;code&gt;encodeURI&lt;/code&gt; vs &lt;code&gt;encodeURIComponent&lt;/code&gt; comparison, an encoding reference, and enough surrounding context to make the page useful even before someone clicks copy.&lt;/p&gt;

&lt;p&gt;The third one is the multilingual and SEO work around it. The site supports 15 languages, so even a “small” utility ends up needing full component copy, landing-page content, FAQ, metadata, alternates, and JSON-LD. It is a lot of detail work, but it is worth it because a useful tool should be discoverable and understandable, not just functional.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who this is for
&lt;/h2&gt;

&lt;p&gt;This tool is especially handy if you regularly do things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;debug API parameters&lt;/li&gt;
&lt;li&gt;inspect OAuth or payment callback URLs&lt;/li&gt;
&lt;li&gt;deal with spaces, non-ASCII text, or special characters in query strings&lt;/li&gt;
&lt;li&gt;generate safe parameter values for URLs&lt;/li&gt;
&lt;li&gt;quickly decide whether a full URL or a single value should be encoded&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is the kind of page that saves time when you need a quick answer and do not want to drop into code just to inspect one string.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final note
&lt;/h2&gt;

&lt;p&gt;I do not think developer tools need to be complicated to be valuable. A lot of the time, the best ones are the pages you remember at exactly the moment you need them.&lt;/p&gt;

&lt;p&gt;That is what I wanted this URL Decode and Encode tool to be. Not flashy, not overloaded, just fast, clear, and complete enough to be genuinely useful. AI helped me speed up parts of the build, which let me spend more time on the interaction details, page content, and overall polish.&lt;/p&gt;

&lt;p&gt;If you spend any amount of time bouncing between encoded strings and readable URLs, this one should fit nicely into your workflow. If you want to open it right away, you can &lt;a href="https://toolsonline.run/urldecode" rel="noopener noreferrer"&gt;try it here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
    </item>
    <item>
      <title>Built a tool to generate beautiful Prompt Cards over the weekend, no login required</title>
      <dc:creator>Zley</dc:creator>
      <pubDate>Sat, 20 Dec 2025 05:35:36 +0000</pubDate>
      <link>https://dev.to/zley_34b5414ca5e486c1c333/built-a-tool-to-generate-beautiful-prompt-cards-over-the-weekend-no-login-required-4ope</link>
      <guid>https://dev.to/zley_34b5414ca5e486c1c333/built-a-tool-to-generate-beautiful-prompt-cards-over-the-weekend-no-login-required-4ope</guid>
      <description>&lt;p&gt;Hi everyone,&lt;/p&gt;

&lt;p&gt;I spent the weekend building a small tool. The idea came from my own frustration: whenever I shared AI Prompts in tech groups or on social media, copy-pasting raw text looked messy, and screenshots of ChatGPT interface were cluttered with UI elements.&lt;/p&gt;

&lt;p&gt;I wanted a simple, pure tool to turn boring text into beautiful cards, so I built &lt;strong&gt;AI Prompt Card&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Live Demo: &lt;strong&gt;&lt;a href="https://aipromptcard.app" rel="noopener noreferrer"&gt;https://aipromptcard.app&lt;/a&gt;&lt;/strong&gt;&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%2F4yycper9airdk0fu3gdf.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%2F4yycper9airdk0fu3gdf.png" alt=" " width="800" height="494"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What does it do?&lt;/strong&gt;&lt;br&gt;
Simply put, it "beautifies your prompts". Paste your prompt, and it automatically parses Markdown (with code highlighting) to generate a well-designed image.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✨ Key Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;WYSIWYG&lt;/strong&gt;: Edit on the left, preview on the right. No guessing.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Markdown Support&lt;/strong&gt;: Optimized for code blocks and lists. Developer friendly.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Aesthetics&lt;/strong&gt;: 10+ carefully crafted themes, supporting Dark/Light modes.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Privacy First&lt;/strong&gt;: &lt;strong&gt;No backend account system&lt;/strong&gt;. All history is saved in your browser's LocalStorage. I don't want your data.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Ultra Lightweight&lt;/strong&gt;: No bloat. Open, generate, and go.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;A bit about the dev process:&lt;/strong&gt;&lt;br&gt;
There are similar tools out there, but they often require login, produce low-res images, or have poor typography support. As someone with a bit of "pixel OCD", I tweaked the letter spacing and line height specifically to ensure the cards look great when shared on Twitter or mobile.&lt;/p&gt;

&lt;p&gt;The project has no paid features and is purely a labor of love (I even paid for the domain 😂).&lt;/p&gt;

&lt;p&gt;Let me know what you think! If you have any color themes you'd like to see, tell me in the comments and I'll add them!&lt;/p&gt;

</description>
      <category>promptengineering</category>
    </item>
  </channel>
</rss>
