[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"category-devops-cloud":3,"category-devops-cloud-posts":14,"header-categories":318},{"success":4,"data":5},true,{"id":6,"name":7,"description":8,"parentId":9,"createdAt":10,"updatedAt":10,"parent":9,"children":11,"_count":12},"devops-cloud","DevOps & Cloud","Infrastructure, deployment, and cloud computing",null,"2026-07-24T06:02:44.453Z",[],{"posts":13},6,{"success":4,"data":15},{"items":16,"pagination":312},[17,57,86,111,137,164,185,207,233,252,273,292],{"id":18,"slug":19,"title":20,"excerpt":21,"status":22,"visibility":23,"featuredImage":24,"readingTime":25,"viewCount":26,"publishedAt":27,"createdAt":28,"updatedAt":29,"author":30,"tags":35,"categories":48,"_count":55},"5daa7f62-cd30-4a05-9fcf-a6fa6604e332","authentication-patterns-spa","Authentication Patterns for Single-Page Applications","Implement secure authentication in SPAs with token rotation, silent refresh, secure storage, and protection against common attacks.","published","public","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1551288049-bebda4e38f71?w=1200&q=80",10,1225,"2026-04-18T06:04:41.020Z","2026-07-24T06:04:41.024Z","2026-07-28T11:37:45.261Z",{"id":31,"name":32,"email":33,"avatarUrl":34},"fddb5d93-7a2c-4d86-a06a-fa32e73a01c6","Mbeah Essilfie","mbeahessilfieprince@gmail.com","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F93322394?v=4",[36,40,44],{"id":37,"name":38,"color":39},"javascript","JavaScript","#f7df1e",{"id":41,"name":42,"color":43},"vue","Vue","#4fc08d",{"id":45,"name":46,"color":47},"security","Security","#d63031",[49,52],{"id":50,"name":51},"web-development","Web Development",{"id":53,"name":54},"software-engineering","Software Engineering",{"comments":56},0,{"id":58,"slug":59,"title":60,"excerpt":61,"status":22,"visibility":23,"featuredImage":62,"readingTime":63,"viewCount":64,"publishedAt":65,"createdAt":66,"updatedAt":67,"author":68,"tags":69,"categories":78,"_count":85},"cdb70bf7-aa8f-48c0-9760-2b8d0867dc0b","practical-vim-modern-developers","Practical Vim for Modern Developers","You don't need to live in Vim to benefit from it. Learn the motions and mental model that make editing code dramatically faster.","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1517694712202-14dd9538aa97?w=1200&q=80",8,1370,"2026-04-20T06:04:38.260Z","2026-07-24T06:04:38.262Z","2026-07-28T11:37:43.588Z",{"id":31,"name":32,"email":33,"avatarUrl":34},[70,74],{"id":71,"name":72,"color":73},"devops","DevOps","#ff6c37",{"id":75,"name":76,"color":77},"python","Python","#3776ab",[79,82],{"id":80,"name":81},"career","Career & Growth",{"id":83,"name":84},"tools-productivity","Tools & Productivity",{"comments":56},{"id":87,"slug":88,"title":89,"excerpt":90,"status":22,"visibility":23,"featuredImage":91,"readingTime":63,"viewCount":92,"publishedAt":93,"createdAt":94,"updatedAt":95,"author":96,"tags":97,"categories":107,"_count":110},"1437766b-f895-4382-9d67-2525941643d9","monorepos-turborepo-managing-packages","Monorepos with Turborepo: Managing Multiple Packages","Set up a productive monorepo with Turborepo for shared UI libraries, APIs, and apps with smart caching and task orchestration.","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1555066931-4365d14bab8c?w=1200&q=80",2101,"2026-04-22T06:04:35.999Z","2026-07-24T06:04:36.002Z","2026-07-28T11:37:45.210Z",{"id":31,"name":32,"email":33,"avatarUrl":34},[98,102,103],{"id":99,"name":100,"color":101},"typescript","TypeScript","#3178c6",{"id":71,"name":72,"color":73},{"id":104,"name":105,"color":106},"architecture","Architecture","#795548",[108,109],{"id":53,"name":54},{"id":83,"name":84},{"comments":56},{"id":112,"slug":113,"title":114,"excerpt":115,"status":22,"visibility":23,"featuredImage":116,"readingTime":117,"viewCount":118,"publishedAt":119,"createdAt":120,"updatedAt":121,"author":122,"tags":123,"categories":133,"_count":136},"f0cda6e8-230a-4618-8454-c067288d1703","developers-guide-http-caching","The Developer's Guide to HTTP Caching","Master HTTP caching headers, CDN strategies, and cache invalidation to deliver blazing-fast experiences while keeping content fresh.","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1498050108023-c5249f4df085?w=1200&q=80",9,1828,"2026-04-24T06:04:33.840Z","2026-07-24T06:04:33.842Z","2026-07-28T11:20:12.803Z",{"id":31,"name":32,"email":33,"avatarUrl":34},[124,125,129],{"id":71,"name":72,"color":73},{"id":126,"name":127,"color":128},"performance","Performance","#e535ab",{"id":130,"name":131,"color":132},"api-design","API Design","#009688",[134,135],{"id":50,"name":51},{"id":53,"name":54},{"comments":56},{"id":138,"slug":139,"title":140,"excerpt":141,"status":22,"visibility":23,"featuredImage":142,"readingTime":117,"viewCount":143,"publishedAt":144,"createdAt":145,"updatedAt":146,"author":147,"tags":148,"categories":158,"_count":163},"b4f7b827-eb04-45d0-ac3f-e5e691d391e3","full-text-search-without-elasticsearch","Implementing Full-Text Search Without Elasticsearch","You don't always need a dedicated search engine. Implement performant full-text search with PostgreSQL's built-in capabilities.","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1580894894513-541e068a3e2b?w=1200&q=80",453,"2026-04-26T06:04:31.080Z","2026-07-24T06:04:31.083Z","2026-07-28T10:52:41.492Z",{"id":31,"name":32,"email":33,"avatarUrl":34},[149,153,154],{"id":150,"name":151,"color":152},"prisma","Prisma","#2d3748",{"id":126,"name":127,"color":128},{"id":155,"name":156,"color":157},"database","Database","#336791",[159,160],{"id":50,"name":51},{"id":161,"name":162},"tutorials","Tutorials",{"comments":56},{"id":165,"slug":166,"title":167,"excerpt":168,"status":22,"visibility":23,"featuredImage":169,"readingTime":170,"viewCount":171,"publishedAt":172,"createdAt":173,"updatedAt":174,"author":175,"tags":176,"categories":179,"_count":184},"b227a75c-ed23-4047-937e-7c3b989f4c0b","progressive-web-apps-2025-relevant","Progressive Web Apps in 2025: Still Relevant?","Are PWAs still worth building? An honest look at the current state of PWA capabilities, limitations, and when they make sense.","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1516116216624-53e697fedbea?w=1200&q=80",7,958,"2026-04-28T06:04:28.940Z","2026-07-24T06:04:28.943Z","2026-07-28T11:21:09.618Z",{"id":31,"name":32,"email":33,"avatarUrl":34},[177,178],{"id":37,"name":38,"color":39},{"id":126,"name":127,"color":128},[180,181],{"id":50,"name":51},{"id":182,"name":183},"opinion","Opinion & Analysis",{"comments":56},{"id":186,"slug":187,"title":188,"excerpt":189,"status":22,"visibility":23,"featuredImage":190,"readingTime":117,"viewCount":191,"publishedAt":192,"createdAt":193,"updatedAt":194,"author":195,"tags":196,"categories":203,"_count":206},"58d72280-be9f-423b-8bff-1d3cb19b4780","debugging-nodejs-applications-pro","Debugging Node.js Applications Like a Pro","Go beyond console.log. Master the Node.js debugger, memory profiling, async stack traces, and production debugging techniques.","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1618477388954-7852f32655ec?w=1200&q=80",1036,"2026-04-30T06:04:26.346Z","2026-07-24T06:04:26.348Z","2026-07-28T09:59:30.245Z",{"id":31,"name":32,"email":33,"avatarUrl":34},[197,198,202],{"id":37,"name":38,"color":39},{"id":199,"name":200,"color":201},"nodejs","Node.js","#339933",{"id":126,"name":127,"color":128},[204,205],{"id":161,"name":162},{"id":83,"name":84},{"comments":56},{"id":208,"slug":209,"title":210,"excerpt":211,"status":22,"visibility":23,"featuredImage":212,"readingTime":25,"viewCount":213,"publishedAt":214,"createdAt":215,"updatedAt":216,"author":217,"tags":218,"categories":229,"_count":232},"f8c52ae7-6edb-475d-b596-8ca9fe8a65d2","design-system-component-library-vue-tailwind","Building a Design System Component Library with Vue and Tailwind","Create a reusable, themeable component library using Vue 3, Tailwind CSS, and proper documentation with Storybook.","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1633356122544-f134324a6cee?w=1200&q=80",213,"2026-05-02T06:04:23.990Z","2026-07-24T06:04:23.992Z","2026-07-28T09:59:31.692Z",{"id":31,"name":32,"email":33,"avatarUrl":34},[219,220,221,225],{"id":99,"name":100,"color":101},{"id":41,"name":42,"color":43},{"id":222,"name":223,"color":224},"css","CSS","#1572b6",{"id":226,"name":227,"color":228},"tailwind","Tailwind CSS","#06b6d4",[230,231],{"id":50,"name":51},{"id":161,"name":162},{"comments":56},{"id":234,"slug":235,"title":236,"excerpt":237,"status":22,"visibility":23,"featuredImage":238,"readingTime":170,"viewCount":239,"publishedAt":240,"createdAt":241,"updatedAt":242,"author":243,"tags":244,"categories":248,"_count":251},"ad6af943-1ec0-434d-8b6a-54c3a4383240","environment-variables-configuration-management","Environment Variables and Configuration Management","Manage application configuration properly across development, staging, and production with validation, type safety, and security.","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1559028012-481c04fa702d?w=1200&q=80",1562,"2026-05-04T06:04:21.021Z","2026-07-24T06:04:21.024Z","2026-07-28T09:59:33.861Z",{"id":31,"name":32,"email":33,"avatarUrl":34},[245,246,247],{"id":199,"name":200,"color":201},{"id":71,"name":72,"color":73},{"id":45,"name":46,"color":47},[249,250],{"id":6,"name":7},{"id":53,"name":54},{"comments":56},{"id":253,"slug":254,"title":255,"excerpt":256,"status":22,"visibility":23,"featuredImage":257,"readingTime":63,"viewCount":258,"publishedAt":259,"createdAt":260,"updatedAt":261,"author":262,"tags":263,"categories":270,"_count":272},"7cf48692-4de2-481a-9344-5bdb80b5a514","writing-effective-unit-tests-quality","Writing Effective Unit Tests: Quality Over Quantity","Stop chasing coverage numbers. Learn to write tests that catch real bugs, document behavior, and give you confidence to refactor.","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1550439062-609e1531270e?w=1200&q=80",542,"2026-05-06T06:04:18.665Z","2026-07-24T06:04:18.668Z","2026-07-28T09:59:26.974Z",{"id":31,"name":32,"email":33,"avatarUrl":34},[264,265,266],{"id":37,"name":38,"color":39},{"id":99,"name":100,"color":101},{"id":267,"name":268,"color":269},"testing","Testing","#99425b",[271],{"id":53,"name":54},{"comments":56},{"id":274,"slug":275,"title":276,"excerpt":277,"status":22,"visibility":23,"featuredImage":278,"readingTime":63,"viewCount":279,"publishedAt":280,"createdAt":281,"updatedAt":282,"author":283,"tags":284,"categories":288,"_count":291},"5ca7acb7-f9e0-4490-b00b-6f8039dc414a","graphql-2025-when-to-use-avoid","GraphQL in 2025: When to Use It and When to Avoid It","An honest assessment of GraphQL's strengths and weaknesses. Learn when it shines and when a simple REST API is the better choice.","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1526374965328-7f61d4dc18c5?w=1200&q=80",954,"2026-05-08T06:04:16.412Z","2026-07-24T06:04:16.415Z","2026-07-28T09:59:29.184Z",{"id":31,"name":32,"email":33,"avatarUrl":34},[285,286,287],{"id":99,"name":100,"color":101},{"id":130,"name":131,"color":132},{"id":104,"name":105,"color":106},[289,290],{"id":53,"name":54},{"id":182,"name":183},{"comments":56},{"id":293,"slug":294,"title":295,"excerpt":296,"status":22,"visibility":23,"featuredImage":297,"readingTime":298,"viewCount":299,"publishedAt":300,"createdAt":301,"updatedAt":302,"author":303,"tags":304,"categories":308,"_count":311},"cd2d70e2-f1c3-490e-b884-d53b8d053f72","scaling-nodejs-single-process-distributed","Scaling Node.js: From Single Process to Distributed System","A roadmap for scaling Node.js from handling 100 to 100,000 requests per second — clustering, load balancing, caching, and horizontal scaling.","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1605379399642-870262d3d051?w=1200&q=80",11,1023,"2026-05-10T06:04:14.278Z","2026-07-24T06:04:14.280Z","2026-07-28T09:59:29.635Z",{"id":31,"name":32,"email":33,"avatarUrl":34},[305,306,307],{"id":199,"name":200,"color":201},{"id":71,"name":72,"color":73},{"id":126,"name":127,"color":128},[309,310],{"id":6,"name":7},{"id":53,"name":54},{"comments":56},{"page":313,"limit":314,"total":315,"totalPages":316,"hasNext":4,"hasPrev":317},1,12,51,5,false,{"success":4,"data":319},{"items":320,"pagination":364},[321,328,333,339,344,350,356,359],{"id":322,"name":323,"description":324,"parentId":9,"createdAt":325,"updatedAt":325,"parent":9,"children":326,"_count":327},"ai-future","AI & The Future","Artificial intelligence and emerging technology","2026-07-24T06:02:45.990Z",[],{"posts":313},{"id":83,"name":84,"description":329,"parentId":9,"createdAt":330,"updatedAt":330,"parent":9,"children":331,"_count":332},"Developer tools and workflow optimization","2026-07-24T06:02:45.712Z",[],{"posts":170},{"id":80,"name":81,"description":334,"parentId":9,"createdAt":335,"updatedAt":335,"parent":9,"children":336,"_count":337},"Professional development for developers","2026-07-24T06:02:45.486Z",[],{"posts":338},3,{"id":182,"name":183,"description":340,"parentId":9,"createdAt":341,"updatedAt":341,"parent":9,"children":342,"_count":343},"Industry analysis and technical opinions","2026-07-24T06:02:45.272Z",[],{"posts":13},{"id":161,"name":162,"description":345,"parentId":9,"createdAt":346,"updatedAt":346,"parent":9,"children":347,"_count":348},"Step-by-step learning guides","2026-07-24T06:02:44.965Z",[],{"posts":349},21,{"id":53,"name":54,"description":351,"parentId":9,"createdAt":352,"updatedAt":352,"parent":9,"children":353,"_count":354},"Best practices, patterns, and principles","2026-07-24T06:02:44.689Z",[],{"posts":355},24,{"id":6,"name":7,"description":8,"parentId":9,"createdAt":10,"updatedAt":10,"parent":9,"children":357,"_count":358},[],{"posts":13},{"id":50,"name":51,"description":360,"parentId":9,"createdAt":361,"updatedAt":361,"parent":9,"children":362,"_count":363},"Frontend and backend web development tutorials and guides","2026-07-24T06:02:44.169Z",[],{"posts":355},{"page":313,"limit":63,"total":63,"totalPages":313,"hasNext":317,"hasPrev":317}]