2021

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

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

ปกติแต่ละปีจะเขียน blog ล่วงหน้าไว้ประมาณ 1-2 เดือน ปีนี้มาเขียนเอาวันสิ้นปีเพราะว่าเนื้อเรื่องมันเปลี่ยนไปพอสมควรตอนปลายปีแล้วชวนไม่ค่อยอยากเขียนเท่าไร

Work

ปีที่แล้ว และครึ่งปีแรกปีนี้เราได้ Top Performer เป็นครั้งแรกหลังจากอยากได้มาหลายปี (ผลออกต้นปีเลยไม่ได้เขียนถึงในปีที่แล้ว)

เอาจริงๆ คิดว่าโชคช่วยไปอยู่ครึ่งทาง เพราะปัญหาต่างๆ ในครึ่งปีหลังปีที่แล้วส่วนมากก็เป็นเรื่องที่ดูมานานแบบ what-if แล้วพอได้ทำก็คิดว่า execute ได้ดี มีคนก๊อปแบบไปด้วยซึ่งก็ไม่ได้ว่าอะไร Good artist copy, great artist steal จริงๆ ก็มีเขียนบล็อกไว้เสร็จหมดแล้วแต่เนื่องจากมันไม่ใช่เรื่องที่ positive กับบริษัทเท่าไร บริษัทเลยอยากให้งดเว้นไม่ลง in writing ถ้ามีโอกาสและเป็นงานปิดไม่มี recording อาจจะขอบริษัทเอาไปเล่า

ปีนี้เรื่องใหญ่ๆ คงเป็นเรื่องทีมที่บริษัทแหละ

SRE

ผมคิดว่างาน SRE ที่นี่จริงๆ คืองาน 3 ตำแหน่งรวมกันคือ Sysadmin, DevOps และ Reliability (Network engineer มีบ้างแต่บน Cloud ไม่ค่อยสำคัญ) ซึ่งผมว่าไม่ใช่เรื่องแปลก เพราะบริษัทที่ Dev ไม่ถึง 100 คนน่าจะมีตำแหน่งแค่ 1 จาก 3 ตำแหน่งนี้ ยกเว้นว่าทีมขนาดใหญ่มากอาจจะรับ System administrator เข้ามาเป็น first tier support ปัญหาก็คือ ตอนทำ hiring จะพบว่า candidate ส่วนมากที่เข้ามารู้เรื่อง DevOps มากกว่า ในแกนอื่นๆ ยังไม่ค่อยเห็น candidate ที่ดีเท่าไร

ผมคิดว่าผมและทีมวาง DevOps ไว้ตั้งแต่ปีแรกที่ผมเข้าไปอยู่จนเรียกได้ว่าเป็นปัญหาที่ solve แล้ว คือเราไม่จำเป็นต้องมี DevOps อีกต่อไปนอกเหนือจากงาน training, routine หรือ support และ improvement คือถ้า Dev ที่รู้เรื่องก็จะ copy file ไปวางแก้นิดหน่อยก็ deploy ได้แล้ว และล่าสุดก็คือกำลังทำ tool ที่มันจะ apply standard ล่าสุดให้เลยก็จะยิ่งลดขั้นตอนไปอีก อาจจะติดแค่เรื่องของสิทธิ์ที่บาง operation สุ่มเสี่ยงจำเป็นจะต้องให้ DevOps ที่มีสิทธิ์สูงกว่าทำให้ และอัพเดตมาตรฐานปัจจุบันให้เป็นเทคโนโลยีล่าสุด เรื่องนี้ผมเลยคิดว่าผมและทีมทำไว้ได้ดีแล้ว

System admin ผมคิดว่าเป็นสกิลพื้นฐานที่ไม่ว่าจะตำแหน่งไหนก็จำเป็นต้องมี แต่ปีนี้ที่สัมภาษณ์มาคนที่มาจากสาย DevOps กลับขาดสกิล System admin ส่วนหนึ่งคือคนที่ย้ายสายงานมาและอยู่ในทีมที่มีคนทำ function อื่นๆ ให้เลยไม่ถูกบีบบังคับให้เรียนรู้ และผมก็คิดว่ามันเป็นสกิลที่เรียนยากเหมือนกัน ถ้าให้อธิบายแบบโปรแกรมเมอร์จะบอกว่าเหมือนเขียนภาษา C คือโปรแกรมเมอร์จะมีความเชื่อว่าเขียนภาษาหนึ่งเป็นไปภาษาอื่นก็ไม่ยาก แต่จะเขียนภาษา C ให้ได้ดีต้องเข้าใจทฤษฎีเรื่อง memory model ของคอมพิวเตอร์ด้วย จะโยนคนเขียน Python ไปเขียน C เลยไม่ง่ายเหมือนกับให้คนเขียน Python ไปเขียน JavaScript ตอนนี้แผนของทีมใหม่คือเราจะลองเปิดรับแยกกันดูโดยไม่ต้องมอง skill ด้านอื่น อาจจะทำให้ได้คนตรงมากขึ้น

อันหนึ่งที่ผมอยากให้มีคือคนทำงานสาย Technical IT ควรจะมี Homelab โดยเฉพาะที่มันตรงกับ job function ตัวเอง เช่น ถ้าเป็น network engineer ก็ควรจะมีอุปกรณ์ network ไว้ซ้อมที่บ้าน (ผมมารู้ว่า Palo Alto ในต่างประเทศมีขายแบบเอาไปลองเล่นที่บ้านด้วยนะ ถ้าเป็น VM ก็หลักพัน ผมยังไม่เคยถามในไทยว่ามีไหม) หรือ software engineer ก็ควรจะมีเว็บส่วนตัว ซึ่งมันจะ force เลยว่าต้องทำ System admin เพราะมันไม่มีคนในทีมช่วยทำแล้ว (แต่หลังๆ ผมจะเห็นคนหนีไปทำเป็น serverless กันเยอะ…)

