[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"header-categories":3,"category-software-engineering":73,"category-software-engineering-posts":77},{"success":4,"data":5},true,{"items":6,"pagination":70},[7,16,24,32,40,48,56,63],{"id":8,"name":9,"description":10,"parentId":11,"createdAt":12,"updatedAt":12,"parent":11,"children":13,"_count":14},"ai-future","AI & The Future","Artificial intelligence and emerging technology",null,"2026-07-24T06:02:45.990Z",[],{"posts":15},1,{"id":17,"name":18,"description":19,"parentId":11,"createdAt":20,"updatedAt":20,"parent":11,"children":21,"_count":22},"tools-productivity","Tools & Productivity","Developer tools and workflow optimization","2026-07-24T06:02:45.712Z",[],{"posts":23},7,{"id":25,"name":26,"description":27,"parentId":11,"createdAt":28,"updatedAt":28,"parent":11,"children":29,"_count":30},"career","Career & Growth","Professional development for developers","2026-07-24T06:02:45.486Z",[],{"posts":31},3,{"id":33,"name":34,"description":35,"parentId":11,"createdAt":36,"updatedAt":36,"parent":11,"children":37,"_count":38},"opinion","Opinion & Analysis","Industry analysis and technical opinions","2026-07-24T06:02:45.272Z",[],{"posts":39},6,{"id":41,"name":42,"description":43,"parentId":11,"createdAt":44,"updatedAt":44,"parent":11,"children":45,"_count":46},"tutorials","Tutorials","Step-by-step learning guides","2026-07-24T06:02:44.965Z",[],{"posts":47},21,{"id":49,"name":50,"description":51,"parentId":11,"createdAt":52,"updatedAt":52,"parent":11,"children":53,"_count":54},"software-engineering","Software Engineering","Best practices, patterns, and principles","2026-07-24T06:02:44.689Z",[],{"posts":55},24,{"id":57,"name":58,"description":59,"parentId":11,"createdAt":60,"updatedAt":60,"parent":11,"children":61,"_count":62},"devops-cloud","DevOps & Cloud","Infrastructure, deployment, and cloud computing","2026-07-24T06:02:44.453Z",[],{"posts":39},{"id":64,"name":65,"description":66,"parentId":11,"createdAt":67,"updatedAt":67,"parent":11,"children":68,"_count":69},"web-development","Web Development","Frontend and backend web development tutorials and guides","2026-07-24T06:02:44.169Z",[],{"posts":55},{"page":15,"limit":71,"total":71,"totalPages":15,"hasNext":72,"hasPrev":72},8,false,{"success":4,"data":74},{"id":49,"name":50,"description":51,"parentId":11,"createdAt":52,"updatedAt":52,"parent":11,"children":75,"_count":76},[],{"posts":55},{"success":4,"data":78},{"items":79,"pagination":361},[80,116,140,165,191,216,234,256,282,301,322,341],{"id":81,"slug":82,"title":83,"excerpt":84,"status":85,"visibility":86,"featuredImage":87,"readingTime":88,"viewCount":89,"publishedAt":90,"createdAt":91,"updatedAt":92,"author":93,"tags":98,"categories":111,"_count":114},"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":94,"name":95,"email":96,"avatarUrl":97},"fddb5d93-7a2c-4d86-a06a-fa32e73a01c6","Mbeah Essilfie","mbeahessilfieprince@gmail.com","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F93322394?v=4",[99,103,107],{"id":100,"name":101,"color":102},"javascript","JavaScript","#f7df1e",{"id":104,"name":105,"color":106},"vue","Vue","#4fc08d",{"id":108,"name":109,"color":110},"security","Security","#d63031",[112,113],{"id":64,"name":65},{"id":49,"name":50},{"comments":115},0,{"id":117,"slug":118,"title":119,"excerpt":120,"status":85,"visibility":86,"featuredImage":121,"readingTime":71,"viewCount":122,"publishedAt":123,"createdAt":124,"updatedAt":125,"author":126,"tags":127,"categories":136,"_count":139},"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",1370,"2026-04-20T06:04:38.260Z","2026-07-24T06:04:38.262Z","2026-07-28T11:37:43.588Z",{"id":94,"name":95,"email":96,"avatarUrl":97},[128,132],{"id":129,"name":130,"color":131},"devops","DevOps","#ff6c37",{"id":133,"name":134,"color":135},"python","Python","#3776ab",[137,138],{"id":25,"name":26},{"id":17,"name":18},{"comments":115},{"id":141,"slug":142,"title":143,"excerpt":144,"status":85,"visibility":86,"featuredImage":145,"readingTime":71,"viewCount":146,"publishedAt":147,"createdAt":148,"updatedAt":149,"author":150,"tags":151,"categories":161,"_count":164},"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":94,"name":95,"email":96,"avatarUrl":97},[152,156,157],{"id":153,"name":154,"color":155},"typescript","TypeScript","#3178c6",{"id":129,"name":130,"color":131},{"id":158,"name":159,"color":160},"architecture","Architecture","#795548",[162,163],{"id":49,"name":50},{"id":17,"name":18},{"comments":115},{"id":166,"slug":167,"title":168,"excerpt":169,"status":85,"visibility":86,"featuredImage":170,"readingTime":171,"viewCount":172,"publishedAt":173,"createdAt":174,"updatedAt":175,"author":176,"tags":177,"categories":187,"_count":190},"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":94,"name":95,"email":96,"avatarUrl":97},[178,179,183],{"id":129,"name":130,"color":131},{"id":180,"name":181,"color":182},"performance","Performance","#e535ab",{"id":184,"name":185,"color":186},"api-design","API Design","#009688",[188,189],{"id":64,"name":65},{"id":49,"name":50},{"comments":115},{"id":192,"slug":193,"title":194,"excerpt":195,"status":85,"visibility":86,"featuredImage":196,"readingTime":171,"viewCount":197,"publishedAt":198,"createdAt":199,"updatedAt":200,"author":201,"tags":202,"categories":212,"_count":215},"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":94,"name":95,"email":96,"avatarUrl":97},[203,207,208],{"id":204,"name":205,"color":206},"prisma","Prisma","#2d3748",{"id":180,"name":181,"color":182},{"id":209,"name":210,"color":211},"database","Database","#336791",[213,214],{"id":64,"name":65},{"id":41,"name":42},{"comments":115},{"id":217,"slug":218,"title":219,"excerpt":220,"status":85,"visibility":86,"featuredImage":221,"readingTime":23,"viewCount":222,"publishedAt":223,"createdAt":224,"updatedAt":225,"author":226,"tags":227,"categories":230,"_count":233},"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",958,"2026-04-28T06:04:28.940Z","2026-07-24T06:04:28.943Z","2026-07-28T11:21:09.618Z",{"id":94,"name":95,"email":96,"avatarUrl":97},[228,229],{"id":100,"name":101,"color":102},{"id":180,"name":181,"color":182},[231,232],{"id":64,"name":65},{"id":33,"name":34},{"comments":115},{"id":235,"slug":236,"title":237,"excerpt":238,"status":85,"visibility":86,"featuredImage":239,"readingTime":171,"viewCount":240,"publishedAt":241,"createdAt":242,"updatedAt":243,"author":244,"tags":245,"categories":252,"_count":255},"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",1037,"2026-04-30T06:04:26.346Z","2026-07-24T06:04:26.348Z","2026-07-28T12:15:31.758Z",{"id":94,"name":95,"email":96,"avatarUrl":97},[246,247,251],{"id":100,"name":101,"color":102},{"id":248,"name":249,"color":250},"nodejs","Node.js","#339933",{"id":180,"name":181,"color":182},[253,254],{"id":41,"name":42},{"id":17,"name":18},{"comments":115},{"id":257,"slug":258,"title":259,"excerpt":260,"status":85,"visibility":86,"featuredImage":261,"readingTime":88,"viewCount":262,"publishedAt":263,"createdAt":264,"updatedAt":265,"author":266,"tags":267,"categories":278,"_count":281},"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":94,"name":95,"email":96,"avatarUrl":97},[268,269,270,274],{"id":153,"name":154,"color":155},{"id":104,"name":105,"color":106},{"id":271,"name":272,"color":273},"css","CSS","#1572b6",{"id":275,"name":276,"color":277},"tailwind","Tailwind CSS","#06b6d4",[279,280],{"id":64,"name":65},{"id":41,"name":42},{"comments":115},{"id":283,"slug":284,"title":285,"excerpt":286,"status":85,"visibility":86,"featuredImage":287,"readingTime":23,"viewCount":288,"publishedAt":289,"createdAt":290,"updatedAt":291,"author":292,"tags":293,"categories":297,"_count":300},"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":94,"name":95,"email":96,"avatarUrl":97},[294,295,296],{"id":248,"name":249,"color":250},{"id":129,"name":130,"color":131},{"id":108,"name":109,"color":110},[298,299],{"id":57,"name":58},{"id":49,"name":50},{"comments":115},{"id":302,"slug":303,"title":304,"excerpt":305,"status":85,"visibility":86,"featuredImage":306,"readingTime":71,"viewCount":307,"publishedAt":308,"createdAt":309,"updatedAt":310,"author":311,"tags":312,"categories":319,"_count":321},"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":94,"name":95,"email":96,"avatarUrl":97},[313,314,315],{"id":100,"name":101,"color":102},{"id":153,"name":154,"color":155},{"id":316,"name":317,"color":318},"testing","Testing","#99425b",[320],{"id":49,"name":50},{"comments":115},{"id":323,"slug":324,"title":325,"excerpt":326,"status":85,"visibility":86,"featuredImage":327,"readingTime":71,"viewCount":328,"publishedAt":329,"createdAt":330,"updatedAt":331,"author":332,"tags":333,"categories":337,"_count":340},"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":94,"name":95,"email":96,"avatarUrl":97},[334,335,336],{"id":153,"name":154,"color":155},{"id":184,"name":185,"color":186},{"id":158,"name":159,"color":160},[338,339],{"id":49,"name":50},{"id":33,"name":34},{"comments":115},{"id":342,"slug":343,"title":344,"excerpt":345,"status":85,"visibility":86,"featuredImage":346,"readingTime":347,"viewCount":348,"publishedAt":349,"createdAt":350,"updatedAt":351,"author":352,"tags":353,"categories":357,"_count":360},"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":94,"name":95,"email":96,"avatarUrl":97},[354,355,356],{"id":248,"name":249,"color":250},{"id":129,"name":130,"color":131},{"id":180,"name":181,"color":182},[358,359],{"id":57,"name":58},{"id":49,"name":50},{"comments":115},{"page":15,"limit":362,"total":363,"totalPages":364,"hasNext":4,"hasPrev":72},12,51,5]