This Space
พื้นที่เล็ก ๆ ตรงนี้เป็นบล็อกส่วนตัว ซึ่งมีเนื้อหาเกี่ยวกับ การเขียนโปรแกรม วิทยาการคอมพิวเตอร์เบื้องต้น อนิเมะ เกม ( รวมถึงเกมโชว์ ) ดนตรี และอื่น ๆ อีกมากมาย
คำเตือน ( Warning )
พื้นที่แห่งนี้อาจมีมุกตลกขบขัน คำประชด หรือเรื่องสมมติสอดแทรกในเนื้อหาที่ไม่ค่อยจะมีอยู่แล้ว ซึ่งผู้อ่านต้องใช้วิจารณญาณและความอดทนอย่างสูงในการอ่าน
ผู้เขียนได้พยายามตรวจทานเนื้อหาทั้งหมดที่ปรากฏในพื้นที่เล็ก ๆ นี้อย่างสุดความสามารถ แต่ความผิดพลาดก็ไม่อาจหลีกเลี่ยงได้ 100% ดังนั้นผู้เขียนยินดีน้อมรับคำท้วงติงถึงความผิดพลาดทางเนื่อหาจากผู้อ่าน โดยสามารถติดต่อผู้เขียนได้ที่ลิงก์ตอนท้ายหน้าทุกหน้า หรือพื้นที่ส่วนตัวอื่น ๆ ที่ผู้อ่านพบเห็น
สุดท้ายนี้ ความคิดเห็นที่ปรากฏในพื้นที่แห่งนี้ เป็นเพียงความคิดเห็นส่วนตัวของผู้เขียน ซึ่งไม่มีส่วนเกี่ยวข้องกับผู้ว่าจ้างของผู้เขียนแต่อย่างใด
Myself
ผู้เขียนมีชื่อว่า อาภาพงศ์ จันทร์ทอง ( อักขระโรมัน: Abhabongse Janthong ) มีชื่อเล่นชื่อว่า เพลน มาจากคำว่า airplane หรือ aeroplane ซึ่งแปลว่าเครื่องบิน
ผู้เขียนเคยศึกษาเกี่ยวกับวิทยาการคอมพิวเตอร์ มุ่งเน้นทางด้าน algorithms และ automated verification ปัจจุบันทำงานประจำเกี่ยวกับการพัฒนาซอฟต์แวร์
ผู้เขียนชื่นชอบและเคยมีประสบการณ์สอนเนื้อหาเกี่ยวกับวิทยาการคอมพิวเตอร์ คณิตศาสตร์ และการเขียนโปรแกรม โดยเป็นทั้งผู้ช่วยสอนในระดับมหาวิทยาลัยและเป็นวิทยากรเป็นบางโอกาส
My School Works
ผู้เขียนทำวิทยานิพนธ์ระดับปริญญาตรีเกี่ยวกับ sub-linear streaming algorithms สำหรับปัญหาทฤษฎีกราฟ ซึ่งมีเนื้อหาดังนี้
วิทยานิพนธ์ระดับปริญญาตรี: Streaming Algorithm for Determining a Topological Ordering of a Digraph
ผู้เขียนทำโปรเจกต์ระดับปริญญาโทเกี่ยวกับ automated verification สำหรับ database queries ในเชิงทฤษฎี ซึ่งมีเนื้อหาดังนี้
โปรเจกต์ระดับปริญญาโท: Safety Checking for Domain Relational Calculus Queries Using Alloy Analyzer
My Projects and Contributions
งานของผู้เขียนหรือที่ผู้เขียนมีส่วนร่วม มีดังนี้
- paxter: ภาษาโปรแกรมสำหรับใช้ประมวลผลข้อความเอกสาร ได้อิทธิพลจาก @-expressions ในภาษา Racket ซึ่งเขียนออกมาใช้งานเป็นแพ็กเกจภาษา Python
- thaienum: แพ็กเกจ CTAN สำหรับช่วยเขียนหัวข้อลำดับรายการในภาษาไทยใน ( ก. ข. ค. หรือ ๑. ๒. ๓. เป็นต้น )
- fuzzymatch-go: ไลบราลีภาษา Golang สำหรับ customizable approximate string matching algorithms
- AI Builders 2022: ออกข้อสอบเขียนโปรแกรม และ พัฒนาระบบตรวจข้อสอบอัตโนมัติ
- TECHJAM 2018 and 2019 Code Track: ตั้งคำถามสำหรับการแข่งขันสำหรับโปรแกรมเมอร์ในรูปแบบเกมโชว์ จัดโดย KBTG
- PyThaiNLP: แพ็กเกจภาษา Python ซึ่งประกอบไปด้วยโมดุลการประมวลผลภาษาไทยมากมาย ( open-source bug-fix contributions )
- fonts-tlwg: แพ็กเกจ CTAN สำหรับใช้ฟอนต์ไทยมาตรฐานใน ( open-source bug-fix contributions ).
My Talks
ชุดเนื้อหาที่ใช้ในการบรรยายตามงานหรือสถานที่ต่าง ๆ ( รวมทั้งงานสาธารณะและงานปิด )
- Introduction to Python: ปรับพื้นฐาน AI Builders 2021 ( บรรยายภาษาไทย; materials in English ).
- Zero-Knowledge Protocols: How to achieve a communication goal without leaking just anything? ( สไลด์ภาษาไทย ), งาน Friday Tech MeetUp ที่ KBTG.
- Unimaginable Things in Python ( บรรยายภาษาไทย; slides in English ), งาน PyCon Thailand 2018.
- DIY: Python With Partially Charged Batteries ( บรรยายภาษาไทย; slides in English ), งาน PyCon Thailand 2018.
Colophon
คำว่า Colophon หมายถึง “ข้อมูลทางบรรณานุกรม” แต่ในอดีตนั้น หมายความเจาะจงถึงข้อมูลที่ผู้จัดทำหนังสือระบุเกี่ยวกับขั้นตอนกระบวนการจัดทำหนังสือดังกล่าว ซึ่งมักอยู่ปิดท้ายหนังสือเล่มนั้น ๆ
เพื่อเป็นการบันทึกข้อมูลสำหรับผู้อ่านที่สนใจ ผู้เขียนได้ระบุข้อมูลที่เกี่ยวข้องกับการจัดทำเว็บไซต์นี้ไว้ดังต่อไปนี้
Tools
เครื่องมือที่ใช้เว็บไซต์นี้ ได้แก่
- Astro สำหรับการจัดการเนื้อหาและ static site generation
- Tailwind CSS สำหรับปรับแต่งหน้าตาของเว็บ
- สำหรับแสดงผลสมการคณิตศาสตร์
- Expressive Code สำหรับแสดงผลโค้ดภาษาโปรแกรม
Fonts and Icons
เว็บไซต์นี้ใช้บริการ Google Fonts เพื่อใช้แจกจ่ายฟอนต์ดังต่อไปนี้
- แสดงข้อความทั่วไปใช้ IBM Plex Sans และ Sarabun สำหรับอักขระละตินและไทย ตามลำดับ
- แสดงหัวข้อต่าง ๆ ใช้ Literata และ Taviraj สำหรับอักขระละตินและไทย ตามลำดับ
- ใช้ JetBrains Mono เพื่อแสดงโค้ดภาษาโปรแกรม
นอกจากนั้น มีการใช้งานไอคอน SVG จากคลังของ Fluent Icons FontAwesome 6, Lucide Icons, Material Icons, Phosphor Icons และอื่น ๆ เป็นต้น
Custom Markdown Features
ผู้เขียนได้ปรับแต่งให้บทความที่เขียนด้วย Markdown รองรับฟีเจอร์ดังนี้
- กล่องประกาศ ( Admonition / Callout ) โดยใช้ Remark Directive Plugin ร่วมกับ custom remark plugin ที่พัฒนาใช้เองภายใน
- เชิงอรรถขอบกระดาษ ( Sidenote )เช่นข้อความนี้ ซึ่งได้รับอิทธิพลจาก Tufte CSS โดยใช้ Remark Directive Plugin ร่วมกับ custom remark plugin ที่พัฒนาใช้เองภายใน
- ตั้งค่าวรรคหน้าไม้ยมก ( Maiyamok Autospacing ) โดยเว้นวรรคที่อยู่ก่อนไม้ยมก ( ๆ ) จะถูกแทนที่ด้วยอักขระ U+202F ( Narrow No-break Space ) ซึ่งจะมีขนาดเล็กกว่าเว้นวรรคทั่วไป และมีระบบป้องกันการตัดบรรทัดก่อนเครื่องหมายดังกล่าว ฟีเจอร์นี้เป็น custom rehype plugin ที่พัฒนาใช้เองภายใน
Notable Design Decisions
ผู้เขียนมีเจตนาให้ผู้ชมเว็บไซต์นี้ ได้รับประสบการณ์การใช้งานดังนี้
- พัฒนาเว็บไซต์บนสมมติฐานว่าผู้อ่านใช้ evergreen browser ( เว็บเบราว์เซอร์ที่มีการอัปเดตล่าสุดอย่างสม่ำเสมอ )
- เหมาะสำหรับผู้ใช้งาน screen reader ( ทดสอบกับโหมด Talkback ของ Android ) และ keyboard-only navigation
- ปิด animation และ transition effect ในกรณีที่ user agent มีการตั้งค่า
prefers-reduced-motion: reduce
( อ่านเพิ่มเติม )
หากไม่ได้รับความสะดวกในการใช้งาน โปรดแจ้งผู้เขียนได้โดยตรง
Cover Photo
รูป cover photo ในหน้าหลักคือรูปนก red-breasted sapsucker ซึ่ง ถ่ายโดยผู้เขียนเอง ที่ Olympic National Park มลรัฐวอชิงตัน สหรัฐอเมริกา