สับสน … ชื่อภาษาโปรแกรม?

ช่วงนี้ตรวจข้อสอบเด็กเยอะแยะ ตาลาย ไม่พอ ยังไม่วายเข้าไปดูตาม webboard หลายที่ …​ ก็เจอเรื่องที่คาใจมาน้านนาน คือ มักที่จะเจอคนเรียก IDE หรือ Editor ปนกับชื่อภาษาโปรแกรม โดยเฉพพาะเมื่อตัว IDE นั้นๆ มันดันมีชื่อภาษาปนอยู่ด้วย เช่น

  • ภาษา Turbo C
  • ภาษา Dev-C++
  • ภาษา Visual C++
  • ภาษา RadRails
  • ยังมีอีก ฯลฯ

ซึ่งอ่านไปอ่านมาก็ตลกดี คิดในบางแง่มันก็อาจจะ make sense เนื่องจาก

  • ภาษาหลายภาษา (เช่น C, C++) เป็นเพียงแค่ข้อตกลง ข้อกำหนด เท่านั้น บางอย่างก็จะเป็น vendor-specific โดยเฉพาะในจุดที่ไม่นิยามในตัวข้อกำหนดมาตรฐานจริงๆ (undefined by standard) ซึ่งจะทำให้ภาษาเหล่านี้แตกต่างกันไปตาม vendor
  • Vendor หลายเจ้า โดยเฉพาะ Microsoft มักจะมีปัญหาประจำแหละ เรื่องนี้ คือไม่ได้ implement C++ ของตัวเองตามมาตรฐานของ C++ เสียทีเดียว อะไรหลายๆ อย่างที่มันถูกต้องตาม standard C++ ก็ไม่ถูกใน C++ ของ Microsoft
  • บางทีมันก็เป็นเรื่องของ library ด้วย คือ vendor หลายเจ้ามักจะ implement อะไรหลายๆ อย่างเพิ่มเข้าไปจากที่จำเป็นต้องมีอยู่แล้วใน standard library (ถ้าเป็น C ล่ะก็ ตัวยอดนิยมคงจะไม่พ้น itoa() ใน stdlib.h กระมัง)

แต่ว่ายังไงๆ ก็ตาม เราก็น่าจะเรียกตามชื่อ vendor ของมันมากกว่าจะเรียกตามชื่อ IDE ไม่ชื่อหรือ ไอ้พวก “ภาษา ​Turbo C” นี่คงไม่เท่าไหร่ เพราะว่า implementation ของ C ตามแบบนั้น คงจะไม่มีคนทำ IDE ขี้นมาใช้นอกจาก Turbo C เอง (แต่ว่าก็ไม่แน่ เพราะว่าจริงๆ ก็สามารถทำ modern IDE ขึ้นมาเรียกการทำงานของส่วน compiler ใน Turbo C ก็ได้)จริงๆ แล้ว Borland ก็มี compiler สำหรับ Windows นะ ให้ใช้งานได้ฟรีๆ นะ แต่ว่าเป็น command line ซึ่งจำเป็นต้องหา IDE มาครอบใช้งานเอง (เช่น JFE หรือ CPad ผมเคยใช้แต่ตัวหลัง ตัวแรกลองแล้วไม่ค่อยชอบ) โดยสำหรับตัว compiler ตัวนี้ผมเข้าใจว่าตัวนี้เป็น compiler ตัวเดียวกับที่ใช้ใน C++ Builder แต่ว่าไม่แน่ใจ เพราะว่าไม่มี C++ Builder แต่ว่านั่นแหละ ถ้าเป็นตัวเดียวกันจริง ก็จะมีคนเรียกมันว่า “ภาษา C++ Builder” แทนที่จะเป็น “ภาษา C++ ของ Borland” (Borland’s implementation of C++)เช่นเดียวกับการเรียก “ภาษา Visual C++” แทนการเรียก “ภาษา C++ ของ Microsoft” (Microsoft’s implementation of C++)แต่ว่าเจ้า “ภาษา Dev-C++” นี่สิ เรื่องใหญ่ ทั้งๆ ที่เรียกใช้งาน GNU GCC ซึ่งเป็น GNU’s implementation of C/C++ นะ … Misleading มากเลย

วิวัฒนาการของ Dock

อ้างอิง: Road to Mac OS X Leopard: Dock 1.6 โดย Prince McLean

Dock ถือว่าเป็นส่วนหนึ่งของ Interface หลักใน Mac OS X (และ Desktop อีกหลายตัว) ซึ่งตัว Dock นี้วัตถุประสงค์หลักของมันก็คือไว้เก็บ Application ที่ใช้บ่อยๆ (ย้ำ บ่อยๆ) หรือว่าใช้เป็นงานหลัก เพื่อให้เข้าถึงง่ายและเรียกใช้ได้เร็ว แต่ว่าหลายๆ คนกลับเอาโน่นเอานี่ใส่ไว้เยอะแยะมากมายมหาศาล (โดยเฉพาะโปรแกรมในชุด iLife หลายตัวที่อาจจะแทบไม่ได้ใช้ หรือว่าใช้นานๆ ครั้ง) ทำให้ Dock มันรก และไม่สะดวกในการใช้งาน



[ภาพ Dock ใน OS X 10.5 จาก AppleInsider]

จริงๆ แล้วในปัจจุบันก็ค่อนข้างที่จะ controversial มากพอควร ว่าจริงๆ แล้วการใช้งาน Dock ในลักษณะแบบนั้นนี่จะเหมาะสมดีจริงๆ หรือเปล่า เพราะว่าจริงๆ แล้วมันทำให้มีการเลื่อน mouse เยอะพอดู (แต่ว่าก็ยังน้อยกว่าการค้นจาก Application folder หรือ Start Menu) และถ้าเราเป็นคนมักมากก็คงจะเอาโปรแกรมโน้นนี้ไปใส่ไว้ใน Dock เกือบหมด ซึ่งทำให้การใช้งาน Dock มีความสะดวกน้อยลง (เพราะว่า icon เล็กลง การหาเสียเวลามากขึ้น) … ยิ่งถ้าเป็น QuickLaunch ของ Windows ด้วยยิ่งไปกันใหญ่ เพราะว่ามันไปแย่งที่อยู่กันเองกับ Taskbar



[ภาพจาก QuickLaunch & Taskbar จาก AppleInsider]

