อ่าน Grokking Simplicity

function ทางคอมพิวเตอร์คือโปรแกรมที่รับ input แปลงออกไปเป็น output ซึ่งมันก็ควรจะตรงไปตรงมาตามนั้น

แต่ตอนเขียนจริง ๆ มันมี function แบบที่ไปแก้ input ก็มี, function แบบที่ว่า input ก็เหมือนเดิมแต่เรียกสองทีสามทีแล้วผลออกมาไม่เหมือนกัน; ถ้ามีอาการแบบที่ว่าก็น่าจะ test ยากทั้ง manual ทั้ง auto; แก้ยาก; แบ่งงานไปรันหลาย ๆ core ยาก

ใน Grokking Simplicity เขาแยก Calculation กับ Action, Calculation เช่น sum ส่วน Action เช่น sendEmail อันนี้จะเห็นได้ว่าถ้าเรียก 10 ครั้งซ้ำ ๆ โดนด่าแน่นอน

code ส่วน calculation กับ action ควรจะถูกจับแยกกัน อันนี้เป็นประเด็นที่สองที่ผมจับได้จาก grokking simplicity ในบทที่ 4

ถ้าไม่แยกส่วนที่ไป update หน้าเว็บผ่าน dom กับส่วนคำนวณ cart total ก็กลายเป็นว่าจะ test ว่าคำนวณถูกหรือเปล่า อย่างน้อยก็ต้องเปิด web browser ก่อน แล้วไปแกะผลมาจากหน้าเว็บ แต่พอแยก calculation ออกมาก็ test แยกเป็น function เดี่ยว ๆ เว็บไม่เกี่ยวได้เลย

บทที่ 5 ข้อแรกคือบอกว่า action ก็ควรใส่ argument ให้ชัดเจนอยู่ดี เช่น

update_shipping_icons()

ก็เใส่ไปเลยว่า

update_shipping_icons(cart)

อันนี้ให้นึกภาพว่าทำเว็บ Lazada นะครับ แล้วต้องเอา cart ไปคำนวณว่าส่งฟรีหรือเปล่า ถ้าฟรีก็ต้องเปลี่ยน icon

ถ้าไม่ใส่ให้ชัดเจน ก็เหมือนเดิมจะ test ยาก เอา calculation ที่ทำไว้บนที่ 4 มาต่อก็ยากอีก

ข้อสองคือให้แบ่งออกเป็น function บ่อย ถ้าแบ่งให้ function นึงมีหน้าที่เดียวได้ก็จะดี

บทที่ 6 programming language ส่วนมากจะใช้การแก้ค่า ใน array ใน collection หรือใน object ก็ตาม

แต่ functional programming เป็นแนวที่ไม่อยากแก้ค่าเดิม เพราะผมพูดเองเลยว่าการแก้ค่านี่ล่ะที่ทำให้โปรแกรมบึ้ม

แต่ถึงใช้ภาษาที่เน้นแก้ค่า เปลี่ยนแปลง object array collection ต่าง ๆ ก็มีท่าแก้อยู่ดีคือ copy-on-write ซึ่งเขายกตัวอย่างว่า setQuantityByName แทนที่จะไปแก้ object ตรง ๆ ก็ไป copy object มาก่อนแล้ว ก็แก้ object ตัวที่ copy มาใหม่ แล้ว return object นั้น

บทที่ 7 ถ้ามี function เก่า หรือ function ที่คนอื่นเขียน แล้ว function อาจจะแก้ค่าอะไรหรือเปล่าก็ไม่รู้ เท่าที่อ่านคร่าว ๆ คือเขาก็แก้ด้วยการ copy นี่ล่ะ

บทที่ 8 ละเอียดละออมากแต่สรุป ๆ คือทำโปรแกรมให้เป็น layer

function ในแต่ละชั้นให้ดีก็ไม่ควรไปเรียกข้ามชั้นเยอะ เช่น ในชั้น basic cart operations ก็ไม่ควรข้ามไปใช้ for loop ไปทำ indexOfItem() มาขั้นในชั้น copy-on-write ดีกว่า

บทที่ 9 พูดถึง pattern ที่ function ไม่ควรเรียกกันทะลุ layer คือ function layer บน 3 ก็ควรมาเรียกแค่ layer 2 ไม่ใช่ล้วงเรียก layer 1 เอง

อีก pattern คือถ้าไม่จำเป็นก็อย่างเอา function ไปใส่ layer ล่าง ๆ เยอะ

patten สุดท้ายคือใส่ layer เข้ามาแล้ว ทุกคนควรจะรู้สึกว่าทำงานสะดวกสบายขึ้น

ทั้งหมดนี้ในภาคปฏิบัติสำหรับ front-end ทำให้ผมนึกถึง re-frame; ผมมองว่า re-frame ของวาง layer พวกนี้มาให้แล้ว ถ้าเป็นสายปฏิบัติก่อนอ่านทีหลัง ก็อาจจะลองเขียนอะไรด้วย re-frame ดูสักชิ้นก็ได้

บาที่ 10-14 พูดถึง tool ใน functional programming ต่าง ๆ ตั้งแต่ higher function; เรื่อง map, filter; เรื่องการเอาพวกนี้มาต่อ ๆ กันเป็น chain และแก้ไขข้อมูลที่มันซ้อน ๆ กันด้วย update

