DevIdiot!
Stop a jQuery modal from closing (before-close never worked)
Three open issues in kylefox/jquery-modal ask the same thing. #297 (2021), #312 (2024), #314 (2024): let my code stop the modal from closing. Four years, three people, no answer, no comments.The library has a modal:before-close event. So the obvious answer is:$('#my-modal').on('modal:before-close', function (e) { if (hasUnsavedChanges()) e.preventDefault();});That does nothing. Here's why, and here's what actually works. Why preventDefault on before-close is a no-opclose() tears the modal
Firefox for Web Developers: DevTools Advantages and Extensions Worth Installing
Firefox has features that Chrome does not. For web development work, some of these matter.This is not a broad comparison — it is a list of specific features with concrete developer use cases. Firefox DevTools advantagesCSS Grid inspector: Firefox's grid overlay is more detailed than Chrome's. It labels grid lines and shows grid area names visually. If you debug complex CSS Grid layouts, this matters.JavaScript profiler: Firefox's profiler UI shows call tree, flame chart, and allocations in
RSS Readers vs Firefox News Extensions: Which to Use for Following Websites
RSS readers have been around since the early 2000s. The format never died — it just moved to the background. If you want to follow websites without social media algorithms or email newsletters, RSS remains the best tool.For people who want headlines without managing a full RSS reader, there is a lighter option. Full RSS readers (Feedly, Inoreader, NewsBlur)What they do:Full article management with read/unread trackingFolder organization across dozens or hundreds of feedsArticle searchCross-
Grammarly Alternatives for Firefox: Local Grammar Checking Without Cloud Processing
Grammarly is the market-leading grammar tool. It has 30 million daily active users. If you have used grammar checking in the browser, you have probably used Grammarly.The core product requires installing a browser extension that reads your keystrokes and sends text to Grammarly's servers for analysis. This is how it works — cloud processing enables their AI model to run. It is also documented in their privacy policy.For users who want grammar checking without cloud processing, here are the alter
5 Paid Tools I Replaced with Free Firefox Extensions (No Subscriptions, No Cloud)
I went through my subscriptions list recently and noticed a pattern: several tools I pay monthly for do things that Firefox extensions can handle for free, without accounts, without data leaving my machine.Here is what I replaced. Grammarly → AI Writing Assistant for FirefoxWhat I was paying: $12/month for Grammarly PremiumWhat it replaced: grammar checking, text rewriting, sentence simplificationThe difference: Grammarly processes your text on their servers (documented in their privacy pol
GPT Image 2.6: Build a Validated Native GIF Pipeline
GPT Image 2.6 adds native GIF output to an image API, but “the endpoint returned 200” is not a useful definition of success. For animated product assets—reaction stickers, onboarding mascots, or status illustrations—the real requirement is usually: animate this character without silently changing its identity.This tutorial builds a small two-stage pipeline around that requirement:approve a static character reference;generate an action GIF, validate it, and store it with an audit record.The appro
Tab Manager vs Firefox Multi-Account Containers: Different Tools for Different Problems
Firefox Multi-Account Containers is a built-in Firefox feature that separates browser sessions into isolated containers. Each container has its own cookies, storage, and login state.Tab Manager and Session Saver for Firefox solves a different problem: saving and restoring named sets of tabs across sessions.They are not competing tools — they solve different problems. Here is when to use each. Firefox Multi-Account ContainersWhat it does:Isolates cookies and sessions by containerEach contain
Why Your Agent-Generated Video Frames Are Silently Corrupt (and How TypeScript Can't Save You)
At 3:14 AM on a Tuesday, our video rendering pipeline started producing corrupted timelines. Agents generated frames with IDs like Frame:Intro, frame:intro, and frame:intro (trailing space). The renderer successfully produced videos. The artifact store indexed them. The timeline service disagreed about which frames existed. By morning, 40% of videos had missing transitions, and customer support was fielding complaints about "jumpy" output.The root cause wasn't the agent. It was an architectural
How to Measure Cranial Symmetry, FWHR, and Canthal Tilt in JavaScript (478 Landmarks)
When developing computer-vision applications for facial anthropometry, developers often default to heavy Python backend pipelines running OpenCV or PyTorch on centralized cloud GPU clusters.However, modern WebAssembly (WASM) and WebGL allow us to execute dense 478-point cranial photogrammetry directly in the client browser with zero server uploads and sub-50ms latency.Here is a breakdown of the mathematical models and topology mappings used to compute cranial symmetry, FWHR, and canthal tilt ent
Voice Notes in Firefox vs Otter.ai: When You Need a Recorder, Not a Transcription Service
Otter.ai has become the standard for in-meeting transcription. Fireflies, Grain, and several other tools follow the same model: record + transcribe, store in cloud, searchable across all your meetings.For simple voice memos — not meeting transcription, but quick notes to yourself — this is more infrastructure than you need.Here is the distinction and when each approach makes sense. Meeting transcription tools (Otter, Fireflies, Grain)What they do:Record audio + generate automatic transcript
TypeScript `Map` and `Set` Iteration in 2026: Why `downlevelIteration` Still Breaks Production Builds
TypeScript Map and Set Iteration in 2026: Why downlevelIteration Still Breaks Production BuildsThis article was written with the assistance of AI, under human supervision and review.TypeScript's downlevelIteration flag determines how the compiler transpiles Map, Set, and array iteration when targeting older JavaScript runtimes. Without it, production builds silently produce broken code that crashes on iterables at runtime. The default behavior downlevels for...of loops to index-based itera
Building 100% Client-Side Web Utilities: Solving Thermal Label Geometry & Stoichiometric Syringe Math
When building client-side developer and consumer utilities, the biggest engineering trap is relying on server-side microservices for operations that modern browsers can execute in local memory. Handling sensitive user files—like shipping manifests with customer delivery addresses, or private dosage worksheets—should never require an API upload. Over the past week, I engineered specialized, zero-backend presets on ZeroBloatTools to solve two challenging browser-side mathematical problems: Direct
I Turned My Portfolio Into a Desktop You Can Actually Use 🖥️
Originally published on https://shubham-works.hashnode.dev.Drag windows. Open a Terminal. Travel back to 1995. Beat a global high score. It's still my portfolio. You just get to play with it.🔗 Try it live → shubhamworks.vercel.app ⚡ TL;DRA portfolio built as an interactive desktop on computers and a Home Screen on phonesNext.js App Router + TypeScript (strict) + plain CSS. No Tailwind, no UI libraryA real genie minimize effect that I like the mostA global top score you can't fake by sending
Build an online code editor in React with a Run button (and keep your API key off the browser)
You've seen the demo: a code editor in the browser, a language menu, a Run button, and the program's output underneath. Most tutorials for it take one of two shortcuts. Some call Judge0 on RapidAPI straight from React, with the key in a REACT_APP_ variable. Others post the code to the public Piston API. Both break:A key in a REACT_APP_ or VITE_ variable is built into the JavaScript your visitors download. Anyone can copy it from the page and spend your runs.The public Piston API has been whiteli
I Finally Made Money From Something I Built ($0 to $152)
I've been building side projects on weekends next to my job for years. Until this week every single one of them made $0. Not anymore haha. What I builtDetent is a React component library. The components install with shadcn and take your theme, so they drop into an existing app without fighting your styles. Some are free, and there's one paid tier with full blocks like onboarding flows and a support inbox. What happenedI posted a 20 second video of the onboarding block on X with one lin
Building and Deploying a Document Change Workflow with React, NestJS, and PostgreSQL
A document update becomes more complicated when a team needs to explain who requested it, why it was necessary, who approved it, and what changed between versions.I recently led development of a company platform built around that workflow. I wrote the project documentation and implemented both the frontend and backend, with support from my team.The platform brings together project documentation, change tickets, review, publication, version comparison, attachments, and notifications.These are som
The Discount Field Refuses Silently: 22 Values Typed Into the Invoice Maker, 12 That Took Effect and 10 That Did Not
I work on OnePassApps, so this is our own product and our own build. Every number below was measured on the live Invoice Maker today, in the visible Chrome on our own machine, signed out, with no account.The Invoice Maker has two discount modes - Percent and Amount - and a field that takes a number in each. What I did not expect was what happens when the number is not one the app can use.There is no error, no warning and no red state. The value is simply not applied. What I typedOne invoice
Voice Notes for Firefox: Local Audio Recording Without the Cloud
I take notes by typing. The problem is that typing is slow and breaks flow when I am in the middle of thinking through something. I wanted a faster way to capture a thought without leaving the browser.Voice notes turned out to be that faster way. What Voice Notes and Audio Recorder doesAdds a voice recorder to Firefox. Click the extension icon, record, stop. The audio is saved. Download it as an MP3 when you need it.That is the entire interface. No transcription step, no cloud processing, n
NightOwl: Automatic Dark Mode for Every Website in Firefox
Dark mode is inconsistently supported. Some sites have it; most don't. The ones that do require three clicks to find. The ones that don't leave you staring at a white background at 11pm.NightOwl fixes this by applying dark mode everywhere, automatically. What NightOwl doesNightOwl is a Firefox extension that enables dark mode on every website. You don't configure anything. Install it, and every site you open gets a dark theme — including sites that have never added dark mode support.It also
Tab Manager and Session Saver: Solving the Open-Tabs Problem in Firefox
Too many tabs open. Everyone has this problem. The mental overhead of planning to come back to things later turns into 40 open tabs slowing down the browser.The real problem is not tabs. It is the lack of a save-and-return workflow. What Tab Manager and Session Saver doesSaves your current open tabs as a named session. One click. When you want them back, restore the session with one click. Each session has a name you give it — project research, reading list, work context.Sessions persist ac