DevIdiot!
I built a dragon name generator in one HTML file - the trick is hiding meaning in the roots
Most name generators spit out syllable soup. When I builtdragonnameforge.com (a free dragon name generator, single HTML file,no backend), I wanted every name to carry its own lore. So the wholetool runs on a root system: ign- = fire, glac- = ice, ur- = origin,-rax = wing, -thys = guardian. A generated name like "Drignarax"isn't random - the page can tell you it means "the fire-winged", plusa one-line legend: born beneath a bleeding comet, hoarding meltedcrowns in a caldera.Tech side is deliberat
What Is a Framework? JavaScript Frameworks Explained Simply
If you have spent even a week learning web development, you have probably run into a sentence like this: "You should learn a framework before you apply for jobs." Nobody stops to explain what that word actually means. You just nod, open YouTube, and start following a React tutorial without really knowing why you are doing it.This article fixes that gap. By the end, you will know exactly what is a JavaScript framework, how it is different from a library, why almost every production website relies
The Agent That Shared a Rate Limit Across Tenants: A Take-Home Packet
Interview loops keep accepting agent-drafted rate limiters that pass a happy-path fixture and then leak quota across customers. The failure is not missing Redis knowledge but treating a process-local counter as a finished multi-tenant contract. This packet gives reviewers a prompt, a rubric, a compact reference module, and graded failure modes. Hidden tests stay off the candidate gist so memorized fixtures cannot launder a global process counter. Why this task still sorts candidatesPublic c
I put my own "no-upload" tools on a network monitor. Here's what actually left the browser.
"Runs in your browser, nothing uploaded" is the easiest claim in web tooling to make -- and one of the easiest to fake. A tool can pretty-print your JSON locally and quietly POST it to a server for "analytics." The only way to know is to watch the network.So I did that to my own tools. I opened 15 of them across nine categories with the browser's network panel recording every request, and wrote down exactly where each one went. This is the method and the result -- and, more usefully, a snippet y
S3-compatible is a promise with an asterisk
Amazon's S3 won so completely that its API became a standard. Now half the object-storage providers on the market advertise the same two words: S3-compatible. Point your existing AWS SDK at their endpoint, change a few environment variables, and your code can't tell the difference.That's mostly true, and it's genuinely great — it's why moving between storage providers is a config change instead of a rewrite. I wrote about that side of it when I moved StoryKept to a $19/month box: the storage swa
Ask for a Real No in the First Fifteen Minutes
The first fifteen minutes of an AI coding session are a bad scoreboard, because they reward a demo and hide the room. I no longer ask whether a sample file compiled, because that question never inspects the working directory or the test runner. I ask whether the agent produced a real no I can replay on the same tree, with a path I recognize. Why do we treat a green check like proof of the whole stack, when it usually means the sample file was polite?Picture a hotel desk that stamps your keycard
How I built 15 browser tools with zero backend
Every "free online tool" I reached for wanted an upload, an account, or both. So I built 15 that need neither — and the constraint that made that possible turned out to be the best decision in the project: no backend at all.Here's what runs where. The browser can do more than we give it credit forImage work (HEIC→JPG, compress, resize, strip EXIF): <canvas> + createImageBitmap, and WASM (heic2any) for formats the browser can't decode natively.PDF split/merge: pdf-lib, entirely client-
If the Tool Isn't on the Card, It's a Zero: A Bootcamp Lab on Agent Allowlists
Stop grading the chat. Grade the tools the agent was allowed to touch.If a student agent can shell out, hit the network, or install packages that were never on the assignment card, I do not care how pretty the final function looks. That is not a lab. That is a jailbreak with extra steps. Why this lab existsA lot of the current “AI already codes better than us” noise skips the classroom problem. Models can write a reducer. They can also curl | bash while they are at it. You want engineering?
Building Scalable Web & Mobile Solutions: The Software Engineering Landscape in Egypt
The digital transformation landscape in Egypt and the MENA region is experiencing rapid evolution. Modern enterprises and startups are increasingly moving away from legacy monolithic systems and slow template-based builders towards performant, tailored architectures. The Modern Tech Stack for Emerging MarketsAt DoGether Tech, we focus on building robust digital solutions that balance high performance with realistic business operational constraints:Frontend & Web Applications: Leveraging
I Went Down the React Hydration Rabbit Hole
Okay, I went down the React hydration rabbit hole and, I think the way we usually talk about hydration makes it sound much simpler than what is actually happening.For manyy many many many manyyy years, whenever performance came up, the conversation was mostly about the network. Compress your HTML. Cache your assets. Split your bundles. Ship less JavaScript, don't make the user download half the internet just to see a landing page. All good advice👍 but eventually the JavaScript reaches the browse
Cloudflare: Stay discoverable in search while disallowing AI training
<a href="https://news.ycombinator.com/item?id=49721435">Comments</a>
React 19.3, the Compiler, and a CVSS 10: What Changed While You Weren't Looking
This week I pulled Create React App out of one project and wrote the plan to pull it out of another. Both were from 2022 and 2023, and both still worked. That is the deceptive part: still working and still being the right way to do it are different things, and between the two, four large changes happened in React that do not announce themselves.None of this is rumour. All four are on the official blog, with dates. 1. The compiler already deletes your useMemoReact Compiler reached 1.0 on Oct
Architectural Breakdown: The Test Looked Redundant. The Ninth Bug Needed It.
# The Test Looked Redundant. The Ninth Bug Needed It.It was 2:47 AM when PagerDuty decided we should all be awake. Production latency hit eleven seconds on a feature that had not been touched in six months. The stack trace pointed at an edge case in order fulfillment, a state transition nobody wrote a test for. Here is the par
What I Actually Learned Adding Asgardeo Login to a Side Project
I recently added Asgardeo (WSO2's identity platform) to a hotel booking app I've been building. My main reason was to see how a managed identity provider compares to the JWT/OAuth authentication I'd built by hand. I expected to write a short "here's how you add login" post. Instead I found a scope-release gotcha worth understanding, a dependency bug worth filing, and one wrong conclusion I had to walk back before publishing this.The setupThe app already has its own auth: a JWT held in Redux, att
Recreating Voodoo Graphics and a Late-1990s Gaming PC on an FPGA
<a href="https://news.ycombinator.com/item?id=49719938">Comments</a>
Free Developer Utilities: JSON Formatters, JWT Decoders, and Everyday Dev Tools
Shipping software involves tiny, repetitive jobs: pretty-printing JSON, inspecting a JWT, encoding a string, checking a hash, or converting a color. IDEs and CLIs are powerful, but a fast browser tab helps when pairing, debugging a webhook, teaching, or working on a locked-down machine. JSON formattingA JSON formatter makes minified payloads readable and catches missing commas, bad quotes, and trailing junk. Copy a response from DevTools or Postman, validate it, fix structural errors, and m
Paste your Stripe webhook handler here: 7 checks that run in this post
The most-viewed Stripe question on Stack Overflow right now is not a subtle one. It is Webhook payload must be provided as a string or a Buffer — 25,121 views, 13 answers. Right behind it: NextJS Stripe Webhook Raw Body (5,492 views) and Express 4.17 raw body for one endpoint (5,504 views).Same root cause every time, and it is only rule 1 of the 7 things that go wrong in webhook handlers. So instead of another checklist you have to read: paste your handler below and press Run.It ships with a del
Stop Relying on Static Reviews: How to Compare Proxies with Live Benchmark Data
Stop Relying on Static Reviews: How to Generate Custom Side-by-Side Proxy Performance ComparisonsIf you build web scrapers, automation bots, or data pipelines, choosing a proxy provider is often a game of trial and error. Every vendor claims 99% success rates and sub-second latencies. But when you test them against actual anti-bot targets under real-world conditions, the results vary wildly—one provider might excel at Google SERP scraping, while another fails completely on strict e-commerc
Why Facebook Ads Library Scraper Runs Drop Connections Past 300 Seconds
The Architectural Cost of Meta’s Ad Transparency GatesTo scrape the Facebook Ad Library at scale, you must bypass aggressive, IP-based blocking and structural pagination limits. Meta gates its ad library behind residential IP checks and occasionally forces redirect-to-login walls depending on the origin network. While the facebook-ads-library-scraper handles these structural hurdles out of the box using built-in residential proxies, it operates under a strict execution model.For developers
iOS vs Android vs PWA for Nigerian Apps — Technical Decision Framework 2026
The platform decision is the most consequential choice in Nigerian mobile development — and most teams make it by defaulting rather than deciding. Here is the technical framework. The Nigerian Market Realityconst market = { android: { share: '85-90%', demographic: 'Full spectrum — budget to flagship' }, ios: { share: '10-15%', demographic: 'Higher-income urban — disproportionately high LTV' }, pwa: { share: '100%', demographic: 'All smartphones + desktop', tradeoff: 'Device fea