บาที่ 15-17 เป็นเรื่อง concurency ทั้งวิธีวิเคราะห์ แยกจากกันว่า function ไหนต้องทำเป็นลำดับหรือไม วิธี share resource กันระหว่าง timeline ใน functional programming lanauge มีเครื่องมือช่วย เช่น atom ใน Clojure; ของ Erlang/Elixir ก็ใช้อีกอย่าง; สุดท้ายคือการทำให้แต่ละ timeline มันประสานงานกันบางทีอาจจะต้องมีหยุดรออีก timeline

บาที่ 18 เป็นเรื่อง onion architecture ที่นอกจากจะแบ่งระบบแบบเดิม ก็แบ่งตาม layer ที่เรียนมาบทแรก ๆ ด้วย

บนที่ 19 บทสุดท้ายเป็นเรื่อง functional programming language ต่าง ๆ ที่พอจะเอามาใช้ได้

ซึ่งไปซื้อได้ที่ https://www.manning.com/books/grokking-simplicity

ประสบการณ์เคลมของ Advice โดยที่ไม่ไปที่ร้าน

ผมซื้อลำโพงจาก Advice มาแล้วเบสไม่ออกจาก subwoofer ก็เลยลองเคลมดู ขั้นตอนแรกคือเข้าไปที่ https://www.advice.co.th/services/checkwarranty จริง ๆ ก็อยู่ในเมนูหน้าแรกนั่นล่ะ แต่ผมขี้เกียจบอกว่าคลิกตรงไหนเวลาซื้อของ Advice มาแล้วพังระบบชัดเจนดีมากของผมเป็นลำโพงเขาจะแปะ barcode ของ Advice มาเราก็เอาเลข barcode ไปแปะก็จะมีข้อมูลรับประกันขึ้นมา

ในหน้าเดียวกันแต่อยู่ล่าง ๆ ให้กด “แจ้งเคลม”

ด้านล่างคือหน้าแจ้งเคลม

1. barcode ก็คือรหัสที่ตรวจสอบการรับประกันทีแรกนั่นล่ะ
2. ชื่อสินค้าเราดูจากหน้าที่ซื้อของได้ เช่น (2.1) MICROLAB (X1)
3. อาการเสียผมใส่ไปว่า Subwoofer ไม่ทำงาน
4. รูปก็ถ่ายรูปลำโพงไปเลย

ข้อมูลลูกค้าก็กรอกไปเขาจะได้มาส่งคืนถูก แล้วกดบันทึกการเคลม

ขั้นต่อไปคือส่งของที่จะเคลมกลับไป Advice ซึ่งของวันนี้คือ

บริษัท แอดไวซ์ ไอที อินฟินิท จำกัด (สำนักงานใหญ่)

เลขที่ 74/1 หมู่ 1 ถ.ราชพฤกษ์ ต.ท่าอิฐ อ.ปากเกร็ด จ.นนทบุรี 11120

โทร 02-908-8888

ต่อไปเขาอาจจะย้ายไปที่อื่นก็ได้นะ แต่ก่อนจำได้ว่าเคยอยู่แถวโรวพยาบาลโรคทรวงอก

ผมใช้ Kerry มีปัญหาว่ากรอกเบอร์โทรไม่ได้ก็เลยใส่ 0029088888 อันนี้ก็แปลก ๆ นะบริษัทที่ไหนเข้าจะให้เบอร์มือถือ

Kerry นี่ลงแอปแล้วเรียกมารับของที่บ้านได้เลย ต่อไปเขาโม้ว่าจะใช้เว็บได้ แต่ยัง

พอได้เลขของ Kerry มาก็กรอกแล้วบันทึกลงไปในระบบ ที่เหลือก็รอรับโทรศัพท์ครับ คุยกับช่างนิดหน่อยว่าอาการเสียเป็นแบบไหน ในกรณีของผมช่างก็โทรมาครั้งที่สองว่าเดี๋ยวส่งตัวใหม่มา แล้วก็มี SMS ตามมาในไม่กี่ชั่วโมงเป็น tracking numberเวลาซื้อของ Advice มาแล้วพังระบบชัดเจนดีมาก ของ Kerry ที่เหลือก็รอรับของ ส่วนมาก Kerry ถ้าอยู่กรุงเทพก็ได้รับของวันรุ่งขึ้น

สรุปว่าผมประทับใจครับ ระบบสะดวกไม่ต้องโทรหา call center ไม่ต้องรอรถของผู้ขาย บางท่านอาจจะมองว่าเสียค่า Kerry เพิ่ม ซึ่งอันนี้ผมโอเค เพราะต้องการความเร็วของซื้อมาก็อยากใช้ไม่ได้เอามาตุน

รีวิว Asus Chromebook Flip C214

ชื่อเต็ม ๆ คือ Asus Chromebook Flip C214MA-BU0546 (Dark Grey) ซื้อมาจากร้าน Advice ราคา 9,790 บาท เมื่อกี้ดูที่เว็บ Advice เหลือ 8,900 บาทแล้ว โพสต์นี้เป็นรีวิวแบบไม่มีสปอนเซอร์ ทดลองใช้มา 19 วัน Notebook ตัวนี้ตามชื่อรุ่นก็คือเป็น Chromebook ใช้ Chrome OS ไม่ได้ใช้ Windows เหมือนกับ Notebook ส่วนมากที่ขาย ๆ กันในโลกทุกวันนี้

