1 điểm bởi GN⁺ 2025-05-29 | 1 bình luận | Chia sẻ qua WhatsApp
  • Vào thời điểm các lớp học ở Đại học Florida bị hoãn vì bão Helene, tác giả đã tiến hành reverse engineering website của Waffle House
  • Tác giả đã hiện thực hóa chỉ số thiên tai không chính thức mang tên Waffle House Index và xây dựng nó thành một bản đồ dữ liệu thời gian thực
  • Bằng Python, Next.js và Redis, tác giả phát triển một website tự động theo dõi tình trạng mở/đóng cửa của các cửa hàng trên toàn quốc
  • Khi dự án thu hút sự chú ý trên mạng xã hội và từ người nổi tiếng, nó đã dẫn tới việc Waffle House chính thức chặn và yêu cầu dừng hoạt động
  • Dù website phải đóng vì vi phạm thương hiệu, tác giả vẫn cảm nhận được niềm vui của việc lập trình và sự trưởng thành từ trải nghiệm khai thác dữ liệu và kỹ thuật

Mở đầu: bối cảnh và động lực

  • Cuối tháng 9/2024, khi bão Helene đang tiến gần Florida, tác giả lại mải mê phân tích website của Waffle House
  • Trong khi bên ngoài mọi người đang tất bật gia cố nhà cửa, tác giả tập trung vào việc hiện thực hóa Waffle House Index theo thời gian thực
  • Waffle House Index là một chỉ báo không chính thức về mức độ nghiêm trọng của thiên tai, từng được FEMA (Cơ quan Quản lý Tình trạng Khẩn cấp Liên bang Mỹ) tham chiếu, với cách đo khá đặc biệt: dựa vào việc các cửa hàng Waffle House đang mở hay đóng
  • Tuy vậy, không hề tồn tại một “chỉ số” hay bản đồ thời gian thực nào có thể kiểm chứng chính thức; những đề cập liên quan chỉ rải rác trên Wikipedia hoặc trong một vài bài báo

Reverse engineering và cách tiếp cận kỹ thuật

Cấu trúc kỹ thuật

  • Waffle House sử dụng Next.js và React Server Components cho website thông tin vị trí
  • React Server Components chạy phía máy chủ nên phía client không thể trực tiếp xem được HTML thô
  • Sau thời gian dài phân tích mã nguồn, tác giả phát hiện ra dữ liệu JSON trong một tệp cụ thể mà Next.js dùng để chèn dữ liệu sang client
  • Trong dữ liệu đó có chứa trạng thái của từng cửa hàng (mở/đóng, mức độ đông khách, v.v.)

Thu thập, xử lý dữ liệu và triển khai website

  • Tác giả xây dựng bản đồ cửa hàng đóng cửa theo thời gian thực bằng cách kết hợp scraping nhẹ và xử lý dữ liệu bằng Python, frontend bằng Next.js, cùng cache Redis
  • Nhờ đó, có thể biết khu vực nào có Waffle House đóng cửa, tức là gần như theo dõi được tình trạng thiên tai theo từng vùng

Công khai dịch vụ và lan truyền

  • Tác giả triển khai tên miền wafflehouseindex[.]org trên Vercel và chia sẻ bằng một tweet
  • Khi đó, tài khoản mạng xã hội của tác giả còn chưa tới 200 người theo dõi, nhưng dự án đã lan rộng rất nhanh sau khi nhận được phản hồi trực tiếp từ tài khoản chính thức của Waffle House
  • Waffle House nhấn mạnh rằng thông tin trên website này là không chính thức và có sai sót, đồng thời cho biết thông tin đóng cửa thực tế sẽ được thông báo qua các kênh chính thức
  • Sau một tweet trích dẫn mang tính đùa vui của tác giả, nhà bình luận chính trị nổi tiếng Frank Luntz đã trực tiếp nhắc đến website, khiến lượng truy cập tăng vọt

Bị chặn và phản ứng pháp lý

  • Trước tweet của Frank Luntz, đội marketing và pháp lý của Waffle House đã phản ứng rất nhanh, một lần nữa khẳng định đây là thông tin không chính thức/có sai sót, và Frank cũng xóa tweet
  • Sau đó, tác giả đã bị block bởi tài khoản Twitter của Waffle House
  • Sau khi cơn bão đi qua, tác giả nhận được email cảnh báo vi phạm thương hiệu và yêu cầu chấm dứt hoạt động (cease and desist) từ Waffle House
  • Vấn đề chính không phải là việc thu thập dữ liệu hay bản thân thông tin cửa hàng, mà là việc sử dụng thương hiệu Waffle House như logo