ถ้าให้คะแนน ผมคิดว่า System admin ผมอยู่ในขั้นปานกลาง คือให้เซตอะไรก็คงได้ แต่ไม่ใช่ในระดับ tuning หรือ hardening ซึ่งผมก็คงเอาตามที่ search เจอ ไม่ใช่อ่าน document แล้วไปนั่งลองจูนเอง

ส่วนสุดท้ายคือ Reliability ซึ่งผมคิดว่ามันเป็นปัญหาใหญ่ของทีม มันน่าจะเริ่มจาก What get measured get done ก่อน เราอยากให้เว็บไม่ล่มเลยต้องตีโจทย์ก่อนว่าเว็บล่มคืออะไร (ภาษา SRE เค้าจะบอกว่าเซต SLO) เกิดจากอะไรบ้าง แล้วสรุปเป็นขั้นเป็นตอนได้ว่าต้องทำอะไรบ้าง ตอนนี้ทำไปแล้วกี่ % ซึ่งตั้งแต่ทำงานมาก็รู้สึกว่าทำมาไม่ค่อยตรงเป้า

ปัญหาตอนนี้คือ SRE ผมมีอยู่คนเดียวและเค้าจะไปทำงานต่างประเทศแล้ว ก็เลยไม่เหลือ ก็กลายเป็นว่าถอยกลับไปเป็นภาพเก่าๆ คือ architect ต้องมาช่วยทำ แต่ก็รีบทำ hiring กันอยู่ และปรับวิธี hiring ใหม่หวังว่าต้นปีหน้าจะกลับมาเป็นปกติได้

Architect

มีคนถามผมบ่อยว่าตำแหน่งนี้ทำอะไร ทำ SRE หรือเปล่า เห็นวันๆ เขียนแต่บล็อกที่เกี่ยวกับ SRE

จริงๆ ไม่ใช่เพราะ Architect มีหลายคนแต่มีแต่ผมที่เขียนบล็อกเป็นประจำ แล้วผมค่อนข้างสนใจงานพวก system administration ก็เลยทำเยอะ รวมถึงว่าบางอันที่เป็น coding ก็อาจจะเป็น competitive advantage ของบริษัทเลยเอาไปเล่าไม่ได้มาก เมื่อเทียบกับว่า Infra ที่มันไม่ใช่ product จะลอกไปก็ไม่ทำให้เราเสียโอกาสแต่อย่างใด

เวลามีคนถามว่างานผมทำอะไร เหมือนคำตอบผมจะเปลี่ยนทุกปีจนไม่รู้จะว่ายังไงดี

ตอนเค้ารับผมเข้าทำงาน CEO บอกผมว่าคิดว่าอะไรดีต่อบริษัทก็ทำ เป็นเหตุผลนึงที่ผมรู้สึกว่าเรามี mutual trust กันแล้วน่าทำงานด้วย ก็เลยรับ offer

ปีแรกผมมองว่างานมันคือจิปาถะ คืออันไหนไม่มี dev ทำเราก็ทำ ที่บอกว่าไม่มี dev ทำไม่ใช่ว่างานด่วนแต่ไม่มีคนว่างทำ จะหมายถึงว่างานที่ dev ที่มีอาจจะไม่มีสกิลที่ใช้ทำงานพร้อมเดี๋ยวนี้ ถ้าให้ไปศึกษามาอาจจะใช้เวลานาน ก็เลยให้เราทำ ซึ่ง SRE มันก็มาจากตรงนี้เพราะบริษัทไม่มีตำแหน่งที่ดู Infra โดยเฉพาะ (คิดว่า startup เล็กๆ อาจจะคล้ายๆ กัน)

ปีที่สองผมจำไม่ได้เหมือนกันว่าทำอะไรไปนอกจาก Analytics ซึ่งอันนั้นก็คล้ายๆ กันคือมันไม่เข้าธีมของ product team ไหนสักเท่าไรและมันเป็นปัญหาที่ยาก Chief ก็เลยหยิบมาทำกันสองคน ผมทำขาเข้า (เพราะตอนนั้นผมเขียน Go) ส่วนหัวหน้าผมทำ data pipeline (ซึ่งผมก็ไม่อิน แต่ปีนี้เริ่มอยาก rewrite มันอยู่บ้างนะ) ปัจจุบันส่งให้ทีมดูแล้วแต่ก็ยังจะหาเวลาไปรื้อ infra อยู่บ้างเพราะ scale มันใหญ่ขึ้นทุกวันๆ

ปีที่สามผมดู Infra as Code platform ตัวใหม่ กับ Security ซึ่งก็เลยเป็น acting AppSec และ Infosec ไปพร้อมกัน แต่ก็ยังมองหาคนมาช่วยทำ job function พวกนี้ เพราะเราอยากได้ DevSecOps ซึ่งผมไม่ได้ตาม และคงไม่มีเวลาไป actively ส่องหาช่องโหว่ ส่วน Infosec นั้นคิดว่าจริงๆ เป็นปัญหาที่ใหญ่กว่า Engineering เยอะ รวมถึงมี Legal มาเอี่ยวด้วย ต้องมีคนที่ดูเฉพาะจริงๆ นอกงานพวกนี้แล้ว process ภายในถูกทีม Engineering Manager ปรับให้มีการ review design spec ด้วย ก็เป็นอีก job function นึง

