เคยมีสิ่งที่ "เสียดาย" กันไหม? ผมเอง ถ้าไม่นับซอร์สโค้ดโครงงานสมัยเรียน ที่เขียนแบบไร้ดีไซน์แล้ว
ก็มีซอร์สโค้ดที่รู้สึก "เสียดาย" อยู่อย่างน้อยสามชุด
ชุดแรก เป็นโปรแกรมแรกที่เขียนตอนเริ่มทำงาน หลังจากหัดเขียน C++ จากการตะลุยอ่าน
"The C++ Programming Language" First Edition ของ Stroustrup
แล้วก็หัดเขียนโปรแกรมบนวินโดวส์ 3.1 ด้วย OWL ของ Borland มาแล้ว
ก็มาร่วมทีมเขียนโปรแกรมคล้ายๆ Print Shop ที่สมัยโน้นใช้พิมพ์โปสเตอร์ การ์ดอวยพร ฯลฯ
ผสมกับความสามารถเพิ่ม/แก้ไข graphics object ต่างๆ โดย scale, rotate, shear ได้
ตอนนั้นก็ทำให้สนุกสนานกับ CG มากๆ ทำอัลกอริทึมครบหมด ทั้งวงรีเอียง, บิตแมพเอียง, hit test
ของ object ชนิดต่างๆ แต่ปรากฏว่าโครงการถูกยกเลิกเสียก่อนที่จะได้ integrate กัน โค้ดที่เขียน
เลยไม่ได้ใช้ และก็ทิ้งไว้ที่บริษัท
ชุดที่สอง อยู่บริษัทเดียวกัน แต่ย้ายโครงการมาเขียนเวิร์ด ซึ่งความจริงโครงการเริ่มไปเยอะแล้ว
ส่วนแกนเสร็จไปพอประมาณ ผมเข้าไปช่วยเขียนต่อเติม และทำ UI เพิ่มเติมให้เป็นรูปเป็นร่าง
โค้ดนี้จะว่าสนุกก็สนุก จะว่าน่าเบื่อก็น่าเบื่อ สนุกตรงที่เป็นโปรแกรมขนาดใหญ่โปรแกรมแรก
และการออกแบบโครงสร้างดี ทำให้ได้พัฒนาความรู้เรื่อง OOP แต่ที่ว่าน่าเบื่อ คือเพื่อนร่วมงานมาๆ หายๆ
จะ merge โค้ดทีก็ต้องนั่งรอเงกอยู่ที่ออฟฟิศ จนสุดท้าย
หลังจากมีเวลาอ่านและคิดฟุ้งซ่านเรื่องกฎหมายลิขสิทธิ์กับซอฟต์แวร์ เลยตัดสินใจว่า
ไม่อยากเขียนโปรแกรมโดยฝากลิขสิทธิ์ไว้กับบริษัทเอกชนแบบนี้อีกแล้ว
ประกอบกับแผนกพัฒนาซอฟต์แวร์ของบริษัทก็กำลังจะยุบแหล่มิยุบแหล่ เลยลาออกมา
โดยที่ไม่ได้เอาโค้ดอะไรติดมือมาเลย ทราบมาว่าหลังจากผมออก โครงการก็ยังดำเนินต่อไปช่วงหนึ่ง
แต่ก็ต้องยุบในที่สุด เพราะหมดทุนทำต่อ
ชุดที่สาม เป็นโค้ดที่เขียนขึ้นระหว่างทำงานเนคเทค ซึ่งเป็นหน่วยงานภาครัฐที่สมัครเข้าไปด้วยความคิดว่า
น่าจะมีโอกาสทำงานที่เป็นประโยชน์ต่อสาธารณะได้มาก ก็มีโค้ดหลายชิ้นที่ได้ทำ แต่ชิ้นที่นับเนื่องว่ารู้สึก
"เสียดาย" ก็คือระบบเครือข่ายพจนานุกรม คือเป็นโครงการที่มองเอาไว้ว่า
จะทำเป็นแกนสำหรับงานวิจัยระยะยาว โดยทำโครงการวิจัยย่อยๆ เพื่อมาพอกใส่แกนกลางนี้
ซึ่งก็มีการแตกเป็นงานย่อยออกมาพอสมควร เช่น อัลกอริทึมการเรียงลำดับคำไทย (ซึ่งพัฒนาต่อมาจนได้
th_TH locale ใน glibc), การอิมพลีเมนต์ double-array trie แบบเต็มๆ ตาม paper ของ Aoe,
การแก้คำผิดด้วย trie และซาวน์เด็กซ์, การทำ framework สำหรับ client-server,
การจัดการข้อมูล XML ฯลฯ ในโค้ดนี้ ใช้ design pattern ไปหลาย pattern อยู่
เขียนเอกสารก็ใช้ DocBook ประกอบกับ UML diagram ด้วย dia และก็ได้ให้บริการเว็บ Lexitron
อยู่ช่วงหนึ่ง ก่อนที่ทีมงานใหม่จะเข้ามารับช่วงต่อ เห็นแว่วๆ ว่าเขาเขียนใหม่หมดแล้ว :P
ทั้งหมดนี้ ล้วนแต่เขียนด้วยความทุ่มเท แต่ก็ถูกปล่อยผ่านไปโดยไม่ได้ใช้ประโยชน์เท่าไร
ส่วนที่ยังคงใช้ประโยชน์มาจนปัจจุบัน ก็เป็นส่วนที่เผยแพร่แบบ FOSS (Free/Open Source Software)
คือ th_TH locale เท่านั้นเอง อ้อ.. มี midatrie หลุดมาอีกตัว
หลังจากรำลึกความหลังแล้ว ก็ทำให้รักแนวคิด FOSS ขึ้นเป็นกอง ไม่มีเธอ ฉันคงไร้ความหมาย..