1 คะแนน โดย GN⁺ 2023-07-26 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เจ้าหน้าที่ฝ่ายสนับสนุน IT ของภาควิชา CS ไปที่ห้องทำงานของอาจารย์หลังได้รับคำบ่นเรื่อง ประสิทธิภาพของ Sparc4 ลดลง และพบ xroach ที่ซ่อนอยู่หลังหน้าต่าง
  • เมื่อย่อหน้าต่างหนึ่งลง พื้นที่ด้านล่างของจอก็ดูเหมือน สี่เหลี่ยมสีดำ และภายในนั้นมีแมลงสาบเคลื่อนที่อย่างช้ามาก
  • การเคลื่อนไหวอยู่ที่ประมาณ 0.5 fps และมีแมลงสาบ xroach ใต้ xterm มากเกินไปจนดูเหมือนก้อนสีดำก้อนเดียว
  • แก่นของปัญหาไม่ใช่ตัวฮาร์ดแวร์เอง แต่เป็นสถานะที่ xroach ยังคงแสดงผลต่อเนื่องอยู่ในจุดที่ผู้ใช้มองไม่เห็น
  • ในสภาพแวดล้อมเดสก์ท็อป X11 รุ่นเก่า แม้แต่โปรแกรมแนวแกล้งเล่นก็อาจดูเหมือนปัญหาด้านประสิทธิภาพจริงได้ จึงสำคัญที่จะต้องตรวจสอบหน้าต่างที่ซ่อนอยู่และสถานะเบื้องหลัง

อาการที่ตรวจพบในห้องทำงานอาจารย์

  • Paco Hope เล่าว่าเมื่อครั้งทำงานเป็นเจ้าหน้าที่ฝ่ายสนับสนุน IT ของภาควิชา CS อาจารย์ได้ร้องเรียนว่า Sparc4 ช้า จึงถูกเรียกไปที่ห้องทำงาน
  • สิ่งแรกที่ทำคือย่อหน้าต่างหนึ่งลง และสิ่งที่ปรากฏด้านล่างคือ สี่เหลี่ยมสีดำ ที่ไม่คาดคิด
    • ภายในพื้นที่สีดำนั้น แมลงสาบจาก xroach กำลังขยับทีละน้อย
    • การเคลื่อนไหวช้ามากจนดูเหมือนอยู่ที่ราว 0.5 fps

xroach ที่แน่นอยู่ใต้ xterm

  • ใต้ xterm มี xroach อยู่หนาแน่นมาก จนมองไม่เห็นเป็นแมลงสาบแต่ละตัว แต่เกือบจะดูเหมือน สี่เหลี่ยมสีดำสีเดียว
  • อาจารย์ไม่เห็นสภาพด้านล่างนั้นเลยก่อนจะย่อหน้าต่างลง และคำบ่นเรื่องประสิทธิภาพที่ตกลงก็เริ่มมีเบาะแสเมื่อได้ตรวจดูสภาพหน้าจอที่ถูกซ่อนไว้

ความทรงจำสั้น ๆ และปฏิกิริยา

  • เกร็ดนี้เป็นความทรงจำสั้น ๆ ที่ Paco Hope โพสต์บน Mastodon เมื่อวันที่ 25 กรกฎาคม 2023
  • โพสต์ดังกล่าวแสดงตัวเลข 202 boosts และ 389 favorites สะท้อนว่าผู้ใช้ที่จดจำสภาพแวดล้อมเดสก์ท็อปยุคเก่าและโปรแกรมแนวแกล้งเล่นต่างรู้สึกร่วมได้