ประเด็นที่สองรุ่นนี้ใช้แบบเป็น Notebook ก็ได้ Tablet ก็ได้ทั้งแนวตั้งแนวนอน แต่เครื่องนี้ไม่มีปากกา (stylus) มาให้ครับ ผมทดสอบมาหลายแง่มุมเลย

คำถามแรก: ลง Windows และ GNU/Linux ได้หรือไม่

คำตอบ: ผมไม่ทราบว่าติดตั้ง Windows ได้หรือเปล่า แต่ถ้าไม่จำเป็นก็อย่าพยายามทำเลยเพราะว่ารุ่นนี้มีพื้นที่เก็บข้อมูลแค่ 32GB ถึงติดตั้ง Windows 10 ลงไปก็แทบไม่เหลือพื้นที่ให้ใช้งานเลย อีกอย่างคือแป้นพิมพ์ก็ไม่ได้ออกแบบมาให้ใช้ Windows

แป้นพิมพ์

สังเกตว่าแป้นพิมพ์ไม่มีปุ่ม win เลยครับ ปุ่ม F1 F2 F3 F4 F5 … F12 ไม่มี หรือถ้าอยากลง Ubuntu ก็ลงเครื่องที่มากับ Windows ก็น่าจะเหมาะกว่าเพราะว่าอย่างน้อยมีพื้นที่เก็บข้อมูลเยอะ

คำถามต่อมาคือใช้ LINE ได้หรือเปล่า

คำตอบคือใช้ได้ LINE Corp ท่านทำ LINE Extension บน Chrome มาให้เลย แต่ก็สังเกตว่า LINE Corp ท่านก็ทำมาให้เท่านี้ บางข้อความก็ขึ้นว่าขออภัยแบบที่เห็นในภาพ

คำถาม: ใช้ Word Excel PowerPoint ได้หรือเปล่า

คำตอบคือได้แต่ต้องไปใช้รุ่นออนไลน์ผ่านเว็บ ไม่มีติดตั้งแบบบน Windows ซึ่งทุกคนลองใช้ได้เลยโดยที่ไม่ต้องซื้อ Chromebook ที่ office.live.com ถ้าหากว่าอยากจะใช้แบบไม่ต่อเน็ตก็พอมี Google Docs และตัวอื่น ๆ ของ Google แทนได้บางส่วน แต่แน่นอนว่าความสามารถมันก็ไม่เหมือนตัวที่ลงบน Windows แน่ ๆ อย่างน้อยถ้าจุกจิกเรื่องฟอนท์ก็ไม่รอดแล้ว

คำถาม: สามารถปรินท์ (พิมพ์) งานได้หรือไม่

ได้ ถ้าปรินเตอร์ใช้งาน Google Cloud Print ได้ ซึ่งอันนี้ผมยังไม่มี อาจจะต้องหามาเพิ่มภายหลัง สามารถดูรายการว่าเครื่องไหนใช้ได้บ้างจากที่ https://www.google.com/cloudprint/learn/printers/

คำถาม: ใช้ Adobe Lightroom ได้หรือไม่

ผมไม่เคยใช้เองแต่ Lightroom มีรุ่นออนไลน์ใช้ผ่านเว็บได้ และรุ่นบน Android ก็น่าจะติดตั้งได้

ต่อไปจะเป็นประเด็นที่อาจจะไม่มีใครอยากทราบเลยแต่ผมก็เล่า

ข้อแรกเลยคือ Chromebook ใช้แอปของ GNU/Linux ได้

Gimp

อยากเช่นในภาพก็ใช้ Gimp ซึ่งเป็นแอปจาก GNU/Linux มาแต่งภาพได้ แต่ข้อจำกัดก็คือเปลี่ยนภาษาของแป้นพิมพ์ไม่ได้ และเวลาใช้เป็น tablet ก็แป้นพิมพ์บนจอก็จะไม่ขึ้นมาสำหรับแอปพวกนี้ ถึงมีข้อจำกัดพวกนี้แต่ก็มีประโยชน์มาก คืออย่างที่เห็นเอามาทำรูปลงโพสต์นี้ได้

ประเด็นถัดไปคือใช้ Google Play Store ได้

Play Store

แอปจาก Android ก็นำมาลงได้บางแอป ผมลองหา Grab ว่าจะเอามาลองเรียก taxi ก็ไม่มี แต่มี LINE ครับ ปัญหาของ LINE จาก Play Store คือถ้าใช้แล้วบนมือถือก็จะใช้บัญชีเดียวกันไม่ได้ ลองดู Shopee Lazada ก็มี พวกนี้บางทีใช้แอปมี code ลดราคาเยอะกว่าใช้บนเว็บมั้ง

ส่วนต่อไปก็จะวิจารณ์แล้วว่าทำไมชอบไม่ชอบอย่างไร

ผมจะวิจารณ์การใช้งานทั่ว ๆ ไปที่ไม่ใช่โปรแกรมเมอร์ Chromebook รุ่นนี้คู่แข่งที่ราคาใกล้เคียงมีทั้ง Windows แบบพับจอได้ Android tablet และ iPad

