คำสารภาพ

ความจริง: ไม่มีอะไรช้าจริงสักนิดเดียว

เว็บนี้คือ performance art ฝั่ง client ล้วนๆ ไฟล์ทั้งหมดที่โหลดจริง (HTML/CSS/JS) มีขนาดเล็กมาก โหลดเสร็จในเวลาไม่ถึงวินาทีเหมือนเว็บ static ทั่วไป — ไม่มีการหน่วง network, ไม่มีการเผา bandwidth ของใครจริงๆ ทุก "ความช้า" ที่คุณเจอคือ setTimeout/setInterval ปลอมๆ ที่รันอยู่ในเบราว์เซอร์คุณเองทั้งหมด

เบื้องหลังฉากทั้ง 7

สถิติ "local" ที่หน้าตรงๆ

แอปนี้ไม่มี backend เก็บสถิติใครทั้งนั้น สถิติที่เห็น (จำนวนครั้งที่ถึง certificate, เวลารอสะสม) เก็บด้วย localStorage ในเครื่องคุณเองล้วนๆ — เลยพูดตรงๆ ว่า "จากผู้ใช้ทั้งหมด 1 คนบนเครื่องนี้" เพราะมันคือความจริง 100% สิ่งเดียวที่นับ "คนอื่น" ได้จริงคือ event ที่ยิงไป Umami analytics ตอนถึง certificate (นับ pageview/event รวมได้ แต่ไม่ผูกกับตัวตนใคร)

รีเฟรชกลางทาง?

มีการตรวจจับด้วย sessionStorage — ถ้าคุณรีเฟรชระหว่างทาง เว็บจะรู้ (เพราะ flag ยังอยู่ใน session) แล้วเริ่มฉากที่ 1 ใหม่พร้อมข้อความแซวที่รุนแรงขึ้นเรื่อยๆ ตามจำนวนครั้งที่รีเฟรช

แรงบันดาลใจ

มาจากความย้อนแย้งง่ายๆ: ทุกปีอินเทอร์เน็ตเร็วขึ้น เว็บไซต์แข่งกันลด Largest Contentful Paint ให้เหลือ เศษเสี้ยววินาที แต่ในความเป็นจริง experience ของเว็บจำนวนมากก็ยังรู้สึกช้าอยู่ดี (ads, dark patterns, loading spinner ที่ค้าง) — เว็บนี้เลยขอเอาความหงุดหงิดนั้นมาทำเป็นเรื่องตลก แทนที่จะบ่น ก็จำลองมันขึ้นมาแบบ "ควบคุมได้" ให้คุณหัวเราะแทนการด่า

ทำไมต้อง TDD แค่บางไฟล์

lib/script.ts (state machine 7 ฉาก, การนับ tap ข้าม, ตัวนับรีเฟรช) และ lib/cert.ts (จัดข้อความ+เวลาในใบประกาศ) คือ "ตรรกะ" ที่ผิดพลาดแล้วพังทั้งประสบการณ์ได้ เลยเทสต์ไว้แน่นๆ ส่วนการ "แสดงผลละคร" ของแต่ละฉาก (SVG, canvas, ข้อความตลก) เป็นงานสร้างสรรค์ล้วนๆ ที่ไม่มี "ถูก/ผิด" แบบทดสอบอัตโนมัติได้ เลยปล่อยให้เป็นโค้ด manual ตามที่ตาเห็น