เมื่อสองสัปดาห์ก่อน Blognone เพิ่งครบรอบ 10 ปีไป และเราก็จัดงานพบปะระหว่าง Writer ทุกท่าน ของแจกอย่างหนึ่งในงานคือ Arduino Leonardo ตามความเชื่อของเราที่เชื่อว่าในสิบปีข้างหน้าโลกไอทีจะไม่หยุดอยู่เพียงแค่พีซี, แท็บเล็ต, และโทรศัพท์มือถือ แต่โลกไอทีจะแพร่กระจายเข้าไปในทุกส่วนของชีวิตของเรา อุปกรณ์ต่างๆ ที่เราไม่เคยคิดว่าจำเป็นต้อง "ฉลาด" จะเริ่มฉลาดขึ้นเรื่อยๆ และเราจะชินกับประโยชน์ที่ได้จากความฉลาดเหล่านั้นไปโดยไม่รู้ตัว
ก่อนงาน 10 ปี Blognone ผมปรึกษากับ mk ว่าเราควรมีของที่ระลึกพิเศษให้กับ Writer เป็น Arduino สักตัว เพราะไม่แพงเกินไปที่เราจะหามาให้ได้ ผมศึกษาดูสักพักและเจาะจงว่าต้องเป็น Arduino Leonardo เพราะเหตุผล ว่ามันใช้ชิป ATmega32u4 ที่มีความสามารถทำตัวเองเป็น USB device ได้โดยตรง ถ้าใครสังเกตจะพบว่ามันไม่มีชิป USB-to-UART บนบอร์ดแล้ว ความสามารถนี้ทำให้ทุกท่านที่ได้รับ สามารถทำคีย์บอร์ดใช้เองแบบเดียวกับที่ผมเคยทำมาก่อน แถมง่ายกว่ามากเพราะใน Arduino Leonardo มีไลบรารี Keyboard และ Mouse ครอบ LUFA ที่อยู่ด้านล่างให้เรียบร้อย การโค้ดโดยรวมง่ายกว่ามา ข่าวร้ายคือไลบรารีของ Arduino ไม่รองรับไฟ Caplock ทำให้เอาไปใช้ทำโครงการแบบผมผ่านการโค้ดจาก Arduino IDE ไม่ได้
โค้ดของโปรแกรมที่อัพโหลดไว้ให้ในบอร์ด จะทำให้ Arduino เป็นคีย์บอร์ดที่สุ่มเข้าหน้าเว็บ Blognone ทันที กระบวนการสุ่มใน Arduino ไม่สามารถสุ่มเฉยๆ ได้เพราะจะทำให้ค่าเหมือนเดิมทุกครั้งที่บูตเครื่องใหม่ ปัญหาเช่นนี้จะชัดเจนมากในคอมพิวเตอร์ขนาดเล็กทำงานเฉพาะ จากเดิมที่คอมพิวเตอร์ทั่วไปสร้างค่าสุ่มจากนาฬิกา ใน Arduino นั้นไม่มีนาฬิกาในเครื่องทำให้การสร้างค่าสุ่มทำได้ยากยิ่งขึ้น ผมแก้ปัญหาพื้นฐานไปด้วยการ seed ค่าสุ่มจากขา analog0 ที่ไม่ได้ต่ออะไรไว้ ทำให้ค่าดูจะสุ่มพอสมควร ส่วนนี้จริงๆ แล้วก็ยังไม่ดีนัก (เพราะค่า seed จาก analog มีจำกัด หากเปิดเครื่องบ่อยๆ ค่าสุ่มก็จะซ้ำอยู่ดี) แต่เป็นโจทย์ให้ชาว Blognone ไปคิดต่อกันเองว่าถ้าจะทำให้กระบวนการสุ่มดีขึ้นควรทำอย่างไรได้บ้าง
สำหรับ Writer ท่านอื่นๆ ที่ไม่ได้ไปร่วมงาน โพสนี้แจ้งทุกท่านว่า Blognone จะส่งไปให้ทุกท่านถึงที่อยู่ในประเทศไทย ตามที่ท่านแจ้งมา กติกาคือขอให้ใช้อีเมลที่สมัครใน Blognone เท่านั้น แจ้งชื่อผู้รับและที่อยู่ ไปยัง admin@blognone.com ภายในเดือนกันยายนนี้ เพื่อให้เราจัดส่งให้ต่อไป