Developer Tools
Articles for developers: JSON, JWT, regex, Git, encoding, API debugging, and the online tools that speed them up. Practical write-ups focused on everyday engineering problems.
Loading...
Articles for developers: JSON, JWT, regex, Git, encoding, API debugging, and the online tools that speed them up. Practical write-ups focused on everyday engineering problems.
Loading...
GA4 Data API times out with DEADLINE_EXCEEDED after 60 seconds in a proxy environment, while curl works fine with the same proxy. The root cause is that the SDK uses gRPC under the hood, and grpc-js only reads lowercase grpc_proxy / https_proxy, making uppercase HTTPS_PROXY invisible to it. This article goes through the error phenomenon to source code layer by layer, providing a paired fix.
The Next.js site console randomly shows 'A tree hydrated but some attributes didn't match,' and the first page in cold cache is clean while subsequent pages always report it? The root cause is not in your components, but in the AdSense auto-ads loaded by GTM injecting scripts into the head before React hydration, colliding with the inline GTM script. This article explains the timing puzzle, a one-line fix, and diagnostic techniques using Playwright to capture the full error diff.
GitHub Actions build fails two seconds after starting at load metadata, reporting failed to fetch oauth token: connection reset by peer, with the error pointing to the FROM line in the Dockerfile. Don't change the code—this is an intermittent interruption in the cross-border link from overseas runners to the Alibaba Cloud ACR authentication service. This article provides criteria, a workflow with automatic retries, and a structural solution.
A supply chain attack on keyv and 10 related npm packages infected 434 packages with 2B+ monthly installs. The worm steals npm tokens, GitHub PATs, AWS credentials, Kubernetes secrets, and more. Plus: why the Airtable acquisition is the same risk in business clothes. Five things to do right now.
Same machine, same user, same global config. Two Claude Code windows running the same CLI — one worked, one didn't. The obvious suspect was the permission classifier, which really does block commands. But the cause sat a layer down: the daemon's plist was installed and never loaded, so every gateway-bound subcommand died while purely local ones printed fine. That half-working shape is what sells the permission theory. Full trace, including the hypothesis I got wrong by misreading my own logs.
70B on a single 4GB GPU, or small models at scale on the edge? AirLLM and Cloudflare show two roads to cheaper inference. A no-hype comparison of what each trades, and where each fits.
How to write a correct mcp.json for Claude Code, Cursor, VS Code and Claude Desktop: file locations, root keys, stdio vs HTTP transport, the #1 command/args mistake, and how to validate configs without committing API keys.
How much VRAM do I need to run a local LLM? This guide breaks down the four factors that decide it — weights, quantization, KV cache, and overhead — with a rule of thumb (0.6 GB per billion params at Q4_K_M), real examples (DeepSeek R1, Kimi K3), and the exact math from our free LLM VRAM calculator.
Three releases in one week—Reasonix, ds4, and Kimi K3 on AMD MI355X—all pointing in the same direction: LLMs are moving from cloud APIs to persistent local processes. Here's why it matters and what to do about it today.
GitHub shipped gh-stack, making stacked pull requests an official workflow. No more third-party tools, no more long-branch hell. Quickstart + gotchas inside.
Three lines of nginx config for real client IPs took down an entire VLESS node. This post breaks down PROXY protocol asymmetry, over-trusted real_ip ranges, and stream-vs-http module confusion — with working config templates and verification steps.
Regular expressions look intimidating at first glance, but mastering a small core syntax unlocks powerful text matching in every programming language and editor — this guide teaches the essentials through 10 real-world patterns you will reach for repeatedly.