Take Control of Your Home Networking

สัปดาห์ที่ผ่านมาลองปรับอุปกรณ์ Network ในบ้านเล่นครับ เลยอยากมาลองเล่าให้ฟัง

อุปกรณ์ network เดิม

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

ปัญหาคือ port LAN หลัง router ผมมันเต็มแล้ว เวลาจะ print ผมก็เลยต้องสลับสายอย่างอื่นออกชั่วคราว ตอนหลังก็เลยว่าจะจัดการระบบใหม่ครับ และอีกปัญหาหนึ่งเคยเขียนไปแล้วสองปีก่อน แต่จะมาเปิด PC ทำ routing อีกก็จะเปลืองไฟเกินไป

จัดบ้าน!

ปัญหาที่ไม่เห็นใน network map คืออุปกรณ์มันสายรุงรังมากครับ ผมกับแม่เลยตัดสินใจว่าจะรื้อที่ว่างอุปกรณ์ network ใหม่หมดเลย โดยเปลี่ยนจากโต๊ะคอมพิวเตอร์เป็นชั้นวางของแทน แล้วซื้อตู้ rack มาวาง อุปกรณ์ก็เลยจะเป็นระเบียบขึ้นเยอะมากกกก

และในฝั่ง network เองผมก็อยากจะลองเล่นของ enterprise สักหน่อย ก็เลยลองจัดมาดังนี้ครับ

  • TP-Link SG-1008 Rack mounted Gigabit Switch 1,600 บาท (ซื้อมาปุ๊บวันที่ของมาส่ง King IT ประกาศเลิกขาย TP-Link เลย ซึ่งกล่องที่ผมได้เป็นของ King IT)
  • Mikrotik RB750Gr3 (hEX) 2,790 บาท
  • Ubiquiti UniFi AP-AC-LITE 4,050 บาท

(จริงๆ ไม่ค่อยอยากซื้อของที่มีปัญหา GPL Compliance สักเท่าไร แต่เหมือนว่าอุปกรณ์ network แทบทุกเจ้าก็มีปัญหาเรื่อง GPL Compliance หมดล่ะ)

Enterprise มั้ยล่ะ…

อุปกรณ์ network ก็มีตัวเลือกหลายอย่างครับ บางคนอาจจะบอกว่าใช้ของ Asus ก็ได้ หรือ AIS ก็ขาย D-Link 8 เสาอยู่ แต่ความแตกต่างที่ชัดเจนของของเล่น enterprise กับของ consumer คืออุปกรณ์แต่ละตัวมันมีหน้าที่เดียวครับ

  • hEX เป็น router อย่างเดียว (และเป็น switch 5 port)
  • UniFi เป็น access point อย่างเดียว ทำหน้าที่แบบ router ไม่ได้เลย และมีพอร์ทเดียว

ทีนี้ network map อันใหม่จะเป็นแบบนี้ครับ

Bridge mode

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

ลองเล่น hEX

ถัดมาก็ต้อง config router ตัวใหม่ครับ ซึ่ง interface ของ Mikrotik ก็ทำมาให้ไม่ผิดหวังจริงๆ (ลอง Demo เล่นเองได้)

หน้าแรกของ Mikrotik เหมาะกับมือใหม่มากๆ ครับ ซึ่งก็จะคล้ายๆ กับ router ทั่วๆ ไป เซตหน้านี้ปุ๊บก็สามารถเริ่มใช้งานได้เลย (จริงๆ ตามภาพนี่ก็ค่าเริ่มต้นเลยครับ ยกเว้น IP range นะ) แต่ของจริงๆ มันอยู่ที่หน้าอื่นๆ ครับ

หน้า interfaces นี่เจ๋งมากครับ เอาจริงๆ ไม่ต้อง config อะไรเลย (ผมแค่เปลี่ยนชื่อให้รู้ว่าพอร์ทไหนคืออะไรแค่นั้น) แต่ตัวเลขที่เห็นมันขยับเป็น real time ครับ ทำให้รู้ได้เลยว่าใครใช้เน็ตเท่าไรอยู่กันบ้าง และสามารถดูได้ด้วยว่า port ไหนที่เชื่อมต่อเป็น Gigabit อยู่บ้าง

จุดที่พอจะเล่นหน้านี้ได้คือ Master port ครับ ซึ่งใน default setup จะให้ port 3-5 ชี้ master port ไปที่ port 2 (port 1 เป็น WAN) โดยในคู่มืออธิบายว่า port ที่เป็น slave จะทำบางอย่างไม่ได้ (เช่น firewall) แต่มันจะใช้ hardware switching ทำให้ packet วิ่งได้อย่างรวดเร็ว ซึ่งถ้าเราไปดูในหน้า bridge ที่มันสร้างให้ก็จะเห็นว่า bridge เชื่อมแค่ port เดียว เหตุผลที่เค้าเซต bridge ให้ด้วยคือเพื่อใช้ RSTP ป้องกัน loop ครับ