Controversial ที่ผมว่านี้ ส่วนหนึ่งก็คือ Dock ไม่ได้เหมาะสมเท่าไหร่ในฐานะของ Application Launcher หรือเปล่า เพราะว่าเวลาเราจำโปรแกรม ส่วนหนึ่งเราจะจำเป็นชื่อ และหลายครั้งที่เราใช้งานคอมพิวเตอร์ มือของเราจะอยู่ที่ keyboard ไม่ใช่ mouse ทำให้มีคนพัฒนาโปรแกรมในลักษณะ Application Launcher ที่เรียก shortcut (มักจะเป็นการกดปุ่มบน keyboard สองปุ่มหรือว่าสามปุ่มพร้อมกัน) แล้วพิมพ์ชื่อโปรแกรมลงไปมากกว่า เช่น QuickSilver บน Mac OS X เป็นต้น

บทความที่ผม link มาด้านบน​ มีเรื่องวิวัฒนาการของ Dock ตั้งแต่เริ่มต้นใน RISCOS เป็น NeXT เป็น Newton เป็น … และมาลงเอยด้วย Mac OS X และครอบคลุมถึง feature ใหม่ๆ ใน Mac OS X 10.5 Leopard ด้วย (เช่น Stacks) เป็นบทความที่ยาว 3 หน้า แต่ว่าเป็นเรื่องวิวัฒนาการของ Dock หน้าเดียว นอกนั้นเป็น Dock ใน Leopard

Stacks สำหรับ Dock ใน OS X 10.5 นี่เท่าที่อ่าน (ยังไม่ได้สัมผัส) ก็น่าจะเข้าท่าทีเดียว แต่ว่าจะทำให้การใช้งานง่ายขึ้น หรือว่าเพิ่มความซับซ้อนในการใช้งาน (และ visual effect) โดยใช่เหตุ ก็ยังเป็นประเด็นที่จะต้องขอดูต่อไปก่อน

เสียดาย ที่บทความที่ว่า ไม่ได้พูดถึง Dock ใน Desktop Environment อื่นๆ เลย แต่ว่าก็ไม่เป็นไร เพราะว่าเค้าอยากจะเขียน focus ไปที่ Dock ของ OS X รุ่นใหม่ ก็เลยไม่ได้ focus ไปที่ตัวอื่น

เอาไว้ถ้ายังไงผมจะลองเขียนๆ ให้อ่านเองก็แล้วกันครับ (สัญญาอีกล่ะ) เหมือนกับที่เคยเขียนเรื่อง History of Modern Mac Operating Systems: Mac OS 8, 9 and X ไว้เมื่อนานมาแล้ว (จริงอยากจะขยายเป็นหนังสือ เรื่องประวัติ Modern OS ซักเล่ม แต่ว่าท่าทางจะยาว…… ข้อมูลมันเยอะมาก ยิ่งพวกสาย Linux, BSD เนี่ย เยอะสุดๆ)

9/07 Solaris Express Developer Edition

เปล่า ไม่ได้ review ครับ เพิ่งจะได้แผ่นมา ตัวนี้ครับ

เมื่อก่อนต้องมานั่ง download วุ่นวาย ส่วนมากจะต้องผ่าน download manager ของ Sun เอง ซึ่งทำได้ห่วยมาก (แบ่งไฟล์ตอน download จะได้เร็วๆ ก็ไม่ได้) แต่ว่่าตอนนี้สั่ง Free DVD ได้เลย ซึ่งเข้าท่าดี เหมือนกับ ShipIt ของ Ubuntu เลย

รู้สึกว่า trend นี้จะมาแฮะ ให้ request พวก open source/free software เป็น packaged DVD/CD เนี่ย เพราะว่าบางที net มันห่วย download ก็ไม่ค่อยจะได้เรื่องเท่าไหร่ บางทีก็ไม่ค่อยสะดวกนัก อิืมมม ให้สั่ง portable bandwidth ดีกว่า (ผมมอง CD/DVD/อะไรก็ได้ ว่ามันเป็น portable bandwidth น่ะ :-P) แต่ว่าจะทำได้มันก็ต้องเงินถุงเงินถังพอสมควร เพราะว่าถ้าคน order เยอะ ถึงแผ่นมันจะไม่กี่ตังค์ก็เถอะ แต่ว่าถ้าหลายแผ่น ก็คงจะบานปลายง่ายๆ เหมือนกัน

หรือว่าคนคงไม่ค่อยจะ order Solaris DVD เท่าไหร่มั้ง :-P (แต่ว่า Ubuntu นี่คงจะอีกเร่ือง)

เล่น Solari ครั้งสุดท้ายเมื่อนานมากแล้ว ไว้ครั้งนี้หาเครื่องมาเล่นมันได้ก่อน (ยังไม่รู้ว่าจะ dedicate เครื่องที่ lab เครื่องไหนไปเล่นมันดี) แล้วจะมา review ให้ฟังนะครับ

How to Become A Hacker

บทความที่ดีมาก….

ผมอ่านเรื่องนี้นานมากแล้ว ตั้งแต่เรียนปริญญาตรีได้มั้ง และเป็นหนึ่งในบทความในหัวใจเลย ต่อมาก็กลายเป็น source of inspiration หนึ่งที่ทำให้ผมเขียนบทความ (ที่ยังเก็บต้นฉบับไว้อยู่ แต่ว่าขี้เกียจรื้อ) เรื่อง Hackers: Their True Stories

Hacker คือ ฮีโร่ของผมมาตลอด แต่ว่าคำๆ นี้ ในสายตาของ public แล้ว พวกที่ถูกเรียกว่า Hacker หรือว่าพวกที่สื่อต่างๆ และหลายๆ คนเรียกว่า Hacker คือคนไม่ดี ที่คอยทำลายระบบต่างๆ รื้อข้อมูล ทำลายข้อมูล เอาข้อมูลที่ไม่ได้รับอนุญาตไปใช้ในทางไม่ดี หรือแม้แต่อะไรที่เบาและแรงกว่านั้น​ (ตั้งแต่แงะซอฟต์แวร์ไปเรื่อย ถึงสร้างความเสียหายระดับชาติ)

ผมจะไม่พูดถึง Hacker ที่แท้จริง หรือว่าความหมายดั้งเดิมของมันในนี้หรอก เพราะว่ามันควรจะเป็นบทความยาวๆ ได้อีกครั้งเลยมากกว่า แต่ว่าผมอยากจะบอกอีกครั้ง ว่า ความเจริญหลายอย่างในโลกเทคโนโลยี โลกคอมพิวเตอร์ ได้มาจากน้ำพักน้ำแรง สมองและสองมือ หรือมากกว่านั้น ของบรรดา Hackers … จริงๆ แล้วเราเป็นหนี้พวกเขาพอสมควร

บทความของ ESR นั้น ถ้าอ่านดีๆ และปฏิบัติตามได้จริงๆ คุณอาจจะกลายเป็น Hacker ก็ได้ ใครจะไปรู้ ….