ปีนั้น Head of Product ให้คำนิยามตำแหน่งผมว่าเป็น auditor คือไล่จับผิดว่าใครทำอะไรผิดแล้วไปบอกวิธีแก้ให้ถูก ซึ่งตอนนี้ก็จะเป็นโมเดลเหมือนเป็นที่ปรึกษาของบางทีมอยู่ (แบ่งๆ กันไปตามความสนใจ) เราแอบดูว่าทีมทำอะไรตลอดเวลา ทีมก็จะให้ความไว้วางใจและสบายใจด้วยว่ามีคำถามยากๆ ก็มีคนชัดเจนว่าต้องถามใครไม่ใช่ถามลอยๆ มันเป็น relationship ที่ดีกว่า auditor เยอะและมันอาจจะแก้ปัญหาได้ก่อนจะเกิด

ปีนี้ธีมใหญ่ๆ ผมต้นปีคงจะเป็นพวก improvement ต่างๆ จาก security ในปีที่แล้ว และช่วงท้ายปีมี release product ไปตัวนึง และตอนนี้กำลังดู tooling สำหรับ DevOps & Service mesh

โดยสรุปจาก job function ทั้งหมดที่ทำมา ผมเลยมองๆ ว่าจริงๆ แล้วผมไม่ใช่ expert สักอย่างแค่ผมรู้ทุกอย่างมากกว่าที่คนอื่นรู้โดยเฉลี่ยแค่นั้นแหละ และเอามันมา mix กันได้ซึ่งคนที่เซียนแต่สายเดียวอาจจะมองไม่เห็น

RuneKit

ปีนี้เลิกเล่น RuneScape แล้ว หลังจาก level 99 ทุก skill แล้ว ส่วน 120 ผมรู้สึกว่ามันไกล และเริ่ม burn out แล้วก็เลยเลิกเล่นไปก่อน หลังเลิกเล่นค่าไฟลงมา 2,000 เพราะการ์ดจอเปิดทั้งวันกินไฟมาก ก็มีความคิดอยู่ว่ากลับไป grind Old School RuneScape แต่คิดว่ามัน grind skilling ไม่สนุกเท่า RS3 และก็น่าจะเป็นเกมเดียวกัน burnout อยู่ดี

ก่อนจะเลิกเล่นได้ลองโปรแกรม Alt1 เป็นโปรแกรมช่วยเล่นโดยมันจะ OCR หน้าจอเกมหาข้อมูลต่างๆ แล้วเขียน web app มาดึงข้อมูลเหล่านั้นไปใช้ได้ ซึ่งการออกแบบแบบนี้มันเจ๋งมากๆ คือฟีลเหมือน Electron แต่มี API ที่เชื่อมต่อกับเกมได้ ในขณะที่ API Surface ก็ไม่ได้อนุญาตอะไรกว้างเกินไป ทำให้รัน 3rd party app ได้ security แบบเดียวกับ web browser ปกติ ไม่ต้องกลัวโดน hack ข้อจำกัดคือ Alt1 มีเฉพาะใน Windows เท่านั้น

ผมเองเล่นแต่ใน Linux แล้วก็รำคาญที่ทำงานไปเล่นไปแล้วพลาด event ไปเพราะไม่มีแจ้งเตือน เลยไปเขียนตัว host แบบเดียวกันขึ้นมาดู เรียกมันว่า RuneKit (ตาม SwiftKit โปรแกรมสลับ server RuneScape ชื่อดังเมื่อหลายสิบปีก่อน) ก็เป็นครั้งแรกที่เขียน PySide (Qt) คิดว่ามันทำอะไรได้หลากหลายดี จะเสียแค่ว่า license ที่เป็น GPL คงจะเอาไปใช้ในงานประจำยากหน่อยเพราะ Qt ราคาแพงมากๆ และ PySide เองมีปัญหาพอสมควรเช่นมันไม่ retain object ที่ pass ไปให้ Qt เมื่อโดน GC แล้วก็เป็น use-after-free bug มันก็จะแปลกๆ ที่เขียน Python แต่ต้องคิดเรื่อง memory management คนใช้งานก็จะบ่นว่ามันแครชเยอะหน่อย

ตอนทำ RuneKit ก็ลองพวก packaging ต่างๆ ด้วยว่า Python app จะ ship เป็น Desktop app ได้ยังไงบ้าง แล้วก็ยังรู้สึกว่ามัน painful กว่าฝั่ง server เยอะ

  • บน Linux ตั้งใจว่าจะไม่ทำ Snap แน่ๆ ก็จะเหลือ AppImage กับ Flatpak ซึ่งผมว่าอันหลังดีกว่า
  • ปัญหาของ Flatpak คือมันเหมือน Docker แต่ไม่มี package manager มาให้ต้อง inherit base images เอาอย่างเดียว (แต่ multiple inheritance ได้นะ) แล้ว base image ที่ build Qt ก็ไม่มี QtWebEngine จะทำเองก็ยากมากๆ (มันคือ Chromium ซึ่ง build ยากและยังใช้ Python 2 build อยู่) สุดท้ายก็เลยต้องยอมไปใช้ AppImage
  • AppImage ไอเดียง่ายดีแต่มัน impure มากๆ เทียบกับ Flatpak วิธีคือเอาโปรแกรมอัดใส่ iso แล้วใส่หัวของ iso เป็น shell script ที่จะ mount iso ให้เหมือนกับพวก self-extracting zip
  • การสร้าง AppImage เลยจะคล้ายๆ Docker แต่จะต่างกันที่มันจะไม่ ship library พื้นฐานที่ OS ควรมีอยู่แล้วเพื่อลดขนาดไฟล์ กลายเป็นว่ามีความยากอีกระดับคือถ้าอยากให้รันได้ทุก OS ต้องไป build บน Linux เก่าที่สุดที่ support แต่สำหรับฝั่ง user แล้วชอบกันมาก โหลดมาได้ไฟล์เดียว รันได้ทันทีไม่ต้องติดตั้งอะไรอีก จะถอนก็ลบไฟล์ได้เลย
  • บน Mac ลอง packager มาหลายตัว สุดท้าย PyInstaller ก็ใช้งานบน Python 3.9 ได้ แต่ก็พบว่าตอนนี้ Mac ต้อง sign .app ด้วย Developer certificate ($100/yr) เท่านั้นถึงจะ double click ได้เลย ทำให้ user ที๋โหลดไปต้องไปปลด sandbox ใน Terminal ก่อนจะรันได้

