🌍 TechCrunch

Social media addiction lawsuit against Meta is dropped

A closely watched social media addiction lawsuit that had been set to go to trial next week has been dropped after the plaintiff voluntarily dismissed his claims against Meta, leaving none of the major tech companies facing trial in the case.
🌍 Dev.to

The Backfill Pattern: Adding Required Columns Without Downtime

Adding a required column to a table sounds like the simplest task in the world. Then you try it on a table that's already in production, with code writing to it every second, and you find out why it isn't. There are two ways people usually try this, and both break. Add the column as NOT NULL right away, and the migration fails outright, or it locks the table while it scans millions of existing rows that have no value to give it. Add it as nullable instead and move on, and nothing enfo...
Why Your Unit Tests Aren't Enough (And How to Break Your Own API)
🌍 Dev.to

Why Your Unit Tests Aren't Enough (And How to Break Your Own API)

Stop testing the happy path. Learn how to use property-based testing and Schemathesis to automate chaos and break your API before your users do The Problem with Manual Testing We’ve all been there. You finish building a new API endpoint, fire off a perfectly formatted JSON payload, and get a beautiful 200 OK . You write a few unit tests covering the expected inputs, watch the green checkmarks light up in your CI pipeline, and confidently merge the pull request. Then the code ...
🌍 Dev.to

Software Is Cheap. Proof Is Not.

AI has made a working demo radically cheaper. That is useful. It is also dangerous, because a plausible interface can now create the feeling of progress long before there is evidence of a product. At App Foundry, we treat generation as the easy part. The hard part is deciding what deserves to exist, turning evidence into a coherent product contract, and proving the live journey as a stranger would experience it. A demo is not a product A prototype can prove that familiar pa...
🌍 Dev.to

Understanding Next.js Page Caching (with a real example)

Caching can be a tricky topic, especially when pages don’t update the way you expect. I recently ran into an interesting issue while working on the /writing page of my site. Whenever I added or updated articles, the changes did not show immediately. Oddly enough, the individual article pages updated as expected, but the listing page stayed stale. After some digging, I realized this was not a bug. It was Next.js doing exactly what it is supposed to . How Next.js caching works ...
🌍 Dev.to

citesure 0.5.17: soft-check ORCID iDs before you ship

Bibliographies increasingly carry ORCID iDs. LLM drafts also invent them. citesure 0.5.17 treats ORCID like other soft identifiers: validate the shape, resolve the public record, and warn when the listed author is clearly wrong. What it does Offline ISO 7064 mod 11-2 checksum ( citesure lint-orcids ) Online public API person resolve + author-name soft-match ( citesure orcid ) Disk-cached person records; MCP tool citesure_orcid for agents Domain pack orcid-auth...
🌍 Dev.to

Enforcing Content Tone With a Lint That Fails the Build

Introduction I run about twenty static sites on an automated pipeline. Article data lives in JSON, and a dependency-free build.js emits the HTML. Since updates run unattended, most of the writing is done by machines too. That created a problem I did not anticipate: tone drifted. I had a rule that these sites use no emoji. Yet every run slipped one in somewhere. A heading here, an FAQ answer there. I would remove them, and the next day they showed up somewhere else. Trying to hold a...
🌍 Dev.to

Expiring Content: Put the Deadline in the Data, Not the Prose

Introduction I run several sites that publish time-limited information: Kindle manga sales, grocery and household deals. Everything on them expires . That creates a structural weakness. Expired deals left on the page erode trust in the whole site. A reader clicks a link labeled "through July 31" and lands on a full-price page. After that happens a couple of times, they stop coming back. Removing expired entries by hand does not scale; the more articles you have, the worse it gets. S...
🌍 Dev.to

Implementing UUID v7 by hand: time-sortable primary keys (and the same-millisecond trap)

Random UUID v4 makes a poor primary key: values land all over the index, so B-tree inserts scatter across pages and page splits go up. UUID v7 puts a millisecond timestamp in the leading bits (standardized in RFC 9562), so generation order equals sort order and you get locality back. I needed a UUID generator that runs entirely in the browser, and while building it I implemented v7 by hand instead of pulling in a library. Here is the layout, the implementation, the trap I hit, and when each...
🌍 Dev.to

How Reading a Design Patterns Book Led Me to Audit My Rust Framework with UML and Merise

I was reading a design patterns book. I got to the UML class diagrams — and I stopped. Because the diagram on the page was describing something Rust already says in its own syntax. A struct is a class. Option<T> is a 0..1 association. Vec<T> is 1..N . Ownership is composition. The formalism I was looking at, drawn as boxes and diamonds, was the same information the compiler already had — just in a different notation. Which led to an uncomfortable thought. If the type s...
🌍 Dev.to

Automate FOMC and CPI Alerts with n8n and a Free Economic Calendar API

If you trade — or just hold anything denominated in dollars — you already know the drill: FOMC decisions, CPI prints, and NFP releases move markets in seconds, and the only warning you get is whatever tab you happened to leave open. This post walks through a small n8n workflow that polls an economic calendar every morning and pushes high-impact USD events straight to Telegram. Total build time: about 15 minutes. Total cost: $0 on free tiers. The problem with checking ForexFactory man...
🌍 Dev.to

My app's anti-theft feature locked every user out

A real incident from the finance app I build solo. The security design was textbook. That's exactly why it bit me. The textbook setup Short-lived access token, long-lived rotating refresh token. Every time the client refreshes: It presents its refresh token. The server verifies it, revokes it , and issues a brand-new access + refresh pair. The old refresh token is now dead — single use. And the part everyone recommends (OWASP calls it refresh-token reuse detec...
🌍 Dev.to

Your budgeting app is lying to you about last month

I build a multi-currency personal-finance app. This is one of the first bugs I had to design my way out of — and it's one almost every multi-currency app I've tried still has. The symptom You spent 200 zł on groceries in March. Your base currency is euros. In March the app showed that as, say, €46. You open the app in July and that same March transaction now reads €43 — even though nothing about March changed. Multiply that across every foreign transaction and your "total s...
Open Inference Needs More Than Open Weights
🌍 HackerNoon

Open Inference Needs More Than Open Weights

Sovereign Inference is an open protocol for routing paid AI inference across providers, verifying receipts, and serving models from local hardware.