ของเล่นถัดมาคือ DHCP Lease ครับ ตรงนี้เราจะเห็นเลยว่ามีอุปกรณ์อะไรในบ้านที่ต่ออยู่บ้าง (ซึ่งปกติ router ทั่วไปก็มีหมดแหละ) และทำ static IP ให้แต่ละตัวได้ (อันนี้ router บางรุ่นมี แต่ที่ผมใช้อยู่เดิมไม่มี)

อันที่น่าปรับคือผมปรับให้ DHCP เป็น authoritative คือค่าปกติ DHCP server จะรอประมาณ 2 วินาที (เผื่อมี DHCP server อื่น) แต่พอปรับเป็น yes แล้วจะทำให้ไม่ต้องรอ

DNS นี่ไม่มีอะไรให้ปรับเท่าไรครับ (ผมปรับ DNS เอาของทรูออกเป็นของ Google แทนแค่นั้น) แต่จะบอกว่าจากที่เคยใช้มาการมี local DNS caching ทำให้เน็ตเร็วขึ้นอย่างเห็นได้ชัดเลยครับ อาจจะวัดด้วย speedtest ไม่ได้ แต่เข้าเว็บทั่วๆ ไปจะเห็นเลย

Firewall

มาถึงของเล่นเด็ดเลยคือ firewall ครับ ผมมั่นใจว่า consumer router ไม่มี firewall ระดับนี้แน่ๆ คือเขียนกฎได้เต็มที่เลย ทีนี้ firewall ของ Mikrotik ก็มีเรื่องน่าสนใจเยอะครับ

เรื่องแรกคือจะเห็นว่ามีหลายแท็บมากๆ แท็บ NAT ปกติไม่ต้องไปยุ่ง เพราะมันจะเซตให้แล้ว แต่ที่น่าเล่นคือ Filter Rules กับ Mangle ครับ

Filter Rules คือ Firewall ทั่วๆ ไปนี่แหละ ซึ่งปกติแล้วมันจะมีกฎนึงให้คือ fasttrack forward (ในภาพคือแถวที่ 2) อันนี้แนะนำให้ปิดไปก่อนครับ โดยกฎนี้แปลว่า connection ที่ connect ติดแล้วจะข้าม firewall ไปเลย ซึ่งจะทำให้ทำ QoS ไม่ติด แต่ข้อดีคือมันจะเร็วขึ้น

กฎที่เหลือที่ผมเขียนเพิ่มก็จะมี block ไม่ให้เข้าหน้า router (แต่ปิดไปก่อน) และ block อุปกรณ์ IoT ไม่ให้ต่อเน็ตได้เพื่อความปลอดภัย

สำหรับหน้า Mangle ไว้ mark packet ที่วิ่งผ่านไปผ่านมาสำหรับการทำ QoS ครับ โดยกฎที่ผมใช้ก็คือ

  • TCP ACK packet size 40 ให้ mark packet ไว้ในกลุ่ม tcp
  • Packet ที่ออกจาก IP ของ TV ให้ mark packet ไว้ในกลุ่ม tv
  • Packet ที่ต่อ UDP port 53 ให้ mark packet ไว้ในกลุ่ม dns
  • Connection TCP port 80, 443 ให้ mark connection ไว้ในกลุ่ม http
  • Connection TCP port 22 ให้ mark connection ไว้ในกลุ่ม ssh
  • Connection TCP port 1935 (rtmp) ให้ mark connection ไว้ในกลุ่ม streaming
  • Connection UDP port 500, 4500 ให้ mark connection ไว้ในกลุ่ม voip (พอร์ทนี้สำหรับ 4G Voice over WiFi ครับ)
  • Connection UDP port 6250,5062,5060,12000-64000,3478,3479 ให้ mark connection ไว้ในกลุ่ม gaming (สำหรับเกม Overwatch)
  • Connection TCP port 1119,3724,6113 ให้ mark connection ไว้ในกลุ่ม gaming (สำหรับเกม Overwatch)
  • Connection UDP port 27015-28999,27005 ให้ mark connection ไว้ในกลุ่ม gaming (สำหรับเกม Dota 2)

สำหรับ connection mark แนะนำให้ตั้ง connection state = new ไว้ด้วยครับ เพื่อลด load ทั้งนี้ RouterOS สามารถ track connection ของ UDP ได้ด้วยครับแม้มันจะเป็น connectionless โดยนิยามของ new คือเมื่อมีการส่ง packet แรกออกมาจากฝั่งใดฝั่งหนึ่ง