ผมมองว่า Chromebook มันยังเป็น notebook แต่ว่ามี touchscreen แต่ว่า iPad กับ Android เป็น tablet ที่ต่อแป้นพิมพ์ได้ เพราะว่าประสบการณ์การใช้งานของ Chromebook เหมือนใช้ notebook เลย พวก touchpad click ซ้ายคลิกขวาใช้ได้หมดเนียน แอปก็คือเหมือนใช้ notebook เท่าที่ลองใช้ iPad กับ Android มันยังไม่เนียนเท่าถ้าใช้เป็น notebook แต่ถ้าใช้เป็น tablet เมื่อไหร่ อันนี้ iPad นำเลย ส่วน Android ก็กลาง ๆ chromebook ก็ใช้ได้แต่ไม่เนียนเท่า iPad แน่ ๆ

ส่วน Windows แบบมี touchscreen กับ Chromebook นี่ Windows ได้ความหลากหลายกว่า Windows ก็เอามาติดตั้ง Chrome ได้แล้วก็ใช้แอปอื่น ๆ ได้อีกเพียบ แต่เรื่องความลื่นความเนียนโดยเฉพาะในเครื่องราคาถูกผมรู้สึกว่า Chromebook ดีกว่ามาก ความประทับใจตอนใช้ touchscreen ก็ให้ทาง Chromebook เหมือนกัน สุดท้ายคือแป้นพิมพ์ของ Chromebook ใช้ถนัดกว่ามากเพราะไม่ต้องมีปุ่ม win

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

ผมลองใช้ Zoom ใช้ Telegram ใช้ Element.io จากเว็บก็ใช้งานได้ดี พวกนี้จริง ๆ ทุกคนที่มีคอมพิวเตอร์ก็ลองเองได้โดยใช้ Chrome

ส่วนที่เจอปัญหา

หลังจากใช้มาได้ 18 วัน YouTube ผมก็กลายเป็นโหมด restricted เฉยเลย พยายามแก้ในเว็บก็ไม่หาย ก็เลย reset เครื่องไปรอบนึงปรากฎว่ากลับมาใช้ได้เหมือนเดิม แต่สำหรับผมก็ไม่ใช่เรื่องใหญ่ดูนะ เพราะว่าไม่ได้ทำงานด้วยการเม้น YouTube

ส่วนที่คิดว่าทำไมอยากจะได้รุ่นแพงกว่านี้

ผมคิดว่า Asus Chromebook Flip C214 มันก็ใช้ดีมากอยู่แล้ว ขนาดกระทัดรัดพกสะดวก เปิดใช้งานไวสุด ๆ บางทีผมเปิด Windows มากว่าจะเริ่มใช้งานได้นี่ลืมไปแล้วว่าจะทำอะไร แต่สะดุดอยู่ว่าจะเครื่องรุ่นแพงกว่านี้เช่น Asus Chromebook Flip CX5 ราคาเป็นสองเท่าสามเท่ามันนอกจาก spec ที่สวยหรูมันประโยชน์อะไรต่อการใช้งานจริงหรือไม่ ที่คิดไว้ก็มี Google Sheets พอผมเปิดไฟล์ใหญ่อาการมันเหมือนหน่วยความจำไม่พอถ้าได้เครื่องแรงกว่านี้ก็น่าจะช่วยได้ อีกอย่างคือเครื่องรุ่น CX5 เหมือนจะแถม stylus ด้วย สุดท้ายคือผมลองเอาไปต่อทีวี 4K เพื่อที่จะดู Bugaboo.tv ปรากฎว่าเหมือน CPU มันจะเอาไม่ค่อยอยู่เพราะว่าจอมันละเอียดเกินไปหนึ่ง แถมแต่ละหน้ายังมีภาพขยับไปมายุกยิกด้วย แน่นอนว่าถ้าได้ Intel Core i5 ก็น่าจะดีกว่านี้ แต่ที่ว่ามาทั้งหมดผมว่าเป็นเรื่องเล็กน้อยมาก ๆ ถ้าซื้อใหม่ได้อีกผมก็คงเอา C214 แบบถูก ๆ หรือเครื่องคล้าย ๆ C214 อยู่ดี

ว่าด้วย spec

C214 ใช้ CPU Intel Celeron N4020 หลายคนได้ยิน Celeron ก็อาจจะไปนึกถึง CPU โบราณยุค Pentium ออกมาแรก ๆ ซึ่ง Celeron N4020 นี่คนละเรื่องเลยเป็น CPU สายประหยัดพลังงานของ Intel เป็นญาติ ๆ กับ Intel Atom ก็คงพอเดาได้ว่าไม่แรงมาก ได้ RAM มา 4GB ได้พื้นที่เก็บข้อมูลมา 32GB คนที่เคยใช้คอมพิวเตอร์มาก็คงพอทราบว่า spec นี่มันไม่แรงเลยสักนิดเดียว อันนี้ทำให้ผมประทับใจมากว่า Chrome OS มันทำงานลื่นอย่างไม่น่าเชื่อ จอนี่ได้แค่ HD นะครับ 720p

สรุป

