1 คะแนน โดย GN⁺ 2023-10-23 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Dave Cutler ย้อนมอง ภูมิหลังการออกแบบของ Windows NT และวัฒนธรรมการพัฒนาของ Microsoft จากประสบการณ์ที่ต่อเนื่องตั้งแต่ RSX-11, VMS, Windows NT ไปจนถึง Azure และ Xbox
  • Windows NT ตั้งเป้าเป็น ระบบปฏิบัติการที่พกพาได้ และรองรับหลาย execution environment มาตั้งแต่ต้น และเมื่อ Windows 3.1 ขายได้ 16 ล้านชุดใน 6 เดือน Windows ก็กลายเป็นสภาพแวดล้อมหลักแทน OS/2
  • NT ยุคแรกจัดการกับหลายสถาปัตยกรรม เช่น i860, MIPS, x86, Alpha, PowerPC รวมถึง HAL, object manager และโครงสร้าง kernel/driver โดยโครงสร้างหลักจำนวนมากยังคงอยู่ใน Windows 11
  • ตอนเปิดตัว VMS ตั้งเป้า บั๊กที่ทราบอยู่เป็นศูนย์ ส่วนทีมพัฒนา NT ใช้ Friday WHIM เพื่อรักษาความเป็นอันหนึ่งอันเดียวกันขององค์กร แต่ในช่วง NT·Cairo·Longhorn·การรับมือด้านความปลอดภัยของ XP ตารางเวลา คุณภาพ และการแยก codebase กลายเป็นภาระใหญ่
  • Cutler มองว่าการแก้บั๊ก การทดสอบ การรักษาคุณภาพ และความยับยั้งชั่งใจที่จะไม่ใส่ฟีเจอร์ที่ไม่จำเป็น คือทัศนคติหลักของทีมซอฟต์แวร์ที่ดี

เส้นทางงานระบบปฏิบัติการก่อน Windows NT

  • Dave Cutler ได้สัมผัสกับระบบเรียลไทม์และการจำลองคอมพิวเตอร์ที่ DuPont ก่อนจะสนใจ ตัวคอมพิวเตอร์เอง มากกว่าเครื่องมือสำหรับแก้ปัญหา
    • เขาเคยทำโปรเจ็กต์จำลองกระบวนการผลิตแบบฟอร์มของ Scott Paper ด้วย GPSS 3 และเจอทั้งข้อผิดพลาดของบัตรและงานดีบัก
    • เพื่อลดข้อผิดพลาด เขาเขียนโปรแกรม Fortran และต่อมาก็เรียนรู้ถึงระดับแอสเซมบลีของ IBM 7044 ทำให้สนใจการทำงานภายในของคอมพิวเตอร์มากขึ้น
  • ในกลุ่มระบบเรียลไทม์ของ DuPont เขาเขียนโปรแกรมวิเคราะห์ข้อมูลการทดสอบแรงดึงของ Instron แบบอัตโนมัติ
    • โปรแกรมเก็บข้อมูลทำงานแบบเรียลไทม์ โดยอ่านข้อมูลทุก 1 มิลลิวินาทีหรือ 100 มิลลิวินาที
  • หลังจากนั้นเขารับงานกับระบบปฏิบัติการ Exec II ของ Univac 1107 และเข้าสู่การพัฒนาระบบปฏิบัติการอย่างจริงจัง
    • ทุกวันตอน 5 โมงเย็น เขาจะให้โอเปอเรเตอร์ออกไป แล้วใช้เวลา 2 ชั่วโมงรันโค้ดทดลองและทดสอบ
    • ในสภาพแวดล้อมที่แทบไม่มีดีบักเกอร์ เขาดีบักด้วยสวิตช์และ halt instruction

ช่วงอยู่ DEC: RSX, VMS, คอมไพเลอร์, PRISM

  • ที่ Digital Equipment Corporation เดิมเขาถูกจ้างมาทำ OS/45 แต่ไม่นานก็ได้รับมอบหมายให้ทำ RSX-11C
    • พื้นที่แอดเดรส 16 บิตของ PDP-11 ในเวลานั้นเป็นข้อจำกัดใหญ่ในสายตาของ Cutler
    • เขามองว่า RSX-11C เป็นระบบขนาดเล็ก และแม้เทียบกับมาตรฐานยุคนั้นก็ยังมีความสามารถจำกัด
  • การพัฒนา VMS บูตสแตรปขึ้นมาด้วยฮาร์ดแวร์ VAX และชั้นการรันแบบเข้ากันได้กับ PDP-11
    • VAX มีโหมด PDP-11 และมีชั้นที่ชื่อว่า Application Migration Executive สำหรับรันยูทิลิตีของ RSX-11M
    • ระบบไฟล์ Files-11 ก็ถูกทำใหม่บน VMS เพื่อคงความเข้ากันได้
    • ในช่วงต้นของการพัฒนา งานหลักอย่าง scheduler และ memory management ถูกทำบน hardware emulator
  • VMS ใช้ self-hosting เป็นวิธีรักษาคุณภาพ
    • เมื่อ Proto 3 เสถียรพอ ทีมพัฒนาก็ทำงานบนระบบนั้นโดยตรง
    • ถ้าระบบเกิด bug check คนหลายคนจะเดินไปที่เครื่อง หาเหตุด้วยดีบักเกอร์ แก้ไข แล้วบูตใหม่
  • เขาย้อนความว่า VMS ตอนเปิดตัวมี “บั๊กที่ทราบอยู่ 0 ตัว”
    • ไม่ได้หมายความว่า “ไม่มีบั๊ก” แต่หมายถึงพยายามแก้ทุกบั๊กที่รู้ก่อนถึงวันออก
    • แม้แต่ช่วงสุดท้ายก็ยังแก้ race condition ใน disk driver
  • หลัง VMS เขายังมีส่วนกับ PL/I compiler, C compiler backend, code generator, optimization และ register allocation
    • PL/I frontend ซื้อมาจากบริษัทใน Boston ส่วน backend พัฒนาบน VAX
    • งาน frontend บางส่วนทำบน Multics ที่ MIT แล้วค่อยย้ายข้อมูลด้วยเทป
  • ที่ DEC West เขาเข้าร่วมโปรเจ็กต์ Velon ซึ่งเป็นระบบเรียลไทม์ และโปรเจ็กต์ MicroVAX
    • Velon เป็นระบบที่ทดลองแนวคิดอย่าง user-mode driver, โครงสร้างแบบ message-oriented, multithreading และ multiprocessor
    • ใน MicroVAX 1 นั้น Cutler เขียน microcode ทั้งหมดเอง
  • โปรเจ็กต์ PRISM เป็นความพยายามของ DEC ในสถาปัตยกรรม RISC และวันถัดจากที่โปรเจ็กต์ถูกยกเลิก เขาตัดสินใจจะลาออกจากบริษัท
    • PRISM มีทั้งสถาปัตยกรรมเวอร์ชัน 32 บิตและ 64 บิต และยังมีระบบซอฟต์แวร์ทะเยอทะยานชื่อ Micah
    • หลัง PRISM ถูกยกเลิก เขาเคยคิดจะตั้งบริษัทเซิร์ฟเวอร์ แต่ทิศทางเปลี่ยนไปหลังได้ติดต่อกับ Microsoft