สำหรับฝั่ง community อย่างที่บอกปีก่อนว่าเบื่อจะ build open source community แล้ว มันควรจะเป็นแบบ “แสงอาทิตย์ไม่คิดเงิน” คือดวงอาทิตย์ปล่อยแสงไปแล้วใครจะใช้ประโยชน์อย่างไรก็เรื่องของเขา แต่โวยอะไรดวงอาทิตย์ไม่ได้เขาไม่รับฟัง

ใน RuneKit พอมี Linux version ที่ใช้งานได้จริงแล้ว user กลุ่มแรกๆ นี้กลับช่วย provide support ให้คนที่ตามหลังมาได้ดีมากๆ ก่อนหน้าผมเคยมีคนใช้ Pascal เขียน Alt1 เวอร์ชั่น Linux มาก่อนแต่คนกลุ่มนี้เค้ารันไม่ได้ ก็เลยไม่มี community เกิดขึ้น ส่วนฝั่ง Mac เหมือนจะมีแต่ user แต่ไม่มีใครที่ช่วยแก้ปัญหาจริงๆ สักเท่าไร ก็คงเป็นอย่างที่มี game dev คนนึงเคยเขียนว่าทำเกมรองรับ Linux เนี่ย ขายไม่ค่อยได้ แต่ bug report ที่ได้จาก Linux user คุณภาพสูงมาก และกระทบ OS อื่นด้วย

Gaming

หลังจากเลิกเล่น RuneScape ก็พอมีเวลาเล่นเกมอื่นๆ บ้าง เท่าที่เห็นใน HLTB ก็

  • Transport Fever 2 ซื้อมาปีที่แล้ว เกมดีนะ คิดว่ามัน improve experience มาเหนือ OpenTTD มาก โดยเฉพาะว่าเราไม่ชอบต่อรถไฟแล้วเลยไม่ได้สนใจ depth ในส่วนนั้นเท่าไร โหมดนั่งรถเล่นนี่ชิลมากๆ
  • Leisure Suit Larry in the Land of the Lounge Lizards: Reloaded เกมนี้ได้ยินชื่อเสีย(ง)มานาน เล่นแล้วก็คิดว่ามีแต่มุกสัปดนและไม่มีเรื่องอื่นๆ ให้ชมเท่าไร เทียบกับ Secret of Monkey Island ไม่ติด
  • Trails in the Sky SC หลังจากเล่นภาคแรกไว้หลายปีก่อนและติดค้างคาใจมากๆ ภาคต่อทำได้ดีเว่อร์ๆ ชนิดว่าวันที่ไม่เล่นจะมัวแต่คิดอยู่ว่าบทถัดไปจะเกิดอะไรขึ้น
  • Fallout 4 ตอนแรกคิดว่าจะไม่ชอบ แต่ SimSettlement ก็ทำให้มันสนุกดี เสียดายที่ engine มันยังสะดุดๆ อยู่ ถ้ามีเกม cities builder & trading ที่ไม่ต้องทำสงครามแบบ Age of Empire ก็น่าเล่นนะ
  • Toem มีคนแนะนำมา ชิลดี ก็ชอบเหมือนกันนะ
  • Impostor Factory จากผู้สร้าง To the Moon คิดว่าภาคนี้เรื่องมันงงๆ ลืมเนื้อเรื่องเกมก่อนๆ ไปเยอะแล้ว ยังไม่ impact เท่า Finding Paradise อ่ะ
  • Trails in the Sky 3rd เป็นเนื้อเรื่องต่อจาก SC แต่หลังจบเรื่องไปประมาณ 6 เดือน ตัว gameplay เปลี่ยนไปเยอะคิดว่าไม่สนุกเหมือนเป็นรวมเรื่องสั้นมากกว่า บางเรื่องก็ทำดีมากๆ บางเรื่องก็ powerpoint presentation เลย เรื่องน่าเศร้าคงจะเป็นว่า Sky series ทำให้เรารักทุกคนใน Liberl มากๆ แต่ภาคนี้จะเป็นภาคสุดท้ายที่จะได้เจอทุกคนแล้ว นอกจากออกมาเป็นตัวประกอบในภาคอื่นๆ เล็กน้อย
  • Return of the Obra Dinn เพิ่งเล่นจบก่อนปีใหม่พอดี มันไม่ ‘สนุก’ เหมือนเกมทั่วๆ ไป ไม่ได้ ‘ยาก’ เหมือน Puzzle game อื่นๆ ด้วยแต่เนื่องจากทั้งเกมเป็น Puzzle ใหญ่ๆ อันเดียวทำให้เราใช้เวลาคิดได้มากกว่า Puzzle game ที่ต้องรีบๆ คิดเพื่อไปด่านถัดไป เป็น design ที่เฉพาะตัวมากๆ สรุปแล้วเล่นไป 14 ชั่วโมงกับเกมที่มันไม่มี climax อะไร เจ๋งอยู่นะ

2020 & 2021 Prediction

ปีที่แล้วเดาว่า COVID ยังอยู่กับเรา ปีนี้เดาถูก ปีหน้าคิดว่า COVID ยังมีอยู่อย่างน้อยครึ่งปี ดูท่าทีแล้วคิดว่ารัฐบาลต่างๆ น่าจะใช้วิธี downplay แทนว่ามันไม่ใช่ปัญหาเพื่อให้โลกมันไปต่อได้ (แต่เราคิดว่ามันจะไม่ใช่ปัญหาจริงๆ แปลว่าต้องเลิกปิดประเทศ เลิกสวม mask เลิกวางเจลล้างมือ แบบนั้นถึงจะกลับสู่ old normal)

