41554 blogs · [ { "id": "01a0d48b-35bd-7003-8c16-66c84da7ebcd", "title": "I rebuilt 0xinsider around Polymarket sports and esports data", "url": "https://www.trevorlasn.com/blog/0xinsider-polymarket-sports-esports-analytics", "published_at": "2026-09-23T00:00:00+00:00" }, { "id": "01a0d48b-35bd-7003-8c16-66c84e2158e4", "title": "I added Agentic Resource Discovery to 0xinsider so agents can find it", "url": "https://www.trevorlasn.com/blog/agentic-resource-discovery-ard", "published_at": "2026-09-23T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d89ef0000", "title": "You have been invited to the 0xInsider.com Discord server!", "url": "https://www.trevorlasn.com/blog/join-0xinsider-discord", "published_at": "2026-07-03T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d8a8de9a7", "title": "Ph.D in failure, Masters in getting back up", "url": "https://www.trevorlasn.com/blog/phd-in-failure-masters-in-getting-back-up", "published_at": "2026-06-06T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d8ad7264e", "title": "AEO and GEO for AI Overviews, ChatGPT, Claude, Gemini, and Perplexity", "url": "https://www.trevorlasn.com/blog/aeo-geo-vs-seo-google-ai-optimization", "published_at": "2026-05-17T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d8bb7f09f", "title": "Why I Chose Rust for 0xInsider", "url": "https://www.trevorlasn.com/blog/why-i-chose-rust-for-my-backend", "published_at": "2026-03-09T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d8ca9d8aa", "title": "Prediction Markets Broke My Brain About Probability", "url": "https://www.trevorlasn.com/blog/prediction-markets-broke-my-brain-about-probability", "published_at": "2026-02-27T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d8d5940d7", "title": "How I Use Vercel BotID to Stop Bots on Auth Endpoints", "url": "https://www.trevorlasn.com/blog/vercel-botid-bot-protection-nextjs", "published_at": "2026-02-16T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d8e29578e", "title": "Google Search Console MCP for Claude Code", "url": "https://www.trevorlasn.com/blog/google-search-console-mcp-claude-code", "published_at": "2026-02-15T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d8ea706a4", "title": "I Built 0xInsider.com — Polymarket Analytics for Sports and Esports in Real-Time", "url": "https://www.trevorlasn.com/blog/0xinsider-prediction-market-whale-tracking", "published_at": "2026-02-11T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d8f7d2fbe", "title": "AI Agents Explained", "url": "https://www.trevorlasn.com/blog/ai-agents-explained", "published_at": "2026-01-30T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d90334af2", "title": "How Prediction Market Arbitrage Works (Polymarket, Kalshi)", "url": "https://www.trevorlasn.com/blog/how-prediction-market-polymarket-kalshi-arbitrage-works", "published_at": "2026-01-29T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d90365d30", "title": "Building Custom MCP Servers with Next.js and mcp-handler", "url": "https://www.trevorlasn.com/blog/building-custom-mcp-servers-with-nextjs-and-mcp-handler", "published_at": "2026-01-28T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d90ed88f3", "title": "CSS :interest-source and :interest-target Pseudo-Classes", "url": "https://www.trevorlasn.com/blog/css-interest-pseudo-classes", "published_at": "2025-11-12T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d9158d1a1", "title": "::details-content: style expandable content without wrapper divs", "url": "https://www.trevorlasn.com/blog/details-content-pseudo-element", "published_at": "2025-11-11T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d925607a5", "title": "View Transitions API: Smooth animations between DOM states", "url": "https://www.trevorlasn.com/blog/view-transitions-api", "published_at": "2025-11-11T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d92b6f74a", "title": "Chrome DevTools MCP: Let Your AI Agent Debug Your App", "url": "https://www.trevorlasn.com/blog/chrome-devtools-mcp", "published_at": "2025-11-10T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d931ba364", "title": "Claude Code Superpowers: How to Add Skills That Plan Before Coding", "url": "https://www.trevorlasn.com/blog/superpowers-claude-code-skills", "published_at": "2025-11-04T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d93e24027", "title": "Lighthouse CI: Catch Performance Regressions Before They Ship", "url": "https://www.trevorlasn.com/blog/lighthouse-ci", "published_at": "2025-11-03T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d93fe1a91", "title": "Next.js DevTools MCP: Your Development Server Just Got Smarter", "url": "https://www.trevorlasn.com/blog/next-js-devtools-mcp", "published_at": "2025-11-02T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d944d8777", "title": "Context7 MCP: Stop LLM Hallucinations with Live Docs", "url": "https://www.trevorlasn.com/blog/context7-mcp", "published_at": "2025-11-01T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d95027ed7", "title": "IndexNow: Get Pages Indexed in Minutes, Not Weeks", "url": "https://www.trevorlasn.com/blog/how-to-setup-indexnow-for-instant-search-engine-indexing", "published_at": "2025-10-27T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d95675bfd", "title": "What's New in Next.js 16: Every Change Explained", "url": "https://www.trevorlasn.com/blog/whats-new-in-nextjs-16", "published_at": "2025-10-25T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d9662dad2", "title": "Original work is now an endangered species", "url": "https://www.trevorlasn.com/blog/original-work-is-now-an-endangered-species", "published_at": "2025-10-24T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d96dcaf53", "title": "Now is the best time to break into tech", "url": "https://www.trevorlasn.com/blog/now-is-the-best-time-to-break-into-tech", "published_at": "2025-10-20T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d9776f2a6", "title": "Is it even worth learning to code?", "url": "https://www.trevorlasn.com/blog/is-it-even-worth-to-learn-coding", "published_at": "2025-10-17T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d9797dde3", "title": "Anthropic's Sequential Thinking MCP", "url": "https://www.trevorlasn.com/blog/anthropic-sequential-thinking-mcp", "published_at": "2025-09-07T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d9830b155", "title": "NPQ: Open source CLI tool that audits and protects your npm installs from malicious packages", "url": "https://www.trevorlasn.com/blog/npq-protects-npm-installs-from-malicious-packages", "published_at": "2025-07-26T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d9903d7a8", "title": "Google's AI distribution advantage", "url": "https://www.trevorlasn.com/blog/google-ai-distribution-advantage", "published_at": "2025-07-25T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d99d13e40", "title": "How JavaScript Was Written Back In the Day", "url": "https://www.trevorlasn.com/blog/revisiting-legacy-javascript", "published_at": "2025-06-12T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d99e5a831", "title": "JavaScript compile hints: what they are and when to use them", "url": "https://www.trevorlasn.com/blog/javascript-compile-hints", "published_at": "2025-05-12T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d9aae0f50", "title": "Error.isError(): A Better Way to Check Error Types in JavaScript", "url": "https://www.trevorlasn.com/blog/error-iserror-javascript", "published_at": "2025-05-09T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d9acad454", "title": "Robust Data Fetching Architecture For Complex React/Next.js Apps", "url": "https://www.trevorlasn.com/blog/fetching-data-for-complex-next-and-react-apps", "published_at": "2025-05-04T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d9ba03d47", "title": "Float16Array in JavaScript", "url": "https://www.trevorlasn.com/blog/float16array-javascript", "published_at": "2025-04-14T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d9bce9a3b", "title": "Understanding Agent2Agent (A2A): A Protocol for LLM Communication", "url": "https://www.trevorlasn.com/blog/agent-2-agent-protocol-a2a", "published_at": "2025-04-13T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d9c74ca16", "title": "Why I Value Firebreak Sprints for Managing Technical Debt", "url": "https://www.trevorlasn.com/blog/firebreak-sprints", "published_at": "2025-04-08T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d9d5d8bfc", "title": "CVE-2025-29927 - Next.js Middleware Bypass Explained In Simple Terms", "url": "https://www.trevorlasn.com/blog/cve-2025-29927-nextjs-middleware", "published_at": "2025-04-06T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d9e294e71", "title": "The 5:1 Rule: Effective Performance Reviews For High-Performing Teams", "url": "https://www.trevorlasn.com/blog/the-5-1-rule", "published_at": "2025-03-20T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d9e66d6b0", "title": "Intl.DurationFormat: Format Time Durations with Locale Support", "url": "https://www.trevorlasn.com/blog/intl-durationformat-javascript-time-durations-with-locale-support", "published_at": "2025-03-13T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d9e761d15", "title": "Open-source is where dreams go to die", "url": "https://www.trevorlasn.com/blog/open-source-is-where-dreams-go-to-die", "published_at": "2025-02-26T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d9f0880a0", "title": "Don't bullshit", "url": "https://www.trevorlasn.com/blog/dont-bullshit", "published_at": "2025-02-12T13:22:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0d9f97ce87", "title": "Keep Your Node.js Apps Secure with `npx is-my-node-vulnerable`", "url": "https://www.trevorlasn.com/blog/is-my-node-vulnerable", "published_at": "2025-01-29T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0da05d1f23", "title": "Native Popover Element with HTML", "url": "https://www.trevorlasn.com/blog/native-popover-with-html", "published_at": "2025-01-24T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0da0ca5231", "title": "WeakRefs in JavaScript: Explained In Simple Terms", "url": "https://www.trevorlasn.com/blog/weakref-javascipt", "published_at": "2025-01-07T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0da151238b", "title": "Honey Quietly Hijacked Creator Revenue Through Affiliate Link Switching", "url": "https://www.trevorlasn.com/blog/honey", "published_at": "2025-01-04T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0da248c939", "title": "Node.js AsyncLocalStorage: Pass Context Without Prop Drilling", "url": "https://www.trevorlasn.com/blog/node-async-local-storage", "published_at": "2024-12-20T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0da305832e", "title": "CSS scrollbar-width and scrollbar-gutter Explained", "url": "https://www.trevorlasn.com/blog/css-scrollbar-width-and-scrollbar-gutter", "published_at": "2024-12-19T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0da3126536", "title": "Add Auth to Astro 5 with Clerk in 5 Minutes", "url": "https://www.trevorlasn.com/blog/astro-and-clerk", "published_at": "2024-12-18T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0da34731b1", "title": "CSS ::target-text for Text Highlighting", "url": "https://www.trevorlasn.com/blog/css-target-text", "published_at": "2024-12-17T12:45:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0da3f67823", "title": "align-content: The Simplest Way to Center Content with CSS", "url": "https://www.trevorlasn.com/blog/css-align-content-in-block-layouts", "published_at": "2024-12-13T12:45:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0da44dbf73", "title": "Form Validation That Doesn't Annoy Users: CSS :user-valid and :user-invalid", "url": "https://www.trevorlasn.com/blog/css-user-valid-and-user-invalid-pseudo-classes", "published_at": "2024-12-12T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0da488bcbc", "title": "HTML Details Element: The Native Accordion You're Not Using", "url": "https://www.trevorlasn.com/blog/html-details-element", "published_at": "2024-12-10T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0da4c21f14", "title": "Tattoos Won't Break Your Tech Career", "url": "https://www.trevorlasn.com/blog/tattoos-for-office-workers", "published_at": "2024-12-10T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0da59f26a6", "title": "navigator.clipboard - The Asynchronous Clipboard API in JavaScript", "url": "https://www.trevorlasn.com/blog/javascript-navigator-clipboard", "published_at": "2024-12-07T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0da65b00b7", "title": "CSS @supports: Write Future-Proof CSS", "url": "https://www.trevorlasn.com/blog/detect-css-features-with-supports-property", "published_at": "2024-12-06T13:22:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0da6fb1a34", "title": "CSS Supports Nesting Now", "url": "https://www.trevorlasn.com/blog/css-supports-nesting-now", "published_at": "2024-12-06T12:45:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0da7062a26", "title": "CSS content-visibility: The Web Performance Boost You Might Be Missing", "url": "https://www.trevorlasn.com/blog/css-content-visibility", "published_at": "2024-12-05T12:45:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0da76426a5", "title": "CSS :has() - The Parent Selector We've Always Wanted", "url": "https://www.trevorlasn.com/blog/has-css-functional-pseudo-class", "published_at": "2024-12-04T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0da77cf5f3", "title": "link rel='modulepreload': Optimize JavaScript Module Loading", "url": "https://www.trevorlasn.com/blog/module-preload", "published_at": "2024-12-04T00:00:00+00:00" }, { "id": "01a08c58-8697-7304-ad7a-bf0da841c1c4", "title": "LH and RLH: The CSS Units That Make Vertical Spacing Easy", "url": "https://www.trevorlasn.com/blog/css-lh-and-rlh-units", "published_at": "2024-12-03T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06c2634f1a", "title": "The HTML Native Search Element", "url": "https://www.trevorlasn.com/blog/html-search-element", "published_at": "2024-12-02T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06c2986c57", "title": "Web Performance API: Measure What Matters", "url": "https://www.trevorlasn.com/blog/performance-web-api-in-javascript", "published_at": "2024-11-29T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06c2e140c5", "title": "HTTP CONNECT: Building Secure Tunnels Through Proxies", "url": "https://www.trevorlasn.com/blog/http-connect", "published_at": "2024-11-28T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06c361b7a9", "title": "Preloading Responsive Images", "url": "https://www.trevorlasn.com/blog/preloading-responsive-images", "published_at": "2024-11-28T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06c3d46f5f", "title": "You Don't Own Your Social Media Accounts", "url": "https://www.trevorlasn.com/blog/you-dont-own-your-social-media-accounts", "published_at": "2024-11-28T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06c441fc38", "title": "Working with JavaScript's Scheduler API", "url": "https://www.trevorlasn.com/blog/javascript-scheduler-api", "published_at": "2024-11-26T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06c470d8ae", "title": "WebAssembly (Wasm): When (and When Not) to Use It", "url": "https://www.trevorlasn.com/blog/webassembly-when-and-when-not-to-use-it", "published_at": "2024-11-25T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06c54315d8", "title": "The Fight to Free JavaScript from Oracle's Control", "url": "https://www.trevorlasn.com/blog/oracle-javascript-trademark-saga", "published_at": "2024-11-23T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06c54c1923", "title": "Recursion Explained In Simple Terms", "url": "https://www.trevorlasn.com/blog/recursion-explained", "published_at": "2024-11-22T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06c5849c4a", "title": "Node.js Corepack: Version Control for Package Managers", "url": "https://www.trevorlasn.com/blog/corepack-nodejs", "published_at": "2024-11-19T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06c66f5071", "title": "Can OSSPledge Fix Open Source Sustainability?", "url": "https://www.trevorlasn.com/blog/can-open-source-pledge-fix-open-source-sustainability", "published_at": "2024-11-17T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06c7377c2c", "title": "JavaScript Sets and Maps: Beyond Arrays and Objects", "url": "https://www.trevorlasn.com/blog/sets-and-maps-in-javascript", "published_at": "2024-11-17T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06c740a357", "title": "Precise Decimal Math in JavaScript with Fraction.js", "url": "https://www.trevorlasn.com/blog/fraction-numbers-in-javascript", "published_at": "2024-11-16T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06c79f107c", "title": "Exploring JavaScript Symbols", "url": "https://www.trevorlasn.com/blog/symbols-in-javascript", "published_at": "2024-11-15T13:45:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06c88becf2", "title": "Ghost Jobs Should Be Illegal", "url": "https://www.trevorlasn.com/blog/ghost-jobs-should-be-illegal", "published_at": "2024-11-15T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06c959bd43", "title": "Can Scrum Be Salvaged?", "url": "https://www.trevorlasn.com/blog/can-scrum-be-salvaged", "published_at": "2024-11-14T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06c9b3ac13", "title": "Understanding Bitwise Shifts in JavaScript: >", "url": "https://www.trevorlasn.com/blog/bitwise-shifts-in-javascript", "published_at": "2024-11-12T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06ca6a4d94", "title": "JavaScript Import Attributes (ES2025)", "url": "https://www.trevorlasn.com/blog/import-attributes-in-javascript", "published_at": "2024-11-10T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06cb1b72e3", "title": "Promise.try: Unified Error Handling for Sync and Async JavaScript Code (ES2025)", "url": "https://www.trevorlasn.com/blog/promise-try-in-javascript", "published_at": "2024-11-10T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06cb7fa9de", "title": "JavaScript's &&= Operator: Understanding Logical AND Assignment", "url": "https://www.trevorlasn.com/blog/javascript-logical-and-assignment-operator", "published_at": "2024-11-05T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06cc6ace9e", "title": "JavaScript's ??= Operator: Default Values Made Simple", "url": "https://www.trevorlasn.com/blog/javascript-nullish-coalescing-assignment-operator", "published_at": "2024-11-05T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06cd37dbb5", "title": "When Will We Have Our First AI CEO?", "url": "https://www.trevorlasn.com/blog/ai-ceo", "published_at": "2024-11-04T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06cd6dbb16", "title": "The Monday Morning Test to Measure Engineering Team Health", "url": "https://www.trevorlasn.com/blog/the-monday-morning-test", "published_at": "2024-11-04T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06cdb8de5c", "title": "Pkl: Apple's New Configuration Language That Could Replace JSON and YAML", "url": "https://www.trevorlasn.com/blog/pkl-apple-new-configuration-language", "published_at": "2024-11-01T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06ce36999f", "title": "No, Quantum Computers Won't Break All Encryption", "url": "https://www.trevorlasn.com/blog/quantum-computers-wont-break-encryption", "published_at": "2024-10-31T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06ce448a16", "title": "Introducing the Legendary Programmer Hall of Fame", "url": "https://www.trevorlasn.com/blog/introducing-legendary-programmer-hall-of-fame", "published_at": "2024-10-29T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06cee72306", "title": "What is the JavaScript Pipeline Operator |>", "url": "https://www.trevorlasn.com/blog/javascript-pipeline-operator", "published_at": "2024-10-29T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06cf24eabc", "title": "Why localStorage Is Unsafe for Tokens and Secrets", "url": "https://www.trevorlasn.com/blog/the-problem-with-local-storage", "published_at": "2024-10-28T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06cfb63f75", "title": "JavaScript Truthy and Falsy Values: Complete Reference", "url": "https://www.trevorlasn.com/blog/javascript-truthy-and-falsy", "published_at": "2024-10-27T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06d08a3da6", "title": "JavaScript Operators: '||' vs '&&' vs '??'", "url": "https://www.trevorlasn.com/blog/javascript-logical-operators", "published_at": "2024-10-26T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06d13edbfb", "title": "Inside the CSS Engine: CSSOM Explained", "url": "https://www.trevorlasn.com/blog/css-object-model-cssom", "published_at": "2024-10-25T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06d14434fd", "title": "How to Land Your First Tech Job", "url": "https://www.trevorlasn.com/blog/how-to-land-your-first-tech-job", "published_at": "2024-10-24T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06d1de66e2", "title": "Why Anthropic (Claude AI) Uses 'Member of Technical Staff' for All Engineers (Including Co-founders)", "url": "https://www.trevorlasn.com/blog/anthropic-anti-talent-poaching-tactics", "published_at": "2024-10-23T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06d2d47b5a", "title": "Offload Your Third Party Scripts With Cloudflare Zaraz", "url": "https://www.trevorlasn.com/blog/cloudflare-zaraz", "published_at": "2024-10-23T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06d317b669", "title": "SecretLint — A Linter for Preventing Committing Credentials", "url": "https://www.trevorlasn.com/blog/secret-lint", "published_at": "2024-10-22T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06d370cc97", "title": "Repopack (now Repomix): Pack Your Entire Repository Into A Single File", "url": "https://www.trevorlasn.com/blog/repopack", "published_at": "2024-10-21T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06d3b14698", "title": "Software Engineer Titles Have (Almost) Lost All Their Meaning", "url": "https://www.trevorlasn.com/blog/software-engineer-titles-have-almost-lost-all-their-meaning", "published_at": "2024-10-20T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06d3c42bba", "title": "Optimize Your Astro Site's with astro-capo", "url": "https://www.trevorlasn.com/blog/astro-capo", "published_at": "2024-10-19T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06d400f9b1", "title": "How To Implement Content Security Policy (CSP) Headers For Astro", "url": "https://www.trevorlasn.com/blog/csp-headers-astro", "published_at": "2024-10-16T00:00:00+00:00" }, { "id": "01a08c58-8698-72aa-b9ae-5e06d4763470", "title": "VoidZero: Threat or Catalyst for Open Source JavaScript Tooling?", "url": "https://www.trevorlasn.com/blog/is-void-zero-a-threat-to-open-source", "published_at": "2024-10-15T00:00:00+00:00" } ] posts Claim your blog
Back to Trevor I. Lasn, Building 0xinsider
Blog · corpus.blog/blogs/trevorlasn.com/posts

Trevor I. Lasn, Building 0xinsider

trevorlasn.com

2026

2025

2024