Posts

Star Trek Memories: I, Borg and The Inner light

Image
หลังจากช่วงที่ผ่านมาไม่ค่อยมีเวลาดู #TNG เท่าไร เลยค่อนข้างเบื่อๆ เพราะเริ่มรู้สึกว่าเนื้อเรื่องมันเดิมๆ ไม่ค่อยลึก แต่สองวันนี้เจอตอนเด็ดๆ สองตอนเลย เลยคิดว่าจะบันทึกเก็บไว้ซักหน่อยสองตอนที่ว่าคือ I, Borg (s05e23) กับ The Inner Light (s05e25) ถ้าอยากไปเสพเองไม่อยากโดนสปอย ก็ไม่ต้องอ่านต่อแล้วครับ I, Borg ตลอดชีวิตการดู TNG ที่ผ่านมาเราถูกฝังหัวว่า Borg แม่งชั่ว แม่งจะกลืนกิน แม่ง Resistance is futile ไรงี้ ตอนนี้คือไปเจอ Borg ตนนึง ซึ่งรอดชีวิตจากยานตกไปแล้ว Enterprise ไปช่วยชีวิตไว้ ซึ่งก่อให้เกิดคำถามตามมาว่าเราช่วยชีวิตศัตรูทำไม ควรจะทำลายมัน ไม่ควรเอามา เดี๋ยวจะซวยเอา เพราะพวก Borg จะตามมาช่วย แล้วจะโดนกลืนกินกันหมด ด้วยความเกลียด ความกลัว ทำให้เกิดความคิดที่เราละทิ้งมโนสำนึกพื้นฐานไปคือ ต้องช่วยชีวิตคน ในกรณีนี้คือ Borg ซึ่งต่อมาถึงแม้กัปตันจะยอมให้ช่วย แต่ก็เพื่อจะส่งกลับไปเป็นอาวุธทีแพร่ไวรัสทำลายล้าง Borg ให้สิ้นซาก โดยให้มัน Solved ปัญหาเรขาคณิตที่ไม่มีวันแก้ได้
ความเจ๋งของตอนนี้คือ พอเวลาผ่านไป แต่ละคนที่ได้เริ่มคุยกับ Borg เริ่มรู้สึกถึงความอันตรายน้อยลง ลดอคติที่มองจากรูปลัก…

[Neovim] ยกเครื่องนักไต่ปี 2017

Image
วันก่อนตอนประชุมพยายามจะใช้ vim ไต่โค้ดหาของ แต่รู้สึกขัดๆ จนอยากจะเปิด PyCharm ที่ใช้เป็นปกติขึ้นมาเปิดแทน แต่ก็ขี้เกียจรอเลยได้แต่ทนไต่ๆ ผ่าน NERDTree ไปจนรู้สึกขัดใจว่า เห้ยนี่อุตส่าห์แต่งมาแทบตาย แต่ลืมวิธีใช้ไปหมด แล้วมันจะมีประโยชน์อะไร สองสามวันที่ผ่านมาเลยนั่งๆ ไล่ดูเครื่องมือนักไต่ที่ใส่ไว้ แล้วก็อัพเดทอะไรนิดหน่อย สรุปว่าเร็วกว่าเปิด PyCharm อีก
นักไต่ตัวที่หนึ่ง CtrlP
       ผมใช้ CtrlP มานานจนจำไม่ได้แล้ว แล้วก็ใช้มันทั้งยังนั้นโดยที่ยังไม่ได้ทำอะไรเพิ่ม ทีนี้เนี่ย ผมเริ่มสังเกตุมาซักปีกว่าละ (อดทนชิปหาย) ว่ามันใช้เวลา load file ตอนแรกนานอึดใจนึงเลย ถ้าเป็นโปรเจ็คใหญ่ๆ หลายพันไฟล์ search ไปมา คนก็ไล่ไปใช้ fzf บ้างแต่ใจมันก็ยังอยู่กับ CtrlP เลยไปเจอ blog บอกว่าแทนที่จะถามว่า เราจะทำยังไงให้มันโหลดเร็วขึ้น ให้ถามว่าเราจำเป็นต้องโหลดทุกไฟล์มั้ย เห้ยแค่ให้มัน ignore ไฟล์ที่อยู่ใน .gitignore ก็ทำให้โหลดเร็วขึ้นสัสๆ ละ ตามไปดูต้นทางใน repo ที่ maintain ตัว CtrlP อยู่ก็มีแนะนำอยู่ท้ายๆ พอใส่ปั๊ป เร็วสัส ไม่อยากไปไหนเลย วิธีทำก็เพิ่มบรรทัดข้างล่างใน vimrc เลยครับมันจะ igno…

What I actually do, when I have to go to work at 7.00