สำหรับ connection mark และ packet mark จะต่างกันแบบนี้ครับ

  • Connection mark จะ mark ที่ connection ซึ่งเราสามารถดูได้ที่ tab connections ด้านบนเลย เราเลยทำครั้งเดียวตอน connect ก็พอ ไม่ต้องทำบ่อยๆ
  • Packet mark จะ mark ที่ packet ซึ่งต้องทำทุก packet ก็เลยจะต้องมีกฎเอา connection mark มาแปะที่ packet markอีกทีนึง เนื่องจาก QoS จะอ่านที่ packet mark เท่านั้น และถ้าเอากฎ connection mark มาทำใน packet mark เลยก็จะช้า

Queues

หน้าสุดท้ายที่จะปรับคือ Queue Trees ครับ ตรงนี้จะใช้ packet mark ที่เราสร้างไว้ก่อนหน้านี้มาจัดลำดับ ซึ่งที่ผมจัดก็คือ

  • 1 – DNS + TCP ความสำคัญสูงสุด
  • 2 – Gaming (ใน Firewall จะมีอีกกฎนึงว่า gaming ให้ fasttrack connection เลยเพื่อลด ping ตรงนี้เลยไม่ค่อยได้ใช้)
  • 3 – VoIP
  • 4 – SSH + TV ผมหวังว่า TV จะไม่กินเน็ตเยอะนะ
  • 5 – HTTP (จากกฎเมื่อกี้จะรวม HTTPS ด้วย)
  • 8 – Streaming + อื่นๆ (Streaming นี่หลักๆ เขียนไว้ดักสตรีมออกครับ ไม่เกี่ยวกับดู video streaming เท่าไร ยกเว้น MyLive ที่ใช้ RTMP อยู่)

แต่ตอนนี้ก็ยังไม่เห็นผลของ QoS เท่าไรครับ เพราะไม่ได้ใช้เน็ตหนักขนาดที่ bandwidth ไม่พอขนาดนั้น

UniFi

ถัดมาลอง UniFi กันบ้างครับ ตัวนี้ Ars Technica อวยไว้พอสมควร และด้วยความเป็น enterprise มันจึงไม่มีหน้า web admin ให้เซตใดๆ ทั้งนั้น วิธีการติดตั้ง UniFi คือต้องโหลดโปรแกรม UniFi มาครับ แล้วเข้าที่หน้าเว็บของมัน ซึ่งก็ทำได้สวยเลย

พอเปิดมามันจะขึ้นให้ Adopt device ครับ (มันจะหาอุปกรณ์เจอเอง ปกติจะ IP 192.168.1.20) ซึ่งตอนแรกๆ ผมก็มีปัญหากับ subnet นิดหน่อย งมๆ ด้วยการ factory reset อยู่หลายทีเหมือนกัน

บน UniFi จะต่างกับ router ทั่วไปคือไม่ค่อยมีตัวเลือกให้ปรับเท่าไรครับ จะมีที่เกี่ยวข้องกับ Wireless อย่างเดียวมากกว่า เช่นปรับความแรง, channel และสามารถดู wireless client ได้ด้วย จะต่างกับ consumer router คือจะเห็น data transfer ด้วย (แต่เหมือนจะนับเฉพาะถ้าเรายังเปิดโปรแกรม UniFi ที่เครื่องเราอยู่)

New furniture

ความน่ารักของ UniFi คือไฟมันสวยมาก ลืมภาพ router ไฟกระพริบๆ ได้เลย เพราะ UniFi จะขึ้นไฟสีฟ้าตลอดเวลา ยิ่งพอปิดไฟนอนแล้วจะเหมือนมีไฟหรี่ๆ บอกตำแหน่งของบันไดชั้นล่างเลย

อีกอย่างนึงคือมันเป็น Power over Ethernet (PoE) ครับ นั่นแปลว่าไม่ต้องวาง adapter เกะกะแล้ว (ในภาพนั่นปลั๊กพัดลมกับหลอดไฟ) ผมสามารถเอา PoE injector ที่แถมมาในกล่องเสียบไว้ที่ข้าง switch แล้วเดินสายแลนมาได้เลย แถมพออยู่ข้าง switch ก็สามารถต่อกับ UPS ได้ด้วย

สำหรับ site survey router ตัวนี้ยังรู้สึกว่าสัญญาณไม่ต่างกับเดิมครับ (คงเพราะมันเป็นตัวล่างสุดด้วยล่ะ) และไอเดียของ Ubiquiti ไม่ใช่การใส่เสาเยอะๆ แรงๆ แต่เป็นการกระจาย access point หลายๆ ตัว ที่สามารถ manage รวมกัน

