• About Me
  • My Slides

WindyGallery's Weblog

~ I am a normal man in quite imperfect little World.

WindyGallery's Weblog

Category Archives: Developer

Agile Thailand 2015 (ภาค 2)

16 Saturday May 2015

Posted by windygallery in Developer, IDeas

≈ Leave a comment

Tags

docker, haskell, sketchnote

เก็บตก Agile Thailand 2015 (ต่อ) จาก Blog ที่แล้ว
คำเตือน Blog นี้ค่อนข้าง geek ถ้าสนใจเฉพาะแนว management ให้อ่านข้ามไป session ที่สามครับ

3. Joomla Continuous Delivery with Docker

Session speaker: Jirayut Nimsaeng (Dear)

Session นี้ว่ากันด้วยเรื่องของเทคโนโลยี Docker ที่กำลังมาแรงในตลาด server

ก่อนจะอธิบาย Docker ขอปูพื้นความเข้าใจของคำว่า “Virtual machine” (ที่จะเรียกกันย่อๆว่า VM) กันก่อนซักเล็กน้อยครับ

vm_icon

Virtual Machine คือ แนวคิดการจำลองระบบคอมพิวเตอร์ด้วย software ลงบนเครื่องคอมพิวเตอร์เพื่อทำงาน เช่น ถ้าคุณต้องการจะใช้งาน software ที่ต้องรันบน OS ซักตัวหนึ่ง วิธีทำแบบตรงไปตรงมาก็คือ ล้างเครื่องเพื่อติดตั้ง OS ที่จะใช้แล้วลงโปรแกรม ซึ่งยุ่งยากมาก

วิธีที่ดีกว่าก็คือการสร้างพื้นที่จำลอง(VM) ขึ้นมาแล้วติดตั้ง OS และโปรแกรมที่ต้องการลงไป VM พอใช้เสร็จก็ลบทิ้งไปได้เลยไม่กระเทือนระบบที่ใช้อยู่ หรือจะเซฟเก็บไว้เป็น image เอาไว้ใช้ในคราวต่อไปก็ได้

ปัญหาหลักๆของ VM ก็คือ มันเป็นการจำลองระบบทั้งระบบลงบนคอม (พูดง่ายๆก็คือลง OS ซ้อนลงบน OS อีกที) ประสิทธิภาพของมันก็เลยไม่ดีเท่าลง OS จริงๆ แต่ก็แน่ละถ้าต้องเลือกระหว่างนั่งลบระบบแล้วลงใหม่ทุกครั้ง VM ก็ยังเป็นทางเลือกที่ดีกว่าอยู่ดี

Docker คืออะไร ?

KuDr42X_ITXghJhSInDZekNEF0jLt3NeVxtRye3tqco

แนวคิดของ Docker เลียนแบบการขนส่งสินค้าขนาดใหญ่ทางเรือ ที่จะใช้ตู้ container เป็นตัวกลางในจัดเก็บสินค้ารวมกัน ทำให้สะดวกในการขนย้าย และเป็นมาตรฐานกลางร่วมกัน

Screen Shot 2558-05-16 at 7.09.52 PM

สำหรับในมุมของ software Docker ก็คือการรวมเอาโปรแกรมและสภาพแวดล้อมที่ใช้ทำงาน (เอาเฉพาะ program, library และ binary แต่ไม่รวมส่วน kernel) ไว้เป็นก้อนเดียวกันใส่ไว้ใน container เพื่อให้การติดตั้งและย้ายระบบไปเครื่องอื่นง่ายมากขึ้น

เมื่อไม่ต้องติดตั้งทั้งระบบลงไปเหมือนวิธีของ virtual machine การทำงานแบบ Docker จึงเป็นการใช้ physical จริง ไม่ต้องผ่านการจำลอง ส่งผลให้ประสิทธิภาพของระบบสูงกว่า VM มาก

และด้วยความเบาก็เลยช่วยให้สามารถสร้าง instance สำหรับทำงานได้จำนวนมากกว่าเมื่อเทียบกับ VM บน hardware เดียวกัน ดังนั้นเลยทำให้เกิดการต่อยอด เช่น การสร้างระบบที่ environment เหมือนกับ production ได้ง่าย, ทำซ้ำได้ตลอดเวลา และเร็ว!

นอกจากนี้ Docker ยังรองรับการ deploy แบบอัตโนมัติอีกด้วย (ผ่านทาง script ของ Docker เอง) และถ้านำไปทำงานร่วมกับ Automate testing เช่น robot framework ก็จะสามารถทำให้กลายเป็นระบบแบบ automate systems ได้ง่ายขึ้นมากเลย

ข้อมูลอ้างอิง: Slide เก่าของคุณ Dear
http://www.slideshare.net/winggundamth/joomla-continuous-delivery-with-docker

ข้อมูลเพิ่มเติมอื่นๆ
http://www.docker.com/whatisdocker/
https://www.blognone.com/node/56627
https://www.blognone.com/node/59681
http://en.wikipedia.org/wiki/Docker_(software)

Action items ส่วนตัว: ลองเล่น Docker, ฝึกทำ automated deploy, robot framework

4. Functional programming (Haskell)

Session speaker: Weerasak (ป้อ)

Haskell.sh-600x600

Haskell เป็นภาษา programming ชนิด functional programming!

พูดแค่นี้ คนส่วนใหญ่จะงง ว่ามันคืออะไร แล้วยังไง?

ถ้าอธิบายแบบหยาบๆ ก็จะได้ประมาณว่า
– วิธีการเขียนโปรแกรมไม่เหมือนภาษาที่ programmer ทั่วไปในตลาด
– วิธีการคิดและรูปแบบคำสั่งการเขียนก็ต่าง (ยกตัวอย่าง เช่น ไม่มีตัวแปร !)

ส่วนคำนิยามแบบละเอียดกว่า(หน่อย) ก็คือ
– มันเป็น programming language แบบ strong static typing
– เป็นภาษาที่มีความสามารถเด่นในการทำ lazy evaluation, pattern matching

วิธีการคิดและเขียนโปรแกรมจะต่างจาก procedural, object-oriented ในแง่ของการออกแบบโค้ด (วิธีที่ทางคุณป้อนำเสนอ คือ การเขียนเคส, มอง patterns ให้ออกแล้วยุบ!)

ซึ่ง code ของ Haskell ในการแก้ปัญหา เช่น quicksort, factorial, Fizzbuzz problems จะสั้นและตรงไปตรงมามากกว่าโปรแกรมด้วยภาษาอื่น เช่น java, C

และด้วยลักษณะการทำงานแบบ lazy evaluation ก็ทำให้ทำหลายอย่างแบบที่ programming แบบอื่นทำไม่ได้ เช่น ประกาศตัวแปรเป็นอนันต์แล้วทำงาน (โดยที่ไม่ต้องจองหน่วยความจำจนล้น) หรือการคำนวณ factorial โดยไม่ต้องทำการสร้าง stack จำนวนมากเหมือน java (ประหยัด meomory กว่ามากมาย)