ส่วน Hacker คืออะไรกันแน่? ถ้าอยากจะรู้คำตอบ ก็ลองเริ่มอ่านบทความนั้นดู แล้วอ่านไปอ่านมาคุณจะพบคำตอบเอง ..​ อ๊ะๆ อย่าบอกว่ามันเป็นภาษาอังกฤษเลยไม่อ่านนะ ถ้าแค่นี้เป็นกำแพงที่คุณไม่อยากข้ามแล้วล่ะก็ คุณคงจะเป็น Hacker ลำบากล่ะครับ

ก่อนที่จะถามผมนะ ว่า แล้วจะเป็นไปทำไมล่ะ ทำไมฉันถึงต้องเป็นด้วย …. ก็ลองถามตัวเองดูก่อนนะครับ ว่าอ่านชื่อบทความ อ่านที่ผมเขียนมาแล้ว สนใจมั้ยล่ะ ถ้าไม่สนใจ ก็คงจะปกติที่คุณจะถามเช่นนั้น แต่ว่าถ้าสนใจ ก็จะรอช้าอยู่ทำไม (ใบ้นิด: มีคนแปลเป็นไทยไว้ด้วย แต่ว่าไม่แน่ใจว่า revision มีคนแปลหรือยัง…)

หนังสือที่อยากได้ (Complex Systems) และ amazon.com

เมื่อวานนี้ Amazon ส่ง e-mail มาโฆษณาหนังสือ … เห็นเล่มนี้แล้วอยากได้มาก



Complex and Adaptive Dynamical Systems: A Primer โดย Claudius Gros มีกำหนดออกวันที่ 1 พย. ปีนี้ น่าจะเป็นของขวัญวันเกิดให้ตัวเองได้ดีเลยนะเนี่ย

มี description (เอามาจาก Amazon):

We are living in an ever more complex world, an epoch where human actions can accordingly acquire far-reaching potentialities. Complex and adaptive dynamical systems are ubiquitous in the world surrounding us and require us to adapt to new realities and the way of dealing with them.

This primer has been developed with the aim of conveying a wide range of “commons-sense” knowledge in the field of quantitative complex system science at an introductory level, providing an entry point to this both fascinating and vitally important subject.

The approach is modular and phenomenology driven. Examples of emerging phenomena of generic importance treated in this book are: – The small world phenomenon in social and scale-free networks; – Phase transitions and self-organized criticality in adaptive systems; – Life at the edge of chaos and coevolutionary avalanches resulting from the unfolding of all living; – The concept of living dynamical systems and emotional diffusive control within cognitive system theory.

Technical course prerequisites are a basic knowledge of ordinary and partial differential equations and of statistics. Each chapter comes with exercises and suggestions for further reading – solutions to the exercises are also provided.

อยากได้ชะมัด .. นี่ถ้ายังอยู่ญี่ปุ่นนี่คงจะสั่งไปแล้วนะเนี่ย..

นี่แหละ power ของการเก็บข้อมูล และการวิเคราะห์พฤติกรรมผู้ใช้ ผมเคยซื้อหนังสือเกี่ยวกับ Chaos Theory, Fractals, Complex Systems theory จาก Amazon ไว้หลายสิบเล่ม (นอกจากหนังสืออื่นๆ นะ ไว้วันหลังจะทำ reading list ให้) ไม่พอนะ ผมอาจจะมีพฤติกรรมการซื้อหนังสือจากสำนักพิมพ์ Springer เยอะด้วย พอเอาข้อมูลนี้มาวิเคราะห์นะ ระบบ computer ที่ Amazon ก็เลยไม่ลังเล (computer มันลังเลเป็นที่ไหน) ในการที่จะส่ง e-mail มาบอกผมว่า มีหนังสือใหม่เล่มนี้นะ สนมั้ย

  • ถ้า Amazon ส่งโฆษณามามั่ว มีหนังสือใหม่อะไรก็ส่งมาหมด ผมก็คงสั่งโปรแกรม e-mail client ของผมให้ filter มันไปเป็น junk แบบถาวร
  • ถ้าส่งมาแบบ 50 mail มีดีซักอัน ผมก็คงจะ filter มันเข้าไปอยู่ใน mailbox ที่ไม่สำคัญ อยากอ่านก็อ่านอยากลบก็ลบ (แต่ไม่ใช่ junk) แล้วปกติก็จะลบมากกว่าอ่าน
  • ถ้ามันส่งมาแบบ 10 mail ผมคิดว่าเข้าท่าซัก 1 เนี่ยสิ ค่อยน่าสนหน่อย

อีกอย่าง ยิ่งผมซื้อเยอะเท่าไหร่ Amazon ก็ยิ่งวิเคราะห์พฤติกรรมการซื้อของผมได้ดีขึ้นเท่านั้น ยิ่งมีคนซื้อของจาก Amazon เยอะขึ้นเท่าไหร่ Amazon ก็ยิ่งวิเคราะห์พฤติกรรมของทุกคนโดยรวมได้ดีขึ้นเท่านั้น เพราะว่านอกจากจะวิเคราะห์แค่จากตัวผมเองแล้ว ก็ยังวิเคราะห์จากคนที่ซื้อของใกล้เคียงกับที่ผมซื้ออีกด้วย ว่าคนพวกนั้นซื้ออะไร ผมน่าจะสนใจตาม อะไรทำนองนี้

ซึ่งมันก็เป็น hit-and-miss

แต่ว่าทุกครั้งที่ผมซื้อ Amazon ก็ยิ่งมีโอกาสได้เงินจากผมมากขึ้นในอนาคต

การใช้ computer และทฤษฎีต่างๆ อย่างฉลาดในเชิงธุรกิจ บางทีมันเพิ่มโอกาสในการทำธุรกิจ ในการขายของ ในการเชื่อมโยง ในการบริหารจัดการมากขึ้นอย่างมากมาย

แต่น่าเสียดาย (อีกล่ะ พักนี้มีแต่เรื่องน่าเสียดาย) ที่หลายๆ คนในบ้านเราที่ศึกษาทฤษฎี ไม่สามารถนำตรงนี้ไปใช้งานจริงได้เท่าไหร่ และไม่สามารถประยุกต์ใช้ในเชิงธุรกิจได้อย่างมีประสิทธิภาพเท่าที่ควร หรือไม่ได้เอาเสียเลย

ปล. ใครมีประสบการณ์สั่งหนังสือจาก Amazon พักหลังๆ ช่วยบอกหน่อยนะครับ ว่าดีมั้ย (การขนส่งและ delivery นะ) เพราะว่าเคยสั่งครั้งนึงเมื่อนานมาแล้วตอนกลับมาเยี่ยมบ้าน ตอนนั้น delivery ในบ้านเราห่วยสุดๆ…. เลยเข็ด

ทำไม arithmetic ในคอมพ์จึงยาก?