Image
เมื่อวานเป็นวันสุดท้ายที่ลีดเดอร์พี่แก้มกับนัทจะเป็นลีดเดอร์เลยมีเกมส์ส่งท้ายมาเล่นกัน เป็นเกมส์ให้สร้างคำจากตัวอักษรที่กำหนดให้ยาวที่สุด ใครยาวน้อยสุดคนนั้นจะโดนทำโทษจากกล่องทำโทษที่ทุกคนช่วยกันเขียนบทลงโทษกันมาทั้งทีม (ซึ่งปกติเอาไว้ทำโทษคนมาสาย) ทีนี้ผมแพ้เลยได้จับใบทำโทษมา 1 ใบโจทย์ คือ มาทำงานก่อน 7.00 แล้วห้ามนอนต่อ โอเค Challenge accepted

       ทีนี้ไหนๆ ก็ตื่นเช้าแล้ว มีเวลามากขึ้นกว่าปกติประมาณ 2 ชั่วโมง ก็เป็นโอกาสที่ดีที่จะได้ทำอะไรที่มันมีประโยชน์บ้างเลยจดไว้ บางอันมีประโยชน์ บางอันไม่มี บางอันก็ไม่รู้จะจดมาทำไม แต่แค่จะให้เห็นภาพว่าวันหนึ่งๆ เราสามารถทำอะไรได้บ้าง
06.20 ฟัง Talk Python to me #130 - books Python developers should be reading ตอนนี้แนะนำหนังสือน่าอ่านมา 10 + 1 เล่มบางเล่มเคยอ่านแล้วเช่น Pytest แต่เจอหนังสือที่ไม่เคยอ่านแล้วน่าสนใจในนี้อยู่ 4 เล่ม

About Face: the Essentials of Interaction DesignThinking in Systems: A PrimerThinking, Fast and Slowplus one: learn You a Haskell for Great Good! นอกจากหนังสือแล้วเจอ PyPi น่าสนใจอีกสองตัวด้วย Natural Languag…

สรุป Talk: Managing Data in Microservices

Image
ถ้ามีเวลาซัก 1 ชม. แล้วขี้เกียจอ่านที่ผมเขียนไปฟังของจริงเลยครับที่ https://www.infoq.com/presentations/microservices-data-centric Talk นี้เป็น Talk ที่พูดถึงการจัดการข้อมูลใน Microservice ที่ดีมากๆ Talk นึงเลย Randy Shoup เป็น CTO อยู่ที่ Stichfix (เคยอยุ่ Google กับ Ebay) มาก่อน Talk นี้จริงๆ พูดถึงเรื่องเกี่ยวกับ Microservice หลายเรื่องมาก แต่หลักๆ คือพูดเรื่องการจัดการ Data (จริงๆ แค่ 20 นาทีสุดท้าย) ซึ่งแบ่งเทคนิคออกเป็น 3 เทคนิคใหญ่ๆ


Shared Data        อันนี้เค้าเปรียบเทียบก็คือเรื่องการ shared table view ใน monolith มันง่ายมากๆ แต่พอเรา extract service ออกมาเป็น microservice เรื่องนี้ก็กลายเป็นเรื่องลำบากขึ้นมาทันที ทีนี้มันก็เกิดคำถามขึ้นว่า แล้ว shared data จะไปอยู่ตรงไหนในโลกของ microservice เค้าเลยไล่ไปถึง ทฤษฏี Single System of Record คือ 1 service จะเป็นเจ้าของ data หนึ่งๆ ที่ใช้โดย service อื่นๆ ทุก copy ของข้อมูลนี้จะอยู่ในโหมด read only หรือ cache เท่านั้น ซึ่งมันก็มีวิธีทำ Shared data อยุ่สองสามแบบคือ

Synchronous lookup คือ service A เป็นเจ้าของ data แล้ว serv…

Microservices: Visualize ปัญหา Network Latency ด้วย Zipkin

