เขียนบล็อกด้วย Jekyll

กลับมาแล้วหลังจากหายหน้าไปพักใหญ่ๆ พร้อมกับบล็อกใหม่ ninnat.github.io ก็ขออธิบายหน่อยว่ามันต่างกับบล็อกบน WordPress อย่างไร

บล็อกใหม่นี้เป็น static site ก็คือเขียนมาเป็นหน้าๆ เขียนอย่างไรก็เป็นอย่างนั้น ต่างจากแบบ dynamic อย่าง WordPress ที่ทุกครั้งที่เปิดหน้า server ก็จะรวบรวมเอาส่วนต่างๆมาประกอบกันขึ้นเป็นหน้า ซึ่งก็มีข้อดีข้อเสียต่างกันไป เช่น เพจ static เขียนง่ายกว่า โหลดได้เร็วกว่า เพจ dynamic ตอบสนองได้มากกว่า แต่สำหรับหลายคคน WordPress นั้น “เยอะ” เกินไป บางคนต้องการแค่เนื้อหา Tom Preston-Werner จึงเขียน Jekyll ขึ้นมาจากคอนเซปต์ Blogging Like a Hacker

I already knew a lot about what I didn’t want. I was tired of complicated blogging engines like WordPress and Mephisto. I wanted to write great posts, not style a zillion template pages, moderate comments all day long, and constantly lag behind the latest software release…

After a period of reflection, I had an idea. While I’m not specifically trained as an author of prose, I am trained as an author of code. What would happen if I approached blogging from a software development perspective? What would that look like?

First, all my writing would be stored in a Git repository. This would ensure that I could try out different ideas and explore a variety of posts all from the comfort of my preferred editor and the command line. I’d be able to publish a post via a simple deploy script or post-commit hook. Complexity would be kept to an absolute minimum, so a static site would be preferable to a dynamic site that required ongoing maintenance. My blog would need to be easily customizable; coming from a graphic design background means I’ll always be tweaking the site’s appearance and layout.

Over the last month I’ve brought these concepts to fruition and I’m pleased to announce Jekyll.

ถ้าไม่อยากรู้ว่าสร้างบล็อกด้วย Jekyll อย่างไรก็ข้ามไปสองย่อหน้าเลย

วิธีทำเราก็ร่างไว้คร่าวๆในหน้า readme ของบล็อกนั้นแล้ว หลักๆก็คือเขียนด้วย Jekyll ในรูปแบบ Markdown แล้วใช้ปลั๊กอิน pandoc เปลี่ยนให้เป็น HTML เพราะมันทำให้เราเขียนสมการด้วย Mathjax ได้ซึ่ง syntax จะง่ายกว่าการเขียนสมการบน WordPress (และเพิ่ม macro ลัดสั้นได้เอง) เขียนเสร็จแล้วจะทำอะไรกับโค๊ดต่อ? Jekyll นั้นถูกสร้างขึ้นมาให้ทำงานร่วมกับ Git อย่างราบรื่น (ที่กำจัดปัญหาเรื่อง version control คือการเปลี่ยนแปลงทุกอย่างที่เราทำจะถูกบันทึกไว้หมด สามารถย้อนกลับได้เมื่อต้องการ เราเคยใช้เขียนเปเปอร์ร่วมกับ coauthor) เราสามารถ deploy โค๊ดไปยัง Git repository และให้มันสร้างบล็อก (hosted บน GitHub ฟรี!) โดยอัตโนมัติได้ด้วย Travis-CI