เรื่องโค้ดปีหน้าคิดว่า Golang Generic กำลังจะมา ส่วนตัวรู้สึกว่ามันจะแก้ปัญหาหลายๆ อย่าง แต่มันจะทำให้ design ใน Go เปลี่ยนไป ส่วนหนึ่งที่ชอบ Go คือมันเขียนเป็น Java ไม่ได้ ต่อให้เป็นคนย้ายจาก Java มาก็ต้องทิ้งความเป็น Java ส่วนหนึ่ง (แต่ก็ยังพอเห็น design แบบนี้อยู่บ้าง เช่นใช้ Dependency injection) ยังไม่รู้ว่าพอมี Generic แล้วจะทำให้เราอยากเขียน Go น้อยลงไหมนะ..

ปีนี้เห็นคนไปเที่ยวต่างประเทศบ้างแล้ว ก็คิดอยู่ว่าอาจจะไปเที่ยวบ้างถ้าช่วงกลางปีเป็นต้นไปสถานการณ์ดูดีขึ้น ไม่ต้องกักตัวก่อน-หลังเดินทาง

New Year Resolution

ปีนี้คิดว่า “เตรียม” open source ไว้หลายอย่างแต่ไม่ได้ทำเลย ปีหน้าอยากจะ open source ของข้างในออกมามากขึ้น น่าจะมีสัก 2-3 ตัวเลยล่ะที่โยนโค้ดออกไปได้

2020: What does not kill me makes me stronger

ปีนี้รู้สึกว่าไม่ค่อยมีอะไรหวือวาในชีวิต นอกจากว่าจะมี COVID-19 แล้วงานยังเยอะขึ้นมากๆ จนครึ่งปีหลังแทบจะไม่ได้สนใจอะไรเลย

Planned for 2020

ปีนี้ตอนแรกแพลนจะไปญี่ปุ่นอีก อยากไปกินราเมง !!

ว่ากันตามตรงคือไม่ได้ตามไอดอลแล้ว โดยเฉพาะเมื่อเคยากิกลายเป็นซากุระซากะก็ออกจากวงการนี้อย่างเป็นทางการได้แล้ว อาจจะยังตามผลงานยุยปงอยู่บ้างแค่นั้น

ปัญหาที่ตามมาคือมันเลยไม่รู้ว่าไปเที่ยวทำไม แต่ช่วงปลายๆ ปีที่แล้วก็เลยเริ่มคิดว่าไปกินราเมงก็ดีนะ อยากกินแล้วก็อยากรู้ว่าถ้ากินราเมงทุกมื้อจะเบื่อเมื่อไร

ตอนนี้ไม่ต้องไปพอจะเดาได้ว่าไม่เกิน 3 มื้อน่าจะเบื่อ โดยเฉพาะว่าเราไม่ได้ชอบราเมงเกือบทุกประเภท มีแค่บางประเภทเท่านั้นแหละที่ชอบมากๆ แต่ช่วงกลางปีก็เจอว่าน่าจะลองพวก AirBNB experience ซึ่งเดี๋ยวนี้มีขายกันหลายเจ้ามาก ไอเดียคือเหมือนทัวร์แต่ไม่ต้องมาเป็นแพคเกจ

นอกจากญี่ปุ่นอยากลองไปยุโรปบ้าง ยังหาเหตุผลอยู่แต่ก็ไม่แน่ใจ ทั้งว่าไม่เคยไป มันน่าจะแพง แล้วก็ยังไม่มีแรงบันดาลใจพอ

Work

ปีนี้บริษัทมีข่าวใหญ่ๆ หลายข่าว งานที่ทำก็เริ่มเปลี่ยน priority มากขึ้น

อย่างแรกคือเค้าให้เป็น Senior แล้วซึ่งกลายเป็น level รองสุดท้ายในทีมแล้ว ก็ยังมองไม่ออกว่า career path จะขึ้นไปต่อยังไงแต่รู้สึกว่าตอนนี้ก็อยู่ที่ตำแหน่งที่เข้าใกล้ Peter Principle แล้ว คือถ้า promote ไปอีกก็คงทำงานได้ไม่ดีเท่าไร ประมาณนี้แหละกำลังดี

ช่วงครึ่งหลังของปีทีมใหญ่ขึ้นเป็นเท่าตัว priority ของงานเลยเปลี่ยนไป ความรับผิดชอบใหม่ที่มาคือตรวจงานคนอื่นๆ ด้วย ก็ต้องเจียดเวลาจากที่นั่งทำงานตัวเองไปดูคนอื่นบ้างแต่ก็ยังรู้สึกว่างานพวกตรวจต่างๆ ไม่ว่า design หรือ code ยังทำได้ไม่ค่อยดีเท่าไร

อีกอย่างที่ตามมากับขนาดของบริษัทที่ใหญ่ขึ้นคือบริษัทเป็น enterprise แล้ว และก็ตามมาด้วย policy เยอะแยะ ตอนทำงานมาปีกว่าๆ คนถามเยอะว่าทำไมยังไม่ย้ายไปไหน ตอนนั้นบอกว่าอยากเห็นว่า team size ใหญ่ขึ้นเรื่อยๆ แบบนี้แต่เราใช้วิธีทำงานแบบ startup แล้วมันจะไปจบตอนไหนแล้วจบยังไง ตอนนั้นก็ยังมองไม่เห็นตอนจบหรอกว่าจะมายังไง แต่ปรากฏว่าปีนี้ตอนจบมันมาแล้ว มันเร็วมาก และมันไม่สนุกเลย

