Search Results for:

My XLSX converter shipped dates as five-digit numbers — Excel stores dates as serials, not values

My XLSX converter shipped dates as five-digit numbers โ€” Excel stores dates as serials, not values
A timesheet workbook came through my converter and the Markdown table was nearly perfect — except the Date column read 45291, 45292, 45293 . The human's sheet showed "12/31/2023, 01/01/2024, 01/02/2024". Mine showed numbers an agent can't reason about. Excel doesn't store dates at all. Every date is a serial number: days elapsed since 1900-01-01, with times as the fractional part. 45366.5 is noon on 2024-03-15. The human-readable date is purely the cell's number format string — yyyy-mm-dd , [$-409]mmmm d, yyyy , whatever the author picked. Read the raw value from the XML and you get the serial. The trap has teeth beyond dates: A cell holding 0.0833 with format [h]:mm is "2:00" — a duration in an hours-worked column. A naive converter dumps 0.0833 into the table. Rounds it, even. The same workbook may use the 1904 date system (old Mac files), which shifts every serial by exactly 1,462 days. Convert blind and every date drifts four years. Excel...

RaaS — Referral-as-a-Service API for x402 Payments on Base

⚡ INAPP
🔗 Referral-as-a-Service: short-link referrals that turn verified x402 payments on Base into service credits. Provision a project with one paid x402 call — POST https://x402.freeq.one/tools/raas_project_provision at $0.05 in USDC on Base, one-time — and it returns a project_id and an API key. Mint links at freeq.one/{code} that route traffic to any x402-gateway tool: link creation and stats are free with that key, and referrers are credited automatically when referred settlements verify on-chain. Credit-only — rewards are redeemable for API access, never USDC payouts. How it works RaaS rides on x402-gateway, where every tool settles per-call in USDC on Base. RaaS turns those payments into a referral channel: 1. Provision a project — $0.05, one-time. POST https://x402.freeq.one/tools/raas_project_provision over x402 (USDC on Base, Coinbase CDP settlement) returns a project_id and an apiKey (shown once, stored hashed server-side). 2. Mint referral links — free wit...

NYC’s Click-to-Cancel Rule forces single‑click checkout exits

NYCโ€™s Click-to-Cancel Rule forces singleโ€‘click checkout exits
Starting today, any online checkout in our city has to hand shoppers a single‑click “cancel” button before they finish the purchase. It’s a tiny UI change that feels like a huge win for anyone who’s ever been stuck in a subscription maze. I’ve seen the same “just one more step” page pop up over and over, and it’s frustrating enough to make me skip the checkout entirely. The rule is simple: if you can sign up with a click, you must be able to back out with one. No extra forms, no hidden confirmation emails, no “call us to cancel” dead ends. For businesses that rely on sticky subscriptions, that means re‑thinking the friction they’ve deliberately built into the exit path. Some will see it as an annoying compliance headache; others might actually appreciate the chance to keep a customer’s goodwill by making the experience transparent. What does that mean for conversion rates, support tickets, and the bottom line? Will a cleaner exit flow drive more people to try a service, or wil...

Total Annihilation Rebuilt runs natively on modern PCs

Total Annihilation Rebuilt runs natively on modern PCs
After 25 years, the classic real‑time strategy game finally runs natively on the hardware we use every day, and watching it in a modern browser feels less like nostalgia and more like a litmus test for what a remake should actually be. The original code has been lifted into a fresh, MIT‑licensed engine that anyone can pull, read, and tweak. That alone makes the experience feel less like a museum piece and more like a sandbox. You get the three demo missions that shipped with the 1998 release, but they now sit on a stack that talks to Chrome, Edge or Safari as easily as a JavaScript app. No emulators, no weird compatibility layers—just a keyboard, a mouse, and a page load. The engine’s source is laid out so clearly that you can start swapping out pathfinding or graphics without digging through a maze of proprietary DLLs. What does that openness reveal about the anatomy of a good remake? I’ll walk through the quirks that survived the transition, the parts that fell apart, and th...

My LLM router routed by prompt length — a 12-word request broke a production agent loop

My LLM router routed by prompt length โ€” a 12-word request broke a production agent loop
When I built my own OpenAI-compatible chat gateway, I needed routing tiers: cheap models for trivial calls, premium ones for real reasoning. The first heuristic was embarrassingly simple — total prompt length. Under ~500 characters, go eco tier; above, go premium. It passed every test I wrote. Then an agent in production started looping. Same request, twenty times, never converging. I pulled its trace: the user prompt was tiny — "summarize this and call the report tool" — a dozen words. But the request carried six tool definitions and a JSON-mode flag. My router saw a short prompt and shipped it to the cheapest model in the fleet, which was fine at prose but unreliable at tool calls. Half the time it answered in natural language instead of invoking anything, the agent treated that as failure, retried, and looped. The lesson: prompt length measures cost, not capability. A request with tool definitions, structured-output constraints, or image inputs has a hard capability flo...