สรุปแล้ว network ใหม่ก็ทำให้มองเห็น network ได้มากกว่าเดิมเยอะครับ ดูได้เลยว่าใครใช้ bandwidth มากน้อยขนาดไหน (และ protocol ไหน) แถมยัง control ด้วย firewall ได้ด้วย

2016: จากนี้เหลือเพียงอดีตของกาลเวลา ที่จะไม่ย้อนคืนมาอีกแล้ว

นี่มันช่วงสุดท้ายของท่อนแรกเพลงหวานขมแล้วสิ ปีหน้าจะขึ้นหัวบล็อคยังไงดีล่ะ (หวังว่ามันจะเป็น “ชีวิตที่มีเธออยู่ ยังรู้สึกทุกเวลา”)

สำหรับปีนี้คงมี event สำคัญแค่ลงเครื่องมาโดกะใหม่ กับฝึกงานที่วงใน…

Madoka v3

ตามที่เขียนไว้ใน New year resolution ว่าปีนี้เราจะจับเครื่องมาโดกะลงใหม่เป็น Docker ซึ่งระบบใหม่ลงแล้วผมชอบมันมากๆ

เรื่องแรกคือระบบ shared hosting หายไปสักที เพราะเอาเข้าจริงผมไม่ได้อยากแบ่งขายอะไรอยู่แล้ว แต่ว่าก็มี requirement มาก็เลยต้องทำ ข้อดีอีกอย่างของการมี shared hosting คือมันทำให้ manage ง่ายด้วย อยากได้อะไรก็กดจากเว็บ แต่ผมก็เสียวๆ security เพราะ ISPCP ที่ใช้ไม่ได้อัพเดตมาเป็นชาติ (ตอนนั้นมันไม่รองรับ Debian 8 ด้วย) ตอนนี้บนเครื่องก็จะมีแต่เว็บผมเกือบทั้งหมดแล้ว และแอพลูกค้าอีกเล็กๆ น้อยๆ ที่โดนแปลงมาเป็น Docker ทั้งหมด

เรื่องที่สองคือ Docker ครับ มันทำให้เล่นอะไรง่ายมากกกกก อยากลงอะไรก็ลง ลงเสร็จก็กดลบ หายแบบ clean หมด 100% แถมลงง่ายด้วย ไม่ต้องกังวลว่าจะมีแพคเกจสำหรับดิสโตรเรามั้ย

เรื่องที่สามคือ Docker Compose ครับ แอพใหม่ๆ ผมใช้ compose หมดแล้ว ซึ่งทำให้ deploy ง่ายมากแค่ sudo docker-compose pull && sudo docker-compose up -d จบ แถมมันยังแยก network ด้วย ทำให้ผม isolate แอพได้ค่อนข้างมาก (แอพไหนที่ไม่จำเป็นต้องใช้ MariaDB ก็จะไม่มี route ไปหา MariaDB เลย) และ firewall ก็แน่นขึ้นมาก ไม่ต้องกังวลว่า app จะแอบเปิด port บนเครื่องเลย

ทั้งสามข้อข้างบนมันยังแก้อีกปัญหาที่มีมานานมาก คือระบบเก่าผม deploy แอพที่ไม่ใช่ PHP ยากมาก ผมพยายามจะไม่เอา Django ลงเครื่อง (บางเว็บที่ลง demo ลูกค้าก็ใช้แค่ manage.py runserver) ส่วน Node.js ก็ใช้ forever จัดการซึ่งมันก็ต้องจำให้ได้ว่าแอพไหนอยู่ตรงไหน พอเป็นระบบใหม่ทุกแอพมันเป็น Docker หมด ก็จัดการรวมศูนย์ง่ายเลย (แต่ก็จะไม่ใช่ multiuser แล้วนะ)

screenshot-from-2016-12-03-15-12-13

เรื่องสุดท้ายคือ Monitoring ครับ ผมพยายามหา solution monitoring ดีๆ จากที่วงในมาหลายตัว ตอนแรกลอง ELK Stack แต่มันกินแรมเยอะมาก (ดีที่ Docker จำกัด memory ได้ แต่หลังๆ Kibana restart ทุก 5 วิเลยเพราะโดน memory limit) ปัจจุบันใช้ InfluxDB + Telegraf + Grafana รันใน Docker ทั้งหมด ซึ่งกิน resource น้อยกว่าเยอะมากๆ ครับ

ผมรู้สึกว่า monitoring ลักษณะนี้มันทันสมัยขึ้นเยอะเลยครับ แต่ก่อนผมจะใช้ Munin ซึ่งมันไม่ real time แต่ Stack นี้จะเห็นกราฟวิ่งตลอดเลย และสามารถทำ email alert ได้ด้วย