ปีนี้ครึ่งปีหลังทำ hiring น้อยลง รู้สึกว่าปีนี้มีแต่ bad hire เกือบทั้งหมด นึกถึงโควทของ Steve Jobs ว่า “คนระดับ A จะเลือกคนระดับ A มาทำงาน แต่คนระดับ B จะเลือกคนระดับ C มาทำงาน แล้ว C ก็จ้าง D ไม่นานมันก็ไปถึง Z” คือบางคนอาจจะเคยรู้ว่าทีมเราหาคนเข้ามาหลายปีแล้วได้อยู่คนเดียว เพราะเราเอาแต่ A จริงๆ ซึ่งก็มีคนบอกเยอะมากว่าไม่มีหรอก แต่ครึ่งหลังของปีมาพบว่าเนื่องจากงานเยอะมากๆ และคนขาด บริษัทยอมให้ convert senior software engineer มาช่วยงาน system admin ชั่วคราวแล้วเค้าทำได้ดีมากๆ เรียกว่าดีกว่า candidate SRE ทุกคนที่เคยสัมภาษณ์มาเลยก็ว่าได้ (แต่ก็ให้ได้แค่ชั่วคราว…) ก็เป็นจริงอย่างที่ Google บอกในหนังสือ แต่ว่าคงเอาไปใช้ทำ hiring ไม่ได้

แต่การทำงานในทีมที่เกือบทุกคนเป็น A player นี่เสพติดมากบอกได้เลย มันทำให้เกิด trust ว่าเค้าได้งานไปแล้วเค้าจะจัดการให้มันเสร็จได้เรียบร้อยโดยไม่ต้องตรวจงานเค้าอีก และไม่ต้องคอย mentor ด้วย

ทั้งหมดนี้เลยเป็นเหตุผลว่ายังไม่ค่อยโอเคเวลาใครชวนไปไหน (แต่ปีนี้ค่อนข้างเงียบนะ น่าจะเพราะ COVID แล้วคน freeze hiring ด้วยส่วนหนึ่ง อีกส่วนหนึ่งคือไม่ค่อยได้ออกไปงานไหนด้วย)

Project ใหญ่ๆ ปีนี้ที่ดูคือ PDPA, Infra แล้วก็ Security

PDPA

PDPA นี่รู้สึกว่าดีที่บริษัทยอมเปลี่ยน ลด data ที่มองเห็นให้น้อยลง คือกฎหมายมันออกมาดักพวก UX & marketing ที่อยากเห็นลูกค้าทุกอย่าง (ถ้าไปยืนแอบมองมือถือทุกคนได้ก็คงทำ) ก็กลายเป็นว่าต้อง opt in แทน แต่เอาจริงๆ รู้สึกว่าบริษัทในไทยส่วนมากที่เห็น implement แล้วก็ยังทำไม่ถูกเจตนารมณ์ของกฎหมายเท่าไรนัก (นอกจากกลุ่มธนาคารที่ทำได้ค่อนข้างดี แต่ดัก network request ก็ยังเห็นวิ่งอยู่นะ) เช่น…

  • คนไป focus เรื่อง cookie เหมือนยุโรป จริงๆ กฎหมายไม่ได้พูดถึง cookie เลย อยากเก็บก็เก็บได้ไม่ต้องขออนุญาต
  • จุดที่ focus จริงๆ คือเรื่องการเก็บ data และการเอาไปใช้ ซึ่งในไทยไม่มีใครตีความเลยสักคนว่าอะไรได้ไม่ได้ มีแต่จะไปลอก GDPR มาซึ่งก็คล้ายๆ (เพราะกฎหมายก็ลอกมา) แต่มันไม่เหมือน 100% ปัญหาใหญ่ๆ คือ “anonymous” tracking แบบ Google Analytics คือ ไม่รู้ว่าชื่ออะไร แต่รู้ว่าทำอะไรบ้าง บางคนตีความว่ามันใช้ Cookie ID ทำให้ต้องขอ consent แต่บางคนก็ตีความไปว่าแบบนี้ใช้ได้ ซึ่งผมว่ามันผิดเจตนารมณ์ของกฎหมาย (ad tracking มันก็ใช้ “anonymous” advertising ID นะ)
    • ถ้าไม่ใช้ cookie ID มันจะนับ unique visitor/session ไม่ได้เลย ซึ่งเป็น KPI ใหญ่ๆ ของหลายๆ ที่ บางระบบอาจจะใช้ fingerprinting เข้ามาแทน
  • มีข้อยกเว้นว่าเก็บเพื่อประโยชน์ของบริษัทได้ ซึ่งบริษัทคงจะตีความต่างๆ นาๆ กันได้หมด เช่นบอกว่า unique visitor บริษัทต้องใช้จะเก็บ คิดว่าข้อยกเว้นแบบนี้น่าจะทำเหมือนข้อหารือภาษีมากกว่า คือส่งเรื่องให้สำนักงานที่กำกับดูแลอนุมัติก่อนจึงจะทำได้

คือถ้าคนยังติด Google Analytics แล้ว default on ได้ ผมว่ากฎหมายมีปัญหาแล้วล่ะ

Infra & Security

Infra ปีนี้ได้โอกาส revamp infra รอบใหญ่ๆ ล้างบาง legacy ไปได้พอสมควรแล้วก็ยังทำให้ infra เรายัง cutting edge อยู่ เสียดายว่าปีนี้งานจัดน้อยเลยไม่ค่อยได้ออกไปเล่าให้ใครฟังมาก แต่ก็น่าจะเขียนบล็อคไปหมดแล้ว

