---
title: "Trevor I. Lasn, Building Whiteheap and 0xinsider"
description: "Building whiteheap.com, tools for coding agents and developers, and 0xinsider.com, real-time Polymarket analytics for sports and esports."
canonical: "https://www.trevorlasn.com"
author: "Trevor I. Lasn"
last-updated: "2026-11-09"
---

# Trevor I. Lasn

Building [whiteheap.com](https://whiteheap.com), tools for coding agents and developers, and [0xinsider.com](https://0xinsider.com), real-time Polymarket analytics for sports and esports.

179 articles, newest first. Each link is the article's markdown version; drop the .md for the web page.

- [llms.txt](https://www.trevorlasn.com/llms.txt): the same list as an llmstxt.org index
- [Full text of every article](https://www.trevorlasn.com/llms-full.txt)
- [Agent skill for finding, reading and citing these articles](https://www.trevorlasn.com/.well-known/agent-skills/trevorlasn-articles/SKILL.md)
- [Archived articles](https://www.trevorlasn.com/archive.md)
- [Topics](https://www.trevorlasn.com/topics.md)
- [RSS feed](https://www.trevorlasn.com/rss.xml)
- [Contact](https://www.trevorlasn.com/contact.md)

## 2026

- [residue-cli: Reclaim your storage from Git worktrees, automatically and safely.](https://www.trevorlasn.com/blog/residue-cli-reclaim-storage-from-git-worktrees.md): residue-cli removes a Git worktree only when nothing in it would be lost. How its 15 checks decide, how it deletes and restores, and residue-ui for the Mac. (2026-11-09)
- [Agent Git worktrees eat your disk; residue-cli clears safe ones](https://www.trevorlasn.com/blog/residue-git-worktree-cleanup.md): residue-cli is an open-source Rust CLI that finds the Git worktrees coding agents leave on disk and removes one only when nothing in it would be lost. (2026-11-06)
- [I rebuilt 0xinsider for Polymarket sports and esports data](https://www.trevorlasn.com/blog/0xinsider-polymarket-sports-esports-analytics.md): 0xinsider is now Polymarket analytics for sports and esports. What 149,700 wallets and 411,770 large buys say, with every query public. (2026-09-23)
- [Agentic Resource Discovery: What I Added to 0xinsider](https://www.trevorlasn.com/blog/agentic-resource-discovery-ard.md): ARD is a new proposal from Google, Microsoft and Hugging Face for how agents find tools. What's in it, what 0xinsider publishes, and what a registry returns. (2026-09-23)
- [You have been invited to the 0xInsider.com Discord server!](https://www.trevorlasn.com/blog/join-0xinsider-discord.md): Join the 0xInsider.com Discord community: talk markets, odds and predictions with fellow prediction market traders in real time. (2026-07-03)
- [Ph.D in failure, Masters in getting back up](https://www.trevorlasn.com/blog/phd-in-failure-masters-in-getting-back-up.md): Every time I bet on myself instead of taking a paycheck, and what each one taught me. (2026-06-06)
- [AEO and GEO for AI Overviews, ChatGPT, Gemini and Perplexity](https://www.trevorlasn.com/blog/aeo-geo-vs-seo-google-ai-optimization.md): What Answer Engine Optimization and Generative Engine Optimization mean, and how to get your site cited by AI Overviews, ChatGPT, Claude, Perplexity and Gemini. (2026-05-17)
- [Why I Chose Rust for 0xInsider](https://www.trevorlasn.com/blog/why-i-chose-rust-for-my-backend.md): No QA team. No on-call rotation. One person, one binary, one financial product. The compiler is my entire engineering org. (2026-03-09)
- [Prediction Markets Broke My Brain About Probability](https://www.trevorlasn.com/blog/prediction-markets-broke-my-brain-about-probability.md): A year of watching people bet real money on outcomes changed how I think about everything. (2026-02-27)
- [How I Use Vercel BotID to Stop Bots on Auth Endpoints](https://www.trevorlasn.com/blog/vercel-botid-bot-protection-nextjs.md): BotID verifies browser challenges before proxying to the backend. Here's how I set it up in Next.js 16. (2026-02-16)
- [Google Search Console MCP Server: Connect It to Claude Code](https://www.trevorlasn.com/blog/google-search-console-mcp-claude-code.md): Connect Google Search Console to Claude Code with the mcp-gsc MCP server: setup with uvx, the tools it adds, and the indexing and CTR problems it found. (2026-02-15)
- [0xInsider.com: Polymarket Analytics for Sports and Esports](https://www.trevorlasn.com/blog/0xinsider-prediction-market-whale-tracking.md): Polymarket analytics for sports and esports in real-time. I grade every tracked wallet, then show which side the best of them are backing before a game starts. (2026-02-11)
- [AI Agents Explained](https://www.trevorlasn.com/blog/ai-agents-explained.md): What AI agents are, how the agent loop works, and why they're different from chatbots. (2026-01-30)
- [How Prediction Market Arbitrage Works (Polymarket, Kalshi)](https://www.trevorlasn.com/blog/how-prediction-market-polymarket-kalshi-arbitrage-works.md): Buy YES and NO for less than $1 combined and one of them pays $1. Why the gap opens on Polymarket and Kalshi, and the fees and liquidity that close it. (2026-01-29)
- [Building Custom MCP Servers with Next.js and mcp-handler](https://www.trevorlasn.com/blog/building-custom-mcp-servers-with-nextjs-and-mcp-handler.md): Build an MCP server in a Next.js route with mcp-handler and createMcpHandler, then connect it to Claude Code, Gemini CLI, Cursor and other MCP clients. (2026-01-28)

## 2025

- [CSS :interest-source and :interest-target Pseudo-Classes](https://www.trevorlasn.com/blog/css-interest-pseudo-classes.md): Style connected UI with the :interest-source and :interest-target pseudo-classes. Interactive examples of tooltips, forms and navigation without JavaScript. (2025-11-12)
- [::details-content: Style Expandable Content, No Wrappers](https://www.trevorlasn.com/blog/details-content-pseudo-element.md): The ::details-content pseudo-element lets you style the expandable content of details elements separately from the summary, no divs needed. (2025-11-11)
- [View Transitions API: Smooth animations between DOM states](https://www.trevorlasn.com/blog/view-transitions-api.md): Create animated transitions between different states of your app without complex animation libraries. (2025-11-11)
- [Chrome DevTools MCP: Let Your AI Agent Debug Your App](https://www.trevorlasn.com/blog/chrome-devtools-mcp.md): Give your AI agent access to your running application. They can see errors, inspect the network tab, check the DOM, and debug issues while you work. (2025-11-10)
- [Claude Code Superpowers: Add Skills That Plan Before Coding](https://www.trevorlasn.com/blog/superpowers-claude-code-skills.md): Superpowers is a plugin for Claude Code that enforces planning, TDD, and debugging workflows. Setup guide with real examples. (2025-11-04)
- [Lighthouse CI: Catch Performance Regressions Early](https://www.trevorlasn.com/blog/lighthouse-ci.md): Lighthouse CI fails your builds when performance drops. I run it on every pull request. (2025-11-03)
- [Next.js DevTools MCP: Connect Agents to Your Dev Server](https://www.trevorlasn.com/blog/next-js-devtools-mcp.md): The Next.js DevTools MCP connects Claude and Cursor to your running dev server. I use it every day. (2025-11-02)
- [Context7 MCP: Stop LLM Hallucinations with Live Docs](https://www.trevorlasn.com/blog/context7-mcp.md): Context7 MCP server pulls version-specific library docs into Claude Code, Cursor, and other AI editors. Setup guide and how it works. (2025-11-01)
- [IndexNow: Get Pages Indexed in Minutes, Not Weeks](https://www.trevorlasn.com/blog/how-to-setup-indexnow-for-instant-search-engine-indexing.md): Set up IndexNow in five minutes: generate an API key, host the key file at your site root and submit URLs on publish. Code for Astro, Next.js, Django and more. (2025-10-27)
- [What's New in Next.js 16: Every Change Explained](https://www.trevorlasn.com/blog/whats-new-in-nextjs-16.md): Next.js 16 makes params async, Turbopack the default bundler and proxy the new middleware, and removes AMP. Every change with code, updated for 16.4. (2025-10-25)
- [Original work is now an endangered species](https://www.trevorlasn.com/blog/original-work-is-now-an-endangered-species.md): When everything looks the same, being different becomes valuable again (2025-10-24)
- [Now is the best time to break into tech](https://www.trevorlasn.com/blog/now-is-the-best-time-to-break-into-tech.md): With AI tooling, a developer with 1 year of experience can match the output of someone with 10 years. The playing field has never been more level. (2025-10-20)
- [Is it even worth learning to code?](https://www.trevorlasn.com/blog/is-it-even-worth-to-learn-coding.md): With AI tools like Claude Code, Cursor, GitHub Copilot, OpenAI Codex, and Lovable, is learning to code still valuable? (2025-10-17)
- [The Sequential Thinking MCP Server](https://www.trevorlasn.com/blog/anthropic-sequential-thinking-mcp.md): The sequential thinking MCP server has an AI agent reason one numbered thought at a time, revising or branching as it goes. What it does and when it helps. (2025-09-07)
- [NPQ: Audit npm Packages for Malware Before You Install](https://www.trevorlasn.com/blog/npq-protects-npm-installs-from-malicious-packages.md): A CLI tool that checks packages for security issues and social engineering attacks before they hit your project (2025-07-26)
- [Google's AI distribution advantage](https://www.trevorlasn.com/blog/google-ai-distribution-advantage.md): While everyone debates models and features, Google owns the distribution channels that make AI stick (2025-07-25)
- [How JavaScript Was Written Back In the Day](https://www.trevorlasn.com/blog/revisiting-legacy-javascript.md): How was JavaScript written back in the day? I dug into early frameworks and libraries to see how code looked then and what still holds up. (2025-06-12)
- [JavaScript compile hints: what they are and when to use them](https://www.trevorlasn.com/blog/javascript-compile-hints.md): V8's compile hints let you control which JavaScript gets compiled immediately during page load (2025-05-12)
- [Error.isError() in JavaScript: A Reliable Error Check](https://www.trevorlasn.com/blog/error-iserror-javascript.md): Why the new Error.isError() method solves important cross-realm issues and provides more reliable error identification than instanceof (2025-05-09)
- [Data Fetching Architecture for Complex React/Next.js Apps](https://www.trevorlasn.com/blog/fetching-data-for-complex-next-and-react-apps.md): How I use the 'Three Layers of Data' architecture pattern for React and Next.js apps to avoid common pitfalls, tech debt, and improve performance (2025-05-04)
- [Float16Array in JavaScript](https://www.trevorlasn.com/blog/float16array-javascript.md): Float16Array stores 16-bit floating point numbers in half the memory of a Float32Array. How it works, when to use it and which browsers support it. (2025-04-14)
- [Agent2Agent (A2A) Protocol: How AI Agents Talk to Each Other](https://www.trevorlasn.com/blog/agent-2-agent-protocol-a2a.md): An exploration of Google's new open protocol that enables different AI systems to exchange information and collaborate (2025-04-13)
- [Why I Value Firebreak Sprints for Managing Technical Debt](https://www.trevorlasn.com/blog/firebreak-sprints.md): How scheduled developer freedom weeks can revolutionize your codebase and team morale (2025-04-08)
- [CVE-2025-29927: The Next.js Middleware Bypass Explained](https://www.trevorlasn.com/blog/cve-2025-29927-nextjs-middleware.md): The vulnerability skips Next.js middleware security checks by adding a single HTTP header (2025-04-06)
- [The 5:1 Rule: The Feedback Ratio of High-Performing Teams](https://www.trevorlasn.com/blog/the-5-1-rule.md): High-performing teams share 5.6 positive comments for every negative one, medium teams 1.9. How to use that ratio in performance reviews. (2025-03-20)
- [Intl.DurationFormat: Format Durations with Locale Support](https://www.trevorlasn.com/blog/intl-durationformat-javascript-time-durations-with-locale-support.md): Stop writing manual duration formatting code. Instead, leverage the new powerful Intl.DurationFormat API for internationalized time displays (2025-03-13)
- [Open-source is where dreams go to die](https://www.trevorlasn.com/blog/open-source-is-where-dreams-go-to-die.md): Work for free and in return watch your passion get crushed by entitled users who are never satisfied (2025-02-26)
- [Don't bullshit](https://www.trevorlasn.com/blog/dont-bullshit.md): Speak plainly, admit what you don't know and write like you talk. Why direct, honest communication builds more trust at work than a polished persona. (2025-02-12)
- [is-my-node-vulnerable: Check Your Node.js Version for CVEs](https://www.trevorlasn.com/blog/is-my-node-vulnerable.md): This package compares your Node.js version against the Node.js Security Database, providing immediate feedback about potential security risks. (2025-01-29)
- [Native Popover Element with HTML](https://www.trevorlasn.com/blog/native-popover-with-html.md): The HTML Popover API builds tooltips, dropdowns and overlays without a JavaScript library. How to use it, what it returns and where browsers support it. (2025-01-24)
- [WeakRefs in JavaScript: Explained In Simple Terms](https://www.trevorlasn.com/blog/weakref-javascipt.md): A WeakRef points to an object without stopping the garbage collector from freeing it. When that helps, how deref() works, and cleanup with FinalizationRegistry. (2025-01-07)
- [How Honey Made Money by Swapping Creators' Affiliate Links](https://www.trevorlasn.com/blog/honey.md): PayPal bought Honey for $4 billion in 2019. Its extension replaced creators' affiliate links with its own codes, so the commission on a sale went to Honey. (2025-01-04)

## 2024

- [AsyncLocalStorage in Node.js: Context Without Prop Drilling](https://www.trevorlasn.com/blog/node-async-local-storage.md): Use AsyncLocalStorage to carry request IDs, user context, and tracing data through async calls without passing them as arguments. (2024-12-20)
- [CSS scrollbar-width and scrollbar-gutter Explained](https://www.trevorlasn.com/blog/css-scrollbar-width-and-scrollbar-gutter.md): Use scrollbar-width to thin or hide scrollbars and scrollbar-gutter to prevent layout shift. Browser support, examples, and gotchas. (2024-12-19)
- [Add Auth to Astro 5 with Clerk in 5 Minutes](https://www.trevorlasn.com/blog/astro-and-clerk.md): The simplest setup for adding Clerk authentication to your Astro project, with minimal code (2024-12-18)
- [CSS ::target-text for Text Highlighting](https://www.trevorlasn.com/blog/css-target-text.md): A look at how browsers can highlight text fragments using CSS ::target-text, making text sharing and navigation more user-friendly (2024-12-17)
- [align-content: The Simplest Way to Center Content with CSS](https://www.trevorlasn.com/blog/css-align-content-in-block-layouts.md): Finally, we can center things in block layouts without flexbox gymnastics (2024-12-13)
- [CSS :user-valid and :user-invalid for Friendlier Form Errors](https://www.trevorlasn.com/blog/css-user-valid-and-user-invalid-pseudo-classes.md): The new pseudo-classes :user-valid and :user-invalid give us a smarter way to style form validation states based on user interaction (2024-12-12)
- [HTML Details Element: The Native Accordion You're Not Using](https://www.trevorlasn.com/blog/html-details-element.md): Discover how the HTML details element can replace your JavaScript accordions and why it might be better than your current solution (2024-12-10)
- [Tattoos Won't Break Your Tech Career](https://www.trevorlasn.com/blog/tattoos-for-office-workers.md): I have a sword tattooed on my neck and ten years in tech. Why tattoos won't hold back a tech career, and why interviews should judge skills, not appearance. (2024-12-10)
- [navigator.clipboard: The Async Clipboard API in JavaScript](https://www.trevorlasn.com/blog/javascript-navigator-clipboard.md): Copy and paste text, images, and files using the new navigator.clipboard API (2024-12-07)
- [CSS @supports: Write Future-Proof CSS](https://www.trevorlasn.com/blog/detect-css-features-with-supports-property.md): Use CSS @supports to check whether a browser supports a feature such as grid, and give other browsers a fallback. How it works, with multiple conditions. (2024-12-06)
- [CSS Supports Nesting Now](https://www.trevorlasn.com/blog/css-supports-nesting-now.md): CSS nesting is finally supported in all major browsers. Write cleaner, organized stylesheets without Sass or Less (2024-12-06)
- [CSS content-visibility: Skip Rendering Offscreen Content](https://www.trevorlasn.com/blog/css-content-visibility.md): content-visibility: auto lets the browser skip layout and paint for offscreen elements until they are needed. How to use it with contain-intrinsic-size. (2024-12-05)
- [CSS :has() - The Parent Selector We've Always Wanted](https://www.trevorlasn.com/blog/has-css-functional-pseudo-class.md): Transform your CSS with :has(), the game-changing selector that finally lets us style elements based on their children. (2024-12-04)
- [link rel=modulepreload: Load JavaScript Modules Sooner](https://www.trevorlasn.com/blog/module-preload.md): rel=modulepreload fetches, parses and compiles an ES module before a script imports it. How to use it, and why each module in the graph needs its own link. (2024-12-04)
- [LH and RLH: The CSS Units That Make Vertical Spacing Easy](https://www.trevorlasn.com/blog/css-lh-and-rlh-units.md): Exploring new CSS line-height units that eliminate guesswork from vertical rhythm (2024-12-03)
- [The HTML Search Element: A Native Tag for Search Forms](https://www.trevorlasn.com/blog/html-search-element.md): The <search> element wraps a search form or filter controls so browsers and screen readers know their purpose. When to use it, with input type=search examples. (2024-12-02)
- [Web Performance API: Measure What Matters](https://www.trevorlasn.com/blog/performance-web-api-in-javascript.md): From slow to fast: Using JavaScript's Performance API to optimize web apps (2024-11-29)
- [HTTP CONNECT: Building Secure Tunnels Through Proxies](https://www.trevorlasn.com/blog/http-connect.md): HTTP CONNECT asks a proxy to open a TCP tunnel to a host, so HTTPS passes through still encrypted. How the method works, a Node.js client, and common pitfalls. (2024-11-28)
- [Preload Responsive Images with imagesrcset and imagesizes](https://www.trevorlasn.com/blog/preloading-responsive-images.md): A plain preload link fetches the wrong file for a responsive image. Add imagesrcset and imagesizes to link rel=preload so the browser picks the same image. (2024-11-28)
- [You Don't Own Your Social Media Accounts](https://www.trevorlasn.com/blog/you-dont-own-your-social-media-accounts.md): Social platforms promise exposure but quietly hold your audience hostage (2024-11-28)
- [JavaScript Scheduler API: Prioritize Tasks with postTask()](https://www.trevorlasn.com/blog/javascript-scheduler-api.md): scheduler.postTask() runs JavaScript at user-blocking, user-visible or background priority, giving finer control than setTimeout(0) over when work runs. (2024-11-26)
- [WebAssembly (Wasm): When (and When Not) to Use It](https://www.trevorlasn.com/blog/webassembly-when-and-when-not-to-use-it.md): Understanding the real use cases for WebAssembly beyond the performance hype (2024-11-25)
- [The Fight to Free JavaScript from Oracle's Control](https://www.trevorlasn.com/blog/oracle-javascript-trademark-saga.md): The creator of JavaScript and Node.js are challenging Oracle's control over the JavaScript name (2024-11-23)
- [Recursion Explained In Simple Terms](https://www.trevorlasn.com/blog/recursion-explained.md): Understanding recursion through real examples - why functions call themselves and when to use them (2024-11-22)
- [Node.js Corepack: Pin Your Yarn and pnpm Versions](https://www.trevorlasn.com/blog/corepack-nodejs.md): Corepack pins the yarn or pnpm version a project uses through packageManager in package.json. Bundled through Node.js 24; on Node.js 25, install it from npm. (2024-11-19)
- [Can OSSPledge Fix Open Source Sustainability?](https://www.trevorlasn.com/blog/can-open-source-pledge-fix-open-source-sustainability.md): The Open Source Pledge aims to address open source sustainability challenges by encouraging companies to pay $2,000 per developer per year (2024-11-17)
- [JavaScript Sets and Maps: Beyond Arrays and Objects](https://www.trevorlasn.com/blog/sets-and-maps-in-javascript.md): How to handle unique values and key-value pairs properly without type coercion and performance issues (2024-11-17)
- [Precise Decimal Math in JavaScript with Fraction.js](https://www.trevorlasn.com/blog/fraction-numbers-in-javascript.md): How to handle exact decimal calculations in JavaScript when floating-point precision isn't good enough (2024-11-16)
- [Exploring JavaScript Symbols](https://www.trevorlasn.com/blog/symbols-in-javascript.md): Deep dive into JavaScript Symbols - what they are, why they matter, and how to use them effectively (2024-11-15)
- [Ghost Jobs Should Be Illegal](https://www.trevorlasn.com/blog/ghost-jobs-should-be-illegal.md): Ghost jobs are postings for roles a company never plans to fill. Why recruiters and hiring managers post them, and what they cost job seekers. (2024-11-15)
- [Can Scrum Be Salvaged?](https://www.trevorlasn.com/blog/can-scrum-be-salvaged.md): Scrum's standups, sprint planning and retros often waste engineers' time. Why a process from 2001 fits today's software poorly, and how some teams make it work. (2024-11-14)
- [Understanding Bitwise Shifts in JavaScript: << and >>](https://www.trevorlasn.com/blog/bitwise-shifts-in-javascript.md): A left shift multiplies a number by 2 per position, and a right shift divides it by 2. How JavaScript's bitwise shift operators work, with binary examples. (2024-11-12)
- [JavaScript Import Attributes (ES2025)](https://www.trevorlasn.com/blog/import-attributes-in-javascript.md): Understanding the new import attributes syntax and why we can't rely on file extensions alone (2024-11-10)
- [Promise.try in JavaScript: One Error Path for Sync and Async](https://www.trevorlasn.com/blog/promise-try-in-javascript.md): Stop mixing try/catch with Promise chains - JavaScript's new Promise.try handles return values, Promises, and errors uniformly (2024-11-10)
- [JavaScript &&= Operator: Logical AND Assignment Explained](https://www.trevorlasn.com/blog/javascript-logical-and-assignment-operator.md): Use the &&= operator to safely update truthy values while preserving falsy states (2024-11-05)
- [Nullish Coalescing Assignment (??=) in JavaScript](https://www.trevorlasn.com/blog/javascript-nullish-coalescing-assignment-operator.md): x ??= y assigns y only when x is null or undefined, so 0, false and empty strings stay. How it differs from || and where it saves code. (2024-11-05)
- [When Will We Have Our First AI CEO?](https://www.trevorlasn.com/blog/ai-ceo.md): Welcome to the future of corporate leadership. It's efficient, profitable, and utterly inhuman (2024-11-04)
- [The Monday Morning Test to Measure Engineering Team Health](https://www.trevorlasn.com/blog/the-monday-morning-test.md): Why the first day back can reveal everything about your engineering team's health (2024-11-04)
- [Apple Pkl: A Configuration Language to Replace JSON and YAML](https://www.trevorlasn.com/blog/pkl-apple-new-configuration-language.md): Pkl, pronounced pickle, is Apple's open source configuration-as-code language, with schemas, validation and immutable values. How it compares to JSON and YAML. (2024-11-01)
- [No, Quantum Computers Won't Break All Encryption](https://www.trevorlasn.com/blog/quantum-computers-wont-break-encryption.md): Symmetric encryption algorithms like Advanced Encryption Standard (AES) are largely quantum-resistant already (2024-10-31)
- [Introducing the Legendary Programmer Hall of Fame](https://www.trevorlasn.com/blog/introducing-legendary-programmer-hall-of-fame.md): Meet the innovators who laid the foundation for modern computing. Their contributions span decades, creating the tools and concepts developers use every day. (2024-10-29)
- [JavaScript Pipeline Operator (|>): The Hack Pipes Proposal](https://www.trevorlasn.com/blog/javascript-pipeline-operator.md): The Stage 2 pipeline operator passes a value through a chain of calls left to right, with % marking where it goes, instead of nesting h(g(f(x))). (2024-10-29)
- [Why localStorage Is Unsafe for Tokens and Secrets](https://www.trevorlasn.com/blog/the-problem-with-local-storage.md): localStorage is vulnerable to XSS and has no expiry or encryption. Learn why httpOnly cookies and sessionStorage are safer for auth tokens. (2024-10-28)
- [JavaScript Falsy Values: All 8, Plus Why [] Is Truthy](https://www.trevorlasn.com/blog/javascript-truthy-and-falsy.md): JavaScript has eight falsy values: false, 0, -0, 0n, an empty string, null, undefined and NaN. Empty arrays and objects are truthy. The edge cases, explained. (2024-10-27)
- [JavaScript && vs || vs ??: Logical Operators Explained](https://www.trevorlasn.com/blog/javascript-logical-operators.md): || returns the first truthy value, && the first falsy one, and ?? falls back only on null or undefined. When to use each, and the cases that trip people up. (2024-10-26)
- [CSSOM: How the CSS Object Model Works in the Browser](https://www.trevorlasn.com/blog/css-object-model-cssom.md): The CSSOM, or CSS Object Model, is the browser's map of every style rule. How it is built beside the DOM, how it computes styles, and how to keep it fast. (2024-10-25)
- [How to Land Your First Tech Job](https://www.trevorlasn.com/blog/how-to-land-your-first-tech-job.md): A developer's guide to tech interviews - from someone who sits on both sides of the table (2024-10-24)
- [Anthropic's Member of Technical Staff (MTS) Title Explained](https://www.trevorlasn.com/blog/anthropic-anti-talent-poaching-tactics.md): Everyone at Anthropic, co-founders included, holds one title: Member of Technical Staff (MTS). Why it makes poaching harder and keeps the culture egalitarian. (2024-10-23)
- [Offload Your Third Party Scripts With Cloudflare Zaraz](https://www.trevorlasn.com/blog/cloudflare-zaraz.md): How I used Cloudflare Zaraz to offload third party scripts and improve my website performance. (2024-10-23)
- [Secretlint: Stop Committing API Keys and Passwords to Git](https://www.trevorlasn.com/blog/secret-lint.md): Secretlint scans your code for API keys, tokens and passwords before they reach Git. Install it, run it in a pre-commit hook with Husky, and pick its rules. (2024-10-22)
- [Repomix (formerly Repopack): Pack a Repo Into One File](https://www.trevorlasn.com/blog/repopack.md): Repomix, formerly Repopack, packs a whole code repository into one file you can share with Claude or ChatGPT. Usage, key features and a word of caution. (2024-10-21)
- [Software Engineer Titles Have Almost Lost Their Meaning](https://www.trevorlasn.com/blog/software-engineer-titles-have-almost-lost-all-their-meaning.md): Examining the Devaluation of Software Engineer Titles and Its Impact on Tech Industry Integrity (2024-10-20)
- [Optimize Your Astro Site's <head> with astro-capo](https://www.trevorlasn.com/blog/astro-capo.md): astro-capo sorts your Astro site's head elements into 11 weighted groups so critical tags like charset come first. How to install it and use it in a layout. (2024-10-19)
- [How to Add Content Security Policy (CSP) Headers to Astro](https://www.trevorlasn.com/blog/csp-headers-astro.md): Add a Content Security Policy to an Astro site to block XSS: Astro 6's built-in CSP, the Astro CSP gotcha, and header setups for Vercel and Cloudflare. (2024-10-16)
- [VoidZero, VC Funding and Open Source JavaScript Tooling](https://www.trevorlasn.com/blog/is-void-zero-a-threat-to-open-source.md): VoidZero, Evan You's company behind Vite, took venture money. What that means for open source, and why its tools stayed MIT as it joins Cloudflare. (2024-10-15)
- [Open Dyslexic Font: Improve Your Web Accessibility](https://www.trevorlasn.com/blog/open-dyslexic-font.md): How to implement the Open-Dyslexic font to enhance readability for users with dyslexia (2024-10-12)
- [Small Habits, Big Impact](https://www.trevorlasn.com/blog/small-habits-big-impact.md): Small daily choices compound over a developer's career. How to treat growth like iterative development, and how one developer went from junior to design lead. (2024-10-12)
- [Ageism in Tech: Why Skills Matter More Than Age](https://www.trevorlasn.com/blog/ageism-in-tech.md): Silicon Valley has a reputation for youth worship. What Google, IBM, Microsoft, Amazon and Apple do about age, and why skills matter more than age. (2024-10-08)
- [How to Launch Software Projects On Time and On Budget](https://www.trevorlasn.com/blog/how-to-launch-software-projects-on-time-and-on-budget.md): Learn the art of scope management to keep your projects fixed in time and cost (2024-10-07)
- [The Credit Vacuum](https://www.trevorlasn.com/blog/the-credit-vacuum.md): Developers make a hundred saves no one notices, then get blamed for the one that slips through. Why credit skips the engineers who build the product. (2024-10-07)
- [A Company Is Not a Family. It's a Sports Team](https://www.trevorlasn.com/blog/a-company-is-not-a-family-its-a-sports-team.md): 'We're not just a company, we're a family!' It's a nice sentiment, sure. But it's also a load of crap. (2024-10-05)
- [Cloudflare Study: 39% of Companies Losing Control of IT](https://www.trevorlasn.com/blog/39-percent-companies-losing-control-of-it-and-security.md): A Forrester study for Cloudflare found 39% of companies losing control of their IT and security, as remote work, cloud apps and new regulations pile up. (2024-10-03)
- [When Tasked with a Problem, Start with the Bigger Picture](https://www.trevorlasn.com/blog/start-with-the-bigger-picture.md): Before you jump into a problem, step back and ask why it matters. How zooming out first, like studying the map in a strategy game, leads to better solutions. (2024-10-03)
- [Barnacle Strategy for Startups](https://www.trevorlasn.com/blog/the-barnacle-strategy.md): The barnacle strategy grows a startup by attaching it to a larger platform's ecosystem, the way a barnacle rides a whale. How it works for founders. (2024-10-03)
- [Micro Frontends: The LEGO Approach to Web Development](https://www.trevorlasn.com/blog/micro-frontends-what-they-are-and-when-to-use.md): Micro frontends split a web app's frontend into parts that teams build and deploy on their own. Their key traits, when they're worth it and the challenges. (2024-10-02)
- [Google's Journey: From Search Engine to Tech Giant](https://www.trevorlasn.com/blog/google-journey-from-search-engine-to-tech-giant.md): Exploring the key innovations and strategies that transformed Google into a global technology leader (2024-10-01)
- [Amazon's Rise to Tech Titan: A Story of Constant Innovation](https://www.trevorlasn.com/blog/amazon-rise-to-tech-titan.md): How Jeff Bezos' 'Day 1' philosophy turned an online bookstore into a global powerhouse (2024-09-30)
- [Apple's Secret Sauce: The Untold Stories Behind Its Success](https://www.trevorlasn.com/blog/what-made-apple-great.md): Diving deep into the lesser-known factors that propelled Apple from a garage startup to a tech titan (2024-09-30)
- [Self-Doubt Holds Most People Back From Their Full Potential](https://www.trevorlasn.com/blog/whats-holding-you-back.md): Self-doubt, more than talent or luck, holds most people back. Stories from Airbnb, Slack and Dropbox, and ways to move past it in a tech career. (2024-09-29)
- [Self-Taught Developer's Guide to Thriving in Tech](https://www.trevorlasn.com/blog/being-a-self-taught-developer.md): Being self-taught is an asset: you solve problems alone, learn by building and adapt fast. How to reframe the usual worries and thrive without a CS degree. (2024-09-28)
- [Make It Work First Before Optimizing](https://www.trevorlasn.com/blog/make-it-work-first-before-you-optimize.md): Users don't care how elegant your code is. They care if it solves their problem. (2024-09-27)
- [Minimum Viable Documentation](https://www.trevorlasn.com/blog/minimum-viable-documentation.md): How to create essential documentation that actually gets read and used. (2024-09-27)
- [Specialist vs Generalist: Choosing Your Career Path in Tech](https://www.trevorlasn.com/blog/specialist-vs-generalist-choosing-your-career-path.md): Generalists know many languages and frameworks; specialists go deep on one hard problem. How each path plays out in tech, and how to choose yours. (2024-09-26)
- [Write Documentation Like a Journalist](https://www.trevorlasn.com/blog/write-documentation-like-a-journalist.md): Create comprehensive, engaging documentation by adopting journalistic techniques for research and storytelling (2024-09-26)
- [Cloudflare's AI Content Control and the Open Web](https://www.trevorlasn.com/blog/cloudflare-ai-content-control.md): Cloudflare lets sites see which AI crawlers visit, block them in one click and charge for access. Since July 2025 it blocks AI crawlers by default. (2024-09-24)
- [Conway's Law: How Your Org Chart Shapes Your Software](https://www.trevorlasn.com/blog/conways-law.md): Why software architecture ends up mirroring the org chart, the path of least resistance behind it, and how to work with Conway's Law or around it. (2024-09-24)
- [Internal Mobility](https://www.trevorlasn.com/blog/internal-mobility.md): Internal mobility lets engineers move into DevOps, security, data or other roles at their own company and keep the trust and knowledge they've built. (2024-09-23)
- [Outdated Docs Are Tech Debt](https://www.trevorlasn.com/blog/outdated-docs-are-tech-debt.md): Teams ship code and put off updating the docs until it is too late. How to find the docs that hurt most, keep them current and make updates part of the culture. (2024-09-22)
- [Weeks of Coding Can Save You Hours of Planning](https://www.trevorlasn.com/blog/week-of-coding-can-save-you-hours-of-planning.md): Weeks of coding can save you hours of planning. The old saying is still a warning worth heeding: how planning saves you, and how to keep it light. (2024-09-21)
- [It's More Fun to Be Competent](https://www.trevorlasn.com/blog/its-more-fun-to-be-competent.md): Once you are competent, you stop second-guessing yourself and panicking at new problems, and take on bigger challenges with excitement. How to build it. (2024-09-20)
- [Code Wins Arguments](https://www.trevorlasn.com/blog/code-wins-arguments.md): How Meta and other companies use the 'code wins arguments' mindset to turn ideas into reality (2024-09-19)
- [Take Your Writing Seriously](https://www.trevorlasn.com/blog/take-your-writing-seriously.md): Sloppy messages make everyone else spend time decoding them. Why clear writing respects your team, and the basic tips I follow for every message. (2024-09-19)
- [Users Can Be Fired](https://www.trevorlasn.com/blog/users-can-be-fired.md): Letting go of difficult or harmful users can be the key to maintaining the health and growth of your product (2024-09-19)
- [A Great Product Doesn't Need Marketing](https://www.trevorlasn.com/blog/a-great-product-doesnt-need-marketing.md): Great products speak for themselves, without the need for massive marketing campaigns (2024-09-18)
- [Amazon's 'No Weasel Words' Rule](https://www.trevorlasn.com/blog/amazons-no-weasel-words-rule.md): How Amazon's emphasis on eliminating weasel words leads to more precise, actionable communication and better decision-making (2024-09-17)
- [The Real Cost of Meetings: What FAANG Does Differently](https://www.trevorlasn.com/blog/the-real-cost-of-meetings.md): A one-hour meeting with nine people costs nine hours of work. How Amazon, Meta, Google, Netflix and Apple replace meetings with written documents. (2024-09-17)
- [What Makes MrBeast So Successful?](https://www.trevorlasn.com/blog/what-makes-mrbeast-so-successful.md): A deep dive into the strategies, mindset, and team culture that have made MrBeast one of the most successful creators on YouTube (2024-09-16)
- [Express 5: What Changed, Release Date and How to Migrate](https://www.trevorlasn.com/blog/whats-new-in-express-5.md): Express 5.0 shipped on October 15, 2024, and 5.1.0 is now the npm default. Removed methods, new path matching, async error handling and Node.js 18+. (2024-09-16)
- [Evolve or Become Irrelevant](https://www.trevorlasn.com/blog/evolve-or-become-irrelevant.md): Why staying relevant in tech means constantly adapting to new technologies and trends (2024-09-15)
- [Speculation Rules API: Prefetch and Prerender Next Pages](https://www.trevorlasn.com/blog/speculation-rules-api.md): How the Speculation Rules API improves web performance by prefetching and prerendering future navigations (2024-09-15)
- [Company Culture Happens Outside Management](https://www.trevorlasn.com/blog/culture-happens-outside-management.md): Company culture grows from what people see rewarded, not from memos. How Google's 20% time and Netflix's vacation policy spread from the ground up. (2024-09-14)
- [Improve PageSpeed Insights Score with Lazy Loading Iframes](https://www.trevorlasn.com/blog/lazy-loading-iframes.md): Set loading=lazy on an iframe and the browser waits to load it until the reader scrolls near. Before-and-after code, the bandwidth saved and browser support. (2024-09-13)
- [Preconnect to Required Origins with rel=preconnect](https://www.trevorlasn.com/blog/preconnect-to-required-origins.md): Using link rel='preconnect' can improve your website's performance by reducing connection setup times to key external domains. (2024-09-13)
- [The Crutch Effect: How AI Tools Became A Crutch](https://www.trevorlasn.com/blog/the-crutch-effect.md): Leaning on AI coding tools too much weakens your skills and leaves you with shallow understanding. How to use AI without letting it become a crutch. (2024-09-13)
- [Mental Toughness is the Best Quality a Developer Can Have](https://www.trevorlasn.com/blog/mental-toughness-is-the-best-quality-a-developer-can-have.md): Debugging, new tools and tight deadlines all test you. Why resilience matters more than knowing every framework, and how developers can build it. (2024-09-12)
- [When Should You Actually Worry About Tech Debt?](https://www.trevorlasn.com/blog/when-should-you-actually-worry-about-tech-debt.md): Technical debt isn't the monster under your bed, but it can become one if ignored too long. (2024-09-12)
- [Google is Killing Information Economics on the Internet](https://www.trevorlasn.com/blog/google-is-killing-information-economics-on-the-internet.md): Google’s Gemini pulls summaries from websites and slaps them directly into the search results (2024-09-11)
- [How to Reduce Cyclomatic Complexity: Practical Tips](https://www.trevorlasn.com/blog/tips-for-reducing-cyclomatic-complexity.md): Reduce cyclomatic complexity: split large functions, replace long conditionals with the strategy pattern, cut parameters and flatten nested loops. (2024-09-10)
- [setImmediate() vs setTimeout(0) in Node.js: The Difference](https://www.trevorlasn.com/blog/setimmediate-vs-settimeout-in-javascript.md): setImmediate runs after I/O, setTimeout(0) runs after the timer phase. Here's when to use each, with event loop diagrams. (2024-09-08)
- [Unrealistic Deadlines In Software Engineering](https://www.trevorlasn.com/blog/unrealistic-deadlines-in-software-engineering.md): Unrealistic deadlines are more than stressful: they set engineers up for failure. Who pays the price, and when to push back. (2024-09-07)
- [Understanding JavaScript Closures With Examples](https://www.trevorlasn.com/blog/understanding-javascript-closures.md): Closures are essential for creating functions that maintain state, without relying on global variables. (2024-09-06)
- [Explicit is better than implicit](https://www.trevorlasn.com/blog/explicit-is-better-than-implicit.md): Clarity is key: being explicit makes your code more readable and maintainable. (2024-09-04)
- [AggregateError in JavaScript: Handle Multiple Errors at Once](https://www.trevorlasn.com/blog/aggregate-error-in-javascript.md): AggregateError holds several errors in one, the way Promise.any() reports that every promise rejected. How to throw and read it, plus the new SuppressedError. (2024-09-02)
- [Mock API Calls in React Tests with Mock Service Worker](https://www.trevorlasn.com/blog/react-testing-mock-service-worker.md): Testing can be tricky, especially when it comes to handling API calls. (2024-09-01)
- [Chrome Built-In AI: What Gemini Nano Means for Startups](https://www.trevorlasn.com/blog/google-chrome-built-in-gemini-nano.md): Chrome runs Gemini Nano on the device, and its built-in AI APIs reached stable in 2025 and 2026. What that means for startups selling simple AI features. (2024-08-31)
- [Early Returns and Intermediate Variables in JavaScript](https://www.trevorlasn.com/blog/embrace-early-returns-and-intermediate-variables-for-readable-code.md): Intermediate variables name each step of complex logic, and early returns handle failing cases first. A JavaScript authentication check, rewritten both ways. (2024-08-30)
- [When Regex Goes Wrong](https://www.trevorlasn.com/blog/when-regex-goes-wrong.md): A regex took Stack Overflow down for 34 minutes in 2016. How catastrophic backtracking works, plus the Cloudflare 2019 and CrowdStrike 2024 incidents. (2024-08-29)
- [Invisible columns in SQL](https://www.trevorlasn.com/blog/invisible-columns-in-sql.md): Invisible columns stay hidden from queries until you name them. How they work in MySQL 8.0.23+, Oracle and MariaDB, and alternatives in PostgreSQL. (2024-08-26)
- [Understanding Vue's Suspense](https://www.trevorlasn.com/blog/understanding-vue-suspense.md): How the Suspense component manages async dependencies and improves loading states in Vue apps (2024-08-23)
- [The Only Widely Known JavaScript Feature Ever Deprecated](https://www.trevorlasn.com/blog/the-only-javascript-feature-that-was-deprecated.md): The 'with' statement is the only feature ever deprecated in JavaScript (2024-08-22)
- [10 Essential Terminal Commands Every Developer Should Know](https://www.trevorlasn.com/blog/10-essential-terminal-commands-every-developer-should-know.md): List of useful Unix terminal commands to boost your productivity. Here are some of my favorites. (2024-08-21)
- [Remove Unnecessary NPM Packages with eslint-plugin-depend](https://www.trevorlasn.com/blog/eslint-plugin-depend.md): eslint-plugin-depend flags npm packages like is-odd that plain JavaScript replaces. How to install and configure it, and its move to @e18e/eslint-plugin. (2024-08-13)
- [Common Causes of Memory Leaks in JavaScript](https://www.trevorlasn.com/blog/common-causes-of-memory-leaks-in-javascript.md): Common causes of JavaScript memory leaks in Node.js and Deno, such as global objects and callbacks that hold large data, and how to profile heap usage. (2024-08-10)
- [Gitleaks: Find and Prevent Credential Leaks in Git Repos](https://www.trevorlasn.com/blog/your-repo-is-a-leaky-ship-probably.md): Automate security flows and ensure your team follows security best practices (2024-08-06)
- [Technical Debt Is Killing Your Business](https://www.trevorlasn.com/blog/technical-debt-is-killing-your-business.md): Technical debt frustrates 62.4% of developers, per Stack Overflow's 2024 survey. What causes it, and the outages at Target and AWS that show its cost. (2024-07-31)
- [Frontend Security Checklist](https://www.trevorlasn.com/blog/frontend-security-checklist.md): A frontend security checklist covering XSS, Content Security Policy headers, CSRF, insecure direct object references and exposed environment variables. (2024-07-30)

## 2023

- [Speeding Up React Apps with Code Splitting and Lazy Loading](https://www.trevorlasn.com/blog/react-lazy-loading.md): Split a React app's bundle with React.lazy and Suspense, lazy-load routes and CSS, and improve Core Web Vitals, which Google uses as a ranking factor. (2023-12-26)
- [Staying Motivated While Building a Startup](https://www.trevorlasn.com/blog/staying-motivated-while-building.md): Building a startup is an exhilarating journey, filled with highs and lows (2023-12-17)

## 2020

- [The What, Why, and How of Using a Skeleton Loading Screen](https://www.trevorlasn.com/blog/the-what-why-and-how-of-using-a-skeleton-loading-screen.md): Skeleton loading screens enhance user experience and make your app feel faster (2020-11-12)
- [Sharp: Fast Image Resizing and Conversion for Node.js](https://www.trevorlasn.com/blog/sharp-high-performance-node-js-image-processing-library.md): Sharp resizes, rotates and converts images in Node.js. It reads JPEG, PNG, WebP, GIF and SVG and writes WebP, AVIF and more. Code for each common task. (2020-10-28)
- [Integrating Docker with React](https://www.trevorlasn.com/blog/docker-with-react.md): Run a React app in Docker: write a Dockerfile, start it with Docker Compose, serve the production build with Nginx and deploy it to a VPS. (2020-07-16)

## 2019

- [How To Restore Your Passion for Programming](https://www.trevorlasn.com/blog/how-to-restore-your-passion-for-programming.md): Lost the will to code? How I got my passion for programming back after burnout: side projects, new challenges, new hobbies, exercise and a real vacation. (2019-11-26)
- [What Does an Entry-Level Programmer Need to Know Exactly?](https://www.trevorlasn.com/blog/what-does-an-entry-level-programmer-need-to-know-exactly.md): What junior developers need to know: a decent grasp of one language and something you built. Why most job requirements are nice-to-haves, and when to apply. (2019-11-06)
- [Mermaid.js: Charts and Diagrams from Markdown-like Syntax](https://www.trevorlasn.com/blog/mermaid-create-charts-and-diagrams-with-markdown.md): Mermaid.js is a simple markdown-like script language for generating charts from text via JavaScript (2019-10-30)
- [Become a Web Developer in 180 Days](https://www.trevorlasn.com/blog/become-a-web-developer-in-180-days.md): A 180-day plan to become a web developer with free resources: HTML and CSS, JavaScript, a frontend library, Node and databases, then your portfolio. (2019-10-29)
- [Peaks.js: Interact With Audio Waveforms](https://www.trevorlasn.com/blog/peaks-js-interact-with-audio-waveforms.md): Peaks.js is a client-side JavaScript component to display and interact with audio waveforms in the browser (2019-10-22)
- [Boost React + Redux Performance with Reselect](https://www.trevorlasn.com/blog/increase-react-redux-application-performance-with-reselect-library.md): Selectors are a powerful tool to optimize state selection and enhance performance in your React and Redux apps. (2019-10-02)
- [Programming Trends to Watch in 2020 and Beyond](https://www.trevorlasn.com/blog/2020-programming-trend-predictions.md): My 2020 predictions: Rust goes mainstream, GraphQL and PWAs grow, WebAssembly gains ground, React stays on top, and JavaScript stays a safe bet. (2019-07-19)
- [How To Fetch Data From an API With React Hooks](https://www.trevorlasn.com/blog/how-to-fetch-data-from-an-api-with-react-hooks.md): Move a class component that fetches API data to React Hooks with useState and useEffect, step by step, and when to use a data-fetching library instead. (2019-06-21)
- [How To Use Redux with React Hooks](https://www.trevorlasn.com/blog/how-to-use-redux-with-react-hooks.md): Use Redux with React Hooks: replace connect with useSelector and useDispatch, available since React Redux 7.1, and refactor a component step by step. (2019-06-20)
- [Demystifying React Hooks](https://www.trevorlasn.com/blog/demystifying-react-hooks.md): React Hooks, added in React 16.8, let you write stateful components without classes. Refactor a class component to a function with useState, step by step. (2019-06-16)

## 2017

- [The Secret to Being a Top Developer Is Building Things](https://www.trevorlasn.com/blog/the-secret-to-being-a-top-developer-is-building-things.md): You can only become a great developer if you're willing to put effort into it (2017-12-02)
