DevIdiot!
An allowlist checks the address. These $126M in withdrawals all went to approved ones.
What happenedOn 1 and 2 November 2026, about $126 million in USDC left accounts at Kraken, Crypto.com and OKX, according to Bitquery's revised count from 5 November (17 wallets over 28 hours). Earlier reports gave $108.8 million and 15 wallets. Nothing on chain shows an exchange was breached; the money left through ordinary withdrawals. How the attackers got access has not been made public.Two details from the reporting matter for anyone who writes withdrawal logic:Ledger Insights describe
AI + Three.js: Building a Physics Playground with Compound Colliders
Try the interactive demo: https://vorodis2.com/_pyramid/Build a pyramid, knock it down, drag objects, and explore the collision shapes.Source code: https://github.com/vorodis2/pyramid A simple idea that grewI started with a simple task: build a pyramid of boxes and hit it with a ball.After more than 10 years of developing interactive 3D applications, I wanted to explore how AI could change my workflow. Piramidka became my testing ground: a browser physics playground built with Three.js and Oi
Online multiplayer with no game server: WebRTC invite links and a browser as referee
PlayTrova is a free games site I run as a fully static Next.js site, with no backend at all. I still wanted the board games to have the one feature families actually ask for: send a link, play together. No accounts, no lobby, and no server to pay for or keep alive.Today 12 of the turn-based games, including Checkers, Four in a Row, Reversi and Sea Battle, can be played online that way. Here's how it works, including the parts I'd change if people were playing for prizes.Transparency note: PlayTr
Building a Data-Driven Football Prediction Engine (MeritPredict Alternative)
Millions of football fans search for reliable match forecasts every weekend. Traditionally, many have relied on legacy tipster platforms like Meritpredict. But as developers and data enthusiasts, we know that human intuition doesn't scale. Data, mathematics, and machine learning do.In this post, I want to break down how my team and I built a programmatic, AI-driven sports analytics platform to serve as a modern MeritPredict alternative. I'll walk you through our tech stack, our probability model
Svelte for Beginners: Build Fast Websites With Less Code and No Virtual DOM
Svelte is a frontend framework with a different idea from React or Vue: instead of doing most of the work in the browser while your app runs, Svelte does the work at build time. It compiles your components into small, efficient JavaScript before your site ever reaches a visitor. The result is usually a smaller bundle and a fast page, with less code for you to write.How does it work? You write a component in a single file with three parts: a script for your logic, markup for what shows on the pag
How I Added WebMCP to a Collaborative Sheet Music Editor
"Rewrite these two bars, then let me hear them."That is a reasonable request to make while working on a score. For a browser agent, though, the visible page is a difficult interface: notes are SVG shapes, several voices can occupy the same beat, and a small change in duration can break the measure.I build ScoreTail, a browser-based sheet music editor with real-time collaboration. I recently added WebMCP tools so an agent can read and edit the score the musician already has open.The interesting w
Writing verifiable facts for 118 browser games found 9 bugs in my own code
I run a free browser-games site with a few hundred HTML5 games, and most of them are originals I wrote or adapted myself. The pages for them were fine: a title, a description, controls, a few paragraphs. They were also forgettable, and nothing on them was something only I could say.So I added one section to every game page: "Inside : what we checked". It holds a method line, two real screenshots, and four to six facts about the game. The rule is strict, and it turned out to be an excellent bug f
How I Run Pandoc's WebAssembly Build Inside a Browser Extension (Offline Word-to-LaTeX)
The problemI once lost hours reformatting a Word manuscript into LaTeX, and I didn'twant to upload an unpublished paper to a random converter website. Pandochandles this conversion very well, but it means installing a command-linetool, which most people writing papers won't do.So I wanted Pandoc's engine with no install, no upload, and no server. Theresult is Word to LaTeX (Offline),a browser extension that runs Pandoc locally through WebAssembly. Why WebAssembly instead of a serverPr
Pocket shut down. Its export is five CSV columns, and this is how I import them
Pocket closed on July 8, 2025, and its exports could be downloaded until October 8, 2025. If you got yours, you have a CSV file, and that file is what is left of everything you saved there.I built KeepFinding, a read-later app, and its import reads that file as it is. Here is what is actually in the Pocket export and the Raindrop.io one, and what my importer does with each column. What is in a Pocket exportPocket's download may be a .zip. The data is the .csv inside, and if there are severa
Get Expert Answers to Your StackOverflow Questions
Stack Overflow is one of the most popular online platforms where developers can ask technical questions, share knowledge, and find solutions to programming challenges. Whether you are a beginner learning web development or an experienced software engineer, getting expert answers to your Stack Overflow questions can help you solve complex coding problems efficiently.**web development **services at dot simplify. Ask Clear and Specific QuestionsThe first step towards getting expert answers is to fr
Making Immersive LLM Chat Experiences More Accessible
I have had the privilege of helping to improve the accessibility of multiple immersive LLM chat experiences in the course of my career. Now I want to share this knowledge with you.Accessibility is a core part of a functional digital experience. As the LLM chat pattern continues to spread like wildfire across the web, we risk excluding people if these experiences are not built with accessibility as a core consideration. It is also worth re-mentioning what “exclusion” means here: It’s the loss of
LifeOS: Building and Shipping a Full-Stack App the DevOps Way
IntroductionI built LifeOS because I wanted one place for my goals, the projects that move them forward, and the tasks I need to do today. Most apps I tried did one of those well and ignored the other two.It started as a frontend app and it's now a React app having a FastAPI backend in one Docker container, with Postgres on Supabase, authentication through Firebase, and a GitHub Actions pipeline that tests everything and pushes the image to GitHub Container Registry. Render pulls that imag
Automating the AWS Console with an AI Agent: Everything Worked Except Four Save Buttons
What I didAs part of a server migration, I let an AI agent drive its built-in browser against the AWS Lightsail console and a payment provider's admin panel. The boundary between "safe to delegate" and "a human must click this" turned out to be much sharper than I expected, so here is a record of what worked, what got rejected, and why. What workedSurprisingly many operations went through end to end:Instance creation: platform tab → blueprint → plan radio button → name field → create
Add AI video generation to a Next.js app: route handlers, spend caps, polling and webhooks
Disclosure: I work on Revana, a pay-as-you-go API for image and video models. The code uses its SDK (npm install revana, MIT) and REST API, but the structure applies to any video API you put behind a web app.Putting a "Generate video" button in a Next.js app sounds like one fetch. In practice video generation has three properties that shape the whole design:It's slow. A 5-second clip takes one to several minutes. A route handler that waits for it will hit your platform's function time limit, and
Sixty-three of our pages are one 208-line component, and seven of the eight routes behind them are one-liners
Nakodo publishes 76 pages. 63 of them come out of one React component, ContentPage, which is 208 lines including three exported helpers. The routes that use it look like this, and seven of the eight are this short:export default async function Page({ params }: { params: Promise<{ slug: string }> }) { return <ContentPage entry={requireEntry("guide", (await params).slug)} />;}Guides, YouTube niches, Instagram niches, TikTok niches, audience pages, competitor comparisons and blog posts
Zooming a web editor without losing your place
Put your cursor over a small piece of text in an editor and zoom in. You should be able to keep looking at the same text.It's a small test, but it catches a surprising amount of unfinished zoom behavior. The percentage changes, the document gets bigger, and the detail you wanted to inspect slides somewhere else.I build Repceipt, a receipt editor that runs in the browser. Receipts have plenty of small text packed into a narrow space. Zooming in on a price or a line of text needs to keep that deta
Your Chevron Looks Fine. Your Button Has No Name.
A chevron can be perfectly aligned, beautifully drawn, and completely unhelpful when its button receives keyboard focus.You see a control that opens something. Assistive technology needs a name that explains what that control does.That gap is easy to miss in a screenshot review. It is also easy to repeat across an entire application when the button lives inside a reusable component.Before polishing another icon, inspect the name of the button around it. A real report, a familiar integration
Building Calculators That Show Their Own Formula (with Dynamic OG Images in Next.js)
Most ROI calculators end in a pitch. The number is a black box. I wanted the opposite: a calculator that shows the formula next to the result, so a reader can check the math, and a crawler can read a worked example without running the form.These are seven free planning calculators for service businesses. No signup. Nothing is saved unless someone emails themselves the estimate. They live at keencraft.tech/tools. Pure functions for the mathEach formula lives in a small function, separate fro
Our developer-only page is a prerendered 404 served from the edge cache, and the only part of it that shipped is its name
PubTrivia has a page I use for judging the bits of the product that are purely visual: the mascot, the celebration effects, the player screens and the host's big screen, all on one scrolling page with made-up data so I can compare them side by side without starting a quiz.It is not supposed to exist in production, and the way it does not exist is one line:export const metadata: Metadata = { title: 'Mascot and effects lab', robots: { index: false, follow: false },}export default function LabPag
There is not one pixel size on our big screen: 128 container-query values, and the same component is a card on our homepage
PubTrivia has a screen that goes on a pub television. The host runs the quiz from a laptop, mirrors or screen-shares it to whatever is on the wall, and the room reads the question off it from twenty feet away. The same component also appears, scaled down to about 300 pixels wide, inside the homepage: the demo there is not a screenshot or a video, it is the real host view with a made-up round in it.One component, two sizes two orders of magnitude apart, and no media queries. The trick is that the