[{"data":1,"prerenderedAt":518},["ShallowReactive",2],{"blog-all-content":3},[4,16,27,40,50,60,68,76,85,95,108,119,128,137,150,159,166,175,183,192,201,210,219,226,235,242,250,257,265,273,279,286,293,301,307,314,322,328,335,342,352,360,366,373,379,387,395,402,409,415,422,430,437,444,450,457,463,472,479,486,492,499,504,512],{"id":5,"title":6,"description":7,"path":5,"cover_image":8,"type":9,"date":10,"tags":11,"tagsString":15},"\u002Fblog\u002Fclean-code","Clean Code: A Handbook of Agile Software Craftsmanship","Summary and key takeaways from the classic book by Robert C. Martin.","https:\u002F\u002Fplacehold.co\u002F600x400?text=Clean+Code","blog_post","2023-11-15",[12,13,14],"books","clean-code","software-engineering","books clean-code software-engineering",{"id":17,"title":18,"description":19,"path":17,"cover_image":20,"type":9,"date":21,"tags":22,"tagsString":26},"\u002Fblog\u002Fhello-world","Welcome to My New Blog","This is the first post on my new Nuxt Content powered blog.","https:\u002F\u002Fplacehold.co\u002F600x400?text=Hello+World","2023-10-27",[23,24,25],"nuxt","vue","webdev","nuxt vue webdev",{"id":28,"title":29,"description":30,"path":28,"cover_image":31,"type":32,"date":33,"tags":34,"tagsString":37,"author":38,"rating":39},"\u002Fbooks\u002Fbarking-up-the-wrong-tree","Barking Up the Wrong Tree","A thought-provoking book that challenges conventional wisdom about success, digging into the surprising science behind achievement.","\u002Fimages\u002Fbook_covers\u002Fbarking-up-the-wrong-tree.webp","book_summary","",[35,36],"psychology","success","psychology success","Eric Barker",null,{"id":41,"title":42,"description":43,"path":41,"cover_image":44,"type":32,"date":33,"tags":45,"tagsString":48,"author":49,"rating":39},"\u002Fbooks\u002Fbecoming-a-technical-leader","Becoming a Technical Leader","A must-read for anyone who wants to become a technical leader, full of practical advice and real-world examples.","\u002Fimages\u002Fbook_covers\u002Fbecoming-a-technical-leader.webp",[46,47],"leadership","technical-leadership","leadership technical-leadership","Gerald M. Weinberg",{"id":51,"title":52,"description":53,"path":51,"cover_image":54,"type":32,"date":33,"tags":55,"tagsString":58,"author":59,"rating":39},"\u002Fbooks\u002Fbuilding-evolutionary-architectures","Building Evolutionary Architectures","A fresh perspective on software architecture, for anyone who wants to build systems that can evolve and adapt to changing requirements.","\u002Fimages\u002Fbook_covers\u002Fbuilding-evolutionary-architectures.webp",[56,57],"software-architecture","engineering","software-architecture engineering","Neal Ford, Rebecca Parsons, Patrick Kua",{"id":61,"title":62,"description":33,"path":61,"cover_image":63,"type":32,"date":33,"tags":64,"tagsString":67,"author":33,"rating":39},"\u002Fbooks\u002Flearning-helm","Learning Helm","\u002Fimages\u002Fbook_covers\u002Flearning-helm-cover.jpg",[65,66],"kubernetes","helm","kubernetes helm",{"id":69,"title":70,"description":33,"path":69,"cover_image":71,"type":32,"date":33,"tags":72,"tagsString":75,"author":33,"rating":39},"\u002Fbooks\u002Fnodejs-design-patterns","Node.js Design Patterns (3rd Edition)","\u002Fimages\u002Fbook_covers\u002Fnodejs-design-patterns-3ed-cover.jpg",[73,74],"nodejs","design-patterns","nodejs design-patterns",{"id":77,"title":78,"description":79,"path":77,"cover_image":80,"type":32,"date":33,"tags":81,"tagsString":83,"author":84,"rating":39},"\u002Fbooks\u002Fthe-psychology-of-money","Psychology of Money","A fascinating exploration of the complex relationship between money and human behavior, and how it changes the way you think about wealth.","\u002Fimages\u002Fbook_covers\u002Fthe-psychology-of-money.webp",[82,35],"finance","finance psychology","Morgan Housel",{"id":86,"title":87,"description":88,"path":86,"cover_image":89,"type":32,"date":90,"tags":91,"tagsString":92,"author":93,"rating":94},"\u002Fbooks\u002Fverb-your-enthusiasm","Verb Your Enthusiasm","Sarah L. Kaufman's guide to writing with sharper, more intentional verbs — and why they're the real engine of good prose.","\u002Fimages\u002Fbook_covers\u002Fverb-your-enthusiasm-cover.jpg","2026-05-04",[92],"writing","Sarah L. Kaufman",4,{"id":96,"title":97,"description":98,"path":96,"cover_image":39,"type":99,"date":100,"tags":101,"tagsString":105,"stage":106,"decision":107},"\u002Fradar\u002Fargocd","ArgoCD","GitOps continuous delivery tool for Kubernetes, adopted over Flux.","tech_report","2026-08-08",[102,103,65,104],"argocd","gitops","cicd","argocd gitops kubernetes cicd","trial","adopt",{"id":109,"title":110,"description":111,"path":109,"cover_image":39,"type":99,"date":100,"tags":112,"tagsString":117,"stage":106,"decision":118},"\u002Fradar\u002Faws","AWS","Amazon Web Services, on hold in favor of GCP.",[113,114,115,116],"aws","amazon","cloud","infrastructure","aws amazon cloud infrastructure","hold",{"id":120,"title":121,"description":122,"path":120,"cover_image":39,"type":99,"date":100,"tags":123,"tagsString":126,"stage":106,"decision":127},"\u002Fradar\u002Fazure","Azure","Microsoft Azure, rejected in favor of GCP.",[124,125,115,116],"azure","microsoft","azure microsoft cloud infrastructure","reject",{"id":129,"title":130,"description":131,"path":129,"cover_image":39,"type":99,"date":100,"tags":132,"tagsString":136,"stage":106,"decision":127},"\u002Fradar\u002Fblack","Black","Python code formatter, rejected in favor of Ruff.",[133,134,135],"black","python","formatting","black python formatting",{"id":138,"title":139,"description":140,"path":138,"cover_image":39,"type":99,"date":141,"tags":142,"tagsString":149,"stage":106,"decision":39},"\u002Fradar\u002Fbun","Bun","Fast all-in-one JavaScript runtime, native bundler, and package manager, evaluated as a high-speed Node.js alternative.","2025-01-10",[143,144,145,146,147,148],"bun","javascript","typescript","runtime","packaging","tooling","bun javascript typescript runtime packaging tooling",{"id":151,"title":152,"description":153,"path":151,"cover_image":39,"type":99,"date":100,"tags":154,"tagsString":158,"stage":106,"decision":39},"\u002Fradar\u002Fcelery","Celery","Distributed async task queue for Python, currently being evaluated.",[155,134,156,157],"celery","task-queue","async","celery python task-queue async",{"id":160,"title":161,"description":162,"path":160,"cover_image":39,"type":99,"date":141,"tags":163,"tagsString":165,"stage":106,"decision":39},"\u002Fradar\u002Fcivo","Civo","Developer-friendly, lower-cost managed Kubernetes cloud provider.",[164,115,65],"civo","civo cloud kubernetes",{"id":167,"title":168,"description":169,"path":167,"cover_image":39,"type":99,"date":100,"tags":170,"tagsString":174,"stage":106,"decision":107},"\u002Fradar\u002Fclaude-code","Claude Code","Agentic coding CLI\u002FIDE assistant from Anthropic.",[171,172,173],"ai","anthropic","developer-tools","ai anthropic developer-tools",{"id":176,"title":177,"description":178,"path":176,"cover_image":39,"type":99,"date":141,"tags":179,"tagsString":182,"stage":106,"decision":107},"\u002Fradar\u002Fcloudflare","Cloudflare","Edge network, DNS, and platform (Pages\u002FWorkers\u002FR2) provider.",[180,115,181],"cloudflare","edge","cloudflare cloud edge",{"id":184,"title":185,"description":186,"path":184,"cover_image":39,"type":99,"date":100,"tags":187,"tagsString":191,"stage":106,"decision":127},"\u002Fradar\u002Fcypress","Cypress","End-to-end testing framework, rejected in favor of Playwright.",[188,189,190],"cypress","testing","e2e","cypress testing e2e",{"id":193,"title":194,"description":195,"path":193,"cover_image":39,"type":99,"date":100,"tags":196,"tagsString":200,"stage":106,"decision":39},"\u002Fradar\u002Fdagster","Dagster","Data orchestrator, currently being evaluated.",[197,198,199,134],"dagster","data-engineering","data-orchestration","dagster data-engineering data-orchestration python",{"id":202,"title":203,"description":204,"path":202,"cover_image":39,"type":99,"date":100,"tags":205,"tagsString":209,"stage":106,"decision":39},"\u002Fradar\u002Fdbt-core","dbt-core","Data transformation tool, currently being evaluated.",[206,198,207,208],"dbt","sql","analytics","dbt data-engineering sql analytics",{"id":211,"title":212,"description":213,"path":211,"cover_image":39,"type":99,"date":100,"tags":214,"tagsString":218,"stage":106,"decision":107},"\u002Fradar\u002Fdocker-compose","Docker Compose","Low-complexity local development setup, adopted for simple multi-container workflows.",[215,216,217],"docker","compose","development","docker compose development",{"id":220,"title":221,"description":222,"path":220,"cover_image":39,"type":99,"date":100,"tags":223,"tagsString":225,"stage":106,"decision":127},"\u002Fradar\u002Fdocker-desktop","Docker Desktop","Local container runtime and GUI for Docker, rejected in favor of Rancher Desktop.",[215,217,224],"containers","docker development containers",{"id":227,"title":228,"description":229,"path":227,"cover_image":39,"type":99,"date":100,"tags":230,"tagsString":233,"stage":234,"decision":127},"\u002Fradar\u002Fdocker-swarm","Docker Swarm","Container orchestration tool, rejected in favor of Kubernetes.",[215,231,232],"swarm","orchestration","docker swarm orchestration","assess",{"id":236,"title":237,"description":238,"path":236,"cover_image":39,"type":99,"date":100,"tags":239,"tagsString":241,"stage":106,"decision":107},"\u002Fradar\u002Fduckdb","DuckDB","In-process analytical database, adopted.",[240,198,208,207],"duckdb","duckdb data-engineering analytics sql",{"id":243,"title":244,"description":245,"path":243,"cover_image":39,"type":99,"date":100,"tags":246,"tagsString":249,"stage":106,"decision":39},"\u002Fradar\u002Fducklake","DuckLake","Lakehouse format built on DuckDB, currently being evaluated.",[247,240,198,248],"ducklake","lakehouse","ducklake duckdb data-engineering lakehouse",{"id":251,"title":252,"description":253,"path":251,"cover_image":39,"type":99,"date":100,"tags":254,"tagsString":256,"stage":234,"decision":118},"\u002Fradar\u002Fflux","Flux","GitOps continuous delivery tool for Kubernetes, considered alongside ArgoCD.",[255,103,65,104],"flux","flux gitops kubernetes cicd",{"id":258,"title":259,"description":260,"path":258,"cover_image":39,"type":99,"date":100,"tags":261,"tagsString":264,"stage":106,"decision":107},"\u002Fradar\u002Fgcp","GCP","Google Cloud Platform, the go-to among the Big 3 cloud providers.",[262,263,115,116],"gcp","google","gcp google cloud infrastructure",{"id":266,"title":267,"description":268,"path":266,"cover_image":39,"type":99,"date":100,"tags":269,"tagsString":272,"stage":106,"decision":107},"\u002Fradar\u002Fgithub","GitHub","Git hosting and collaboration platform, adopted for source control and CI\u002FCD in place of GitLab.",[270,104,271,171],"github","devops","github cicd devops ai",{"id":274,"title":275,"description":276,"path":274,"cover_image":39,"type":99,"date":100,"tags":277,"tagsString":278,"stage":106,"decision":107},"\u002Fradar\u002Fgithub-copilot","GitHub Copilot","AI pair programmer integrated into the editor.",[171,270,173],"ai github developer-tools",{"id":280,"title":281,"description":282,"path":280,"cover_image":39,"type":99,"date":100,"tags":283,"tagsString":285,"stage":106,"decision":127},"\u002Fradar\u002Fgitlab","GitLab","Git hosting and CI\u002FCD platform, previously adopted for source control and pipelines.",[284,104,271],"gitlab","gitlab cicd devops",{"id":287,"title":288,"description":289,"path":287,"cover_image":39,"type":99,"date":141,"tags":290,"tagsString":292,"stage":106,"decision":107},"\u002Fradar\u002Fgitops","GitOps","Using Git as the single source of truth for infrastructure and deployments.",[103,271,291],"architecture","gitops devops architecture",{"id":294,"title":295,"description":296,"path":294,"cover_image":39,"type":99,"date":141,"tags":297,"tagsString":300,"stage":106,"decision":39},"\u002Fradar\u002Fgolang","GoLang","Statically typed, compiled language evaluated for performance-sensitive services.",[298,299],"golang","backend","golang backend",{"id":302,"title":303,"description":304,"path":302,"cover_image":39,"type":99,"date":100,"tags":305,"tagsString":306,"stage":106,"decision":39},"\u002Fradar\u002Fgoogle-antigravity","Google Antigravity","Agentic AI coding platform from Google, currently in trial.",[171,263,173],"ai google developer-tools",{"id":308,"title":309,"description":310,"path":308,"cover_image":39,"type":99,"date":100,"tags":311,"tagsString":313,"stage":106,"decision":127},"\u002Fradar\u002Fjavascript","JavaScript","Rejected as the primary authoring language, in favor of TypeScript.",[144,145,312,299],"frontend","javascript typescript frontend backend",{"id":315,"title":316,"description":317,"path":315,"cover_image":39,"type":99,"date":100,"tags":318,"tagsString":321,"stage":106,"decision":127},"\u002Fradar\u002Fjupyter","Jupyter","Python notebook environment, rejected in favor of Marimo.",[319,134,320],"jupyter","notebooks","jupyter python notebooks",{"id":323,"title":324,"description":325,"path":323,"cover_image":39,"type":99,"date":141,"tags":326,"tagsString":327,"stage":106,"decision":107},"\u002Fradar\u002Fkubernetes","Kubernetes","Container orchestration platform for production workloads.",[65,115,271],"kubernetes cloud devops",{"id":329,"title":330,"description":331,"path":329,"cover_image":39,"type":99,"date":100,"tags":332,"tagsString":334,"stage":106,"decision":107},"\u002Fradar\u002Fmarimo","Marimo","Python notebook environment, adopted in favor of Jupyter.",[333,134,320],"marimo","marimo python notebooks",{"id":336,"title":337,"description":338,"path":336,"cover_image":39,"type":99,"date":100,"tags":339,"tagsString":341,"stage":106,"decision":107},"\u002Fradar\u002Fmonorepo","Monorepo","Single-repository architecture, adopted in favor of splitting services across multiple repos.",[340,291,104,271,148,134,145],"monorepo","monorepo architecture cicd devops tooling python typescript",{"id":343,"title":344,"description":345,"path":343,"cover_image":39,"type":99,"date":100,"tags":346,"tagsString":351,"stage":106,"decision":107},"\u002Fradar\u002Fmoon","Moon","Polyglot monorepo build system and task runner with native multi-runtime toolchain management, evaluated for Python, TypeScript, and Rust architectures.",[347,348,340,349,134,145,350,271],"moon","moonrepo","build-tools","rust","moon moonrepo monorepo build-tools python typescript rust devops",{"id":353,"title":354,"description":355,"path":353,"cover_image":39,"type":99,"date":100,"tags":356,"tagsString":359,"stage":106,"decision":39},"\u002Fradar\u002Fnextjs","Next.js","React meta-framework, currently in trial.",[357,358,312],"nextjs","react","nextjs react frontend",{"id":361,"title":362,"description":363,"path":361,"cover_image":39,"type":99,"date":141,"tags":364,"tagsString":365,"stage":106,"decision":107},"\u002Fradar\u002Fnodejs","NodeJS","Default back-end JavaScript\u002FTypeScript runtime.",[73,144,299],"nodejs javascript backend",{"id":367,"title":368,"description":369,"path":367,"cover_image":39,"type":99,"date":100,"tags":370,"tagsString":372,"stage":106,"decision":127},"\u002Fradar\u002Fnpm","npm","Why npm was rejected for enterprise Node.js and TypeScript projects in favor of pnpm's content-addressable architecture and workspace isolation.",[368,371,73,145,147,148],"pnpm","npm pnpm nodejs typescript packaging tooling",{"id":374,"title":375,"description":376,"path":374,"cover_image":39,"type":99,"date":100,"tags":377,"tagsString":378,"stage":106,"decision":107},"\u002Fradar\u002Fnuxtjs","Nuxt.js","Vue meta-framework used to build this very site, now fully adopted.",[23,24,312],"nuxt vue frontend",{"id":380,"title":381,"description":382,"path":380,"cover_image":39,"type":99,"date":100,"tags":383,"tagsString":386,"stage":106,"decision":118},"\u002Fradar\u002Fnx","Nx","Enterprise-grade monorepo build system with deep code generation and AST dependency analysis, evaluated against Turborepo and Moon.",[384,340,349,145,144,385],"nx","enterprise","nx monorepo build-tools typescript javascript enterprise",{"id":388,"title":389,"description":390,"path":388,"cover_image":39,"type":99,"date":100,"tags":391,"tagsString":394,"stage":106,"decision":127},"\u002Fradar\u002Fpandas","Pandas","DataFrame library for Python, rejected in favor of Polars.",[392,134,393,198],"pandas","dataframes","pandas python dataframes data-engineering",{"id":396,"title":397,"description":398,"path":396,"cover_image":39,"type":99,"date":100,"tags":399,"tagsString":401,"stage":106,"decision":127},"\u002Fradar\u002Fpip","pip","Why pip and requirements.txt were rejected in favor of uv for modern, reproducible, high-performance Python development.",[397,400,134,147,148],"uv","pip uv python packaging tooling",{"id":403,"title":404,"description":405,"path":403,"cover_image":39,"type":99,"date":100,"tags":406,"tagsString":408,"stage":106,"decision":107},"\u002Fradar\u002Fplaywright","Playwright","End-to-end testing framework, adopted in favor of Cypress.",[407,189,190],"playwright","playwright testing e2e",{"id":410,"title":371,"description":411,"path":410,"cover_image":39,"type":99,"date":100,"tags":412,"tagsString":414,"stage":107,"decision":107},"\u002Fradar\u002Fpnpm","Fast, disk-efficient package manager and workspace engine adopted in favor of npm for all Node.js and TypeScript projects.",[371,73,145,147,340,413],"workspaces","pnpm nodejs typescript packaging monorepo workspaces",{"id":416,"title":417,"description":418,"path":416,"cover_image":39,"type":99,"date":100,"tags":419,"tagsString":421,"stage":106,"decision":107},"\u002Fradar\u002Fpolars","Polars","DataFrame library for Python, adopted in favor of Pandas.",[420,134,393,198],"polars","polars python dataframes data-engineering",{"id":423,"title":424,"description":425,"path":423,"cover_image":39,"type":99,"date":100,"tags":426,"tagsString":429,"stage":106,"decision":127},"\u002Fradar\u002Fpolyrepo","Polyrepo","Splitting microservices across independent repositories: why multi-repo architecture was rejected in favor of an orchestrated monorepo.",[427,428,291,104,271,340],"polyrepo","multi-repo","polyrepo multi-repo architecture cicd devops monorepo",{"id":431,"title":432,"description":433,"path":431,"cover_image":39,"type":99,"date":100,"tags":434,"tagsString":436,"stage":106,"decision":39},"\u002Fradar\u002Fprefect","Prefect","Workflow orchestration tool, currently being evaluated.",[435,198,199,134],"prefect","prefect data-engineering data-orchestration python",{"id":438,"title":439,"description":440,"path":438,"cover_image":39,"type":99,"date":100,"tags":441,"tagsString":443,"stage":106,"decision":107},"\u002Fradar\u002Fprettier","Prettier","Code formatter for the TypeScript\u002FJavaScript ecosystem, adopted.",[442,145,144,135],"prettier","prettier typescript javascript formatting",{"id":445,"title":446,"description":447,"path":445,"cover_image":39,"type":99,"date":141,"tags":448,"tagsString":449,"stage":106,"decision":107},"\u002Fradar\u002Fpython","Python","General-purpose language for automation, data, and AI tooling.",[134,299,171],"python backend ai",{"id":451,"title":452,"description":453,"path":451,"cover_image":39,"type":99,"date":100,"tags":454,"tagsString":456,"stage":106,"decision":107},"\u002Fradar\u002Francher-desktop","Rancher Desktop","Local Kubernetes and container runtime for development, adopted in favor of Docker Desktop.",[455,65,217,224],"rancher","rancher kubernetes development containers",{"id":458,"title":459,"description":460,"path":458,"cover_image":39,"type":99,"date":100,"tags":461,"tagsString":462,"stage":106,"decision":39},"\u002Fradar\u002Freact","React","Front-end UI library, currently in trial.",[358,312,144],"react frontend javascript",{"id":464,"title":465,"description":466,"path":464,"cover_image":39,"type":99,"date":100,"tags":467,"tagsString":471,"stage":106,"decision":107},"\u002Fradar\u002Fruff","Ruff","Python linter and formatter, adopted in favor of Black.",[468,134,135,469,470],"ruff","linting","astral","ruff python formatting linting astral",{"id":473,"title":474,"description":475,"path":473,"cover_image":39,"type":99,"date":100,"tags":476,"tagsString":478,"stage":107,"decision":107},"\u002Fradar\u002Fturborepo","Turborepo","High-performance monorepo build system and task orchestrator with remote caching, evaluated for pure JavaScript and TypeScript architectures.",[477,340,349,144,145,104],"turborepo","turborepo monorepo build-tools javascript typescript cicd",{"id":480,"title":481,"description":482,"path":480,"cover_image":39,"type":99,"date":100,"tags":483,"tagsString":485,"stage":106,"decision":39},"\u002Fradar\u002Fty","ty","Fast Python type checker from Astral, currently in trial and close to adoption.",[481,134,484,470],"typechecking","ty python typechecking astral",{"id":487,"title":488,"description":489,"path":487,"cover_image":39,"type":99,"date":100,"tags":490,"tagsString":491,"stage":106,"decision":107},"\u002Fradar\u002Ftypescript","TypeScript","Primary language for both front-end and back-end JavaScript work, adopted in favor of plain JavaScript.",[145,144,312,299],"typescript javascript frontend backend",{"id":493,"title":494,"description":495,"path":493,"cover_image":39,"type":99,"date":100,"tags":496,"tagsString":498,"stage":106,"decision":39},"\u002Fradar\u002Fupcloud","UpCloud","Cloud infrastructure provider, currently in trial.",[497,115,116],"upcloud","upcloud cloud infrastructure",{"id":500,"title":400,"description":501,"path":500,"cover_image":39,"type":99,"date":100,"tags":502,"tagsString":503,"stage":107,"decision":107},"\u002Fradar\u002Fuv","Extremely fast, Rust-powered Python project manager and workspace orchestrator, adopted as the universal standard over pip and Poetry.",[400,134,147,470,148,340],"uv python packaging astral tooling monorepo",{"id":505,"title":506,"description":507,"path":505,"cover_image":39,"type":99,"date":100,"tags":508,"tagsString":511,"stage":106,"decision":107},"\u002Fradar\u002Fvscode","VS Code","Primary code editor, adopted as the daily driver.",[509,510,217],"vscode","editor","vscode editor development",{"id":513,"title":514,"description":515,"path":513,"cover_image":39,"type":99,"date":141,"tags":516,"tagsString":517,"stage":106,"decision":107},"\u002Fradar\u002Fvuejs","Vue.js","Primary front-end framework for client and personal projects.",[24,312,144],"vue frontend javascript",1790263540998]