My Best Gadgets of 2016

รองเท้า Onitsuka Tiger Serrano

  • ข้อดี
    • เบา ใส่สบายเท้า พื้นนุ่มใส่เดินได้นาน ไม่เหมือนรุ่น Mexico
  • ข้อเสีย
    • ใส่สมบุกสมบันไม่ได้ ใส่เดินนานๆ (ย้ำว่านานแบบทั้งวัน) ก็ไม่สบายอยู่ดีแหละ

รองเท้า Keen Men’s Clearwater CNX

  • ข้อดี
    • เบา ใส่สบายเท้า ใส่เดินได้นาน ทนโคตรๆ
  • ข้อเสีย
    • เห็นรองเท้าโปร่งๆ แบบนี้แต่ใส่แล้วร้อนเท้าเหมือนกันนะ

Continue reading “My Best Gadgets of 2016”

Final Fantasy XV

Final Fantasy XV (wiki) เป็นเกมเปิดตัวมาตั้งแต่ปี 2006 ในชื่อ Final Fantasy Versus XIII (เป็นส่วนหนึ่งของมหากาพย์ FF 13) แต่ก็ติดปัญหา “development hell” เลื่อนแล้วเลื่อนอีกจนขยับฐานะมาเป็นภาคหลักซะเลย ซ้ำด้วยการเปลี่ยน Director อีกรอบ แล้วเลื่อนก็เลื่อนแล้วเลื่อนอีกจนมาออกเมื่อวันที่ 29 พฤศจิกายนที่ผ่านมาครับ

Final Fantasy XV เล่าเรื่องราวในโลกที่ชื่อ Eos เมื่อเจ้าชาย Noctis แห่งเมือง Lucis ได้รับคำสั่งให้ไปแต่งงาน (เพื่อผลประโยชน์ทางการเมือง) กับ Lunafreya ผู้เป็น Oracle (ผู้รับพรจากเทพทั้ง 5) ที่เมือง Altissia เขาและเพื่อน/ราชองครักษ์อีก 3 คนได้แก่ Gladiolus, Ignis และ Prompto (หรือจะเรียกมันว่าพร้อมตายก็ได้) จึงขับรถที่ชื่อ Regalia ออกเดินทางแบบ road trip กันไปดื้อๆ พร้อมเรื่องราวมากมายที่เกิดขึ้นไปตลอดทาง


สิ่งที่ดีที่สุดในเกมนี้คือ Cindy
Continue reading “Final Fantasy XV”

Quick Note: TypeScript

เพิ่งเจอลูกค้าใช้ภาษา TypeScript (Wiki) เห็นว่าน่าสนใจเลยลองศึกษาดูสักพักล่ะ

  • มันเป็นภาษา Super Set ของ JavaScript ที่คิดค้นโดยเทพ Anders Hejlsberg
  • เพราะว่า JS มันโคตร flexible จนเราเขียนให้มันผิดพลาดได้ง่ายๆ TypeScript ก็เลยแก้ปัญหาด้วยการเพิ่มความเป็น Static Type, Scope, Class-based OOP เข้าไปใน ECMAScript syntax แล้ว compile ออกมาเป็น JS หรือ ECMAScript ver ต่างๆ ได้เลย ปัญหาพวก type ก็ detect กันตอน compile นี่แหละ
  • เพราะมันเป็น Super Set ของ JS ดังนั้นเราเขียน JS ใส่มันไปดื้อๆ ก็ compile ผ่าน
  • ถ้าทำงานกับทั้งภาษา Dynamic กับ Static Type พร้อมๆ กันแล้วจะรู้สึกว่ามันเป็นธรรมชาติมาก ดูไม่ฝืนความเป็น JS แต่ถ้าทำงานกับภาษา Dynamic ล้วนน่าจะชอบ CoffeeScript มากกว่า
  • โดยรวมทำให้เขียน code ช้าลงนิดนึง แต่ได้ความมั่นใจเรื่อง type, การเขียน class แบบที่คุ้นเคยมา
  • ข้อเสียคือเวลาทำงานกับ JS library อื่นๆ มันต้องการ file definition (.ts.d หรือ typing) ที่ระบุ structure ของ function, class, type, module ของ library นั้นๆ เพื่อให้มัน compile ผ่าน (อารมณ์ .h ของภาษา C)
  • ถ้าเป็น lib ดังๆ แบบ jQuery, Angular, React พวกนี้มีคนทำ file พวกนี้ให้อยู่แล้ว แต่คำถามที่สำคัญคือบางคนทำ file พวกนี้ก็ไม่ใช้คนที่เขียน lib นั้น ดังนั้นก็ต้องดูกันยาวๆ ว่าจะไล่แก้ file definition ตาม update ได้ตลอดไหม
  • ถ้าเป็น lib internal (หรือ legacy) lib เนี่ยยากสุดๆ ที่จะมีเจ้า file นี้หรือเขียน file นี้้ย้อนหลัง ขนาดจะลองกะ JS API ตัวเองยังต้องไปเอา file นี้จากลูกค้า (ซึ่ง decompile API ผมออกมาเขียนไอ้ file นี้) มาใช้เลย
  • ส่วนตัวคิดว่าถ้าเป็น Project ใหม่ + ใช้ lib ที่สนับสนุน TypeScript (เช่น Angular 2) หรือ lib ที่เราเขียนใหม่เองก็น่าสนใจที่จะใช้มัน
  • แต่ถ้าทำงานกับ legacy lib เยอะๆ ก็… ตัวใครตัวมัน

ป.ล. กำลังหัดอยู่จาก link TypeScript Tutorial เข้าใจง่ายดี