2 คะแนน โดย GN⁺ 2025-11-05 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ทุกครั้งที่ค้นหาตั๋วเครื่องบินราคาประหยัด จะมีขั้นตอนที่ซับซ้อนซึ่งต้องตรวจสอบข้อกำหนดหลายอย่างพร้อมกัน เช่น วีซ่า หนังสือเดินทาง และเงื่อนไขการเป็นผู้มีถิ่นที่อยู่ทางภาษี
  • ระบบตรวจคนเข้าเมืองและภาษีของแต่ละประเทศคำนวณ ‘จำนวนวันพำนัก’ ด้วยเกณฑ์ที่ต่างกัน จนทำให้เกิดความสับสน
  • เพื่อแก้ปัญหานี้ จึงพัฒนาแอป ‘Residency’ ที่ตรวจสอบประวัติการเดินทางและกฎเกณฑ์เหมือนคอมไพเลอร์
  • แอปจะ คำนวณบนเครื่องในเครื่องโดยตรง และตรวจสอบ วันหมดอายุหนังสือเดินทาง วีซ่า IDP และเงื่อนไขการเป็นผู้มีถิ่นที่อยู่ทางภาษี โดยอัตโนมัติ
  • แอปทำหน้าที่เป็น เครื่องมือที่ช่วยจัดการประวัติการเดินทางของแต่ละคนและกฎทางปกครองอย่างสอดคล้องกัน เพื่อระบุความเสี่ยงล่วงหน้าก่อนข้ามพรมแดน

20 นาทีก่อนซื้อตั๋วเครื่องบิน

  • เมื่อผู้เขียนพบตั๋วไปไอซ์แลนด์ราคาถูกมาก ก็ต้องรีบตรวจสอบ วีซ่า หนังสือเดินทาง ใบขับขี่ และเงื่อนไขการเป็นผู้มีถิ่นที่อยู่ทางภาษี ทันที
    • กระบวนการนี้ใช้เวลาราว 20 นาที และไม่ใช่แค่การเปรียบเทียบราคาอย่างเดียว แต่เป็นการทบทวนเงื่อนไขทางปกครองหลายอย่างพร้อมกัน
  • ตลอด 10 ปีที่ผ่านมา ผู้เขียนจัดการเรื่องวีซ่าและการยื่นขอสัญชาติต่าง ๆ โดยอาศัย สเปรดชีต ที่บันทึกประวัติการเดินทางไว้
  • แต่เห็นว่าวิธีนี้ไม่มีประสิทธิภาพ จึงเริ่มออกแบบระบบที่ตัดสินโดยอัตโนมัติได้ว่า “ทริปนี้จะก่อปัญหาหรือไม่?

‘สถานะ(State)’ ที่ระบบไม่บอกคุณ

  • ระบบต่าง ๆ เช่น Schengen, สหราชอาณาจักร, ถิ่นที่อยู่ทางภาษี, ระยะเวลาที่หนังสือเดินทางยังใช้ได้ ต่างใช้เกณฑ์คนละแบบในการตัดสินสถานะของบุคคล
    • Schengen ใช้กฎ 90/180 วัน, สหราชอาณาจักรใช้ จำนวนครั้งที่ข้ามเที่ยงคืนตามปีภาษี, ส่วนหนังสือเดินทางใช้ วันหมดอายุและจำนวนหน้าว่าง เป็นเกณฑ์
  • ข้อมูลเหล่านี้ ไม่ได้ถูกเปิดเผยให้ผู้ใช้เห็นโดยตรง และโดยมากมีเพียงเจ้าหน้าที่ตรวจคนเข้าเมืองที่เข้าถึงได้
  • ผู้เขียนนิยามสิ่งนี้ว่าเป็น “ปัญหาของการ parse State” — ต้องตีความทั้งมุมมองของรัฐบาลและสถานะของระบบไปพร้อมกัน

