[{"data":1,"prerenderedAt":576},["ShallowReactive",2],{"navigation":3,"\u002Fblog\u002Freview-that-ai-code":204,"\u002Fblog\u002Freview-that-ai-code-surround":572},[4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200],{"title":5,"path":6,"stem":7},"You do not have time to not have tests","\u002Fblog\u002Fyou-do-not-have-time-to-not-have-tests","2.blog\u002F20211217.you-do-not-have-time-to-not-have-tests",{"title":9,"path":10,"stem":11},"Migrate Vue 2 with Vuetify and Jest to Vite and Vitest","\u002Fblog\u002Fmigrate-vue-2-with-vuetify-and-jest-to-vite-and-vitest","2.blog\u002F20220109.migrate-vue-2-with-vuetify-and-jest-to-vite-and-vitest",{"title":13,"path":14,"stem":15},"I am a Dark Matter Developer","\u002Fblog\u002Fi-am-a-dark-matter-developer","2.blog\u002F20220626.i-am-a-dark-matter-developer",{"title":17,"path":18,"stem":19},"Why using Conventional commits is useful","\u002Fblog\u002Fusing-conventional-commits","2.blog\u002F20240623.using-conventional-commits",{"title":21,"path":22,"stem":23},"Why you should make a toolbox repository","\u002Fblog\u002Fwhy-you-should-make-a-toolbox-repository","2.blog\u002F20240630.Why-you-should-make-a-toolbox-repository",{"title":25,"path":26,"stem":27},"Apache Airflow Part 1 - Why and Goals for a near Serverless ELT","\u002Fblog\u002Fapache-airflow-part-1-why-and-goals","2.blog\u002F20240710.apache-airflow-part-1-why-and-goals",{"title":29,"path":30,"stem":31},"Oh My Zsh on your server","\u002Fblog\u002Foh-my-zsh-on-your-server","2.blog\u002F20240711.oh-my-zsh-on-your-server",{"title":33,"path":34,"stem":35},"Fire tablet and YouTube Kids","\u002Fblog\u002Ffire-tablet-and-youtube-kids","2.blog\u002F20240714.fire-tablet-and-youtube-kids",{"title":37,"path":38,"stem":39},"Using Ollama and Continue as a GitHub Copilot Alternative","\u002Fblog\u002Fusing-ollama-and-continue-as-github-copilot-alternative","2.blog\u002F20240723.using-ollama-and-continue-as-github-copilot-alternative",{"title":41,"path":42,"stem":43},"Debugging Local Packages Made Easy with pnpm","\u002Fblog\u002Fdebugging-local-packages-with-pnpm-link","2.blog\u002F20250422.debugging local-packages-with-pnpm-link",{"title":45,"path":46,"stem":47},"Two Weeks with Cloudflare AI and Tools","\u002Fblog\u002Ftwo-weeks-with-cloudflare-ai-and-tools","2.blog\u002F20250509.two-weeks-with-cloudflare-aI-and-tools",{"title":49,"path":50,"stem":51},"Adding Prompts to VS Code - How I Learned to Stop Worrying and Love AI Context","\u002Fblog\u002Fadding-prompts-to-vscode","2.blog\u002F20250528.adding-prompts-to-vscode",{"title":53,"path":54,"stem":55},"My Best Practices","\u002Fblog\u002Fmy-best-practicies","2.blog\u002F20250607.my-best-practicies",{"title":57,"path":58,"stem":59},"Creating my own CLI Tool - Towles Tool","\u002Fblog\u002Ftowles-tool","2.blog\u002F20250607.towles-tool",{"title":61,"path":62,"stem":63},"Software Development Best Practices & ITIL","\u002Fblog\u002Fsoftware-engineering-and-itil-best-practices","2.blog\u002F20250612.software-engineering-and-itil-best-practices",{"title":65,"path":66,"stem":67},"Voice to Text","\u002Fblog\u002Fvoice-to-text","2.blog\u002F20250622.voice-to-text",{"title":69,"path":70,"stem":71},"Setting Up ComfyUI - A Better Alternative to Fooocus","\u002Fblog\u002Fcomfy-ui-setup","2.blog\u002F20250628.comfy-ui-setup",{"title":73,"path":74,"stem":75},"Voice to System","\u002Fblog\u002Fvoice-to-system","2.blog\u002F20250705.voice-to-system",{"title":77,"path":78,"stem":79},"Tips for Claude Code","\u002Fblog\u002Ftips-for-claude-code","2.blog\u002F20250713.tips-for-claude-code",{"title":81,"path":82,"stem":83},"Review That AI Code: Why I Read Every Line Generated Code","\u002Fblog\u002Freview-that-ai-code","2.blog\u002F20250720.review-that-ai-code",{"title":85,"path":86,"stem":87},"My Context Engineering Journey: From Dev Scripts to AI Collaboration","\u002Fblog\u002F20250803-1.my-context-engineering-journey","2.blog\u002F20250803-1.my-context-engineering-journey",{"title":89,"path":90,"stem":91},"Context Engineering at Scale: Enterprise Lessons and the Future of Development","\u002Fblog\u002F20250803-2.context-engineering-at-scale","2.blog\u002F20250803-2.context-engineering-at-scale",{"title":93,"path":94,"stem":95},"Check That Your Tools and Linters Do Not Burn Tokens","\u002Fblog\u002Fcheck-that-your-tools-and-linters-do-not-burn-tokens","2.blog\u002F20250806.check-that-your-tools-and-linters-do-not-burn-tokens",{"title":97,"path":98,"stem":99},"Markdown + AI: The Communication Protocol That Changes Everything","\u002Fblog\u002Fmarkdown-plus-ai-the-communication-protocol-that-changes-everything","2.blog\u002F20250814.markdown-plus-ai-the-communication-protocol-that-changes-everything",{"title":101,"path":102,"stem":103},"Finally: Type-Safe AI in Production (And Why I'm Here For It)","\u002Fblog\u002Ffinally-type-safe-ai-in-production-and-why-im-here-for-it","2.blog\u002F20250819.finally-type-safe-ai-in-production-and-why-im-here-for-it",{"title":105,"path":106,"stem":107},"Dotfiles: Masterpiece or Late Stage Picasso?","\u002Fblog\u002Fdotfiles-masterpiece-or-late-stage-picasso","2.blog\u002F20250822.dotfiles-masterpiece-or-late-stage-picasso",{"title":109,"path":110,"stem":111},"Beyond API Wrappers: Building State-Driven MCP Servers for Long-Horizon Agent Orchestration","\u002Fblog\u002Fbeyond-api-wrappers-mcp-servers","2.blog\u002F20250907.beyond-api-wrappers-mcp-servers",{"title":113,"path":114,"stem":115},"Why Vertical Integration Wins: A Software Engineer's Case for Owning Your Stack","\u002Fblog\u002Fwhy-i-bought-tesla-model-3-vertical-integration","2.blog\u002F20250928.why-i-bought-tesla-model-3-vertical-integration",{"title":117,"path":118,"stem":119},"The Min-Maxer's Trifecta: Building Tools for the Game You Actually Play","\u002Fblog\u002Fmin-maxer-trifecta","2.blog\u002F20251004.min-maxer-trifecta",{"title":121,"path":122,"stem":123},"Read The Source: Learning by Cutting Out The Middleman and RTFM","\u002Fblog\u002Fread-the-source","2.blog\u002F20251010.read-the-source",{"title":125,"path":126,"stem":127},"The Exponential Shift: Why AI Progress Feels Different Now","\u002Fblog\u002Fthe-exponential-shift","2.blog\u002F20251015.the-exponential-shift",{"title":129,"path":130,"stem":131},"Plan Mode for Your Problems, Edit Mode for Claude's","\u002Fblog\u002Fplan-mode-problems-edit-mode-solutions","2.blog\u002F20251019.plan-mode-problems-edit-mode-solutions",{"title":133,"path":134,"stem":135},"AWS Aurora DSQL Looked Perfect Until I Needed the Connection String","\u002Fblog\u002Faws-aurora-dsql-postgres-serverless-authentication","2.blog\u002F20251028.aws-aurora-dsql-postgres-serverless-authentication",{"title":137,"path":138,"stem":139},"Switchback: Browser History for Your Thoughts","\u002Fblog\u002Fswitchback-second-order-reasoning","2.blog\u002F20251205.switchback-second-order-reasoning",{"title":141,"path":142,"stem":143},"AI Pairing: Notes to Self","\u002Fblog\u002Fai-pairing-notes-to-self","2.blog\u002F20251216.ai-pairing-notes-to-self",{"title":145,"path":146,"stem":147},"I've Been Sleeping on Zellij","\u002Fblog\u002Fsleeping-on-zellij","2.blog\u002F20251229.sleeping-on-zellij",{"title":149,"path":150,"stem":151},"Implementing a Ralph Wiggum Loop: The Secret is Session Markers","\u002Fblog\u002Fimplementing-ralph-wiggum-loop-for-autonomous-ai-coding","2.blog\u002F20260114.implementing-ralph-wiggum-loop-for-autonomous-ai-coding",{"title":153,"path":154,"stem":155},"Goodhart's Law Ate My Context Window","\u002Fblog\u002Fgoodharts-law-ate-my-context-window","2.blog\u002F20260119.goodharts-law-ate-my-context-window",{"title":157,"path":158,"stem":159},"Claude Code's Hidden Multi-Agent System Is Real","\u002Fblog\u002Fclaude-code-hidden-multi-agent-system","2.blog\u002F20260124.claude-code-hidden-multi-agent-system",{"title":161,"path":162,"stem":163},"Free Printable Math Sheets for Kids — Number Chart, Skip Counting, Multiplication, and More","\u002Fblog\u002Ffree-printable-number-chart-and-coin-sheets","2.blog\u002F20260214.free-printable-number-chart-and-coin-sheets",{"title":165,"path":166,"stem":167},"We Are Near the End of the Exponential","\u002Fblog\u002Fnear-the-end-of-the-exponential","2.blog\u002F20260214.near-the-end-of-the-exponential",{"title":169,"path":170,"stem":171},"Free Printable Language Arts Sheets for Kids — Sight Words, Parts of Speech, Homophones, and More","\u002Fblog\u002Ffree-printable-sight-words-and-grammar-sheets","2.blog\u002F20260215.free-printable-sight-words-and-grammar-sheets",{"title":173,"path":174,"stem":175},"Interactive Code Execution with Artifacts","\u002Fblog\u002Finteractive-code-execution-with-artifacts","2.blog\u002F20260215.interactive-code-execution-with-artifacts",{"title":177,"path":178,"stem":179},"Free Printable Telling Time Worksheet for Kids — Clock Reference & Practice Sheet","\u002Fblog\u002Ffree-printable-telling-time-worksheet","2.blog\u002F20260216.free-printable-telling-time-worksheet",{"title":181,"path":182,"stem":183},"Claude Code Skills: Teaching AI Your Playbook","\u002Fblog\u002Fclaude-code-skills-guide","2.blog\u002F20260221.claude-code-skills-guide",{"title":185,"path":186,"stem":187},"Building a Multi-Agent Loan Approval System with Human-in-the-Loop","\u002Fblog\u002Fmulti-agent-loan-approval-human-in-the-loop","2.blog\u002F20260225.multi-agent-loan-approval-human-in-the-loop",{"title":189,"path":190,"stem":191},"The Inception of AI Infrastructure: Bottlenecks All the Way Down","\u002Fblog\u002Fbiggest-bottleneck-scaling-ai-compute","2.blog\u002F20260313.biggest-bottleneck-scaling-ai-compute",{"title":193,"path":194,"stem":195},"What I Tell Teams About Claude Code","\u002Fblog\u002Fwhat-i-tell-teams-about-claude-code","2.blog\u002F20260314.what-i-tell-teams-about-claude-code",{"title":197,"path":198,"stem":199},"The Hardest Part of AI Isn't the AI","\u002Fblog\u002Fthe-hardest-part-of-ai-isnt-the-ai","2.blog\u002F20260327.the-hardest-part-of-ai-isnt-the-ai",{"title":201,"path":202,"stem":203},"Claude Code Hooks: The Capability I Left on the Table","\u002Fblog\u002Fclaude-code-hooks-capability-left-on-the-table","2.blog\u002F20260401.claude-code-hooks-capability-left-on-the-table",{"id":205,"title":81,"authors":206,"badge":212,"body":214,"date":562,"description":563,"extension":287,"image":564,"meta":567,"navigation":568,"path":82,"seo":569,"status":570,"stem":83,"__hash__":571},"posts\u002F2.blog\u002F20250720.review-that-ai-code.md",[207],{"name":208,"to":209,"avatar":210},"Chris Towles","https:\u002F\u002Ftwitter.com\u002FChris_Towles",{"src":211},"\u002Fimages\u002Fctowles-profile-512x512.png",{"label":213},"Claude Code",{"type":215,"value":216,"toc":546},"minimark",[217,222,226,233,236,242,246,252,257,260,266,270,273,279,282,300,303,316,322,326,329,334,345,350,358,363,374,378,381,386,391,394,398,401,415,419,422,450,454,457,471,475,480,491,496,504,509,520,524,527,530,536,539,542],[218,219,221],"h2",{"id":220},"the-moment-everything-changed","The Moment Everything Changed",[223,224,225],"p",{},"Three days. That's how long I spent debugging what looked like a perfect AI-generated function. The linter passed. The tests passed. The code reviews looked clean. But deep in production, users were hitting an edge case that caused silent data corruption—the worst kind of bug.",[223,227,228,229],{},"I had violated my own 25-year rule: ",[230,231,232],"strong",{},"Never ship code you don't fully understand.",[223,234,235],{},"As I traced through that function line by line at 2 AM, I realized I had been seduced by the speed and apparent intelligence of AI code generation. The function was 90% brilliant—elegant error handling, proper async patterns, even thoughtful comments. But that remaining 10% contained assumptions about data structures that were subtly wrong.",[223,237,238,239],{},"That night I created a rule for myself: ",[230,240,241],{},"Always understand the code before using it.",[218,243,245],{"id":244},"my-journey-from-ai-auto-accept-to-strategic-user","My Journey from AI Auto-Accept to Strategic User",[223,247,248,251],{},[230,249,250],{},"Early Days (2023): Joyful Embrace","\nI love autocomplete tools. My grammar and spelling have always been awful, so having a machine help me was a no-brainer.",[223,253,254],{},[230,255,256],{},"Better Autocomplete (2024): Complete Partnership",[223,258,259],{},"AI tools became true partners in my workflow. I started using them not just for suggestions, but as collaborators. I would write a comment describing the function I wanted, and the AI would generate the code.",[223,261,262,265],{},[230,263,264],{},"The New Approach (2025-Present): Expert Partnership","\nAI is more than helpful—it completes functions, entire files, and features by itself. It can generate so much code so quickly it seems like magic. But trusting it without validation introduced the worst types of bugs. I learned to verify everything, work with it as a quick partner that I steered and verified. Not doing so introduced the worst types of bugs: code that mostly worked.",[218,267,269],{"id":268},"the-github-copilot-moment-that-proved-my-point","The GitHub Copilot Moment That Proved My Point",[223,271,272],{},"Let me show you exactly what I mean. As I was writing this very post, GitHub Copilot suggested I complete this sentence:",[274,275,276],"blockquote",{},[223,277,278],{},"\"Because not doing so is like...\"",[223,280,281],{},"With this completion:",[283,284,289],"pre",{"className":285,"code":286,"language":287,"meta":288,"style":288},"language-md shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","giving a child a loaded gun and not teaching them how to use it.\n","md","",[290,291,292],"code",{"__ignoreMap":288},[293,294,297],"span",{"class":295,"line":296},"line",1,[293,298,286],{"class":299},"sTEyZ",[223,301,302],{},"It's the perfect example of AI's fundamental limitation. The suggestion is:",[304,305,306,310,313],"ul",{},[307,308,309],"li",{},"Grammatically correct ✓",[307,311,312],{},"Contextually relevant ✓",[307,314,315],{},"Completely inappropriate ✗",[223,317,318,319],{},"The metaphor is jarring, potentially offensive, and doesn't match my voice or the professional tone I wanted. In text, this creates awkward moments. ",[230,320,321],{},"In code, it creates production incidents.",[218,323,325],{"id":324},"why-code-ai-mistakes-are-1000x-more-dangerous","Why Code AI Mistakes Are 1000x More Dangerous",[223,327,328],{},"When you're writing prose, AI mistakes are obvious and recoverable. When you're writing code, AI mistakes are:",[223,330,331],{},[230,332,333],{},"Syntactically Perfect but Logically Flawed",[304,335,336,339,342],{},[307,337,338],{},"They compile without warnings",[307,340,341],{},"They pass basic tests",[307,343,344],{},"They fail in production under specific conditions",[223,346,347],{},[230,348,349],{},"Subtly Wrong in Ways That Take Time to Surface",[304,351,352,355],{},[307,353,354],{},"Off-by-one errors in edge cases",[307,356,357],{},"Incorrect assumptions about data or processes",[223,359,360],{},[230,361,362],{},"Expensive to Debug",[304,364,365,368,371],{},[307,366,367],{},"The code \"mostly works\" so bugs appear random",[307,369,370],{},"Root cause analysis requires deep understanding of the generated logic",[307,372,373],{},"It can produce code infinitely faster than I can debug it.",[218,375,377],{"id":376},"my-battle-tested-framework-for-ai-assisted-development","My Battle-Tested Framework for AI-Assisted Development",[223,379,380],{},"After two years of refining my approach, here's my systematic framework:",[382,383,385],"h3",{"id":384},"the-line-by-line-rule","The Line-by-Line Rule",[223,387,388],{},[230,389,390],{},"NEVER commit AI-generated code without reading every single line.",[223,392,393],{},"Not skimming. Not glancing. Reading with the same attention you'd give to code written by a junior developer who's having a bad day.",[382,395,397],{"id":396},"the-small-commits-strategy","The Small Commits Strategy",[223,399,400],{},"Keep AI-generated changes small enough that you can:",[304,402,403,406,409,412],{},[307,404,405],{},"Understand every line's purpose",[307,407,408],{},"Trace the logic flow completely",[307,410,411],{},"Identify potential edge cases",[307,413,414],{},"Review the changes in under 10 minutes",[382,416,418],{"id":417},"the-context-validation-process","The Context Validation Process",[223,420,421],{},"For every AI suggestion, ask:",[423,424,425,430,435,440,445],"ol",{},[307,426,427],{},[230,428,429],{},"Does this match my coding standards?",[307,431,432],{},[230,433,434],{},"Are the assumptions about data types correct?",[307,436,437],{},[230,438,439],{},"What happens in edge cases (null, empty, undefined)?",[307,441,442],{},[230,443,444],{},"Is the error handling appropriate?",[307,446,447],{},[230,448,449],{},"Does this integrate properly with existing systems?",[382,451,453],{"id":452},"the-test-first-verification","The Test-First Verification",[223,455,456],{},"Before accepting any AI-generated code:",[304,458,459,462,465,468],{},[307,460,461],{},"Write tests that cover edge cases",[307,463,464],{},"Run the tests against the generated code",[307,466,467],{},"Look for gaps in test coverage",[307,469,470],{},"Add tests for scenarios the AI might have missed",[218,472,474],{"id":473},"why-this-matters-to-your-career-and-sanity","Why This Matters to YOUR Career and Sanity",[223,476,477],{},[230,478,479],{},"Personal Stakes:",[304,481,482,485,488],{},[307,483,484],{},"Your reputation is attached to every line of code you ship",[307,486,487],{},"Debugging AI-introduced bugs at 2 AM ruins your work-life balance",[307,489,490],{},"Production incidents create stress that compounds over time",[223,492,493],{},[230,494,495],{},"Professional Impact:",[304,497,498,501],{},[307,499,500],{},"Team trust erodes when your \"AI-assisted\" code causes outages",[307,502,503],{},"Technical debt accumulates faster than you can pay it down",[223,505,506],{},[230,507,508],{},"The Opportunity Cost:",[304,510,511,514,517],{},[307,512,513],{},"Time saved by AI is lost 10x over during debugging sessions",[307,515,516],{},"Team velocity decreases when no one actually understands the codebase",[307,518,519],{},"Innovation slows when you're constantly fixing \"smart\" bugs",[218,521,523],{"id":522},"the-bottom-line-smart-tools-smarter-developers","The Bottom Line: Smart Tools, Smarter Developers",[223,525,526],{},"AI coding tools are not going away—they're getting more sophisticated every month. The developers who succeed won't be those who resist AI or those who blindly accept everything it generates.",[223,528,529],{},"The winners will be those who develop the discipline to be AI-assisted experts rather than AI-dependent generalists.",[223,531,532,535],{},[230,533,534],{},"Remember",": You're not just a code reviewer for AI suggestions—you're the architect of systems that need to work reliably for years. Every line of generated code that ships under your name is a reflection of your judgment and expertise.",[223,537,538],{},"Use AI to accelerate your thinking, not replace it. Read every line. Understand every decision. Make small, reviewable commits. The moment you stop being the expert who validates AI's work is the moment you've traded short-term productivity for long-term technical debt.",[223,540,541],{},"The choice is yours: Become an AI-enhanced expert, or become dependent on tools you don't fully understand. Choose expertise.",[543,544,545],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":288,"searchDepth":547,"depth":547,"links":548},2,[549,550,551,552,553,560,561],{"id":220,"depth":547,"text":221},{"id":244,"depth":547,"text":245},{"id":268,"depth":547,"text":269},{"id":324,"depth":547,"text":325},{"id":376,"depth":547,"text":377,"children":554},[555,557,558,559],{"id":384,"depth":556,"text":385},3,{"id":396,"depth":556,"text":397},{"id":417,"depth":556,"text":418},{"id":452,"depth":556,"text":453},{"id":473,"depth":547,"text":474},{"id":522,"depth":547,"text":523},"2025-07-20","After spending three days debugging a 'perfect' AI-generated function, I learned the hard way that AI tools are brilliant assistants, not replacements for understanding. Here's my battle-tested approach to working with Claude, Copilot, and other AI coding tools without losing your expertise—or your sanity.",{"src":565,"alt":566},"\u002Fimages\u002Fblog\u002F20250814-2019-the-ai-code-review-that-changed-everything.png","A contemplative cinematic split-screen scene: on the left, an AI generating flawless-looking code on a glowing screen with beautiful syntax highlighting and perfect formatting, representing the seductive appeal of AI-generated solutions; on the right, a focused developer hunched over their desk at 2 AM with warm desk lamp lighting, magnifying glass in hand, carefully examining each line of code with red annotations and bug markers scattered around, showing the reality of debugging AI mistakes. The transition between the two sides should be a subtle visual metaphor of code that appears perfect but contains hidden flaws, with warm\u002Fcool lighting contrast emphasizing the contemplative mood of hard-learned wisdom.",{},true,{"title":81,"description":563},"published","wBT1km8VhGL_xWFYaFH9ihWe6rproFQZIpdBiYWkbKA",[573,574],{"title":77,"path":78,"stem":79,"description":288,"status":570,"children":-1},{"title":85,"path":86,"stem":87,"description":575,"status":570,"children":-1},"How I evolved from simple dev tools to understanding context as the foundation of AI-assisted development",1776221196452]