DevIdiot!
Free OCR sites cap you at 15 pages/hour, so I built an unlimited one that runs Tesseract in the browser
Every free OCR service I tried throttles you: 15 pages/hour, 50 pages/month, or a free tier that exists to push you to a paid plan. The cap makes sense for them, because server compute costs money on every page. The only genuinely unlimited free option has been raw Tesseract on the command line, which most people can't use.So I ran the same engine in the browser instead:Tesseract.js (Tesseract compiled to WebAssembly) runs on your own CPU, so there's no per-page cost and nothing to rationAccepts
How to Get a Visitorâs IP and Country in Express (Behind Proxies and CDNs)
Fix req.ip behind Nginx, load balancers and CDNs, skip the spoofable X-Forwarded-For pattern, and add a cached, fail-open country lookup with an honest accuracy radius. Why req.ip shows your proxyâs IPIn production your Express app almost never talks to the visitor directly. Nginx, a cloud load balancer or a CDN accepts the connection and opens a new one to Node. From Expressâs point of view, the âclientâ is that proxy, so req.ip returns something like 10.0.0.12 or 127.0.0.1.The real addres
I Built a Grocery Sim Where the Stock Only Exists on My Server
I work part-time in a grocery store. Stocking shelves, facing product, the whole thing. One night I thought: what if I made that into a game? So my team and I did. It's called STOCK BOY - a 16-bit grocery rush game, and it's the flagship of my little studio, Levi Studios.You clock in. Customers walk in with a list. You tap them and serve from your shelves. Empty shelves mean angry walkouts. Then the lunch rush hits and it gets wild.But here's the part I'm proud of, and the reason I'm writing thi
When crt.sh's website is down, query its public database instead
I maintain a small tool that searches Certificate Transparency logs for new certificates on a domain. It reads crt.sh's JSON output, and it already retries the 404s and 502s that crt.sh returns when it's busy.This week retrying stopped being enough. For more than an hour, every request to the website failed: a 502 in under a second, or no answer at all until my 40-second timeout. The platform I run the tool on tests it once a day with its default input, and it had failed 5 of its last 27 daily t
Screening the payee of an x402 payment with Privy: OFAC, UN, EU and UK in one signed call
Privy has a good recipe for blocking x402 payments to sanctioned addresses: https://docs.privy.io/recipes/agent-integrations/x402-sanctions-screeningThe enforcement point is Privy's policy engine. You load a denylist into a condition set, and Privy refuses to sign a payment whose recipient is on it. The recipe is clear about what it leaves to you: loading the addresses is "general code, so it is not reproduced here", the example source is the OFAC SDN list, and it suggests pairing the denylist w
Hello DEV! đ
Iâm Ayush, an AI & Data Science student whoâs currently learning by building real projects.Iâm working on improving my skills in:â Java & DSAđ JavaScript & Web Developmentđď¸ SQL & Databasesđ¤ Machine Learning & Data Analyticsđ§ Git & GitHubInstead of just collecting tutorials and certificates, Iâm trying to build things, break things, fix them, and actually understand how they work.Currently, Iâm working on projects involving web development, machine learning, data analytic
Turning off Chrome noise suppression made far-field speech usable
Chrome enables noise suppression on getUserMedia when the constraints leave it alone. Next to the mic that default is reasonable. A voice across the table is quieter and less stable, and the browser suppressor treats a lot of it as noise, so far-field speech arrives at STT already damaged.The mic stream goes to Solaria-1, which already handles noise. Putting the browser suppressor in front of that was what made distant speech unusable, so mic capture forces the three flags:{ echoCancellation: t
Stop Letting Agents Fill Your SSD With npm
Last week I asked an AI agent to prototype three small web apps. It spun up three Vite projects, configured Tailwind, and ran test builds.Thirty minutes in, my laptop showed a low disk space alert.The agent had downloaded three separate copies of React, Vite, TypeScript, and ESLint. Each project had its own 600 MB node_modules directory. If you run multiple subagents or test throwaway ideas during the week, you lose dozens of gigabytes to duplicate JavaScript packages. The default to npmLan
Your browser can detect your NAT type in 30 lines of JavaScript
Your browser can detect your NAT type in 30 lines of JavaScriptEver had a video call that connects fine on one network but refuses to establish peer-to-peer on another? Or a game where voice chat works for everyone except that one friend? Nine times out of ten, the culprit is the NAT sitting between you and the internet â and your browser already has everything needed to interrogate it. The 30-line versionasync function probeNat(stunUrl) { const pc = new RTCPeerConnection({ iceServer
How the Browser Renders a Page
⥠TL;DR: Trace HTML bytes to pixels through the critical rendering path: DOM, CSSOM, layout, paint, composite. Once you know what blocks rendering and why reflows are expensive, you can stop layout thrashing and fix the real performance killers. ContentsYou hit Enter, then what?One sentence, then a pictureThe critical rendering pathWhat happens at each stage, and what slows it downWhat blocks renderingReflow vs repaint vs composite (and layout thrashing)Common mistakes that cost hoursTakeaw
Building Reusable Custom React Hooks: Form State, Debounce, and Intersection Observers
title: "Building Reusable Custom React Hooks: Form State, Debounce, and Intersection Observers"published: truepublished_at: "2026-11-17T09:00:00+05:30"description: "Learn how to extract complex business logic from UI components by building production-ready custom React hooks. We explore the Rules of Hooks, cleanup handling in useEffect, and construct robust useForm, useDebounce, and useIntersectionObserver hooks."tags: [react, javascript, cleancode, webdev]ai_disclosure_level: some_ai Intro
Building PWAs: Offline-First Like a Jedi Master
The Quest Begins (The "Why")I still remember the first time I watched a user stare at a blank screen because their train went into a tunnel and my shiny React app decided it needed the internet to show anything useful. âWhy canât this just work offline?â I muttered, feeling like Iâd just lost a boss fight in a game I hadnât even started yet. That moment kicked off a quest: I wanted my web app to feel native, to keep working when the network sputtered, and to give users that âwow, it just
Why We Built a Zero-Signup, Ephemeral AI Text Humanizer in React
By Sarmad Hussain â Founder, ClearWrite by I.T & AllThe modern web is suffering from severe account fatigue.Try finding an online text tool today. Within three seconds of landing on the page, you are greeted by an aggressive modal demanding your Google OAuth authorization, an email verification code, or a "Free 3-Day Trial" that asks for your credit card.Worse, when you paste sensitive work emails, internal memos, or draft assignments into these tools, your raw data is silently saved in thei
Documedic Adds CDSS Comparison Page for Clinical Decision Support Evaluation
The Problem: Evaluating Clinical Decision Support Systems Without BiasClinicians and informatics teams evaluating clinical decision support (CDSS) tools face a fragmented landscape. Vendor marketing pages highlight strengths; independent comparisons are rare. Documedic's team needed a way to surface how their AI-powered Clinical Decision Support System â built on FastAPI, React, and PostgreSQL â stacks up against alternatives for drug interactions, contraindications, dosing guidance, and e
Encounter lifecycle enforcement in Documedic CDSS
Encounter lifecycle enforcement in Documedic CDSSIn a typical electronic health record, a clinician can create a visit note, edit it, and then forget to close the encounter. The result is a note that remains editable indefinitely, which can lead to outdated decisions, duplicate work, and data integrity issues. Documedicâs latest commit tackles this problem by adding a strict lifecycle to each encounter, tying editability to a session token and a defined status. The problemThe reposito
GSTR-2B Reconciliation with Configurable Tolerances in GSTBot
The Problem: Exact Matching Breaks at ScaleIndian SMBs reconciling purchase registers against GSTR-2B face a fundamental mismatch: supplier-uploaded invoices rarely match buyer records character-for-character. A vendor's GSTIN might appear as 29AAACA1234A1Z5 in GSTR-2B but 29AAACA1234A2Z5 in the purchase register (one digit off). Invoice numbers differ by prefixes (INV-001 vs 001), dates shift by a day, and HSN codes get truncated. Traditional tools priced for enterprises solve this with r
Deep Dive into Documedicâs Drug Interaction Feature
Problem StatementClinicians routinely need to verify that a new prescription does not create dangerous drug interactions, contraindications, or dosing errors. A delay or omission can lead to medication errors that compromise patient safety. Documedicâs Drug Interaction feature aims to provide instant, evidenceâbased recommendations as part of a larger Clinical Decision Support System (CDSS). Architectural OverviewThe feature is split into three layers:Data layer â PostgreSQL stores dr
Stream an LLM object into React, field by field â in one hook
You asked the model for a JSON object and set stream: true so the UI can fillin as it arrives. Now you're in the usual mess:useEffect(() => { const ctrl = new AbortController(); (async () => { let buf = ""; for await (const chunk of stream(ctrl.signal)) { buf += chunk; try { setData(JSON.parse(buf)); // đĽ throws on every partial chunk } catch {} } })(); return () => ctrl.abort();}, [prompt]);JSON.parse throws until the very last token, you can't tell w
Marketing automation for devs: Heraldâs content scheduling
The problemIndie developers and small teams ship code faster than they can write about it. Every new release, demo, or bug fix is an opportunity to share a story, but manually drafting, reviewingentra, and posting content across multiple platforms is tedious. It also introduces friction: developers must juggle writing, formatting, social copy, and publishing while maintaining focus on the product. Feature spotlight: automated content scheduling and publishingHerald solves this frict
Fixing Follow-Ups in AI Recruiting with TalentPing
The Follow-Up Bottleneck in Outbound RecruitingInitial outreach rarely closes a candidate conversation on its own. For recruiters managing active searches across multiple roles, the real workload lies in the cadence: tracking response windows, drafting contextual follow-ups, and keeping candidate statuses synchronized with the applicant tracking system (ATS). When follow-up tracking is handled manually across spreadsheets or generic email tools, two failure modes inevitably appear. First,