เข้าร่วม Microsoft และการออกแบบ Windows NT

  • การเข้าร่วม Microsoft ยังไม่แน่นอนแม้หลังคุยกับ Bill Gates แต่หลังจากกินอาหารเช้ากับ Steve Ballmer ที่ Denny’s ก็มีการตัดสินใจอย่างรวดเร็ว
    • Cutler มองว่า Ballmer คือคนสำคัญที่โน้มน้าวให้เขาเข้าร่วม Microsoft
  • เป้าหมายแรกเริ่มของ NT คือ ระบบปฏิบัติการที่พอร์ตได้ และรองรับหลาย execution environment
    • ตอนนั้นสภาพแวดล้อมเป้าหมายคือ OS/2 และ POSIX ก็เป็นตัวเลือกสำคัญ
    • แนวคิดตั้งต้นคือทำแกนระบบที่ให้บริการพื้นฐาน แล้ววางหลาย environment ไว้ด้านบน
  • จุดที่ทำให้ Windows กลายเป็น environment หลักของ NT คือความสำเร็จของ Windows 3.1
    • Windows 3.1 ขายได้ 16 ล้านชุดใน 6 เดือน และ Bill Gates ตัดสินว่า Windows จะเป็น environment หลักของระบบใหม่
    • การพัฒนา NT เคยดำเนินบน OS/2 ด้วย แต่ทีมก็อยาก self-host บน NT เองให้เร็วที่สุด
  • ชื่อ NT ย่อมาจาก “New Technology”
    • อาจมีความเชื่อมโยงเลือน ๆ ระหว่าง codename ของ i860 ที่ชื่อ N10 กับ NT แต่ Cutler มองว่า NT คือ New Technology
    • ฝ่ายการตลาดคัดค้านเพราะมองว่าชื่อ “เทคโนโลยีใหม่” อาจทำให้คนไม่กล้าซื้อ แต่ Cutler ก็ผลักดันชื่อ NT ต่อ
  • NT เวอร์ชันแรกรองรับหลายสถาปัตยกรรม CPU
    • มีการกล่าวถึง x86, MIPS R3000/R4000 และ Alpha
    • PowerPC เข้ามาในช่วง NT 3.5 หรือ Daytona และ Cutler ประเมินว่าทั้ง build ของ PowerPC และความสามารถในการแข่งขันของฮาร์ดแวร์นั้นไม่ดีนัก
  • HAL ของ NT เดิมทีเกือบจะเป็น ชั้น abstraction ของผู้ขาย มากกว่าชั้น abstraction ของฮาร์ดแวร์
    • ช่วงแรกทำเป็น DLL แยก เพื่อให้ผู้ขายจัดหา HAL ของตัวเองได้
    • Cutler มองว่าภายหลังน่าจะดีกว่าถ้าบิวด์ HAL ให้เป็นส่วนหนึ่งของระบบปฏิบัติการไปเลย
  • ใน kernel และ HAL ของ NT มีแอสเซมบลีไม่มากนัก
    • งานบางอย่างที่เรียกบ่อยและสำคัญต่อประสิทธิภาพยังต้องใช้งานแอสเซมบลีหรือ intrinsic
    • บน x64 ได้เลือกแนวทางใช้ intrinsic แทน inline assembly

วัฒนธรรมการพัฒนา NT, Cairo, Longhorn, ความปลอดภัยของ XP

  • ทีม NT จัด WHIM ทุกวันศุกร์เพื่อยึดองค์กรที่ขยายอย่างรวดเร็วให้เป็นหนึ่งเดียว
    • WHIM ย่อมาจาก Weekly Integration Meeting
    • ช่วงแรกผู้จัดการจะไปซื้อเบียร์กับมันฝรั่งทอดจาก Safeway แล้วจัดกันในห้องแล็บฮาร์ดแวร์ ก่อนจะขยายไปสู่สถานที่ใหญ่ขึ้นและมี catering
    • Cutler มองว่าคำบรรยายว่า NT พัฒนาด้วยการโหมใช้งานคนอย่างต่อเนื่องนั้นไม่จริง และทีมพยายามสร้างช่วงเวลาผ่อนคลายในทุกสัปดาห์
  • หลัง NT 3.5 มีการพา UI ของ Windows 95 มาสู่ NT ควบคู่ไปกับโปรเจ็กต์ Cairo
    • Tuckwila ถูกคงไว้เหมือนเป็น NT 4.0 สำรองชนิดหนึ่ง โดยใน daily build นั้น Tuckwila ออกมาเสถียร แต่ Cairo พังบ่อย
    • ฟีเจอร์ของ Cairo ค่อย ๆ ถูกตัดออก และสิ่งที่ Cutler จำได้ว่าเป็นผลจากการย้ายหลัก ๆ คือซอฟต์แวร์ file server และ Kerberos
  • NT 4.0 ยังคงเป็นเวอร์ชันที่ได้รับความนิยมมาก และ Cutler บอกว่าเขาเคยเจอคนที่ยังใช้งาน NT 4.0 อยู่
  • กำหนดการของ NT 3.1 ใช้เวลานานกว่า VMS
    • เขาบอกว่า VMS ถูกสร้างใน 2 ปีโดยทีมที่เก่งมากราว 20 คน
    • ส่วน NT ต้องทำมากกว่าเดิม และขอบเขตก็ใหญ่ขึ้นเมื่อเลิก i860 แล้วเพิ่ม MIPS, x86, Alpha และสถาปัตยกรรมอื่น ๆ
  • ในกระบวนการที่นำไปสู่ Longhorn และ Vista ปัญหาใหญ่คือ การแยก codebase
    • หลัง Windows 2000 codebase ของเซิร์ฟเวอร์และเวิร์กสเตชันแยกจากกัน ฝั่งเซิร์ฟเวอร์ต้องแก้ปัญหาด้านความปลอดภัยจำนวนมาก ขณะที่ฝั่งผู้ใช้ทั่วไปมีทั้ง build และการรันที่ไม่เสถียร
    • XP ประสบความสำเร็จมาก แต่ก็มีบั๊กจำนวนมาก และเมื่อปัญหาด้านความปลอดภัยรุนแรงขึ้น ก็ต้องทุ่มแรงอย่างมากกับการแก้บั๊กของ XP
    • กลุ่มของ Cutler แก้ security bug ที่เกี่ยวกับ XP ไปราว 5,000 รายการ
  • ส่วนขยาย x64 ของ AMD กลายเป็นจุดเปลี่ยนสำคัญภายใน Microsoft
    • AMD เสนอแนวคิดการขยายสู่ 64 บิตที่รุกล้ำน้อยกว่า และยังรันแอปพลิเคชัน 32 บิตได้เร็ว
    • Cutler ตัดสินใจทำเวิร์กสเตชันและเซิร์ฟเวอร์ 64 บิตบนฐาน codebase ฝั่งเซิร์ฟเวอร์ และนี่ไม่ใช่โปรเจ็กต์ที่บริษัทอนุมัติอย่างเป็นทางการตั้งแต่แรก
    • เมื่อเครื่อง AMD มาถึง เขาบูตครั้งแรกจาก CD และระบบ 64 บิตก็สามารถบูตและทำงานได้ทันที
    • microsoft.com ทดสอบเซิร์ฟเวอร์ 64 บิตราว 1 สัปดาห์ก่อนสลับใช้งานจริง และประเมินว่ามันเสถียรกว่าระบบ 32 บิตมาก
  • ท้ายที่สุด Longhorn ก็เปลี่ยนมาใช้ codebase x64 และ codebase นั้นก็สืบต่อมาจนถึงปัจจุบัน