http://yannesposito.com/Scratch/en/blog/Yesod-tutorial-for-newbies/

http://yannesposito.com/Scratch/en/blog/Yesod-tutorial-for-newbies/

ในแง่การทำงานแบบ concurrency
เนื่องจาก haskell ไม่มีตัวแปร (Immutable) เวลาทำงานแบบ concurrent จึงไม่ต้องใช้วิธีการแชร์ตัวแปร ไม่ต้องใช้การ block/wait แบบการทำ multi threads ในภาษาอื่นๆ เลยทำให้ optimize ได้มีประสิทธิภาพสูงมาก (เรียกกันว่า Haskell’s green threads)

ส่วนการนำไปใช้งาน
ภาษา Haskell (หรือ functional programming) มักจะนำไปใช้งานประเภท prototyping (เพราะทำงานได้เร็ว), งานที่ state ซับซ้อนมาก (ซึ่งไม่ค่อยเหมาะกับ OOP), Safe multithreading

ข้อมูลเพิ่มเติม:
http://learnyouahaskell.com/chapters
http://stackoverflow.com/questions/1604790/what-is-haskell-actually-useful-for
https://wiki.haskell.org/Why_Haskell_matters

Action items: ทดลองใช้ Haskell แก้ปัญหา marketing

5. เพิ่มประสิทธิภาพและประสิทธิผลการสื่อสารแบบ face-to-face ด้วยเทคนิค Sketchnote

Session speaker: หนุ่ม SPRINT3R

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

Sketch note คืออะไร?

http://sketchnotearmy.com/blog/2015/4/7/the-sketchnote-workbook-featured-sketchnoter-jeff-bennett.html

http://sketchnotearmy.com/blog/2015/4/7/the-sketchnote-workbook-featured-sketchnoter-jeff-bennett.html

Sketch note คือวิธีการเขียนเรียบเรียงข้อมูลเพื่อสื่อสารความเข้าใจของตัวเองออกมาเป็นภาพ

สาระสำคัญในการเขียน Sketch note ประกอบไปด้วย

Title
การมีหัวข้อที่เด่นชัด จะช่วยให้คนดูเข้าใจประเด็นหลักที่จะสื่อได้ง่าย ส่วนการใส่รายละเอียดเพิ่มเติม เช่น ใครเป็นคนพูด ที่ไหน เมื่อไหร่ เป็น option เพื่อเสริมข้อมูลกันลืมได้ดี

Layout
การวางโครงสร้างหลักที่ดี จะช่วยให้พื้นที่เพียงพอที่จะใส่เนื้อหาที่จะนำเสนอ โดยปกติมักจะเริ่มจากบนซ้ายกระจายออก (basic) แต่มักทำให้เกิดการเอียงของน้ำหนักภาพได้ง่าย บางคนจะใช้วิธีกระจายออกจากตรงกลาง (เช่น mindmap) เรียงเป็นแถวแนวดิ่งลงไปเรื่อย วนออกเป็นก้นหอย ซึ่งส่วนใหญ่มักจะมีเส้นนำสายตาช่วยที่ชัดเจน เพื่อไม่ให้ผู้ชมสับสนลำดับของข้อมูล(ในกรณีที่ลำดับสำคัญ)

http://nuggethead.net/2013/09/preparing-sketchnote-format-visual-flow-and-materials/

http://nuggethead.net/2013/09/preparing-sketchnote-format-visual-flow-and-materials/

Content
วิธีการเปลี่ยนข้อมูลให้น่าสนใจหลักๆ มีหลายวิธี เช่น ย่อให้เหลือแค่ Keyword สำคัญแล้วเน้น หรือ เปลี่ยน keyword ให้กลายเป็นรูปภาพ/สัญลักษณ์ วิธีนี้ทำให้ผู้ชมย่อยง่าย และจำประเด็นได้ดีกว่าการใช้ข้อความล้วน
เพราะสมองคนเราจับภาพได้เร็วกว่าตัวอักษร และเรายังเลือกใช้ขนาดของ text และสี เพื่อแบ่งแยกน้ำหนักของเนื้อหาให้แตกต่างกันได้อีกด้วย

http://graphitemind.com/post/19803717908/keeping-with-the-good-internet-theme-here-did

http://graphitemind.com/post/19803717908/keeping-with-the-good-internet-theme-here-did

Container
นอกจากนี้ เรายังสามารถใส่กรอบ หรือขอบเขตเพื่อแบ่งพื้นที่หรือเน้นย้ำใจความสำคัญของเนื้อหา หรือเพิ่มความน่าสนใจได้ เช่น ใส่กรอบข้อความกับประโยคคำถาม หรือกรอบรูปร่างแปลกๆเพื่อกระตุ้นความสนใจเช่น กรอบรูปภาพ (แล้วแต่ context และจินตนาการของผู้เขียน)

http://sachachua.com/blog/series/sketchnote-lessons-2/

http://sachachua.com/blog/series/sketchnote-lessons-2/

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

ข้อมูลเพิ่มเติม:
http://nuggethead.net/tag/sketchnote/
http://graphitemind.com/
http://sachachua.com/blog/series/sketchnote-lessons-2/

Action items: ฝึกเอาไป map กับการเรียบเรียงไอเดียเวลา present งาน

Agile Thailand 2015 (ภาค 1)

10 Sunday May 2015

Posted by windygallery in Developer, Events, IDeas

≈ Leave a comment

Tags

2015, agile, baby, coaching, listening

สรุปประเด็นน่าสนใจจากงาน Agile Thailand 2015 (ภาคแรกครับ)

1. Agile Dialogue

by Kulawat (Pom) Wongsaroj + Bee

https://www.flickr.com/photos/dkuropatwa/4612194068/

https://www.flickr.com/photos/dkuropatwa/4612194068/

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

การฝึกตัวเองในคลาสนี้ เพื่อช่วยให้รู้ตัวเองตลอดการประชุม รู้จักคุมจังหวะ
ไม่รีบผลีพลามยิงสวนขณะที่คนอื่นกำลังพูด วิธีการที่ง่ายและตรงไปตรงมาคือ
การกำหนด Rules ขึ้นมาร่วมกัน 3 ข้อ ที่จะช่วยกำกับ “สติ” ของทุกคน

ข้อแรก: พูดทีละคน 
เพื่อให้มีโอกาสได้ฟัง และ(จง)ตั้งใจฟัง

ข้อที่สอง: ไม่วิจารณ์ 
แต่ให้พูดในแนวทางที่สร้างสรรค์เพื่อเสริมไอเดีย ไม่ใช่มุ่งแต่จะทำลายความคิด/ไอเดียของผู้อื่น

