[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"academy-blogs-en-6-12-superdev%25252525252525252525252520academy-all-all-createdAt:desc-default":3},{"data":4,"page":517,"perPage":518,"totalItems":519,"totalPages":520},[5,73,127,174,222,259,292,339,371,402,427,469],{"alt":6,"cover_image_path":7,"created":8,"expand":9,"id":69,"published_at":70,"school_blog":66,"short_description":71,"title":6,"updated":72,"slug":67,"views":68},"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":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:51.471Z","","hlato0hav8vo8wm","Golang The Series","2026-04-10 16:12:50.850Z",{"collectionId":12,"collectionName":13,"created":20,"created_by":15,"id":21,"name":22,"updated":23,"updated_by":15},"2026-03-04 08:34:00.920Z","ecac9y661or1xka","WebSocket","2026-04-10 16:08:05.227Z",{"collectionId":12,"collectionName":13,"created":25,"created_by":15,"id":26,"name":27,"updated":28,"updated_by":15},"2026-03-04 08:20:14.253Z","ah6lvy4x8qe08l5","Golang","2026-04-10 16:07:26.172Z",{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},"2026-03-04 08:20:11.547Z","ey3puyme01a9bsw","Go","2026-04-10 16:07:25.893Z",{"collectionId":12,"collectionName":13,"created":35,"created_by":15,"id":36,"name":37,"updated":38,"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},"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":66,"slug":67,"updated":15,"views":68},"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":17,"priority":62,"publish_at":63,"scheduled_at":15,"status":64,"updated":65,"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":17,"th":17},1,"2026-03-16 04:39:38.440Z","published","2026-04-25 02:32:15.470Z","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":74,"cover_image_path":75,"created":76,"expand":77,"id":123,"published_at":124,"school_blog":119,"short_description":125,"title":74,"updated":126,"slug":120,"views":122},"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":78,"locale":105,"school_blog":106},[79,84,89,94,99,104],{"collectionId":12,"collectionName":13,"created":80,"created_by":15,"id":81,"name":82,"updated":83,"updated_by":15},"2026-03-04 08:34:18.714Z","7cb29z95923lmhe","authentication","2026-04-10 16:08:11.822Z",{"collectionId":12,"collectionName":13,"created":85,"created_by":15,"id":86,"name":87,"updated":88,"updated_by":15},"2026-03-04 08:44:52.376Z","7kgkxt1b9xd0cca","Authorization","2026-04-10 16:12:51.107Z",{"collectionId":12,"collectionName":13,"created":90,"created_by":15,"id":91,"name":92,"updated":93,"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":95,"created_by":15,"id":96,"name":97,"updated":98,"updated_by":15},"2026-03-04 08:44:53.062Z","puutdnxuitnxxgq","Backend","2026-04-10 16:12:51.264Z",{"collectionId":12,"collectionName":13,"created":100,"created_by":15,"id":101,"name":102,"updated":103,"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":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":107,"collectionId":51,"collectionName":52,"created":15,"expand":108,"id":119,"slug":120,"updated":121,"views":122},"hsa1afr8fcnd6qb",{"category":109},{"blogIds":110,"collectionId":56,"collectionName":57,"created":111,"created_by":15,"id":107,"image":112,"image_alt":15,"image_path":113,"label":114,"name":115,"priority":116,"publish_at":117,"scheduled_at":15,"status":64,"updated":118,"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":115,"th":115},"JS2GO",10,"2025-08-11 03:41:08.820Z","2026-04-25 02:32:14.339Z","q6au12trb7ipmxx","js2go-ep49-backend-security-authentication-authorization-validation","2026-05-15 22:21:45.292Z",254,"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":128,"cover_image_path":129,"created":130,"expand":131,"id":170,"published_at":171,"school_blog":166,"short_description":172,"title":128,"updated":173,"slug":167,"views":169},"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":132,"locale":160,"school_blog":161},[133,138,143,148,153,154,159],{"collectionId":12,"collectionName":13,"created":134,"created_by":15,"id":135,"name":136,"updated":137,"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":139,"created_by":15,"id":140,"name":141,"updated":142,"updated_by":15},"2026-03-04 08:44:34.571Z","fiybaq65m7oymtd","Monitoring","2026-04-10 16:12:46.904Z",{"collectionId":12,"collectionName":13,"created":144,"created_by":15,"id":145,"name":146,"updated":147,"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":149,"created_by":15,"id":150,"name":151,"updated":152,"updated_by":15},"2026-03-04 08:33:55.302Z","0mue4zt83jcdtq9","Logging","2026-04-10 16:08:03.396Z",{"collectionId":12,"collectionName":13,"created":100,"created_by":15,"id":101,"name":102,"updated":103,"updated_by":15},{"collectionId":12,"collectionName":13,"created":155,"created_by":15,"id":156,"name":157,"updated":158,"updated_by":15},"2026-03-04 08:20:42.484Z","vslzz9nvv6n77cx","JavaScript","2026-04-10 16:07:28.339Z",{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":107,"collectionId":51,"collectionName":52,"created":15,"expand":162,"id":166,"slug":167,"updated":168,"views":169},{"category":163},{"blogIds":164,"collectionId":56,"collectionName":57,"created":111,"created_by":15,"id":107,"image":112,"image_alt":15,"image_path":113,"label":165,"name":115,"priority":116,"publish_at":117,"scheduled_at":15,"status":64,"updated":118,"updated_by":15},[],{"en":115,"th":115},"d8jrjoxb8k7la64","js2go-ep48-logging-monitoring-production-go-nodejs","2026-05-19 14:14:15.228Z",234,"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":175,"cover_image_path":176,"created":177,"expand":178,"id":218,"published_at":219,"school_blog":214,"short_description":220,"title":175,"updated":221,"slug":215,"views":217},"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":179,"locale":200,"school_blog":201},[180,185,190,195],{"collectionId":12,"collectionName":13,"created":181,"created_by":15,"id":182,"name":183,"updated":184,"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":186,"created_by":15,"id":187,"name":188,"updated":189,"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":191,"created_by":15,"id":192,"name":193,"updated":194,"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":196,"created_by":15,"id":197,"name":198,"updated":199,"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":202,"collectionId":51,"collectionName":52,"created":15,"expand":203,"id":214,"slug":215,"updated":216,"views":217},"spm4l1k5bgmhmmt",{"category":204},{"blogIds":205,"collectionId":56,"collectionName":57,"created":206,"created_by":15,"id":202,"image":207,"image_alt":15,"image_path":208,"label":209,"name":210,"priority":211,"publish_at":212,"scheduled_at":15,"status":64,"updated":213,"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":210,"th":210},"Knowledge",0,"2026-03-18 02:25:41.222Z","2026-04-25 02:32:14.497Z","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",{"alt":223,"cover_image_path":224,"created":225,"expand":226,"id":255,"published_at":256,"school_blog":251,"short_description":257,"title":223,"updated":258,"slug":252,"views":254},"EP.119 Build Real-time Document Editing System Like Google Docs Using WebSocket and Go","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fi06pxwfxjgbsk10\u002Fcover_image_ep_iax677t9cg.gWebSocketandGo.webp","2026-03-04 08:44:55.170Z",{"keywords":227,"locale":245,"school_blog":246},[228,233,238,239,240],{"collectionId":12,"collectionName":13,"created":229,"created_by":15,"id":230,"name":231,"updated":232,"updated_by":15},"2026-03-04 08:44:49.054Z","vbjgbr5ah0kh43p","Real-time System","2026-04-10 16:12:50.311Z",{"collectionId":12,"collectionName":13,"created":234,"created_by":15,"id":235,"name":236,"updated":237,"updated_by":15},"2026-03-04 08:44:54.550Z","dhhilrqrpmtr3x7","Google Docs","2026-04-10 16:12:51.619Z",{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"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":241,"created_by":15,"id":242,"name":243,"updated":244,"updated_by":15},"2026-03-04 08:44:54.877Z","ype7kkszqa7py9n","Real-time Document","2026-04-10 16:12:51.779Z",{"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":247,"id":251,"slug":252,"updated":253,"views":254},{"category":248},{"blogIds":249,"collectionId":56,"collectionName":57,"created":58,"created_by":15,"id":50,"image":59,"image_alt":15,"image_path":60,"label":250,"name":17,"priority":62,"publish_at":63,"scheduled_at":15,"status":64,"updated":65,"updated_by":15},[],{"en":17,"th":17},"nez2cwex9p6we4q","realtime-document-editing-with-go-websocket","2026-05-12 11:21:18.066Z",242,"i06pxwfxjgbsk10","2025-12-22 02:12:37.647Z","Learn how to build a collaborative real-time document editing system with Go and WebSocket, featuring conflict resolution and version control","2026-05-08 06:52:00.358Z",{"alt":260,"cover_image_path":261,"created":262,"expand":263,"id":288,"published_at":289,"school_blog":284,"short_description":290,"title":260,"updated":291,"slug":285,"views":287},"EP.118 Building Real-time AI + WebSocket System for IoT Devices","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Ftmpxi6w64ybdlt3\u002Fcover_image_ep_ljoqeir96z.emforIoTDevices.webp","2026-03-04 08:44:56.620Z",{"keywords":264,"locale":278,"school_blog":279},[265,266,271,276,277],{"collectionId":12,"collectionName":13,"created":229,"created_by":15,"id":230,"name":231,"updated":232,"updated_by":15},{"collectionId":12,"collectionName":13,"created":267,"created_by":15,"id":268,"name":269,"updated":270,"updated_by":15},"2026-03-04 08:31:29.142Z","hrqdq7kjl5lzjmi","AI","2026-04-10 16:07:41.358Z",{"collectionId":12,"collectionName":13,"created":272,"created_by":15,"id":273,"name":274,"updated":275,"updated_by":15},"2026-03-04 08:44:56.136Z","1ant8hjpcxuj8a2","IoT","2026-04-10 16:12:51.845Z",{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"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":50,"collectionId":51,"collectionName":52,"created":15,"expand":280,"id":284,"slug":285,"updated":286,"views":287},{"category":281},{"blogIds":282,"collectionId":56,"collectionName":57,"created":58,"created_by":15,"id":50,"image":59,"image_alt":15,"image_path":60,"label":283,"name":17,"priority":62,"publish_at":63,"scheduled_at":15,"status":64,"updated":65,"updated_by":15},[],{"en":17,"th":17},"3wlgaoume77bwtm","golang-ep118-ai-websocket-iot-real-time","2026-05-11 11:49:09.698Z",251,"tmpxi6w64ybdlt3","2025-12-22 02:12:32.820Z","Learn how to build a real-time AI-powered IoT system using Go and WebSocket for anomaly detection and predictive maintenance, designed for production-ready environments.","2026-05-08 06:52:00.684Z",{"alt":293,"cover_image_path":294,"created":295,"expand":296,"id":335,"published_at":336,"school_blog":331,"short_description":337,"title":293,"updated":338,"slug":332,"views":334},"Unveiling \"Nano Banana\": How Google's Secret AI Model Dominated the Leaderboard","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fujrpqaxotr44fvx\u002Fimage_digital_glowing_banana_graphic_representing_nano_banana_the_codename_for_google_s_new_gemini_i_s3l9z0lqxx.webp","2026-03-04 08:45:01.815Z",{"keywords":297,"locale":318,"school_blog":319},[298,303,308,313],{"collectionId":12,"collectionName":13,"created":299,"created_by":15,"id":300,"name":301,"updated":302,"updated_by":15},"2026-03-04 08:44:58.971Z","f63kzgztnhq2zg5","AI Image Generator","2026-04-10 16:12:52.569Z",{"collectionId":12,"collectionName":13,"created":304,"created_by":15,"id":305,"name":306,"updated":307,"updated_by":15},"2026-03-04 08:44:59.347Z","zx9l4eq448df98a","Gemini AI","2026-04-10 16:12:52.674Z",{"collectionId":12,"collectionName":13,"created":309,"created_by":15,"id":310,"name":311,"updated":312,"updated_by":15},"2026-03-04 08:44:59.765Z","51knaqayw5mn73i","Google Gemini","2026-04-10 16:12:52.773Z",{"collectionId":12,"collectionName":13,"created":314,"created_by":15,"id":315,"name":316,"updated":317,"updated_by":15},"2026-03-04 08:45:00.498Z","21720ewj4b2qmja","Nano Banana","2026-04-10 16:12:53.080Z",{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":320,"collectionId":51,"collectionName":52,"created":15,"expand":321,"id":331,"slug":332,"updated":333,"views":334},"pkuzfil3b4ug2ea",{"category":322},{"blogIds":323,"collectionId":56,"collectionName":57,"created":324,"created_by":15,"id":320,"image":325,"image_alt":15,"image_path":326,"label":327,"name":328,"priority":211,"publish_at":329,"scheduled_at":15,"status":64,"updated":330,"updated_by":15},[],"2026-03-04 08:31:47.860Z","3w9eadde0ql_vquww3nx7o.png","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclcatblg987654321\u002Fpkuzfil3b4ug2ea\u002F3w9eadde0ql_vquww3nx7o.png",{"en":328,"th":328},"Cutting-Edge Tech","2025-01-27 08:43:38.395Z","2026-04-25 02:32:14.847Z","r41jxqt4x4t621a","nano-banana-google-gemini-ai-reveal","2026-05-21 12:41:51.120Z",264,"ujrpqaxotr44fvx","2025-12-17 11:47:07.553Z","Discover the truth behind \"Nano Banana,\" the secret codename for Google's Gemini image model that topped the LMSYS leaderboard. Learn how it beats competitors with superior text rendering and prompt adherence.","2026-05-08 06:52:01.697Z",{"alt":340,"cover_image_path":341,"created":342,"expand":343,"id":367,"published_at":368,"school_blog":363,"short_description":369,"title":340,"updated":370,"slug":364,"views":366},"JS2GO EP.47 Dependency Injection in Go and Node.js: Why Large Systems Need DI","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fg72uu715esxebkw\u002Fcover_image_js2_go_ep_47_dependency_injection_in_go_and_node_iuyyactaxs.geSystemsNeedDI.webp","2026-03-04 08:45:02.477Z",{"keywords":344,"locale":357,"school_blog":358},[345,350,351,352],{"collectionId":12,"collectionName":13,"created":346,"created_by":15,"id":347,"name":348,"updated":349,"updated_by":15},"2026-03-04 08:45:01.083Z","anx8rod7y41shjl","Clean Architecture","2026-04-10 16:12:53.282Z",{"collectionId":12,"collectionName":13,"created":100,"created_by":15,"id":101,"name":102,"updated":103,"updated_by":15},{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},{"collectionId":12,"collectionName":13,"created":353,"created_by":15,"id":354,"name":355,"updated":356,"updated_by":15},"2026-03-04 08:45:01.460Z","bbwe2jz83qa1d1j","Dependency Injection","2026-04-10 16:12:53.456Z",{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":107,"collectionId":51,"collectionName":52,"created":15,"expand":359,"id":363,"slug":364,"updated":365,"views":366},{"category":360},{"blogIds":361,"collectionId":56,"collectionName":57,"created":111,"created_by":15,"id":107,"image":112,"image_alt":15,"image_path":113,"label":362,"name":115,"priority":116,"publish_at":117,"scheduled_at":15,"status":64,"updated":118,"updated_by":15},[],{"en":115,"th":115},"qo0d0sbi306ytfv","js2go-ep47-dependency-injection-go-nodejs-en","2026-05-14 08:04:26.790Z",209,"g72uu715esxebkw","2025-12-17 02:26:07.719Z","Dependency Injection (DI) makes systems more testable, maintainable, and scalable. This article explains DI concepts, constructor-based injection in Go, DI containers in Node.js, mock-based testing, and how DI enables clean system architecture suitable.","2026-05-08 06:52:02.057Z",{"alt":372,"cover_image_path":373,"created":374,"expand":375,"id":398,"published_at":399,"school_blog":395,"short_description":400,"title":372,"updated":401,"slug":396,"views":397},"JS2GO EP.46 Building Middleware and Modular Architecture in Go and Node.js","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fch8d3odsl34310z\u002Fcover_image_js2_go_building_middleware_and_modular_architecture_in_go_and_node_s8zxa4c1l8.js.webp","2026-03-04 08:45:04.090Z",{"keywords":376,"locale":389,"school_blog":390},[377,378,383,384],{"collectionId":12,"collectionName":13,"created":100,"created_by":15,"id":101,"name":102,"updated":103,"updated_by":15},{"collectionId":12,"collectionName":13,"created":379,"created_by":15,"id":380,"name":381,"updated":382,"updated_by":15},"2026-03-04 08:45:02.900Z","12i9ika4aocvtm5","Modular Architecture","2026-04-10 16:12:53.598Z",{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},{"collectionId":12,"collectionName":13,"created":385,"created_by":15,"id":386,"name":387,"updated":388,"updated_by":15},"2026-03-04 08:34:25.436Z","bctyeonwhcrzvq3","Middleware","2026-04-10 16:08:14.305Z",{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":107,"collectionId":51,"collectionName":52,"created":15,"expand":391,"id":395,"slug":396,"updated":15,"views":397},{"category":392},{"blogIds":393,"collectionId":56,"collectionName":57,"created":111,"created_by":15,"id":107,"image":112,"image_alt":15,"image_path":113,"label":394,"name":115,"priority":116,"publish_at":117,"scheduled_at":15,"status":64,"updated":118,"updated_by":15},[],{"en":115,"th":115},"ka7u3ttruvadnf0","js2go-ep46-middleware-modular-architecture-go-nodejs-en",208,"ch8d3odsl34310z","2025-12-17 02:25:18.881Z","Learn how to build essential Middleware (Auth, Logging, Rate Limit) and design a clean, scalable Modular Architecture in Go and Node.js. Includes real-world examples using Fiber and Express, plus Production Best Practices.","2026-05-08 06:52:02.460Z",{"alt":403,"cover_image_path":404,"created":405,"expand":406,"id":423,"published_at":424,"school_blog":419,"short_description":425,"title":403,"updated":426,"slug":420,"views":422},"EP.117 Connecting Multiple IoT Devices with WebSocket (Real-time IoT Network)","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fspxc3if2zeefxzq\u002Fcover_image_ep_ljh8lpgnxz.eswithWebSocket.webp","2026-03-04 08:45:04.458Z",{"keywords":407,"locale":413,"school_blog":414},[408,409,410,411,412],{"collectionId":12,"collectionName":13,"created":229,"created_by":15,"id":230,"name":231,"updated":232,"updated_by":15},{"collectionId":12,"collectionName":13,"created":272,"created_by":15,"id":273,"name":274,"updated":275,"updated_by":15},{"collectionId":12,"collectionName":13,"created":25,"created_by":15,"id":26,"name":27,"updated":28,"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":30,"created_by":15,"id":31,"name":32,"updated":33,"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":415,"id":419,"slug":420,"updated":421,"views":422},{"category":416},{"blogIds":417,"collectionId":56,"collectionName":57,"created":58,"created_by":15,"id":50,"image":59,"image_alt":15,"image_path":60,"label":418,"name":17,"priority":62,"publish_at":63,"scheduled_at":15,"status":64,"updated":65,"updated_by":15},[],{"en":17,"th":17},"nboyiqnzglp5uh7","ep117-iot-multi-device-websocket","2026-05-12 11:25:37.435Z",213,"spxc3if2zeefxzq","2025-12-15 01:58:53.801Z","Learn how to build a real-time IoT system using Go and WebSocket that supports thousands of devices. Covers authentication, bandwidth management, and scalable architecture for smart factories and IoT apps.","2026-05-08 06:52:02.658Z",{"alt":428,"cover_image_path":429,"created":430,"expand":431,"id":465,"published_at":466,"school_blog":462,"short_description":467,"title":428,"updated":468,"slug":463,"views":464},"EP.116 Real-time Voice\u002FVideo Communication with WebRTC + WebSocket Signaling in Go","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fxkmzgoufvuwfzdv\u002Fcover_image_ep_q518w3qnpf.etSignalinginGo.webp","2026-03-04 08:45:06.328Z",{"keywords":432,"locale":456,"school_blog":457},[433,434,435,440,445,446,451],{"collectionId":12,"collectionName":13,"created":25,"created_by":15,"id":26,"name":27,"updated":28,"updated_by":15},{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},{"collectionId":12,"collectionName":13,"created":436,"created_by":15,"id":437,"name":438,"updated":439,"updated_by":15},"2026-03-04 08:45:04.918Z","2oi71a8zf6vf68l","Video Call","2026-04-10 16:12:53.751Z",{"collectionId":12,"collectionName":13,"created":441,"created_by":15,"id":442,"name":443,"updated":444,"updated_by":15},"2026-03-04 08:45:05.158Z","836if8oqwpocqe3","Voice Chat","2026-04-10 16:12:53.881Z",{"collectionId":12,"collectionName":13,"created":20,"created_by":15,"id":21,"name":22,"updated":23,"updated_by":15},{"collectionId":12,"collectionName":13,"created":447,"created_by":15,"id":448,"name":449,"updated":450,"updated_by":15},"2026-03-04 08:45:05.632Z","cof4vbc2ts3emn3","WebSocket Signaling","2026-04-10 16:12:54.016Z",{"collectionId":12,"collectionName":13,"created":452,"created_by":15,"id":453,"name":454,"updated":455,"updated_by":15},"2026-03-04 08:45:05.836Z","37t2tvjs3vvty3x","WebRTC","2026-04-10 16:12:54.088Z",{"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":458,"id":462,"slug":463,"updated":15,"views":464},{"category":459},{"blogIds":460,"collectionId":56,"collectionName":57,"created":58,"created_by":15,"id":50,"image":59,"image_alt":15,"image_path":60,"label":461,"name":17,"priority":62,"publish_at":63,"scheduled_at":15,"status":64,"updated":65,"updated_by":15},[],{"en":17,"th":17},"9u83c9b4adi7p6e","ep116-realtime-voice-video-webrtc-websocket-go",261,"xkmzgoufvuwfzdv","2025-12-15 01:58:24.825Z","Learn how to build real-time video calls and voice chat using WebRTC and WebSocket Signaling in Go, including production-ready architecture, code examples, and best practices.","2026-05-08 06:52:03.240Z",{"alt":470,"cover_image_path":471,"created":472,"expand":473,"id":512,"published_at":513,"school_blog":508,"short_description":514,"title":515,"updated":516,"slug":509,"views":511},"What is Docker Compose? The Essential Tool for Modern Developers","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fswa7gjuq0ieuo77\u002Fcover_what_is_docker_compose_the_essential_tool_for_modern_developers_bqm005qchj.webp","2026-03-04 08:45:07.309Z",{"keywords":474,"locale":495,"school_blog":496},[475,480,485,490],{"collectionId":12,"collectionName":13,"created":476,"created_by":15,"id":477,"name":478,"updated":479,"updated_by":15},"2026-03-04 08:45:06.433Z","h61cls1b4isvvvx","Docker Compose","2026-04-10 16:12:54.185Z",{"collectionId":12,"collectionName":13,"created":481,"created_by":15,"id":482,"name":483,"updated":484,"updated_by":15},"2026-03-04 08:44:18.652Z","jr5zczy6qrxmd88","Docker","2026-04-10 16:12:43.264Z",{"collectionId":12,"collectionName":13,"created":486,"created_by":15,"id":487,"name":488,"updated":489,"updated_by":15},"2026-03-04 08:45:06.613Z","mel6m5brnjq2zmy","Multi-container","2026-04-10 16:12:54.338Z",{"collectionId":12,"collectionName":13,"created":491,"created_by":15,"id":492,"name":493,"updated":494,"updated_by":15},"2026-03-04 08:35:11.709Z","ga2eo1rr4uw66mu","DevOps","2026-04-10 16:12:39.734Z",{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":497,"collectionId":51,"collectionName":52,"created":15,"expand":498,"id":508,"slug":509,"updated":510,"views":511},"jwhmeg2uxwz0bkp",{"category":499},{"blogIds":500,"collectionId":56,"collectionName":57,"created":501,"created_by":15,"id":497,"image":502,"image_alt":15,"image_path":503,"label":504,"name":505,"priority":211,"publish_at":506,"scheduled_at":15,"status":64,"updated":507,"updated_by":15},[],"2026-03-04 08:31:40.635Z","1qt33a4n2u3_lr23qy62xh.png","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclcatblg987654321\u002Fjwhmeg2uxwz0bkp\u002F1qt33a4n2u3_lr23qy62xh.png",{"en":505,"th":505},"Tools & Resources","2025-01-31 09:55:27.001Z","2026-04-25 02:32:14.689Z","myt8jk36cr4iuqn","what-is-docker-compose-essential-tool-for-developers","2026-05-22 00:40:44.009Z",393,"swa7gjuq0ieuo77","2025-12-12 02:47:40.487Z","Master Docker Compose, the critical tool for managing multi-container applications. Learn how it simplifies development, ensures consistency, and is a must-have skill for all developers and DevOps engineers.","What is Docker Compose? The Essential Tool for Developers","2026-05-08 06:52:03.597Z",6,12,410,35]