惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
GbyAI
GbyAI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
U
Unit 42
美团技术团队
NISL@THU
NISL@THU
C
Cisco Blogs
SecWiki News
SecWiki News
N
Netflix TechBlog - Medium
Forbes - Security
Forbes - Security
Cloudbric
Cloudbric
雷峰网
雷峰网
T
Tailwind CSS Blog
博客园 - 司徒正美
The Register - Security
The Register - Security
L
LangChain Blog
S
Security Affairs
Hacker News - Newest:
Hacker News - Newest: "LLM"
B
Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Threat Research - Cisco Blogs
I
InfoQ
S
Schneier on Security
L
Lohrmann on Cybersecurity
量子位
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Martin Fowler
Martin Fowler
Schneier on Security
Schneier on Security
F
Fortinet All Blogs
TaoSecurity Blog
TaoSecurity Blog
K
Kaspersky official blog
Google DeepMind News
Google DeepMind News
Cisco Talos Blog
Cisco Talos Blog
PCI Perspectives
PCI Perspectives
Attack and Defense Labs
Attack and Defense Labs
WordPress大学
WordPress大学
Microsoft Azure Blog
Microsoft Azure Blog
H
Help Net Security
Project Zero
Project Zero
The GitHub Blog
The GitHub Blog
D
Docker
N
News | PayPal Newsroom
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
H
Hacker News: Front Page
云风的 BLOG
云风的 BLOG
Microsoft Security Blog
Microsoft Security Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 聂微东
Webroot Blog
Webroot Blog
MongoDB | Blog
MongoDB | Blog

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
Luck == Opportunity Meets Preparation
Tawanda Nyahuye · 2026-06-16 · via DEV Community

There's a line usually pinned on the Roman philosopher Seneca: luck is what happens when preparation meets opportunity. People put it all over social media and like most things on social media, it gets repeated so often that it stops meaning anything.

So let me try to make it mean something again, with a math equation and a football match that happened recently at the latest FIFA World Cup 2026.

The equation nobody writes down

We talk about luck like it's a single mysterious force, either you have it or you don't. But it's not one thing. It's two things multiplied together:

Luck = Preparation × Opportunities

Look at what that multiplication does. If your preparation is zero, it doesn't matter how many opportunities show up, zero times anything is still zero. And if you're the most prepared person alive but you never put yourself in front of a single opportunity, same result. Zero.

The lucky people aren't the ones who got more luck handed to them. They're the ones who kept both numbers high. They got good and they kept showing up to the table where things happen.

Hold that thought. Let's go to Texas.

Japan, the Netherlands, and the 88th minute

On June 14th, 2026, Japan played the Netherlands in their World Cup group opener in Arlington, Texas. On paper it was a mismatch in the most literal, physical sense.

The Netherlands are tall. Van Dijk, Van de Ven, the whole spine of that team is built like a row of wardrobes. Japan are one of the shorter sides in world football, quick, technical, but not the people you'd bet on to win a header. If you were designing a contest specifically to humiliate the Japanese, you'd make it about jumping.

And for most of the night, the script ran exactly as the bodies predicted. The Dutch dominated the run of play, around 60% possession, more passes, more touches in the box, the better expected goals. Van Dijk, a defender, rose for a cross and headed the Netherlands ahead. Later Summerville restored their lead. The Oranje even won the aerial duels comfortably, around 74% of them. The taller, richer, more fancied team was doing exactly what everyone assumed it would.

Then the 89th minute happened. A ball was worked into the box, Koki Ogawa rose at the back of it, and the move ended with Daichi Kamada finishing past a flailing Dutch keeper. 2-2. A point stolen, against giants, right at the death.

The Nertherlands vs Japan
(Credit: FIFA)

