AI 资讯
Rant: Webflow SUCKS
I just need to get this out before I break my laptop in half. I have worked in UX/UI for nearly 10 years. I've used so many website builders. The worst BY FAR is Webflow. Where do I start? Very little custom code support: seriously, pretty much all styles and JS needs to be added in the site settings? SO CLUNKY. Give me page level control at the very least - I refuse to hack everything together with embeds. Insane. Components are too locked down: so I can't modify one thing (outside of properties) in a special exception? I get that's how a code base works, but you are a VISUAL designer. Be more like Figma Animations are a nightmare: why the funk do I have to define the hover out state? Are you kidding me? One hover state, animate in and out by default. Doing custom hover outs should be an exception, not the standard. I know this is the basic setup for very simple element level animations, which is crazy that they expect any web designer to use those more than multi-level animations. Also WHY CAN'T WE ANIMATE MARGIN AND PADDING??? You can't organize CMS collection content: complex data entry? Have fun scrolling through a massive list of inputs and selects with no hierarchy Naming every fudging element is hell. Can we please just switch to a css framework native approach? Just apply class names based on something like Tailwind when we use the visual editor to adjust properties. Sure, custom classnames when desired, but omg the brainpower it takes to care about classes makes me gag Along those lines: why can't we see a list of all the classes??? If everything is going to create a custom class then at least let me see a list/the CSS for the love of gourd No inline SVG element option is infuriating. Yes SVGs can be a security vulnerability but it's 2026 FIGURE IT OUT. So nasty to have to use embedded code if you want to be able to easily change the color, line weight, etc of an icon I swear who is this product even for 😭 my clients can't use it because you need to have k
开发者
How does the "see html" section of WordPress work?
I have tried to use the custom html block via WordPress but it seems to be limited with complexity. I am trying to add many sections and subcategories that follow a tree structure onto my webpages. What should I know before modifying the page's code directly, I think I have a raw HTML plugin installed. submitted by /u/neonrider2018 [link] [留言]
AI 资讯
What's a bug that took way too long to figure out because users never reported it?
A few years ago I would've said crashes are the worst bugs. Now I think it's the opposite. The worst bugs are the ones where everything technically works. The request succeeds. The button works. The API returns 200. Nothing shows up in logs. Meanwhile users are getting confused, clicking the same thing repeatedly, or abandoning a flow entirely. By the time someone notices, it's been happening for weeks. What's the most frustrating example of this you've run into? Edit:- I am not getting the point why everyone is downvoting this post ? It's a serious question guys submitted by /u/Icy-Roll-4044 [link] [留言]
AI 资讯
I am a web developer without any success because I am too slow!
As the title goes. I'm just too f*cking slow! I'm sitting with a client's project for 6+ months (without pay) and I've covered only about 50% so far. This project is mildly complex- a custom video distribution platform with background jobs. However, have I been faster, it would have gone live by now! I took a whole lot of time understanding the technical concept, the underlying system design. Right then, I got hold of the sinister thing called procrastination, in combination with fear of failure, as well as perfectionism! The actual implementation is going even slower. I'm the perfect candidate to be replaced by AI; at least in terms of speed. I fear how will I learn and work on other technologies later on! This is also destroying my overall confidence and career. I have seen the sentence 'ship fast, polish later.' But I just won't follow it even if I go broke financially. Man, I'm fed up of myself! Has anyone ever recovered from similar situation? submitted by /u/swb_rise [link] [留言]
AI 资讯
You Don't Have to Learn Hermes From Scratch — I Brought My Existing Skills In
This is a submission for the Hermes Agent Challenge : Write About Hermes Agent I Didn't Start With Hermes Six months ago I started building a set of agent skills and personas for how I build software. Not generic prompts — opinionated role files. A /backend-architect that owns schema and recommendation logic. A /test-engineer that writes Vitest coverage and flags weak acceptance criteria. A /project-manager that maintains planning docs and closes iterations cleanly. These roles have evolved across multiple projects. They have layering rules, discovery checklists, inheritance from a base engineering discipline file. They produce consistent, reviewable work because they're scoped — the backend architect doesn't touch test files, the test engineer doesn't redesign the schema, each persona has a defined mandate and exits cleanly. When I heard about Hermes Agent, my first instinct wasn't "let me learn a new system." It was: can I run my existing system inside this? The answer is yes. That's what this article is about — what it looks like to bring a mature workflow into Hermes, what you gain, where it breaks down, and what I'd do differently. What Hermes Is (and Isn't) to Someone Who Already Has a Workflow Hermes is an LLM-agnostic orchestration layer. It has its own skill system, its own soul.md concept for persistent agent identity, built-in cron scheduling and MCP management. All of that is real and useful. But it's also a runtime. If you have skills that work, you can bring them in. I installed a local Hermes instance — few clicks, straightforward setup — and ran it inside VSCode's integrated terminal pointed at my existing persona files. No migration. No rewrite. My /backend-architect runs in Hermes the same way it runs in Claude Code. Before settling on this, I'd tried a couple of other paths — a VPS instance with a Telegram interface for ideation, and attempting to build through a browser-based terminal. The VPS was fine for sketching ideas. The browser terminal ma
AI 资讯
Every Great Cup Starts with the Right Question — I Built the Community Behind the Answer with Hermes Agent
This is a submission for the Hermes Agent Challenge : Build With Hermes Agent What I Built Real brewing knowledge lives in human experience — in roaster guides, in community notes, in what a barista learned from last Tuesday's pour. It doesn't accumulate anywhere. Every brew is forgotten. Ask any AI and you get statistical averages: 93°C, 1:16 ratio, four minutes. Technically defensible. Practically generic. Worse still for rare origins where training data is thin. Demo For coffee drinkers Visit brew-guide-production.up.railway.app . No account. No setup. No AI client required. Pick your coffee origin, roast level, and brew method. What comes back isn't a generic recipe — it's community consensus: the grind, temperature, ratio, and brew time that real people have logged and rated for that origin, plus step-by-step technique guidance (bloom timing, pour stages, agitation style). If data is sparse for your origin, the confidence tier says so honestly and falls back to method defaults rather than making something up. This is for the person who just picked up a bag of Kenyan peaberry and wants to know how to do it justice. It works for anyone who cares about their cup — no technical knowledge required. For developers and AI clients Connect to any MCP-capable client in one line: https://brew-guide-production.up.railway.app/mcp Ask your AI: "recommend a pour over for Ethiopian light roast." What comes back is a traceable community consensus object: brew parameters, a confidence tier (high/medium/low), the source brews that contributed, and method-specific technique guidance. You can see where the knowledge came from and how certain the system is — a fundamentally different epistemic object from an AI-generated recipe. Code GitHub: yuens1002/brew-guide Five MCP tools — get_brewing_methods , recommend , log_brew , search_brews , compare_brew — over Streamable HTTP transport. Public, no auth required. My Tech Stack Layer Technology HTTP Hono 4 + @hono/node-server MCP @modelc
AI 资讯
How I scraped the CQC Care Register without hitting the API auth wall
The Care Quality Commission regulates 56,000+ healthcare and social care locations in England — care homes, GP surgeries, hospitals, dental practices, home care agencies. If you work in care sector tech, you've probably needed this data at some point. There's a CQC REST API, and I was planning to wrap it. Then I hit the auth wall. The API is now authenticated CQC migrated their API to api.service.cqc.org.uk and added bearer token authentication. You need to register at their developer portal, create an application, and include an Authorization: Bearer <token> header on every request. That's not a dealbreaker for enterprise use cases, but it creates friction for a data product — it means requiring users to register with CQC before they can run your actor. I checked the old API base ( api.cqc.org.uk/public/v1 ) as a fallback. HTTP 403. Fully blocked. The open-data file rescue CQC publishes a monthly open-data file called HSCA_Active_Locations.ods . It's a 23 MB OpenDocument Spreadsheet with every active regulated location in England — all 56,000 of them. Free, no auth, Open Government Licence. The URL is date-stamped and changes each month, but the transparency page always links to the current version. The approach: scrape the transparency page to find the current ODS URL, download the file, parse it, filter rows, push results. No API. No auth wall. The ODS parsing challenge ODS files ( .ods ) are ZIP archives containing XML. The standard tool for parsing them in Node.js is SheetJS ( xlsx package, v0.18.5 — the last Apache 2.0 release). The first surprise: the workbook has three sheets — README , HSCA_Active_Locations , and Dual_Registration_Locations . SheetJS defaults to the first sheet, which is the README with 34 rows. I added logic to find the sheet with the most rows. for ( const name of workbook . SheetNames ) { const probe = XLSX . utils . sheet_to_json ( sheet , { header : 1 }); if ( probe . length > bestCount ) { bestCount = probe . length ; bestSheet = shee
开发者
How I built an Ofsted school data API on Apify (without scraping a single webpage)
Most scraping projects start by finding a website to scrape. This one started from the opposite direction: I knew the data existed as official government downloads, and my job was to make it accessible via a clean API. The data source Ofsted (the UK school inspections body) publishes monthly management information as CSV files on GOV.UK. The file covers all 22,000+ state-funded schools in England with their latest inspection grades, local authority, postcode, phase, and size data. It's 16 MB, published under the Open Government Licence v3.0 — explicitly permitting commercial use. No scraping needed. No authentication. Just a CSV download and some parsing logic. The architecture The actor is deliberately simple: Fetch the GOV.UK stats page to find the current month's CSV URL (the URL hash changes with each release) Download the CSV (~16 MB from assets.publishing.service.gov.uk ) Parse it with csv-parse Apply the user's filters (name, local authority, region, postcode prefix) Push matching records to the Apify dataset No Crawlee. No browser. No proxy. Just fetch() and a CSV parser. const match = html . match ( /href=" ( https: \/\/ assets \. publishing \. service \. gov \. uk \/[^ " ] +latest_inspections_as_at [^ " ] + \. csv ) "/ ); That one regex does the URL discovery. The GOV.UK page lists files in reverse chronological order, so the first match is always the latest release. The interesting part: Ofsted changed their grading system mid-build I built this in May 2026. In November 2025, Ofsted scrapped their 20-year-old four-word judgement system (Outstanding / Good / Requires Improvement / Inadequate) and replaced it with a report card format — six separate grade areas, each on a five-point scale: Exceptional Strong Expected standard Needs attention Urgent improvement Plus a standalone Safeguarding verdict (Met / Not met). The April 2026 CSV reflects this change entirely. There's no "Overall effectiveness" column. Schools inspected before November 2025 have null gr
AI 资讯
Stop Upgrading the Model. Start Engineering the Harness.
When a team hits a ceiling with their coding agent, the first instinct is to reach for a better model. The reasoning feels obvious: the model is the part that produces the code, the code is the part that is wrong, therefore a smarter model will produce more correct code. Wait for the next release. Switch providers. Bump the tier. This is sometimes right. It is much more often wrong, and the cost of being wrong about it is that you spend months waiting for a model upgrade to solve a problem the model was never the cause of. The harness is the cause of the problem more often than the model. Most teams discover this only after they have exhausted the model-upgrade reflex and finally turn to look at everything else. What a model upgrade actually buys you Newer, stronger models do tangibly improve some things. They handle longer contexts more reliably. They make fewer simple reasoning errors on complex tasks. They follow nuanced instructions more closely. On a fixed prompt, with a fixed task, a better model produces a better answer. What model upgrades do not change: The fact that the agent has no idea your team prefers functional components over class components, because the convention is not in any file the agent reads. The fact that your tests do not actually fail when the code is wrong, so the agent can ship broken code that passes CI. The fact that your codebase has three different ways of handling errors and the agent picks one at random on each PR. The fact that the rule the senior engineer keeps repeating in reviews is not encoded anywhere the next session can see. None of these are fixed by a smarter model. They are fixed by a better harness. A smarter model loaded into the same broken harness will produce slightly more sophisticated versions of the same problems. The diagnostic The diagnostic is one question: when the agent fails, does it fail because it lacked information, or because it lacked capability? A capability failure looks like: the task required reas
AI 资讯
How vibecoding is destroying the open source that feeds it
How vibecoding is destroying the open source that feeds it March 3, 2026 The snake eating its own tail A year ago, vibecoding was a curiosity. Today, it’s an industry. Millions of developers — or rather prompters — generate entire applications by describing what they want to an LLM. In minutes, an API, a frontend, a deployment. Magical. But behind this magic lies a dirty secret that nobody wants to face: every line of code generated by these AIs was trained on millions of open source projects — projects that are now dying. Vibecoding would be nothing without open source. And it’s killing it. What exactly is vibecoding? For those who spent 2025 in a cave: vibecoding is the practice of creating software in natural language, relying on generative AI models (Claude, GPT-5, Gemini, and the dozens of specialized models that have emerged since). You describe a vibe , an intention, and the AI produces the code. No debugging. No reading documentation. No Stack Overflow. And above all — here’s the crux — no contributing back . The implicit pact of open source is broken The open source ecosystem has always rested on a tacit social contract: I publish my code for free. In return, others use it, find bugs, suggest improvements, contribute. The project lives because a community keeps it alive. This contract had already been severely tested by large corporations that consume open source without contributing proportionally. But at least the developers who used these libraries understood them. They opened issues. They forked. They sent pull requests. They wrote blog posts that spread the word about the project. Vibecoding has blown up this cycle. The vibecoder doesn’t know which library they’re using. They don’t know, and they don’t care. They asked “build me a payment API with webhook handling,” and the AI chose this or that dependency for them. They will never read that project’s README. They will never open an issue. They won’t even know that project exists . The chilling numbers
开发者
How does pornhub track a user without cookies and through incognito mode?
Maybe an odd question but Pornhubs start page are actually recommendations based on your viewed videos. I suppose most folks here use incognito mode so, no cookies, clean state on each launch. Yet, if you launch another incognito window for the site, you will realize it remembered your viewing behavior and the videos reflect it. But how do they do this? There is no account, no cookies, no local storage. And technically, they wouldn't be allowed to track you in the first place due to the GDPR. Yet, it's the case. Anyone know how they achieve this? submitted by /u/SourSovereign [link] [留言]
开发者
How to upload a website that I created on the internet but it only be shown to people who have the exact link?
I made a portfolio for the University as an assignment, but there's some very sensitive information like my id number and my full name. I don't want any random person on the internet to stumble on it, I only want the professor to see it. So i want an exact link that is very hard so only people with this link can access my website. Is there some free website host for this exact thing? submitted by /u/W3-SD [link] [留言]
开发者
JPEG compression deep dive
submitted by /u/fagnerbrack [link] [留言]
开发者
How to make dynamic svg images without having an image for every combination ?
I want to make a feature where my users would be able to customize a 2D svg character. They would choose their sex, their skin color, their clothes color, and maybe even put on accessories later. The arms of these characters would also change position. Obviously, I don't want to create an svg image for every possible combination, e.g. brown-man-red-shirt-pose1.svg white-woman-blue-shirt-pose1.svg, etc. If I did so I would have at least a hundred files to change each time I update the design of the characters which I don't wish on my worst enemy. So I would like a way to dynamically generate these combinations on the fly each time I render a character to the user. I asked a chatbot about it and it told me to treat my svg files the same way I treat my html templates with Django and render them using the render_to_string() function which allows me to pass variables for my template to display. I believe this way of doing it makes sense. For the different colors applied to the character, I would only need to add the following syntax: {{ shirt_color }} as the value of a path's "fill" in my svg and pass the value of the color in render_to_string() . However, if I want to attach the arms to the characters during render to not have a file for every arm pose there is with the same exact base character in each one, it becomes a bit more complicated. I would need to integrate a whole svg file inside of the first one and would need to care about its positioning and everything. I would also need to clean up the file each time I render it inside another svg file because of everything that comes with (<?xml version="1.0" encoding="UTF-8" standalone="no"?>, <!-- Created with Inkscape ( http://www.inkscape.org/ ) --> and the svg tag itself). So what is the most commonly agreed upon way of doing this? submitted by /u/Affectionate-Ad-7865 [link] [留言]
开发者
Appendix: Live System Output
Appendix: Live System Output — Real Pipeline in Production All output below was captured live from the running pipeline on 2026-03-08. These are not mock outputs — they come from actual AWS infrastructure and Kubernetes clusters. ArgoCD — All 50 Applications Across 6 Clusters The following is the live output of argocd app list from the hub cluster ( myapp-production-use1 ). Every component of the pipeline is represented — security, logging, monitoring, backups, and the application itself. $ argocd app list --output wide NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH argocd/argo-rollouts-myapp-production-use1 myapp-production-use1 argo-rollouts production Synced Healthy argocd/argo-rollouts-myapp-production-usw2 myapp-production-usw2 argo-rollouts production Synced Healthy argocd/aws-lbc-myapp-production-use1 myapp-production-use1 kube-system production Synced Healthy argocd/eso-myapp-production-use1 myapp-production-use1 external-secrets production OutOfSync Healthy ← known false positive argocd/eso-myapp-production-usw2 myapp-production-usw2 external-secrets production OutOfSync Healthy ← known false positive argocd/falco-myapp-dev-use1 myapp-dev-use1 falco production Synced Healthy argocd/falco-myapp-dev-usw2 myapp-dev-usw2 falco production Synced Healthy argocd/falco-myapp-production-use1 myapp-production-use1 falco production Synced Healthy argocd/falco-myapp-production-usw2 myapp-production-usw2 falco production Synced Healthy argocd/falco-myapp-staging-use1 myapp-staging-use1 falco production Synced Healthy argocd/falco-myapp-staging-usw2 myapp-staging-usw2 falco production Synced Healthy argocd/fluent-bit-myapp-dev-use1 myapp-dev-use1 logging production Synced Healthy argocd/fluent-bit-myapp-dev-usw2 myapp-dev-usw2 logging production Synced Healthy argocd/fluent-bit-myapp-production-use1 myapp-production-use1 logging production Synced Healthy argocd/fluent-bit-myapp-production-usw2 myapp-production-usw2 logging production Synced Healthy argocd/fluent-bit-myapp-
AI 资讯
Production DevSecOps Pipeline — The Complete Day-2 Operations Runbook
DevSecOps Pipeline — Completion Runbook All code is written and pushed to GitHub. This runbook covers the remaining operational steps: Terraform applies, GitOps ARN updates, and ArgoCD deployment. Prerequisites Install these tools if not already present: # AWS CLI v2 winget install Amazon.AWSCLI # Terraform 1.6+ winget install HashiCorp.Terraform # Terragrunt # Download from https://github.com/gruntwork-io/terragrunt/releases # Place in C:\Windows\System32\ or add to PATH # kubectl winget install Kubernetes.kubectl # ArgoCD CLI winget install argoproj.argocd AWS Profile Setup The root terragrunt.hcl uses profiles named myapp-{env}-{region_alias} . Configure them in ~/.aws/config : [profile myapp-production-use1] region = us-east-1 role_arn = arn:aws:iam::591120834781:role/AdministratorAccess source_profile = default [profile myapp-production-usw2] region = us-west-2 role_arn = arn:aws:iam::591120834781:role/AdministratorAccess source_profile = default [profile myapp-staging-use1] region = us-east-1 role_arn = arn:aws:iam::690687753178:role/AdministratorAccess source_profile = default [profile myapp-staging-usw2] region = us-west-2 role_arn = arn:aws:iam::690687753178:role/AdministratorAccess source_profile = default [profile myapp-dev-use1] region = us-east-1 role_arn = arn:aws:iam::557702566877:role/AdministratorAccess source_profile = default [profile myapp-dev-usw2] region = us-west-2 role_arn = arn:aws:iam::557702566877:role/AdministratorAccess source_profile = default PHASE 1 — Terraform Applies Work from the myapp-infra/ directory. Run in the order shown — capture outputs for updating GitOps files in Phase 2. 1.1 WAF (production + staging) # Production us-east-1 terragrunt apply --terragrunt-working-dir live/production/us-east-1/waf # Output → webacl_arn (copy this value) # Production us-west-2 terragrunt apply --terragrunt-working-dir live/production/us-west-2/waf # Output → webacl_arn (copy this value) # Staging (no GitOps ARN needed, but good to have) terra
AI 资讯
Anyone Can Make Software Now. But When Does A Side Project Become Production Ready?
Author's note: In the spirit of fairly critiquing AI and practicing a suggestion I end the article with, this article and the accompanying illustration were created entirely without AI assistance. Agentic coding AI is here, and it’s transforming the software industry. But with agentic coding out now for over a year, has it felt like the software industry has really transformed? From my from vantage point, although there are some really cool projects that have been built only because of new agentic coding tools, it generally feels like we’re awash in a sea of software slop. Tim Kadlec wrote a great article, “Losing Focus” , that really resonated with me, especially this quote: “I don’t think the quality of software has increased all that much in in the past 12 months. I think maybe the amount of software has, but it’s very, very hard to find software that’s reliable.” - Max Scoening, Head of Product at Notion I’ve been hearing loads of stories and murmurs about AI from the people I know in tech, and I think there’s a lot being lost in the binary divide that a lot of people seem to fall into - either AI is bad and can do nothing right, or AI is the new future of engineering, and every company should have all their code written by AI today . I want to posit that right now we’re in the messy middle. An era of hype and grifters that want to sell you an AI fantasy that hasn’t been reached, which obscures the real present - powerful AI tools that can speed up professional developers, but can lure non-developers into shipping products that aren’t nearly ready for prime-time. My Background But first, if you don’t know me, let me explain why you should listen to my perspective. I’ve been working professionally in software (specifically web development, focused on the frontend), for over ten years. In that time I’ve worked at a non-profit, a for-profit, led a small startup, freelanced, and have led a number of open-source volunteer teams at Chi Hack Night , including right now
AI 资讯
Feedback Latency Is the Agent's IQ
The same agent, same prompts, did markedly different work on two codebases I work in. One has a test suite that runs in eight seconds. The other takes twelve minutes. The eight-second project gets a careful, iterative collaborator. The twelve-minute project gets a confident guesser. I noticed it first as a vibe. The agent in the slow codebase would write five files at once, then announce the task complete without having run anything end to end. The agent in the fast codebase would write one function, run the tests, react to the failure, fix it, run them again. Same model. Same configuration. The only difference was how expensive it was to learn whether the previous step was right. That is the whole post in one sentence. An agent's effective intelligence is bounded by how fast it can verify its hypotheses. Cut the verification cost and you raise the agent's apparent IQ. Raise it and you lower the agent's apparent IQ. The model in the middle is unchanged. Why this binds harder for agents than for humans A human engineer can hold a hypothesis in their head. "I think this works. I will check it later." The cost of holding the hypothesis is roughly free; the human has institutional memory, intuition, a sense of what the code does that does not require running the code to confirm. They can defer verification without losing fidelity. An agent cannot. It has no intuition about your codebase. The only ground truth it has access to is what the tests say, what the type checker says, what the build says. When those signals are cheap, the agent uses them constantly. When they are expensive, the agent stops using them and starts speculating. Speculation by an agent looks plausible. It produces code that compiles, follows the patterns it has seen in your repository, names things sensibly. The problem is that plausible is not the same as correct. The agent that speculates is shipping a guess; the agent that iterates is shipping a tested answer. From the diff alone, they can be hard
AI 资讯
How to Integrate AI and LLMs into Production Web Apps (Lessons from the Field)
Everyone is adding AI to their product right now. Most of them are doing it wrong. Not because they chose the wrong model. Not because they used the wrong library. But because they treated AI integration like a regular feature and skipped all the engineering discipline that production systems require. I have integrated LLMs into multiple production applications. This is what I wish I had known before I started. The Mental Model Shift You Need First A traditional API call is deterministic. You send a request, you get a predictable response. You can write tests against it. You can cache it. You can reason about it. An LLM call is not deterministic. The same input can produce different outputs on different runs. The model can refuse, hallucinate, or return output in a format you did not expect. Your system needs to be designed around this reality, not in spite of it. This means defensive parsing, fallback logic, output validation, and graceful degradation are not optional extras. They are the core of the feature. Choosing the Right Model for the Right Job The biggest LLMs are not always the right choice. I learned this building EditDeck Pro, an AI creative platform for music. Some tasks needed a large frontier model for nuanced creative output. Others needed a fast, cheap model that could run many times per session without accumulating significant latency or cost. The pattern that works: Use a lighter model for classification, extraction, and short structured outputs. Use a larger model for generation tasks where quality matters more than speed. Route dynamically between them based on the task type. This can reduce your inference costs by 60 to 80 percent on workloads that mix simple and complex tasks. Prompt Engineering Is Software Engineering Prompts are code. They should be versioned, tested, and reviewed like code. I store prompts in a dedicated module with version numbers. When I change a prompt I run it against a fixed evaluation set of inputs and compare the out
AI 资讯
The Hidden Cost of Context Switching
For a long time, I thought productivity was about effort. Work harder. Focus more. Stay disciplined. Manage time better. Most productivity advice is built around some version of this idea. Then I noticed something strange. Some days I could spend ten hours at a desk and accomplish almost nothing. Other days I could spend three hours working and make more progress than I had all week. The difference wasn't effort. The difference was context. The Most Expensive Thing Is Not Time Ask people what their most limited resource is and most will answer: Time. But for knowledge workers, engineers, researchers, writers, and designers, I think the scarcer resource is often something else. Mental state. The ability to hold a problem in your head. The ability to remember why a decision was made. The ability to see connections between ideas. The ability to continue a train of thought without interruption. That's the state where meaningful work happens. And it's surprisingly fragile. Every Context Switch Has a Cost Imagine you're debugging a difficult issue. You've already: read the logs inspected the code traced the requests formed a hypothesis You're finally starting to see the shape of the problem. Then: a Slack notification arrives someone schedules a meeting an email requires attention a different task becomes urgent The interruption itself might only take two minutes. The real cost is what disappears. The mental model. The momentum. The partially constructed map inside your head. The next time you return to the task, you don't continue where you left off. You rebuild. Software Often Creates The Problem It Tries To Solve One thing that surprised me after building products for years is how much software exists primarily because other software creates friction. A note-taking application exists because memory is limited. A task manager exists because priorities change. A research assistant exists because information is fragmented. Many tools are not solving fundamental problems.