My webhook catcher hid the bug I built it to find — 100-event buffer kept the newest retries

My webhook catcher hid the bug I built it to find โ€” 100-event buffer kept the newest retries
I built a throwaway webhook receiver because I was tired of spinning up tunnel daemons just to inspect one raw payload. It hands you a temporary HTTPS URL, records every POST that hits it, and lets you read the events back for 24 hours — I ended up packaging it as freeq.one/tools/webhook_catch.html. Last week it nearly cost me an afternoon. A repo's push events were feeding an internal handler, and the handler kept silently ignoring its deliveries. So I pointed a catch URL at the same events to see exactly what the sender was emitting. A big force-push landed — a few hundred commits crammed into one update — and the events burst in over roughly a minute. When I read the catch URL back, the first stored event was already in the middle of the burst. The hook's initial ping, which contains the configuration echo my handler depended on, wasn't there at all. I spent about an hour assuming the sender never delivered it: re-read the sender's webhook docs, checked my DNS, re...

How to Identify and Manage Yandex Bot Traffic on Your Site

How to Identify and Manage Yandex Bot Traffic on Your Site
Most site owners lump Yandex bot hits together with regular visitors, assuming they’ll blend into the usual traffic numbers. In reality those crawlers can inflate page‑view stats, hide genuine engagement drops, and chew up bandwidth that could be serving real users. I’ve seen dashboards where a sudden spike turned out to be nothing more than a batch of Yandex’s verification requests. The site I’m looking at runs a security service that drops a “you’re not a bot” check before letting anyone through. Every time the service flags a request, it serves a tiny HTML page that says “verifying you are not a bot.” Those pages generate hits that look identical to a normal page view in analytics, but they never translate into a session, a conversion, or any meaningful interaction. If you’re trying to understand real user behavior, you need to separate those verification hits from genuine traffic. The next few lines show where the data diverges and how you can filter out the noise without ...

Heavenly Irresistibly Creamy Peanut Butter Frosting

Heavenly Irresistibly Creamy Peanut Butter Frosting
Creamy Peanut Butter Frosting Prep: 5 mins | Total: 5 mins | Serves: ['2', '2.5 cups'] | Cuisine: American Silky peanut butter frosting that melts on your tongue. I whipped the **Creamy Peanut Butter Frosting** for a batch of chocolate cupcakes and the result was pure indulgence. The combination of softened unsalted butter and a full cup of creamy peanut butter creates a base that’s both rich and airy. Add 1 cup of confectioners’ sugar, a splash of heavy cream, a dash of vanilla, and just a pinch of salt, and the frosting whips up smooth in minutes. Because the cream is at room temperature, the mixture stays glossy and spreads effortlessly over brownies or a layered chocolate cake. You’ll notice the subtle sweetness balanced by the nutty depth, making each bite feel like a mini celebration. The **Creamy Peanut Butter Frosting** is ready in just five minutes, and it tu...

ExxonMobil internal memo details climate deception in MA suit

ExxonMobil internal memo details climate deception in MA suit
A freshly unsealed internal memo shows Exxon’s own scientists telling colleagues that the company’s 10,000‑barrel‑per‑day climate‑target was “completely impossible to achieve.” The same scientists warned senior managers weeks before Exxon rolled out the public promise, a detail that flies in the face of the narrative the firm has been projecting for years. The memo is part of a cache of documents that surfaced quietly this spring as a by‑product of Massachusetts’ 2019 lawsuit against ExxonMobil. The papers were first referenced in a Wall Street Journal story last year, but they never made a splash until now. Inside, researchers describe the target as a PR line rather than a realistic operational goal, and they note that the warning was circulated internally well before the press release went out. If you think the 1988 Hansen testimony marked the moment the world started taking climate change seriously, this memo suggests Exxon was already aware that its own emissions‑reduction...

My changelog generator silently dropped the oldest 30 commits — shallow clones hide the boundary

My changelog generator silently dropped the oldest 30 commits โ€” shallow clones hide the boundary
An agent building release notes reported something quietly horrifying: their library's v3.2 changelog began at a commit dated three weeks after the v3.1 tag. The oldest 30 commits of the range just weren't there. No error, no warning — a clean-looking changelog with a hole at the bottom. The tool walks base..target in a git repo and turns the commits into structured release notes; I originally wrote that walker for my own repos, and it now powers my Git Changelog Generator API ( https://x402.freeq.one/tools/git_changelog.html ). To keep cloning fast, I shallow-cloned with a depth heuristic — depth 100 covers most tag-to-tag ranges. But not this one. The base tag sat 130 commits back, outside the shallow clone. Git couldn't resolve the base SHA, and instead of failing loudly, my code used a fallback I'd written months earlier: if the base doesn't resolve, use the earliest commit we do have. The output looked complete. It wasn't. A confidence-preserving fall...