กรณียกเว้นในโลกงานปกครอง

  • เมื่อต้องยื่นขอสัญชาติอังกฤษ จำเป็นต้องพิสูจน์ว่า ในวันเดียวกันเมื่อครบ 5 ปีก่อนนับจากวันยื่น ผู้ยื่นอยู่ในสหราชอาณาจักร
    • หากคลาดเคลื่อนแม้เพียงวันเดียว อาจต้องรอหลายเดือนก่อนถูก ปฏิเสธคำขอ และต้องเสียค่าใช้จ่ายในการยื่นใหม่
  • เวลาต่อเครื่องที่สนามบินในสหราชอาณาจักร จะถูกนับเป็น ‘การพำนัก’ ก็ต่อเมื่อมี กิจกรรมที่ไม่เกี่ยวกับการเดินทางโดยตรง (เช่น ซื้อของว่าง หรือไปดูการแสดง)
  • การเปลี่ยนเขตเวลาในโมร็อกโกระหว่างรอมฎอน (UTC↔UTC+1) อาจทำให้การคำนวณจำนวนวันพำนักต่างออกไป
  • กฎเหล่านี้กระจัดกระจายอยู่ตามเว็บไซต์ของรัฐบาลและไฟล์ PDF หลายแห่ง ทำให้ผู้ใช้ต้องตีความเอง

การจำลองการเดินทางในฐานะ ‘คำเตือนของคอมไพเลอร์’

  • ผู้เขียนนำแนวคิด linter มาใช้เพื่อตรวจสอบแผนการเดินทางจากมุมมองว่า “คอมไพล์ผ่านหรือไม่?”
  • ใช้ตัวอย่างเส้นทางเดินทาง (DUB→EWR→MEX→LHR→TFS) เพื่อเปรียบเทียบ ความแตกต่างของการนับวันพำนักในแต่ละประเทศ
    • ไอร์แลนด์ 0 วัน, สหรัฐฯ 0 วัน, เม็กซิโก 2 วัน, สหราชอาณาจักร 0~1 วัน, Schengen 1 วัน
  • ผลลัพธ์แต่ละอย่างอาจเปลี่ยนได้ตาม เวอร์ชันของฐานข้อมูลเขตเวลา จึงต้องตรึงเวอร์ชันไว้และคำนวณใหม่เมื่อมีการเปลี่ยนแปลง
  • เป้าหมายคือการสร้าง ระบบตรวจสอบอัตโนมัติที่ใช้เกณฑ์ตัดสินแบบเดียวกับเจ้าหน้าที่ตรวจคนเข้าเมือง

โครงสร้างและความสามารถของแอป Residency

  • แอปจำลองผลลัพธ์ของคำถามแบบ “ถ้าทำสิ่งนี้แล้วจะเกิดอะไรขึ้น” ได้หลายรูปแบบ
    • ตัวอย่างเช่น เมื่อต้องจองทริปไปเทือกเขาแอลป์ แอปสามารถบอกได้ว่าจะเกินจำนวนวันพำนักใน Schengen หรือไม่ หรือการออกนอกประเทศก่อนสิ้นปีภาษีจะมีผลอย่างไร
  • กฎของแต่ละประเทศถูกเก็บเป็น ข้อมูลตีความแบบมีการจัดการเวอร์ชัน (blob) เพื่อให้ยังรักษาประวัติเดิมไว้ได้เมื่อกฎเปลี่ยน
  • ความถูกต้องของหนังสือเดินทาง วีซ่า และ IDP ก็ถูกจัดการด้วย state machine
    • เช่น เมื่อแวะเปลี่ยนเครื่องที่ดูไบ กรณีที่ “ยังใช้ได้ตอนเดินทางมาถึง” แต่ “ใช้ไม่ได้แล้วตอนออกเดินทาง” จะถูกตรวจจับโดยอัตโนมัติ
  • ผู้ใช้สามารถกำหนด เป้าหมายด้วยตนเอง (เช่น จำกัดจำนวนวันพำนักในบางประเทศ) และแอปจะเตือนตามเงื่อนไขนั้น

การออกแบบแบบ local-first และการคุ้มครองความเป็นส่วนตัว

  • การคำนวณทั้งหมดทำ ภายในอุปกรณ์ และใช้งานได้แม้ไม่มีการเชื่อมต่อเครือข่าย
    • การตัดการสื่อสารกับเซิร์ฟเวอร์ออกไปช่วยหลีกเลี่ยงปัญหาเรื่อง ความเร็ว ความเป็นส่วนตัว และความรับผิดทางกฎหมาย
  • ไม่รองรับการซิงก์ผ่านคลาวด์ แต่สามารถส่งออกเป็นไฟล์ได้โดยตรง
  • ตอนแรกแอปรองรับเพียงการคำนวณจำนวนวัน Schengen แต่ภายหลังได้เพิ่ม กฎภาษีของสหราชอาณาจักร การหมดอายุของเอกสาร และความสามารถในการจำลองสถานการณ์
  • เหตุผลที่เปิดตัวแอปคือ อยากให้ผู้ใช้อื่นลดความไม่แน่นอน 20 นาทีแบบเดียวกันนี้ลงได้