Now a fun stat that flips the whole story, and the reason this match is actually perfect for what we're about to talk about. You'd assume the dominant Dutch were the ones bombarding the box with crosses. They weren't. Japan attempted more crosses than the Netherlands, 23 to 21. The team that was second-best on possession, second-best on xG, and losing the aerial battle just kept whipping balls into the box anyway, over and over, especially once the subs came on. Most of those crosses went nowhere. And then, in the 89th minute, one of them finally found a head.

So both halves of the truth are true at once, which is what makes it a great story:

They raised their opportunities by crossing it 23 times, and their preparation cashed the one that landed. A team that kept firing balls in long after it looked hopeless, that had drilled what to do when one finally dropped, that hadn't mentally checked out at 2-1 down, that team converted the half-second the universe finally handed them. The volume created the chance; the preparation finished it.

That's the whole equation in one match. Luck = Preparation × Opportunities. Japan cranked both dials, more attempts and the readiness to punish one, and stole a point from a team that, on every other number, beat them.

"Life is a game of numbers" — the other half

Okay, but sometimes you don't have elite preparation yet. Sometimes you're just starting. What then?

Then you turn the other dial: opportunities. You take more shots.

Japan's 23 crosses are a tiny, 90-minute version of this. Stretch the same idea across years and you get the tech world, a graveyard-slash-trophy-room of people who simply refused to stop attempting:

  • WD-40 — the spray in half the garages on earth, literally means "Water Displacement, 40th attempt." The first thirty-nine formulas failed. Somebody had the patience to label their failures honestly and keep going.
  • James Dyson built 5,127 prototypes of his bagless vacuum before one worked. Five thousand one hundred and twenty-seven. Read that again. He was wrong 5,126 times in a row, which by any normal emotional standard is a reason to take up gardening instead.
  • Angry Birds was Rovio's 52nd game. They spent years nearly going bankrupt making 51 things you have never heard of and never will. Game number 52 is the one your aunt has on her phone.

None of these are "luck" in the lottery sense. They're the equation again, just weighted the other way: when each individual attempt has a low chance of landing, you survive by taking more attempts. You buy more lottery tickets in a lottery where skill stacks the odds in your favour over time.

You miss 100% of the shots you don't take. But here's the part the motivational poster leaves off: you also miss most of the shots you do take. That's fine. The whole point is to take enough of them, while getting good enough at them, that the misses become statistically survivable.

"A moving man will surely meet his luck"

This is the line doing laps around the internet right now, and it's basically our equation crushed down into seven words. A moving man will surely meet his luck. It's everywhere, football captions. It spreads because it's true in a very specific, almost boring way: luck travels along roads, and you have to be on the road to get hit by it.

Luck cannot find you in your room. It does not have your home address. It finds you in the meeting you showed up to, the project you actually shipped, the conference you flew to, the cold message you sent, the game you released even though it was your 52nd one. The moving man isn't lucky because the universe likes him. He's lucky because he keeps wandering into the places where luck is standing around looking for someone to bump into.

My favourite proof is Stewart Butterfield, a man so committed to moving that the universe basically had to pay him twice to make him stop.

  • He set out to build an online game called Game Neverending. The game flopped. But the little photo-sharing tool his team had built inside it became Flickr, which Yahoo bought.
  • Did he learn his lesson and sit still? Of course not. He went and built another game, Glitch. That one also flopped. But the internal chat tool his team had cobbled together just to talk to each other became Slack — which Salesforce later bought for around $27.7 billion.

Twice he aimed at a target and missed. Twice the act of moving building, shipping, keeping a team in motion, produced the thing that actually mattered, sitting quietly in the corner of his failure. Same energy with Instagram, which started life as a clunky check-in app called Burbn until the founders noticed the only feature anyone used was the photos.

None of these people knew which attempt would land. That's the entire point, you don't get to know. You just keep moving, so that when luck finally comes down the road, you are, in fact, on the road.

The tech hall of accidental fame

Honestly, once you pull this thread, you realise a frankly embarrassing chunk of Silicon Valley is just people who completely failed at their original plan and tripped face-first into a better one. The "visionary founder who knew exactly what they were building" is mostly a story told afterwards, on a podcast, by someone who got lucky and is too polite to admit it.

