ความลับที่ซ่อนอยู่ในเช็กบ็อกซ์หนึ่งล้านช่อง
(eieio.games)- One Million Checkboxes (OMCB) เป็นเว็บไซต์ที่ใครก็ได้สามารถเปลี่ยนเช็กบ็อกซ์ 1 ล้านช่องชุดเดียวกันแบบเรียลไทม์ และระหว่างการเปิดให้ใช้งานก็มีการค้นพบรูปแบบ URL ที่ซ่อนอยู่ในฐานข้อมูล จนเผยให้เห็นความร่วมมือที่ไม่คาดคิด
- หลังเปิดตัวเมื่อวันที่ 26 มิถุนายน 2024 ตลอด 2 สัปดาห์มีผู้ใช้ 500,000 คน สลับสถานะเช็กบ็อกซ์มากกว่า 650 ล้านครั้ง ทำให้การทดลองง่าย ๆ กลายเป็นการละเล่นอินเทอร์เน็ตขนาดใหญ่
- เนื่องจากโครงสร้างที่เก็บสถานะเช็กบ็อกซ์ด้วย 1 บิต ทำให้เช็กบ็อกซ์ 8 ช่องเท่ากับ 1 ไบต์ และผู้ใช้บางคนก็อาศัยจุดนี้ซ่อนอักขระ ASCII และ URL เป็นข้อความไบนารี
- URL ที่ซ่อนอยู่เชื่อมไปยังเซิร์ฟเวอร์ Discord ซึ่งผู้เข้าร่วมได้เรนเดอร์เช็กบ็อกซ์ 1 ล้านช่องเป็นภาพ 1000×1000 แล้วทดลองสร้าง QR code, ข้อความ base64, แอนิเมชัน และการแสดงสี
- บอตอาจทำลายประสบการณ์ของผู้ใช้ทั่วไปได้ แต่กระบวนการที่ผู้เข้าร่วมหลบเลี่ยงข้อจำกัด สำรวจระบบ และทิ้งร่องรอยไว้ ก็ยังคงเป็นตัวอย่างของความร่วมมือเชิงสร้างสรรค์บนอินเทอร์เน็ต
วิธีการทำงานของ One Million Checkboxes
- One Million Checkboxes (OMCB) เป็นเว็บไซต์ที่เปิดตัวเมื่อวันที่ 26 มิถุนายน 2024 โดยมีเช็กบ็อกซ์แบบ global จำนวน 1 ล้านช่อง
- เมื่อผู้ใช้เปิดหรือปิดเช็กบ็อกซ์ สถานะเดียวกันนั้นจะสะท้อนไปยังผู้ใช้ทุกคนที่กำลังเข้าเว็บไซต์อยู่ทันที
- ผู้ดูแลคาดว่าจะมีคนไม่กี่ร้อยคนกดกันคนละไม่กี่พันครั้ง แต่ความจริงคือใน 2 สัปดาห์มีผู้ใช้ 500,000 คนสลับสถานะเช็กบ็อกซ์มากกว่า 650 ล้านครั้ง
- เว็บไซต์แพร่กระจายกว้างจนไปปรากฏใน New York Times, Washington Post, Know Your Meme และ Wikipedia
- เทคโนโลยีการสเกลของ OMCB ถูกอธิบายในบทความแยกต่างหาก ส่วนเรื่องนี้โฟกัสไปที่ข้อความลับที่ถูกค้นพบระหว่างการเปิดใช้งาน
ข้อจำกัดที่ทำให้การวาดภาพเป็นเรื่องยาก
- OMCB ถูกออกแบบให้ วาดภาพอย่างอิสระ ได้ยาก เพราะบนอินเทอร์เน็ตสาธารณะคาดเดาได้ยากว่าผู้ใช้จะวาดอะไร
- จำนวนเช็กบ็อกซ์ที่แสดงในแต่ละบรรทัดจะเปลี่ยนตามความกว้างหน้าต่างเบราว์เซอร์
- ต่อให้สร้างคำอย่าง “EXAMPLE” ได้ในความกว้างหนึ่ง แต่ถ้าความกว้างเบราว์เซอร์เปลี่ยน การตัดบรรทัดก็จะเปลี่ยนและข้อความจะหายไป
- รอยขีดเขียนที่วาดบนโทรศัพท์จะไม่เห็นเป็นรูปทรงเดียวกันบนโน้ตบุ๊ก และจะมองเห็นตรงกันเฉพาะผู้ใช้ที่มีความกว้างการแสดงผลเท่ากันเท่านั้น
- ข้อจำกัดนี้ทำงานอย่าง แนบเนียน มากจนผู้ใช้จำนวนมากไม่ทันสังเกตว่าข้อความที่ตัวเองเขียนไว้อาจมองไม่เห็นสำหรับคนอื่น
- มีผู้ใช้จำนวนมากขอให้ “แก้” เพื่อให้วาดภาพได้ แต่พฤติกรรมแบบนี้เป็นการออกแบบโดยตั้งใจ
วิธีที่เช็กบ็อกซ์ถูกเก็บเป็นข้อมูล
- OMCB แทนสถานะของเช็กบ็อกซ์ 1 ล้านช่องด้วย 1 บิต ต่อช่อง เพื่อให้เก็บและส่งข้อมูลได้อย่างมีประสิทธิภาพ
- ช่องที่ถูกเช็กจะเก็บเป็น
1ส่วนช่องที่ไม่ถูกเช็กจะเก็บเป็น0 - 1 ล้านบิตเท่ากับ 125,000 ไบต์ หรือ 125KB
- ช่องที่ถูกเช็กจะเก็บเป็น
- ข้อมูลถูกเก็บไว้ใน Redis และเมื่อส่งไปยังไคลเอนต์จะใช้ base64 encoding
- เนื่องจากเช็กบ็อกซ์ 8 ช่องสามารถรวมกันเป็น 8 บิต หรือ 1 ไบต์ได้ จึงกลายเป็นพื้นฐานสำหรับการสร้างข้อความที่ซ่อนอยู่
URL น่าสงสัยที่ถูกพบในฐานข้อมูล
- ไม่กี่วันหลัง OMCB เปิดตัว แบ็กเอนด์ถูกเขียนใหม่ด้วย Go เพื่อรองรับโหลด และมีการ dump raw bytes ที่เก็บใน Redis ออกมาในรูปแบบ ASCII
- ใน dump นั้นปรากฏ URL ที่เชื่อมไปยัง
catgirls.winซึ่งตอนแรกถูกมองว่าฐานข้อมูลอาจถูกแฮ็ก- มีการตรวจสอบ access logs และโค้ด แต่ไม่พบร่องรอยการบุกรุก
- เพราะคิดว่าในฐานข้อมูลควรมีแค่ 0 กับ 1 จึงดูเหมือนมีสตริงปะปนอยู่
- เมื่อตรวจสอบตำแหน่งเช็กบ็อกซ์ที่ตรงกับ URL สาเหตุที่แท้จริงก็เริ่มชัดเจน
- อักขระ
hหนึ่งตัวมีขนาด 1 ไบต์ และ 1 ไบต์มี 8 บิต ซึ่งใน OMCB ก็เท่ากับเช็กบ็อกซ์ 8 ช่อง - มีรูปแบบซ้ำเป็นชุดละ 8 ช่องที่สอดคล้องกับ URL และเมื่อเปลี่ยนเช็กบ็อกซ์ไปหนึ่งช่อง รูปแบบเดิมก็จะกลับมาอีกแทบจะทันที
- อักขระ
- ฐานข้อมูลไม่ได้ถูกแฮ็ก แต่มีใครบางคนกำลังใช้การสลับเช็กบ็อกซ์เพื่อเขียน ข้อความไบนารี
ข้อความไบนารีที่อ่านออกมาเป็น ASCII
- เมื่อ Redis แสดงข้อมูลเป็น ASCII มันจะอ่าน raw data ทีละ 1 ไบต์ หรือ 8 บิต
- แต่ละไบต์จะถูกแปลงเป็นตัวเลขตั้งแต่ 0 ถึง 255
- ถ้าค่าอยู่ในช่วงอักขระ ASCII ที่พิมพ์ได้คือ 32~127 ก็จะแสดงเป็นอักขระนั้น
- ถ้าไม่ใช่ก็จะแสดงเป็นเลขฐานสิบหกอย่าง
\x00
- ผู้ใช้ที่สร้างข้อความนี้เปิดและปิดเช็กบ็อกซ์เพื่อเปลี่ยนบิต แล้วทำให้บิตเหล่านั้นประกอบกันเป็นตัวเลข ตัวอักษร และสุดท้ายเป็น URL
- รูปแบบนี้ยังคงอยู่ได้แม้อยู่ในสภาพแวดล้อมที่มีผู้ใช้อีกหลายพันคนกำลังเล่นเว็บไซต์พร้อมกัน
ทางลับที่พาไปสู่ Discord
- URL ที่ซ่อนอยู่
https://catgirls.win/omcbเชื่อมไปยังเซิร์ฟเวอร์ Discord ชื่อ Checking Boxes- ตัว Discord เดิมถูกปิดในภายหลัง และ URL ก็เปลี่ยนไปชี้ที่อื่น
- ผู้เข้าร่วมใน Discord ดาวน์โหลดข้อมูลเช็กบ็อกซ์ทั้งหมดของ OMCB แล้วเรนเดอร์เป็นภาพกริด 1000×1000
- ช่องที่ไม่ถูกเช็กแสดงเป็นสีขาว ส่วนช่องที่ถูกเช็กแสดงเป็นสีดำ
- ในภาพนี้มีข้อความอยู่หลายรูปแบบ
- noise แบบซ้ำ ๆ ด้านล่างคือข้อความไบนารีที่ถูกค้นพบ
- เหนือขึ้นไปคือข้อความเดียวกันในเวอร์ชัน base64
- ทางซ้ายมี QR code ที่ใส่การแก้ไขข้อผิดพลาดไว้
- ทั้งหมดล้วนเป็นข้อความที่ชี้ไปยัง Discord
- ผู้เข้าร่วมมองว่าคนที่น่าจะสร้างบอตอาจเห็นได้อย่างใดอย่างหนึ่งระหว่างข้อมูล base64, ข้อมูลไบนารี หรือภาพ 1000×1000 จึงใช้หลายเส้นทางพร้อมกัน
- ขนาดของ Discord ตอนที่เข้าร่วมยังมีไม่ถึง 20 คน และเพิ่มเป็นมากกว่า 60 คนเมื่อเว็บไซต์ปิดตัวลง
บอต ภาพวาด และการทดลองแอนิเมชัน
- ผู้เข้าร่วมใน Discord ค่อย ๆ สร้างระบบวาดภาพที่ดีขึ้น และ reverse engineer rate limit ของ OMCB จนทำภาพที่ซับซ้อนขึ้นเรื่อย ๆ
- ผู้ดูแลเคยเสนอว่าจะบอกข้อมูล rate limit ให้ แต่ผู้นำของ Discord เลือกที่จะหาคำตอบเองมากกว่า
- เมื่อเวลาผ่านไป ก็เริ่มมีการทดลองทั้งแอนิเมชันและโปรโตคอลการแสดงสี
- ตัวอย่างหนึ่งคือการมองเซลล์ที่อยู่ติดกันเป็นช่องสีแดง เขียว น้ำเงิน เพื่อวาดสีลงบนกริดที่เล็กลง
- หนึ่งวันก่อนเว็บไซต์ปิด ผู้ดูแลได้ลบ rate limit ทั้งหมดออกหลังจากเตือนล่วงหน้า เพื่อดูว่าระบบจะรับทราฟฟิกได้แค่ไหน และผู้เข้าร่วมจะสร้างอะไรได้บ้าง
- ช่วงนั้นมีแอนิเมชันหลายชิ้นถูกสร้างขึ้น และหนึ่งในตัวอย่างคือแอนิเมชัน Rickroll
ความสองด้านของบอต
- มีเสียงไม่พอใจเรื่องบอตใน OMCB มากพอสมควร และมีข้อความวิจารณ์บอตส่งเข้ามาหลายร้อยครั้ง
- บอตที่ผู้ใช้ทั่วไปคุ้นเคยมักเป็นสิ่งที่ดูเห็นแก่ตัวและไม่ยุติธรรม เช่น บอตซื้อบัตรไปขายต่อ หรือบอตจองร้านอาหาร
- ใน OMCB เองก็มีบอตที่อาจมองได้ว่าเป็นพฤติกรรมต่อต้านสังคม
- ผู้ใช้บางคนสร้าง JavaScript บอตขนาดเล็กที่คอยยกเลิกเช็กทุกช่องที่เป็นไปได้ แล้วประกาศเรื่องนี้ออกมา
- มีผู้ใช้ที่บอกว่าพฤติกรรมแบบนี้ทำลายประสบการณ์ของเว็บไซต์
- ผู้เข้าร่วมใน Discord ตั้งกติกาบางอย่างเกี่ยวกับตำแหน่งที่ควรใช้บอต และผู้ดูแลก็ขอให้ลดความรุนแรงลงบ้างเป็นบางครั้ง
- การใช้บอตอาจทำให้ประสบการณ์ของผู้ใช้ทั่วไปแย่ลง แต่ในอีกด้านหนึ่งมันก็เป็นตัวอย่างของการสำรวจระบบภายใต้ข้อจำกัดและสร้างผลงานเชิงสร้างสรรค์ไปพร้อมกัน
ประสบการณ์ที่หลงเหลือเป็นการหยอกเล่นอย่างสร้างสรรค์
- ผู้ดูแลเล่าว่าสมัยมัธยมเคยสร้างกฎเมลแบบ recursive เพื่อแกล้งเพื่อนด้วยการส่งข้อความหลายล้านฉบับ และเคยทำให้เซิร์ฟเวอร์อีเมลของโรงเรียนล่มโดยไม่ได้ตั้งใจหลายครั้ง
- ตอนนั้นผู้ใหญ่รอบตัวไม่ได้โกรธมากนัก แค่บอกให้หยุด และยังทำเสื้อยืดให้ด้วย
- ข้อความลับ เครื่องมือ และภาพวาดที่ผู้เข้าร่วมใน Discord สร้างขึ้นจาก OMCB กลายเป็นผลลัพธ์เชิงสร้างสรรค์ที่เหนือความคาดหมาย
- ผู้ดูแลมองว่าการได้เห็นและให้กำลังใจสิ่งเหล่านี้แบบเรียลไทม์เป็นประสบการณ์ที่มีความหมาย และรู้สึกภูมิใจทั้งที่ Discord มอง OMCB ว่าเป็นของเล่นที่น่าลอง และกับสิ่งที่พวกเขาสร้างขึ้นมา
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ผู้เขียนเองครับ :)
ในบรรดาเรื่องราวที่ผมเจอระหว่างดูแลไซต์ นี่เป็นเรื่องที่ผมชอบที่สุด และอาจเป็นเรื่องที่ดีที่สุดที่ผมเคยมีส่วนร่วมด้วยก็ได้ ปกติผมไม่ใช่คนร้องไห้ง่าย แต่ตลอด 2 เดือนที่ผ่านมา เวลานึกถึงเรื่องนี้และพยายามเขียนออกมา ผมร้องไห้ไปหลายครั้ง แน่นอนว่าทั้งกระบวนการค้นพบเอง และ กระบวนการที่เปลี่ยนจากความหวาดกลัวเป็นความตื่นเต้น ก็แทบจะบ้าบออยู่เหมือนกัน
สิ่งที่ผมชอบเป็นพิเศษคือความเชื่อหลักอย่างหนึ่งที่ผมมีตอนสร้างของแบบนี้ได้รับการพิสูจน์แล้วว่าเป็นจริง นั่นคือเราจำเป็นต้องมีข้อจำกัดไว้สำหรับคนไม่ดีส่วนน้อย แต่โดยรวมแล้ว คนที่มาเล่นบนอินเทอร์เน็ตเป็นคนดีและมีความคิดสร้างสรรค์มาก และจะเอาข้อจำกัดเหล่านั้นมาเป็นของเล่นเสียเอง
บทความนี้เป็นหนึ่งในตัวอย่างที่ดีที่สุดที่แสดงให้เห็นเรื่องนั้น และผมชอบมากที่คุณสร้างไซต์ขึ้นมา เฝ้าดูว่าผู้คนใช้มันอย่างไร แล้วแบ่งปันประสบการณ์นั้น อ่านแล้วมีความสุขมาก และตั้งใจจะแชร์ต่อเยอะ ๆ
ตอนนี้ผมอยู่ในสภาพหมดไฟอย่างชัดเจน เลยเริ่มคิดว่าควรสร้างอะไรสักอย่างที่เบา ๆ และดูไร้ประโยชน์ขึ้นมา นึกถึงเรื่องของ Richard Feynman ที่ซึมเศร้าอยู่ราว 10 ปีก่อนและหลังสงคราม แล้วกลับมาพบความสุขอีกครั้งจากฟิสิกส์ของจานที่หมุนตอนมื้อกลางวัน และสามารถวางงานก่อนหน้านั้นลงชั่วคราวได้
ผมเห็นด้วยเต็มที่กับคำพูดที่ว่าคนส่วนใหญ่เป็นคนดีและมีความคิดสร้างสรรค์ ผมทำโคลนของ OMCB ขึ้นมา เพราะถูกไอเดียนี้ครอบงำจนต้องเอาขึ้นออนไลน์ และวันถัดมาก็มีคนไม่ดีอยู่บ้าง แต่ก็มีใครบางคนวาด The Great Wave ของ Hokusai ขนาดยักษ์ลงไป เวอร์ชันของผมใช้แคนวาสเลื่อนขนาดใหญ่ที่มีความกว้าง/สูงคงที่ เลยเห็นได้ทันที และความรู้สึกตอนเห็นมันดีและสนุกมากจริง ๆ
อ่านบทความนี้แล้วน้ำตาซึมนิดหน่อย ตอนมัธยมต้นผมเรียนวิศวกรรมซอฟต์แวร์ เพราะอยากสร้างโปรแกรมทำการบ้านให้ เนื่องจากผมไม่เก่งคณิตศาสตร์ หลังจากนั้นก็ทำอะไรหลายอย่างต่อมาเรื่อย ๆ แค่เพราะมันสนุก เช่น LAN chat, HTTP server, antivirus
มันสนุก ท้าทาย คุ้มค่า และน่าทึ่ง แต่พอเริ่มทำงาน ใจผมก็เริ่มด้านชาเพราะเทคโนโลยีใหม่ ๆ ที่ถาโถมมาไม่รู้จบ การถกเถียงแบบ “X เป็นอันตราย”, “J ดีกว่า K” และการถูกสิ่งใหม่ ๆ โจมตีไม่หยุด
ความสุขของงานวิศวกรรมไม่รู้สึกเหมือนท้องฟ้าสีครามอีกต่อไป มันอาจยังเป็นสีครามอยู่ก็ได้ แต่สำหรับ ดวงตาที่ถูกชะล้างด้วยเงิน ทุกสิ่งดูเป็นสีเทา
การได้อ่านเรื่องนี้ทำให้ความรู้สึกตอนเด็ก ๆ ที่เริ่มเรียนซอฟต์แวร์กลับมาอีกครั้ง มันยังสนุกได้ และผมยังสร้างอะไรบางอย่างเพื่อตัวเองได้ ไม่ใช่เพื่อ exit หรือ SaaS ใหม่แวววาวอะไรสักอย่าง มันให้ แสงแห่งความหวัง ว่ายังสนุกได้อยู่
คุณอาจรู้อยู่แล้ว แต่นี่คือ อาการหมดไฟ และคนที่รู้สึกคล้ายกันควรจริงจังกับมัน ก่อนหน้านี้ผมเคยช่วยคนคนหนึ่งในที่ทำงานที่กำลังเรียน Python และเขาดีใจมากตอนเข้าใจรูปแบบไฟล์ไบนารี ตอนนั้นผมถึงตระหนักว่าผมไม่ได้รู้สึกแบบนั้นมาหลายปีแล้ว และไม่นานหลังจากนั้นก็รู้ว่าผมเหนื่อยเกินกว่าจะทำงานตำแหน่งนั้นต่อไป และต้องใช้เวลาดูแลสุขภาพจิตของตัวเอง
หัวใจสำคัญคือ ถ้าไม่จำเป็นจริง ๆ ก็เมินการ เรียนรู้เทคโนโลยีใหม่ แล้วโฟกัสแค่การสร้างของใหม่ สำหรับผม สิ่งที่เริ่มทำให้นึกขึ้นได้อีกครั้งว่า coding สวยงามได้แค่ไหน น่าจะเป็นวิดีโอของ Sebastian Lague
[https://youtu.be/X-iSQQgOd1A?si=aqriiWmcqqphOiuI]
มันทำให้นึกถึงช่วงวัยรุ่นที่เขียนโค้ดไม่ใช่เพราะจำเป็น แต่เพราะอยากเขียน ผมใช้ทักษะนั้นไปกับเรื่องดี ๆ ด้วย แต่ก็ใช้ไปกับเรื่องโง่ ๆ อย่างการแฮก “คู่แข่ง” ด้วย ซึ่งตอนนี้รู้สึกละอายใจ ถึงอย่างนั้นโดยรวมแล้วประสบการณ์นั้นก็หล่อหลอมให้ผมเป็นผมในวันนี้ และผมดีใจที่คนรุ่นถัดไปยังคงพบความสุขจากการ coding อยู่
[1] https://news.ycombinator.com/item?id=41306128
จะหยิบ pico-8 มาทำเกมหรือสคริปต์ห่วย ๆ ก็ได้ แบบไม่มีทั้งพื้นที่และแรงจูงใจพอจะตั้งชื่อตัวแปรยาว ๆ อย่าง longDescriptiveVariableNames เลยใช้ชื่อตัวแปรสองตัวอักษรแทน เล่นเกมอย่าง TIS-100 หรือ Shenzen I/O ก็ได้ และจะยิ่งดีถ้าพิมพ์คู่มือออกมา ใส่แฟ้มเก่าที่สุดที่มี แล้วทำกาแฟหกใส่ด้วย
ส่วนนี้สำคัญมากจริง ๆ:
“ผู้ใหญ่ในชีวิตผมส่วนใหญ่ไม่ได้โกรธผม พวกเขาบอกให้เลิกทำ แต่ก็ยังทำเสื้อยืดให้ด้วย ถ้าไม่ได้รับกำลังใจแบบนั้นในตอนนั้น ผมคงไม่ได้ทำงานที่ทำอยู่ตอนนี้”
วัยรุ่นต้องการ พื้นที่ที่สามารถเล่นซนได้พอประมาณ พื้นที่ที่มีผลลัพธ์ทางสังคมจริงอยู่บ้าง แต่ก็มีขอบเขตและความช่วยเหลือเพื่อไม่ให้เลยเถิดเกินไป และพวกเขายังต้องการผู้ใหญ่ที่มีความสามารถเจ๋ง ๆ ในสิ่งที่เด็ก ๆ อยากเรียนรู้ มากกว่าผู้ใหญ่ที่วางตัวเป็นผู้มีอำนาจ
ผมทำสไลด์นำเสนอสองหน้า ทั้งสองหน้าเป็นพื้นหลังสีดำ ตัวอักษรสีเทา เลียนแบบเซสชัน DOS ที่ดูเหมือน Windows ถูกลบไปแล้ว และหน้าหนึ่งมีขีดล่างตรงพรอมป์ต์ ตั้งให้สลับอัตโนมัติทุก 1 วินาทีและเล่นวน ก็เลยดูเหมือนเคอร์เซอร์กะพริบ มันดูเหมือนคอมพิวเตอร์เสีย แต่แค่กด Escape ก็ออกได้ แน่นอนว่าคอมพิวเตอร์พวกนั้นเป็น Mac จึงไม่มีทั้ง DOS หรือ Windows อยู่แล้ว
ครูเห็นเข้าแล้วคิดว่าผมแฮ็กหรือทำคอมพิวเตอร์พัง จึงส่งตัวไปหาครูใหญ่ ครูใหญ่ไม่ได้มองว่าเป็นเรื่องตลก และลงโทษให้ผมใช้ช่วงครึ่งหลังของพักกลางวันตลอด 2 สัปดาห์ถัดไปอยู่กับเจ้าหน้าที่ IT ของโรงเรียนเพื่อดูความเสียหายต่อทรัพย์สินที่เขาต้องเจอ แต่ทันทีที่เจ้าหน้าที่ IT เห็นว่าผมทำอะไร เขาก็หัวเราะหนักมาก และคิดว่าการปฏิบัติกับมันราวกับผมทำคอมพิวเตอร์พังนั้นไร้เหตุผล หลังจากนั้น แม้การลงโทษจะจบแล้ว ผมก็ยังไปที่ออฟฟิศของเขาบ่อย ๆ เพื่อคุย หรือเดินไปด้วยกันเพื่อซ่อมคอมพิวเตอร์
ปีถัดมา ผมถามครูว่าขอเข้าถึง PC ได้ไหม เพราะมีบางอย่างอยากลองเล่น เขาให้สิทธิ์ใช้ห้องเรียนบัญชีหลังเลิกเรียน ให้พื้นที่เก็บข้อมูลเพิ่มบนไดรฟ์เครือข่าย และให้อิสระเกือบเต็มที่ภายใต้เงื่อนไขว่าจะไม่ทำอะไรพัง ดังนั้นผมจึงไม่ทำอะไรพัง และปล่อยให้ Tierra ทำงานบนเครื่องหลายเครื่องข้ามคืน ดูมันทำงานอย่างยอดเยี่ยม แล้วตอนเช้าก็เข้ามาบันทึกและรีบูต สิ่งนั้นกลายเป็นรากฐานสำคัญในอนาคต ผมไม่อยากฆ่าห่านที่ออกไข่ทองคำ จึงไม่ทำลายมัน
PC ในห้องปฏิบัติการช้ามาก และมีแกล้งกันดัง ๆ ว่าถ้ากด Win+E ค้างไว้ จะมีหน้าต่าง Explorer หลายร้อยหน้าต่างเด้งขึ้นมาจน PC ค้าง ผมเลยทำโปรแกรม VB6 เล็ก ๆ ชื่อ “DoraTheExplorer.exe” ที่เมื่อคลิกแล้วจะทำสิ่งเดียวกัน แล้วอัปโหลดไปไว้ในไดรฟ์แชร์ของโรงเรียน
ตอนแรกก็ได้ผล แต่คนเริ่มหลบได้ด้วยการกด Alt+F4 ปิดอย่างรวดเร็ว ผมจึงทำให้มันรันตัวเองใหม่เมื่อถูกปิด แต่นั่นก็ยังถูกหยุดได้ด้วยการรัว Alt+F4 สุดท้ายผมทำ ไฮดรา ที่ทุกครั้งที่ปิดจะเปิดเพิ่มอีกสองตัว และมันก็กลายเป็น ICBM แห่งสงครามแกล้งด้วย Explorer จนต้องประกาศยอมแพ้
ผู้ดูแลระบบรู้ตั้งแต่แรกแล้ว แต่โดยรวมค่อนข้างสบาย ๆ เขาบอกชัดเจนว่าถ้ามีใครสูญเสียงานหรือเกิดความเสียหาย ก็ต้องรับผิดชอบ แต่ทุกคนรู้ว่า dora.exe ทำอะไร จึงไม่เกิดเรื่องแบบนั้น คนตั้งใจกดมันเองเพื่อทำให้ PC ล่มแบบโง่ ๆ แล้วดูว่าจะหนีทันไหม
ตอนนั้นผมก็คิดว่ามันไร้เหตุผลและไม่ยุติธรรม โชคดีที่แม่ก็เห็นด้วย ตอนนี้เมื่อมองย้อนกลับไปด้วยสายตาผู้ใหญ่ ผมรู้สึกว่านั่นเป็นท่าทีต่อการเลี้ยงดูเด็กที่ไร้ความรับผิดชอบแทบจะถึงขั้นเป็นอาชญากรรม มันคับแคบและน่าสมเพชอย่างเหลือเยียวยาจริง ๆ และพอคิดว่ายังมีเด็ก ๆ ที่เติบโตในสภาพแวดล้อมแบบนั้น และเรียนรู้จากคนแบบนั้นอยู่ ผมก็โกรธขึ้นมา
“โดยเฉพาะสำหรับคนที่ไม่ได้เขียนโปรแกรม วิธีทั่วไปที่พวกเขาเจอบอตก็มักเป็นพวกบอตกว้านซื้อตั๋วหรือบอตจองร้านอาหาร เป็นบอตที่ให้ความรู้สึกเห็นแก่ตัว ไม่ยุติธรรม และต่อต้านสังคม”
พอเห็นส่วนนี้ก็ทำให้นึกถึงตอนที่สกีรีสอร์ต Palisades Tahoe เมื่อฤดูหนาวที่แล้วเริ่มใช้ระบบ จองที่จอดรถ สำหรับวันหยุดสุดสัปดาห์ ซึ่งฟรีแต่มีจำนวนจำกัด ที่นั่นเป็นหนึ่งในจุดหมายปลายทางเล่นสกีที่ได้รับความนิยมที่สุดจาก Bay Area จึงแน่นอนว่ามีคนสร้างบอตขึ้นมา ทุกครั้งที่มีที่ว่างใหม่เปิดออกมา ก็หายไปภายในไม่กี่วินาที เห็นได้ชัดว่าเป็นบอต ดังนั้นผมเองก็เลยจำใจสร้างขึ้นมาหนึ่งตัว
บอตของผมแค่แจ้งเตือนผ่าน Pushover เมื่อมีที่ว่างจากการยกเลิก ไม่ได้จองเองโดยตรง แต่สำหรับผมกับเพื่อนร่วมทริปก็เพียงพอแล้ว บน Reddit คนที่ไม่ได้สร้างบอตบอกว่าบอตดูดที่ไปหมด และผมเองก็รู้สึกว่ามันค่อนข้างต่อต้านสังคมเหมือนกัน แต่จริง ๆ แล้วไม่มีทางเลือก
ไม่อย่างนั้นแทนที่จะมอบทรัพยากรให้คนที่ยอมจ่ายมากที่สุด มันจะกลายเป็น “การประมูล” ที่มอบให้คนที่เขียนโปรแกรมเก่งที่สุด แล้วคนเหล่านั้นก็สามารถเอาไปขายต่อให้คนที่ยอมจ่ายมากที่สุดได้อีก การเขียนโปรแกรมเป็นทักษะเฉพาะทาง และในบริบทที่ตั้งแต่แรกก็ไม่ยอมรับการให้ของกับคนที่จ่ายเงินมากที่สุดอยู่แล้ว แบบนี้ค่อนข้างไม่ยุติธรรม เท่าที่รู้ บางส่วนของวงการรองเท้าสนีกเกอร์/แฟชั่นใช้วิธีแบบนี้อยู่
ที่น่าสนใจคือทุกปีจะมีข่าวออกมาว่ามีการใช้บอตในการจองกระท่อมเหล่านี้หรือไม่ และผู้ให้บริการก็ปฏิเสธอย่างหนักแน่น แต่ผมรู้ว่าบอตของผมกำลังแข่งกับบอตอื่นอีกจำนวนมาก
เป็นความลับที่ใคร ๆ ก็รู้กันว่า คุณมีทางเลือกว่าจะสู้กับบอตเพื่อให้ได้คิวในอีก 6–12 สัปดาห์ หรือจ่าย 50 ยูโร ให้คนที่ถูกต้องแล้วได้คิวภายในไม่กี่วัน
หลังจองได้แล้ว ผมต้องลากเรือไป 9 ชั่วโมง และตลอดทางก็ได้แต่ภาวนาอย่าให้มีน้ำเหลืออยู่ในเรือแม้แต่หยดเดียว เพราะเจ้าหน้าที่ตรวจส่วนใหญ่ถ้าเห็นน้ำก็จะให้ไม่ผ่านแล้วส่งกลับทันที โชคดีที่ทีมตรวจหน้างานยอดเยี่ยมมาก และล้างเรือทั้งลำด้วยน้ำร้อน ซึ่งว่ากันว่าจะฆ่าลูกหอยหรือไข่อะไรทำนองนั้นของหอยแมลงภู่ Quagga ได้
ผมชอบบทความนี้มาก และมันทำให้นึกถึงสมัยเรียน Java ตอนมัธยม ผมเคยทำแอปที่ปิดทั้งหน้าจอด้วยตารางปุ่ม “x” แต่มีแค่ปุ่มเดียวเท่านั้นที่ปิดหน้าต่างจริง ๆ ถ้ามีใครลุกไปโดยไม่ล็อกคอมพิวเตอร์ เราก็จะใส่ฟลอปปีดิสก์ รันโปรแกรม แล้วเดินจากไป
เจ้าหน้าที่ IT ของโรงเรียนมักถามเสมอว่าเรากำลังทำอะไรกัน และเราก็ตอบไปตรง ๆ เขาไม่ได้โมโหที่เราค้นพบวิธีรันเกมอย่าง Halo CE หรือ Starcraft บนเครือข่าย แต่ถ้าเราทำตัวเกินไป เขาก็จะบอกให้หยุด
เรามี file share บนเครือข่าย เลยไม่ต้องใช้ฟลอปปี และมันง่ายมากที่จะไปยุ่งกับคอมพิวเตอร์ของทุกคน ผมเคยทำสคริปต์ที่อ่านชื่อหน้าต่างที่เปิดอยู่ แล้วปิดเว็บเกมยอดนิยมในตอนนั้นอย่าง free games.com เพราะไม่ควรเล่นเกมระหว่างเรียน แต่เพราะชื่อไฟล์ที่บันทึกไว้ มันไปปิดโปรแกรมทำโมเดล 3D บางตัวเข้า อันนั้นก็รู้สึกผิดนิดหน่อย
ผมหาวิธีเลี่ยงได้ คือเปิด Notepad แล้วไปที่กล่องโต้ตอบ Open File จากนั้นจำขั้นตอนถัดไปได้ไม่ชัด แต่ File Explorer จะเปิดขึ้นมา และถ้าใส่ URL ในแถบที่อยู่ มันก็จะกลายเป็น Internet Explorer แน่นอนว่าผมมี Linux ที่บูตจาก CD ได้ด้วย แต่นั่นสะดุดตาเกินไป
เจ้าหน้าที่ IT อ้างว่าเกมบนเครือข่ายกินแบนด์วิดท์ทั้งหมด และผม “แฮ็ก” คอมพิวเตอร์เพื่อได้สิทธิ์ผู้ดูแลระบบสำหรับการติดตั้ง รู้สึกเหมือนทุกคอมเมนต์จำนวนมากในเธรดนี้ต่างก็มีเรื่องของผมอยู่หนึ่งเรื่อง
ทำให้นึกถึงเรื่องในบทความของ New Yorker เกี่ยวกับ Reddit โดยเฉพาะส่วนที่อธิบาย r/Place:
ในวัน April Fools’ Day ปีที่แล้ว แทนที่จะประกาศอะไรแบบล้อเลียน Reddit ได้เปิดตัวการทดลองทางสังคมของจริง ชื่อว่า r/Place เป็นสี่เหลี่ยมว่างขนาดหนึ่งพันพิกเซลคูณหนึ่งพันพิกเซล ตอนแรกพิกเซลทั้งหมดหนึ่งล้านพิกเซลเป็นสีขาว เมื่อการทดลองเริ่มขึ้น ใครก็ตามสามารถเปลี่ยนพิกเซลเพียงหนึ่งจุด ณ ตำแหน่งใดก็ได้บนตาราง ให้เป็นหนึ่งใน 16 สี ข้อจำกัดเดียวคือความเร็ว อัลกอริทึมกำหนดให้ผู้ใช้ Reddit แต่ละคนเปลี่ยนได้เพียงหนึ่งพิกเซลทุก ๆ 5 นาที “แบบนั้นคนคนเดียวจะยึดครองไม่ได้ เพราะมันช้าเกินไป” Josh Wardle ผู้จัดการผลิตภัณฑ์ของ Reddit ที่ดูแล Place อธิบาย “ถ้าจะทำอะไรให้ใหญ่ขึ้นมาได้ ก็ต้องร่วมมือกัน”
https://www.newyorker.com/magazine/2018/03/19/reddit-and-the...
ผมก็เคยเป็นหนึ่งในคนที่เกลียดบอตเหมือนกัน บทความนี้เป็นสิ่งที่จำเป็น ผมเองก็เคยมีปัญหาเพราะสร้างโปรแกรมที่ไม่ควรสร้างที่โรงเรียน
ถึงอย่างนั้น ผมก็จะขอบคุณครูคณิตศาสตร์ของผมไปตลอดชีวิต ที่ยอมให้ใช้โปรแกรมบน เครื่องคิดเลข TI-83+ ได้ โดยมีเงื่อนไขว่าต้องเป็นโปรแกรมที่ผมเขียนเอง และห้ามแชร์ให้คนอื่น
สมัยก่อนตอนดูแลฟอรัม vBulletin ผมเคยติดตั้งระบบอาร์เคดไว้ มันเป็นฟีเจอร์สนุก ๆ ที่ให้เล่นเกมแล้วหาเงินตราไร้สาระชื่อ “XMB Bucks” เอาไว้อวดกัน
หลายเดือนต่อมา ผมพบว่าอาร์เคดนั้นมีฟีเจอร์ ซับฟอรัมที่ซ่อนอยู่ และมีคนจำนวนไม่น้อยใช้งานกันอย่างคึกคัก ดูเหมือนพวกเขาจะเลี่ยงหน้าลงทะเบียนของ vBulletin แล้วสมัครเข้าใช้ฟีเจอร์อาร์เคดลับนี้โดยตรง จากนั้นก็คุยกันเองอย่างขยันขันแข็ง ราวกับฝูงหนูที่อาศัยอยู่ใต้พื้นไม้
ตอนผมเข้ามหาวิทยาลัย WWW ยังเป็นของใหม่มาก ผมเรียนรู้ได้อย่างรวดเร็วว่าจะเปิดดูหน้าเว็บด้วย NCSA Mosaic ในห้อง CIP ได้อย่างไร แต่ไม่รู้เลยว่ามันทำงานอย่างไร ถึงอย่างนั้นก็อยากหาคำตอบให้ได้
ผมอ่านเจอจากที่ไหนสักแห่งว่าถ้าอยากทำหน้าเว็บของตัวเองต้องมี “patchy server” เลยค้นหา Apache บน Altavista หลังจากแปลกใจอยู่ครู่หนึ่งที่ผลลัพธ์แรกไม่ได้เกี่ยวกับชนเผ่า ผมก็ค่อย ๆ ทำตามทุกคำสั่งอย่างระมัดระวัง ทั้งที่ไม่รู้ด้วยซ้ำว่ากำลังทำอะไรอยู่
ผ่านไปพักใหญ่ ผมเห็นหน้าทดสอบใน Mosaic แล้วก็กลับบ้านอย่างดีใจ ตอนนั้นดึกและเหนื่อยแล้ว แต่ก็ยังลังเลว่าควรเปิดคอมพิวเตอร์ ต่อสายโทรศัพท์เข้าอินเทอร์เน็ต แล้วตรวจดูจากบ้านว่าหน้าเว็บของผมมองเห็นได้ไหม ผมยังไม่เข้าใจหลายอย่าง แต่คิดว่าถ้ามันเห็นได้จากบ้าน ก็แปลว่าคนทั้งโลกก็น่าจะเห็นได้
ความคิดนั้นติดอยู่ในหัวไม่ยอมไปไหน สุดท้ายเลยลองทำดู และน่าทึ่งที่มันใช้ได้จริง[1] สำหรับคนที่โตมาในชนบทที่ไม่มีแม้แต่ห้องสมุด เหตุการณ์นั้นเป็นประสบการณ์ที่สั่นสะเทือนโลกทั้งใบ
ประมาณ 2 สัปดาห์ต่อมา ผมได้รับแจ้งจากมหาวิทยาลัยว่าไม่ควรเปิดบริการบนทรัพยากรของมหาวิทยาลัยโดยไม่ได้รับอนุญาต จึงต้องปิดลง แต่นอกเหนือจากนั้นก็ไม่มีอะไรเกิดขึ้น และผมดีใจมากที่พวกเขาจัดการอย่างสมเหตุสมผล
[1] ตอนนั้นคอมพิวเตอร์ของเรามี IP สาธารณะ และไฟร์วอลล์ยังมาไม่ถึง
\\x.x.x.x\c$ก็มีโอกาสสูงทีเดียวที่จะเชื่อมต่อเข้าไปได้เลยเป็นเรื่องเล่าที่ยอดเยี่ยม ช่วยเติมรสชาติให้มื้อเช้าอย่างเพลิดเพลิน นักพัฒนาวัยเยาว์นั้นเป็นอิสระจากเครื่องมือและกระบวนการสมัยใหม่ของโลกมืออาชีพ รวมถึงสิ่งต่าง ๆ ที่ไม่ได้ดีเสมอไป
ผมกำลังสร้างแพลตฟอร์มคล้ายทางเลือกโอเพนซอร์สของ Roblox อยู่ และเด็ก ๆ ประเภทนี้ก็ถูกดึงดูดเข้ามา พวกเขาสร้างสรรค์มาก คอยแจ้งบั๊กและการแฮ็กที่อาจเป็นอันตรายให้รู้ และพยายามช่วยเหลืออยู่เสมอ