[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page:\u002Fblog":3},{"type":4,"page":5,"blocks":9,"seo":125,"alternates":127,"editable":130},"page",{"id":6,"title":7,"slug":8},5,"Blog","blog",[10,29],{"type":11,"data":12},"general.page-hero",{"image":13,"title":17,"eyebrow":27,"description":28},{"media_id":14,"item_id":14,"url":15,"alt":16,"caption":17,"mime_type":18,"loading":17,"responsive_image":19,"conversion_urls":22},12,"https:\u002F\u002Fafsakar.dev\u002Fstorage\u002Fmedia\u002Fmedia_item\u002F12\u002F12\u002Fconversions\u002Fblog-webp.webp","blog.png",null,"image\u002Fpng",{"srcSet":20,"width":21,"height":21},"https:\u002F\u002Fafsakar.dev\u002Fstorage\u002Fmedia\u002Fmedia_item\u002F12\u002F12\u002Fresponsive-images\u002Fblog___webp_1024_1024.webp 1024w, https:\u002F\u002Fafsakar.dev\u002Fstorage\u002Fmedia\u002Fmedia_item\u002F12\u002F12\u002Fresponsive-images\u002Fblog___webp_856_856.webp 856w, https:\u002F\u002Fafsakar.dev\u002Fstorage\u002Fmedia\u002Fmedia_item\u002F12\u002F12\u002Fresponsive-images\u002Fblog___webp_716_716.webp 716w, https:\u002F\u002Fafsakar.dev\u002Fstorage\u002Fmedia\u002Fmedia_item\u002F12\u002F12\u002Fresponsive-images\u002Fblog___webp_599_599.webp 599w, https:\u002F\u002Fafsakar.dev\u002Fstorage\u002Fmedia\u002Fmedia_item\u002F12\u002F12\u002Fresponsive-images\u002Fblog___webp_501_501.webp 501w, https:\u002F\u002Fafsakar.dev\u002Fstorage\u002Fmedia\u002Fmedia_item\u002F12\u002F12\u002Fresponsive-images\u002Fblog___webp_419_419.webp 419w, data:image\u002Fsvg+xml;base64,PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHg9IjAiCiB5PSIwIiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0Ij4KCTxpbWFnZSB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB4bGluazpocmVmPSJkYXRhOmltYWdlL2pwZWc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBUUVBWUFCZ0FBRC8vZ0ErUTFKRlFWUlBVam9nWjJRdGFuQmxaeUIyTVM0d0lDaDFjMmx1WnlCSlNrY2dTbEJGUnlCMk5qSXBMQ0JrWldaaGRXeDBJSEYxWVd4cGRIa0svOXNBUXdBSUJnWUhCZ1VJQndjSENRa0lDZ3dVRFF3TEN3d1pFaE1QRkIwYUh4NGRHaHdjSUNRdUp5QWlMQ01jSENnM0tTd3dNVFEwTkI4bk9UMDRNand1TXpReS85c0FRd0VKQ1FrTUN3d1lEUTBZTWlFY0lUSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5LzhBQUVRZ0FJQUFnQXdFaUFBSVJBUU1SQWYvRUFCOEFBQUVGQVFFQkFRRUJBQUFBQUFBQUFBQUJBZ01FQlFZSENBa0tDLy9FQUxVUUFBSUJBd01DQkFNRkJRUUVBQUFCZlFFQ0F3QUVFUVVTSVRGQkJoTlJZUWNpY1JReWdaR2hDQ05Dc2NFVlV0SHdKRE5pY29JSkNoWVhHQmthSlNZbktDa3FORFUyTnpnNU9rTkVSVVpIU0VsS1UxUlZWbGRZV1ZwalpHVm1aMmhwYW5OMGRYWjNlSGw2ZzRTRmhvZUlpWXFTazVTVmxwZVltWnFpbzZTbHBxZW9xYXF5czdTMXRyZTR1YnJDdzhURnhzZkl5Y3JTMDlUVjF0ZlkyZHJoNHVQazVlYm42T25xOGZMejlQWDI5L2o1K3YvRUFCOEJBQU1CQVFFQkFRRUJBUUVBQUFBQUFBQUJBZ01FQlFZSENBa0tDLy9FQUxVUkFBSUJBZ1FFQXdRSEJRUUVBQUVDZHdBQkFnTVJCQVVoTVFZU1FWRUhZWEVUSWpLQkNCUkNrYUd4d1Frak0xTHdGV0p5MFFvV0pEVGhKZkVYR0JrYUppY29LU28xTmpjNE9UcERSRVZHUjBoSlNsTlVWVlpYV0ZsYVkyUmxabWRvYVdwemRIVjJkM2g1ZW9LRGhJV0doNGlKaXBLVGxKV1dsNWlabXFLanBLV21wNmlwcXJLenRMVzJ0N2k1dXNMRHhNWEd4OGpKeXRMVDFOWFcxOWpaMnVMajVPWG01K2pwNnZMejlQWDI5L2o1K3YvYUFBd0RBUUFDRVFNUkFEOEErZjY2TFNmQmVzYXphZmFiYUQ5MmVoUGVzclNZSXJuVkxlR1pTMGJ1RklGZlUvaFhUclN3MGlDM2pqRzFWR0t5cVZWRFRxYVFqZlUrWXRTOE5hdHBRTFhWbzZxRGpkamlzaXZyM3hEb2xscVduU1F5UmdCaGpPSythL0cvaGVMd3pxS1JRekdSSkFTTTlxY2FpbG9RMVprWGdxN3RiWFhVYTVWVG5oV2JzYStqdEJ2WW1pVXRJdUNPT2ErVGdTcHlEZysxYTl2NHAxbTFSVWl2WkZWZWd6VVRvUm5QblpjYW5MR3g5TCtNZFc4alNKQmJTZ1NGVGc1cjVrMTI5MUM3dlNOUW1NcnFUZ24wcTdkK005WXZJdkxsbnlNWXpXREpJOHJsM1lzeDdtdEl3VVNHN24vLzJRPT0iPgoJPC9pbWFnZT4KPC9zdmc+ 32w",1024,{"400":23,"800":24,"webp":15,"thumb":25,"responsive":26},"https:\u002F\u002Fafsakar.dev\u002Fstorage\u002Fmedia\u002Fmedia_item\u002F12\u002F12\u002Fconversions\u002Fblog-400.jpg","https:\u002F\u002Fafsakar.dev\u002Fstorage\u002Fmedia\u002Fmedia_item\u002F12\u002F12\u002Fconversions\u002Fblog-800.jpg","https:\u002F\u002Fafsakar.dev\u002Fstorage\u002Fmedia\u002Fmedia_item\u002F12\u002F12\u002Fconversions\u002Fblog-thumb.jpg","https:\u002F\u002Fafsakar.dev\u002Fstorage\u002Fmedia\u002Fmedia_item\u002F12\u002F12\u002Fconversions\u002Fblog-responsive.jpg","Writing","Practical notes on Laravel, Filament, product architecture, and maintainable package work.",{"type":30,"data":31},"general.post-list",{"categories":32,"posts":45,"filters":124},[33,37,41],{"id":34,"title":35,"slug":36},6,"PHP","php",{"id":38,"title":39,"slug":40},7,"Vue","vue",{"id":42,"title":43,"slug":44},8,"AI","ai",{"data":46,"total":48,"per_page":93,"current_page":102,"last_page":102,"prev_page_url":17,"next_page_url":17,"links":114},[47,67,83,101],{"id":48,"title":49,"slug":50,"url":51,"excerpt":52,"reading_minutes":53,"blocks":17,"toc":17,"category":54,"tags":55,"cover":17,"published_at":66},4,"How I Built My Own Self-Hosted AI Assistant with Hermes","how-i-built-my-own-self-hosted-ai-assistant-with-hermes","\u002Fblog\u002Fhow-i-built-my-own-self-hosted-ai-assistant-with-hermes","I built a self-hosted AI assistant with Hermes that connects Telegram, Obsidian, GitHub, task management, research, monitoring, and automation into one persistent personal workflow.",11,{"id":42,"title":43,"slug":44},[56,58,62],{"id":57,"title":43,"slug":44},17,{"id":59,"title":60,"slug":61},18,"Hermes Agent","hermes-agent",{"id":63,"title":64,"slug":65},19,"Telegram Bot","telegram-bot","2026-08-24",{"id":68,"title":69,"slug":70,"url":71,"excerpt":72,"reading_minutes":34,"blocks":17,"toc":17,"category":73,"tags":74,"cover":17,"published_at":82},3,"Authentication with Firebase and VueJS","authentication-with-vuejs-and-firebase","\u002Fblog\u002Fauthentication-with-vuejs-and-firebase","Build Firebase authentication in Vue with Pinia, GitHub login, session-aware route middleware, and protected authenticated and guest pages.",{"id":38,"title":39,"slug":40},[75,76,79],{"id":42,"title":39,"slug":40},{"id":53,"title":77,"slug":78},"Firebase","firebase",{"id":14,"title":80,"slug":81},"Authentication","authentication","2023-01-14",{"id":84,"title":85,"slug":86,"url":87,"excerpt":88,"reading_minutes":84,"blocks":17,"toc":17,"category":89,"tags":90,"cover":17,"published_at":100},2,"Pinia vs Vuex","pinia-vs-vuex","\u002Fblog\u002Fpinia-vs-vuex","Compare Pinia and Vuex through simple state management examples, API differences, and practical guidance for choosing a store for your Vue application.",{"id":38,"title":39,"slug":40},[91,92,96],{"id":42,"title":39,"slug":40},{"id":93,"title":94,"slug":95},9,"Pinia","pinia",{"id":97,"title":98,"slug":99},10,"Vuex","vuex","2022-12-08",{"id":102,"title":103,"slug":104,"url":105,"excerpt":106,"reading_minutes":68,"blocks":17,"toc":17,"category":107,"tags":108,"cover":17,"published_at":113},1,"How do we sort arrays in PHP?","how-do-we-sort-arrays-in-php","\u002Fblog\u002Fhow-do-we-sort-arrays-in-php","Learn how PHP’s sort, rsort, asort, arsort, ksort, and krsort functions order indexed and associative arrays by values or keys.",{"id":34,"title":35,"slug":36},[109,110],{"id":34,"title":35,"slug":36},{"id":38,"title":111,"slug":112},"Arrays","arrays","2022-10-09",[115,118,122],{"url":17,"label":116,"page":17,"active":117},"&laquo; Previous",false,{"url":119,"label":120,"page":102,"active":121},"https:\u002F\u002Fafsakar.dev\u002Fapi\u002Fv1\u002Fpages\u002Fblog?page=1","1",true,{"url":17,"label":123,"page":17,"active":117},"Next &raquo;",{"category":17},{"html":126},"\u003Ctitle>Blog - Azad Furkan Şakar\u003C\u002Ftitle>\n\u003Cmeta name=\"description\" content=\"Practical notes on Laravel, Filament, product architecture, and maintainable package work.\">\n\u003Cmeta name=\"keywords\" content=\"laravel, backend, developer, php\">\n\u003Clink rel=\"canonical\" href=\"https:\u002F\u002Fafsakar.dev\u002Fblog\">\n\u003Clink rel=\"alternate\" hreflang=\"en\" href=\"https:\u002F\u002Fafsakar.dev\u002Fblog\">\n\u003Clink rel=\"alternate\" hreflang=\"tr\" href=\"https:\u002F\u002Fafsakar.dev\u002Ftr\u002Fblog\">\n\u003Clink rel=\"alternate\" hreflang=\"x-default\" href=\"https:\u002F\u002Fafsakar.dev\u002Fblog\">\n\u003Cmeta name=\"robots\" content=\"index, follow\">\n\u003Cmeta property=\"og:title\" content=\"Blog\">\n\u003Cmeta property=\"og:description\" content=\"Practical notes on Laravel, Filament, product architecture, and maintainable package work.\">\n\u003Cmeta property=\"og:type\" content=\"website\">\n\u003Cmeta property=\"og:site_name\" content=\"Azad Furkan Şakar\">\n\u003Cmeta property=\"og:url\" content=\"https:\u002F\u002Fafsakar.dev\u002Fblog\">\n\u003Cmeta property=\"og:image\" content=\"https:\u002F\u002Fafsakar.dev\u002Fstorage\u002Fog-images\u002Fpages\u002F5-en.png\">\n\n\u003Cmeta name=\"twitter:site\" content=\"afsakar\">\n\u003Cmeta name=\"twitter:card\" content=\"summary_large_image\">\n\u003Cmeta name=\"twitter:image\" content=\"https:\u002F\u002Fafsakar.dev\u002Fstorage\u002Fog-images\u002Fpages\u002F5-en.png\">\n\u003Cmeta name=\"twitter:title\" content=\"Blog\">\n\u003Cmeta name=\"twitter:description\" content=\"Practical notes on Laravel, Filament, product architecture, and maintainable package work.\">\n\u003Cmeta name=\"twitter:url\" content=\"https:\u002F\u002Fafsakar.dev\u002Fblog\">\n\u003Cscript type=\"application\u002Fld+json\">{\"@context\":\"https:\u002F\u002Fschema.org\",\"@type\":\"WebPage\",\"name\":\"Blog\",\"description\":\"Practical notes on Laravel, Filament, product architecture, and maintainable package work.\",\"url\":\"https:\u002F\u002Fafsakar.dev\u002Fblog\",\"image\":\"https:\u002F\u002Fafsakar.dev\u002Fstorage\u002Fog-images\u002Fpages\u002F5-en.png\",\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https:\u002F\u002Fafsakar.dev\u002Fblog\"}}\u003C\u002Fscript>\u003Cscript type=\"application\u002Fld+json\">{\"@context\":\"https:\u002F\u002Fschema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\u002F\u002Fafsakar.dev\u002F\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https:\u002F\u002Fafsakar.dev\u002Fblog\"}]}\u003C\u002Fscript>\u003Cscript type=\"application\u002Fld+json\">{\"@context\":\"https:\u002F\u002Fschema.org\",\"@type\":\"Person\",\"name\":\"Azad Furkan Şakar\",\"url\":\"https:\u002F\u002Fafsakar.dev\",\"@id\":\"https:\u002F\u002Fafsakar.dev\u002F#person\",\"jobTitle\":\"Backend Developer\",\"image\":\"https:\u002F\u002Fafsakar.dev\u002Fstorage\u002Fsettings\u002Fseo\u002F01KZB422BTYXF3J7XS1J2X8GYZ.jpeg\",\"sameAs\":[\"https:\u002F\u002Fx.com\u002Fafsakar\",\"https:\u002F\u002Flinkedin.com\u002Fin\u002Fafsakar\",\"https:\u002F\u002Fgithub.com\u002Fafsakar\"]}\u003C\u002Fscript>",{"en":128,"tr":129},"https:\u002F\u002Fafsakar.dev\u002Fblog","https:\u002F\u002Fafsakar.dev\u002Ftr\u002Fblog",{"type":4,"id":6}]