โครงสร้างภายในของ Windows และโค้ดที่ยังคงอยู่ถึงปัจจุบัน

  • ใน Windows 11 ยังมีฟังก์ชันและโครงสร้างหลักจากยุค NT 3.5 หลงเหลืออยู่มาก
    • แกนอย่าง kernel code, โครงสร้าง memory management, โครงสร้าง process และ object manager ยังคงสืบต่อมา
    • สัดส่วนของโค้ดดั้งเดิมเมื่อเทียบกับโค้ดทั้งหมดลดลงเรื่อย ๆ แต่โครงสร้างหลักที่ทำหน้าที่เดิมยังคงอยู่จำนวนมาก
  • Cutler ยก object manager ของ NT ว่าเป็นเหตุผลสำคัญที่ทำให้ codebase นี้ดี
    • ต่างจากแนวคิด “everything is a file” ของ Unix ใน NT สามารถสร้าง descriptor ของ object type ใหม่ แล้วผนวกรวมเข้ากับ object manager เพื่อเพิ่ม object ของระบบปฏิบัติการชนิดใหม่ได้
    • object สามารถให้ความสามารถอย่าง synchronization และ access control ได้
  • handle table เป็นส่วนสำคัญด้านประสิทธิภาพ จึงถูกเขียนใหม่หลายครั้ง
    • handle translation เป็นประเด็นด้านประสิทธิภาพจริง
    • เขายกตัวอย่างว่าระบบงานของเขามีประมาณ 60 process, หลายร้อย thread และ handle เปิดอยู่ 150,000 รายการ
  • การที่ Task Manager ใหญ่ขึ้นถูกยกเป็นตัวอย่างของ code bloat
    • เดิม Task Manager คอมไพล์ออกมาได้ 85KB แต่ตอนนี้เป็น 4MB
    • ปัจจุบันมันแสดงข้อมูลเพิ่มขึ้นมาก เช่น CPU, เครือข่าย, ดิสก์ แต่ Cutler ไม่คิดว่าฟังก์ชันเพิ่มขึ้นมากพอจะสมกับขนาดที่โตขึ้น
  • การตัดสินใจย้าย graphics driver จาก user mode ไป kernel mode จำเป็นต่อประสิทธิภาพ แต่ก็มีช่วงเจ็บปวดมาก
    • ตอนแรก Cutler คัดค้านการย้ายไป kernel mode
    • user mode กับ kernel mode มีโมเดลการ synchronization ต่างกัน จึงไม่ใช่แค่ย้ายโค้ดแบบตรง ๆ และยังมีภาระจาก data structure กับ primitive แบบ 16 บิต
    • หลังจากนั้นความน่าเชื่อถือดีขึ้นมาก แต่ช่วงหนึ่งก็มีปัญหาจาก graphics driver ของผู้ขายจำนวนมาก

Azure, Xbox, xCloud

  • หลังส่งมอบระบบ x64 แล้ว Cutler ถึงกับบอกว่าจะลาออกจาก Microsoft เพราะปัญหา fcib แต่หลัง Steve Ballmer แนะนำให้พักร้อน เขาก็กลับมาในเดือนพฤศจิกายน 2005
    • fcib หมายถึง checked-in binary และการที่หลายกลุ่มเช็กอินไบนารีแทนซอร์สทำให้การพอร์ตทำได้ยาก
  • หลังจากนั้นเขาเข้าร่วมโปรเจ็กต์ Azure ระยะแรก
    • Ray Ozzie เห็นปัญหาว่าไม่มีโครงสร้างพื้นฐานร่วมสำหรับบริการบนคลาวด์หลายแบบ จึงเริ่มโปรเจ็กต์นี้
    • Azure ยุคแรกตั้งเป้าทำโครงสร้างพื้นฐานระดับแพลตฟอร์ม เช่น การ deploy แอปพลิเคชัน, การควบคุมการตั้งค่า, version management, restart, billing และ cloud file system
    • เขาอธิบายว่า AWS ให้สิ่งที่เน้น infrastructure เป็นหลัก ขณะที่ Microsoft ตอนแรกตั้งใจขายบริการระดับแพลตฟอร์ม
  • hypervisor รุ่นแรกของ Azure ถูกสร้างบนเทคโนโลยีที่ได้มาจากการซื้อกิจการ Connectix
    • Connectix มีผลิตภัณฑ์ Virtual PC และ Virtual Server และการพัฒนา hypervisor ก็เริ่มต้นมาแล้วในระดับต้น
    • ต่อมา hypervisor ของ Xbox ก็มาจาก Red Dog hypervisor ของ Azure
  • Xbox ทำงานด้วยโครงสร้าง 3 VM
    • host system เป็นเจ้าของอุปกรณ์ทั้งหมด และทำหน้าที่เป็น traffic cop ของการสื่อสารระหว่าง VM
    • presentation VM รับผิดชอบ window manager และระบบแสดงผล และทำงานต่อเนื่องตลอดเวลา
    • game VM จะเริ่มและหยุดตามแต่ละเกม และตัวเกมจะถูกแพ็กเกจมาพร้อม OS
  • โครงสร้างที่แพ็กเกจเกมมากับ OS นี้เอื้อต่อ backward compatibility
    • นักพัฒนาเกมจะแพ็กเกมพร้อม OS ของ GDK และเมื่อรัน VM ที่ตรงกันก็จะถูกเปิดขึ้นมาด้วย
    • วิธีนี้ช่วยหลีกเลี่ยงปัญหาที่การเปลี่ยนระบบปฏิบัติการทำให้เกมเดิมพัง
    • อย่างไรก็ตาม หากต้องใส่ฟีเจอร์ให้เกมเก่า ก็จำเป็นต้องอ้อมด้วยสิ่งอย่าง universal game OS
  • ฟังก์ชัน pause/resume ของ Xbox ทำงานด้วยวิธีบันทึกและกู้คืน VM
    • การโหลดเกมเกี่ยวข้องกับข้อมูลระดับกิกะไบต์ จึงใช้เวลานาน
    • pause/resume คือการบันทึกสถานะของ VM แล้วนำกลับคืนมาในภายหลัง
  • งานปัจจุบันที่ถูกพูดถึงคือ Linux VM และ graphics stack ที่ใช้เวลาว่างของคอนโซล xCloud
    • xCloud มีโครงสร้างแบบนำคอนโซล Xbox ไปจัดวางใหม่บนแร็กในดาต้าเซ็นเตอร์แล้วเปิดให้เข้าถึงจากระยะไกล
    • คอนโซลเป็นแบบ single tenant จึงมีผู้ใช้ได้ทีละคนและมีเวลาว่างเกิดขึ้น
    • เพื่อวางแผนรัน workload ด้าน machine learning ของ Microsoft ในช่วงที่ไม่ได้ใช้งาน จึงกำลังทำ Linux VM, Xbox hypervisor และ graphics stack อยู่