ข้อที่สาม: ไม่ตัดสินความคิดคนอื่น
การฝึกคิดที่มุ่งตัดสินความคิดคนอื่นจะทำให้เรารีบคิดหาช่องว่างหรือแนวทางอื่นมาหักล้าง จนทำให้สติในการตั้งใจฟังสาระ “หลุด” จากผู้พูด (นี่คือหนึ่งสาเหตุใหญ่ที่ทำให้คนคุยกันคนละหัวข้อ เพราะไม่ตั้งใจฟังคนอื่นพูดให้จบก่อน แต่รีบแทรกพูด) กับคนที่มี ego สูงจะต้องหาทางลด ego เขาก่อน (อาจโดยลดตัวเองก่อนด้วย)

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

  • Lean คือ วิธีการทำงานแบบที่มุ่งเน้นการลด watse ในกระบวนการ
  • Agile เป็นหลักการทำงานที่ช่วยให้เข้าใจธรรมชาติของ software development process ง่ายขึ้น (ซึ่งจะมีหายแนวทางย่อยและ practices ย่อย)
  • การที่ทีม commit งานไว้มากเกินไป = การทำงานแบบ overload ตลอดเวลา
  • เมื่อทำงานหนักมาก ไม่มีจุดพัก กำลังใจคนทำงานจะหมดเร็ว
  • เมื่อไม่มีเวลาพัก = ขาดโอกาสในการพัฒนาตัวเองหรือเสริมศักยภาพใหม่ๆ
  • ทำให้ทีมท้อและพังได้ง่าย
  • การทำงานให้ได้ผลงานมากที่สุด ตอบโจทย์ใคร นายจ้าง? ทีม?
  • เมื่อ burn ชีวิตมากไป แล้วจะรักษา balance ของครอบครัว/การทำงานได้หรือ?
  • ถ้าคนทำงานไม่ Happy อะไรคือ goal ระยะยาวร่วมกัน
  • ปัญหาต้นๆของการคุยกับลูกค้าคือ ใช้ estimation = commit (ซึ่งมันคนละเรื่องกัน!)
  • ถ้าคุยกันภายในทีมรู้เรื่องดี จะทำให้ประมาณ velocity ของทีมได้ดีขึ้นเรื่อยๆ
  • คนทำงานด้วยกันจะประมาณเวลาได้ใกล้เคียงมากขึ้น
  • และในกรณีที่ estimate ผิด ต้องรีบ feedback ให้ลูกค้าเร็ว เพื่อให้ลูกค้าปรับแผน/ตัดสินใจ

Action items (สำหรับตัวเอง): ฝึกสติจับประเด็นตอนประชุมแก้ปัญหา conflict ให้ได้ตลอดเวลา

 

2. การ coach ก็เหมือนการเลี้ยงลูกนั่นแหละ

by Juacompe + Chawin

11164636_10206386492001766_2141718463379060806_o

Session นี้ว่าด้วยการสังเกตถึงการดูแลเด็กตัวน้อยๆคนนึง (ในช่วงที่กำลังพัฒนาพฤติกรรมขวบปีแรก) และนำมาเปรียบเทียบกับการโค้ชให้ผู้อื่น

ในช่วง 3 ปีแรกของอายุ จะเป็นช่วงที่เด็กกำลังเรียนรู้สิ่งต่างๆรอบตัว และสมองกำลังเริ่มเตรียมความพร้อมในการสร้างเซลล์ประสาทในแต่ละด้าน เช่น การควบคุมอารมณ์, ทักษะการเข้าสังคม, ภาษา (เป็นสาเหตุให้การฝึกภาษาใหม่หลังสามขวบทำได้ไม่ดีเท่าฝึกช่วงต้นอายุ)

(*) ข้อมูลอ้างอิง http://www.unicef.org/dprk/ecd.pdf

พัฒนาการในช่วงนี้จะเกิดขึ้นตลอดเวลา และนี่เป็นธรรมชาติของเด็ก

หันมามองกลับกัน เรามักจะได้ยินคำว่า “คนไม่ชอบการเปลี่ยนแปลง”
ซึ่งพอมาย้อนคิดดูอีกที มันอาจจะไม่จริงซะทีเดียวนัก เพราะที่จริงแล้ว คนเรามีความสามารถในการปรับตัว (adapt) เข้ากับสิ่งแวดล้อมสูงมากจนเราไม่ถือว่ามันคือการเปลี่ยนแปลง ยกตัวอย่างเช่น เราสามารถกินอาหารเช้าไม่ซ้ำกันแต่เราก็ไม่ได้มองว่ามันคือการเปลี่ยนแปลง ดังนั้นคำว่าเปลี่ยนแปลงจึงขึ้นกับขนาดของพฤติกรรมและความสำคัญที่ส่งผลต่อจิตใจผู้กระทำมากกว่าแค่ action เฉยๆ

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

แล้วกับเด็กทำอย่างไรล่ะ?

11134127_10206386493441802_7130770212382136030_o

เรามักคิดว่าเด็กเล็กๆไม่เข้าใจการพูด แต่เราอาจมองข้ามไปว่าเด็กสามารถเข้าใจ body language (และฝึกฝนทักษะเพื่อเข้าใจได้เร็วมาก) การพูดคุย สัมผัส ปลอบ การชื่นชมเมื่อเขาทำถูกต้อง หรือให้กำลังใจเมื่อเขาทำผิดพลาด (ฝึกให้ positive ไม่ว่าจะ action จะ success หรือ failed) จะทำให้เขาค่อยๆมีความมั่นใจและเห็นคุณค่าในตัวเอง และทำให้เขากล้าลองทำในสิ่งใหม่ๆมากขึ้น โดยไม่มีแรงต่อต้านเท่าการบังคับให้ทำ

และก็คล้ายกันกับการโค้ชทีม

ที่ body language มีผลช่วยให้ทีมเชื่อมั่นในตัวเอง แม้จะลองแล้วผิดพลาด แล้วกล้าที่จะลองไปทำอะไรใหม่ๆเพื่อพัฒนาศักยภาพของตัวเองต่อ

หัวข้อย่อย1: ความแข็งแกร่งภายนอก vs. ความแข็งแกร่งจากภายใน

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

evilboss

ในกรณีที่มีทางเลือกให้ใช้แก้ conflict โดยอาศัยผู้อื่น/สิ่งอื่นเข้ามาช่วย (เคสนี้จะเรียกกันว่า ความแข็งแกร่งจากภายนอก) เช่น ใช้ตำแหน่ง, อำนาจหน้าที่ทุบโต๊ะ, ให้ผู้ใหญ่กว่าบังคับ, กำลัง(หมายถึงกับเด็ก) สิ่งเหล่านี้มักทำให้แก้ปัญหาได้ง่ายกว่าการสื่อสารโดยใช้คำอธิบายความคิดและความรู้สึกเพื่อโน้มน้าวให้ผู้อื่นเข้าใจและเห็นคล้อยตาม (อันนี้เรียกว่าความแข็งแกร่งจากภายใน)

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

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

 