สำหรับข้อเสียของระบบใหม่ก็คือ memory usage ครับ ตอนนี้แอพที่เดิมๆ เป็น PHP ผมใช้อิมเมจ php:apache หมดเลย ผลคือแต่ละอิมเมจกินแรม 250mb ตลอดเวลา โชคดีว่าเว็บที่ใช้ PHP มีไม่เยอะเท่าไร (บล็อคนี้ก็เว็บนึงล่ะ) ในอนาคตอาจจะต้องลองทำอิมเมจ php-nginx-fpm ใช้เองดูว่าจะลดลงไปเท่าไร (ใช้ php-fpm แล้วเอา load balancer คุย fcgi เข้าไปไม่ได้ครับ เพราะต้อง serve static ด้วย)

Wongnai

วันแรกที่ผมเข้ามาผมนึกสงสัยว่าผมไม่อยากทำ Java EE แล้วเลือกบริษัทที่ Java EE จ๋าๆ นี่คิดถูกแล้วหรอ แต่พอถึงวันสุดท้ายผมคิดถึงบริษัทนี้มาก เพราะบริษัทให้อิสระกับผมมากๆ ผมได้เห็น ได้ทำงานทั้งจากโปรเจกท์ของตัวเอง, งาน Infrastructure จนไปถึงงาน automation และได้ทำงานกับ dev LINE MAN จากเกาหลีด้วย

ผมไม่รู้ว่าคนอื่นมาจะได้ประสบการณ์แบบผมหรือเปล่านะ คิดว่าผมเข้ามาถูกจังหวะมากๆ ในตอนที่บริษัทกำลังจะขยายตัว เลยได้เริ่ม product ใหม่ตั้งแต่ 0, infra ใหม่ตั้งแต่ 0 แล้วมันเลยทำให้ผมมี access และเข้าไปเล่นได้กับทุกส่วนในบริษัท: ผมส่ง Pull request ให้เว็บวงใน, ผมเข้าไปโม LINE official account และ Internal tools

ส่วนนึงคือตำแหน่งงานผมที่ค่อนข้างพิเศษ คือ dev ปกติ (รวมถึงฝึกงาน summer) จะอยู่ในทีมเว็บหลักที่มีเป้าหมายค่อนข้างชัดเจนและ management ก็คิดว่า velocity ทีมนี้ยังต้องเพิ่มไปอีก แต่สำหรับทีมผมที่แยกออกมาแล้ว เราใช้ tool สมัยใหม่อย่าง Node.js, React Native ทำให้การพัฒนาคล่องตัวสูงมาก (เราสามารถเลือก dependency ใส่ได้เรื่อย ไม่ต้องขอใคร) แล้วมันเลยทำให้มีเวลาที่จะไปแก้ของชาวบ้านได้แบบนี้ รวมถึงว่าผมทำ Infra ให้ ก็เลยมี permission ทุกอย่างในระบบด้วยที่ Intern อาจจะไม่ได้ทุกคน

พี่ๆ ที่วงในทุกคนใจดีมากๆ ผมขอเปิด source โปรเจกท์ผมออกมา ทั้ง imagecleanup และ kube-slack ซึ่งก็ไม่ถูกปฏิเสธเลย (นี่ยังไม่พูดถึงของกินที่เค้าเลี้ยงมาทั้งหมดนะ)

แต่การได้ลองทำทั้งโปรแกรม ทั้ง infra กลับทำให้ผมกลับมาอยู่ในสถานะล่องลอยเหมือนเด็กม. 6 ที่ยังไม่รู้จะเรียนอะไรต่อดี ซึ่งตอนม. 6 ผมมีเป้าหมายที่ชัดเจนมากๆ เลยไม่มีความรู้สึกแบบนั้น แต่ตอนนี้ผมกลับไม่แน่ใจตัวเองว่าอยากจะทำเว็บต่อไป ทำ infra หรือไปสู่โลก System กับ Rust ดี…

Rust

อาจารย์ท่านหนึ่งมีการบ้านมาว่าให้ทำโปรแกรมตามโจทย์ที่กำหนด แล้ววัดคะแนนแต่ละกลุ่มตาม performance ซึ่งมันทำให้ผมต้องไปหาดูภาษาว่าอะไรเร็วที่สุด ก็พบว่า Rust ไวมากๆ โดยไม่ต้องลงไปมือเปื้อนกับ C/C++ ผมก็เลยตัดสินใจเรียน Rust