ชอบ Chromebook รุ่นนี้มากเพราะรู้สึกว่าเปิดมาแล้วมันพร้อมใช้เลย และประสบการณ์ใช้งานเหมือนกับใช้เว็บบนเครื่องตั้งโต๊ะไม่ต้องปรับตัวอะไรเลย เครื่องขนาดเล็กน้ำหนักเบา ราคาประหยัด

Chromebook ก็คือ Chromebook ไม่ใช่ Windows; ถ้าท่านอยากได้ Windows ลักษณะคล้าย ๆ เครื่องนี้ลองหา Notebook 2-in-1 ที่ Jib หรือ Advice หรือร้านอื่นที่ท่านชอบดูครับ มีรุ่นที่ใช้ Windows ขายด้วย แต่เครื่องใช้ Celeron N4020 กับแรม 4GB ลง Windows 10 มาเป็นผม ผมไม่ซื้อนะถ้าไม่ใช่ว่าจำเป็นจริง ๆ

สำรวจแอป Mastodon

ดี q

Haruka Tsuyu

หลังจาก #ไม่เอาทวิตเตอร์ไทยแลนด์ ขึ้นเทรนด์ได้สักพัก เราก็เริ่มหาที่อยู่ใหม่ จนได้เจอกับMinds และโซเชียลมีเดียที่ชื่อMastodon

Mastodon ให้ความรู้สึกแบบทวิตเตอร์ เล่นง่ายพอๆกับทวิต บอกเลยว่าช่วงที่ยังงงๆกับMindsก็เข้าไปเล่นทั้งคู่นี่แหละ 555

คร่าวๆของแอปนี้ แม้จะสมัครใช้คนละเซิร์ฟเวอร์แต่ทุกคนสามารถข้ามแอปมาคุยมาเม้นกันได้ เนื่องจากอยู่ภายใต้สังกัดFediverse เหมือนกัน (ไม่รู้จะอธิบายยังไง ขอเพลงเชียร์กีฬาสีมาอธิบายนะ  นึกถึงเพลงนี้นะ คนละพ่อคนละแม่แต่ก็มารวมกัน นั่นแหละ ความหมายของFediverse ที่เราเข้าใจ)

เพื่อนต่างเซิร์ฟเวอร์

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

Mastodon พิมพ์ข้อความได้ยาวกว่าทวิต เต็มที่ 500 ตัวอักษร ตั้งเวลาโพสต์ได้ด้วยนะ

แถม Mastodon ยังตั้งค่าการโพสต์ได้ 4 ระดับ อีกต่างหาก

1.สาธารณะ
2.ไม่แสดงรายการ ไม่โชว์เรียลไทม์ในไทม์ไลน์สาธารณะและไทม์ไลน์เพื่อนร่วมเซิร์ฟเวอร์ จะเห็นเมื่อเข้ามาดูแอคเค้าท์ของเราเท่านั้น อารมณ์กึ่งเปิดกึ่งปิดประมาณนั้น
3.เห็นเฉพาะคนที่ติดตามเรา
4.ไดเร็ค ข้อความจะเด้งเข้ากล่องข้อความส่วนตัวทันที

เพื่อนร่วมเซิร์ฟ

ส่วนของรายการ เป็นการแยกประเภทคนที่เราฟอลไว้เป็นหมวดหมู่ ซึ่งเราสามารถจัดกลุ่มได้ภายหลัง

การแก้ไขข้อความ ต้องเลือกลบแล้วพิมพ์ใหม่ อันนี้ก็เป็นส่วนที่ทำได้ดี นอกเหนือจากลบทูตออก อันนี้ได้!

ที่ชอบแอปอย่างนึงคือปิดภาพ สำหรับคอนเท้นต์NSFW หรือเลี่ยงสิ่งที่เป็นtrigger สำหรับเราได้

ถ้าอยากรู้ว่าเพื่อนร่วมเซิร์ฟเวอร์เป็นใคร แนวไหน ไปดูได้ที่ไดเร็กทอรี ส่องข้ามเซิร์ฟก็ได้ เจ๋งมั่ก ส่องแล้วถูกชะตาก็ฟอลไม่ชอบก็ข้าม เบื่อหน้าก็muteหรือบล็อกจ้า เล่นง่ายๆแบบทวิตเป๊ะ

ในส่วนภาษา mastodon ที่ใช้บ่อย
Toot = tweet
boost = retweet
favorite = like
reply = mention

ข้อเสียของแอป ไม่มีแปลภาษาให้และไม่มีแฮชแท็กตามเทรนด์เรียลไทม์ อยากหาอะไรต้องเสิร์ชkeyword เอง แต่ก็มีสิ่งทดแทนให้คือไปส่องเพื่อนที่สิงในเซิร์ฟเวอร์เดียวกันได้ และเรียลไทม์ข้ามเซิร์ฟเวอร์ แหะๆ

DMใช้ในแอปไม่ได้ ต้องใช้เบราส์เซอร์เล่น อันนี้ไม่สะดวกจริงๆนะ คุณพรี่คะ ปรับได้มั้ยคะ /อ้อนวอนด้วยสายตาวิ้งค์ๆ

โดยชาวแอนดรอยด์ และ iOS สามารถเลือกใช้แอปได้หลากหลาย หลักๆที่ทางเว็บแนะนำมา

Android

