- ระหว่างที่การเรียนในมหาวิทยาลัยฟลอริดาถูกยกเลิกเพราะ พายุเฮอริเคน Helene ผู้เขียนได้ทำการ รีเวิร์สเอนจิเนียริงเว็บไซต์ของ Waffle House
- ผู้เขียนทำให้ Waffle House Index ซึ่งเป็นดัชนีภัยพิบัติทางธรรมชาติแบบไม่เป็นทางการ กลายเป็นของใช้งานจริงพร้อมแผนที่ข้อมูลแบบเรียลไทม์
- ผู้เขียนพัฒนาเว็บไซต์ที่ติดตาม สถานะเปิด/ปิดของสาขาทั่วประเทศ โดยอัตโนมัติ ด้วย Python, Next.js และ Redis
- เมื่อโปรเจกต์ได้รับความสนใจบนโซเชียลและจากบุคคลมีชื่อเสียง ก็ลงเอยด้วย การบล็อกอย่างเป็นทางการและคำสั่งให้ยุติจาก Waffle House
- แม้เว็บไซต์จะต้องปิดลงเพราะการละเมิดเครื่องหมายการค้า แต่ผู้เขียนก็ได้สัมผัสถึง ความสนุกของการเขียนโปรแกรมและการเติบโต จากการใช้ข้อมูลและประสบการณ์ด้านวิศวกรรม
บทนำ: ที่มาและแรงจูงใจ
- ช่วงปลายเดือนกันยายน 2024 ขณะ พายุเฮอริเคน Helene กำลังเคลื่อนเข้าใกล้ฟลอริดา ผู้เขียนหมกมุ่นอยู่กับการวิเคราะห์เว็บไซต์ของ Waffle House
- ขณะที่ภายนอกผู้คนกำลังเร่งเสริมแนวกั้นบ้าน ผู้เขียนกลับโฟกัสกับการทำ Waffle House Index ให้ใช้งานแบบเรียลไทม์
- Waffle House Index เป็นดัชนีวัดความรุนแรงของภัยพิบัติแบบไม่เป็นทางการที่ FEMA (สำนักงานจัดการเหตุฉุกเฉินแห่งสหรัฐฯ) ใช้อ้างอิง โดยวัดจาก การเปิดหรือปิดของร้าน Waffle House ซึ่งเป็นวิธีที่ไม่เหมือนใคร
- แต่ในความเป็นจริง ไม่มี “ดัชนี” หรือแผนที่เรียลไทม์อย่างเป็นทางการให้ตรวจสอบได้ และข้อมูลที่เกี่ยวข้องก็มีเพียงบางส่วนที่กระจัดกระจายอยู่ใน Wikipedia หรือบทความข่าว
การรีเวิร์สเอนจิเนียริงและแนวทางเชิงเทคนิค
โครงสร้างทางเทคนิค
- Waffle House ใช้โครงสร้างที่นำ Next.js และ React Server Components มาใช้กับเว็บไซต์ข้อมูลตำแหน่งสาขา
- React Server Components ทำงานฝั่งเซิร์ฟเวอร์ ทำให้ฝั่งไคลเอนต์ไม่สามารถดู HTML ดิบ ได้โดยตรง
- หลังจากวิเคราะห์ซอร์สอยู่นาน ผู้เขียนพบ ข้อมูล JSON ในไฟล์เฉพาะ ที่ Next.js ใช้แทรกข้อมูลไปยังฝั่งไคลเอนต์
- ข้อมูลนี้มี สถานะของทุกสาขา (เปิด/ปิด, ความหนาแน่น ฯลฯ) อยู่ครบ
การเก็บและประมวลผลข้อมูล รวมถึงการสร้างเว็บไซต์
- ผู้เขียนสร้าง แผนที่สาขาที่ปิดแบบเรียลไทม์ ด้วยการผสาน Python สำหรับสแครปและแปลงข้อมูลแบบเบา ๆ, ฟรอนต์เอนด์ Next.js และแคช Redis
- ทำให้สามารถติดตามได้ว่าสาขา Waffle House ในพื้นที่ใดปิดอยู่ ซึ่งเท่ากับติดตาม สถานะภัยพิบัติรายภูมิภาค ได้ด้วย
การเปิดให้บริการและการแพร่กระจาย
- ผู้เขียนนำโดเมน wafflehouseindex[.]org ไป deploy บน Vercel และแชร์ผ่านทวีต
- ตอนนั้นผู้เขียนมีผู้ติดตามบนโซเชียลไม่ถึง 200 คน แต่เรื่องกลับแพร่กระจายอย่างรวดเร็วหลังจากได้รับ การตอบสนองโดยตรงจากบัญชีทางการของ Waffle House
- Waffle House ประกาศเน้นย้ำว่าข้อมูลบนเว็บไซต์ดังกล่าว ไม่เป็นทางการและอาจคลาดเคลื่อน พร้อมระบุว่าข้อมูลการปิดสาขาที่แท้จริงจะประกาศผ่านช่องทางทางการ
- หลังจากผู้เขียนทำ quote tweet แบบติดตลกเกี่ยวกับเรื่องนี้ Frank Luntz นักวิจารณ์การเมืองชื่อดังก็พูดถึงเว็บไซต์นี้โดยตรง ทำให้จำนวนผู้เข้าชมพุ่งสูง
การบล็อกและการตอบสนองทางกฎหมาย
- ต่อทวีตของ Frank Luntz ทีมการตลาดและกฎหมายของ Waffle House ตอบสนองอย่างรวดเร็ว โดยย้ำอีกครั้งว่าข้อมูลดังกล่าวไม่เป็นทางการและอาจผิดพลาด และ Frank ก็ลบทวีตในที่สุด
- หลังจากนั้น ผู้เขียนก็ถูก บล็อก (block) โดยบัญชี Twitter ของ Waffle House
- หลังพายุเฮอริเคนผ่านไป ผู้เขียนได้รับอีเมล แจ้งเตือนการละเมิดเครื่องหมายการค้าและคำสั่ง cease and desist จาก Waffle House
- ประเด็นปัญหาหลักไม่ใช่การเก็บข้อมูลหรือข้อมูลสาขาโดยตรง แต่เป็น การใช้เครื่องหมายการค้าของ Waffle House เช่น โลโก้
การตอบกลับและตอนจบ
- ผู้เขียนตอบกลับ Waffle House ด้วย น้ำเสียงแบบมีอารมณ์ขัน (เช่น เป็น ‘แฟนของ House’, เคารพราวกับเป็นธงชาติ เป็นต้น)
- แม้ผู้บริหารระดับสูงจะตอบกลับอย่างเป็นกันเอง แต่การ ปิดเว็บไซต์เพราะละเมิดเครื่องหมายการค้า ก็เป็นสิ่งที่หลีกเลี่ยงไม่ได้
- ผู้เขียนยังสอบถามถึงความเป็นไปได้ในการเปิดเว็บไซต์โดยคงแบรนด์ทางการไว้ แต่หลังจากนั้นก็ไม่ได้รับคำตอบเพิ่มเติม
บทสรุปและความรู้สึก
- นี่คือเส้นทางงานวิศวกรรมที่ผู้เขียนได้สัมผัสทั้ง ความสนุกของการเขียนโปรแกรม การใช้ข้อมูลอย่างสร้างสรรค์ และปฏิกิริยาจากชุมชนด้วยตัวเอง
- แม้จะเป็นช่วงเวลาสั้น ๆ แต่ก็เป็นประสบการณ์ที่ไม่เหมือนใครซึ่ง ภัยพิบัติ ข้อมูล โอเพนซอร์ส และแบรนด์ มาบรรจบกัน
- ผู้เขียนแสดงความขอบคุณต่อ Waffle House สำหรับความมีน้ำใจแบบนักกีฬา การสื่อสารที่ดี และความอดทนแม้จะมีการละเมิดเครื่องหมายการค้าเกิดขึ้น
ปิดท้าย
- ผู้เขียนขอบคุณ Moo, Kai และ Babgel GC ที่ช่วยตรวจแก้และเรียบเรียงต้นฉบับ
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ก่อนหน้านี้ฉันเคยทำเว็บที่ชี้ให้เห็นว่า Dannon / Danone ใช้ชื่อแบคทีเรียในโยเกิร์ตของตัวเองเป็นชื่อปลอมที่ฟังดูวิทยาศาสตร์ ฉันได้รับการติดต่อจากทีมกฎหมายของ Danone เกี่ยวกับเว็บนั้น แต่ฉันไม่ถอย รายละเอียดดูได้ที่นี่ คิดว่าถ้าลบแค่แบรนด์ Waffle House ออกก็น่าจะโอเค และอาจใส่คำปฏิเสธความรับผิดตัวใหญ่ไว้ด้านบนของเว็บเพื่อเน้นว่าข้ออ้างทางกฎหมายแบบนี้จริง ๆ แล้วน่าขันแค่ไหน
ขอเตือนว่า McBroken.com ก็ยังเปิดใช้งานได้ดีอยู่
เว็บไซต์ของคุณเป็นการรวบรวมสรุปข่าวจากสื่อมวลชนและบทสัมภาษณ์แพทย์บางส่วน มีการอ้างเรื่องชื่อที่ "แต่งขึ้น" กับ "ชื่อวิทยาศาสตร์ที่ถูกต้อง" แต่ไม่ได้อ้างกฎหมายใดเลยว่าห้ามผู้ผลิตใช้ชื่อแบบนี้บนฉลาก ดูเหมือนจะมองจากมุมสหราชอาณาจักร แต่ในฝั่งสหรัฐก็ดูไม่มีกฎของ FDA หรือ FTC ที่จะห้ามการใช้คำใหม่ลักษณะนี้ ในอนุกรมวิธานทางชีววิทยาก็มีการตั้งชื่อใหม่กันบ่อย และชื่อเรียกหรือชื่อเล่นของสปีชีส์ก็พบได้ทั่วไป วงการเภสัชกรรมหรือนักวิทยาศาสตร์ แม้แต่นักดาราศาสตร์ ก็สร้างชื่อที่ฟังดูเป็นละตินได้อย่างอิสระ อุตสาหกรรมอาหารเองก็ใช้คำอย่าง 'milk' และ 'water' ในความหมายที่ขยายออกไปภายใต้การรับรองทางกฎหมาย อาหารเสริมก็ยังตั้งชื่อแบรนด์ให้กับสูตรผสมได้โดยสอดคล้องกับกฎของ FDA สุดท้ายแล้วที่เว็บของคุณยังอยู่ได้ก็เพราะมันไม่ได้เป็นภัยคุกคามจริงต่อแนวปฏิบัติการติดฉลากเหล่านี้ อีกอย่าง ฉันก็อยากตั้งชื่อใหม่ให้ candida albicans ในลำไส้ของฉันเหมือนกัน - candida hackernewsensis
ฉันเคยมีคนรู้จักสมัยก่อนใช้ชื่อในฐานะ DJ ว่า Mupperfucker แล้วโดน Jim Henson Company ส่งคำขอให้หยุดใช้มา เข้าใจนะว่าเจ้าของเครื่องหมายการค้าต้องดำเนินการปกป้องสิทธิ์ของตัวเอง แต่มันก็มีความย้อนแย้งอยู่ ดูบทความนี้
ผมไม่แน่ใจนักว่าจะกล้าฟันธงเรื่องที่ว่า "ไม่มีไลฟ์ฟีด ไม่มีแผนที่ และไม่มีตัวนับจำนวนร้านที่ปิด" อ้างอิงได้ว่ามีรูปที่เกี่ยวข้องอยู่ใน[ลิงก์นี้](https://en.wikipedia.org/wiki/Waffle_House_Index#/media/File:FEMA_Waffle_House_Index_-_13_February_2014.jpg)
ถ้าปัญหามีแค่เรื่องการใช้เครื่องหมายการค้าหรือโลโก้ ก็แค่ลบส่วนนั้นออกแล้วไปเปิดต่อบนโดเมนอื่นไม่ได้หรือ? ตัวข้อความไม่ได้พูดถึงความไม่พอใจเรื่องการสแครปข้อมูลเลย
จริง ๆ ไม่น่าจำเป็นต้องปิดทั้งเว็บ แค่เอาโลโก้ออกก็น่าจะพอ
ถ้าตั้งชื่อกลาง ๆ อย่าง WaffleHurricaneTracker.org ก็น่าจะรอดจากประเด็นเครื่องหมายการค้าได้ และถ้าปัญหาคือเรื่องการสแครปข้อมูล ถ้าทำให้ข้อมูลไม่ระบุตัวตนก็อาจไม่จำเป็นต้องบอกชัดว่ามาจาก Waffle House ถ้าทำให้ดูเหมือนค่อย ๆ ดึงข้อมูลมาจากร้านอาหารเช้าหลายเจ้า ก็น่าจะพอไหว
ถ้าทำภาพหัวจดหมายบริษัทสวย ๆ แล้วพิมพ์ C&D ลงบนกระดาษดี ๆ ใส่กรอบไว้ คุณก็จะได้เล่าเรื่อง "ฉันเคยถูก Waffle House ขู่จะฟ้อง" ไปได้ตลอดชีวิต
ทุกครั้งที่ไป Waffle House มันคงกลายเป็นความทรงจำพิเศษจริง ๆ เป็นเรื่องเล่าที่เท่มาก C&D ก็น่ากลัวอยู่หรอก แต่ในความเห็นส่วนตัว ฉันว่าจดหมายของพวกเขาค่อนข้างสุภาพและตรงไปตรงมา อนึ่ง hafflewouse.com ยังว่างอยู่
ฉันยังสับสนว่า FEMA ใช้ระบบอัตโนมัติอยู่ หรือว่า Waffle House Index เป็นคอนเซปต์ที่ถูกทิ้งไปแล้ว
Waffle House Index ไม่เคยเป็นดัชนีอย่างเป็นทางการ มันเป็นแค่ตัวชี้วัดภายในแบบกึ่งล้อเล่นที่คนทำงานบรรเทาภัยพิบัติใช้กันเป็นประจำ เช่นพูดกันว่า "เมือง A โดนทอร์นาโด แต่ Waffle House ยังเปิดอยู่" ล่าสุดที่ได้รู้คือ FEMA จะติดต่อร้านท้องถิ่นอย่าง Waffle House ในพื้นที่ภัยพิบัติเพื่อตรวจสอบสถานการณ์ มันเป็นแนวคิดของแหล่งข้อมูลเสริมเพื่อประเมินความรุนแรงของภาวะฉุกเฉินมากกว่า ถึงอย่างนั้นก็ยังฝืนอยู่ถ้าจะเรียกมันว่า "ดัชนี" อย่างจริงจัง
มีข่าวบทความนี้ และ[ภาพจากวิกิพีเดีย](https://en.wikipedia.org/wiki/Waffle_House_Index?useskin=vector#/media/File:FEMA_Waffle_House_Index_-_13_February_2014.jpg) ที่พอใช้อ้างอิงได้
น่าจะดีถ้าระบบความสำเร็จแบบเกมที่ติดอยู่บนบล็อกสามารถถูกหยุดได้ด้วย C&D บ้าง เพราะบล็อกไม่ใช่เกม