(ผมชอบ project แบบนี้มากเลยนะ มันทำให้ผมต้องไปขุด every tricks in the book มาใช้ อีก project หนึ่งผมได้ลองเขียน data structure เองด้วย แต่เหมือนเพื่อนผมส่วนมากจะไม่ enjoy เท่าไร)

ถึงตอนนี้ผมรู้สึกว่า Rust เป็นสกิลอันหนึ่งที่มีค่ามากใน skillset ของผม ถ้าตามบล็อคนี้มาอาจจะพบว่าผมเคยเขียน Ruby แล้วไปไม่รอดเท่าไร เพราะผมหา niche มันไม่เจอว่ามันจะใช้ทำงานอะไรที่ภาษาเดิมๆ ของผมทำไม่ได้ แต่ Rust มีคำตอบให้ชัดเจน ก็หวังว่าในอนาคตผมจะยังได้ใช้ Rust จนกระทั่งฟิตพอที่จะเป็นภาษาที่ 4 ที่ผมขาย (PHP, Python, JavaScript)

Conference

ทำงานมาสักพักเพื่อนก็เริ่มชวนว่าไปออกงานบ้าง ซึ่งตอนแรกๆ ก็ไม่ค่อยสนใจเพราะหัวข้องานไม่ได้ทำให้เราสนใจเท่าไร แต่พอไปก็พบว่ามันเป็นโอกาศ networking ที่ดีมาก พี่ๆ speaker งาน React เองเค้าก็บอกว่าอยากให้มาพูด แต่ไม่รู้ว่าจะติดต่อยังไง และก็ได้เห็นอะไรหลายๆ อย่างที่เล่นเองก็ไม่ได้สนใจจะลอง (นั่นขนาดนั่ง Beginner’s track นะ)

หลังจากนั้นก็มีบล็อคเรื่อง Docker ที่พี่เดียร์เห็นแล้วก็ชวนเข้ากลุ่ม Docker และก็ชวนไปพูดที่งาน Meetup ด้วย งานนั้นก็ตื่นเต้นดีครับจนกระทั่งว่าตอนออกไปลืมเก็บของ วางคอมและอุปกรณ์ทุกอย่างไว้ออฟฟิสหมดเลย 555

จริงๆ จากความสำเร็จของ Blog Docker นี่ก็อยากเขียน content แบบนั้นเพิ่มอยู่ครับ แต่ก็ไม่รู้จะเขียนอะไรดี อย่างที่เกริ่นไว้ว่ามันมาจาก content ที่สอนคนอื่นแล้วเอามารวบรวมไว้ พอเป็นเรื่องอื่นๆ ที่ไม่ได้เห็นคนหัดใช้แล้วติดปัญหาเลยไม่รู้จะเขียนอะไรเท่าไร และบล็อคนี้ก็ตั้งเป้าไว้ตั้งแต่แรกว่ามันคือบล็อคส่วนตัว ก็ไว้เขียนเรื่องส่วนตัวด้วย ไม่ใช่ technical blog ถ้ามี technical content เยอะก็ค่อยว่ากันอีกที

TMStreamlabs

ช่วงกลางปีผมค่อนข้างแอคทีฟใน MyLive แล้วก็เห็นคำถามนึงที่สตรีมเมอร์ถามมาในกลุ่มว่า “ทำโดเนทด้วยทรูมันนี่ยังไง” แรกๆ ผมก็ไม่ได้คิดอะไรล่ะ แต่ตอนหลังก็ลองหาวิธีแล้วทำดู ก็ออกมาเป็น TMMyLive ซึ่งปรากฏว่าคนใน YouTube เอาไปใช้เยอะมาก (อ้าว…) เยอะจนขนาดว่าผมเห็นเงินวิ่งผ่านแล้วผมก็อิจฉาล่ะ เพราะตอนเปิดตัวก็บอกว่าผมให้ใช้ฟรี ไม่หักอะไรทั้งนั้น แต่ถ้าใช้แล้วช่วยโดเนทมาด้วย ปรากฏว่าไม่มีโดเนทอะไรมาเลยสักบาทเดียว แต่ยอดเดือนเดียววิ่งเป็นแสน

ก็เลยตัดสินใจว่าต้องทำอะไรสักอย่าง เลยไปเขียนเว็บมาใหม่ให้ระบบมันดีขึ้นกว่าเดิม แล้วสักพักก็เพิ่มฟีเจอร์ที่หักทุกๆ 10 donate เข้าตัวเอง (ตอนแรกจะใส่ 5 มีเพื่อนทักว่าเยอะมาก) ซึ่งรายได้ตอนนี้ก็พอจะจ่ายค่าเซิร์ฟเวอร์นี่เองได้แล้วล่ะครับ และด้วยความอยากรู้และไม่อยากหักหลังคนใช้ก็เลยให้เป็น optional ไป ปรากฏว่าก็มีเปิดครึ่งไม่เปิดครึ่ง ตรงนี้ผมก็คงทำใจเพราะมันเหมือน adblock ล่ะ คลิกเดียวปิดไม่เสียอะไรเลยใครจะไม่ปิด ก็เลยคิดว่าจะล็อคไปว่าฟีเจอร์ใหม่ๆ ถ้าออกมาก็จะให้เฉพาะคนโดเนทไป (แต่ด้วยว่าระบบมันเป็น integration ตรงกลางก็จะทำได้ไม่เยอะเท่าไร)

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

