[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"verticals":3,"blog-topics":44,"search-suggestions":166,"topics-all":179,"articles-all-11---":259,"articles-total":320},[4,20,32],{"id":5,"slug":6,"name":7,"tagline":8,"description":9,"accentFrom":10,"accentTo":11,"icon":12,"defaultLocale":13,"locales":14,"features":16,"position":19},"019fe637-3d33-714b-b57f-23e163ffca0c","dev","Web Development","Read it. Run it. Prove it.","A post a day on modern web development — most with an editable playground and a quiz that explains every answer. Free, no account needed.","violet-500","cyan-400","◇","en",[13,15],"fa",{"courses":17,"paths":17,"articles":17,"exams":18,"flashcards":18,"packages":17,"community":17,"certificates":17,"teams":17,"commerce":17},true,false,0,{"id":21,"slug":22,"name":23,"tagline":24,"description":25,"accentFrom":26,"accentTo":10,"icon":27,"defaultLocale":13,"locales":28,"features":30,"position":31},"019fe637-3dc2-754c-8657-0f175bfee7c6","lang","Languages","Learn a language the way you learn a codebase.","Grammar explained the way good documentation explains an API — one idea at a time, each with a quiz.","amber-400","⌘",[13,15,29],"es",{"courses":18,"paths":18,"articles":17,"exams":18,"flashcards":17,"packages":18,"community":17,"certificates":17,"teams":18,"commerce":18},2,{"id":33,"slug":34,"name":35,"tagline":36,"description":37,"accentFrom":38,"accentTo":39,"icon":40,"defaultLocale":13,"locales":41,"features":42,"position":43},"7b3c16f2-931d-410e-802e-e1fa4edab7de","soft","Soft Skills","The half of the job nobody wrote documentation for.","Weekly, on the parts of working life that decide more than your code does — first weeks, meetings, interviews, promotions, and the people around you. Written from what actually happens, and recorded as a podcast you can listen to on the walk.","emerald-400","teal-300","◉",[13],{"courses":18,"paths":18,"articles":17,"exams":18,"flashcards":18,"packages":18,"community":17,"certificates":18,"teams":18,"commerce":18},3,[45,50,54,58,62,66,70,74,78,82,85,89,92,96,99,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145,148,151,154,157,160,163],{"slug":46,"name":47,"color":48,"articles":49},"webdev","Webdev",null,107,{"slug":51,"name":52,"color":48,"articles":53},"javascript","Javascript",89,{"slug":55,"name":56,"color":48,"articles":57},"frontend","Frontend",72,{"slug":59,"name":60,"color":48,"articles":61},"css","Css",36,{"slug":63,"name":64,"color":48,"articles":65},"tutorial","Tutorial",35,{"slug":67,"name":68,"color":48,"articles":69},"typescript","Typescript",15,{"slug":71,"name":72,"color":48,"articles":73},"react","React",13,{"slug":75,"name":76,"color":48,"articles":77},"performance","Performance",12,{"slug":79,"name":80,"color":48,"articles":81},"node","Node",9,{"slug":83,"name":84,"color":48,"articles":81},"browser","Browser",{"slug":86,"name":87,"color":48,"articles":88},"html","Html",7,{"slug":90,"name":91,"color":48,"articles":88},"accessibility","Accessibility",{"slug":93,"name":94,"color":48,"articles":95},"programming","Programming",6,{"slug":97,"name":98,"color":48,"articles":95},"grammar","Grammar",{"slug":100,"name":101,"color":48,"articles":102},"nestjs","Nestjs",4,{"slug":104,"name":105,"color":48,"articles":102},"nextjs","Nextjs",{"slug":107,"name":108,"color":48,"articles":102},"apis","Apis",{"slug":110,"name":111,"color":48,"articles":43},"nuxt","Nuxt",{"slug":113,"name":114,"color":48,"articles":43},"ssr","SSR",{"slug":116,"name":117,"color":48,"articles":43},"ai","Ai",{"slug":119,"name":120,"color":48,"articles":43},"vue","Vue",{"slug":122,"name":123,"color":48,"articles":31},"security","Security",{"slug":125,"name":126,"color":48,"articles":31},"async","Async",{"slug":128,"name":129,"color":48,"articles":31},"forms","Forms",{"slug":131,"name":132,"color":48,"articles":31},"api","API",{"slug":134,"name":135,"color":48,"articles":31},"english","English",{"slug":137,"name":138,"color":48,"articles":31},"verbs","Verbs",{"slug":140,"name":141,"color":48,"articles":31},"spanish","Spanish",{"slug":143,"name":144,"color":48,"articles":31},"a1","A1",{"slug":146,"name":147,"color":48,"articles":31},"a2","A2",{"slug":149,"name":150,"color":48,"articles":31},"tenses","Tenses",{"slug":152,"name":153,"color":48,"articles":31},"turkish","Turkish",{"slug":155,"name":156,"color":48,"articles":31},"career","Career",{"slug":158,"name":159,"color":48,"articles":31},"beginners","Beginners",{"slug":161,"name":162,"color":48,"articles":31},"productivity","Productivity",{"slug":164,"name":165,"color":48,"articles":31},"discuss","Discuss",[167,168,169,170,171,172,173,174,175,176,177,178],{"slug":46,"name":47,"articles":49},{"slug":51,"name":52,"articles":53},{"slug":55,"name":56,"articles":57},{"slug":59,"name":60,"articles":61},{"slug":63,"name":64,"articles":65},{"slug":67,"name":68,"articles":69},{"slug":71,"name":72,"articles":73},{"slug":75,"name":76,"articles":77},{"slug":83,"name":84,"articles":81},{"slug":79,"name":80,"articles":81},{"slug":86,"name":87,"articles":88},{"slug":90,"name":91,"articles":88},[180,186,188,193,195,200,203,207,212,217,219,224,227,231,233,237,239,242,246,248,250,253,255,257],{"id":181,"slug":182,"name":183,"parentId":48,"description":184,"articleCount":185},"0da12d3c-ac33-4b32-859f-9a16877ef255","starting","Starting somewhere new","First days, first weeks, and the part where you do not know anything yet.",1,{"id":187,"slug":119,"name":120,"parentId":48,"description":48,"articleCount":43},"019fe637-3e06-75b8-8a2c-fc350aad7701",{"id":189,"slug":190,"name":191,"parentId":48,"description":192,"articleCount":185},"9ef7e6f6-b287-4ac2-8f56-421d3aafe8cc","meetings","Meetings and rooms","Speaking up, running one, and knowing which kind you are in.",{"id":194,"slug":110,"name":111,"parentId":48,"description":48,"articleCount":43},"019fe637-3e06-75b8-8a2d-0309c35755c6",{"id":196,"slug":197,"name":198,"parentId":48,"description":199,"articleCount":19},"540105e9-ba05-40f3-bdfd-16fb645e978c","interviews","Getting hired","Applications, interviews, offers, and the negotiation nobody rehearses.",{"id":201,"slug":67,"name":202,"parentId":48,"description":48,"articleCount":102},"019fe637-3e06-75b8-8a2d-040994c0d907","TypeScript",{"id":204,"slug":205,"name":206,"parentId":48,"description":48,"articleCount":19},"019fe637-3e06-75b8-8a2d-0956229cd176","architecture","Architecture",{"id":208,"slug":209,"name":210,"parentId":48,"description":211,"articleCount":19},"0cc5bdbb-d6e8-43b0-9cb4-d227aec6aa68","people","The people around you","Colleagues, managers, and the relationships that decide how work feels.",{"id":213,"slug":214,"name":215,"parentId":48,"description":216,"articleCount":19},"545c6bda-b8cf-4905-8056-18c0c4dc7a64","leading","Leading","Becoming the person others rely on, before and after the title.",{"id":218,"slug":75,"name":76,"parentId":48,"description":48,"articleCount":19},"019fe637-3e07-735d-8227-4c34039af2e0",{"id":220,"slug":221,"name":222,"parentId":48,"description":223,"articleCount":19},"cc22e84d-2cac-44ac-a272-5715e4710dc4","company","Company shapes","Why the same behaviour succeeds at five people and fails at five thousand.",{"id":225,"slug":116,"name":226,"parentId":48,"description":48,"articleCount":185},"019fe65f-98ec-773a-8ca8-9a2e971911c1","AI",{"id":228,"slug":59,"name":229,"parentId":48,"description":48,"articleCount":230},"019fe65f-c110-761b-931e-99a2d1280410","CSS",33,{"id":232,"slug":155,"name":156,"parentId":48,"description":48,"articleCount":19},"01a037b3-d685-76cb-9940-6a3f8ce140a0",{"id":234,"slug":235,"name":236,"parentId":48,"description":48,"articleCount":185},"019fe65f-a1cb-74c8-b999-ff353158fce9","designsystems","Design Systems",{"id":238,"slug":134,"name":135,"parentId":48,"description":48,"articleCount":31},"019ff280-9a51-757c-84ce-c941f20371e9",{"id":240,"slug":86,"name":241,"parentId":48,"description":48,"articleCount":31},"019ff19b-f37e-7091-b3cd-5c99e8c005a4","HTML",{"id":243,"slug":51,"name":244,"parentId":48,"description":48,"articleCount":245},"019fe65f-b950-7762-bb1a-d83445281950","JavaScript",52,{"id":247,"slug":100,"name":101,"parentId":48,"description":48,"articleCount":102},"01a03cdb-1ff8-76fa-9fa7-38d9e4eba1e1",{"id":249,"slug":104,"name":105,"parentId":48,"description":48,"articleCount":102},"01a0499d-b263-749a-a3ad-df3cc782e94d",{"id":251,"slug":71,"name":72,"parentId":48,"description":48,"articleCount":252},"019fe65f-b134-725b-bbc7-3e3db8c68675",5,{"id":254,"slug":122,"name":123,"parentId":48,"description":48,"articleCount":31},"019fe660-ce9d-754e-b241-7bccad915b86",{"id":256,"slug":140,"name":141,"parentId":48,"description":48,"articleCount":31},"019ff280-9d5a-77dc-b01d-e2378eaf86cb",{"id":258,"slug":152,"name":153,"parentId":48,"description":48,"articleCount":31},"019ff280-9eea-736d-ad13-4c01f0ddc46e",{"items":260,"meta":317},[261,282,300],{"id":262,"slug":263,"title":264,"subtitle":48,"excerpt":265,"coverUrl":266,"locale":13,"readingMinutes":43,"publishedAt":267,"viewCount":268,"likeCount":19,"commentCount":19,"author":269,"vertical":274,"topic":275,"tags":276,"_count":281,"playground":48,"hasQuiz":18,"hasPlayground":18},"019fe65f-a9f9-7079-bfbf-ca4dc5685bdd","typescript-won-what-it-bought-us","TypeScript Won. Here's What That Actually Bought Us.","The 'should we use TypeScript?' debate is over. The interesting question is what all those types are quietly enabling now.","\u002Fmedia\u002Fcovers\u002Ftypescript-won-what-it-bought-us.png","2026-06-28T07:31:54.189Z",118,{"id":270,"name":271,"username":272,"avatarUrl":48,"headline":273},"019fe637-3c25-7088-9034-39c9f15dc3c8","Parsa Jiravand","parsa","Frontend engineer · building bestpractic",{"slug":6,"name":7,"accentFrom":10,"accentTo":11},{"slug":67,"name":202},[277,278,279,280],{"slug":67,"name":68,"color":48},{"slug":51,"name":52,"color":48},{"slug":46,"name":47,"color":48},{"slug":116,"name":117,"color":48},{"assessments":19},{"id":283,"slug":284,"title":285,"subtitle":48,"excerpt":286,"coverUrl":287,"locale":13,"readingMinutes":43,"publishedAt":288,"viewCount":289,"likeCount":19,"commentCount":19,"author":290,"vertical":291,"topic":292,"tags":293,"_count":299,"playground":48,"hasQuiz":18,"hasPlayground":18},"019fe65f-a25a-702f-b8a0-ae60efb61964","design-system-api-for-machines","Your Design System Is Now an API for Machines","Component libraries used to be for humans. Now they're the rails an AI plans against — and that changes how you should build them.","\u002Fmedia\u002Fcovers\u002Fdesign-system-api-for-machines.png","2026-06-26T07:29:19.042Z",113,{"id":270,"name":271,"username":272,"avatarUrl":48,"headline":273},{"slug":6,"name":7,"accentFrom":10,"accentTo":11},{"slug":235,"name":236},[294,295,296,298],{"slug":46,"name":47,"color":48},{"slug":55,"name":56,"color":48},{"slug":235,"name":297,"color":48},"Designsystems",{"slug":116,"name":117,"color":48},{"assessments":19},{"id":301,"slug":302,"title":303,"subtitle":48,"excerpt":304,"coverUrl":305,"locale":13,"readingMinutes":102,"publishedAt":306,"viewCount":307,"likeCount":19,"commentCount":19,"author":308,"vertical":309,"topic":310,"tags":311,"_count":316,"playground":48,"hasQuiz":18,"hasPlayground":18},"019fe65f-9991-7098-a2e8-28d741366ffa","frontend-future-ai","The Frontend Is Becoming a Conversation: Where UI Engineering Goes Next","Frontend stacks consolidated, the rendering wars cooled off, and AI quietly changed what a frontend engineer actually does all day. Here's where it's heading.","\u002Fmedia\u002Fcovers\u002Ffrontend-future-ai.png","2026-06-25T12:27:00.662Z",178,{"id":270,"name":271,"username":272,"avatarUrl":48,"headline":273},{"slug":6,"name":7,"accentFrom":10,"accentTo":11},{"slug":116,"name":226},[312,313,314,315],{"slug":46,"name":47,"color":48},{"slug":55,"name":56,"color":48},{"slug":116,"name":117,"color":48},{"slug":51,"name":52,"color":48},{"assessments":19},{"page":318,"perPage":77,"total":319,"totalPages":318},11,123,{"items":321,"meta":340},[322],{"id":323,"slug":324,"title":325,"subtitle":48,"excerpt":326,"coverUrl":327,"locale":13,"readingMinutes":73,"publishedAt":328,"viewCount":329,"likeCount":19,"commentCount":19,"author":330,"vertical":331,"topic":332,"tags":333,"_count":338,"playground":339,"hasQuiz":17,"hasPlayground":17},"01a066ea-3098-75c9-b7e5-1d5426f773eb","vue-weekly-composables-shared-state-trap","Vue Composables: The Shared State Trap (+ Cheat Sheet)","Why two Vue components using the same composable can end up sharing state by accident, the mental model that explains it, and how to fix or embrace it.","\u002Fmedia\u002Fcovers\u002Fvue-weekly-composables-shared-state-trap.png","2026-09-22T19:37:11.460Z",145,{"id":270,"name":271,"username":272,"avatarUrl":48,"headline":273},{"slug":6,"name":7,"accentFrom":10,"accentTo":11},{"slug":119,"name":120},[334,335,336,337],{"slug":119,"name":120,"color":48},{"slug":51,"name":52,"color":48},{"slug":63,"name":64,"color":48},{"slug":46,"name":47,"color":48},{"assessments":185},{"slug":324},{"page":185,"perPage":185,"total":319,"totalPages":319}]