Security เองปีนี้มีข่าวใหญ่ๆ ไปทีนึง ซึ่งเท่าที่สำรวจและอุดไปก็เป็นช่องทางที่เหนือความคาดหมายเหมือนกัน คือช่วงปีสองปีมาเราทำเรื่อง security ให้เพิ่มขึ้นเรื่อยๆ แต่ที่แทบไม่ได้ทำเลยคือกลับไปแก้ของเก่า เพราะถ้าสังเกตจากบล็อคที่เขียน งานที่เราทำคือออก platform ใหม่แล้วให้ทุกคนย้ายไปใช้ platform ใหม่ แต่บางอย่างคือ practice มันทันสมัยอยู่แล้ว (แต่ insecure) เลยไม่ได้มีประเด็นต้องออก version ใหม่แล้วมันเลยถูกปล่อยทิ้งไว้แบบนั้น

ปีหน้าคิดว่าธีมของงานคงจะเป็น security ไปอย่างน้อยครึ่งปี

Open Source

ปีนี้คือลาจาก open source maintainer จริงจัง ใครส่ง PR อะไรมาบอกเลยว่าไม่อ่านแล้วนะ อยากเอาป้าย unmaintained.tech ติดด้วยซ้ำแต่ก็ขี้เกียจ

Project ใหม่ๆ ที่อยาก open source มีอยู่พอสมควร แต่ว่าพอจะไม่ได้ maintain ก็เลยเฉยๆ งานอื่นยุ่งกว่า แล้ว Hacktobefest ก็ไม่ได้ทำมัวแต่เล่นเกมอยู่…