2016 New Year resolution

ปีที่ผ่านมาพิเศษคือผม retarget New year resolution ใหม่ ลองมาดูกันครับ

อยากสตรีมเกม

ไม่รู้จะเรียก Success ดีไหม คือผมก็สตรีมเป็นระยะๆ คนดูมีบ้าง ไม่มีบ้าง แต่ก็ต้องยอมรับว่าผมไม่มีสกิลแบบมืออาชีพเค้า ถ้าสตรีมก็เลยจะไปทาง niche มากกว่า เช่น ผมสตรีมงาน Apple/Google events ซึ่งยอดคนดูสูงสุดก็เกือบ 300 คนมาแล้ว (ขอบคุณจ่าพิชิต ผมนี่ช็อคเลย) หรือจะเป็นเกมที่มัน geek หน่อยๆ แต่ตรงนี้ก็ทำบ่อยไม่ได้ เพราะไปโชว์เล่นเกมแล้วติดก็ไม่ค่อยดีเท่าไร

ที่ไม่ได้ทำเลยคืออยากทำ Gaming talk แต่ไม่รู้จะ co-host ใคร (ตอน Barcamp Bangkok @Fantasier แนะนำ @winwanwon มา แต่ยังไม่ได้ follow up เลย)

ซื้อเกมใน GOG

ผมพบว่าราคาใน Steam ล่อตาล่อใจมากๆ และใน Humble เองก็ DRM-Free พอสมควร (แต่ไม่ค่อยอยากนับ เพราะเกมบนนั้นไม่ค่อยอัพเดต)

แต่โดยรวมแล้วยังคิดว่าสำเร็จอยู่ ปีนี้ผมซื้อ Never Alone Arctic Collection, Grim Fandango Remastered, Firewatch (ในราคาที่แพงสะใจ), Another World (ยังไม่ทันเล่นก็ลง Humble), Undertale และ Sam & Max Hit the Road จาก GOG

เก็บเงิน

Success!

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

เอ๊ะ… ปีที่แล้วเขียนว่าหมื่นห้า?? ตลกเถอะหมื่นห้านั่นเก็บสองสามเดือนเองนะ!

Tw3

ผมคิดว่าคงต้องประกาศไว้ตรงนี้แล้วแหละว่าผมจะล้มโครงการ Twitica แล้ว เพราะผมเองเล่น Twitter น้อยลงมากๆ ในขณะที่ Twitter มัน friendly กับ Developer น้อยลงเรื่อยๆ อย่างที่เห็นชัดๆ เลยคือมันไม่มี Poll API หรือ Notification API

(ผมกำลังสงสัยว่าที่เล่นลดลงเพราะผมเกลียด UI ของ Tw3 หรือเปล่า)

สรุปโดยรวมแล้ว New year resolution ที่ผ่านมาเป็นไปได้สวยมากๆ ครับ 3/4 success แน่ะ ขอให้ปีหน้าเป็นไปได้อย่างนี้บ้าง…

2017 New Year Resolution

พูดเพราะ

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

(จะว่าไป เคยมีคนทักในเน็ตประมาณ 2 รอบว่านึกว่าเราเป็นผู้หญิง ถามว่าทำไมเค้าบอกว่าจากสไตล์การพิมพ์ที่ใช้คำว่าเราแทนตัวเอง)

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

สไตล์สุดท้ายที่ไม่ควรจะใช้เลย อันนี้ก็ไม่ค่อยใช้ แต่ก็เหมือนจะเคยมีบ้างคือแบบ “ปิดเบาๆ ไม่ได้หรอ” ซึ่งมัน passive-aggressive แรงมากๆ อันนี้ไม่รู้คนพูดเค้าคิดว่ามัน soft กว่าประโยคคำสั่งหรือเปล่า แต่เราว่ามัน aggressive มากๆ

Backup

รู้สึกว่าชีวิตละเลยการ backup มากๆ เคยเขียนในเฟสว่า notebook ทำงานมีนโยบายว่า format มันเมื่อไรก็ได้ แต่นั่นไม่ใช่กับ Workstation ถ้าหาย Library เพลงที่สะสมมาเกลี้ยงแน่นอน รวมถึงบน server นี่เองก็ไม่ค่อยได้ backup (เคย backup เทพสุดก็ตอนทำ menome ที่ database daily backup ขึ้น cloud เลย)