ผลการใช้งานจริงและบทสรุป

  • ก่อนซื้อตั๋วไปไอซ์แลนด์ แอปคำนวณได้อย่างแม่นยำว่า ไม่จำเป็นต้องใช้ IDP, ยังเหลือวันใน Schengen อีก 34 วัน และจะสิ้นสุดสถานะถิ่นที่อยู่ทางภาษีเมื่อใด
  • เมื่อตอนเข้าประเทศจริง การตัดสินของเจ้าหน้าที่ที่สนามบิน Keflavík ก็ตรงกับผลลัพธ์จากแอป
  • แอปมีชื่อว่า Residency ให้ใช้งานบน iOS และเป็น การซื้อขาดครั้งเดียว ไม่มีค่าสมัครสมาชิก
  • โดยสรุป ข้อความสำคัญคือ “พรมแดนไม่สามารถเรียกด้วย cURL ได้ แต่คุณสามารถติดตามสถานะของตัวเองเพื่อให้ได้คำตอบแบบเดียวกับรัฐบาลได้

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

 
GN⁺ 2025-11-05
ความคิดเห็นบน Hacker News
  • ไม่เคยรู้เลยว่าสำหรับคนที่ไม่ใช่พลเมือง EU การเดินทางต้องมีขั้นตอนที่ซับซ้อนขนาดนี้
    กฎที่ว่าตอนยื่นขอสัญชาติอังกฤษ ต้องพิสูจน์ให้ได้ว่าคุณอยู่ในสหราชอาณาจักรจริงในวันเดียวกันนั้นเมื่อ 5 ปีก่อนนับจากวันยื่นคำขอ ฟังดูน่าขันมาก
    ถ้าพลาดไปแม้แต่วันเดียว ก็อาจถูกปฏิเสธหลังรอมาหลายเดือน และต้องจ่ายค่าธรรมเนียมแพง ๆ ใหม่อีกครั้ง
    เลยสงสัยว่ากฎแบบนี้เกิดขึ้นมาได้อย่างไร

    • จริง ๆ แล้วผู้เขียนเข้าใจผิด วันอ้างอิงไม่ใช่วันที่ส่งใบสมัคร แต่เป็นวันที่ Home Office ได้รับเอกสาร
      ซึ่งอาจคลาดเคลื่อนไปได้หลายวันตามความเร็วในการจัดส่งของ Royal Mail
      ก่อนยื่นสมัคร ฉันเคยขอบันทึกการเข้าออกประเทศจาก Home Office แล้วพบว่าพวกเขาแทบไม่รู้เลยว่าฉันอยู่ที่ไหนเมื่อ 5 ปีก่อน
      การเดินทางของฉันถูกบันทึกไว้แค่ประมาณครึ่งเดียว และหลายครั้งก็มีแค่ขาเดียว ระบบจัดการเละเทะมาก
    • ฉันอายุราว ๆ 50 แล้ว เมื่อก่อนในยุโรปก็เป็นแบบนี้เหมือนกัน
      ดูเหมือนคนรุ่นนี้จะมองว่าสิทธิประโยชน์ของการเป็นพลเมือง EUเป็นเรื่องปกติเกินไป
    • คนส่วนใหญ่ไม่มีปัญญาจะอยู่เกิน90 วันโดยไม่ต้องมีวีซ่าอยู่แล้ว
      คนที่อยู่นานกว่านั้นคือพวก “ดิจิทัลโนแมด” ซึ่งส่วนใหญ่ก็กำลังทำงานอย่างผิดกฎหมาย
    • บทความนี้ดูเหมือน content marketing เพื่อโปรโมตแอป
      อาจมีการพูดให้ความลำบากดูเวอร์ขึ้นเล็กน้อย
    • จริง ๆ ก็ไม่ได้ยากขนาดนั้น ฉันเพิ่งทำเองเมื่อปีที่แล้ว แค่นัดกับที่ว่าการเมือง ตรวจฐานข้อมูลที่อยู่ เซ็นเอกสารแผ่นหนึ่ง แล้วจ่ายค่าธรรมเนียมก็จบ
      ใช้เวลา 15 นาทีก็เสร็จ แน่นอนว่าอันนี้ไม่ใช่ในอังกฤษ แต่เป็นยุโรปแผ่นดินใหญ่
  • ถ้าความคิดแรกของใครตอนเปลี่ยนเครื่องที่สนามบินคือ “ไปซื้อ sausage roll ที่ Greggs กินดีกว่า” คนนั้นก็มีคุณสมบัติพอจะได้สัญชาติแล้ว

    • แบบทดสอบ Life in the UK ควรได้รับการอัปเดต
    • Claude เป็น AI ที่ไวต่อความแตกต่างทางวัฒนธรรม พอสมควร
  • บทความดีมาก แต่ชื่อแปลก ๆ
    เนื้อหาเป็นเรื่องข้อกำหนดรายประเทศเกี่ยวกับถิ่นที่อยู่ทางภาษี วีซ่า สัญชาติ ฯลฯ แต่คำว่า “Downloading a border” ฟังดูคลุมเครือ
    น่าจะเป็นอุปมาหมายถึง “ข้อมูลทางการกระจัดกระจายอยู่ตาม PDF และเว็บไซต์หลายแห่ง จนต้องไล่รวบรวมเอง”

    • น่าจะล้อกับมีมจากแคมเปญต่อต้านการละเมิดลิขสิทธิ์ ที่ว่า “You wouldn’t download a car”
    • ถ้ามองว่าแปลว่า “คุณเรียกใช้พรมแดนผ่าน API ไม่ได้ แต่คุณติดตามสถานะของตัวเองได้” ก็ถือว่าเป็นชื่อที่ค่อนข้างดี
  • ญาติของฉันบางคนเข้ายุโรปด้วยวีซ่าท่องเที่ยวแล้วทิ้งตั๋วกลับประเทศและอยู่เกินกำหนดอย่างผิดกฎหมาย
    หลายปีต่อมาก็ได้รับสถานะถูกกฎหมายจนได้สัญชาติ แต่ฉันที่ทำตามกฎหมายกลับยังอยู่ที่เดิม
    มันน่าอึดอัดที่ไม่มีคุณสมบัติตรงตามข้อกำหนดวีซ่าทำงานแบบถูกกฎหมาย

    • กรณีแบบนี้พบบ่อยมากจนบางทีก็เริ่มไม่แน่ใจด้วยซ้ำว่ามันผิดทางศีลธรรมหรือไม่
      ฉันเห็นคนจำนวนมากเข้ามาด้วยวีซ่าท่องเที่ยว มาทำงาน แล้วภายหลังก็ได้รับการทำให้ถูกกฎหมาย
      ในขณะที่คนการศึกษาสูงที่เข้ามาอย่างถูกต้องด้วยวีซ่าทำงาน กลับเสียสปอนเซอร์เพราะบริษัทปรับโครงสร้าง และต้องหางานใหม่ภายใน 30 วัน
      นโยบายแบบนี้ให้ความรู้สึกเหมือนเป็นความไม่สมดุลที่ตั้งใจสร้างขึ้น
    • สงสัยว่า “ไม่มีฐานทางกฎหมายที่ใช้ได้” หมายถึงอะไร เพราะในประเทศส่วนใหญ่ ถ้ามีงานในประเทศที่เงินเดือนถึงเกณฑ์ ก็มักขอวีซ่าทำงานได้
    • อยากรู้ว่ามีกฎหมายที่ให้สัญชาติอัตโนมัติแค่เพราะอยู่มาหลายปีหรือเปล่า
    • อยากรู้ว่าในประเทศไหน และผ่านกระบวนการแบบใด ถึงเกิดการทำให้ถูกกฎหมาย (legalisation) ได้
  • ทึ่งกับความละเอียดของงานที่ผู้เขียนทำ
    ฉันเองก็เคยพยายามทำเครื่องคิดเลข Schengen 90/180 วัน และตัวติดตามถิ่นที่อยู่ทางภาษี โดยลองใช้ Claude แต่คณิตศาสตร์มันยากเกินไป
    สุดท้ายก็ต้องสร้างโปรเจกต์ใหม่เอง
    เลยสงสัยว่าผลลัพธ์ของแอปนี้ได้รับการตรวจสอบด้วยมือว่าแม่นยำหรือไม่ เพราะสำหรับแอปแบบนี้ การทดสอบและการตรวจสอบความถูกต้อง คือหัวใจสำคัญ

    • ฉันคิดว่าลอจิกที่เน้นคณิตศาสตร์แบบนี้ ควรเขียนตรง ๆ ด้วย DSL หรือฟังก์ชันที่มนุษย์อ่านเข้าใจง่าย มากกว่าพึ่ง AI
      จะทำให้แก้กฎได้ง่าย และ unit test ก็มีประโยชน์มากเป็นพิเศษ
    • ปัญหาการจัดตารางที่ซับซ้อนแบบนี้ควรมี unit test เยอะ ๆ
      เพราะในโครงสร้างแบบ input→algorithm→output มันมี edge case เยอะมาก
    • ประโยคที่ว่า “AI ทำให้คุณโง่ลง แล้วคุณก็บ่นว่า AI โง่” ฟังดูเป็นสถานการณ์แบบ lose-lose
    • พูดตรง ๆ ว่า การโยนงานส่วนใหญ่ให้ AI ทำ แล้วพูดเหมือนตัวเองทำวิจัยยิ่งใหญ่มาก มันฟังดู หยิ่งผยอง ไปหน่อย
  • แม้บทความจะไม่ได้พูดไว้อย่างชัดเจน แต่แอปที่ผู้เขียนทำสามารถดาวน์โหลดได้สำหรับทุกคน
    https://drobinin.com/apps/residency/
    ถ้าไม่ใช่ Android ฉันคงอยากลองใช้เอง

  • เพิ่งนึกได้ว่าผู้เขียนคนนี้คือคนที่เคยทำระบบเข้าใช้ยิมด้วย Apple Watch มาก่อน
    ตอนนั้นบทความก็ดี และครั้งนี้ก็ชอบเหมือนกัน
    ลิงก์บทความก่อนหน้า

    • ฉันกลับกันเลย ฉันไม่ค่อยชอบงานเขียนของเขา
      สไตล์การเขียนแบบ โอ้อวดตัวเอง ที่เหมือนพยายามส่งภาพว่า “ฉันเป็นคนสากลและดูมีคลาส” มันน่ารำคาญ
    • ฉันเป็นสมาชิก PureGym และฉันก็จำเลข 8 หลักแล้วกดเองเลย
      แอปทางการไม่ค่อยดีอยู่แล้ว ก็เลยไม่จำเป็นต้องหยิบโทรศัพท์ออกมา
  • อ่านบทความนี้แล้วทำให้ฉันตระหนักอีกครั้งถึงคุณค่าของการเดินทางแบบยกเว้นวีซ่าที่พาสปอร์ตของฉันมีให้
    มันทำได้ก็จริง แต่เป็นกระบวนการที่ไม่มีประสิทธิภาพและกินเวลามาก

  • สงสัยว่าทำไมบางประเทศถึงกำหนดว่าตอนเข้าประเทศ หนังสือเดินทางต้องเหลืออายุอีกอย่างน้อย n เดือน
    ไม่เข้าใจว่าถ้าอายุพาสปอร์ตเหลือน้อยกว่าระยะเวลาพำนักแล้วมันมีปัญหาอะไร
    เลยสงสัยว่ากฎแบบนี้ป้องกันการกระทำผิดกฎหมายหรือปัญหาเศรษฐกิจอะไรได้จริงหรือไม่

    • น่าจะเป็นเพราะสถานการณ์ฉุกเฉิน
      ถ้าเกิดบาดเจ็บหรือมีเหตุให้เดินทางกลับช้า หนังสือเดินทางก็ยังต้องใช้ได้อยู่ และในเชิงระบบ ระยะเวลาวีซ่าก็มักออกเป็นหน่วยตายตัวเท่านั้น
      วันหมดอายุของพาสปอร์ตเป็นสิ่งที่รู้อยู่ล่วงหน้าอยู่แล้ว ดังนั้นอาจเป็นแค่การบอกให้จัดการเรื่องนี้อย่างรับผิดชอบก็ได้
  • บทความนี้น่าประทับใจ
    มันแสดงให้เห็นได้ดีว่าทำไมกฎเกณฑ์ที่สมเหตุสมผลส่วนใหญ่จึงมีดุลยพินิจทางปกครอง (administrative discretion) รวมอยู่ด้วย