惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
I
InfoQ
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
Y
Y Combinator Blog
博客园_首页
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
A
About on SuperTechFans
Apple Machine Learning Research
Apple Machine Learning Research
Vercel News
Vercel News
T
The Blog of Author Tim Ferriss
C
Check Point Blog
B
Blog RSS Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Engineering at Meta
Engineering at Meta
B
Blog
爱范儿
爱范儿
Stack Overflow Blog
Stack Overflow Blog
aimingoo的专栏
aimingoo的专栏
WordPress大学
WordPress大学
F
Fortinet All Blogs
月光博客
月光博客
GbyAI
GbyAI

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
I just shipped my 50th free browser tool — here's what bu...
Zihang Dong · 2026-05-09 · via DEV Community

It's 12:30 AM. The apartment is quiet. The only light is my monitor, and the terminal cursor blinks like a heartbeat.

Tonight, ToolKnit crossed 50 tools. Fifty-two, to be exact.

What is ToolKnit?
ToolKnit is a collection of free, browser-based tools — PDF converters, image editors, video compressors, text utilities, calculators, and more. Every tool runs entirely in your browser. No file uploads, no sign-ups, no server-side processing. Your files never leave your device.

The stack is deliberately simple: static HTML, Tailwind CSS, vanilla JavaScript. No React, no Next.js, no build step. Just files on a server.

What shipped tonight
Three new tools and a brand new category:

Unit Converter — 8 categories (length, weight, temperature, area, volume, speed, data, time), bidirectional conversion with real-time results
Percentage Calculator — three modes: "X% of Y", percentage change, and "X is what % of Y"
Markdown Editor — side-by-side live preview, export to .md, copy rendered HTML, word/char/line stats
These three, along with the existing Age Calculator, formed a new Calculator Tools category — the 8th category on the platform.

The unglamorous parts
Building solo means you're the developer, the designer, the QA team, the DevOps engineer, and the person who accidentally deploys the wrong file to production at 11 PM.

The Encoding Incident
I discovered that 46 out of 52 tool pages had garbled characters. Every em-dash had been corrupted into �? — the Unicode replacement character. Somewhere in a batch edit, UTF-8 encoding broke silently across nearly the entire site.

46 files. One silent bug. Encoding is the villain arc nobody warns you about.

The Homepage Incident
While deploying fixes, I accidentally SCP'd blog/index.html to the root directory — overwriting the entire homepage with the blog page. The main landing page, just gone.

Caught it within a minute. Fixed it in two. But that's the kind of mistake that makes your stomach drop when you're the only person between "working website" and "oops."

By the numbers
Metric Count
Total tools 52
Blog articles 51
Tool categories 8
Files with encoding bugs fixed tonight 46
Times I accidentally broke production 1
Time to fix it ~60 seconds
Why build this way?
I get asked why I don't use a framework. Why no React, no component library, no CMS.

The answer is simple: every tool is a single HTML file. No build step means no build failures. No dependencies means no supply chain risk. No server processing means no server costs beyond a basic VPS. A user opens a page, the tool works. That's it.

The trade-off is that updates require touching many files manually. Tonight I had to update the tool count in index.html, manifest.json, 404.html, changelog.html, service-worker.js, sitemap.xml, search.js, and the var tools array inside all 52 tool pages. That's the price of simplicity.

What's next
More tools. Same chair, same dark room, same quiet conviction that free tools should just work.

If you want to check it out: toolknit.com

If you're also building something alone at midnight — I see you.

— Zihang Dong, May 9, 2026