ปีหน้าน่าจะเริ่มทำ automated backup ได้แล้ว แต่คอมส่วนตัวนี่ไม่รู้ว่ายังไงดี… encrypted backup ลง cloud? ซื้อ NAS?

ซื้อเพลง

(ทำไมชอบเขียน wishlist เสียเงิน…)

ปลายๆ ปีจัด YNAB มาใหม่แล้วก็คิดว่าควรจะจัดงบซื้อเพลงแยกไป แต่เอาเข้าจริงก็ไม่ค่อยได้ซื้อเพลงเท่าไร (เพราะมันรวมกับค่าดูหนังด้วย) และ music streaming ก็ไม่ได้ใช้แล้ว เพราะเดิมใช้ Deezer แต่คลังเพลงมันหดลงเรื่อยๆ ในขณะที่ Apple Music client ก็ไม่ค่อยดี, Joox free ก็ bitrate ต่ำกว่า YouTube (คิดว่าเสียเงินจะดีขึ้น แต่ยังไม่อยากลอง) ก็เลยคิดว่าน่าจะเริ่มต้องซื้อเพลงที่ฟังบ่อยๆ แล้ว

ปีที่ผ่านมาเหมือนจะซื้อไปแค่ Your Name OST (บางเพลง) กับ Mekakucity Records (CD) เองแฮะ

บริจาค

ปีสองปีก่อนผมตั้งงบใน You Need a Budget ว่าจะบริจาค รวมได้พันนิดๆ หมดปีก็ว่าจะบริจาค แต่สุดท้ายผมไม่รู้จะบริจาคให้ใครก็เลยเอาเงินเข้ากระเป๋า

ตอนนั้นเงื่อนไขเป็นแบบนี้ครับ

  1. เป็นโครงการ open source ที่ใช้ใน product ได้เงิน
  2. ไม่มี commercial offering (เช่น รับ consult หรือมี product เสียเงินอย่าง Docker)
  3. ถ้าเป็นไปได้ไม่อยากให้เจ้าที่มี sponsorship อยู่แล้วด้วย (เช่น Django ได้ Mozilla Grant) เพราะอยากให้ developer ตัวเล็กๆ มากกว่า

ปัญหาคือตอนนั้นติดข้อ 2 ผมนึกไม่ออกว่าจะให้ใครดี ก็เลยพับไป

ตอนนี้เอาเป็นว่า 5% จากรายได้ของ TMStreamlabs ตลอดปี 2017 จะเก็บไว้ Donate สักอย่างครับ ถ้าหาตามเงื่อนไขไม่ได้ผมจะสนับสนุน Software Freedom Conservancy องค์กรที่สนับสนุนการฟ้องร้องบริษัทที่ละเมิด Open source software license ซึ่งในปีที่ผ่านมาเคสดังๆ ก็จะมีเคส VMware ที่ SF Conservancy สนับสนุนอยู่

อยาก pledge โครงการอื่นๆ ด้วยนะครับ แต่คงต้องดูก่อนล่ะว่าปีหน้าจะได้ทำอะไรบ้าง

2017 Predictions

ผมกลับไปอ่านหัวข้อ Prediction จากบล็อค 2015 แล้วรู้สึกว่าชอบหัวข้อนี้มากๆ อ่านแล้วรู้สึกว่าน่ารักดี สำหรับปีหน้าเราจะมีอะไรบ้างล่ะ…

Project จบ

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

ทำงาน

ผมบอกพ่อว่าเรียนจบแล้วอยากอยู่บ้านสักสามเดือน ถ้ามี project อะไรทำ (ตอนนี้อยู่บ้านทำ TMStreamlabs ก็สนุกดี) ถ้ามองจากตอนนี้ยังคิดว่ากลับไปหางานทำดีกว่า

สำหรับงานที่จะได้ทำ คิดว่าสุดท้ายแล้วอาจจะหางานเงินเดือนดีอย่างที่อยากได้ไม่ได้ คิดว่าคงจะหางานในบริษัทที่อยากทำงานด้วยมากกว่า แต่ก็ไม่รู้ว่าทางบ้านจะว่ายังไงบ้างล่ะ (ก่อนผมจะได้มาวงในนี่ก็ไฟท์พอสมควรนะ) เผลอๆ ถ้าเรียงเงินเดือนเข้างานในรุ่นแล้วผมอาจจะไม่ได้สูงสุดก็ได้

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

เรียนต่อ?

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