ก่อนจะลง Jekyll ต้องลง Ruby ก่อน ซึ่ง Ruby นั้นไม่ได้ถูกเขียนขึ้นมาให้เข้ากับ Windows ได้ดีนัก มีวิธีลง Ruby บน Windows ก็จริง แต่สุดท้ายเรามีปัญหาลงส่วนประกอบจำเป็นส่วนหนึ่งไม่ได้ทำให้ compile HTML บนเครื่องตัวเองก่อนจะ deploy ไป Git ไม่ได้ แต่ก็ไม่ทำให้ลำบากเกินไป เมื่อลง Jekyll ได้แล้วเราก็ไปก็อปปี้บล็อกของเพื่อนมาปรับเอาตามต้องการ (บล็อกของเพื่อนก็ปรับเอามาจากคนอื่นอีกที โดยเฉพาะจาก Carl Boettiger ที่ UC Berkeley ที่สนับสนุนวิทยาศาสตร์เปิด (open science) อย่างเต็มตัวโดยการเผยแพร่โค๊ดและผลทั้งหมดจากงานวิจัยสู่สาธารณะก่อนที่จะตีพิมพ์ด้วยซ้ำไม่กั๊ก ไม่กลัวถูกขโมย น่าชื่นชมมาก)

ผลก็คือบล็อกฟรีที่ปรับแต่งเองได้ อย่าง popup footnote เป็นอะไรที่เราอยากทำได้มานานแล้ว ปกติเวลาอ่านหนังสือเชิงอรรถมันจะไปอยู่ขอบล่างของหน้าหรือแย่กว่านั้นก็ไปอยู่ท้ายเล่มเลย ทำให้ต้องเปิดกลับไปกลับมา ซึ่งในเวบมันควรจะทำได้ดีกว่านั้น popup footnote (เราใช้ Bigfoot) แก้ปัญหานี้โดยการแสดงเชิงอรรถที่ซ่อนไว้ขึ้นมาตรงข้อความที่มันอ้างถึงเลยเมื่อเอาเมาส์ไปผ่าน ลูกเล่นหลายๆอย่างประมาณนี้ก็ทำใน WordPress ได้แต่ต้องจ่ายเงิน Jekyll ไม่มีการให้คนคอมเมนต์ ก็เสริม Disqus เข้าไปได้  ถ้าต้องการให้มีปุ่มแชร์ก็ใช้ Addthis ถ้าต้องการใช้ภาษาไทยอาจจะต้องลำบากหาวิธีหน่อย แต่เราไม่คิดว่าจะใช้เพราะมีบล็อกนี้อยู่แล้ว

ผู้อ่าน

คำถามตอนนี้ก็คือเมื่อเรามีสองบล็อก บล็อกหนึ่งเป็นภาษาไทย บล็อกหนึ่งเป็นภาษาอังกฤษ เราจะทำยังไงกับมัน? สำหรับเราความแตกต่างไม่ใช่แค่การแปลภาษา แต่ผู้อ่านที่เรามีในความคิดกับความยากในการเขียนก็ต่างกัน วิชาที่เรารู้กว่า 90% ได้มาจากการเรียนในอเมริกา เวลาเราสื่อสารเรื่องพวกนี้เราก็สื่อสารเป็นภาษาอังกฤษ ไม่ว่าคุยกันต่อหน้าหรือผ่าน Physics Forums หรือ Reddit แต่คนอ่านภาษาไทยส่วนใหญ่ไม่มีพื้นฐานร่วมกับเรา แล้วก็ไม่ค่อยได้ feedback อีก แถมยังเขียนยาก มักไม่มีคำแปลตรงตัวของคำศัพท์หรือวลีที่ใช้กันเป็นปกติในการคุยวิชาการ เรามีประสบการณ์เคยกลับไทยไปบรรยายในมหาวิทยาลัยและพยายามใช้คำไทย แต่สุดท้ายคนไทยที่ฟังก็ใช้ทับศัพท์ภาษาอังกฤษพูดกับเราอยู่ดี บางทีก็เลยขี้เกียจเขียนเหมือนกัน (โดยเฉพาะเราใช้คีย์บอร์ดมากกว่าสองภาษา ทำให้การเปลี่ยนภาษากลับไปกลับมาลำบากมากกว่าปกติ) ก็รอดูกันต่อไปว่าจะเกิดอะไรขึ้น