ก็เลยอยากเขียนหน่อยว่าปีขี้เกียจแบบนี้ทำอะไรไปบ้าง…

  • ArgoCD: Add support for ssh-with-port repo url (#2866) อันนี้ critical มากๆ ทำให้เริ่มงาน project Ceylon ได้
  • gziphandler: Refactor out gzipwriter interface อันนี้พอเค้าไม่ได้ merge ก็ไม่ได้ open source ตัว cfzlib ต่อ ลด CPU ได้ 40% เลยนะ
  • Open source Go SafetyNet validator รองรับทั้ง Google Safetynet และ Huawei Device Check เลย
  • Pomerium: docs fix
  • Pomerium: small fix รู้สึกว่าเวลา contribute open source project ใหม่ควรเริ่มเล็กๆ ก่อน จะได้รู้ว่า upstream จะมาไม้ไหน
  • Pomerium: read url query string พอ contribute ไปเยอะขนาดนี้แล้วก็พบว่า Pomerium มันไม่เสถียรมากๆ เลยเลิกใช้แล้วไปเขียนเองแทน (หวังว่าจะได้ open source)
  • Vault cap username length in database ปรากฏว่า upstream อยากทำท่าอื่น เลยกลายเป็นว่าตอนนี้ต้อง fork Vault ไปก่อน…
  • dex: service account-less group info + docs เขียน PR เกือบเสร็จแล้วเจอว่า domain บริษัทไม่มี license ใช้ API นี้….
  • dex: Vault signer อันนี้ใหญ่มาก แต่ก็ยังขี้เกียจทำให้โค้ดมันคุณภาพดีพอจะ merge

อย่างหนึ่งที่สังเกตคือข้างบนเป็น Go ทุก project เลย เราว่า Go มันทำให้โค้ดมันค่อนข้างเขียนเหมือนกันเกือบหมด ไม่ต้องตีกันเรื่อง design แล้วมันไม่มีอะไรซับซ้อนแบบ DI container (ใครใช้ wire ตีตายเลย) หรือแม้แต่ class inheritance โปรเจกท์ที่เราเขียน Go เป็นครั้งแรก maintainer เคยเขียนบล็อคถึงปรากฏการณ์นี้ไว้ค่อนข้างน่าสนใจ

อีกข้อสังเกตคือข้างบนเป็น PR ในงานบริษัทหมดเลย ก็ดีว่าบริษัทให้อิสระทำอะไรก็ได้ (ที่เป็นประโยชน์กับบริษัท) แล้วเวลาเราติดปัญหาเราก็เลยเลือกที่จะ fix ที่โค้ดดูก่อนถ้ามันไม่เหลือบ่ากว่าแรง ในขณะเดียวกันตอนนี้เลิกงานมาก็ขี้เกียจจนเล่นแต่ RuneScape แล้ว…

นอกจาก code contribution ให้ open source แล้ว ปีนี้รู้สึกว่า project open source บางตัว โดยเฉพาะตัวที่ไม่ค่อยได้ใช้ใน corporate หรือมัน niche มากๆ มันควรจะต้องมี funding เหมือนเราซื้อ proprietary software ปีนี้ก็เลยเลือกจะ fund โครงการต่อไปนี้

  • MATE ผ่าน Ubuntu Mate หลังจากทนใช้ GNOME 3 มาหลายปี พอมาใช้ MATE (GNOME 2) แล้วพบว่ามันเวิร์คกว่า GNOME 3 เยอะมากๆ ถึงจะผ่านไปหลายปีแล้วก็เถอะ แต่ MATE มีปัญหาเรื่องตามเทคโนโลยีไม่ทันมากๆ และมันไม่น่าจะมีโอกาสได้ corporate funding แน่ๆ ก็เลยเลือกจะ join Patreon ไป $10/mo
  • KeepassXC Browser ทีมนั่งคุยกันเรื่อง password manager บน browser ว่าตัวไหนใช้งานสะดวกกว่ากัน ก็ยอมรับว่า KeepassXC มันสู้ proprietary software ไม่ได้ ฉะนั้นก็แทนที่จะให้ $3/mo กับ 1Password หรือ LastPass ก็เอาให้ KeepassXC ดีกว่า

RuneScape

ปีที่ผ่านมานอกเวลางานคือเล่นแต่ RuneScape ตอนที่กดซื้อ subscription 1 ปีคือรู้ตัวเลยว่าทั้งปีนี้จะขายวิญญาณให้เกมนี้แน่นอน

แต่ตอนท้ายๆ ปีงานเริ่มตึงขึ้นเรื่อยๆ รู้สึกว่าอยากหนีไปทำอย่างอื่นแต่จะไปเที่ยวก็ไม่ได้ ก็เหลือแต่เล่นเกมนี่แหละ แล้วทั้งปีคือแทบไม่มีความอยากเล่นเกมอื่นเลย มันเลยคุ้มค่ามากๆ (Switch ฝุ่นจับแล้วตอนนี้…)

หลังจากปีที่แล้วได้ Quest Cape มาแล้ว แพลนปีนี้คืออยากได้ Diary Cape กับ Music Cape ซึ่ง Music Cape นี่โชคดีมากๆ เพราะเปิด Master casket อันที่สองได้ Mimic ก็เลยได้ง่ายๆ (แต่กว่าจะเอา mimic ลงก็เหนื่อย)

ส่วน Diary Cape ตอนนี้ยังเหลือแค่ Slayer กับ Thieving ซึ่งน่าเบื่อทั้งคู่ ก็เลยตัดสินใจว่าไปเล่น RuneScape 3 แล้วกัน…

RuneScape 3

ตอนเลิกเล่น RuneScape บอกว่าจะไม่เล่น EoC ซึ่งตอนกลับมาเล่นก็พยายามอยู่มากๆๆๆ ที่จะใช้ legacy mode แต่ก็ต้องยอมเพราะว่า EoC มันมี heal หลังจบ combat และมันใช้ทรัพยากรน้อยกว่า (runes, ammo) ซึ่ง heal นี่มันโกงมากๆ

  • ไปตี Knight Waves แล้วพบว่ามันไม่เหมือน OSRS คือต้องเล่นให้จบในครั้งเดียว เลยตีด้วย legacy mode เพราะได้ DPS มากกว่า แล้วสลับเข้า Revolution mode บางครั้งเพื่อเอาฮีล เล่นจบรู้สึกว่าโกงมากๆ
  • ทำ Fight Caves แล้วปรากฏว่าอาหารเหลือแต่ prayer เกือบหมด เพราะปล่อยฮีลเอาทุก wave แถมแทบจะยืน tank ได้เลยเพราะยังไงมันก็ฮีลอยู่แล้ว

สิ่งที่ได้จาก RS3 คือ keyboard shortcut ที่พอ bind สลับ prayer บนแป้นแล้วรู้สึกว่าเล่นสบายขึ้นเยอะ ตอนกลับไปเล่น OSRS ก็รู้สึกว่าเล่นดีขึ้นเยอะ

ข้อเสียของ RS3 คือมันเป็น pay to win คือเคยมีเอกสารหลุดมาเค้าบอกว่าคนที่เล่นจริงๆ (ไม่ใช่ gold farmer) ใช้บอตเพราะอยากได้ตังหรืออยากได้เลเวล ถ้าอย่างนั้นก็ขายตัง ขายเลเวลไปเลยแล้วกัน หลังๆ ก็เริ่มรู้สึกว่าอยากซื้อเลเวลไปเลยนะถ้าไหนๆ เกมมันจะ legitimatize ให้ทำได้แล้ว แล้วแม้แต่ผู้เล่น OSRS เองก็ให้เหตุผลว่าฟาร์มตังในเกมยังไงก็ไม่เร็วเท่าฟาร์มตังในชีวิตจริงแล้วเติม

คือ economy ของเกมมันเปลี่ยนไปจากสมัย 2012 แล้ว สมัยนั้นคือ grind skill ไปเรื่อยๆ แล้วได้ตัง เดี๋ยวนี้ต้องไปตีบอสถึงจะรวย หรือไม่ก็ merch items แต่เราไม่ชอบทั้งคู่ ในขณะที่ราคาไอเทมมันถูกกำหนดโดย supply และ demand จากคนสองกลุ่มนั้นเลย

2020

ปีที่แล้วเขียนไว้เยอะ เอาจริงไม่ได้ทำอะไรเลยมัวแต่เล่นเกม…

Prediction

ปีนี้ได้เลื่อนขั้น ถือว่าทายไม่ถูก

New Year Resolution

New Blog

ไม่ได้ทำ อย่างที่เห็น

รู้สึกว่าทำงานแล้วเหนื่อยมากขึ้น บวกกับ อยากเล่น RuneScape ปีนี้เลยแทบไม่ได้เขียนโค้ดที่ไม่เกี่ยวกับงานเลย

เลิกพูดแทรกคนอื่น

เริ่มสังเกตบางทีแต่ยังคิดว่าไม่ดีขึ้นเท่าไร

2021

Prediction

ปีนี้ไม่รู้จะทายเรื่องส่วนตัวยังไงดี ดูท่าทีตอนนี้ COVID ยังอาจจะอยู่ไปทั่วโลกอีกปี (เห็นว่า Ebola มัน 2 ปีเต็มเลยนะ นี่ COVID ยังเพิ่งปีเดียวเอง) ยังอยากไปเที่ยวอยู่แต่เดาว่าปีนี้จะไม่ได้ไปไหน

New Year Resolution

ปีนี้อยากลอง resolution ทุก quarter ดู ไม่รู้จะอยากเขียน quarter in review มั้ย

่สวนหนึ่งคือเอาจริงๆ new year resolution ส่วนมากก็ทำจบใน H1 อยู่แล้ว แล้วบางทีกลางปีก็มีอะไรที่อยากทำแต่ก็จะรู้สึกว่าเก็บไปเขียน New Year Resolution ดีกว่าเดี๋ยวไม่มีอะไรเขียน

ของ Q1 2021 ขอไปคิดก่อนนะ…