– Tusky ฟรี
– Subway tooter ฟรี
– Fedilab เสียเงิน

iOS

– Mast! ฟรี
– Amaroq ฟรี
– iMast ฟรี
– Mercury ฟรี
– Toot! เสียเงิน

และในบล็อกนี้ จะใช้แอป Tusky เป็นหลัก

แนะนำ server ที่มีภาษาไทยเท่าที่รู้

– @mastodon.in.th ชุมชนชาวไทย
– @thaitodon.social ชุมชนคนไทยที่คนยังไม่เยอะเท่าไหร่

รวมคนทั่วโลกที่น่าสนใจ

– @mstdn.social คนอยู่หลักหมื่น รวมชาวต่างชาติ สารพัดเรื่องราว

View original post 27 more words

Bangkok Fediverse meetup #1

The first (public) Bangkok Fediverse meetup on 2020-01-13 at Seize The Day Coffee Salon, TCDC, Bangkok, Thailand:

We talked about the first rule of mastodon.in.th and how to promote the Fediverse in Thailand.

The rule is don’t break the law in the way that will get the admin into jail. We will promote Fediverse by:

  • posting exciting things that may be blocked or unacceptable or ignored in mainstream social networks
  • opening specific instances, such as thaiev.club

Fediverse: ก้าวข้ามเผด็จการรวบอำนาจที่ปกครองและขายสมาชิกสังคมออนไลน์ต่างสินค้า