A quick tour of the graveyard-slash-billionaire-factory:

  • YouTube was a dating site. The founders registered the domain on Valentine's Day, slapped on the slogan "Tune In, Hook Up," and literally offered women $20 on Craigslist to upload dating videos. Number of videos uploaded: zero. Romance dead, they shrugged, said fine, upload literally anything, and accidentally built the second-biggest website on Earth. The first-ever video was a guy standing at a zoo talking about elephants. Swoon.

  • Twitter fell out of a podcasting startup. It was born inside Odeo, right as Apple casually rolled iTunes podcasts over the entire industry like a steamroller over a grape. Staring down certain death, the team ran a hackathon, and the dumb little "post what you're doing right now" side-project ate its own parent company. Odeo died so your uncle could argue with strangers about football at 2am.

  • PayPal was an app for beaming money between Palm Pilots. Yes, the device. Two people had to point their PDAs at each other like wizards casting a spell to send $5. Shockingly, the world did not want to do this. So they tried "what if email, but it's money," and a fintech giant fell out of the side of the failure.

  • Nintendo — the Mario people, sold playing cards for ~70 years. Before video games, they also tried running a taxi company and, this is genuinely real, a chain of love hotels. The path from hourly-rate rooms to The Legend of Zelda is not a straight line. Nobody's is.

And my personal favourite, pure cosmic comedy: Brian Acton. In 2009 he applied for a job at Twitter and got rejected. Then he applied at Facebook and got rejected there too. His reaction, posted publicly: got denied by Twitter HQ, that's ok, would've been a long commute. He then went and co-founded WhatsApp, which Facebook bought five years later for $19 billion. The company that wouldn't hire him paid nineteen billion dollars for the thing he built because they wouldn't hire him. The man got rejected directly into a yacht. If that isn't "a moving man meets his luck," nothing is.

The pattern under all the jokes is the exact same boring, beautiful equation. None of them knew which attempt would hit. They just kept building, kept shipping, kept pointing Palm Pilots at each other, until something, almost never the thing they were aiming at, finally connected.

The trap on both sides

Here's where I have to be the annoying friend, because this idea has a failure mode on each end.

Crank only preparation and never ship, and you become the person with the perfect, polished, fully-architected app that has zero users because you never put it in front of a single human. Infinite preparation × zero opportunities = zero. You studied for a test you never showed up to.

Crank only volume and skip the preparation, and you become the person who sends 500 lazy job applications, builds 50 half-finished side projects, and pitches the same unbaked idea to everyone, and concludes the world is just unfair when none of it lands. Infinite attempts × near-zero preparation ≈ still basically zero, just louder.

And one more, the sneakiest: don't mistake a survivor's story for a recipe. For every Dyson who attempted 5,127 times and won, there are people who attempted 5,127 times at the wrong thing and quietly went broke, they just don't get a keynote. The equation isn't "suffer long enough and you're owed a win." It's "you control two inputs, your skill and your number of swings, and you cannot control the roll of the dice in between." Stack the inputs. Respect the dice.

So what do you actually do tomorrow

You can't manufacture luck. But luck is the product of two numbers you fully control, so go raise both:

  1. Get genuinely good at one thing — that's your multiplier. Skill is what converts a half-chance into a goal in the 88th minute. Suffer through the reps now so that when the ball comes in, your head's already in the right place.
  2. Put yourself in front of more chances — ship the project, send the message, enter the competition, publish the article you've been sitting on. Every swing is another roll where your preparation gets to do something.

Do both, long enough, and one day something will land and somebody will call you lucky. Smile and let them. You'll know it wasn't luck that showed up, it was you, prepared, standing exactly where the ball was always going to drop.

The short team can out-jump the giants. But only the one that practised the jump.

Now go take your shot. Preferably your 52nd one.