DevIdiot!
Your PDF Converter Should Not Need Your Files
Here is a question most people never ask when they use an online file converter: where does my file actually go?With most big converter sites, the answer is: onto a stranger's server. You upload a bank statement, a signed contract, a passport scan. It is processed somewhere, stored for some amount of time (the privacy policies use words like "temporarily" and "up to 24 hours"), and you download the result and hope the deletion promise is true.We built our converters at MakeHumanAI the other way
Why I Chose App Blocks Over Custom Pages for Shopify Tracking
When I first started helping a friend manage their Shopify store, I assumed the hardest part was driving initial traffic and getting that first sale. I was completely wrong. The real headache started after the checkout was complete. My inbox was suddenly flooded with "Where is my order?" (WISMO) emails. We were spending hours manually checking tracking numbers across different carrier websites and replying to anxious customers. It was exhausting, unscalable, and felt incredibly unprofessional. I
Taming Shopify Post-Purchase: Building a Custom Tracking Widget
When I first started helping merchants optimize their Shopify stores, I noticed a glaring gap in the customer journey. The checkout experience was polished, the product pages were beautiful, but the moment a customer clicked "Pay," they were thrown into a post-purchase black hole. I was struggling with the exact same issue in my own projects: a relentless flood of "Where is my order?" (WISMO) emails. It felt like all the hard work of converting a customer was being undone by a clunky, anxiety-in
Finding your Saturn return in JavaScript (and why retrograde makes it messy)
Astrologers talk about the "Saturn return": the moment Saturn comes back to the same position it had in the sky when you were born. Whatever you think of astrology, the question underneath it is a clean astronomy problem: on which dates does Saturn return to a given ecliptic longitude?I built a small browser calculator for it, and this post covers the part that surprised me: the obvious shortcut is wrong, and the correct answer sometimes has three dates instead of one. The shortcut that doe
From Spreadsheets to Code: Calculating True Etsy Margins
When I first started selling handcrafted goods on Etsy, I did what almost every new seller does: I opened a spreadsheet. I built a massive, 14-column monstrosity to track my costs, pricing, and expected profits. For the first few months, it felt fine. But as my catalog grew from 10 items to over 150, the spreadsheet became a fragile house of cards. One accidental keystroke in a formula, or a simple copy-paste error when duplicating a row, and my projected margins were completely wrong. The break
How I Built a JavaScript Engine to Calculate Etsy Fees
When I first started selling my handmade goods on Etsy, I thought I understood the fee structure. I figured it was a simple percentage cut, like most payment gateways. But after my first month, I looked at my payout and realized my margins were significantly lower than I had projected. I was losing money on items I thought were profitable.I started digging into the receipts. It wasn't just one fee; it was a stack of them. Listing fees, transaction fees, payment processing fees, and the looming t
SynthID remove vs. metadata: what's actually inside an AI image file (EXIF, XMP, C2PA)
If you've ever downloaded an image from an AI generator and opened it in exiftool, you've probably noticed the file carries a lot more than pixels. Generators, editors and even some phones now write provenance data into the file: software names, prompts, creation tools and, increasingly, signed C2PA manifests. A lot of the "synthid remove" searches I see from photographers and indie devs are really about this layer, so it's worth separating the two things clearly. Two different things: embe
15 pages declared lang="en". 75-98% of their characters were Han.
Fifteen pages told the browser they were English. Between 75% and 98% of their characters were Han.I only found it because I stopped checking meta tags and started counting characters. The pages had titles, descriptions, canonicals, one h1 each, valid JSON-LD — everything the usual audit looks at. The lang attribute was the one field nobody had ever verified against the body text, and on four domains it was wrong on every page I sampled. What I sampledI started with 40 domains. Twelve of th
Duplicate CSV Headers in the Browser: Three Naming Rules and Where They Disagree
I work on OnePassApps, so this is a measurement of our own product in the live app, not a review of someone else's code.A CSV with two headers that mean the same thing is an ordinary file, not an edge case. What happens next - which name survives, which name gets a suffix, and whether the app tells you - is where the interesting behaviour lives. I measured it in the live Data Studio on 4 November 2026.There are three places in that studio where a column name is decided, and as of this build they
Make Leave Unchanged Different From Clear This Order Note
An order update can omit a packing note because that field has not changed. If an adapter turns every missing note into an empty value, a later status update can erase the instruction the warehouse still needs.Treat field presence as part of the data contract. For the small example below, an omitted packingNote leaves the current value alone, a nonblank string replaces it, and null explicitly clears it. This is an example contract to agree with both systems, not a claim about a particular store
I default to Next.js for a reason that has almost nothing to do with performance
Framework choice is usually developer preference dressed up as strategy, and I say that as someone whose default has been Next.js for years. The reasons I would give another developer are not the reasons that matter to the person paying for the project, and the gap between those two lists is worth writing down, because the second list is the one that survives contact with a budget. The problem it solves is a rendering problem, not a framework problemA plain React application renders in the
Core Web Vitals in Next.js: A Practical Checklist for Fast Small-Business Sites
Most performance guides are written for huge apps with dedicated platform teams. But a lot of us spend our days building sites for plumbers, dentists, salons and law firms. Those sites are small, yet speed matters even more for them, because a visitor on a phone usually wants one thing: call, book, or get directions. If the page stalls, they hit back and tap the next result.This post is the checklist we use at CodeHunterz when we build or rescue a Next.js site for a local business. It focuses on
Building a Cyberpunk Password Analyzer & Generator with Real-Time Crack Speed Estimations
Hey everyone! 👋I recently built a client-side Cybersecurity Suite that combines password strength evaluation with real-time brute-force crack time estimations, alongside a seed-based secure password generator. 🛡️ Why I Built ThisMost password checkers just give a basic "Weak" or "Strong" label. I wanted to build an interactive tool that actually breaks down how long it would take to crack a password across different hardware architectures:Standard CPU (Single Thread)High-end GPU Rigs (e.g.,
AI-written styles typecheck. Some still render nothing
Box Kite's MCP server runs your AI assistant's props through the real styling engine mid-task, and names each value that would render nothing. Below: the mistakes it catches, a worked session with every answer pasted from the server, and what it can't know about your project. It documents @box-kite/mcp 2.2.12.The examples here are screenshots; they run live in the original article. The problemThree props an assistant wrote for a settings row, handed to the server:check_styles { "props": { "
Your PDF never leaves your browser: how I built 16 PDF tools with no uploads
Most "free PDF" sites work the same way: you upload your contract, they process it on a server, you download the result. It works, but your payslip or passport scan just took a trip to a stranger's machine.I wanted to see how far a browser can go on its own. The result is PDFixed: 16 PDF tools where the file never leaves your device. Here is how the main ones work, in case you want to build something similar. The stackpdf-lib to create, merge, split and rewrite PDFspdf.js to render pages on
Building a Federated Copilot: Part 6, Ionic React, Fingerprints and Persistent Sessions
After the browser produced a verified document-backed answer, the next requirement was a phone application that could demonstrate the integration without repeated deployment windows and several logins.The agreed target was Ionic React on a Pixel 6 Pro running Android 17, delivered directly as an APK. The owner wanted a remembered 30-day enrollment, fingerprint unlock, a new chat on every entry and access to supported documents inside the existing approved SharePoint site.This article describes b
Google Sheets is my favourite free backend
I made a small game for my daughter. It's called PoÄŤĂtadlo ("counter" in Czech), and it's a simple counting game that helps her learn the basics of math: adding and subtracting up to 20, ten questions, a timer and a trophy when she beats her record. It runs as a PWA on her iPad.After a few days I wanted to know how she actually uses it. How often does she play, which levels, how long does it take her, where does she make mistakes? And I wanted it as an email to me and my wife every evening, beca
Why We Ditched Low-Code Routers for Bare-Metal Node.js Edge Ingestion (~0.4ms Latency)
When you run ingestion infrastructure for multi-branch home service trade fleets and private equity roll-ups, webhook volume spikes during Monday morning ad bursts are brutal. For a long time, the default engineering shortcut for handling this was containerized low-code workflow tools like n8n or Make. They are fast to spin up and let you map schemas without writing raw code. But under heavy adversarial traffic, they hit a hard wall. Here is the technical post-mortem on why we completely strippe
WhatsApp Groups API: Create Groups, Invites & Broadcasts (Free)
WhatsApp Groups API: Create Groups, Invites & Broadcasts (Free)Groups are how communities and ops teams coordinate on WhatsApp. With Omdaa API you can create groups, manage participants, and fetch invite links — free forever.Series: Free Forever WhatsApp Dev What you can automateCreate a group with an initial participant listAdd / remove participantsFetch the invite linkSend group messagesDrive it from Cursor MCP tools Setupnpm install @omdaafreeapi/omdaa-api-clientexport OMD
Cursor MCP WhatsApp: 109 Free Tools (Wassenger Alternative)
Cursor MCP WhatsApp: 109 Free Tools (Wassenger Alternative)Want WhatsApp + Mail inside Cursor without an Enterprise MCP plan? Omdaa's free Cursor MCP plugin exposes 109 tools (v2.3.0) over Streamable HTTP — sessions, inbox, groups, bulk, webhooks, Omdaa AI, and Omdaa Mail.Series: Free Forever WhatsApp Dev · Install: cursor.directory/plugins/omdaa-api Why this matters in 2026AI editors are becoming the control plane. Instead of clicking dashboards, you tell the agent:“Create a WhatsApp