วันก่อน peter (ซี้เก่าสมัยเรียนที่ Tsukuba) ส่งเรื่อง bug ใน Excel 2007 มาให้อ่าน (อันที่ peter ส่งมาไม่ใช่อันนี้นะ แต่ว่าก็เรื่องเดียวกัน)



ก็ตกใจเล็กน้อยนะ แต่ว่าก็ไม่ได้มากอะไร เพราะว่าจริงๆ ก็รู้อยู่ว่า computer arithmetic มันยาก …..

อ่าว มันจะยากได้ไงล่ะ ก็วิธีการก็รู้ๆ กันอยู่นี่นา จริงๆ แล้วไม่หรอก เพราะว่าการทำ computer arithmetic มันมีปัจจัยเยอะมาก .. อย่างที่ว่าน่ะแหละ devils are in details … แทบทุกเรื่องน่ะแหละ เราจะลง details แค่ไหนเท่านั้นเอง

พอดีไปเจอนี่มา

ที่มีคำอธิบายค่อนข้างจะละเอียด แต่ว่าอ่านตามได้ง่ายๆ และที่สำคัญ ถ้าใครคุ้นๆ ชื่อ ก็คงจะร้องอ๋อ ว่านี่มันพวกที่ทำ Mathematica ซึ่งเป็น Mathematical Package ที่ถือกันว่าดีที่สุดตัวหนึ่งนี่นา (มีชื่อมากเรื่องประสิทธิภาพ เรื่อง programmability .. ภาษา Mathematica นี่สุดยอดมากเหมือนกัน และเรื่องความแม่นยำ — แต่ว่าแพงมาก) ใน blog นั้นเขาเขียนขาย/เชียร์ Mathematica มากไปนิด (ก็แน่นอน) ผมก็เลยเอาใจความตรงที่เป็นสาระของเรื่องนี้มาเขียนให้อ่านกันใหม่เป็นภาษไทยก็แล้วกันนะ ตามนี้เลย

  • มันยากเพราะว่าวิธีการทำ arithmetic ที่อยู่ในตำราคณิตศาสตร์เบื้องต้น (วิธีที่เราชอบคิดกัน) มันไม่มีประสิทธิภาพเพียงพอ เช่นการคูณเลข ถ้าเราต้องการคูณเลขที่มีตัวเลขทั้งหมด n ตัว จะต้องใช้การคูณทั้งหมด n^2 ครั้ง แต่ว่าจริงๆ แล้วจาก algorithm ขั้นสูง เราก็รู้วิธีการที่จะทำได้ใน n^1.58, n log n หรือแม้แต่น้อยกว่านั้นสำหรับ n ที่มีค่ามากๆ ดังนั้นถ้า n มันใหญ่พอ มันจะเห็นความแตกต่างได้ชัดเจนมาก เรื่องเวลาที่ใช้ในการคำนวณ (เสี้ยววินาที เทียบกับเป็นนาที อะไรทำนองนั้น) ตัวอย่างของ algorithm ดังกล่าวก็เช่น Karatsuba algorithm
  • Algorithm เหล่านี้ แม้ว่าจะมีประสิทธิภาพสูงกว่า (และมีความแม่นยำสูงกว่า) วิธีการแบบ school-book มาก .. แต่ว่าเนื่องจากความซับซ้อนของมัน ก็ทำให้พวกมันมี bug ง่ายกว่าเช่นกัน
  • นอกจากนั้นยังมีเรื่องของการเก็บค่าตัวเลขทศนิยมไว้ในหน่วยความจำ ซึ่งปกติจะเก็บเป็นฐาน 2 เพื่อคำนวณ แต่ว่าเมื่อจะนำมาแสดงผล จะต้องเปลี่ยนฐานเลขให้เป็นฐาน 10 ซึ่งโดยปกติจะต้องทำการ round ตัวเลขฐาน 2 พวกนั้นให้เป็นเลขฐาน 10 ที่มีความใกล้เคียงที่สุด จากรูปข้างล่างนี่จะเห็นว่ามีความคลาดเคลื่อนในการแสดงผล


  • ปัญหาหลักๆ จริงๆ มาจากการทำ base conversion ซึ่งจาก binary เป็น decimal จะใช้การคูณเป็นหลัก และจาก decimal เป็น binary จะกลับกันคือใช้การหารเป็นหลัก ประเด็นมันอยู่ที่ว่า บางที (สำหรับตัวเลขบางตัว) การคูณหรือหารนั้นจะต้องทำที่ precision ที่มากกว่าตัวเลขนั้นๆ เพื่อให้ได้ค่าที่ถูกต้อง
  • แต่ว่าระบบคำนวณหลายระบบดันผูกติดกับ fixed precision ของ hardware ที่ใช้งาน ดังนั้นในหลายๆ งานจึงไม่สามารถที่จะได้การแปลงเลขฐานที่ถูกต้องสำหรับตัวเลขหลายๆ ตัว
  • ความผิดพลาดยังเกิดได้จาก “เลขทด” (carries) หรือตัวเลขที่เกิดจากกระบวนการทดเลขน่ะแหละครับ ซึ่งระบบซอฟต์แวร์หลายตัวก็จะทำงานพลาดถ้ามีการทดมากๆ ไป ซึ่ง bug แบบนี้มีมาตั้งแต่สมัยไหนสมัยไรแล้ว โปรแกรมหลายตัวในปัจจุบันก็ยังมีปัญหาเรื่องนี้อยู่นะ
  • ปัญหาหนักอีกที่หนึ่งสำหรับ computer arithmetic ก็คือ ในกรณีทั่วๆ ไป มันค่อนข้างจะ “ง่าย” ที่จะทำให้มัน “เกือบถูกต้อง” (คือ ถูกกับ input case ทั่วๆ ไป แต่ว่ากับ input บางตัวจริงๆ จะทำให้เกิดปัญหาขึ้นมา)
  • และปัญหาที่หนักที่สุดก็คือพวก bug กับตัวเลขบางตัวที่มี bit pattern บางประเภทจริงๆ พวกนี้จะหาเจอยากมากในระหว่าง testing หรือว่าเรียกได้ว่า rare bug เลยก็ว่าได้ มันหายากขนาดที่ว่าเราอาจจะทดสอบกับตัวเลขเป็นพันๆ ล้านตัว แต่ว่าไม่เจอพวกมันเลยก็ได้

ยังเชื่อใจโปรแกรมหลายตัวของท่านอยู่อีกหรือเปล่าเนี่ย?

อ้างอิง: Wolfram Blog: Arithmetic is Hard — To Get Right