Phản hồi và kết thúc

  • Tác giả đã trả lời Waffle House bằng giọng điệu hài hước (tự nhận là “fan của House”, xem thương hiệu như quốc kỳ và luôn tôn trọng nó, v.v.)
  • Một lãnh đạo cấp cao đã gửi thư hồi đáp thân thiện, nhưng việc đóng website do vi phạm thương hiệu vẫn là điều không thể tránh khỏi
  • Tác giả cũng hỏi liệu có thể tiếp tục mở website nếu vẫn giữ thương hiệu chính thức hay không, nhưng sau đó không nhận thêm phản hồi nào nữa

Kết luận và cảm nghĩ

  • Đây là một hành trình kỹ thuật cho tác giả được trực tiếp trải nghiệm niềm vui của lập trình, khả năng tận dụng dữ liệu một cách sáng tạo, và phản ứng từ cộng đồng
  • Dù chỉ diễn ra trong thời gian ngắn, đây vẫn là một trải nghiệm độc đáo nơi thiên tai, dữ liệu, mã nguồn mở và thương hiệu giao thoa với nhau
  • Tác giả bày tỏ sự cảm kích trước tinh thần fair-play và khả năng giao tiếp của Waffle House, cũng như sự kiên nhẫn của họ dù đã xảy ra vi phạm thương hiệu

Kết

  • Tác giả gửi lời cảm ơn đến Moo, Kai và Babgel GC vì đã giúp hiệu đính và biên tập bài viết