Image
รู้สึกว่าไม่ได้เขียนหรือพูดอะไรเกี่ยวกับ Microservices มานานรู้สึกแปลกๆ เหมือนกัน แต่วันนี้จับพลัดจับพลูให้ต้องมาจูน Performance Microservices ที่ผมดูแลอยู่ เลยเอาไอเดีย Distributed Tracing ที่เคยลองไว้เมื่อหลายเดือนที่แล้วมาปัดฝุ่นหน่อย
Distributed Tracing        ในยุคที่ทุกคนพูดถึง Microservices กันทั้งบ้านทั้งเมือง เจ็บตัวมากันก็เยอะ สาเหตุหลักๆ คงหนีไม่พ้น Network Latency เคยมั้ยครับ API ตัวนึงต้องเรียก services หลายตัวมากจนไม่รู้ว่า ตกลงมันไปช้าหรือคอขวดอยู่ที่ตัวไหน จะดูจาก Log ที่ webserver พ่นออกมาบางครั้งก็อ่านยาก ตาลาย เยอะไปหมด เชื่อเหอะครับ มันมีคนเจอปัญหาแบบนี้อยู่ทั้งนั้นแหละ
Distributed Tracing เป็นเทคนิคหนึ่งที่ช่วยมา Visualize ปัญหานี้ให้เห็นได้ชัดเจนยิ่งขึ้นครับ มันไม่ใช่วิธีแก้ปัญหานะครับต้องบอกก่อน แค่แสดงปัญหาให้เห็นว่ามันมีอะไรผิดปกติตรงไหน โดยเทคนิคคร่าวๆ คือ เวลาเรา request API จาก Gateway หรือ service ใดๆ เราจะผูก request ID ติดไปด้วย แล้วมันก็จะถูกส่งผ่านไปยัง request อื่นๆ ที่เกิดจาก API เรา request พวกนี้เนี่ยก็จะถูกแอบยิงลับๆ ไปหาเซิร์ฟเวอร์กลางที่จะค…

ไม่มีที่มา

Image
1
       เคยรู้สึกว่าเราไม่ได้ควบคุมชีวิตตัวเองมั้ยครับ ถ้าขณะนี้คุณกำลังตอบตัวเองว่าใช่ คุณไม่ใช่คนเดียวที่ประสบปัญหานี้ครับ สำหรับผมแล้วปัญหาพวกนี้เกิดจากการที่เราใส่ใจความคิดของคนอื่นมากเกินไปครับ ใช่แล้ว ไม่ว่าจะเป็นที่บ้าน ที่ทำงาน หรือแม้กระทั่งในความฝัน เรามักจะได้ยินเสียงของคนอื่นอยู่ตลอดเวลาครับ ถ้าเราเป็นคนแบบนั้น
       จุดที่ผมเริ่มรู้สึกว่าควบคุมชีวิตตัวเองไม่ได้คือ จุดที่ผมเริ่มรู้สึกว่าตัวเองไม่มีความสุขอยู่กับสิ่งที่ทำครับ งานเยอะไปบ้าง นอนน้อยบ้าง ไม่ได้ทำอะไรที่อยากทำบ้างเช่น เล่นเกมส์ หรือดูหนังที่อยากดู เสียงของการอยากทำสิ่งที่ "ต้องการทำ" มันจะเรียกร้อง ดังขึ้นเรื่อยๆ เรื่อยๆ จนถึงจุดนึงมันจะระเบิดออกมาครับ จุดนั้นที่ว่าคือช่วงสงกรานต์ที่ผ่านมา

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

How I catch up with things [April 2017 Edition]

Image
เป็น Blog ที่ตั้งใจจะเขียนมานานมากแล้ว เพราะตลอดเวลาหลายปีที่อยู่ในวงการ Software Development เรามักจะได้รับคำถามว่าประมาณว่าจะเริ่มอ่านอะไรจากตรงไหนดี เพราะความรู้ในวงการ Software Development มันวิ่งเร็วมากๆ ผมมั่นใจว่า ผมไม่ใช่คนเดียวที่ทำอะไรแบบนี้อยู่เกือบทุกๆ วันในวงการ เพราะฉะนั้นเชิญชวนครับ มาเขียน Blog แบ่งปันหรือบอกเล่ากันว่าตามข่าวอะไร ยังไงกัน เผื่อจะเป็นแนวทางให้คนอื่นๆ ในวงการที่กำลังค้นหาตัวเองอยู่ค้นพบทางของตัวเองบ้าง สำหรับผมนั้นจะเน้นไปทาง Python / Back-end / Operation มากหน่อย เพราะเป็นเรื่องที่ตัวเองสนใจ ขอไล่จากที่ "เสพ" บ่อยสุดไปจนถึงน้อยสุดละกัน

Newsletter
       ผมเคยอ่าน hackernews เป็นประจำมาหลายปีที่นี่เต็มไปด้วยของใหม่ๆ ที่ใครก็ได้จะมา submit ไว้แต่ปัญหาใหญ่ของ hackernews คือ Too much information ครับ เราอ่านทั้งหมดไม่ได้ รวมถึงหลายๆ อย่างเราก็ไม่ได้สนใจ ก็มักจะเลื่อนผ่านไปทำให้หาที่สนใจยากมากๆ และบางครั้งที่สนใจก็ไม่ได้เอามาโพสที่นี่ หนึ่งในวิธีแก้ปัญหาเรื่องนี้คือเราพุ่งไปหาเฉพาะเรื่องที่เราสนใจเลยดีกว่า ซึ่งก็เลยเป็นที่มาของ Newsletter หล…