ปล. หลังจากคุยกันเสร็จ ผมกับ peter ก็ joke เล่นกันต่อว่า เฮ้ย นี่แหละ เห็นมั้ย OpenOffice.org ไม่ compatible กับ MS-Office อีกอย่างแล้วนะ (ค่าที่คำนวณมันได้ไม่เท่ากัน ใส่ตัวเลขข้างบนเข้าไปแล้ว OO.o มันคำนวณถูก…) แถม peter เล่าให้ฟังว่า บางคนตลกร้ายกว่านั้น บอกให้เพิ่ม tag MultiplyLikeExcel2007 ลงไปใน spec ของ OOXML ด้วยนะ ขำกลิ้งเลย

ปล.2 จริงๆ Slashdot ก็มีลง แต่ว่าพักหลังๆ ผมอ่าน /. น้อยลงมั้ง ก็เลยไม่ค่อยได้สังเกตหรือว่าใส่ใจ อันนี้ link:

Computer Stupidities

มี website อยู่ที่หนึ่งนะ ที่ผมเคยชอบเข้าไปดูเมื่อก่อน (ตอนนี้ก็ once in a while) เข้าไปหาเรื่องสนุกๆ อ่านเล่น

ไม่มีอะไรมากกว่าการเป็น web รวมเรื่องราวต่างๆ ที่มีคน submit กันเข้ามา ส่วนมากจะเป็นเรื่องตลกๆ เวลาที่มีใครไปเจอคนทำอะไรเปิ่นๆ เพราะว่าความเข้าใจผิดแบบไม่น่าเชื่อ มีแบ่งเรื่องราวไว้เยอะแยะ เช่น

  • Piecing it together (เอาเรื่องโน้นเรื่องนี้มาจับแพะชนแกะกันมั่ว)
  • Operating System (ความเข้าใจผิด เรื่องขำขัน เกี่ยวกับ OS)
  • Programming (ใครเรียน CS/IT/CE ต้องอ่าน!)
  • Mincing Words (เอาคำมายำกัน)
  • Paranoia (ความกลัวจากความเชื่อผิดๆ จนเข้าขั้นวิตกจริต)
  • Stupid Tech Support (อันนี้ขำมาก)
  • Stupid Salesman (อันนี้ด้วย)
  • ……. เยอะแยะ เข้าไปอ่านเองนะครับ

เมื่อก่อนอ่านก็ขำนะ แต่ว่าทำไมเดี๋ยวนี้มันต้องหัวเราะแห้งๆ ก็ไม่รู้ ขำไม่ออกมากขึ้นหลายๆ อย่าง แต่ว่าก็ยังเข้าไปอ่านอยู่ดี มีความรู้สึกว่าดีกว่าอ่านกระทู้ที่ web หลายๆ web หน่อยนึงมั้ง

อืมมม แต่ว่าจริงๆ คงต้องมองย้อนกลับไปที่ต้นตอของปัญหามากขึ้น ด้วยความรู้สึกส่วนตัวอย่างหนึ่งที่มีมานานแล้วนะ คือ computer แล้วก็ information technology มันกลายเป็น mainstream เร็วเกินไป เร็วเกินกว่าที่คนจะมี literacy กับมันมากพอ คือทุกวันนี้ computer กลายเป็นอุปกรณ์มาตรฐานอย่างหนึ่งในการใช้ชีวิต การทำงาน การเรียน การติดต่อ ฯลฯ แต่ว่ามันต่างจาก TV, วิทยุ, โทรศัพท์, projector, ฯลฯ มากมายมหาศาล เรียกว่ามันคนละ order of magnitude เลยก็ว่าได้

พูดง่ายๆ ว่าเราสามารถใช้ TV ได้โดยไม่ต้องคิดว่ามันจะตีกับวิทยุหรือเปล่า แต่ว่าถ้าเราเปิดโปรแกรมดูหนังพร้อมกันกับโปรแกรมฟังเพลง มันอาจจะตีกันทำให้ crash กันได้ไม่ยากเย็นเลย หรือว่าเราสามารถที่จะใช้เครื่องคิดเลข กับเครื่อง word processor ได้โดยไม่ต้องคิดว่าพวกมันแย่งทรัพยากรกันยังไง (นอกจากค่าไฟค่าแบตเตอรี่จากกระเป๋าเรา) หรือว่าเรื่องไวรัสที่ติดกับโปรแกรมตัวนึงอาจจะทำลายไฟล์ได้ทั้งเครื่อง ฯลฯ

เท่าที่ทดสอบดูนะ ทั้งคนในวงการคนนอกวงการ เป็นพวกนักศึกษาก็เยอะ คนที่ใช้คอมพิวเตอร์จริงๆ มีความเข้าใจหลายเรื่องที่ผิดพลาด สับสน ซึ่งขอออกตัวเลยนะ ว่า “มันไม่ใช่ความผิดของเค้า” แต่ว่าผมเป็นห่วงน่ะ

ช่วยกันได้ก็ช่วยๆ กันไปนะครับ เรื่อง computer/information literacy กับคนใกล้ตัวเนี่ย สำคัญเชียวแหละ อ่าน web นั้น อ่านกระทู้ทั่วไปตาม webboard หรือว่าเจอคนใกล้ๆ ตัว ก็ช่วยกันสร้างความเข้าใจที่ดีขึ้นกับ computer เถอะครับ มันใกล้ตัวกว่าที่เราคิด

Pointless Programming : Java 7

จริงๆ เค้าเรียกว่า Point-Free Programming (HaskellWiki) หรือว่า Tacit Programming (Wikipedia) นะ :-P ผมเขียนชื่อล้อเลียนไปงั้นเอง เรื่องนิยามหรือว่าตัวอย่างลองไปดูใน Wiki link ด้านบนเอานะครับ แต่ว่าผลของมันเนี่ย มันมักจะทำให้โปรแกรมสั้นขึ้น ในขณะที่มันก็ยังอ่านง่ายขึ้นด้วยเออสิ แล้วมันเกี่ยวอะไรกับ Java 7 ล่ะเนี่ย? เพราะว่าใน spec ของ Java 7 มันจะมีเรื่อง Closures เข้ามาเกี่ยวข้องด้วย แล้วก็จะมีเรื่องอื่นๆ ที่เอา idea จาก Functional programming มายัดลงไปในภาษาที่มันค่อนข้างจะ bloat และ verbose ที่สุดภาษานึง ทำให้มันสั้นลง กระชับขึ้น น่าอ่านน่าเขียนขึ้นแบบไม่น่าเชื่อ ลองดูตาม Link ต่อไปนี้นะครับ