คุณภาพ การจัดการทีม และปรัชญาการพัฒนา

  • Cutler นำแนวคิดที่ว่า “คนที่ประสบความสำเร็จคือคนที่ทำสิ่งที่คนล้มเหลวปฏิเสธจะทำ” มาใช้กับทีมซอฟต์แวร์ด้วย
    • เขามองว่าแนวคิดแบบเขียนโค้ดแล้วไม่ทดสอบ, ยังมีตารางเวลาแต่เลิกงานตอน 5 โมงเป๊ะ, หรือไม่อยากแก้บั๊กของตัวเอง เป็นปัญหา
    • เขาให้ความสำคัญกับทัศนคติที่ลงมือทำสิ่งที่จำเป็นเพื่อให้โปรเจ็กต์สำเร็จ
  • เขาให้คุณค่ากับ “Thinker-doer” มาก
    • โดยอ้างคำพูดของ Brooks ว่าคนที่คิดอย่างเดียวมีมาก แต่คนที่ลงมือทำจริงมีน้อย และคนที่ทำได้ทั้งสองอย่างยิ่งหายาก
    • แม้แต่สถาปนิกก็ควรสร้างผลลัพธ์จริงที่ตอบโจทย์เป้าหมายและข้อจำกัด
  • เขาเคยอยากเขียนประโยค “ถ้าไม่ใส่เข้าไป ก็ไม่ต้องดึงออกมา” ไว้บนผนังห้องแล็บที่ University of Washington
    • ใช้เพื่อเน้นความยับยั้งชั่งใจที่จะไม่ใส่ฟีเจอร์ที่ไม่จำเป็น
  • ในสภาพแวดล้อมการพัฒนายุคแรก เครื่องมือดีบักยังย่ำแย่ จึงต้องมีทัศนคติที่พยายามลดความผิดพลาดตั้งแต่ต้น
    • ในอดีตบางครั้งถึงขั้นต้องใช้ logic analyzer หรือ oscilloscope
    • เขามองว่าเครื่องมือทุกวันนี้ช่วยลดความผิดพลาดเล็ก ๆ ได้มาก แต่แรงกดดันเรื่องคุณภาพไม่เหมือนในอดีต
  • เขามองว่าการทำหลายงานพร้อมกันทำได้ แต่ประสิทธิภาพสูงสุดมาจากการโฟกัสงานเดียว
    • เพราะ context switch มีต้นทุนด้านเวลา
    • อย่างไรก็ตาม เขาก็บอกว่าตัวเองยังสลับไปช่วยคนอื่นแก้ปัญหาที่ติดขัดหรือแก้บั๊กได้บ้าง

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

 
GN⁺ 2023-10-23
ความคิดเห็นจาก Hacker News
  • ผู้สัมภาษณ์อย่าง Dave Plummer เองก็เป็นคนที่น่าสนใจมากทีเดียว โดยเฉพาะวิดีโอเขียนโค้ดแนวเรโทรอย่าง https://www.youtube.com/watch?v=JlZe2JwrJqM และ https://www.youtube.com/watch?v=b0zxIfJJLAY นั้นดีมาก
    วิดีโอก็สนุก แถมเพลงประกอบกับไฟ RGB ยังให้บรรยากาศคริสต์มาสด้วย และยังทำให้ผมมอง Microsoft ต่างไปจากภาพที่เคยคุ้นอย่างสิ้นเชิง เขายอมรับความแปลก ๆ ของ Redmond แต่ก็พูดถึงงาน เพื่อนร่วมงาน และ Microsoft ด้วยความอบอุ่น
    แต่พอดูช่องนี้แล้ว อัลกอริทึม YouTube เหมือนจะเริ่มทำงานบางอย่าง ทำให้ฟีดแนะนำเต็มไปด้วยวิดีโอเกี่ยวกับ ADHD น่าจะเป็นเพราะวิดีโอเกี่ยวกับออทิซึมและ ADHD แต่ YouTube ก็น่าจะฉลาดพอจะรู้ได้ว่าที่ผมดูมีแค่วิดีโอเกี่ยวกับการเขียนโค้ดกับประวัติ Microsoft เท่านั้นไม่ใช่หรือ

    • Dave's Garage เป็นช่องที่มีคอนเทนต์น่าสนใจมากจริง ๆ และมีความรู้ลึกเกี่ยวกับ Microsoft/Windows โดยรวม
      แต่ถึงจะไม่อยากพูดแบบนี้ สิ่งที่เขาพูดในหัวข้อที่อยู่นอก Microsoft/Windows ควรฟังแบบกรองเยอะ ๆ โดยเฉพาะหลังจากคอมเมนต์ด้านล่าง [1]

      "ไม่ครับ Windows คือระบบปฏิบัติการซอร์สปิดที่ผู้คนนับล้านรัก Linux คือระบบปฏิบัติการโอเพนซอร์สที่มี binary blob ซึ่ง Linus Torvalds ใส่ไว้ในทุกรีลีส และมีแค่เขาเท่านั้นที่มีซอร์สโค้ดนั้น เลือกยาพิษของคุณเอาเอง ทั้งสองอย่างปิดเหมือนกัน เพียงแต่อันหนึ่งมีแค่ภาพลวงตาของความโปร่งใส"
      ตอนแรกผมนึกว่าเป็นของปลอม แต่พอดูลิงก์แล้วคอมเมนต์นั้นยังไม่ถูกลบ ขอย้ำว่า Dave's Garage มีคอนเทนต์ที่สนุกมาก แต่เรื่องที่อยู่นอกขอบเขตความเชี่ยวชาญของเขาควรมองอย่างกังขา
      [1] https://www.youtube.com/watch?v=PqWjq2SdzpI&lc=UgwFYyE8lw0hQ...

    • คำแนะนำของ YouTube แย่มาตลอด และพอรู้ว่าแค่ดูวิดีโอหัวข้อที่เป็นประเด็นถกเถียงครั้งเดียว ก็จะมีวิดีโอขยะในหัวข้อนั้นทะลักเข้ามา มันก็ทำให้ไม่อยากสำรวจอะไรเลย
      เหตุการณ์ล่าสุดที่บังคับให้ปิดตัวบล็อกโฆษณาก็ทำให้ตาสว่างเหมือนกัน โฆษณา YouTube นี่แย่มากจริง ๆ ถึงขั้นน่าอายเมื่อคิดว่ามีคนจริง ๆ ตอบสนองกับมัน YouTube ดูเหมือนจะเลิกแม้แต่จะแสร้งทำว่าอยากมอบประสบการณ์ผู้ใช้ที่ดีแล้ว
      ถึงอย่างนั้น ถ้าจะได้ดูของยอดเยี่ยมอย่างบทสัมภาษณ์ Dave Cutler นี้ ก็คุ้มที่จะคุ้ยโคลนสักหน่อย
    • ประมาณสามวันก่อน ผมดู Short เกี่ยวกับซูเฟล่ ในหน้าแนะนำไป 10 วินาที หลังจากนั้นครึ่งหนึ่งของคำแนะนำก็กลายเป็นวิดีโอซูเฟล่
      ไม่ได้ล้อเล่น และคำว่า “ครึ่งหนึ่ง” ก็แม่นพอสมควร เหมือนมีอะไรพัง หรือไม่ YouTube ก็เอาโมเดลภาษาขนาดใหญ่มาต่อเข้ากับเอนจินแนะนำแล้ว
    • Dave Plummer เพิ่งมีการนำเสนอที่ดีในงาน VCF ด้วย: https://youtube.com/watch?v=Ig_5syuWUh0
      ผมชอบดูเขาพูดแบบฉับพลันมากกว่าวิดีโอที่ตัดต่อมาอย่างดี
    • เมื่อเร็ว ๆ นี้ผมดูวิดีโออายุ 2 ปีที่บันทึกเรื่องคนคนหนึ่งเข้าร่วม Make-A-Wish และเด็กคนนั้นจากไปแล้ว เป็นวิดีโอที่เศร้ามาก
      หลังจากวิดีโอเดียวอันนั้น คำแนะนำก็เต็มไปด้วยเรื่องมะเร็ง ผู้ป่วยใกล้เสียชีวิต และเรื่องโรคภัยสารพัด วิดีโอนั้นไม่ได้เกี่ยวข้องกับคอนเทนต์ปกติของคนคนนั้นเลย และผมก็ไม่ได้ดูวิดีโอแนะนำแบบนั้นเลยสักอัน แต่มันก็ยังถูกดันเข้ามาไม่หยุด
  • ยังไม่ได้ดูวิดีโอนี้ แต่เมื่อหลายปีก่อนเคยอ่าน Showstopper[1] เลยตั้งตารออยู่
    สิ่งที่ยังจำได้เป็นพิเศษจากช่วงอายุยี่สิบต้น ๆ ตอนที่คิดว่าตัวเองต้องทำงานอยู่ตลอด คือส่วนที่เล่าว่า Dave ลาพักร้อนตรงเวลาทุกครั้ง โดยไม่ต้องถกเถียง และต้องลาจริง ๆ
    ต่อให้ไม่ชอบ Microsoft ก็เป็นไปได้ว่านั่นเป็นครั้งแรกที่ผมได้เห็นตัวอย่างจริงจังของคนที่มีความสามารถสูงและมีคุณสมบัติครบถ้วน แต่ไม่ได้ถูกบดใช้งานตลอด 24 ชั่วโมง
    แค่เขียนแบบนี้ก็ยังรู้สึกแปลกอยู่ แต่มันเป็นวิธีคิดที่สืบมาจากวัฒนธรรมชนบทและค้าปลีกทำนองว่า “ยิ่งลำบาก ยิ่งมีคุณธรรม”
    แม้ตอนนี้การพักผ่อนให้เป็นเรื่องเป็นราวก็ยังยาก และมักผัดออกไปได้ง่ายด้วยเหตุผลว่า X หรือ Y สำคัญกว่า ถึงอย่างนั้น พอนึกถึงมุมมองของ Dave ก็เป็น reminder ที่ดีว่า การพักผ่อนกับการทำ X ให้ดีไม่ใช่สิ่งที่ต้องเลือกอย่างใดอย่างหนึ่ง
    [1]: https://www.amazon.com/Show-Stopper-Breakneck-Generation-Mic...

    • อยากรู้มากขึ้นว่าวัฒนธรรม โหมงาน 24/7 แพร่หลายในสหรัฐฯ ได้อย่างไร และแนวคิดแบบลัทธิคาลวินหรือจริยธรรมการทำงานแบบโปรเตสแตนต์ให้มุมมองเชิงจิตวิญญาณและเชิงวัตถุอะไรได้บ้าง ฐานของมันย่อมมีเครื่องมือระบายแรงกดดันตามวาระรวมอยู่ด้วยแน่ ๆ
      “จงระลึกถึงวันสะบาโต ถือเป็นวันบริสุทธิ์… จงทำงานหนักหกวันและทำงานทั้งหมดของเจ้า แต่วันที่เจ็ดเป็นวันสะบาโตของพระยาห์เวห์พระเจ้าของเจ้า…”
      https://en.wikipedia.org/wiki/Protestant_work_ethic
      https://www.biblegateway.com/passage/?search=Exodus%2020&ver...
    • สุดท้ายคนที่ได้ประโยชน์หลัก ๆ คือ เจ้าของธุรกิจ ที่ใช้คติอีกแบบว่า “ให้เงินทำเงิน”
      ยิ่งพนักงาน “เอาจมูกจ่อหินลับ” และทำงาน “จนหลังคด” กำไรบริษัทก็ยิ่งเพิ่ม แต่ไม่จำเป็นต้องจ่ายเงินเดือนเพิ่ม พอสุขภาพพังพอจนทำงานไม่ได้ ก็แค่เปลี่ยนคนใหม่
      ขอโทษที่ตอบดึก ๆ เลยเขียนหยาบไปหน่อย แต่คิดว่าคนที่นี่คงเข้าใจได้โดยสัญชาตญาณอยู่แล้ว
    • พอเวลาผ่านไป ผมพบว่านักพัฒนาที่มีประสบการณ์สูงและทักษะสูงส่วนใหญ่ เข้มงวดและไม่รู้สึกผิด กับการลาพักร้อน แน่นอนว่าไม่ใช่ทุกคน แต่ก็เป็นอย่างนั้นค่อนข้างมาก เพียงแต่ผมใช้เวลานานกว่าจะยอมรับสัญญาณนั้น
      แล้วผมก็เจอ burnout และตอนนี้มองว่าการพักผ่อน รวมถึงการยึดวันทำงาน 8 ชั่วโมง ยกเว้นเหตุฉุกเฉินจริง ๆ ไม่ใช่แค่ความรับผิดชอบส่วนตัว แต่เป็นความรับผิดชอบในฐานะมืออาชีพด้วย เพราะมันลดความเสี่ยง burnout และ burnout ก็แย่ต่อทุกคนอย่างแท้จริง
    • ผมอ่านหนังสือเล่มเดียวกัน แต่ทำไมผมถึงได้ความประทับใจจากหนังสือว่า พนักงาน Microsoft ส่วนใหญ่ทำ OT โดยสมัครใจ จริง ๆ? ความรู้สึกคือ ที่ Microsoft ไม่จำเป็นต้องจ่ายค่าล่วงเวลา เพราะพนักงานคิดว่าตัวเองได้รับการชดเชยพอแล้วจากราคาหุ้นที่ขึ้น
  • เคยอ่านเจอว่าช่วงท้ายของการพัฒนา WinNT 3.1 มีใครบางคนทำ สกรีนเซฟเวอร์ ที่แสดงจอฟ้า อาจจะเป็นบน Usenet ก็ได้
    ก่อนหน้านั้นผมไม่เคยทำสกรีนเซฟเวอร์เลย แต่เพราะบั๊กในไดรเวอร์เครือข่ายภายในของ Microsoft ผมสามารถทำให้เครื่องพัฒนา WinNT ของผมขึ้นจอฟ้าได้อย่างสม่ำเสมอ
    ก็เลยอ่านเอกสารการเขียนสกรีนเซฟเวอร์ของ Windows จดค่าต่าง ๆ ที่แสดงบนจอฟ้าของผม แล้วทำสกรีนเซฟเวอร์ Windows ตัวแรกและตัวสุดท้ายของตัวเองแบบลวก ๆ
    เพื่อความสนุก ผมส่งเมลไปบอกกลุ่ม Windows NT ว่าผมทำอะไรไว้ แล้วไม่กี่สัปดาห์ต่อมากลุ่มบิลด์ NT ก็ตัดสินใจแกล้ง Dave Cutler
    พวกเขาติดตั้งสกรีนเซฟเวอร์จอฟ้าของผมบนบิลด์เซิร์ฟเวอร์เครื่องหนึ่ง ถอดเมาส์กับคีย์บอร์ดออก แล้วรอ
    Dave Cutler เดินมาดูสถานะบิลด์ NT ล่าสุด เปิดจอ แล้วเห็นจอฟ้า เขาขยับเมาส์แต่ไม่มีอะไรตอบสนอง กดคีย์บอร์ดก็ไม่มีอะไรตอบสนอง
    แล้วสิ่งที่ไม่คาดคิดก็เกิดขึ้น เขาเอื้อมมือไปกดปุ่ม power ของบิลด์เซิร์ฟเวอร์เพื่อรีบูตเครื่องเลย NOOOOOOOOOOOOOOOOOOOOO
    ผมไม่เคยได้ยินผลสะเทือนหรือผลลัพธ์ของการแกล้งครั้งนั้นเลย พลังอันยิ่งใหญ่มาพร้อมความรับผิดชอบอันใหญ่ยิ่ง

    • เป็นไปได้ยังไงที่พวกเขาคาดไม่ถึง?
    • สกรีนเซฟเวอร์ BSOD ตัวนั้นมาจาก Sysinternals ของ Mark Russinovich หรือเปล่า?
      ผมเองก็ติดตั้งมัน และเพื่อนร่วมงานหลายคนที่นั่งอยู่ใกล้ ๆ ก็ลงเหมือนกัน
      CTO แวะมาเพราะมีประชุมตอนเช้ามืด เห็นมันโผล่บนทุกจอ แล้วตื่นตระหนกนิดหน่อย คิดว่าเป็นไวรัสแพร่กระจายหรือบั๊กซอฟต์แวร์
    • Unix koans: https://news.ycombinator.com/item?id=7286973
  • ขอแนะนำหนังสือที่มีคนแนะนำไว้เมื่อไม่กี่สัปดาห์ก่อนที่นี่ด้วย คือ “Showstopper!: The Breakneck Race to Create Windows NT and the Next Generation at Microsoft
    ยังอ่านอยู่ แต่สนุกมากจริง ๆ และทำให้คิดว่าอยากได้มีส่วนร่วมในประวัติศาสตร์ช่วงนั้น โดยเฉพาะส่วนที่ dogfooding ระบบปฏิบัติการใหม่หมดจด เพียงแต่มันเกิดเร็วเกินช่วงเวลาของผมไปหลายปี

    • เป็นหนังสือที่ยอดเยี่ยม จำได้ว่าอ่านบนเครื่องบินตอนไปสัมภาษณ์ทีมระบบปฏิบัติการ
      หนังสือเล่มนั้นทำให้ผมฟังดูเหมือนรู้เรื่องมากกว่าความจริงเยอะ และทำให้ตื่นเต้นกับสาขานั้นทั้งหมดมากกว่าก่อนหน้านั้นไม่กี่วันมาก
      ได้ข้อเสนอมา แต่สุดท้ายก็ไม่ได้รับงานนั้น
    • https://www.amazon.com/Barbarians-Bill-Gates-Jennifer-Edstro... ก็เป็นไงบ้าง :)
    • ผมก็มาตั้งใจจะพูดถึงหนังสือเล่มนั้นเป๊ะ ๆ อ่านเมื่อไม่กี่เดือนก่อนและสนุกมากจริง ๆ
      ที่เกี่ยวข้องกันก็มีอันนี้ด้วย: https://blog.codinghorror.com/showstopper/
    • เป็นหนังสือที่ยอดเยี่ยมและมีอิทธิพลต่อผมมาก นานมากแล้วเคยทักไปบอกผู้เขียนทาง Twitter ว่าชอบแค่ไหน และเขาใจดีมากจริง ๆ
  • ส่วนที่น่าสนใจคือ Xbox hypervisor ไม่ได้ถูกสร้างโดยฝั่งเดสก์ท็อป แต่มีพื้นฐานจาก Azure และเกม Xbox ก็ไม่ได้พึ่งพาระบบปฏิบัติการเดี่ยวบนอุปกรณ์ แต่ถูกแพ็กเกจมาพร้อมกับระบบปฏิบัติการ ทำให้ใกล้เคียงกับคอนเทนเนอร์มากกว่าเล็กน้อย
    Dave บอกด้วยว่าเขากำลังทำให้เครื่อง Xbox Cloud Gaming ที่ว่างงานสามารถรันงานแมชชีนเลิร์นนิงได้ ไม่เคยคิดมาก่อนเลยว่า Azure กับ Xbox จะมีความเชื่อมโยงเชิงสถาปัตยกรรมแบบนี้

    • การ แพ็กเกจเกมพร้อมกับระบบปฏิบัติการทั้งชุด เป็นเรื่องที่พบได้บ่อยมากในคอนโซลทุกเครื่อง เพราะมีสมมติฐานว่าจะมีเพียงเกมเดียวที่รันแบบเรียลไทม์
    • มีวิดีโอที่น่าทึ่งเกี่ยวกับความปลอดภัยของ Xbox ซึ่งสุดโต่งมากจริง ๆ
      เช่น ไฟล์ปฏิบัติการของเกมถูกเข้ารหัสไว้บนแผ่นเกมจริง ๆ และแม้แต่การดัมป์ไบนารีจริงที่กำลังรันอยู่ก็แทบเป็นไปไม่ได้ RAM ก็ถูกเข้ารหัสด้วย
      อีกอย่างหนึ่ง เหตุผลหนึ่งที่ TPM สมัยใหม่ถูกย้ายเข้าไปอยู่ใน CPU ก็เพื่อไม่ให้ผู้คนดักฟังบัส TPM ได้เหมือนที่เคยทำกับ Xbox
    • hypervisor ของ Azure, Xbox และ Windows ล้วนเป็น Hyper-V ตัวเดียวกัน
  • เคยทำงานในทีมเคอร์เนล Windows และเรื่องที่ผมชอบที่สุดเกี่ยวกับ DC คือเขาเกลียด สถาปัตยกรรม Itanium มากจนแทบจะเป็นคนทำให้ x64 เกิดขึ้นจริง
    เขาทำงานร่วมกับ AMD และผลักดันเรื่องนี้อย่างจริงจัง โดยนั่งเขียนโค้ดต่อเนื่องในออฟฟิศมุมของตัวเอง

    • สิ่งที่น่าสนใจคือ Itanic เป็น “fetch” ที่ Intel พยายามผลักดันไม่ใช่ครั้งเดียว ไม่ใช่สองครั้ง แต่ถึงสามครั้ง iAPX 432, i860 และ Itanium ต่างก็เป็นตัวอย่างของแนวทางนี้
      แนวคิดคือ “เอาคำสั่งหลายคำสั่ง ซึ่งบางครั้งมีความยาวบิตแปรผัน มามัดรวมไว้ในเวิร์ดเดียว แล้วปล่อยให้คนเขียนคอมไพเลอร์หาชุดคำสั่งที่เหมาะที่สุด” ซึ่งจะทำให้การนำไปใช้งานเรียบง่ายขึ้นและอาจเร็วขึ้นได้ แต่ถ้าคอมไพเลอร์หาชุดคำสั่งที่เหมาะที่สุดนั้นไม่ได้ ก็จะช้ากว่าการออกแบบแบบดั้งเดิมอย่าง x86 เสียอีก
      ต้องมีใครสักคนในระดับสูงมากภายใน Intel ที่รักไอเดียนี้จริง ๆ เพราะตลอดประวัติศาสตร์ของ Intel ในฐานะผู้ผลิตไมโครโปรเซสเซอร์รายใหญ่ พวกเขาลองสามครั้งและล้มเหลวสามครั้ง
      ตอนนั้น AMD64 ถูกมองว่าเป็น “ของเดิมเพิ่มอีกหน่อย” จึงไม่ได้ถูกมองว่าเป็นไอเดียที่ดี แต่ก็ถือว่า Dave ทำได้ดีที่ช่วยกวาดกองของจิปาถะซึ่งแทบจะฆ่าการปฏิวัติ RISC ออกไป
    • นี่เป็นหนึ่งในบทความวิชาการด้านเทคนิคที่ผมชอบเกี่ยวกับจุดเริ่มต้นของ AMD x64 ถ้าสนใจภายในของระบบปฏิบัติการระดับล่าง นี่คือขุมทรัพย์เลย: https://github.com/tpn/pdfs/blob/master/A%20History%20of%20M...
    • มีช่วงสั้น ๆ ที่เขาเล่าเรื่องนั้น เขาพูดอย่างนิ่งมากเหมือนเป็นโปรเจกต์เสริม จนผมตกใจ
      หวังว่าสักวันหนึ่งผมจะสร้างอะไรที่น่าประทับใจระดับนั้นได้ในเวลาว่างบ้าง
    • สมัย Windows 2000/XP ผมเป็น SDET ในทีม Windows และเคยได้ยินว่าโค้ดเนมภายในของพอร์ต x64 คือ Sundown เพราะ Microsoft หวังจะโค่น Sun ในตลาดเซิร์ฟเวอร์
      น่าเสียดายสำหรับ Microsoft ที่ของรางวัลนั้นตกเป็นของ Linux บน x86-64 แทน
  • หนึ่งในช่วงเวลาที่ชี้ขาดที่สุดในอาชีพวิศวกรรมซอฟต์แวร์ของผม คือเมื่อ 6–7 ปีก่อน ตอนที่อ่าน ซอร์สโค้ด NT ที่รั่วไหล ควบคู่ไปกับ Showstopper[1]
    สิ่งที่ทำให้ชุดซอร์ส NT ที่รั่วไหลนั้นน่าหลงใหลเป็นพิเศษคือมีประวัติผู้เขียนครบถ้วน ทำให้เห็นได้ว่า Dave Cutler ทำงานกับไฟล์ไหนบ้าง หนังสือยังลงรายละเอียดเรื่องต่าง ๆ เช่น ที่มาของการมีเซ็กชันที่แบ่งหน้าได้ในโมดูลเคอร์เนล ซึ่งแค่นั้นก็น่าสนใจแล้ว
    ในหนังสือมีฉากที่ Cutler เข้ามาแก้รูทีนแอสเซมบลีบางตัว และในซอร์สโค้ดจริงก็สามารถเห็นได้ชัดเจนว่ารูทีนนั้นคืออะไร
    โค้ดของ Cutler เป็น C code ที่งดงามจริง ๆ และตอนนี้ก็คงยังเป็นแบบนั้น มันมีอิทธิพลอย่างมากต่อวิธีที่ผมเขียน C code สไตล์ NT
    [1]: https://www.amazon.com/Show-Stopper-Breakneck-Generation-Mic...

  • บทสัมภาษณ์ประวัติแบบปากเปล่าของ David Cutler จาก Computer History Museum ก็ดีมากเช่นกัน
    Part 1: https://youtu.be/29RkHH-psrY
    Part 2: https://youtu.be/SVgSLud50ss

    • เพราะดูอันนั้นแล้ว เลยกำลังรอดูว่าบทสัมภาษณ์ใหม่ครั้งนี้มีเนื้อหาต่างกันมากไหม
      ได้ดูบางส่วนของบทสัมภาษณ์ใหม่แล้ว แต่จนถึงตอนนี้ยังไม่แน่ใจว่ามีอะไรที่เพิ่งได้ยินเป็นครั้งแรกหรือเปล่า
  • เมื่อย้อนดูสิ่งที่ Dave ทั้งสองพูด จะเห็นว่าพวกเขาใส่ใจอย่างมหาศาลกับ การทำให้เสร็จแล้วปล่อยออกสู่ตลาด แต่แทบไม่มีการพูดถึงแผนระยะยาวหรือกลยุทธ์ด้านความปลอดภัยที่แท้จริงเลย
    ทั้งหมดเป็นเรื่องของการอยู่ภายใต้แรงกดดันทางธุรกิจ แล้วป้อนเนื้อเข้าเครื่องบดเพื่อทำไส้กรอกออกมา และลดความล้มเหลวให้อยู่ในระดับที่ยอมรับได้
    จึงไม่น่าแปลกใจที่สถานการณ์ของทั้งอุตสาหกรรมไม่ได้ดีขึ้น และไม่ได้หันไปในทิศทางที่ถูกต้อง เคยคิดว่าสักวันเราคงไปถึงความปลอดภัยแบบ capability-based แต่ตอนนี้ดูเหมือนว่าเราจะติดอยู่ตลอดกาลกับญาติห่าง ๆ ที่แทบไร้ค่าอย่างแฟล็กสิทธิ์ของแอปพลิเคชัน
    น่าเป็นห่วงอนาคตจริง ๆ

    • ผู้บริหารของบริษัทส่วนใหญ่ขับเคลื่อนด้วย แผนระยะสั้นและความคิดระยะสั้น อย่างแท้จริง และนั่นก็เป็นประโยชน์ต่ออาชีพของพวกเขาเอง
      ขอแค่มีไตรมาสหรือไม่กี่ปีก็พอที่ดีพอจะใช้เป็นเหตุผลเลื่อนจาก VP เป็น SVP หรือจาก SVP เป็น CEO ไม่มีใครไปโทษและลงโทษคนที่ย้ายไปบทบาทใหม่แล้วในอีก 3 ปีต่อมา เพราะการตัดสินใจสายตาสั้นที่เขาทำไว้ในบทบาทก่อนหน้า
      แต่นั่นไม่ได้หมายความว่า Cutler เป็นผู้บริหารแบบนั้น เพียงแต่เขาได้รับแรงกดดันจากเบื้องบนอย่างชัดเจน ทั้งแรงกดดันให้ปล่อยผลิตภัณฑ์และแรงกดดันให้รักษากระแสรายได้เอาไว้ อย่างที่เขาพูดช่วงต้นของการสัมภาษณ์ เขาเกลียดมากที่ต้องส่งมอบซอฟต์แวร์พร้อมบั๊ก ผิดหวังอย่างมากกับคุณภาพของวิศวกรซอฟต์แวร์ในอุตสาหกรรม และเกลียดมากที่ผู้จัดการโปรแกรม/โครงการปฏิบัติต่อบั๊กทุกตัวเหมือนเป็นเคสขอบที่เกิดได้ยาก เห็นด้วยกับทั้งสามข้อ
      บั๊กส่วนใหญ่ที่ผมส่งขึ้นไปก็ถูกมองว่าเป็น “เคสขอบ” เช่นกัน แต่ผมเจอปัญหานั้นทุกวัน และในฐานข้อมูลก็มีประเด็นซ้ำอยู่หลายรายการ หรือไม่บั๊กของผมก็ถูกทำเครื่องหมายว่าซ้ำกับรายงานที่มีมาก่อนอีกที
      ผมอยู่ในอุตสาหกรรมนี้มาหลายสิบปี และทั้งหมดอยู่ใน Big Tech จากที่เห็นมา แม้ว่าวิศวกรและผู้จัดการชั้นต้นจะผลักดันให้แก้บั๊กก่อนปล่อย และเรียกร้องให้ออกอัปเดตแก้บั๊กให้ถี่ขึ้น สุดท้ายก็ยังไม่เคยเห็นบริษัทไหนที่ไม่ยอมอ่อนให้กับแรงกดดันประเภทเดียวกันนี้
    • ในเวลานั้น Windows NT ได้รับการประเมินว่ามีความปลอดภัยดีกว่าคู่แข่ง จำได้ว่ามีการใช้วลี “Department of Defense C2 level security” กันบ่อย
      มันเป็นจุดขายใหญ่ แต่สำหรับผู้ใช้ส่วนใหญ่แล้วไม่ได้รู้สึกว่าเกี่ยวข้องเท่าไร จริง ๆ แล้วหลายคนรู้สึกว่า “ทำไมฉันต้องใช้สิ่งนี้ด้วย?” และมันทำให้ดูเหมือนไม่ใช่ระบบปฏิบัติการสำหรับ “ผู้ใช้ทั่วไป”
      แนวคิดเรื่องความปลอดภัยในช่วงต้นทศวรรษ 1990 กล่าวคืออะไรที่ทำให้ปลอดภัย และเกี่ยวข้องกับใครมากน้อยแค่ไหน ไม่สอดคล้องกับความคาดหวังหรือมาตรฐานสมัยใหม่ในวันนี้
    • หวังว่า WASI จะนำ ความปลอดภัยแบบ capability-based เข้าสู่กระแสหลักของคอมพิวเตอร์ที่ไม่ใช่มือถือ [0]
      การทำให้ถูกต้องอาจต้องใช้เวลาสักหน่อย ระหว่างนั้นก็หวังว่าทางเลือกแบบครึ่ง ๆ กลาง ๆ ที่ถอยหลังและยึดติดกับการคงสภาพเดิมโดยอิงรันไทม์เดียว จะไม่เป็นฝ่ายชนะ
      [0]: https://github.com/bytecodealliance/wasmtime/blob/main/docs/...
    • EULA ทำให้พวกเขาพ้นความรับผิดจากผลลัพธ์ทั้งหมด พอรับเงินไปแล้ว จะไปสนใจทำไมว่าจะเกิดอะไรขึ้นกับคอมพิวเตอร์ของคุณ?
      นี่อาจเป็นผลผลิตทางเศรษฐกิจที่ใหญ่ที่สุดที่ซอฟต์แวร์ “มอบให้” เรา ก็สัญญาผูกพันแบบ “เราจะรับเงิน แต่ไม่สัญญาอะไรทั้งนั้นนะ ไอ้หมูรอเชือด!” นั่นแหละ
    • ตลาดให้รางวัลกับบริษัทที่ไปถึงก่อน ส่วนความล้มเหลวด้านความปลอดภัย ตลาดและหน่วยงานกำกับดูแลก็แค่ตบข้อมือเบา ๆ แล้วจบ
      กลับกัน ถ้าออกสู่ตลาดเป็นรายที่สอง คุณจะถูกลงโทษ
  • ตั้งตารอฟังทั้งหมดนี้เลย
    ไม่ว่าจะรู้สึกอย่างไรต่อคนคนนั้นหรือบริษัทที่เขาทำงานให้ Cutler ก็เป็นวิศวกรซอฟต์แวร์ที่มีอิทธิพลอย่างมากจากผลงานบน OpenVMS และ Windows NT ผมคิดว่าเขาไม่ได้ถูกพูดถึงบ่อยเท่าบุคคลอย่างคนจาก Bell Labs, Stallman, Linus หรือ Stroustrup