1 bình luận

 
GN⁺ 2025-05-29
Ý kiến trên Hacker News
  • Trước đây tôi từng làm một trang chỉ ra rằng Dannon / Danone đang dùng một cái tên nghe có vẻ khoa học nhưng thực chất là bịa ra cho loại vi khuẩn trong sữa chua của họ. Bộ phận pháp lý của Danone đã liên hệ với tôi về trang đó, nhưng tôi không lùi bước. Xem chi tiết tại đây. Tôi nghĩ nếu chỉ gỡ thương hiệu Waffle House thì có lẽ vẫn ổn, và còn có thể đặt một tuyên bố miễn trừ trách nhiệm thật lớn ở đầu trang để nhấn mạnh những lập luận pháp lý kiểu này thực sự nực cười đến mức nào

    • Nhắc lại là McBroken.com vẫn đang hoạt động tốt

    • Trang web của bạn là nơi tổng hợp các bản tóm tắt từ truyền thông đại chúng và một số cuộc phỏng vấn với bác sĩ. Có những tuyên bố về "tên bịa ra" và "danh pháp khoa học chính xác", nhưng không trích dẫn luật nào cấm nhà sản xuất dùng các tên này trên nhãn. Có vẻ như cách tiếp cận là từ góc nhìn Anh, nhưng ở Mỹ thì dường như FDA hay FTC không có quy định nào cấm dùng các từ mới như vậy. Trong phân loại sinh học, tên mới được tạo ra rất thường xuyên, và tên thay thế hay biệt danh cho loài cũng rất phổ biến. Ngành dược, các nhà khoa học, thậm chí cả các nhà thiên văn học cũng tự do tạo ra những cái tên nghe như tiếng Latin. Ngành thực phẩm thậm chí còn mở rộng nghĩa của cả 'milk' và 'water' để sử dụng với sự chấp thuận hợp pháp. Thực phẩm bổ sung cũng hoàn toàn phù hợp với quy định FDA khi gắn tên blend mang thương hiệu. Rốt cuộc, lý do trang của bạn còn tồn tại là vì nó không thực sự đe dọa những thông lệ ghi nhãn này. Nhân tiện, tôi cũng muốn đặt tên mới cho candida albicans trong ruột mình — candida hackernewsensis

  • Tôi từng có một người quen dùng nghệ danh DJ là Mupperfucker rồi bị Jim Henson Company gửi yêu cầu chấm dứt sử dụng. Tôi hiểu rằng chủ sở hữu nhãn hiệu phải có hành động để bảo vệ quyền của họ, nhưng chuyện đó vẫn khá mỉa mai. Xem bài liên quan

  • Khó mà khẳng định chắc chắn về chuyện "không có live feed, không có bản đồ, cũng không có bộ đếm nhà hàng đóng cửa". Tham khảo thêm [liên kết này](https://en.wikipedia.org/wiki/Waffle_House_Index#/media/File:FEMA_Waffle_House_Index_-_13_February_2014.jpg)

  • Nếu vấn đề chỉ đơn giản là do dùng nhãn hiệu hay logo, thì chẳng phải chỉ cần gỡ phần đó đi rồi tiếp tục vận hành ở một domain khác là được sao? Chẳng thấy họ phàn nàn gì đặc biệt về việc scrape dữ liệu cả

    • Tôi là tác giả đây, sau khi nhận được C&D thì cách thu thập dữ liệu của tôi bị chặn lại rồi (có vẻ bài blog đã bỏ sót chi tiết này). Tôi có hỏi làm sao để tiếp tục duy trì trang nhưng không nhận được câu trả lời, và sau đó tôi nghĩ nếu vẫn tiếp tục chạy chỉ với việc bỏ logo Waffle House đi thì có lẽ lại sẽ nhận thêm một C&D khác, nên thay vì tiếp tục trò mèo vờn chuột tôi đã gỡ hẳn trang xuống
  • Có lẽ không cần phải gỡ cả site, chỉ cần bỏ logo là đủ

    • Ở Mỹ, chỉ riêng một lời đe dọa pháp lý cũng có thể tốn rất nhiều tiền. Nếu là sinh viên đại học thì bạn thường không có luật sư và cũng thiếu kiến thức pháp lý, nên đơn giản là gỡ site xuống sẽ dễ hơn và an toàn hơn nhiều. Dịch vụ pháp lý miễn phí trong trường đại học cuối cùng cũng có khả năng chỉ đưa ra lời khuyên mang tính phòng thủ
  • Một cái tên trung tính như WaffleHurricaneTracker.org có lẽ đã sống sót mà không vướng vấn đề nhãn hiệu. Còn chuyện scrape dữ liệu thì nếu dữ liệu được ẩn danh, có thể đã không làm lộ rõ là lấy từ Waffle House, và nếu tạo cảm giác như đang từ từ lấy dữ liệu từ nhiều quán ăn sáng khác nhau thì có lẽ cũng ổn

  • Nếu làm một hình ảnh giấy tiêu đề công ty thật đẹp rồi in C&D ra trên giấy xịn và đóng khung, thì bạn có thể kể suốt đời câu chuyện "Tôi từng bị Waffle House dọa kiện"

  • Mỗi lần ghé Waffle House sau này chắc sẽ là một kỷ niệm thật đặc biệt. Cũng là một câu chuyện hay để kể. C&D thì đúng là đáng sợ, nhưng theo ý kiến cá nhân của tôi thì lá thư của họ khá lịch sự và thẳng thắn. Nhân tiện, hafflewouse.com vẫn còn khả dụng

  • Tôi thấy hơi khó hiểu không biết FEMA có đang dùng hệ thống tự động nào không, hay Waffle House Index thực ra đã là một khái niệm bị bỏ xó rồi

    • Waffle House Index chưa bao giờ là một chỉ số chính thức. Nó chỉ là một kiểu chỉ dấu nội bộ có phần đùa vui mà những người làm cứu trợ thiên tai vẫn hay nói với nhau, kiểu như "Thị trấn A vừa bị lốc xoáy nhưng Waffle House vẫn mở cửa". Theo điều tôi biết gần đây thì FEMA có liên hệ với các quán ăn địa phương như Waffle House ở khu vực thiên tai để kiểm tra tình hình. Nó giống một nguồn dữ liệu bổ sung để đánh giá mức độ nghiêm trọng của tình trạng khẩn cấp. Dù vậy, gọi nó một cách nghiêm túc là một "chỉ số" thì vẫn hơi quá

    • bài báo[hình trên Wikipedia](https://en.wikipedia.org/wiki/Waffle_House_Index?useskin=vector#/media/File:FEMA_Waffle_House_Index_-_13_February_2014.jpg) để tham khảo

  • Sẽ hay nếu có thể dùng C&D để chặn hệ thống thành tựu gắn như game trên blog, vì blog không phải là game