[โพสต์นี้ไม่ได้อัพเดตแล้วครับ โพสต์ที่ปรับปรุงแล้วอยู่ที่ https://qua.name/veer66/fediverse-kaawkhaamephdcchkaarrwb-amnaacchthiipkkhr-ngaelakhaaysmaachiksangkhm-nailntaangsinkhaa ครับ]

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

หรือว่าบางเจ้าบอกว่าไม่ให้พื้นที่ 1TB แล้ววันหนึ่งจะเก็บตังรายปีขึ้นมา เพียงว่าเราจะย้ายข้อมูล เช่น รูปภาพที่เราถ่ายเอง กล่องก็ซื้อมาเอง เอาไปไว้ที่อื่นที่อาจจะดีกว่า หรือราคาถูกกว่า ก็เป็นเรื่องที่ยากลำบากแล้วในกรณีที่มีข้อมูลปริมาณมาก

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

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

ในระบบที่เป็นที่นิยมก่อนหน้านี้ เช่น E-mail เมื่อเปลี่ยนผู้ให้บริการก็ยังติดต่อกับญาติมิตรที่ใช้บริการ E-mail เจ้าอื่นได้ หรือแม้แต่กระทั่งโทรศัพท์เปลี่ยนผู้บริการแล้วก็ยังโทรหาคนอื่นได้เหมือนเดิม

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

ภาพหน้าจอเว็บให้บริการวิดีโอ peertube.social ที่เป็นสมาชิกใน Fediverse ด้วย:

โปรแกรม Toot! สำหรับ micro blog ที่ใช้งาน mstdn.io ที่เป็น node หนึ่งใน Fedverse เช่นกัน สามารถค้นหา URL ของ Peertube แล้วเห็นว่าเป็น blog post สามารถ reply ได้พอ reply เสร็จแล้วก็จะขึ้นไปเป็นความคิดของวิดีโอนั้นเลย

reply.png

comment.png

นอกจากจะแสดงความคิดเห็นข้ามกันได้แล้ว เรื่องทั่วไปอย่างดู video ของ PeerTube ใน Mastodon ก็ทำได้อยู่แล้ว หรือจะ follow/subscribe ก็ทำได้เหมือนกัน

ซึ่งลักษณะที่ว่าทำให้ Fediverse มีเครื่อแม่ขายที่ไม่ได้มีเจ้าของเดียวกันเยอะแยะไปหมด จากเว็บนี้ก็บอกว่ามี 2460 node แล้ว

ผมเลือก node ที่ผมคิดว่าสำคัญมาตามนี้

• mstdn.io ใช้โปรแกรม Mastodon เป็น micro blog เรื่องทั่ว ๆ ไป
• pawoo.net ใช้ Mastodon เหมือนกัน แต่เป็นชุมชนภาษาญี่ปุ่น
• ruby.social ใช้ Mastodon เป็น node ที่คุยกันเน้นเรื่องภาษา Ruby
• peertube.social ใช้ PeerTube เอาไว้สำหรับวิดีโอที่ไม่ใช่การค้า
• squeet.me ใช้ Friendica คล้าย ๆ Facebook
• fedigram.social ใช้ Pixelfed ที่ยังไม่เสร็จดี เอาไว้โพสต์รูปเน้นใช้ง่าย

โปรแกรม Mastodon, PeerTube, Friendica, Pixelfed ล้วนเป็นซอฟต์แวร์เสรีทั้งสิ้น ซึ่งหมายความว่าเราจะเปิด node ของเราเองก็ได้ จะแก้ไขดัดแปลงแจกจ่ายก็ได้ แต่ละโปรแกรมก็ใช้ภาษาโปรแกรมต่างกันออกไป Mastodon ใช้ Ruby, PeerTube ใช้ TypeScript ส่วน Friendica และ Pixelfed ใช้ PHP

Fediverse แต่ละ node คุยกันได้เพราะว่ามีมาตรฐานกลาง ซึ่งหลัก ๆ ก็คือ ActivityPub ที่สร้างมาบน Acivity Stream และ JSON-LD อีกที

JSON-LD หลักการคล้าย ๆ RDF คือพยายามจะทำให้ข้อมูลจากแหล่งต่าง ๆ เชื่อมโยงกันได้ แต่ว่าใช้ JSON parser ได้เลยเพราะมันเป็น JSON เช่น เปิด json มาอาจจะ field ชื่อ actor ก็อาจจะหมายถึง “นักแสดงชาย” หรือ “ผู้กระทำ” ก็ได้ แต่ถ้าเขียนเลยว่า “https://www.w3.org/ns/activitystreams/actor” อันนี้ก็จะหมายถึงผู้กระทำแน่ ไม่จำเป็นต้องเป็นนักแสดง แต่จะเขียนชื่อ field ด้วย url หรือในเอกสารจะเรียกรวม ๆ ว่า IRI มันก็จะเยิ่นเย้อเกินไป ก็เลยมี field หนึ่งขึ้นมาชื่อว่า @context เราก็เรียน “@context”: “https://www.w3.org/ns/activitystreams” ไว้เสียแต่ต้น ต่อไปในเอกสารก็ใช้ actor ได้เลยเพราะทราบแล้วว่าบริบทคือ “https://www.w3.org/ns/activitystreams” สามารถอ่านเพิ่มเติมได้จาก https://www.w3.org/TR/2014/REC-json-ld-20140116/

ส่วน Activity Stream เป็นมาตรฐานที่ระบุเลยว่าจะเขียนว่าใคร (actor) ทำอะไร (verb) อะไรถูกกระทำ (object) จะต้องเขียนออกมาหน้าตาอย่างไร หน้าตาก็จะออกมาเป็น JSON-LD ตามที่มาตรฐานกำหนดไว้ ที่ผมเห็นใช้งานตอนนี้ก็คือใช้ในเครือข่ายสังคมออนไลน์ทั้งหมด อ่านเพิ่มเติมได้จาก https://www.w3.org/TR/activitystreams-core/

จาก Activity Stream ก็มีมาตรฐานเกี่ยวเนื่องที่ผมรู้สึกว่าน่าสนใจคือ Activity Vocabulary ซึ่งระบุกระทั่งว่ากริยาที่กระทำใน Activity Stream มีอะไรหน้าตาเป็นอย่างไร เช่น like dislike follow invite ignore ต้องมีหน้าตา มีข้อมูลอย่างไรบ้าง อ่านเพิ่มเติมได้จาก https://www.w3.org/TR/activitystreams-vocabulary/

นอกจากประเด็นว่าส่งว่าใคร ทำอะไร อะไรเป็นผู้กระทำแล้ว ก็ยังมีประเด็นว่าต้องส่ง activity stream ไปที่ไหน ในส่วนนี้ก็เป็นมาตรฐาน ActivityPub ซึ่งกำหนดทั้งการส่งจาก client กับ server และ server กับ server เอง เพราะว่า Fediverse ต้องมีการสือสารกันระหว่าง server คนละเจ้าด้วย โดยมีการกำหนดเป็น inbox outbox ของแต่ละ actor ขึ้นมาว่าจะอยู่ใน URL อะไร ฯลฯ ซึ่งอ่านรายละเอียดได้จาก https://www.w3.org/TR/activitypub/

ใน Fediverse ไม่มีการเอาติดต่อญาติมิตรของใคร ๆ มาเป็นตัวประกันของแต่ละเจ้าอีกต่อไป ทำให้ลดการผูกขาดลด เมื่อมีอำนาจต่อรองมากขึ้นสมาชิกก็ถูกนำไปขายยากขึ้น แต่ว่า node สามารถนโยบายของตัวเองทำให้ไม่มีการผูกขาดทางศีลธรรม

แต่ก็มีข้อจำกัดอยู่ว่าย้ายค่ายแล้วต้องเปลี่ยน ID

อนาคตอาจจะมีการใช้ ActivityPub กับบริการออนไลน์อื่นอีก ไม่ว่าจะเป็นซอฟต์แวร์เสรีหรือไม่ก็ตาม หรือก้าวหน้าจนไปถึงแบบ peer-to-peer

ประเด็นอื่น ๆ เช่นว่า

  • Fediverse จะยั่งยืนหรือไม่ ผมเชื่อความทางศาสนาว่าสิ่งเป็นสังขารทั้งหมดไม่ยั่งยืน และผมไม่สามารถพยากรณ์อายุของ Fediverse ในอนาคตได้;
  • ประเด็นว่าทำไมไม่ใช้ peer-to-peer ผมคิดว่าจะมีประเด็นเรื่องพลังงานถ้าใช้อุปกรณ์เคลื่อนที่;
  • ทำไมไม่ใช้ blockchain ผมคิดว่ามีประเด็นด้านประสิทธิภาพ และการกลั่นแกล้งเบียดเบียนกัน Fediverse ไม่จำเป็นต้องปล่อยให้ทุกคนพูดทุกอย่างแล้วลบไม่ได้
  • app บนมือถือ tablet มีทั้ง Android และ iOS ใช้กับ Mastoodon และ Pleroma ได้
  • [Update 2018-11-25 21:53 UTC+7] เรื่องโฆษณาตอนนี้ยังไม่เห็นครับ ส่วนหนึ่งคือ admin ของแต่ละ node ออกตังเองเพราะแต่ละ node ไม่ใช้เครื่องแรงมากมายพอจะออกให้กันได้ และอีกส่วนหนึ่งก็มีการบริกาคช่วยกัน; ผมเห็น write.as มีแบบเสียตังรายเดือนด้วย แต่ยังต้องศึกษาเพิ่มเติมอีก

ทอฟฟี่จากระยอง

โฟสต์นี้เห็นว่าออกนอกเรื่องของ @veer66@mstdn.io และอยากโพสต์ภาษาไทยก็เลยกลับมาลงที่ WordPress ครับ

ปกติผมซื้อทอฟฟี่จากระยองในตัวเมืองระยองเลย แต่ว่าย้ายบ้านไปแล้วก็เลยไปซื้อของทางหนองละลอกแทน ขายกันหน้าโรงงานเลยเป็นสินค้า OTOP ทอฟฟี่หลัก ๆ ทำจากสับปะรด กลัวยและกระทิ ซึ่งก็น่าจะเป็นผลผลิตจากแถว ๆ นั้นเอง หอม หวาน มัน อมเปรี้ยวนิด ๆ อร่อยมาก ยี่ห้อคุณละออ

ถ้าสมมุติว่าไม่ใช้ REST

อ่านเรื่องที่วิจารณ์ REST มาแล้วก็คิดว่าถ้าไม่ใช้ REST ผมจะใช้อะไร

🚫 XML-RPC นี้ 10 กว่าปีก่อนนี้ผมใช้มาเยอะ ตอนนี้คิดว่าไม่จำเป็นก็อย่าไปยุ่งด้วยดีกว่า XML-RPC ยังไม่ไหว SOAP ก็ลืืมไปเลยดีกว่า

🚫 gRPC นี้ก็อาจจะดีก็ได้ แต่ว่าอย่างน้อย ๆ ตอนนี้ก็ยังไม่เห็น lib ที่เอาไว้ใช้กับ Common Lisp หรือ GNU Guile ดูเอกสาร แล้วก็คิดว่าต้องนอนให้พอแล้วมีเวลาอ่านดี ๆ หน่อย ไปยุ่งกับมันตอนนี้ก็ไม่น่าจะมีประโยชน์อะไรขึ้นมา ต่อไปถ้าเป็นที่นิยมกันผมก็จะใช้ด้วยก็ได้ แต่ตอนนี้ยัง

💡 JSON-RPC นี่เห็นใน Wikipedia แล้วก็นึกภาพออกเลย หา lib สำหรับ Common Lisp ก็ดี ซึ่งถ้าใช้ Common Lisp ได้ภาษาอื่น ๆ ที่ชาวบ้านเขาพอจะเขียนกันก็คงมีให้ใช้หมด

จะว่าไปใช้ REST ผมก็ไม้ได้อึดอัดอะไร ให้เขียน JSON เองแล้วอัดใส่ cURL ผมก็ทำอยู่แทบทุกวัน ถึงจะไม่ค่อยสนุกก็ตามที แต่ก็ยังรู้สึกว่า JSON-RPC มันก็น่าสนใจ เรื่องประสิทธิภาพ เพราะว่าดูแล้ว web framework หลาย ๆ ตัวเวลาทำ routing นี้ พอได้ request มาก็ใช้ Regex ของแต่ละจุดมาไล่ดูทีละจุด ๆ ว่าเข้าข้อนี้ได้ไหมข้อนั้นได้ไหม จะแก้โดยใช้เอา Regex Set ไปทำ NFA/DFA ชุดเดียวเลยก็ได้ แต่ก็ไม่เห็นมีใครทำ แถมตอน debug ก็คงวุ่นวายพิกล แต่ถ้าเป็น JSON-RPC นี้น่าจะใช้พวก hash-map ระหว่างชื่อ method กับ function ได้เลย ซึ่งน่าจะทำให้เร็วและ debug ง่ายขึ้นด้วย ทำให้ JSON-RPC ดูน่าสนใจขึ้นมาเลย

Endless OS

ดูเครื่อง Acer แล้ว OS มันจะใช้ Endless OS ผมเลยลองไปค้นดูเจอเว็บนี้ https://endlessos.com/th/ จากเว็บนี้ดูดีกว่า Linpus มาก ๆ

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

Screenshot-2017-12-3 Endless OS
(ภาพมาจาก https://endlessos.com/th/)

หาต่อใน distrowatch ดูพบว่าฐานมาจาก Debian Ubuntu และใช้ GNOME shell ด้วย

จากที่ไปแอบกดเล่นที่เดอะมอลล์ก็ง่ายดี แต่ยังไม่ได้ลองเปิด terminal ลง Emacs อะไรแบบนี้

ของเยอะขนาดนี้คิดว่าเครื่องหน้าอาจจะลอง Acer แทน Lenovo ก็ได้ จริง ๆ Lenovo ก็ดี แต่ชอบ Acer ที่ลง OS แบบเป็นเรื่องเป็นราวมา