หัวข้อย่อย2: Emotional bank account

16177956936_f9aa24857a_z

https://www.flickr.com/photos/ms308/16177956936/in/album-72157625647271859/

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

ซึ่งทำลาย Balance ระหว่าง เป้าหมายร่วมกัน กับ ความสัมพันธ์ระยะยาว

ถ้ามองว่าอารมณ์ตอบสนองของคนเหมือนบัญชีธนาคาร (Emotional bank) การทำดี ชื่นชม ให้กำลังใจ สนับสนุน ก็เหมือนการฝากเพิ่ม ส่วนการด่า ประชด ไม่เห็นคุณค่าต่อกัน ทำร้ายความรู้สึก เป็นการถอน

เมื่อวันนึงที่ emotional ใน bank ติดลบ คนก็เกิด bias
พูดอะไรเท่าไหร่เขาก็จะไม่ฟัง พูดธรรมดาก็กลายเป็นประชด พูดด่าลอยๆก็นึกว่าด่าตัวเอง แล้วบรรยากาศการทำงานร่วมกันทุกอย่างก็จะแย่ลง

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

เพื่อความยั่งยืนของความสัมพันธ์ระยะยาวที่จะนำไปสู่เป้าหมายร่วมกัน

Action items: ฝึกตัวเองให้ควบคุมอารมณ์ให้มั่นคง, long relationship is important than short goal

🙂

Facebook ID

03 Sunday Aug 2014

Posted by windygallery in Developer

≈ 1 Comment

Tags

facebook

เขียนเก็บไว้เป็นประโยชน์ในการพัฒนาต่อยอดซักเล็กน้อย
ถ้าเราเปิด browser แล้วพิมพ์ http://graph.facebook.com/ชื่อโปรไฟล์เนม
เราจะได้ข้อมูลจาก faebook graph api ออกมาอยู่ในรูปแบบ jSON เช่น

{
   "id": "1234567890",
   "first_name": "Rawin",
   "gender": "male",
   "last_name": "Windygallery",
   "locale": "en_US",
   "name": "Rawin Windygallery",
   "username": "windygallery"
}

ซึ่ง id  ก็คือ id ไม่ได้เอาไปใช้ทำอะไรเท่าไหร่
แต่ที่สำคัญและเอาไปใช้ต่อยอดได้คือ facebook id (คนละตัวกันและตัวย่อคือ fbid)
สามารถดูได้จากรูป profile ของตัวเอง (จะมีค่า parameter ตัวนี้)

ยกตัวการประยุกต์ใช้ เช่น ต้องการเอารูปจาก facebook มาใช้งานก็เรียกผ่าน

http://graph.facebook.com/ข้อมูลเฟสบุคไอดี/picture?type=square

ข้อมูลเพิ่มเติม
https://developers.facebook.com/docs/graph-api/reference/v2.0/user/picture

 

Converting mp4 to mp3 via command line on Mac

20 Sunday Jul 2014

Posted by windygallery in Developer

≈ Leave a comment

Tags

convert, mp3

เจอวิธีแปลงไฟล์วิดีโอเป็นไฟล์เสียง mp3 อยู่สองวิธี

1. Command line via ffmpeg

1.1 ติดตั้ง ffmpeg
> brew install ffmpeg

1.2 ใช้ ffmpeg แปลงไฟล์
> ffmpeg -i video.mp4 -b:a 192K -vn music.mp3

Reference:
http://superuser.com/questions/332347/how-can-i-convert-mp4-video-to-mp3-audio-with-ffmpeg

2. ใช้โปรแกรม VLC

2.1 ติดตั้ง VLC และเลือกเมนู convert
2.2 เลือกไฟล์และชนิด output แล้วกด save!

ถ้าอยากตัดต่อเสียง ก็ใช้ audacity ได้ (ต้องโหลด library สำหรับ decode mp3 มาเพิ่มนิดนึง)

Thank you and Good bye my lovely phone

20 Sunday Jul 2014

Posted by windygallery in Developer

≈ Leave a comment

Tags

android, nexus s

Google Nexus S (Samsung i9020)
Life: Jan 2011 – July 20, 2014
From the first Android 2.3 (Ginggerbread)
to 4.0 (Ice Cream Sandwich) and 4.1 (Jelly Bean)

Specification 

RAM 512 MB, 16 GB (1 internal storage GB, does not support external)
4 inch Screen with super AMOLED (800×480 WVGA)
CPU 1 GHz single core ARM Cortex-A8, GPU 200 MHz
Battery 1,500 mAh, NFC and AGPS , weight 129 g.

My words for you

 – I like your design a lot.
– I got a great case (SEIDIO) for protecting you.
– I made you pain twice by dropping key on your face (screen). I am so sorry.
– You was dead in October 2013, but I replaced your battery from Hongkong to extend your life.
– You are supporting 3G on AIS, but I use DTAC. TvT
– You made me slim by walking and playing Ingress (more than one year), And we’ve got 8 level together.
– Your eye is not good enough to win in pixels, that why I brought my Canon with you.
– Now you are already a great-grand father of Nexus 5 and you work hard for me so long.
– I would like to say Thank you very much and Good bye my lovely phone.

@windygallery

WWDC2014

04 Wednesday Jun 2014

Posted by windygallery in Developer, Events

≈ Leave a comment

Tags

2014, goal, wwdc

เพิ่งมีโอกาสได้นั่งชมงาน WWDC 2014 สดๆกับคนอื่นเค้าบ้าง (เพราะมีงานต้องทำยามดึก)

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

wwdc

อธิบายเพิ่มเติมก่อนสำหรับคนทั่วไป งาน WWDC ย่อมาจาก Apple Worldwide Developers Conference เป็นงานสัมมนาประจำปีของบริษัทแอปเปิ้ลที่จัดขึ้นเพื่อ “โชว์ของ” ให้กับบรรดานักพัฒนา โดยมากจะเป็นการเปิดตัวเทคโนโลยีใหม่ๆของแอปเปิ้ลเลือกสรรจะนำมาใช้กับผลิตภัณท์ของแอปเปิ้ล ซึ่งจะส่งผลโดยตรงกับนักพัฒนาที่เขียนโปรแกรมอยู่บนสินค้าเหล่านั้น

เพื่อให้เห็นภาพ ผมขอยกตัวอย่างผลงานของแอปเปิ้ลซักหลายตัว (ไม่ได้เรียงตามลำดับของการนำเสนอในงานนะครับ)

อย่างแรก: การโต้ตอบผ่านระบบ Notifications