ส่วนนิยามของ Closures ในแบบ Computer Science และ Software Development จริงๆ ก็ตามนี้ครับ Closure (computer science) – Wikipediaขอปิดท้าย post นี้ด้วยเรื่องของ Point-Free Programming ใน Java 7 ครับ สวยดีเหมือนกัน ดูรายละเอียดเต็มๆ ที่นี่: Ricky’s technical blog: Point-free Programming in Java 7 – Beyond Closuresผมว่าโลกมันกำลังหมุนไปในทิศทางที่มันถูกต้องนะ ที่ในที่สุดก็เริ่มจะมีการเอา idea ของ Functional programming มาใช้ในภาษาโปรแกรมที่เป็น mainstream เสียที เพราะว่า programming model ของ Functional มัน elegance กว่า imperative เยอะมาก …สุดท้ายมันทำให้ผมนึกถึง paper ที่เป็น hall-mark สุดยอดอันนึงของ John Backus (ผมเคยเขียนถึงเรื่องเค้าทีนึงที่ Thai Mac Dev นะ) คือCan programming be liberated from the von Neumann style?: a functional style and its algebra of programs (Link ไปหา paper ที่ Stanford University)เมื่อ Java 7 ออกมาจริงๆ ผมคงจะต้องกลับมามองมันแบบ serious อีกที แต่ว่าเราก็ไม่รู้เหมือนกัน ว่าวันนั้นโลกมันจะหมุนไปถึงไหน และจะมี feature อะไรอีกบ้าง ใน niche programming languages ที่ทำให้ผมอ้าปากค้าง ตกหลุมรัก และมอง Java 7 “ในวันนั้น” ว่ามันไม่ elegance ….. อย่างว่าแหละครับ Programmers Don’t Like to Code ;-)

เปลี่ยนภาษาเขียนโปรแกรม

อะไรยากกว่ากัน ระหว่าง

  1. สอนคนที่เขียนโปรแกรมเป็นแล้ว ให้เปลี่ยนภาษา
  2. สอนคนที่เขียนโปรแกรมไม่เป็น ให้เขียนโปรแกรมเป็น

หลายคนจะตอบข้อ 2 โดยไม่ลังเลเท่าไหร่ เพราะว่าถ้าเป็นภาษาหนึ่งๆ แล้ว เรียนอีกภาษาหนึ่งคงไม่ยากเท่าไหร่ สาเหตุหนึ่งก็คงเพราะว่าภาษาส่วนมากมีรากที่คล้ายๆ กัน เช่น Pascal, C, C++, Java, C# ถ้าเป็นภาษาใดภาษาหนึ่งแล้ว การเรียนรู้ syntax ของอีกภาษาหนึ่งก็ไม่ใช่เรื่องยากเย็นเท่าไหร่แต่ว่าสอนคนที่เขียนโปรแกรมไม่เป็นให้เขียนโปรแกรมเป็นนี่สิ งานช้าง เพราะว่าอาจจะต้องสอนแนวคิด หลักการคิดแบบคอมพิวเตอร์ หลักการคิดแบบ von Neumann machine หลักการคิดแบบที่เราต้องใช้เวลาเขียนโปรแกรม ฯลฯ ซึ่งอาจจะยากหน่อย ไหนเลยจะต้องมานั่งเรียนรู้ syntax อีกแต่ว่าถ้าเปลี่ยนคำถามหน่อยนึงล่ะ เปลี่ยนข้อที่ 1 ให้เป็น

  1. สอนคนที่เขียนโปรแกรมเป็นแล้ว ให้เปลี่ยน paradigm ในการเขียนโปรแกรม

ไอ้นี่อาจจะเป็นงานช้างพอๆ กัน หรือว่าช้างกว่าการสอนคนที่เขียนโปรแกรมไม่เป็นให้เขียนโปรแกรมก็ได้ เพราะว่าคนเราพอมันชินกับวิธีคิดแบบไหนแล้ว การจะเปลี่ยนรูปแบบของวิธีคิด การที่จะออกจาก The Matrix ของกระบวนการคิดของตัวเอง หรือว่าลักษณะการคิดของตัวเองได้ นี่คงจะยากเย็นแสนเข็ญมิใช่น้อย จะยกตัวอย่างดังนี้

  • นึกถึงโปรแกรมที่ประกาศตัวแปรไม่ต้องประกาศ type แต่ว่าก็ยังเป็น strong typing ออกไหม
  • นึกถึงโปรแกรมที่ไม่ต้องประกาศ main function ออกไหม
  • นึกถึงภาษาโปรแกรมที่ไม่มี loop ออกไหม
  • นึกถึงภาษาโปรแกรมที่ฉลาดพอที่จะทำ list comprehension (เช่นบอกว่า จะเอา x จาก list L โดยที่ x มากกว่า 3 แล้วมันเข้าใจว่าจะต้องทำอะไรโดยที่เราไม่ต้องเขียน low-level instruction)

นอกจากเรื่องพวกนี้จะยาก เพราะว่าพอสมองเราถูก over-train ให้ชินกับอะไรบางอย่างมากๆ แล้ว มันจะเรียนรู้สิ่งใหม่ยากขึ้น มีอะไรที่ต้อง unlearn มากขึ้น อย่าว่าแต่ imperative vs. functional programming เลย แค่ procedural vs. object-oriented ก็แย่แล้ว การที่เราจะ unlearn เรื่องหนึ่งๆ แล้วปรับไปสู่เรื่องใหม่ เป็นเรื่องที่ค่อนข้างยากเอาการทีเดียวไม่ใช่แค่นั้น แต่ให้เขียน style เดิม แต่ว่าเปลี่ยนภาษาเขียนโปรแกรม ก็ยากแล้ว

  1. สอนคนที่เขียนโปรแกรมเป็นแล้ว ให้เปลี่ยนภาษา โดยต้องใช้เป็นภาษาหลักในกรณีทั่วไปแทนภาษาเดิม

