[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"academy-blogs-en-5-12-The%252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252520Origin%252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252520of%252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252520Code-all-all-createdAt:desc-default":3},{"data":4,"page":516,"perPage":517,"totalItems":518,"totalPages":519},[5,74,120,168,213,256,287,324,360,391,433,476],{"alt":6,"cover_image_path":7,"created":8,"expand":9,"id":70,"published_at":71,"school_blog":67,"short_description":72,"title":6,"updated":73,"slug":68,"views":69},"EP.124 Advanced Security & Authentication for WebSocket (JWT, Token Strategy & Secure Handshake)","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fk7qdpibak9otau6\u002Fcover_image_ep_2a3e4no299.ionforWebSocket.webp","2026-03-04 08:44:42.720Z",{"keywords":10,"locale":39,"school_blog":49},[11,19,24,29,34],{"collectionId":12,"collectionName":13,"created":14,"created_by":15,"id":16,"name":17,"updated":18,"updated_by":15},"sclkey987654321","school_keywords","2026-03-04 08:44:42.096Z","","kr1dmn7sxgv9vxg","JWT WebSocket","2026-04-10 16:12:48.849Z",{"collectionId":12,"collectionName":13,"created":20,"created_by":15,"id":21,"name":22,"updated":23,"updated_by":15},"2026-03-04 08:20:11.547Z","ey3puyme01a9bsw","Go","2026-04-10 16:07:25.893Z",{"collectionId":12,"collectionName":13,"created":25,"created_by":15,"id":26,"name":27,"updated":28,"updated_by":15},"2026-03-04 08:34:00.920Z","ecac9y661or1xka","WebSocket","2026-04-10 16:08:05.227Z",{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},"2026-03-04 08:44:42.406Z","julxx94rca568ku","WebSocket Authentication","2026-04-10 16:12:48.917Z",{"collectionId":12,"collectionName":13,"created":35,"created_by":15,"id":36,"name":37,"updated":38,"updated_by":15},"2026-03-04 08:44:13.770Z","ij1u9pugpnctjvk","WebSocket Security","2026-04-10 16:12:41.774Z",{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},"en","pbc_1989393366","locales","2026-01-22 11:00:02.726Z","twemoji:flag-united-states","qv9c1llfov2d88z",false,"English","2026-04-10 15:42:46.825Z",{"category":50,"collectionId":51,"collectionName":52,"created":15,"expand":53,"id":67,"slug":68,"updated":15,"views":69},"wqxt7ag2gn7xcmk","pbc_2105096300","school_blogs",{"category":54},{"blogIds":55,"collectionId":56,"collectionName":57,"created":58,"created_by":15,"id":50,"image":59,"image_alt":15,"image_path":60,"label":61,"name":62,"priority":63,"publish_at":64,"scheduled_at":15,"status":65,"updated":66,"updated_by":15},[],"sclcatblg987654321","school_category_blogs","2026-03-04 08:33:53.210Z","59ty92ns80w_15oc1implw.png","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclcatblg987654321\u002Fwqxt7ag2gn7xcmk\u002F59ty92ns80w_15oc1implw.png",{"en":62,"th":62},"Golang The Series",1,"2026-03-16 04:39:38.440Z","published","2026-04-25 02:32:15.470Z","hsw1xbcvic3ba41","advanced-websocket-security-authentication-jwt-secure-handshake",226,"k7qdpibak9otau6","2026-01-12 03:40:09.510Z","A deep dive into production-ready and enterprise-grade WebSocket security. Learn how to implement proper authentication, JWT token strategies, prevent WebSocket hijacking, and design a secure handshake for real-world, high-traffic systems.","2026-05-08 06:51:55.808Z",{"alt":75,"cover_image_path":76,"created":77,"expand":78,"id":116,"published_at":117,"school_blog":112,"short_description":118,"title":75,"updated":119,"slug":113,"views":115},"The Origin of JavaScript: Created in 10 Days, Rules the World","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fk5ktr6fo351rni0\u002Fbrendan_eich_the_creator_of_java_script_at_netscape_featuring_the_js_logo_and_code_snippets_8tm80mpmin.webp","2026-03-04 08:20:43.066Z",{"keywords":79,"locale":100,"school_blog":101},[80,85,90,95],{"collectionId":12,"collectionName":13,"created":81,"created_by":15,"id":82,"name":83,"updated":84,"updated_by":15},"2026-03-04 08:20:36.060Z","xcq4mt3coqo1odt","V8 Engine","2026-04-10 16:07:27.526Z",{"collectionId":12,"collectionName":13,"created":86,"created_by":15,"id":87,"name":88,"updated":89,"updated_by":15},"2026-03-04 08:20:38.187Z","b4o3toqgoc84295","Brendan Eich","2026-04-10 16:07:27.995Z",{"collectionId":12,"collectionName":13,"created":91,"created_by":15,"id":92,"name":93,"updated":94,"updated_by":15},"2026-03-04 08:20:41.018Z","xzz8g6s99hkw93f","JavaScript History","2026-04-10 16:07:28.276Z",{"collectionId":12,"collectionName":13,"created":96,"created_by":15,"id":97,"name":98,"updated":99,"updated_by":15},"2026-03-04 08:20:42.484Z","vslzz9nvv6n77cx","JavaScript","2026-04-10 16:07:28.339Z",{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":102,"collectionId":51,"collectionName":52,"created":15,"expand":103,"id":112,"slug":113,"updated":114,"views":115},"isnp2fv80bn3yem",{"category":104},{"blogIds":105,"collectionId":56,"collectionName":57,"created":106,"created_by":15,"id":102,"image":15,"image_alt":15,"image_path":15,"label":107,"name":108,"priority":109,"publish_at":110,"scheduled_at":15,"status":65,"updated":111,"updated_by":15},[],"2026-03-04 08:19:47.590Z",{"en":108,"th":108},"กว่าจะเป็นภาษาโค้ด",8,"2026-02-18 01:59:49.988Z","2026-04-25 02:32:14.031Z","n4c7o0yqlwcv639","history-of-javascript-from-10-days-to-global-standard","2026-05-12 13:08:13.414Z",238,"k5ktr6fo351rni0","2026-01-08 05:35:48.725Z","Explore the history of JavaScript. From its 10-day creation at Netscape to winning the browser wars and becoming the king of web development.","2026-05-11 21:45:19.000Z",{"alt":121,"cover_image_path":122,"created":123,"expand":124,"id":164,"published_at":165,"school_blog":160,"short_description":166,"title":121,"updated":167,"slug":161,"views":163},"Git for Team: The Professional Workflow Guide to Collaborative Coding","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002F5jblmfazpjbqx96\u002Finfographic_showing_team_collaboration_using_git_and_git_hub_illustrating_branching_merging_and_pull_xj4jg51gl0.webp","2026-03-04 08:44:44.506Z",{"keywords":125,"locale":146,"school_blog":147},[126,131,136,141],{"collectionId":12,"collectionName":13,"created":127,"created_by":15,"id":128,"name":129,"updated":130,"updated_by":15},"2026-03-04 08:44:43.803Z","tsn8jg792h1wac5","Code Review","2026-04-10 16:12:49.012Z",{"collectionId":12,"collectionName":13,"created":132,"created_by":15,"id":133,"name":134,"updated":135,"updated_by":15},"2026-03-04 08:44:35.823Z","andd8rbw15sng17","GitHub","2026-04-10 16:12:47.387Z",{"collectionId":12,"collectionName":13,"created":137,"created_by":15,"id":138,"name":139,"updated":140,"updated_by":15},"2026-03-04 08:44:36.134Z","pg679bitpkii9vv","Git","2026-04-10 16:12:47.459Z",{"collectionId":12,"collectionName":13,"created":142,"created_by":15,"id":143,"name":144,"updated":145,"updated_by":15},"2026-03-04 08:44:35.619Z","9z8e1xfjt07e7n9","Git Workflow","2026-04-10 16:12:47.226Z",{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":148,"collectionId":51,"collectionName":52,"created":15,"expand":149,"id":160,"slug":161,"updated":162,"views":163},"spm4l1k5bgmhmmt",{"category":150},{"blogIds":151,"collectionId":56,"collectionName":57,"created":152,"created_by":15,"id":148,"image":153,"image_alt":15,"image_path":154,"label":155,"name":156,"priority":157,"publish_at":158,"scheduled_at":15,"status":65,"updated":159,"updated_by":15},[],"2026-03-04 08:31:18.590Z","50hyjr6os45_ayazwr5gq7.png","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclcatblg987654321\u002Fspm4l1k5bgmhmmt\u002F50hyjr6os45_ayazwr5gq7.png",{"en":156,"th":156},"Knowledge",0,"2026-03-18 02:25:41.222Z","2026-04-25 02:32:14.497Z","p8mussz4d3imv1c","git-for-team-professional-workflow-guide","2026-05-13 13:53:03.426Z",418,"5jblmfazpjbqx96","2026-01-07 04:24:37.284Z","Master professional Git workflows for team collaboration. Learn how to manage branches, conduct Code Reviews, and use Pull Requests effectively to ensure a stable and scalable codebase.","2026-05-08 06:51:56.702Z",{"alt":169,"cover_image_path":170,"created":171,"expand":172,"id":209,"published_at":210,"school_blog":205,"short_description":211,"title":169,"updated":212,"slug":206,"views":208},"The Origin of C: The Foundation of Modern Programming","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002F204ju6yjjphhocj\u002Fcover_image_blog_the_origin_of_c_the_foundation_of_modern_programming_ucgo56tgfo.webp","2026-03-04 08:20:49.329Z",{"keywords":173,"locale":194,"school_blog":195},[174,179,184,189],{"collectionId":12,"collectionName":13,"created":175,"created_by":15,"id":176,"name":177,"updated":178,"updated_by":15},"2026-03-04 08:20:46.902Z","p2fa536x3fkbftv","C Language","2026-04-10 16:07:28.789Z",{"collectionId":12,"collectionName":13,"created":180,"created_by":15,"id":181,"name":182,"updated":183,"updated_by":15},"2026-03-04 08:20:42.894Z","q8fw2bf4sm83pak","Bell Labs","2026-04-10 16:07:28.504Z",{"collectionId":12,"collectionName":13,"created":185,"created_by":15,"id":186,"name":187,"updated":188,"updated_by":15},"2026-03-04 08:20:45.500Z","9f8c26oyzxwvs13","Dennis Ritchie","2026-04-10 16:07:28.644Z",{"collectionId":12,"collectionName":13,"created":190,"created_by":15,"id":191,"name":192,"updated":193,"updated_by":15},"2026-03-04 08:20:48.783Z","zs2uskcp8hs1e8k","C Programming History","2026-04-10 16:07:29.017Z",{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":196,"collectionId":51,"collectionName":52,"created":15,"expand":197,"id":205,"slug":206,"updated":207,"views":208},"102u7miss0ec94h",{"category":198},{"blogIds":199,"collectionId":56,"collectionName":57,"created":200,"created_by":15,"id":196,"image":15,"image_alt":15,"image_path":15,"label":201,"name":202,"priority":109,"publish_at":203,"scheduled_at":15,"status":65,"updated":204,"updated_by":15},[],"2026-03-04 08:19:48.998Z",{"en":202,"th":202},"The Origin of Code","2026-02-18 01:59:52.528Z","2026-04-25 02:32:14.183Z","pua7xa2ecuhvbcu","origin-of-c-programming-language","2026-05-06 13:31:29.261Z",209,"204ju6yjjphhocj","2026-01-01 04:09:24.532Z","Explore the deep history of the C language. From its birth at Bell Labs to becoming the bedrock of modern operating systems and programming languages. Learn the genius behind Dennis Ritchie's creation.","2026-05-11 21:45:19.256Z",{"alt":214,"cover_image_path":215,"created":216,"expand":217,"id":252,"published_at":253,"school_blog":249,"short_description":254,"title":214,"updated":255,"slug":250,"views":251},"JS2GO EP.50 Deploying Applications: Go vs Node.js for Production Systems","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002F2720p0diuraw0wo\u002Fcover_image_ep_50_deploying_applications_go_vs_node_fecycri5ek.oductionSystems.webp","2026-03-04 08:44:47.848Z",{"keywords":218,"locale":235,"school_blog":236},[219,224,225,230],{"collectionId":12,"collectionName":13,"created":220,"created_by":15,"id":221,"name":222,"updated":223,"updated_by":15},"2026-03-04 08:44:47.024Z","p4tvi007knx0nib","Deploy Application","2026-04-10 16:12:49.798Z",{"collectionId":12,"collectionName":13,"created":20,"created_by":15,"id":21,"name":22,"updated":23,"updated_by":15},{"collectionId":12,"collectionName":13,"created":226,"created_by":15,"id":227,"name":228,"updated":229,"updated_by":15},"2026-03-04 08:24:40.405Z","05u3tysava2z6ga","Node.js","2026-04-10 16:07:29.504Z",{"collectionId":12,"collectionName":13,"created":231,"created_by":15,"id":232,"name":233,"updated":234,"updated_by":15},"2026-03-04 08:44:47.385Z","li4cs2v3atd0wds","Production","2026-04-10 16:12:49.890Z",{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":237,"collectionId":51,"collectionName":52,"created":15,"expand":238,"id":249,"slug":250,"updated":15,"views":251},"hsa1afr8fcnd6qb",{"category":239},{"blogIds":240,"collectionId":56,"collectionName":57,"created":241,"created_by":15,"id":237,"image":242,"image_alt":15,"image_path":243,"label":244,"name":245,"priority":246,"publish_at":247,"scheduled_at":15,"status":65,"updated":248,"updated_by":15},[],"2026-03-04 08:24:37.986Z","js2_go_2_11zon_y6paxmuz32.webp","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclcatblg987654321\u002Fhsa1afr8fcnd6qb\u002Fjs2_go_2_11zon_y6paxmuz32.webp",{"en":245,"th":245},"JS2GO",10,"2025-08-11 03:41:08.820Z","2026-04-25 02:32:14.339Z","v7nigitalddgztd","deploying-applications-go-vs-nodejs-production",208,"2720p0diuraw0wo","2025-12-30 10:59:37.237Z","An end-to-end production deployment guide comparing Go and Node.js, covering build strategies, Docker multi-stage builds, secrets management, CI\u002FCD pipelines, and zero-downtime deployment based on real-world usage.","2026-05-08 06:51:57.845Z",{"alt":257,"cover_image_path":258,"created":259,"expand":260,"id":283,"published_at":284,"school_blog":280,"short_description":285,"title":257,"updated":286,"slug":281,"views":208},"Git for Beginners: Visual Guide to Add, Commit, and Push (No Memorizing Needed)","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fznbpmjusku9bqjn\u002Finfographic_showing_git_workflow_93apmqhvpj.webp","2026-03-04 08:44:46.224Z",{"keywords":261,"locale":274,"school_blog":275},[262,263,264,269],{"collectionId":12,"collectionName":13,"created":137,"created_by":15,"id":138,"name":139,"updated":140,"updated_by":15},{"collectionId":12,"collectionName":13,"created":142,"created_by":15,"id":143,"name":144,"updated":145,"updated_by":15},{"collectionId":12,"collectionName":13,"created":265,"created_by":15,"id":266,"name":267,"updated":268,"updated_by":15},"2026-03-04 08:44:44.589Z","0rhtp9q4g9epxjv","Git tutorial","2026-04-10 16:12:49.241Z",{"collectionId":12,"collectionName":13,"created":270,"created_by":15,"id":271,"name":272,"updated":273,"updated_by":15},"2026-03-04 08:44:44.958Z","hl4mu6quhfjhdlw","Git for beginners","2026-04-10 16:12:49.337Z",{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":148,"collectionId":51,"collectionName":52,"created":15,"expand":276,"id":280,"slug":281,"updated":282,"views":208},{"category":277},{"blogIds":278,"collectionId":56,"collectionName":57,"created":152,"created_by":15,"id":148,"image":153,"image_alt":15,"image_path":154,"label":279,"name":156,"priority":157,"publish_at":158,"scheduled_at":15,"status":65,"updated":159,"updated_by":15},[],{"en":156,"th":156},"g4okogcok21khr0","git-beginner-add-commit-push-visual","2026-05-13 17:42:03.984Z","znbpmjusku9bqjn","2025-12-30 10:31:34.048Z","Stop naming files \"Project_Final\"! Master Git basics through a visual mental model. Learn how Add, Commit, and Push work in the professional software development workflow.","2026-05-08 06:51:57.192Z",{"alt":288,"cover_image_path":289,"created":290,"expand":291,"id":320,"published_at":321,"school_blog":316,"short_description":322,"title":288,"updated":323,"slug":317,"views":319},"EP.123 Load Balancing & Sticky Sessions for WebSocket (Production-Ready Guide)","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fek7zzajyalhrlh3\u002Fcover_image_ep_2pqo0kl48b.tion-ReadyGuide.webp","2026-03-04 08:44:49.230Z",{"keywords":292,"locale":310,"school_blog":311},[293,294,299,304,309],{"collectionId":12,"collectionName":13,"created":20,"created_by":15,"id":21,"name":22,"updated":23,"updated_by":15},{"collectionId":12,"collectionName":13,"created":295,"created_by":15,"id":296,"name":297,"updated":298,"updated_by":15},"2026-03-04 08:20:14.253Z","ah6lvy4x8qe08l5","Golang","2026-04-10 16:07:26.172Z",{"collectionId":12,"collectionName":13,"created":300,"created_by":15,"id":301,"name":302,"updated":303,"updated_by":15},"2026-03-04 08:44:47.893Z","1r53azecnj44o3t","Real-time","2026-04-10 16:12:50.006Z",{"collectionId":12,"collectionName":13,"created":305,"created_by":15,"id":306,"name":307,"updated":308,"updated_by":15},"2026-03-04 08:34:10.799Z","m3qoswhgnc4c38n","Kubernetes","2026-04-10 16:08:08.875Z",{"collectionId":12,"collectionName":13,"created":25,"created_by":15,"id":26,"name":27,"updated":28,"updated_by":15},{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":50,"collectionId":51,"collectionName":52,"created":15,"expand":312,"id":316,"slug":317,"updated":318,"views":319},{"category":313},{"blogIds":314,"collectionId":56,"collectionName":57,"created":58,"created_by":15,"id":50,"image":59,"image_alt":15,"image_path":60,"label":315,"name":62,"priority":63,"publish_at":64,"scheduled_at":15,"status":65,"updated":66,"updated_by":15},[],{"en":62,"th":62},"rr43ycru4104v7f","ep-123-load-balancing-sticky-sessions-websocket","2026-05-08 21:11:54.216Z",261,"ek7zzajyalhrlh3","2025-12-30 09:45:58.631Z","A practical guide to designing WebSocket load balancing with sticky sessions, covering real-world scaling strategies on Kubernetes to prevent dropped connections and ensure production-grade reliability.","2026-05-08 06:51:57.974Z",{"alt":325,"cover_image_path":326,"created":327,"expand":328,"id":356,"published_at":357,"school_blog":353,"short_description":358,"title":325,"updated":359,"slug":354,"views":355},"EP.122 Horizontal & Geo‑distributed Scaling Strategies for WebSocket","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Frbp4h275asugxet\u002Fcover_image_ep_xg7ebflqf4.iesforWebSocket.webp","2026-03-04 08:44:50.633Z",{"keywords":329,"locale":347,"school_blog":348},[330,331,336,341,346],{"collectionId":12,"collectionName":13,"created":20,"created_by":15,"id":21,"name":22,"updated":23,"updated_by":15},{"collectionId":12,"collectionName":13,"created":332,"created_by":15,"id":333,"name":334,"updated":335,"updated_by":15},"2026-03-04 08:44:32.154Z","u0s66bjop3dljau","Horizontal Scaling","2026-04-10 16:12:46.399Z",{"collectionId":12,"collectionName":13,"created":337,"created_by":15,"id":338,"name":339,"updated":340,"updated_by":15},"2026-03-04 08:44:49.944Z","5sx3ab5gv2n24mh","Geo Distributed Architecture","2026-04-10 16:12:50.651Z",{"collectionId":12,"collectionName":13,"created":342,"created_by":15,"id":343,"name":344,"updated":345,"updated_by":15},"2026-03-04 08:44:50.258Z","nrtw5001po78dez","WebSocket Scaling","2026-04-10 16:12:50.756Z",{"collectionId":12,"collectionName":13,"created":25,"created_by":15,"id":26,"name":27,"updated":28,"updated_by":15},{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":50,"collectionId":51,"collectionName":52,"created":15,"expand":349,"id":353,"slug":354,"updated":15,"views":355},{"category":350},{"blogIds":351,"collectionId":56,"collectionName":57,"created":58,"created_by":15,"id":50,"image":59,"image_alt":15,"image_path":60,"label":352,"name":62,"priority":63,"publish_at":64,"scheduled_at":15,"status":65,"updated":66,"updated_by":15},[],{"en":62,"th":62},"xrv5n3fjd3aocjj","ep122-horizontal-geo-distributed-websocket-scaling",202,"rbp4h275asugxet","2025-12-30 09:45:49.195Z","Learn how to design a geo‑distributed WebSocket system that reduces global latency and supports cross‑region real‑time communication.","2026-05-08 06:51:58.683Z",{"alt":361,"cover_image_path":362,"created":363,"expand":364,"id":387,"published_at":388,"school_blog":384,"short_description":389,"title":361,"updated":390,"slug":385,"views":386},"EP.120 Whiteboard & Real-time Drawing Synchronization with WebSocket","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fahq5ev6lnmk68vh\u002Fcover_image_ep_tlqmwo22d8.onwithWebSocket.webp","2026-03-04 08:44:52.189Z",{"keywords":365,"locale":378,"school_blog":379},[366,370,371,372,373],{"collectionId":12,"collectionName":13,"created":367,"created_by":15,"id":368,"name":62,"updated":369,"updated_by":15},"2026-03-04 08:44:51.471Z","hlato0hav8vo8wm","2026-04-10 16:12:50.850Z",{"collectionId":12,"collectionName":13,"created":25,"created_by":15,"id":26,"name":27,"updated":28,"updated_by":15},{"collectionId":12,"collectionName":13,"created":295,"created_by":15,"id":296,"name":297,"updated":298,"updated_by":15},{"collectionId":12,"collectionName":13,"created":20,"created_by":15,"id":21,"name":22,"updated":23,"updated_by":15},{"collectionId":12,"collectionName":13,"created":374,"created_by":15,"id":375,"name":376,"updated":377,"updated_by":15},"2026-03-04 08:44:51.688Z","ztv5f26qud778za","whiteboard","2026-04-10 16:12:50.940Z",{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":50,"collectionId":51,"collectionName":52,"created":15,"expand":380,"id":384,"slug":385,"updated":15,"views":386},{"category":381},{"blogIds":382,"collectionId":56,"collectionName":57,"created":58,"created_by":15,"id":50,"image":59,"image_alt":15,"image_path":60,"label":383,"name":62,"priority":63,"publish_at":64,"scheduled_at":15,"status":65,"updated":66,"updated_by":15},[],{"en":62,"th":62},"1h3hjyb5awyprlq","ep-120-whiteboard-realtime-drawing-websocket",217,"ahq5ev6lnmk68vh","2025-12-29 04:41:05.049Z","Learn how to build a real-time whiteboard system that supports multi-user drawing, cursor sync, and undo\u002Fredo using Go and WebSocket","2026-05-08 06:51:59.302Z",{"alt":392,"cover_image_path":393,"created":394,"expand":395,"id":429,"published_at":430,"school_blog":425,"short_description":431,"title":392,"updated":432,"slug":426,"views":428},"JS2GO EP.49 Backend Security with Go and Node.js","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fje5avechsgnsfjr\u002Fcover_js2_go_ep_49_backend_security_with_go_and_node_a53bkt8g8u.js.webp","2026-03-04 08:44:53.258Z",{"keywords":396,"locale":419,"school_blog":420},[397,402,407,412,417,418],{"collectionId":12,"collectionName":13,"created":398,"created_by":15,"id":399,"name":400,"updated":401,"updated_by":15},"2026-03-04 08:34:18.714Z","7cb29z95923lmhe","authentication","2026-04-10 16:08:11.822Z",{"collectionId":12,"collectionName":13,"created":403,"created_by":15,"id":404,"name":405,"updated":406,"updated_by":15},"2026-03-04 08:44:52.376Z","7kgkxt1b9xd0cca","Authorization","2026-04-10 16:12:51.107Z",{"collectionId":12,"collectionName":13,"created":408,"created_by":15,"id":409,"name":410,"updated":411,"updated_by":15},"2026-03-04 08:44:52.790Z","tkf1l5rauw0t7m0","Secure API Design","2026-04-10 16:12:51.172Z",{"collectionId":12,"collectionName":13,"created":413,"created_by":15,"id":414,"name":415,"updated":416,"updated_by":15},"2026-03-04 08:44:53.062Z","puutdnxuitnxxgq","Backend","2026-04-10 16:12:51.264Z",{"collectionId":12,"collectionName":13,"created":226,"created_by":15,"id":227,"name":228,"updated":229,"updated_by":15},{"collectionId":12,"collectionName":13,"created":20,"created_by":15,"id":21,"name":22,"updated":23,"updated_by":15},{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":237,"collectionId":51,"collectionName":52,"created":15,"expand":421,"id":425,"slug":426,"updated":427,"views":428},{"category":422},{"blogIds":423,"collectionId":56,"collectionName":57,"created":241,"created_by":15,"id":237,"image":242,"image_alt":15,"image_path":243,"label":424,"name":245,"priority":246,"publish_at":247,"scheduled_at":15,"status":65,"updated":248,"updated_by":15},[],{"en":245,"th":245},"q6au12trb7ipmxx","js2go-ep49-backend-security-authentication-authorization-validation","2026-05-13 07:40:20.116Z",253,"je5avechsgnsfjr","2025-12-24 10:19:37.092Z","A practical guide to backend security covering authentication authorization and data validation with real production examples in Go and Node.js.","2026-05-08 06:51:59.632Z",{"alt":434,"cover_image_path":435,"created":436,"expand":437,"id":472,"published_at":473,"school_blog":468,"short_description":474,"title":434,"updated":475,"slug":469,"views":471},"JS2GO EP.48 Logging & Monitoring for Production (Go & Node.js)","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fjim444bkspf39pv\u002Fcover_image_js2_go_ep_48_logging_monitoring_for_production_go_node_3wt2yddnc6.js.webp","2026-03-04 08:44:55.136Z",{"keywords":438,"locale":462,"school_blog":463},[439,444,449,454,459,460,461],{"collectionId":12,"collectionName":13,"created":440,"created_by":15,"id":441,"name":442,"updated":443,"updated_by":15},"2026-03-04 08:44:53.651Z","tuo9u1ayxlr8xvm","Monitoring System","2026-04-10 16:12:51.456Z",{"collectionId":12,"collectionName":13,"created":445,"created_by":15,"id":446,"name":447,"updated":448,"updated_by":15},"2026-03-04 08:44:34.571Z","fiybaq65m7oymtd","Monitoring","2026-04-10 16:12:46.904Z",{"collectionId":12,"collectionName":13,"created":450,"created_by":15,"id":451,"name":452,"updated":453,"updated_by":15},"2026-03-04 08:44:54.012Z","e283qzmjw1vq2l4","Logging Production","2026-04-10 16:12:51.523Z",{"collectionId":12,"collectionName":13,"created":455,"created_by":15,"id":456,"name":457,"updated":458,"updated_by":15},"2026-03-04 08:33:55.302Z","0mue4zt83jcdtq9","Logging","2026-04-10 16:08:03.396Z",{"collectionId":12,"collectionName":13,"created":226,"created_by":15,"id":227,"name":228,"updated":229,"updated_by":15},{"collectionId":12,"collectionName":13,"created":96,"created_by":15,"id":97,"name":98,"updated":99,"updated_by":15},{"collectionId":12,"collectionName":13,"created":20,"created_by":15,"id":21,"name":22,"updated":23,"updated_by":15},{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":237,"collectionId":51,"collectionName":52,"created":15,"expand":464,"id":468,"slug":469,"updated":470,"views":471},{"category":465},{"blogIds":466,"collectionId":56,"collectionName":57,"created":241,"created_by":15,"id":237,"image":242,"image_alt":15,"image_path":243,"label":467,"name":245,"priority":246,"publish_at":247,"scheduled_at":15,"status":65,"updated":248,"updated_by":15},[],{"en":245,"th":245},"d8jrjoxb8k7la64","js2go-ep48-logging-monitoring-production-go-nodejs","2026-05-13 08:17:22.259Z",233,"jim444bkspf39pv","2025-12-23 04:57:41.053Z","Move from basic logging to full system observability. Learn structured logging, correlation IDs, metrics, distributed tracing, and error monitoring to build production-ready Go and Node.js systems.","2026-05-08 06:52:00.229Z",{"alt":477,"cover_image_path":478,"created":479,"expand":480,"id":512,"published_at":513,"school_blog":508,"short_description":514,"title":477,"updated":515,"slug":509,"views":511},"Work-Life Balance for Programmers: How to Avoid Burnout in the Tech Industry","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fcz95hm8rkof4th4\u002Fwork_life_balance_for_programmers_how_to_avoid_burnout_in_the_tech_industry_e8j2y888zl.webp","2026-03-04 08:44:58.316Z",{"keywords":481,"locale":502,"school_blog":503},[482,487,492,497],{"collectionId":12,"collectionName":13,"created":483,"created_by":15,"id":484,"name":485,"updated":486,"updated_by":15},"2026-03-04 08:44:57.070Z","5g80f54k2d56ht8","Programmer Burnout","2026-04-10 16:12:52.014Z",{"collectionId":12,"collectionName":13,"created":488,"created_by":15,"id":489,"name":490,"updated":491,"updated_by":15},"2026-03-04 08:44:57.484Z","kfa3z2tnhtzzhvo","Work-Life Balance for Programmers","2026-04-10 16:12:52.161Z",{"collectionId":12,"collectionName":13,"created":493,"created_by":15,"id":494,"name":495,"updated":496,"updated_by":15},"2026-03-04 08:44:57.697Z","rw5wz1cf9aox58p","Work-Life Balance","2026-04-10 16:12:52.284Z",{"collectionId":12,"collectionName":13,"created":498,"created_by":15,"id":499,"name":500,"updated":501,"updated_by":15},"2026-03-04 08:35:12.499Z","9bexb3o9mxg9dei","Burnout","2026-04-10 16:12:39.924Z",{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":148,"collectionId":51,"collectionName":52,"created":15,"expand":504,"id":508,"slug":509,"updated":510,"views":511},{"category":505},{"blogIds":506,"collectionId":56,"collectionName":57,"created":152,"created_by":15,"id":148,"image":153,"image_alt":15,"image_path":154,"label":507,"name":156,"priority":157,"publish_at":158,"scheduled_at":15,"status":65,"updated":159,"updated_by":15},[],{"en":156,"th":156},"sy7kac0t03r9dox","work-life-balance-for-programmers","2026-05-12 03:07:21.655Z",230,"cz95hm8rkof4th4","2025-12-22 02:12:43.379Z","Programming is a high-pressure career filled with deadlines and constant learning. This article explores work-life balance for programmers, practical mindset shifts, and sustainable habits to help developers stay productive without burning out.","2026-05-08 06:52:01.057Z",5,12,406,34]