WWDC2014-notification

เราคงเคยได้รับข้อความ LINE, เพื่อนคอมเมนต์คุยกันบน facebook ขณะที่เราอยู่หน้านอกแอพ ขั้นตอนปกติที่เราคุ้นเคยก็คือ การกด notification เพื่อเข้าไปในแอพแล้วจึงเริ่มการสื่อสารตอบ แต่แอปเปิ้ลมองว่านี่คือขั้นตอนที่เสียเวลาและเกิดขึ้นบ่อย สิ่งที่เขาทำก็คือ ทำให้คนตอบสนองจากนอกแอพได้ทันทีเลย

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

นอกจากนี้ยังมีฟีเจอร์ที่น่าสนใจเล็กๆเกี่ยวกับการนำรูปมาใส่อีเมล์ ระบบเดาคำ (อันนี้ไม่ใหม่ เพราะ Blackberry ก็ทำมาแล้วแต่ไม่ดังเท่า), การอนุญาตให้คนนอกพัฒนาคีย์บอร์ด (Android มีนานแล้ว), และการส่งข้อมูลเสียงพูด (ฟังก์ชั่นเหมือน LINE แต่การใช้งานดูเหมือนง่ายกว่า)

typing

voice

การซิงค์ระบบการโทรศัพท์เข้ากับเครื่อง Mac

WWDC2014-MacPhone

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

แนวคิดนี้สะท้อนออกมาชัดในแง่มุมที่ Apple ต้องการสร้างรูปแบบการใช้งานแบบที่ไม่อิงกับตัวอุปกรณ์ชิ้นใดชิ้นนึง แต่อิงกับ platform เป็นสำคัญ ความเข้ากันได้ระหว่าง hardware และ software ของ Apple คือจุดแข็งที่ Google และ Microsoft ไม่มี (สองค่ายนั้นเด่นที่ Software และไปอิง hardware กับค่ายอื่นค่อนข้างมาก) เมื่อคนเริ่มใช้งานและชินกับความสามารถของ platform แล้วในระยะยาว การคิดย้าย/เปลี่ยน platform จะเป็นไปได้ยากมาก (ลองนึกภาพคนที่ลงทุนซื้อแอพกับหนังไปซักหลายหมื่นบาท แล้วถ้าย้ายไป platform ใหม่ที่ต้องเสียเงินอีกรอบ จะมีกี่คนยอมทิ้งข้อมูลเก่าของตัวเองไปกัน)

family-

Family Sharing

Apple อนุญาตให้สมาชิกในครอบครัวสามารถใช้งานและแชร์ข้อมูลกันง่ายขึ้นผ่านระบบของตัวเอง โดยมองว่าการใช้งานข้อมูลหลายอย่างภายในครอบครัวจะมีข้อมูลร่วมอยู่หลายอย่าง เช่น ตารางปฏิทินของพ่อแม่ หนังสือ หนัง และรวมไปถึงแอพพลิเคชั่นต่างๆที่คนในครอบครัวใช้

family-sharing

family-request

family-share

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

HealthKit

healthkit

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

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

(แนวคิดนี้ สะท้อนออกมาชัด เมื่อแอปเปิ้ลเริ่มเปิด SDK ของระบบสแกนลายนิ้วมือให้ผู้อื่นใช้งานด้วย)

ในแง่ของความสามารถของ iPhone เราจะเห็นได้ชัดว่า Apple จงใจเลือก sensor ที่ใส่เข้ามาในมือถืออย่างระมัดระวัง (ปัจจุบัน iPhone มีอยู่ราว 7 sensors เช่น GPS, Compass, Light, Accelerometer, Gyro, Finger print) ในขณะที่ค่ายอื่นอย่าง Samsung ใส่เข้าไปเกินสิบแล้ว (Gesture, Heart rate, NFC ฯลฯ) ซึ่งหลายตัวเป็นสิ่งที่อาจเกินจำเป็นสำหรับผู้ใช้ส่วนใหญ่ ในขณะที่ Apple จะเน้นเลือกสิ่งที่ผู้ใช้จะใช้มันจริงๆ

Metal, Photo Editing Extension, Swift

Apple เปลี่ยนวิธีในการพัฒนาแอพหนักๆถึง 3 เรื่อง

เรื่องแรกของเปลี่ยนการใช้ OpenGL มาเป็น Metal

metal

OpenGL คือชุดคำสั่งมาตรฐานสำหรับการทำงานเกี่ยวกราฟิก(ทั้ง 2D และ 3D) ซึ่งแปลว่าเขียนทีเดียวใช้ได้หลายระบบ แต่แอปเปิ้ลมองว่ามันหนักและทำงานได้ไม่ดีที่สุดบนระบบของตัวเอง ก็เลยทำลายมาตรฐานโดยการเปลี่ยนมาใช้ชุดคำสั่งของตัวเองแทน (แล้วบังคับให้ developer ไปใช้ framework ของค่ายใหญ่ๆแทน ถ้าจะ port ข้ามระบบ) ซึ่งการทำแบบนี้จะทำไม่ได้เลย ถ้าตลาดที่ Apple ถือไม่ใหญ่พอจะบังคับให้คนทำตาม (แต่แน่ละ มันใหญ่พอ)

เรื่องที่สอง คือ Photo extension หรือชุดคำสั่งในการตกแต่งรูป

photoedit

photoediting

หลังจาก Instagram เปลี่ยนวิถีผู้คนไปเลย ว่าต้องแต่งรูปนิดหน่อยก่อนจะโพส ความสามารถในการตกแต่งรูปก็กลายสิ่งที่ “ต้องมี” ในแทบจะทุกแอพ ซึ่งในแง่การพัฒนามันใช้เวลาและทำได้ยาก (มีหลายรายทำออกมาเป็น SDK ขายเลย) แต่พอ iOS 8 ออก Apple เลยแจกมันซะ ในแง่ดีก็คือนักพัฒนาจะทำงานง่ายขึ้นใน platform ของ Apple (สร้างแรงกดดันกลับไปทุก platforms) และที่สำคัญ แค่นี้มันก็ทำให้ผู้ใช้ส่วนมากพอใจเสียด้วย

และ Swift ภาษาใหม่สำหรับการพัฒนาแอพ
Swift