ผมเห็นน้องหลายคนเขียน Ruby กันมาพักนึง (เพราะว่างานบางงานที่อาจจะต้องใช้ Rails) แต่ว่าพอลองตั้งโจทย์ที่มองไม่เห็นชัดว่าจะใช้ความสามารถของภาษาตรงไหน (ให้สร้าง permutation ของ list) น้องหลายคนก็ fall-back กลับไปเขียน C เหมือนเดิมไม่แปลกอะไร เพราะว่าจริงๆ แล้วผมเอง บางทีขนาดโปรแกรมง่ายๆ ก็ยังดื้อจะเขียน C++ กับ STL อยู่เลย ทั้งๆ ที่รู้อยู่แก่ใจว่า Ruby, Python, Haskell มันก็ทำได้ และจะง่ายกว่าด้วย แต่ว่าทำไมนะ ทำไมผมถึงยังจะดื้อที่จะ fall-back ไปเขียน C++ อยู่ดี?ความเคยชินบางอย่างมันแก้กันยาก อาจจะเป็นเพราะว่าผมใช้เวลาอยู่กับ C++ มานานกว่าภาษาอื่นๆ และทำงานจริงในภาษาตระกูล C มานานกว่าภาษาอื่นๆ หลายเท่าตัวก็ได้ (C, C++, Objective-C)เปล่าหรอกครับ ผมไม่ได้ถามเพื่อหาคำตอบใดๆ เพราะว่านี่คือธรรมชาติของมนุษย์ อะไรก็ตามที่เราทำจนเป็นนิสัย จนเป็น second nature แล้วมันอาจจะเปลี่ยนแปลงยากมาก หลายเรื่องเราเปลียนไม่ได้ เพราะว่าเรามีความรู้สึกว่า “เคยทำ” อะไรที่มันคล้ายๆ กันมาก่อนในลักษณะนั้นอยู่แล้ว (เช่นเวลาผมจะเขียนโปรแกรมง่ายๆ บางทีผมใช้ C++ โดยไม่มีเหตุผล ทั้งๆ ที่เขียน Ruby ง่ายกว่าเยอะ ส่วนหนึ่งเพราะว่าผม “เคยทำ” สิ่งนั้นมาแล้วใน C++ มั้ง)ผมเลยมีข้อสังเกตและข้อเสนอแนะให้น้องๆ ที่อยากจะเขียนโปรแกรมภาษาใหม่นะครับ ดังนี้

  1. เขียน code ภาษานั้นให้เยอะที่สุดและเร็วที่สุด โดยอย่าเอาแต่ลอก code จากหนังสือหรือว่า tutorial เพราะว่าคุณจะไม่ได้ใช้งานจริง และไม่ได้ force ให้ตัวเองคิดในลักษณะของภาษาใหม่ๆ เท่าไหร่
  2. เรียน standard library ของภาษานั้นๆ ให้มากที่สุดในเวลาที่น้อยที่สุด เพื่อให้รู้ว่ามันพอจะทำอะไรให้เราได้บ้าง โดยไม่ต้องลงอะไรเพิ่มเติม แล้วก็ลองดูว่ามันเอามาทำอะไรให้ชีวิตเราง่ายขึ้นได้บ้าง
  3. หักดิบ อย่าเล่นภาษาเดิมเท่าที่จะทำได้ ถ้าจำเป็นจริงๆ ก็ลองลบ compiler ภาษาเดิมทิ้งไปเลย
  4. อย่าเอาแต่เรียน syntax กับ library นะ เพราะว่าสิ่งที่สำคัญที่สุดสิ่งหนึ่งที่แทบทุกคนลืม ก็คือ การเรียน idiom ของภาษานั้นๆ ยิ่งหลายภาษา โดยเฉพาะพวกภาษาใหม่ๆ เป็นพวก expressionism ซะด้วยสิ แบบนี้ idiom ยิ่งสำคัญมากเข้าไปอีก
  5. ยิ่งถ้าเป็นการเรียนภาษาคนละ paradigm กับที่เคยเขียนนะ ยิ่งไปกันใหญ่ เพราะว่าลักษณะการเขียน วิธีคิด idioms ต่างๆ มันจะต่างกันมาก มากๆ ถึงมากที่สุด
  6. ยากนะ แต่ว่าหลายครั้งต้องคิดนอกกรอบเดิม ถ้าคิดตามกรอบเดิมล่ะก็ คุณก็จะไม่ได้เขียนภาษาใหม่หรอก แต่ว่าจะเขียนภาษาเดิมน่ะแหละ แต่ว่าอยู่ใน syntax ใหม่เท่านั้นเอง
  7. ทำงานจริง เพราะว่าทำงานจริงเท่านั้นที่จะบังคับให้เราต้องอยู่กับภาษาโปรแกรมภาษาใหม่และกระบวนการคิดของมัน ยิ่งทำงานจริงแบบมี deadline ด้วยแล้วล่ะก็ ยิ่งดี เพราะว่าเป็นการบังคับให้เรายิ่งต้องคิดและ figure out การทำงานต่างๆ และ idioms ของมันให้ได้เยอะที่สุด เพื่อประโยชน์สูงสุด และให้งานเสร็จเร็วที่สุด
  8. หา library เพื่อช่วยงานโน้นงานนี้เยอะๆ มีของเล่นเยอะๆ แล้วลองเล่นกับมัน เดี๋ยวก็ชินกับมันไปเองแหละ
  9. ดูภาษาอื่นๆ ใน paradigm เดียวกันบ้าง เพื่อหาข้อเปรียบเทียบหน่อยๆ ก็ดี
  10. ระลึกไว้ ว่าไม่ใช่ทุกภาษาเหมือนกัน สิ่งที่ผิดหลักการในภาษาหนึ่ง อาจจะเป็นสิ่งที่ถูกหลักการและควรทำในอีกภาษาหนึ่งก็เป็นได้ ดังนั้นอย่ายึดติดกับหลักการและข้อบังคับข้อกำหนดต่างๆ ของภาษาหนึ่งๆ มากไปนัก
  11. พยายามมองหาโอกาสใช้มันให้เยอะที่สุดเท่าที่จะทำได้ และอย่าเลี่ยงโอกาสในการใช้มันซะล่ะ

จริงๆ เรื่องนี้ยังเขียนได้อีกยาวมาก แต่ว่าวันนี้พอแค่นี้ก่อน ชักเหนื่อย แต่ขอปิดท้ายด้วย quote ดังจากคนดัง

Anyone could learn Lisp in one day, except that if they already knew Fortran, it would take three days.Marvin Minsky

Blognone Tech Day 3.0

ก็ผ่านไปแล้วนะครับ สำหรับงาน Blognone Tech Day (BTD) 3.0 ซึ่งคราวนี้ผมโดน mk ลากไปเป็นวิทยากรด้วย (ซึ่งทำให้ mk ต้องมาพูดใช้หนี้ที่ศิลปากรวันถัดไป แล้วเราก็คุยกันต่อ)