1 ความคิดเห็น

 
GN⁺ 2023-07-26
ความคิดเห็นบน Hacker News
  • ตอนทำงานซัพพอร์ตเทคนิคที่โรงพยาบาลท้องถิ่น พยาบาลโทรมาบอกว่ามี “หน้าต่างอะไรสักอย่างที่ดูเหมือน พยากรณ์อากาศ” โผล่อยู่บนหน้าจอ แล้วเมาส์เข้าไปอยู่ข้างใต้นั้น ทำให้ปิดไม่ได้
    ผมเริ่มสนใจ เลยบอกว่าอย่าเพิ่งแตะคอมพิวเตอร์ แล้วใช้เวลาราว 10 นาทีไปถึง พอไปถึงเธอบอกว่า “มันปิดไปเองเมื่อ 1 นาทีก่อนค่ะ มันค้างอยู่ตั้ง 30 นาที”
    ดูจากการจัดโต๊ะกับคำอธิบายหน้าต่างแล้ว ผมลองกดปุ่มบนจอภาพ ก็พบว่าเป็น เมนู OSD ของจอภาพ ที่ถูกมุมคีย์บอร์ดกดโดนโดยไม่ตั้งใจ และมันแสดงความสว่าง 100% เป็นไอคอนรูปดวงอาทิตย์ แน่นอนว่าเมาส์ก็ย่อมเข้าไปอยู่ข้างใต้นั้นได้
    จากนั้นก็เดินกลับอีก 10 นาที แล้วรอสายถัดไป

    • จากประสบการณ์ซัพพอร์ตเทคนิคในโรงพยาบาล ผมไม่แน่ใจว่า IT เพิ่มคุณค่าได้มากเท่าที่คนในวงการ IT คิดเองหรือเปล่าในสภาพแวดล้อมแบบนั้น
      พยาบาลยุ่งกับการช่วยชีวิตคนและดูแลคนที่กำลังมีวันที่เลวร้ายที่สุดอยู่แล้ว ยังต้องมารับมือกับเวิร์กสเตชันที่ทั้งการติดตั้งและการดูแลรักษาเละเทะอีก พอขอความช่วยเหลือ บางทีก็เป็นคนที่สร้างปัญหานั่นแหละที่เดินมาทำท่าดูถูก
      พยาบาลไม่ได้โง่หรือขี้เกียจ แต่เป็นคนที่มีเรื่องสำคัญกว่าต้องทำ แทนที่จะเสียเวลากับปัญหา IT จุกจิก
      อุปกรณ์ที่สำคัญต่อการรักษาจริง ๆ มักมีผู้เชี่ยวชาญเฉพาะทางดูแล และ คอมพิวเตอร์ของเครื่อง MRI อาจไม่ได้ผูกกับ Active Directory และอาจไม่ได้ต่อเครือข่ายด้วยซ้ำ ปัญหาจะถูกส่งต่อไปที่ GE ไม่ใช่คนซ่อมพรินเตอร์
    • เคยได้รับเคสซัพพอร์ตเทคนิคเมื่อก่อนว่า “หน้าจอแตก ๆ เพี้ยน ๆ ตลอดเลย น่าจะติดไวรัส” ตอนนั้นหนัง The Net ยังฉายในโรงอยู่
      พอไปดู ก็เห็นบูมบ็อกซ์ที่มีลำโพงใหญ่สองตัววางอยู่บน จอ CRT พอย้ายมันออก ปัญหาก็หายไปเหมือนใช้เวทมนตร์
    • ฟังดูเหมือนเป็นเวอร์ชันที่พัฒนาไปอีกขั้นของเรื่อง “ที่วางแก้ว 4x พัง” ในยุค 90
      จริง ๆ แล้วพยาบาลก็อธิบายสิ่งที่เกิดขึ้นได้ค่อนข้างแม่นทีเดียว
  • ในปี 1989 ผมเป็นฝ่าย IT คนเดียวในที่ทำงานแห่งหนึ่งที่อดีตนักเศรษฐศาสตร์สายวิชาการใช้ Digital VAX 11/750 ทำแบบจำลองเศรษฐมิติ
    มินิคอมพิวเตอร์เครื่องนี้รัน VMS ซึ่งเป็นระบบปฏิบัติการแบบหลายผู้ใช้ และผู้ใช้ทุกคนมีสิทธิ์ผู้ดูแลระบบ แต่ละคนคิดว่าถ้าดันลำดับความสำคัญของโปรเซสตัวเองให้สูงสุด โมเดลจะรันเร็วขึ้น แต่กลับไปขัดขวางโปรเซสแบบเรียลไทม์ที่จำเป็นต่อการทำงานของคอมพิวเตอร์ ทำให้ได้ผลตรงกันข้าม
    หลังจากหาสาเหตุเจอ ยึดสิทธิ์คืน แล้วรีสตาร์ตระบบ ทุกอย่างก็กลับมาปกติ และมีคนมาขอบคุณที่ช่วยทำให้ระบบเร็วขึ้น

    • เคยมีระบบหนึ่งที่นักศึกษาดูแลกันเอง และผมก็เป็นหนึ่งในนั้น พวกเราชอบแกล้งกัน วันหนึ่งมีคนเปิด emacs อยู่บนเวิร์กสเตชัน DEC ที่หน่วยความจำเหลือน้อย
      อีกคนเขียนโปรแกรมที่ fork ตัวเอง 1000 ตัว ตั้งค่า nice เป็น 19 แล้ว sleep(0) จากนั้นก็จบการทำงาน ถ้ามันได้เวลา CPU แม้แต่นิดเดียวก็จะจบทันที แต่ตราบใดที่ emacs ยังรันอยู่ มันก็ไม่ได้โอกาสนั้น ระหว่างนั้นโหลดที่ xload แสดงกลายเป็นกล่องดำสนิท
      คนที่ใช้ emacs อยู่รัน ps -ef | grep procname | xargs kill ด้วย root แต่การจัดการ kill ต้องใช้เวลา CPU เลยใช้เวลานานกว่า sleep(0) และแทบไม่เกิดผล
      การแกล้งครั้งที่สองตั้งชื่อโปรเซสว่า ema ผลคืออินสแตนซ์ emacs ทั้งหมดก็โดนฆ่าไปด้วย
      ครั้งที่สามตั้งชื่อโปรเซสว่า et ซึ่งบังเอิญไปตรงกับ /etc/initd ด้วย ทำให้เครื่องรีบูตขึ้นมาอย่างกะทันหัน
    • ในปี 1993 วิชาวิทยาการคอมพิวเตอร์สำหรับนักศึกษาปีหนึ่งสอนด้วย Scheme และงานต้องพัฒนาและทดสอบบนเครื่อง Digital แบบแชร์ที่รัน Ultrix
      อินเทอร์พรีเตอร์ Scheme เริ่มต้นช้า โดยเฉพาะเมื่อมีคนล็อกอินเกิน 20 คน ผู้ช่วยสอนสอนให้กด ctrl-z เพื่อพักอินเทอร์พรีเตอร์ไว้ แก้โค้ดด้วย vi แล้วใช้ fg กลับเข้าไป
      ปัญหาคือไม่ใช่แค่ครึ่งห้อง แต่ 2/3 ของทั้งห้อง ลืม fg แล้วหลังแก้เสร็จก็เปิดอินสแตนซ์ Scheme ใหม่ขึ้นมาอีก ผมยังจำคืนก่อนกำหนดส่งในห้องเทอร์มินัลได้ ระบบช้าจนแทบคลาน
      หลังจากนั้นผมก็เรียนรู้วิธีตามหาเพื่อนร่วมชั้นที่รัน Scheme มากกว่าหนึ่งอินสแตนซ์แล้วเตือนให้ใช้ fg และ “คำตอบ” แบบใช้รีเคอร์ชันไม่สิ้นสุดแก้ปัญหา 8 ควีนก็ไม่ได้ช่วยเรื่องโหลดเลย บทเรียนจริง ๆ คือคืนก่อนกำหนดส่งงาน CS 401 อย่าล็อกอินเข้าไป
    • ในปี 1991 ผมใช้อินเทอร์เน็ตครั้งแรกที่มหาวิทยาลัยผ่านอุปกรณ์แบบนั้น ผมเจอช่องโหว่เจ๋ง ๆ ที่สามารถบรอดแคสต์ข้อความถึงใครก็ได้แบบไม่ระบุตัวตน และทำให้หลายคนตกใจ
      เทอร์มินัลแบบแชร์อยู่รวมกันในห้องเดียว ผมเลยเห็นผลของสิ่งที่ตัวเองทำแบบเรียลไทม์ ซึ่งสนุกดี
    • เป็นตัวอย่างที่ดีของหลักเศรษฐศาสตร์เรื่อง โศกนาฏกรรมของทรัพยากรร่วม: https://en.m.wikipedia.org/wiki/Tragedy_of_the_commons
    • นึกถึงเรื่องที่เคยได้ยินจากคนที่เคยทำงานด้วยกัน
      ในสภาพแวดล้อมหนึ่งที่มีคนต่อคิวกันอยู่ มีคนถามว่าจะช่วยดูปัญหาของเขาก่อนคนอื่นได้ไหม กล่าวคือขอให้ส่งเขาไปหน้าสุดของคิว
      เขาตอบว่า “ได้เลยครับ!” พออีกฝ่ายทำท่าประหลาดใจ เขาก็เสริมว่า “แต่คุณก็รู้นะครับว่าผมจะทำแบบเดียวกันนี้ให้คนอื่นทุกคนที่ขอแบบเดียวกันด้วย?”
      สุดท้ายคนนั้นก็ตัดสินใจรอต่อที่ตำแหน่งเดิมของตัวเอง
  • ทำให้นึกถึงช่วงชีวิตนักศึกษายุคทองสมัยก่อน
    สำหรับผมคือช่วงต้นทศวรรษ 2000 และคอมพิวเตอร์ในห้องแล็บของมหาวิทยาลัยไม่ได้แรงนัก ผู้คนจึงมักทำงานบน Linux console โดยไม่เปิด X session หนัก ๆ
    ราวปี 2001 ผมอ่านหน้าแมนนวล console_ioctl(4) แล้วพบว่ามีของให้เอาไปเล่นแกล้งคนเต็มไปหมด ผมเขียนโปรแกรมเล็ก ๆ ที่ปรับแต่งฟอนต์คอนโซลให้พลิกตัวอักษรทั้งหมดกลับหัว สลับตัวพิมพ์ใหญ่กับตัวพิมพ์เล็ก ทำให้แพตเทิร์นไฟ LED บนคีย์บอร์ดกะพริบ หรือเปลี่ยนพาเล็ตให้หน้าจอค่อย ๆ มืดเป็นสีดำแล้วกลับมาเหมือนเดิม
    ผมเพิ่มคอมโพเนนต์ฝั่งเซิร์ฟเวอร์เข้าไป เปิดทิ้งไว้ในเทอร์มินัลที่ดูปกติ แล้วรอเหยื่อมา จากนั้นก็สั่งเปิดเอฟเฟกต์จากเครื่องอื่นในห้องเดียวกันจากระยะไกลแล้วดูปฏิกิริยา โชคดีที่ไม่นานผมก็รู้ว่าการเขียนโค้ดเองสนุกกว่าการดูคนตกใจมาก จึงเลิกอย่างหลังไป
    อีกมุกหนึ่งคือการพิมพ์ข้อความเองที่พรอมป์ล็อกอินของ getty ให้ดูเหมือนว่าล็อกอินเป็น root สำเร็จแล้ว รวมถึง motd ด้วย เลียนแบบการขึ้นบรรทัดใหม่ด้วยแท็บและช่องว่าง โดยไม่กด RET เด็ดขาด และลงท้ายด้วย [root@mailhost root]#
    บางคนสงสัยเลยพิมพ์ whoami แล้วงงว่าทำไมพรอมป์รหัสผ่านถึงเด้งขึ้นมา บางคนกลัวจนไม่กล้าแตะอะไร ถอยออกไปส่งเมลหาผู้ดูแลระบบจากเทอร์มินัลเครื่องอื่น

    • ถ้ามีระบบ Linux ก็คงดี แต่บนเครือข่าย Windows เราก็ทำเรื่องคล้าย ๆ กัน
      แค่ผู้ใช้ล็อกอินอยู่ ก็ใช้ Task Scheduler รันแทบจะโปรแกรมใดก็ได้ด้วยสิทธิ์ของผู้ใช้นั้น และเมื่อใช้ร่วมกับ Active Directory ก็รู้ข้อมูลผู้ใช้ได้ด้วย รู้ว่าใครอยู่ตรงไหน แล้วเปิด iexplorer ไปยังเว็บบางเว็บ หรือเปิดเอกสาร Word ที่ไม่เป็นอันตรายก็ได้ กรณีที่ร้ายที่สุดคือสคริปต์แบตช์ที่ล็อกเอาต์อัตโนมัติ
      ภายหลังผู้คนเริ่มจับทางได้และพยายามทำ remote execution ตาม แต่ดันรันด้วยสิทธิ์ของตัวเองแทนสิทธิ์ของผู้ใช้เป้าหมาย พอแอดมิน IT มา ร่องรอยว่าใครเป็นคนรันจึงชัดเจนเกินไป
      ผมเลิกแกล้งคน และท้ายที่สุดก็ผ่านงาน IT มาเป็นวิศวกรซอฟต์แวร์เป็นอาชีพ บางทีก็สงสัยว่าถ้าตอนนั้นโดนลงโทษทางวินัย ชีวิตจะเป็นอย่างไร
    • ฟังดูสนุกจริง ๆ เป็นวิธีที่ทำให้ตระหนักว่าเมื่อได้มีส่วนโดยตรงกับผลลัพธ์ การเขียนโค้ดนั้นสนุกมากและมีอิทธิพลมาก
  • บนเมนเฟรม IBM 370 มีโปรแกรมเมอร์มากกว่า 80 คน และ VM/370 สร้าง virtual machine ให้โปรแกรมเมอร์คนละเครื่อง ผมเป็นหนึ่งในสอง system programmer ที่มีสิทธิ์ “superuser”
    ภายใน virtual machine ปกติจะรัน CMS แต่ก็รันอย่างอื่นได้ และบางเครื่องก็รัน MVS
    ถ้าจะส่งคำสั่งไปยัง virtual machine เอง ต้องเติมอักขระพิเศษไว้หน้าคำสั่ง ค่าเริ่มต้นคือ # ตัวอย่างเช่น #cp ... คือคำสั่งที่ส่งไปยัง virtual machine และอักขระนำหน้าแบบวิเศษนี้สามารถเปลี่ยนเป็นตัวไหนก็ได้ตามต้องการ
    วันหนึ่งผมว่าง ๆ เลยสงสัยว่าจะรัน VM ซ้ำภายใน virtual machine ได้ไหม ผมบูต VM ใน “ระดับที่สอง” แล้วเปลี่ยนอักขระนำหน้าเป็น ! และภายในนั้นก็สร้าง virtual machine ใหม่ ๆ ได้
    จากนั้นก็บูต VM ใน virtual machine “ระดับที่สาม” อีกครั้ง แล้วเปลี่ยนอักขระนำหน้าเป็น @ สุดท้ายผมลงไปได้ถึง การซ้อนกัน 8 ชั้น และยืนยันได้ว่า VM สามารถรัน VM ที่รัน VM ต่อไปอีกได้จริง
    พอจะเลิกและปิดระดับที่ซ้อนกันเหล่านั้น ผมพิมพ์ #cp shutdown ตามความเคยชิน ปรากฏว่า VM จริงบนเครื่องจริงถูก shutdown ไปเลย ผมตกใจรีบวิ่งไปห้องเครื่องแล้วกดปุ่ม start บนคอนโซล
    แน่นอนว่ามี system log เหลืออยู่ และ system programmer อีกคนก็มาที่ห้องผมแล้วบอกว่า “อย่าทำแบบนั้นอีก” เป็นช่วงเวลาที่สนุกดี

    • ผมสร้างสิ่งนี้ขึ้นมาเพื่อใช้แนวคิดเดียวกันในการ abuse การรัน qemu แบบซ้อนกัน: http://git.annexia.org/?p=supernested.git;a=summary
    • ผมไม่เข้าใจ นึกว่า # เป็นอักขระนำหน้าของ VM ระดับ 1 ไม่ใช่ระบบปฏิบัติการระดับ 0 หรือ host
      ถ้าใช้ # ส่งคำสั่งไปยังระดับ 0 แล้ว อักขระนำหน้าของระดับ 1 คืออะไรล่ะ
    • เหมือนพวกเราที่คุ้นกับ Linux แต่ไปทำงานบน Solaris โปรเซสค้าง และขี้เกียจหา PID เลยเรียก killall procname ไปตรง ๆ เครื่องตายทันที
      พอผู้ดูแลระบบมา ถึงได้รู้ว่าใน Solaris คำสั่ง killall ทำอย่างอื่น และถูกบอกว่าอย่าใช้มันอีก
  • ตอนเป็นนักศึกษาในมหาวิทยาลัยช่วงยุค 80 ผมได้เข้าใช้ VAX 11/750 หรือพูดให้แม่นคือโคลน 8750 Systime เพื่อทำงานเขียนโค้ด
    เทอร์มินัลสำหรับนักศึกษาอยู่ครึ่งหนึ่งของห้องใหญ่ ส่วนอีกครึ่งหนึ่งเป็นของพนักงาน IT ของมหาวิทยาลัย ถ้าฝั่งผู้ดูแล IT ไม่มีเทอร์มินัลว่าง พนักงานหนึ่งหรือสองคนก็มักจะมาใช้เทอร์มินัลของนักศึกษาที่อยู่อีกฝั่งของฉากกั้น
    วันหนึ่งระหว่างรอคอมไพล์โปรเจกต์ COBOL ผมเบื่อมากจนสงสัยว่าจะดักชื่อผู้ใช้กับรหัสผ่านของผู้ดูแลระบบได้ไหม ผมเลยเขียนสคริปต์ที่เลียนแบบพรอมป์ต์ล็อกอินบน CLI ได้สมบูรณ์แบบ ทั้งเสียงบี๊บและข้อความ
    สคริปต์จะล้างหน้าจอแล้วรอให้ป้อนชื่อผู้ใช้กับรหัสผ่าน พอมีการป้อนก็ส่งเมลมาหาผม แสดงข้อผิดพลาดว่าชื่อผู้ใช้/รหัสผ่านไม่ถูกต้อง จากนั้นก็ล็อกเอาต์เพื่อส่งต่อไปยังกระบวนการล็อกอินจริง
    หลังจากลองกับเพื่อนร่วมชั้นที่ไม่ทันสังเกตสองสามคนและแกล้งแบบไม่ระบุตัวตนนิดหน่อย ผมก็ตัดสินใจลองกับผู้ดูแลระบบจริง ๆ ผมล็อกอินเข้าเทอร์มินัลสองเครื่องที่พนักงาน IT มักใช้ แล้วรันสคริปต์ทิ้งไว้ พอกลับมาอีกไม่กี่ชั่วโมงต่อมา ก็พบว่าได้ รหัสผ่านล็อกอิน SYSTEM มาอย่างน่าตกใจและชวนกังวลเล็กน้อย
    ผมควบคุมเครื่องนั้นได้อย่างสมบูรณ์อยู่ประมาณหนึ่งเดือน และบางครั้งก็รันสคริปต์ใหม่ทุกครั้งที่รหัสผ่าน SYSTEM ถูกเปลี่ยน ผมไม่ได้บอกใคร และในวันสุดท้ายก่อนจบการศึกษา ผมล็อกอินเข้าไปลบสคริปต์เผื่อไว้ ตอนนั้นเป็นช่วงที่กฎหมายในอังกฤษเกี่ยวกับการเข้าถึงคอมพิวเตอร์โดยไม่ได้รับอนุญาตกำลังเข้มงวดขึ้น
    ผมใช้เวลามากมายสำรวจและเรียนรู้ VMS พร้อมกับคู่มือมหาศาลของเครื่องนั้น แต่ไม่มีใครสังเกตเห็นเลย

    • เพราะ การปลอมหน้าล็อกอิน แบบนี้ ตั้งแต่ Windows NT เป็นต้นมา ผู้ใช้จึงต้องกด Ctrl+Alt+Del ก่อนเพื่อเข้าสู่บริบทความปลอดภัย
      https://en.wikipedia.org/wiki/Control-Alt-Delete
    • นี่ก็เหมือนพิธีผ่านด่านอย่างหนึ่ง ผมเคยทำแบบเดียวกันบน VAX ของโรงเรียน แต่วันถัดมาก็เอารหัสผ่านทั้งหมดที่เก็บได้ไปให้ผู้ดูแลระบบและสารภาพ มีอยู่สองสามบัญชีที่มีสิทธิ์ SYSTEM ด้วย
      พวกเขาให้ผมได้งานแรก :-) นอกจากนี้ผมยังให้สิทธิ์ที่จำเป็นกับบัญชีที่ไม่ค่อยมีคนรู้จักหนึ่งหรือสองบัญชีไว้ล่วงหน้า เพื่อให้กู้สิทธิ์กลับมาได้แม้สิทธิ์ SYSTEM จะถูกถอดจากบัญชี “ทางการ”
      เป็นช่วงเวลาที่สนุกและก็ไร้เดียงสาด้วย ผมไม่ได้ใช้สิทธิ์ไปทำให้ระบบเละเทะ
    • ยอดเยี่ยมเลย ผมจำได้ว่าเคยเขียนโปรแกรม BASIC บน Ti-83 เพื่อเลียนแบบขั้นตอนล้างหน่วยความจำที่ครูเดินตรวจและกดเองตอนสอบพีชคณิต
      ตอนนี้ก็ไม่ค่อยน่าแปลกใจนักที่ผมหาเลี้ยงชีพด้วยการเขียนโปรแกรม
    • น่าสนใจที่การใช้โปรแกรมแทนหน้าล็อกอินของผู้ใช้ดูจะเป็นเรื่องค่อนข้างแพร่หลายในหมู่แฮกเกอร์รุ่นต่อมา
      ของผมเป็น Visual Basic 5 สำหรับ Windows ของโรงเรียน น่าจะบนเครือข่าย Novell การแก้ win.ini ให้มันรัน ก่อน หน้าล็อกอินจริงนั้นง่ายมาก
      วิธีคือเก็บชื่อผู้ใช้กับรหัสผ่านลงในไดรฟ์เครือข่ายที่แชร์หรือไฟล์ในเครื่อง แสดงข้อความ “รหัสผ่านผิด” แล้วค่อยออกไปยังพรอมป์ต์ล็อกอินจริง
      สุดท้ายปัญหาเกิดขึ้นเมื่อ “เพื่อน” ใช้เทคนิคเดียวกันคัดลอกไฟล์บัญชีเครือข่ายของคนอื่นไปยังบัญชีตัวเอง ผมเดาว่าระบบคงแจ้งเตือนผู้ดูแลเครือข่ายเมื่อโควตาเต็ม พอลองตรวจดูคร่าว ๆ ก็พบว่าเขาคัดลอกแม้กระทั่งไฟล์วิทยานิพนธ์ของครูไปด้วย และนั่นเป็นข้อห้ามใหญ่จริง ๆ
      เหตุการณ์นี้ทำให้ท้ายที่สุดผมได้งานด้านคอมพิวเตอร์งานแรกในตำแหน่งจูเนียร์ฝ่ายสนับสนุนเทคนิค/ผู้ดูแลเครือข่าย
    • ผมจำได้ว่าราวปี 1985 ที่ CMU มีนักศึกษาคนหนึ่งทำเรื่องแบบนั้นแล้วเจอปัญหาใหญ่
  • ปี 1988 ตอนอยู่มัธยม ผมกับเพื่อนพบช่องโหว่ใน NetWare ที่ถูกติดตั้งบน IBM PS/2 Model 30-286 จำนวน 30 เครื่องในห้องคอมพิวเตอร์ใหม่ ซึ่งทำให้สามารถแทรกโปรแกรมเข้าไปในลำดับบูตเครือข่าย autoexec ได้
    ก่อนหน้านั้น ผมเคยลองปรับรีจิสเตอร์ VGA ซึ่งตอนนั้นยังใหม่ และหาวิธีสลับจากโหมดข้อความ 80x25 ไปเป็นโหมดกราฟิก 320x200 256 สีได้โดยไม่มีการกะพริบหรือภาพแตก เพราะทั้งสองโหมดมีอัตรารีเฟรช 70Hz เหมือนกัน
    เพื่อนผมสร้าง TSR ที่โหลดภาพดิจิทัลของหน้าตัวตลกไว้ล่วงหน้าที่ A000:0000 แล้วประมาณ 4 นาทีต่อมาก็แสดงหน้าตัวตลกขึ้นมาสองสามเฟรม จากนั้นกลับไปยังหน้าจอที่ผู้ใช้กำลังทำงานอยู่ทันที
    เราถูกจับได้เพราะอดหัวเราะไม่ได้เมื่อเห็นนักเรียนในมุมห้องทำหน้าสับสนและตกใจ โดยเฉพาะนักเรียนคนหนึ่งที่เรียกครูมาดูหน้าจอนานกว่า 3 นาที แล้วจังหวะที่ครูหันหลังกลับ หน้าตัวตลกก็แวบขึ้นมาพอดี เป็นจังหวะเด็ดมาก
    เพื่อนคนนั้นชื่อ Brian และเป็นหนึ่งในคนที่ฉลาดที่สุดเท่าที่ผมเคยรู้จัก 10 ปีต่อมา เราสร้าง mobygames.com ขึ้นมาด้วยกัน

    • แผลง ๆ ของผมคือทำให้มีเสียงนกร้องเป็นครั้งคราว ปกติจะร้องห่างกันไม่กี่นาที และผสมค่าการสุ่มหลายแบบเพื่อให้แต่ละครั้งฟังต่างกัน
      ความถี่ของเสียงเปลี่ยนไปเรื่อย ๆ จนไม่มีโทนคงที่เลยแม้แต่ชั่วขณะเดียว ตอนนั้นลำโพงปกติก็แค่ส่งเสียงบี๊บได้ และผมมักเปิดทิ้งไว้บนเครื่องที่ไม่ได้ใช้งาน
  • ช่วงต้นยุค 90 ผมเป็นนักศึกษาปริญญาตรีปีหนึ่ง สาขาวิทยาการคอมพิวเตอร์ของมหาวิทยาลัยรัฐ ห้องคอมพิวเตอร์เต็มไปด้วย Sun SPARCstation IPC ที่รัน SunOS และมีระบบอีเมลพื้นฐานที่คนในภาควิชาใช้สื่อสารกัน
    คนที่เชี่ยวชาญเทคโนโลยีเริ่มสำรวจ Usenet กันแล้ว แต่สำหรับคนส่วนใหญ่ อีเมลคือทั้งหมดของโลกดิจิทัล
    วันหนึ่งผมกับเพื่อน ๆ ตัดสินใจจะแกล้งเล่นกัน และได้ไอเดียจากคำสั่ง fortune อันโด่งดังที่สุ่มพิมพ์คติพจน์ออกมา เราทำเชลล์สคริปต์ง่าย ๆ ที่สุ่มเลือกหนึ่งบรรทัดจากไฟล์ข้อความซึ่งมีประโยคตลก ๆ ไร้สาระที่พวกเราเขียนไว้ แล้วส่งเมลไปหาผู้ใช้แบบสุ่มในภาควิชาวิทยาการคอมพิวเตอร์ จากนั้นตั้งเป็นงาน cron ให้ส่งชั่วโมงละฉบับ
    ตอนแรกมันเป็นการแกล้งที่ harmless คนชอบข้อความเหล่านั้นและมักเอาไปแชร์กันในห้องแล็บ ที่มาของข้อความกลายเป็นหัวข้อสนทนาของภาควิชา แต่ไม่มีใครรู้ว่ามาจากไหน และพวกเราก็สนุกกับการดูเพื่อนร่วมงานกับอาจารย์เดากันว่าผู้ส่งปริศนาคือใคร
    แต่เรื่องบานปลายเมื่อคณบดีได้รับข้อความสุดเพี้ยนเป็นพิเศษว่า “ทำไมนักวิทยาการคอมพิวเตอร์ถึงสับสนระหว่างคริสต์มาสกับฮาโลวีน? เพราะ Oct 31 == Dec 25” เขาไม่เข้าใจมุก และคิดว่ามันเป็นข้อความลับหรือภัยคุกคามที่อาจเกิดขึ้น
    ทีม IT ของมหาวิทยาลัยถูกดึงเข้ามาสืบสวน และเกิดความวุ่นวายตลอดหนึ่งสัปดาห์เพื่อพยายามตามรอยที่มาของอีเมล ผมกับเพื่อน ๆ เฝ้าดูด้วยความกังวลว่าจะถูกจับได้และโดนไล่ออกหรือเปล่า
    สุดท้ายหลังจากนอนไม่หลับอยู่หลายวัน เราตัดสินใจสารภาพ ผมไปหาคณบดีและยอมรับ หลังจากเงียบไปนาน เขาก็เริ่มหัวเราะ ปรากฏว่าอาจารย์วิทยาการคอมพิวเตอร์คนหนึ่งอธิบายมุกให้เขาฟังแล้ว และเขากำลังรอดูว่าเมื่อไรพวกเราจะออกมายอมรับ
    เขามองการแกล้งครั้งนี้อย่างใจกว้าง และเห็นว่าความริเริ่มของพวกเรานั้นสร้างสรรค์ แต่ก็เตือนถึงผลลัพธ์ที่ไม่ตั้งใจของการแกล้งแบบนั้น
    มองย้อนกลับไป มันเป็นการแกล้งที่สนุกและน่าจดจำ และให้บทเรียนอันมีค่าเรื่อง จริยธรรมในการใช้เทคโนโลยี ทุกวันนี้ผมมักเล่าเรื่องนี้ให้นักศึกษาวิทยาการคอมพิวเตอร์ของผมฟัง เวลาสอนถึงความสำคัญของพฤติกรรมที่มีจริยธรรมในโลกดิจิทัล

  • เคยมีครั้งหนึ่งที่ผมต้องไปดูปัญหาให้ PC ของหัวหน้าภาควิชาคณิตศาสตร์ เพราะมันทำงานแปลก ๆ
    ปรากฏว่าเขาปล่อยให้ Prime95 ใช้รอบประมวลผลที่เหลือทั้งหมดบนคอร์หนึ่งของ Core 2 Duo มานาน 10 ปี และเครื่องนั้นจะบูตได้ก็ต่อเมื่อเย็นลงจนถึงอุณหภูมิห้องเท่านั้น

    • ผมใช้เวลานานเกินไปกว่าจะนึกออกว่า Prime95 มีประโยชน์อื่นนอกจาก stress test ด้วย
    • รอบประมวลผลที่ไม่ได้ใช้ก็คือรอบประมวลผลที่สูญเปล่า /s
  • เป็นการแกล้งที่เพื่อนสมัยเรียนปริญญาโทของผมทำกับเพื่อนอีกคน
    ระหว่างที่เหยื่อปล่อยให้ล็อกอินค้างไว้แล้วเดินออกจากเทอร์มินัลไปชั่วครู่ คนแกล้งก็เพิ่ม echo sleep -1 >> .login ลงในไฟล์ .login
    ไม่กี่วันต่อมา หลังจากมีคำสั่ง sleep ต่อท้ายมากกว่า 20 บรรทัด จึงชัดเจนว่าการล็อกอินของนักศึกษาคนนั้นมีอะไรผิดปกติอย่างมาก เวลาตั้งแต่ล็อกอินครั้งแรกไปจนถึงได้เทอร์มินัลที่ใช้งานได้ค่อย ๆ ช้าลงทุกวัน ทำให้เหยื่อหงุดหงิดมากขึ้นเรื่อย ๆ และในที่สุดเมื่อทนไม่ไหว การแกล้งก็ถูกพบ

    • ผมเข้ามาเพื่อรำลึกถึงการแกล้งแบบเดียวกัน :)
      ผ่านไปสักพัก ก็รู้สึกว่าการเพิ่มเวลา 1 วินาทีทุกครั้งที่ล็อกอินมันแนบเนียนเกินไป
      echo "echo sleep 1 >> ~/.login" >> ~/.login
  • เรื่องเก่า ๆ จำนวนไม่น้อยสุดท้ายก็มักลงเอยว่า “ไม่ได้มีเจตนาร้าย แค่ตั้งใจให้ตลก แต่ไม่คิดว่ามันจะแพร่กระจายมากขนาดนั้นหรือใช้ทรัพยากรมากขนาดนั้น” ซึ่งก็น่าสนุกดี
    Morris worm ก็คล้ายกัน แม้จะถกเถียงกันได้ แต่มองได้ว่ามันถูกออกแบบมาเป็นมัลแวร์ และอย่างน้อยเท่าที่เล่าต่อกันมา เจตนาไม่ได้ให้มันร้ายแรงถึงขนาดนั้น