นี่คือสิ่งที่น่าสนใจว่าทำไม Apple ถึงเลือกจะทิ้ง Objective-C ที่ขึ้นชื่อว่าลื่นไหลกว่า Java ของฝั่ง Android ไปหาภาษาใหม่ ในแง่เทคนิคฝั่ง Android เองก็เตรียมยกเครื่อง Runtime ใหม่ตั้งแต่ Kitkat แล้ว(แต่ยังไม่เปิดตัวออกมา) โดยมุ่งหวังจะทำให้ความเร็วของ Android ขึ้นมาไล่ตาม iOS แน่ๆในช่วงปีถัดจากนี้ ถ้า Apple เลือกเปลี่ยนเครื่องยนต์ใหม่ด้วยเหมือนกัน อาจจะเป็นการวางแผนเร่งตัวเองหนี และแก้ปัญหาด้านขีดจำกัดของภาษา Objective-C ไปในทีเดียว (ทั้งนี้คงต้องถามผู้เชี่ยวชาญกว่าผมว่าภาษาใหม่นี้จะปิดปัญหาเก่าอะไรได้บ้าง? -> อ่านได้ที่ blog NuuNeoI) และถ้าทำได้ นั่นจะทำให้ platform อื่นๆถูกทิ้งห่างไปอีกเยอะเลย

 

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

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

และเกมคุมเทรนของเทคโนโลยีก็ยังอยู่ในมือของแอปเปิ้ลต่อไป

Snapshot of technology companies in the World

18 Sunday May 2014

Posted by windygallery in Developer

≈ Leave a comment

Tags

company, it, snapshot

Snapshot of technology companies in the World

สถานการณ์ของบริษัทไอทีในโลกปัจจุบัน

Date: May 18, 2014

 

Apple
หลังจากเสีย สตีฟ จ็อบ ไป ทิม คุก ก็เข้ามาจัดการงานต่อ
ซึ่งเห็นได้ชัดว่าขยายตลาดให้ได้โหดจริงสมกับเป็นมือเก๋าด้านนี้
(แม้ด้านนวัตกรรมจะโดนด่าหนาหูว่าไม่มีอะไรว้าวออกมาเหมือนสมัยศาสดา)
แต่ก็กำลังใกล้จะปล่อย iPhone ตัวใหม่ออกมา (รุ่นที่ 6)
ที่คาดว่าหน้าจอจะใหญ่ขึ้น หลังจากโดนฝั่ง Android หนีไปไกลหลายช่วงตัว
(เวอร์ชั่นก่อนหน้านี้ 5s เพิ่งเริ่มมีระบบสแกนลายนิ้วมือ) ส่วน iWatch ยังไม่เปิดตัว
โจนาธาน ไอฟ์ หลังขึ้นมาคุมดีไซน์(ทั้งหมด)ของแอปเปิ้ล ก็ปล่อยของกับ iOS7
ที่ทำให้สาวก(กรีดร้อง)ได้เสพสไตล์แฟลตแบบหนักหน่วง ซึ่งแป๊บเดียวคนก็ชิน
และลามปามข้ามแพลตฟอร์มไปทั่วเป็นที่เรียบร้อย (ของเขาแรงจริงๆ)

 

Google
Google ยังคงเป็น Search engine ที่มีผู้ใช้มากที่สุด
ปัจจุบันอาวุธหนักคือ มือถือ Android OS
ปล่อย Kitkat (4.4.2) และ Nexus 5 (LG) มาจะครบครึ่งปีแล้ว
และเพิ่งเจรจาตกลงยุติสงคราม Patent กับ Apple สำเร็จ
หลังจากซื้อ Motolora (เพื่อสิทธิบัตร) มา(แต่ถือได้พักเดียวก็ขาย)
ฝั่ง Wear devices เพิ่งเริ่มปล่อย Google glass ออกมาขาย
อนาคตคาดว่ากำลังเตรียมการใหญ่ด้านหุ่นยนต์ (กวาดซื้อบริษัทเป็นว่าเล่น)
แถมได้ทัพวิศวกร(อดีตทีมของ Apple) จากการซื้อ Nest อีกเพียบ

Microsoft
ทำการเขมือบ Nokia อย่างเป็นทางการ
และเปลี่ยน CEO จาก Steve Ballmer มาเป็น Satya Nadella ที่เคยดูแล
products ในกลุ่มของ cloud และ enterprise มาคุมแทน
ในขณะที่ Microsoft windows ยังดูไม่ค่อยนิ่ง
ตลาด Mac ของ Apple ก็ค่อยๆ รุกคืบเข้ามากินตลาดอย่างเอร็ดอร่อย
Blackberry
หลังจากเปลี่ยน CEO จาก Thorsten Heins มาเป็น John S. Chen
ก็เริ่มปรับกลยุทธ์มามุ่งเน้นตลาด enterprise มากขึ้น และจับมือกับ foxconn
เพื่อทำมือถือรุ่นถัดไป (ล่าสุดเพิ่มปล่อย OS 10.3 ออกมา)

Samsung
ผงาดเต็มกำลังด้วยกองทัพแอนดรอย์ที่เยอะ และเก็บทุกเซกเมนต์ของตลาด
แต่ถ้าถอยออกมาดูในมุมกว้าง จะเห็นได้ว่าซัมซุงทำตัวเป็นเหมือน Nokia ยุครุ่งเรื่องแล้ว
คือ มีมือถือครบทุกระดับราคา สเปคไม่แรงกว่ายี่ห้ออื่นแต่แพงกว่า
โดยรวมยังดูมีนวัตกรรมค่อนข้างสูง เช่น กันน้้ำ สแกนนิ้ว(เลียนแบบ iphone ได้เร็วมาก)
แต่มีแถมวัดชีพจร และเพิ่มเติมเล็กๆน้อยๆไปพอสมควร
แต่กับนาฬิกา ยังแป๊กสนิท รอลุ้นรอบหน้าต่อไป

facebook
ยังคงเป็น social network หลักของคนทั้งโลก
ที่่พึ่งทำการกลืนกิน Whatsapp และ instagram ไปเรียบร้อย
แนวโน้มในการทำเงินเริ่มโหดขึ้น เช่นการปรับลดการเห็นของ page ต่างๆ
(ถ้าอยากให้คนเห็นเยอะต้องจ่ายเงิน)


Yahoo

หลังจากที่ Marissa Mayer เข้ามารับตำแหน่ง CEO
ก็เริ่มผ่าตัดและปรับปรุงวัฒนธรรมองค์กรของ Yahoo ให้ขยับตัวเร็วขึ้น
อัดฉีดนโยบายที่ก่อให้เกิดนวัตกรรม เข้าซื้อ เช่น Tumblr
และเตรียมตัวผลัก Yahoo ให้เข้าสู่สงคราม Content และ search engine


Amazon