ผมคงจะไม่เขียนสรุปอะไรว่าแต่ละคนพูดอะไรนะครับ เพราะว่าอันนั้นมีคนทำไว้แล้วเยอะ เช่นที่ sugree’s blog, Pok’s blogger, จ๊ะเอ๋อยากเล่า, ch_a_m_p’s blog ซึ่งจริงๆ ก็คงมีที่อื่นๆ อีก แต่ว่าเอาเป็นว่ามีคนสรุปไว้แล้วก็แล้วกัน ..​ งั้นผมขอเขียนความรู้สึกส่วนตัวจะดีกว่า

  • ได้เจอเพื่อนหลายคนที่นานๆ จะเจอกันที่ เช่น อ.มะนาว, พี่ sugree, bact’ (ที่น่าเสียดาย เหมือนจะอยู่ไม่นาน)
  • อ.มะนาว พาเพื่อนมาแนะนำให้รู้จักอีกคน ซึ่งพอเราเห็นกำลังนั่งอ่านหนังสือ Agile Web Dev with Rails ที่เราเคยเขียนด่าถึงด้วย ก็เลยให้ดูความแข็งแกร่งของหนังสือเล่มนั้นหน่อย ว่ามันเกรียนเทพแค่ไหน … คนที่เคยอ่านลองไปหาหน้าที่บอกวิธีการติดตั้ง Ruby บน Mac ดูนะครับ จะเห็นคนเขียนเกรียนถึงโปรแกรม DAVE (ซึ่งจริงๆ มันก็มีจริงๆ อ่ะนะ แต่ว่าไม่เกี่ยวกับผมนะ) …. แถจริงๆ เพราะว่าคนเขียนหนังสือต้นฉบับเค้าชื่อ Dave Thomas อ่ะนะ มันก็เลยมี prompt ชื่อ dave มาด้วย แบบว่า
    dave> some_command_here ...
    

    นะ เกรียนสุดๆ จริงๆ

  • ได้คุยกันเรื่อง ฮาๆ หลายเรื่องที่ถ้าไปคุยกันข้างนอกก๊วนที่มา (แม้แต่จะไปคุยในภาควิชาคอมพ์ หรือว่าคนทำงาน IT ก็เถอะ) อาจจะมีหน้างงๆ กันเยอะ ไม่ฮา ไม่ขำ เพราะว่ามันอาจจะ geek เกินไป
  • apirak มาบอกหลังไมค์ ว่าตอนที่ผมถาม นี่น่ากลัวโคตรๆ เลย หรือว่าผมมีความสามารถพิเศษในการกดดันชาวบ้านก็ไม่รู้แฮ​ะ ทั้งๆ ที่เราก็คิดว่าเราถามธรรมดานะ
  • น่าเสียดายที่มีเวลาให้ผมพูดน้อยไปหน่อย เลยไม่มีเวลาเล่นเกมสอนทำอาหาร (อะไรเนี่ย ..) ทั้งๆ ที่เรียกน้อง Ford Antitrust ออกไปหน้าเวทีแล้วนะ แต่ว่าเนื่องจากเวลาน้อย + คนฟังยังเขินๆ กันอยู่ด้วย ไม่ค่อยจะเล่นกับเราเท่าไหร่ น้อง Ford เลยออกไปเก้อเลย
  • น่าเสียดาย น่าเสียดาย เพราะว่าเกมนี้จะฮามาก แล้วก็จะเข้าใจเรื่อง short-term memory กับเรื่องการเรียนรู้และการท่องจำขึ้นอีกเยอะมาก ถ้าคิดว่าผมพูดเนี่ย ฮาแล้ว จี้ใจดำแล้ว เกมนี้จะเจ๋งกว่านั้นอีก คราวนี้รบกวนช่วยเล่นนิดนะคร้าบบบบ
  • แต่ว่าไปงานแบบนี้แล้ว บอกตามตรงว่า ใจชื้น เหมือนกับว่างาน Blognone เนี่ย เป็นน้ำหล่อเลี้ยงใจที่มันห่อเหี่ยวมานานของผมได้อย่างไม่น่าเชื่อ
  • เห็นน้องที่ชนะ Imagine Cup เห็น (video) โปรแกรมที่เค้าทำ เห็นการใส่ใจกับทุกรายละเอียด การสร้าง WOW factor การคำนึงถึงผู้ด้อยโอกาสและพยายามประยุกต์เทคโนโลยีมาช่วยได้อย่างเจ๋ง ….. ผมอยากให้น้องๆ กลุ่มนี้หรือว่ากลุ่มอื่นๆ ที่มีความสามารถ มีโอกาสทำอะไรเพื่อสังคมจริงๆ จังๆ เมื่อเรียนจบบ้างจัง แทนที่จะเข้าไปอยู่ในบริษัทใหญ่ๆ โตๆ บางบริษัท เงินเดือนสูงๆ แต่ว่าสังคมไม่ได้อะไร (ถ้าได้ทั้งสองอย่างก็เยี่ยมครับ win-win)
  • เห็นน้องจากกลุ่ม Ubuntu Club ที่ทำให้ผมอ้าปากค้าง … เนี่ยมันเด็ก ม.ต้น นะครับพี่น้อง แหม ตอนที่ผม ม.ต้น ผมยังทำอะไรไม่รู้อยู่เลย เด็กส่วนมากที่ผมเห็นที่ศิลปากร ยังไม่ได้ “สนใจ” อะไรแบบนี้เลย น้องครับ ผมขอบอกว่า น้องเยี่ยมมาก ผมแทบไม่ได้ปรบมือให้ใครด้วยความเต็มใจอย่างยิ่งยวด และรู้สึกชื้นสุดๆ ในใจมานานแล้ว
  • ผมเห็นว่าประเทศนี้ยังมีอนาคตครับ อย่างที่พี่ sugree เขียนไว้ใน blog เรื่องงาน BTD ว่าประเทศไทยมันคือ The Matrix นี่หว่า แล้ว Red Pill มันอยู่ไหน มีแค่ไม่กี่คนที่หลุดพ้นออกจากระบบแล้วกลายเป็นคนกำหนดอะไรบางอย่างในช่วงบางช่วง
  • ผมเชื่อว่ามีเยอะครับ คนที่อยู่ในระบบ แล้ว so dependent on the system และ/หรือ not ready to be unplugged แต่ว่าผมก็เชื่อเช่นกัน ว่าบางคนนะ ที่เค้ารู้สึกว่า there’s something wrong with the system แต่ว่าเค้าบอกไม่ได้ว่าอะไร เค้าบอกไม่ได้ … เราต้องค้นหาเค้า ค้นหาคนเหล่านั้น spend sometime searching The Matrix หาคนที่เริ่มรู้สึกเช่นนั้น ….. พาให้เค้าเห็นโลกอีกด้านหนึ่งของรั้ว เค้าอาจจะหลุดพ้นออกมาก็ได้

สรุปว่า เสียดายครับ ถ้างานนี้จะเป็นครั้งสุดท้าย (ส่่วนหนึ่งอาจจะเป็น mk จะไปเรียนต่อ) ถ้าครั้งต่อไป ผมอยากให้ไปจัดที่อื่นบ้าง (ซึ่งก็คุยกับ mk ไว้แล้ว) ถ้ายังไงที่ ศิลปากร ตลิ่งชัน อาจจะเป็นอีก option หนึ่ีงก็ได้นะครับ (ผมเสนอไว้ก่อน) อาจจะต้องมีค่าเช่าที่ แต่ว่าก็คงจะจัดการได้ไม่ยากเย็นเท่าไหร่ เผื่อว่าเด็กที่อื่น จะได้มีโอกาสได้เข้ามาฟังและเปิดโลกของตัวเองบ้าง