DevIdiot!
How I generate Zip path puzzles that have exactly one solution
LinkedIn's daily Zip puzzle is simple to explain: draw one line through every cell of a grid, passing the numbered cells in order (1, 2, 3 …), never crossing a wall. Underneath, it's a classic problem: finding a Hamiltonian path that visits every cell exactly once.You only get one official puzzle a day, so I built a free Zip Unlimited with 480 boards from 5×5 to 8×8, plus a daily board that's the same for everyone. The hard part wasn't drawing lines. It was making sure every board has exactly on
Smaller Payloads, Runaway Agents, and TypeScript Compiling Itself
Signup here for the newsletter to get the weekly digest right into your inbox.Find the 12 highlighted links of weeklyfoo #161:Building an isolated preview for AI-generated HTMLby Keshav MalikA srcdoc iframe runs model-written HTML on your own origin, so a security engineer breaks the naive approach and rebuilds it with sandbox and a strict CSP🚀 Read it!, security, ai, htmlShipping 103,802 dots in 82 KBby LayersQuantized coordinates split into streams that expose repeated rows to Brotli, 63% smal
Fixing Laravel CORS Preflight Errors (No 'Access-Control-Allow-Origin' Header)
Everything works in Postman or Insomnia, but the moment your frontend application fires an axios or fetch request to your Laravel backend, the browser console throws a wall of red text:Access to fetch at 'http://localhost:8000/api/v1/bookings' from origin 'http://localhost:5173' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.Postman works because it is a desktop HTTP cl
Float to Int Conversion: Why Large Numbers Break
Quick Answer: Converting large floating-point numbers to integers is unpredictable across languages. While small decimals truncate their fractional parts cleanly, floats can represent magnitudes far exceeding fixed integer limits (like 10^20). Depending on whether you run Java, JavaScript, C, or Python, your runtime will silently clamp the value, truncate bits, trigger undefined behavior, or scale to arbitrary precision.Converting a decimal into an integer seems like one of the simplest operatio
The Seventeen Ways a Wall Can Repeat
I have been building a series of pages where the computer generates the pattern: tin-glazed tiles painted by rule, cut tile and poured cement, heraldry, knotwork, a piece that breaks another piece, and last time brick in raking light and Granada's green and blue. The tile walls in that run all repeat the same way. A square design is laid four times, mirrored or turned, and the wall is that block over and over. It worked for every wall so far, and it is one of seventeen.One sprig, the same seed,
Samsung Wallet sends USDC on Solana. Here's a 40-line script that tells which chain an address is for
The news, brieflyOn November 5, 2026, Samsung Wallet launched stablecoin accounts for eligible U.S. Galaxy users. The account holds USDC on Solana. Users can send it to other Samsung Wallet users or to "compatible external crypto wallets", and Bastion and Coinbase handle custody (The Block, Decrypt)."Compatible" is doing a lot of work there. USDC is issued on many chains, and each issuance is a separate token. Send Solana USDC to an Ethereum address and, at best, the wallet blocks you. Sen
A 100% coverage threshold that CI never ran
The core package in Styx has a 100% coverage threshold in its config. It turned out CI never ran coverage, so nothing enforced the number. The selector tests had quietly fallen short.The fix came in as a pull request. It added tests for the selector behaviour that was missing, and added one command to the CI matrix: pnpm -F @styx/core exec vitest run --coverage. After it, 664 tests pass with 1390 of 1390 statements and 1102 of 1102 branches covered.The part I like is what it did with the branche
Check if a date is a public holiday in any country via API
Checking if a Date is a Public Holiday in Any Country via APIAs developers, we often encounter scenarios where we need to check if today's date is a public holiday in any country. This can be particularly useful for applications such as scheduling tools, travel websites, or social media platforms that require users to know about upcoming holidays.However, this task can be time-consuming and labor-intensive if done manually, especially when dealing with multiple countries. In reality, most
I made every value in my templates say where it came from
In an early version of my framework, a template could say this:<p b-text="count"></p><button b-on-click="increment">+1</button>Short, readable, and no ceremony. In Brio 4.0 I changed it to this:<p b-text="$data.count"></p><button b-on-click="$data.count++">+1</button>Longer, and more to type. I did it on purpose, and I'm not sure everyone would agree, so here's the reasoning. What a bare name had to guessWhen you write count in a template, som
Safari Deletes Your LocalStorage After Seven Days, and the Clock Is Not the One You Think
The report is always some version of the same thing. It logged me out again. My draft is gone. The settings I picked went back to default. It worked last month.Nothing threw. Nothing is in your error tracker. The user is not doing anything unusual, and you cannot reproduce it, because on your machine it has never once happened. The ruleWebKit's tracking prevention page states it plainly:ITP deletes all cookies created in JavaScript and all other script-writeable storage after 7 days of no u
I built a macOS-style mini OS that runs inside a 3D monitor on my portfolio
Instead of a standard resume page, I embedded an interactive virtual desktop inside a 3D workstation monitor.Built with Three.js and CSS3DRendererFully interactive folders (About, Experience, Certs) with window controlsBackend powered by Django 5.2Try clicking around the monitor: https://ramesh13.online/aboutFeedback on the CSS3D interaction is welcome!
One screen in our app has eight empty states, and four of them are the same emptiness for four different reasons
The screen in Nakodo that shows a brand its conversations with creators has five views: Needs you, In progress, Introduced, Closed, All. It is behind the login, so you cannot look at it, which you can confirm in one line:$ curl -sI https://nakodo.app/campaigns/x/outreach | head -2HTTP/2 307location: /login?next=%2Fcampaigns%2Fx%2FoutreachWhat I can show you is the code, and the thing worth showing is not the table. It is the eight different ways this one screen says "there is nothing here", beca
Our getting-started checklist stores no progress, and three of its five steps are asking about different campaigns
Nakodo has one screen behind the login that a new account lands on, and at the bottom of it, until it is no longer true, there is a checklist: start a campaign, review and launch, wait while Nakodo finds creators, approve the first emails. A progress bar, a tick, one hint under whichever step is next.It is 118 lines in src/app/(app)/campaigns/checklist.tsx, it is used in exactly one place, and there is no table behind it. No onboarding_steps rows, no completed_at columns, no dismiss button, noth
Our three clock components return null on the server on purpose, and one of the three has no importers
Nakodo emails creators on a brand's behalf, and it sends those emails in the creator's working hours, not the brand's. That is published on how it works: weekdays between 9am and 7:30pm where the recipient is. So a screen in the app has to answer a question with two correct answers in it. When is this going out? Tomorrow evening for you, early afternoon for them.Which means the server cannot render that sentence, because the server does not know what time it is where you are.src/components/local
Five notes tour the big card on our homepage, and two of the four places a note can sit have never rendered
Scroll down the Nakodo homepage to the big bordered card with a creator on it, called Open Rate Lab. Leave the pointer alone. After about a second the card starts explaining itself: a small dark note opens beside one of its lines, waits three seconds, closes, and the next one opens somewhere else. Five notes, then it stops and gets out of the way.That is 249 lines in src/app/(marketing)/showcase.tsx, and this post is what is in them. The card is the one place on the site where we show the produc
React Server Components Admin Dashboard: No Client Data Layer
An internal admin tool is the easiest place to stop building a client data layer. One viewer, no SEO, no public traffic, and a question that is always ‘what is the state right now’. For the admin of my PDF-verification SaaS I built a React Server Components admin dashboard that fetches nothing from the browser: no query cache, no fetch hooks, no chart library.The title says ‘no client data layer’, not ‘zero JavaScript’. The admin tree has five Server Component pages. Mutations and a few interact
We honour reduced motion in JavaScript and ignore it in CSS, and the three elements that prove it are all on the homepage
Two greps, one against the repository and one against the live stylesheet.# in the sourcegrep -rc 'reducedMotion\|prefers-reduced-motion' components | grep -v ':0'# components/FrothCameo.tsx:1# components/HostController.tsx:1# components/PlayerLobby.tsx:1# components/lab/EffectsLab.tsx:1# components/vfx/ParticleCanvas.tsx:1# components/player/PlayerShell.tsx:1# in what the browser actually getscurl -s https://pub-trivia.app/_next/static/chunks/2ox5qqp3hzrjs.css | grep -c 'prefers-reduced-motion'
Building a modern Blazor UI without leaving .NET: introducing RaxUI
Why I built itI'm a full-stack developer. My backends are .NET, and for years my frontends were React and Next.js.I tried Blazor more than once, because I wanted one platform from the database to the browser. Each time a project needed a modern, highly customized interface, I ended up reaching for React and its component ecosystem again.So I started building the components I was missing, in Blazor, with the look and the developer experience I was used to. That work became RaxUI. What
Our marketing homepage ships two canvas elements, and the animation loop they run stops itself when there is nothing to draw
Ask our homepage how many canvases it has:curl -s https://pub-trivia.app/ | grep -o '<canvas[^>]*>'# <canvas aria-hidden="true" class="pointer-events-none absolute inset-0 h-full w-full "># <canvas aria-hidden="true" class="pointer-events-none absolute inset-0 h-full w-full ">Two, on a marketing page, because the demos on the homepage are the product's own screens rather than screenshots, and the product's screens have an effects layer. This is a post about that layer: nine
Four mascots share one 397-line parts file, and five pints are sitting in our homepage markup
Ask our homepage how many mascots it is carrying:curl -s https://pub-trivia.app/ | grep -c 'viewBox="0 0 120 120"'# 5Five. Every mascot in this codebase is drawn on the same 120 by 120 grid, so that one grep finds all of them, and the homepage at pub-trivia.app is the only one of our 79 published pages that has any. I fetched all 79 from the sitemap to check: the other 78 have none.This is a post about what it costs to put a cartoon in a product, measured, including the part where four character