หลังจากลงทุนหนักไปกับการวางยุทธศาสตร์ระยะยาว
เริ่มมีการใช้โดรนส่งของ, มีอุปกรณ์รับคำสั่งซื้อของสดส่งตรงถึงบ้าน
ใช้หุ่นยนต์ขนสินค้าในโกดังแทนคน (โดยการซื้อบริษัททำหุ่นยนต์มาเองเลย
ซื้อหนังสือพิมพ์ Washington Post
มีข่าวลือว่ากำลังจะลงมาเล่นกับตลาดเกมกับโมบาย(อีกแล้ว)
ส่วนในฝั่งของ Cloud server ก็เริ่มมีผู้เล่นหน้าใหม่ DigitalOcean
ขยับเข้าเบียดในบางสมรภูมิบ้างแล้ว

ส่วนยักษ์ใหญ่ของวงการอีคอมเมิร์สในจีน Alibaba ก็เริ่มขยับ
บุกเข้ามาในตลาดธนาคารด้วยการให้ดอกเบี้ยสูงกว่าดูดเงินไหลออกจาก
ระบบธนาคารได้มหาศาล (ซึ่งคงไม่เกิดในบ้านเราเพราะกฎหมายไม่เอื้อ)
เทรนมันมาแล้ว และบ้านเราคงมีวิธี!

 

ตลาดปัจจุบัน
มือถือ
Android ครองโลกได้แล้ว (Samsung ครองแชมป์)
iOS ตามแบบมีฐานที่มั่นเหนียวแน่น
Windows phone เป็นก้อนดินเล็กๆ
Blackberry หายไปจากจอเรดาร์ของโลกแล้ว (แต่ CEO ยังสู้ยิบตา)
Firefox OS ยังมาไม่ถึง
Ubuntu OS ยังไม่ปล่อย

Tablet
iPad ครองโลก
Samsung tablet ไล่ตามอย่างเต็มที่
นอกนั้นไร้ที่ยืน..

CPU
Atom กำลังพยายามตี ARM ด้วยราคาถูกเข้าสู้

ตลาดที่กำลังจะเกิดใหม่เร็วๆนี้
นาฬิกา! (ผู้ท้าชิงที่น่าสนใจที่สุดในปัจจุบันคือ Motolora)
TV (Apple vs ChromeCast ภาคหน้า)
Wearable devices: Glass เป็นพระเอก (เริ่มเปิดตลาดล่ะ)
และพวกอุปกรณ์วัดชีพจรเริ่มมากันตรึม
New input: Leap motion กำลังขยายฐานแอพลิเคชั่นอย่างดุเดือด
Rasberry Pi: เริ่มจุดติดและมีคนเอาไปทำอะไรเล่นๆที่น่าต่อยอดเพียบ
Bitcoin: เหมือนจะเริ่มติดลม แต่อยู่ๆก็เจอข่าวการแฮดติดๆกันไปหลายดอก

 

Hadoop

07 Monday Apr 2014

Posted by windygallery in Developer

≈ Leave a comment

Tags

big data, hadoop

วันนี้ได้มีโอกาสไปร่วมงาน BigData – Hadoop & MapReduce

DSCF0093

ที่เพื่อนโบ้ต (@nuboat) ทดลองจัดขึ้นเป็นครั้งแรกที่ Oracle Corporation Thailand
ได้สาระที่น่าสนใจมาเยอะพอสมควร
เลยขอมาสรุปเก็บไว้เป็นความรู้ติดบล็อคไว้
เผื่อวันไหนต้องใช้จะได้หาง่ายใช้คล่อง
แต่ทั้งนี้ทั้งนั้น เนื่องจากโดยลักษณะงานประจำที่ทำ
ยังไม่ได้เข้ามาใกล้ในงานสายนี้ซักเท่าไหร่
หากมีข้อมูลใดผิดพลาดประการใดขอให้ทักท้วง
เพื่อแก้ไขให้ถูกต้องเหมาะสมตามที่ควรครับ

🙂

สาระที่น่าสนใจของงาน(ในมุมมองของผม)
มีสองประเด็น

1. What & why Big data ? และ

2. Hadoop ??
เอาประเด็นแรก ก่อน คือ อะไรคือคำว่า Big data และเราจะทำมันไปทำไม

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

– เขียน status บ่นบน facebook เยอะขึ้น ถี่ขึ้น
– คอมเมนต์ like และ share ข้อมูลกันรัวๆ
– ดูคลิปจาก Youtube
– อัพรูปจาก Instagram
– สั่งซื้อของออนไลน์
– โอนเงินผ่าน Online banking
– Chat กันผ่าน LINE มากกว่าการส่ง SMS แบบเดิมๆ

DSCF3414

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

การที่ข้อมูลมีขนาดใหญ่ขึ้นกว่าสมัยก่อนมาก ก็เลยตามมาด้วยปัญหาที่ว่า
“จะเอามันไปทำอะไร?”

– จะทิ้งมันดีไหม? เพราะเปลืองพื้นที่ storage และค่าใช้จ่ายในการดูแลรักษา

– หรือจะเปลี่ยนมันเป็นประโยชน์อะไรได้บ้าง (จะได้ไม่รู้สึกผิดที่เสียตังค์เก็บมัน)

แล้วก็เลยมีคนหัวใส ที่เอาคิดว่า
ถ้าข้อมูลมันถูกสร้างมาจากผู้ใช้ มันก็ต้องสะท้อนลักษณะเฉพาะของผู้ใช้ออกมาได้
ดังนั้นก็เลยเอามันมาวิเคราะห์หาความต้องการของผู้ใช้เสียเลย ยกตัวอย่าง เช่น

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

 

หลังจากวันนั้น

โลกอินเตอร์เน็ตของพวกเราๆก็เปลี่ยนไปตลอดกาล

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

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

“เอ็งอยู่กลุ่มเดียวกับมัน ชอบอะไรคล้ายๆกัน ถ้ามันชอบ แกก็น่าจะชอบนะ”
(นี่แหละเสียงกระซิบของระบบในปัจุบัน)
น่ากลัวไปไหมครับ?

คราวนี้มามองในฝั่งของคนทำงานด้านเทคโนโลยีบ้าง
ไอ้สิ่งที่พูดมาข้างบนน่ะ ฟังดูดีเชียว แต่เบื้องหลังมันทำได้ยังไงล่ะ??

 

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

ข้อมูลมี 4 รูปแบบ (แบ่งแบบหยาบๆ)
1. มีโครงสร้างชัดเจน พวกฐานข้อมูล database ต่างๆ เช่น RDBMS
2. กึ่งมีโครงสร้าง (semi structure) เช่น JSON, XML
3. เหมือนจะไม่มีโครงสร้าง (quasi structure) เช่น text file
4. ไม่มีโครงสร้าง เช่น Image, Videos

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

ถ้าเราเก็บข้อมูลรายรับรายจ่ายของเราลงในตาราง excel อย่างดี
(เปรียบเสมือน table ใน database งามๆ)
พอเราอยากรู้ยอดรวมเงินที่เราใช้ในเดือนที่ผ่านมา
เราก็แค่กด sum ข้อมูลในช่วงที่ว่า (หรือใช้ SQL ที่มี where ชัดๆซักตัว)
เราก็จะได้คำตอบมาในเวลาไม่ถึงแปดอึดใจ (ยาวแค่ไหนหว่า?)

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

 

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

ก็เลยกลายเป็นที่มาของการออกแบบ software
ที่จะเอามาวิเคราะห์ข้อมูลที่ส่วนใหญ่โครงสร้างมันยุ่งแบบนี้

DSCF3345

ในแง่ของความยุ่งนี้ จริงๆก็แยกได้อีกเป็น 3 แนว
1. Volume – เยอะมากกกกกกกกกกกกกกกกกกกกกกกกกกกกก (นับ ก ไก่เอา)
2. Velocity – เกี่ยวข้องกับเหตุการณ์ต่างๆตามเวลา เปลี่ยนแปลงเร็ว
3. Variety – รูปแบบของข้อมูลหลากหลายมาก และส่วนใหญ่มักไม่ใช่ incomplete data

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

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

จะเอา realtime ได้ยังไง…

….
โชคดี ที่ปัญหานี้ไม่ได้มีแต่คนถาม
มีนักคิดนักเขียน(โปรแกรม)ท่านนึง นาม Nutch เขียนระบบนึงขึ้นมา
เพื่อทำเป็นระบบ search engine แล้วก็คิดค้นวิธีจัดการกับข้อมูลเว็บเพจมหาศาล
ได้อย่างมีประสิทธิภาพ ด้วยเทคนิคที่เรียกกันว่า MapReduce

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

แล้วก็มีนักพัฒนาอีกสองคนชื่อ Doug Cutting กับ Mike Cafarella
มาปรับแต่งต่อให้กลายเป็น framework เพื่อให้ใช้งานได้ง่ายมากขึ้น
ในชื่อที่เรียกว่า Hadoop

หลักการทำงานของ Hadoop มีสองขั้นตอนใหญ่ๆ คือ Map กับ Reduce

Map
– มี Master node เป็นตัวหลักในการแบ่งข้อมูล(ที่คิดว่าเป็น) Big data ออกเป็นก้อนย่อยๆ
– ส่งข้อมูลแต่ละก้อนไปให้หน่วยประมวลผล (Worker node) ซึ่งโดยปกติจะมีหลาย node (เน้นจำนวนเยอะเข้าว่า)
– Worker node หาคำตอบของข้อมูลก้อนย่อย แล้วส่งคำตอบกลับไปให้ Master node

Reduce
– Master node รวมคำตอบของทุก worker node เข้าด้วยกัน
– จัดรูปแบบของคำตอบใหม่ ให้ตรงกับคำถามแรกสุดที่อยากรู้

ซึ่งจากภาพรวม แปลได้ง่ายๆว่า Hadoop จะเป็น framework
ที่ช่วยให้เราแตกงานไปกระจายทำในหลายๆเครื่องได้นั่นเอง

แต่สิ่งที่เรายังต้องคิดและทำก็คือ
– การเตรียมข้อมูล
– การกำหนดเงื่อนไขต่างๆเกี่ยวกับแบ่งข้อมูล, การกระจายข้อมูล
– วิธี process งาน (ว่าอยากได้อะไรจากข้อมูล ไม่มีใครตรัสรู้ได้ต้องเขียนเอง)
– รูปแบบของ key, value ที่เราจะใช้ (เพื่อเป็นแกนในการสรุปว่าเราต้องการอะไรจากข้อมูล)
จะเห็นได้ว่าสิ่งสำคัญคือ เราต้องพอมองภาพให้ออกก่อนว่า
เราจะเอาข้อมูลเหล่านี้ไปย่อยเพื่อค้นหาอะไรออกมา
แล้วจึงโปรแกรมให้ระบบช่วยย่อยและหาคำตอบมาให้เราเอาผลไปใช้งานต่อได้

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

 

DSCF4047-fhdr

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

เรียนรู้ต่อไปอย่างสนุกสนานครับ

มีอะไรใหม่ให้ลอง เรียน รู้ และเล่นอีกเยอะแยะเลยครับ

ปล. Big data และ Hadoop ไม่ใช่พระเจ้า มันใช้แก้ปัญหาพวก Analytics ดี
แต่ไม่ได้เหมาะกับทุกปัญหาของการจัดการข้อมูล อย่าเอามันไปมั่วกับ database ทั่วไป

🙂

มืออาชีพ

05 Saturday Apr 2014

Posted by windygallery in Developer

≈ Leave a comment

Tags

พ่อครัว, มืออาชีพ, lean, process

DSCF4555_001

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

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

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

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

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

กระบวนการทั้งหมดดูไม่มีอะไรที่เป็น watse เลยทั้งเวลาและพลังงาน
เป็น optimized process ที่ได้มาจากการฝึกฝนล้วนๆ
ดูเรียบง่าย แต่มีประสิทธิภาพสูง…

เป็นมืออาชีพในด้านการทำอาหารอย่างแท้จริง..

 

นั่งมองย้อนดูตัวเอง..
ถึงเวลาฝึกฝนตัวเองอย่างจริงจังแล้วซินะ…

Comfort zone มันทำให้ตัวเองหย่อนการฝึกฝนตัวเอง..

jQuery with dynamic objects

05 Saturday May 2012

Posted by windygallery in Developer

≈ Leave a comment

Tags

jquery

Select dynamic object by using “live()”

http://api.jquery.com/live/

 

example:

$(“normal”).click(function(event) {
event.preventDefault();
var name = $(this).attr(‘name’);
alert(name);
});

$(‘.dynamic’).live(‘click’, function(e) {
e.preventDefault();
var name = $(this).attr(‘name’);
alert(name);
});

← Older posts

Subscribe

  • Entries (RSS)
  • Comments (RSS)

Archives

  • August 2017
  • November 2015
  • August 2015
  • June 2015
  • May 2015
  • April 2015
  • March 2015
  • February 2015
  • January 2015
  • December 2014
  • November 2014
  • October 2014
  • September 2014
  • August 2014
  • July 2014
  • June 2014
  • May 2014
  • April 2014
  • March 2014
  • May 2012
  • February 2011
  • January 2011
  • August 2010
  • June 2010
  • May 2010
  • April 2010
  • February 2010
  • January 2010
  • December 2009
  • November 2009
  • October 2009
  • September 2009
  • August 2009
  • April 2009
  • March 2009
  • November 2008
  • October 2008

Categories

  • Developer
  • Events
  • Games
  • IDeas
  • Love
  • Photos

Meta

  • Register
  • Log in

Blog at WordPress.com.

Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use.
To find out more, including how to control cookies, see here: Cookie Policy
  • Follow Following
    • WindyGallery's Weblog
    • Already have a WordPress.com account? Log in now.
    • WindyGallery's Weblog
    • Customize
    • Follow Following
    • Sign up
    • Log in
    • Report this content
    • View site in Reader
    • Manage subscriptions
    • Collapse this bar
 

Loading Comments...