[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"academy-blogs-en-28-12-superdev%252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252520academy-all-all-createdAt:desc-default":3},{"data":4,"page":506,"perPage":507,"totalItems":508,"totalPages":509},[5,96,141,182,218,250,269,310,351,394,432,477],{"alt":6,"cover_image_path":7,"created":8,"expand":9,"id":92,"published_at":93,"school_blog":88,"short_description":94,"title":6,"updated":95,"slug":89,"views":91},"EP.48 Adding Chat History Display System in WebSocket Chat","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fwajxjsfvnax9nq8\u002F68_11zon_0uqms7iirt.webp","2026-03-04 08:50:53.677Z",{"keywords":10,"locale":59,"school_blog":69},[11,19,24,29,34,39,44,49,54],{"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:50:52.953Z","76qprkevbgfdps8","aqepcyhdmag8vg4","Chat Storage","2026-06-07 06:48:41.758Z",{"collectionId":12,"collectionName":13,"created":20,"created_by":15,"id":21,"name":22,"updated":23,"updated_by":15},"2026-03-04 08:50:49.965Z","ga8fw2l8y3mxjxg","Persistent Chat","2026-06-07 06:48:41.194Z",{"collectionId":12,"collectionName":13,"created":25,"created_by":15,"id":26,"name":27,"updated":28,"updated_by":15},"2026-03-04 08:48:39.993Z","cvqrwxwzdsgoz1u","Message History","2026-06-07 06:47:56.716Z",{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},"2026-03-04 08:48:07.088Z","brfbypclggbbkcx","WebSocket API","2026-06-07 06:47:42.485Z",{"collectionId":12,"collectionName":13,"created":35,"created_by":15,"id":36,"name":37,"updated":38,"updated_by":15},"2026-03-04 08:47:05.949Z","caufix9o52uw4bh","Real-Time Chat","2026-06-07 06:47:19.595Z",{"collectionId":12,"collectionName":13,"created":40,"created_by":15,"id":41,"name":42,"updated":43,"updated_by":15},"2026-03-04 08:20:14.253Z","ah6lvy4x8qe08l5","Golang","2026-06-07 06:45:08.193Z",{"collectionId":12,"collectionName":13,"created":45,"created_by":15,"id":46,"name":47,"updated":48,"updated_by":15},"2026-03-04 08:20:11.547Z","ey3puyme01a9bsw","Go","2026-06-07 06:45:07.798Z",{"collectionId":12,"collectionName":13,"created":50,"created_by":15,"id":51,"name":52,"updated":53,"updated_by":15},"2026-03-04 08:34:00.920Z","ecac9y661or1xka","WebSocket","2026-06-07 06:45:55.734Z",{"collectionId":12,"collectionName":13,"created":55,"created_by":15,"id":56,"name":57,"updated":58,"updated_by":15},"2026-03-04 08:50:53.155Z","peza6kmj1144b0x","Chat History","2026-06-07 06:48:41.933Z",{"code":60,"collectionId":61,"collectionName":62,"created":63,"flag":64,"id":65,"is_default":66,"label":67,"updated":68},"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":70,"collectionId":71,"collectionName":72,"created":73,"expand":74,"id":88,"slug":89,"updated":90,"views":91},"wqxt7ag2gn7xcmk","pbc_2105096300","school_blogs","",{"category":75},{"blogIds":76,"collectionId":77,"collectionName":78,"created":79,"created_by":15,"id":70,"image":80,"image_alt":73,"image_path":81,"label":82,"name":83,"priority":84,"publish_at":85,"scheduled_at":73,"status":86,"updated":87,"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":83,"th":83},"Golang The Series",1,"2026-03-16 04:39:38.440Z","published","2026-06-07 06:45:03.856Z","7r6wz7gyf1n7sxd","chat-history-websocket-chat","2026-06-26 10:33:21.452Z",252,"wajxjsfvnax9nq8","2025-03-24 01:52:26.457Z","Learn how to implement a Chat History system in WebSocket Chat using a database and GraphQL API, enabling users to view old messages upon logging in.","2026-06-07 06:44:35.375Z",{"alt":97,"cover_image_path":98,"created":99,"expand":100,"id":137,"published_at":138,"school_blog":133,"short_description":139,"title":97,"updated":140,"slug":134,"views":136},"EP.47 Adding Do Not Disturb Mode Feature in WebSocket Chat","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fg622143q5fnty62\u002F66bkxp1qisy2_iykg2k7jwn.webp","2026-03-04 08:50:54.697Z",{"keywords":101,"locale":127,"school_blog":128},[102,107,112,117,118,119,120,121,122],{"collectionId":12,"collectionName":13,"created":103,"created_by":15,"id":104,"name":105,"updated":106,"updated_by":15},"2026-03-04 08:50:53.623Z","k6w6fyr98usbg2e","Chat Notifications","2026-06-07 06:48:42.041Z",{"collectionId":12,"collectionName":13,"created":108,"created_by":15,"id":109,"name":110,"updated":111,"updated_by":15},"2026-03-04 08:50:49.558Z","8lxakhujb04wz6u","Chat UX","2026-06-07 06:48:41.016Z",{"collectionId":12,"collectionName":13,"created":113,"created_by":15,"id":114,"name":115,"updated":116,"updated_by":15},"2026-03-04 08:50:53.943Z","fq0pc95e767vuu8","DND Mode","2026-06-07 06:48:42.145Z",{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},{"collectionId":12,"collectionName":13,"created":35,"created_by":15,"id":36,"name":37,"updated":38,"updated_by":15},{"collectionId":12,"collectionName":13,"created":40,"created_by":15,"id":41,"name":42,"updated":43,"updated_by":15},{"collectionId":12,"collectionName":13,"created":45,"created_by":15,"id":46,"name":47,"updated":48,"updated_by":15},{"collectionId":12,"collectionName":13,"created":50,"created_by":15,"id":51,"name":52,"updated":53,"updated_by":15},{"collectionId":12,"collectionName":13,"created":123,"created_by":15,"id":124,"name":125,"updated":126,"updated_by":15},"2026-03-04 08:50:54.150Z","z33apwtejt9t7zn","Do Not Disturb","2026-06-07 06:48:42.305Z",{"code":60,"collectionId":61,"collectionName":62,"created":63,"flag":64,"id":65,"is_default":66,"label":67,"updated":68},{"category":70,"collectionId":71,"collectionName":72,"created":73,"expand":129,"id":133,"slug":134,"updated":135,"views":136},{"category":130},{"blogIds":131,"collectionId":77,"collectionName":78,"created":79,"created_by":15,"id":70,"image":80,"image_alt":73,"image_path":81,"label":132,"name":83,"priority":84,"publish_at":85,"scheduled_at":73,"status":86,"updated":87,"updated_by":15},[],{"en":83,"th":83},"44cnqqbaf4uf842","do-not-disturb-websocket-chat","2026-05-21 16:19:56.812Z",234,"g622143q5fnty62","2025-03-24 01:52:14.620Z","Learn how to implement Do Not Disturb Mode (DND) in WebSocket Chat, allowing users to temporarily mute notifications and avoid receiving message alerts while this mode is active.","2026-06-07 06:44:35.530Z",{"alt":142,"cover_image_path":143,"created":144,"expand":145,"id":178,"published_at":179,"school_blog":174,"short_description":180,"title":142,"updated":181,"slug":175,"views":177},"EP.46 Adding Custom User Status Feature in WebSocket Chat","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fuy8771pk8qi7wjq\u002F644tp4gu5hve_8bc9gy9i39.webp","2026-03-04 08:50:55.696Z",{"keywords":146,"locale":168,"school_blog":169},[147,152,153,158,159,160,161,162,163],{"collectionId":12,"collectionName":13,"created":148,"created_by":15,"id":149,"name":150,"updated":151,"updated_by":15},"2026-03-04 08:50:54.677Z","jgu82elfpwczlgf","Chat Presence","2026-06-07 06:48:42.440Z",{"collectionId":12,"collectionName":13,"created":108,"created_by":15,"id":109,"name":110,"updated":111,"updated_by":15},{"collectionId":12,"collectionName":13,"created":154,"created_by":15,"id":155,"name":156,"updated":157,"updated_by":15},"2026-03-04 08:50:54.934Z","95t6zz8cpdp1zpf","Custom Status","2026-06-07 06:48:42.604Z",{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},{"collectionId":12,"collectionName":13,"created":35,"created_by":15,"id":36,"name":37,"updated":38,"updated_by":15},{"collectionId":12,"collectionName":13,"created":40,"created_by":15,"id":41,"name":42,"updated":43,"updated_by":15},{"collectionId":12,"collectionName":13,"created":45,"created_by":15,"id":46,"name":47,"updated":48,"updated_by":15},{"collectionId":12,"collectionName":13,"created":50,"created_by":15,"id":51,"name":52,"updated":53,"updated_by":15},{"collectionId":12,"collectionName":13,"created":164,"created_by":15,"id":165,"name":166,"updated":167,"updated_by":15},"2026-03-04 08:50:55.241Z","eftlak6vln9c1dc","User Status","2026-06-07 06:48:42.743Z",{"code":60,"collectionId":61,"collectionName":62,"created":63,"flag":64,"id":65,"is_default":66,"label":67,"updated":68},{"category":70,"collectionId":71,"collectionName":72,"created":73,"expand":170,"id":174,"slug":175,"updated":176,"views":177},{"category":171},{"blogIds":172,"collectionId":77,"collectionName":78,"created":79,"created_by":15,"id":70,"image":80,"image_alt":73,"image_path":81,"label":173,"name":83,"priority":84,"publish_at":85,"scheduled_at":73,"status":86,"updated":87,"updated_by":15},[],{"en":83,"th":83},"a1tuyqqcw8tjoap","custom-user-status-websocket-chat","2026-06-03 10:14:33.628Z",230,"uy8771pk8qi7wjq","2025-03-24 01:52:02.674Z","Learn how to implement a Custom User Status system in WebSocket Chat, allowing users to set their statuses such as \"Online,\" \"Busy,\" or \"Offline,\" and update their status in real-time.","2026-06-07 06:44:35.786Z",{"alt":183,"cover_image_path":184,"created":185,"expand":186,"id":214,"published_at":215,"school_blog":211,"short_description":216,"title":183,"updated":217,"slug":212,"views":136},"EP.45 Adding User Join Notification System in WebSocket Chat","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fh2ge7fk12heb1gb\u002F62ei07st4388_aixa9bmjs6.webp","2026-03-04 08:50:56.881Z",{"keywords":187,"locale":205,"school_blog":206},[188,193,194,195,196,197,198,199,200],{"collectionId":12,"collectionName":13,"created":189,"created_by":15,"id":190,"name":191,"updated":192,"updated_by":15},"2026-03-04 08:50:55.786Z","bn9tuj0554z99gg","Active Users","2026-06-07 06:48:42.956Z",{"collectionId":12,"collectionName":13,"created":103,"created_by":15,"id":104,"name":105,"updated":106,"updated_by":15},{"collectionId":12,"collectionName":13,"created":108,"created_by":15,"id":109,"name":110,"updated":111,"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":35,"created_by":15,"id":36,"name":37,"updated":38,"updated_by":15},{"collectionId":12,"collectionName":13,"created":40,"created_by":15,"id":41,"name":42,"updated":43,"updated_by":15},{"collectionId":12,"collectionName":13,"created":45,"created_by":15,"id":46,"name":47,"updated":48,"updated_by":15},{"collectionId":12,"collectionName":13,"created":50,"created_by":15,"id":51,"name":52,"updated":53,"updated_by":15},{"collectionId":12,"collectionName":13,"created":201,"created_by":15,"id":202,"name":203,"updated":204,"updated_by":15},"2026-03-04 08:50:56.096Z","pqk2xruvmm497x0","User Join Notification","2026-06-07 06:48:43.094Z",{"code":60,"collectionId":61,"collectionName":62,"created":63,"flag":64,"id":65,"is_default":66,"label":67,"updated":68},{"category":70,"collectionId":71,"collectionName":72,"created":73,"expand":207,"id":211,"slug":212,"updated":213,"views":136},{"category":208},{"blogIds":209,"collectionId":77,"collectionName":78,"created":79,"created_by":15,"id":70,"image":80,"image_alt":73,"image_path":81,"label":210,"name":83,"priority":84,"publish_at":85,"scheduled_at":73,"status":86,"updated":87,"updated_by":15},[],{"en":83,"th":83},"ifugg17ps3z64cx","user-join-notification-websocket-chat","2026-06-09 19:26:39.641Z","h2ge7fk12heb1gb","2025-03-24 01:51:51.004Z","Learn how to implement a User Join Notification system in WebSocket Chat that notifies all users in real-time when a new user joins the chat.","2026-06-07 06:44:36.133Z",{"alt":219,"cover_image_path":220,"created":221,"expand":222,"id":246,"published_at":247,"school_blog":243,"short_description":248,"title":219,"updated":249,"slug":244,"views":245},"EP.44 Adding Active Users Feature in WebSocket Chat","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fqf7vlwj163t9xut\u002F60_11zon_coh2cet383.webp","2026-03-04 08:50:58.326Z",{"keywords":223,"locale":237,"school_blog":238},[224,229,230,231,232,233,234,235,236],{"collectionId":12,"collectionName":13,"created":225,"created_by":15,"id":226,"name":227,"updated":228,"updated_by":15},"2026-03-04 08:50:56.957Z","8fdbu2zxdum36wl","Online Users","2026-06-07 06:48:43.220Z",{"collectionId":12,"collectionName":13,"created":50,"created_by":15,"id":51,"name":52,"updated":53,"updated_by":15},{"collectionId":12,"collectionName":13,"created":45,"created_by":15,"id":46,"name":47,"updated":48,"updated_by":15},{"collectionId":12,"collectionName":13,"created":40,"created_by":15,"id":41,"name":42,"updated":43,"updated_by":15},{"collectionId":12,"collectionName":13,"created":35,"created_by":15,"id":36,"name":37,"updated":38,"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":189,"created_by":15,"id":190,"name":191,"updated":192,"updated_by":15},{"collectionId":12,"collectionName":13,"created":148,"created_by":15,"id":149,"name":150,"updated":151,"updated_by":15},{"collectionId":12,"collectionName":13,"created":108,"created_by":15,"id":109,"name":110,"updated":111,"updated_by":15},{"code":60,"collectionId":61,"collectionName":62,"created":63,"flag":64,"id":65,"is_default":66,"label":67,"updated":68},{"category":70,"collectionId":71,"collectionName":72,"created":73,"expand":239,"id":243,"slug":244,"updated":73,"views":245},{"category":240},{"blogIds":241,"collectionId":77,"collectionName":78,"created":79,"created_by":15,"id":70,"image":80,"image_alt":73,"image_path":81,"label":242,"name":83,"priority":84,"publish_at":85,"scheduled_at":73,"status":86,"updated":87,"updated_by":15},[],{"en":83,"th":83},"o80z3drd0e40piv","online-users-websocket-chat",242,"qf7vlwj163t9xut","2025-03-24 01:51:39.476Z","Learn how to implement the Active Users feature in WebSocket Chat to allow users to see the number of users currently online in real-time.","2026-06-07 06:44:36.333Z",{"alt":251,"cover_image_path":252,"created":253,"expand":254,"id":265,"published_at":266,"school_blog":261,"short_description":267,"title":251,"updated":268,"slug":262,"views":264},"EP.43 Adding Pinned Messages Feature in WebSocket Chat","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002F5x3meflcxal39yb\u002F58_11zon_zxo4echh9i.webp","2026-03-04 08:50:58.855Z",{"locale":255,"school_blog":256},{"code":60,"collectionId":61,"collectionName":62,"created":63,"flag":64,"id":65,"is_default":66,"label":67,"updated":68},{"category":70,"collectionId":71,"collectionName":72,"created":73,"expand":257,"id":261,"slug":262,"updated":263,"views":264},{"category":258},{"blogIds":259,"collectionId":77,"collectionName":78,"created":79,"created_by":15,"id":70,"image":80,"image_alt":73,"image_path":81,"label":260,"name":83,"priority":84,"publish_at":85,"scheduled_at":73,"status":86,"updated":87,"updated_by":15},[],{"en":83,"th":83},"3ntbs0bnwdc7lq4","pinned-messages-websocket-chat","2026-05-28 09:55:58.155Z",257,"5x3meflcxal39yb","2025-03-24 01:51:27.917Z","Learn how to implement the Pinned Messages feature in WebSocket Chat, allowing users to save important messages for later reference, with support for real-time notifications when messages are pinned.","2026-06-07 06:44:36.598Z",{"alt":270,"cover_image_path":271,"created":272,"expand":273,"id":306,"published_at":307,"school_blog":302,"short_description":308,"title":270,"updated":309,"slug":303,"views":305},"EP.42 Adding Read Receipts Feature in WebSocket Chat","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002F47tjz8uqxpachz3\u002F56_11zon_r53zmj2rwu.webp","2026-03-04 08:51:00.838Z",{"keywords":274,"locale":296,"school_blog":297},[275,276,281,286,287,288,289,290,291],{"collectionId":12,"collectionName":13,"created":108,"created_by":15,"id":109,"name":110,"updated":111,"updated_by":15},{"collectionId":12,"collectionName":13,"created":277,"created_by":15,"id":278,"name":279,"updated":280,"updated_by":15},"2026-03-04 08:50:59.960Z","up5egj6sjn2i72f","Chat Features","2026-06-07 06:48:43.652Z",{"collectionId":12,"collectionName":13,"created":282,"created_by":15,"id":283,"name":284,"updated":285,"updated_by":15},"2026-03-04 08:51:00.184Z","hnwyjmmf41r934k","Message Read Status","2026-06-07 06:48:43.788Z",{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},{"collectionId":12,"collectionName":13,"created":35,"created_by":15,"id":36,"name":37,"updated":38,"updated_by":15},{"collectionId":12,"collectionName":13,"created":40,"created_by":15,"id":41,"name":42,"updated":43,"updated_by":15},{"collectionId":12,"collectionName":13,"created":45,"created_by":15,"id":46,"name":47,"updated":48,"updated_by":15},{"collectionId":12,"collectionName":13,"created":50,"created_by":15,"id":51,"name":52,"updated":53,"updated_by":15},{"collectionId":12,"collectionName":13,"created":292,"created_by":15,"id":293,"name":294,"updated":295,"updated_by":15},"2026-03-04 08:51:00.522Z","yqwzufwzpmf5p93","Read Receipts","2026-06-07 06:48:43.862Z",{"code":60,"collectionId":61,"collectionName":62,"created":63,"flag":64,"id":65,"is_default":66,"label":67,"updated":68},{"category":70,"collectionId":71,"collectionName":72,"created":73,"expand":298,"id":302,"slug":303,"updated":304,"views":305},{"category":299},{"blogIds":300,"collectionId":77,"collectionName":78,"created":79,"created_by":15,"id":70,"image":80,"image_alt":73,"image_path":81,"label":301,"name":83,"priority":84,"publish_at":85,"scheduled_at":73,"status":86,"updated":87,"updated_by":15},[],{"en":83,"th":83},"q37y3cwja1kppep","read-receipts-websocket-chat","2026-05-13 06:56:17.808Z",233,"47tjz8uqxpachz3","2025-03-24 01:51:13.506Z","Learn how to implement Read Receipts in WebSocket Chat to allow users to know whether their sent messages have been read, using WebSocket and a database.","2026-06-07 06:44:36.942Z",{"alt":311,"cover_image_path":312,"created":313,"expand":314,"id":347,"published_at":348,"school_blog":343,"short_description":349,"title":311,"updated":350,"slug":344,"views":346},"EP.41 Adding Typing Indicator Feature in WebSocket Chat","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fcfryhb9txucvpj4\u002F54_11zon_yx33pdoc9a.webp","2026-03-04 08:51:02.614Z",{"keywords":315,"locale":337,"school_blog":338},[316,317,322,323,328,329,330,331,332],{"collectionId":12,"collectionName":13,"created":108,"created_by":15,"id":109,"name":110,"updated":111,"updated_by":15},{"collectionId":12,"collectionName":13,"created":318,"created_by":15,"id":319,"name":320,"updated":321,"updated_by":15},"2026-03-04 08:51:00.968Z","qivmit8ukkhb143","Typing Status","2026-06-07 06:48:44.083Z",{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},{"collectionId":12,"collectionName":13,"created":324,"created_by":15,"id":325,"name":326,"updated":327,"updated_by":15},"2026-03-04 08:46:14.782Z","v0mhensk18fofru","WebSocket Chat","2026-06-07 06:47:04.148Z",{"collectionId":12,"collectionName":13,"created":35,"created_by":15,"id":36,"name":37,"updated":38,"updated_by":15},{"collectionId":12,"collectionName":13,"created":40,"created_by":15,"id":41,"name":42,"updated":43,"updated_by":15},{"collectionId":12,"collectionName":13,"created":45,"created_by":15,"id":46,"name":47,"updated":48,"updated_by":15},{"collectionId":12,"collectionName":13,"created":50,"created_by":15,"id":51,"name":52,"updated":53,"updated_by":15},{"collectionId":12,"collectionName":13,"created":333,"created_by":15,"id":334,"name":335,"updated":336,"updated_by":15},"2026-03-04 08:51:01.365Z","h5pcr9najjxfqwh","Typing Indicator","2026-06-07 06:48:44.149Z",{"code":60,"collectionId":61,"collectionName":62,"created":63,"flag":64,"id":65,"is_default":66,"label":67,"updated":68},{"category":70,"collectionId":71,"collectionName":72,"created":73,"expand":339,"id":343,"slug":344,"updated":345,"views":346},{"category":340},{"blogIds":341,"collectionId":77,"collectionName":78,"created":79,"created_by":15,"id":70,"image":80,"image_alt":73,"image_path":81,"label":342,"name":83,"priority":84,"publish_at":85,"scheduled_at":73,"status":86,"updated":87,"updated_by":15},[],{"en":83,"th":83},"qa8pf1ntbtf5iya","typing-indicator-websocket-chat","2026-06-30 14:24:57.834Z",316,"cfryhb9txucvpj4","2025-03-24 01:51:00.790Z","Learn how to implement a Typing Indicator in WebSocket Chat to enable users to see when their conversation partners are typing, supporting real-time notifications through WebSocket.","2026-06-07 06:44:37.444Z",{"alt":352,"cover_image_path":353,"created":354,"expand":355,"id":390,"published_at":391,"school_blog":386,"short_description":392,"title":352,"updated":393,"slug":387,"views":389},"7 Techniques for Clean Code to Achieve Quality Code","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002F4s8mga2cglraqve\u002F2jf2ix23so2_2xfi1yyi66.webp","2026-03-04 08:50:48.983Z",{"keywords":356,"locale":372,"school_blog":373},[357,362,367],{"collectionId":12,"collectionName":13,"created":358,"created_by":15,"id":359,"name":360,"updated":361,"updated_by":15},"2026-03-04 08:31:26.855Z","gm7zvudx341kzsm","Programmer","2026-06-07 06:45:26.430Z",{"collectionId":12,"collectionName":13,"created":363,"created_by":15,"id":364,"name":365,"updated":366,"updated_by":15},"2026-03-04 08:34:42.935Z","x7hx1nczvszg8pr","coding techniques","2026-06-07 06:46:14.668Z",{"collectionId":12,"collectionName":13,"created":368,"created_by":15,"id":369,"name":370,"updated":371,"updated_by":15},"2026-03-04 08:47:48.682Z","tjtve6zpa4tn6cr","Clean Code","2026-06-07 06:47:34.469Z",{"code":60,"collectionId":61,"collectionName":62,"created":63,"flag":64,"id":65,"is_default":66,"label":67,"updated":68},{"category":374,"collectionId":71,"collectionName":72,"created":73,"expand":375,"id":386,"slug":387,"updated":388,"views":389},"qn0d7xwatkleou1",{"category":376},{"blogIds":377,"collectionId":77,"collectionName":78,"created":378,"created_by":15,"id":374,"image":379,"image_alt":73,"image_path":380,"label":381,"name":382,"priority":383,"publish_at":384,"scheduled_at":73,"status":86,"updated":385,"updated_by":15},[],"2026-03-04 08:31:21.896Z","4jn5ccty4x9_2894s1fj97.png","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclcatblg987654321\u002Fqn0d7xwatkleou1\u002F4jn5ccty4x9_2894s1fj97.png",{"en":382,"th":382},"How to",0,"2025-02-04 08:40:59.666Z","2026-06-07 06:45:02.619Z","0qovmiyknwuvkzi","7-clean-code-techniques","2026-07-01 15:44:42.479Z",746,"4s8mga2cglraqve","2025-03-21 09:54:24.738Z","Discover 7 techniques to enhance the quality and readability of your code.","2026-06-07 06:44:34.447Z",{"alt":395,"cover_image_path":396,"created":397,"expand":398,"id":428,"published_at":429,"school_blog":424,"short_description":430,"title":395,"updated":431,"slug":425,"views":427},"5 Easy Projects for Beginners to Learn Coding Fun and Practical","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fiuix8vzddcadlwe\u002F2_1_q7befiz571.webp","2026-03-04 08:50:48.040Z",{"keywords":399,"locale":411,"school_blog":412},[400,401,406],{"collectionId":12,"collectionName":13,"created":358,"created_by":15,"id":359,"name":360,"updated":361,"updated_by":15},{"collectionId":12,"collectionName":13,"created":402,"created_by":15,"id":403,"name":404,"updated":405,"updated_by":15},"2026-03-04 08:31:27.403Z","v9recrqz2zy57go","coding","2026-06-07 06:45:26.571Z",{"collectionId":12,"collectionName":13,"created":407,"created_by":15,"id":408,"name":409,"updated":410,"updated_by":15},"2026-03-04 08:50:46.741Z","vyt1ciym2nxurv3","projects","2026-06-07 06:48:40.698Z",{"code":60,"collectionId":61,"collectionName":62,"created":63,"flag":64,"id":65,"is_default":66,"label":67,"updated":68},{"category":413,"collectionId":71,"collectionName":72,"created":73,"expand":414,"id":424,"slug":425,"updated":426,"views":427},"spm4l1k5bgmhmmt",{"category":415},{"blogIds":416,"collectionId":77,"collectionName":78,"created":417,"created_by":15,"id":413,"image":418,"image_alt":73,"image_path":419,"label":420,"name":421,"priority":383,"publish_at":422,"scheduled_at":73,"status":86,"updated":423,"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":421,"th":421},"Knowledge","2026-03-18 02:25:41.222Z","2026-06-07 06:45:02.533Z","hnwyvti5frqnobk","5-easy-projects-for-beginners","2026-06-17 14:46:06.621Z",272,"iuix8vzddcadlwe","2025-03-21 09:53:54.933Z","Discover 5 beginner-friendly projects to practice coding in a fun and practical way.","2026-06-07 06:44:34.067Z",{"alt":433,"cover_image_path":434,"created":435,"expand":436,"id":473,"published_at":474,"school_blog":469,"short_description":475,"title":433,"updated":476,"slug":470,"views":472},"NVIDIA Uses AI to Power Games, Bringing Them to Life","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fdg0pxl6v48sszwc\u002F2_2_scb4x1uiby.webp","2026-03-04 08:50:45.766Z",{"keywords":437,"locale":463,"school_blog":464},[438,443,448,453,458],{"collectionId":12,"collectionName":13,"created":439,"created_by":15,"id":440,"name":441,"updated":442,"updated_by":15},"2026-03-04 08:31:29.142Z","hrqdq7kjl5lzjmi","AI","2026-06-07 06:45:27.147Z",{"collectionId":12,"collectionName":13,"created":444,"created_by":15,"id":445,"name":446,"updated":447,"updated_by":15},"2026-03-04 08:49:23.441Z","g2mgp0rgbjfd1y4","Game Development","2026-06-07 06:48:12.584Z",{"collectionId":12,"collectionName":13,"created":449,"created_by":15,"id":450,"name":451,"updated":452,"updated_by":15},"2026-03-04 08:31:47.257Z","ukna5iqph6rm03r","Game Programmer","2026-06-07 06:45:31.673Z",{"collectionId":12,"collectionName":13,"created":454,"created_by":15,"id":455,"name":456,"updated":457,"updated_by":15},"2026-03-04 08:31:39.940Z","2p3i7x7rmzb6y7o","game development","2026-06-07 06:45:30.154Z",{"collectionId":12,"collectionName":13,"created":459,"created_by":15,"id":460,"name":461,"updated":462,"updated_by":15},"2026-03-04 08:31:42.273Z","8lo2lfkb7dodl9n","game developer career","2026-06-07 06:45:30.347Z",{"code":60,"collectionId":61,"collectionName":62,"created":63,"flag":64,"id":65,"is_default":66,"label":67,"updated":68},{"category":413,"collectionId":71,"collectionName":72,"created":73,"expand":465,"id":469,"slug":470,"updated":471,"views":472},{"category":466},{"blogIds":467,"collectionId":77,"collectionName":78,"created":417,"created_by":15,"id":413,"image":418,"image_alt":73,"image_path":419,"label":468,"name":421,"priority":383,"publish_at":422,"scheduled_at":73,"status":86,"updated":423,"updated_by":15},[],{"en":421,"th":421},"rt9pr4y13q09svg","nvidia-ai-games","2026-06-18 04:06:17.662Z",206,"dg0pxl6v48sszwc","2025-03-21 07:08:57.065Z","Discover how NVIDIA is using AI to power game development, transforming the experiences of programmers and players around the world.","2026-06-07 06:44:33.479Z",{"alt":478,"cover_image_path":479,"created":480,"expand":481,"id":502,"published_at":503,"school_blog":499,"short_description":504,"title":478,"updated":505,"slug":500,"views":501},"6 Mobile App Development Tips in 2025","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002F4vylzyyd5uepc90\u002F29e1rw7cony_xs3yo3dzxa.webp","2026-03-04 08:50:46.570Z",{"keywords":482,"locale":493,"school_blog":494},[483,488],{"collectionId":12,"collectionName":13,"created":484,"created_by":15,"id":485,"name":486,"updated":487,"updated_by":15},"2026-03-04 08:33:53.933Z","yyq22valznn0j0u","application development","2026-06-07 06:45:52.865Z",{"collectionId":12,"collectionName":13,"created":489,"created_by":15,"id":490,"name":491,"updated":492,"updated_by":15},"2026-03-04 08:32:50.964Z","85k91rzorafwezj","app development","2026-06-07 06:45:51.076Z",{"code":60,"collectionId":61,"collectionName":62,"created":63,"flag":64,"id":65,"is_default":66,"label":67,"updated":68},{"category":413,"collectionId":71,"collectionName":72,"created":73,"expand":495,"id":499,"slug":500,"updated":73,"views":501},{"category":496},{"blogIds":497,"collectionId":77,"collectionName":78,"created":417,"created_by":15,"id":413,"image":418,"image_alt":73,"image_path":419,"label":498,"name":421,"priority":383,"publish_at":422,"scheduled_at":73,"status":86,"updated":423,"updated_by":15},[],{"en":421,"th":421},"frhoosn6o3sawui","application-development-tips",208,"4vylzyyd5uepc90","2025-03-20 04:16:04.338Z","Learn the key tips for developing mobile apps that meet the trends of 2025","2026-06-07 06:44:33.665Z",28,12,436,37]