22 คะแนน โดย xguru 2024-10-28 | 10 ความคิดเห็น | แชร์ทาง WhatsApp

แสดงภาพและอธิบายเทรนด์ล่าสุดในด้านเทคนิค/เครื่องมือ/แพลตฟอร์ม/ภาษาและเฟรมเวิร์กสำหรับการพัฒนา โดยแบ่งเป็น 4 ระดับคือ Hold/Assess/Trial/Adopt

แอนติแพตเทิร์นของ coding assistance

  • ไม่น่าแปลกใจที่ Radar ครั้งนี้เน้นการพูดถึง generative AI และ LLM ที่นักพัฒนาใช้งานกันอย่างแพร่หลาย
  • แพตเทิร์นย่อมนำไปสู่แอนติแพตเทิร์น ซึ่งหมายถึงสถานการณ์เฉพาะที่นักพัฒนาควรหลีกเลี่ยง
  • ในพื้นที่ AI ที่กำลังร้อนแรงเกินไป เริ่มมีแอนติแพตเทิร์นบางอย่างปรากฏขึ้น:
    • ความเข้าใจผิดที่ว่ามนุษย์สามารถใช้ AI เป็นคู่หูแทน pair programming ได้อย่างสมบูรณ์
    • การพึ่งพาคำแนะนำช่วยเขียนโค้ดมากเกินไป
    • ปัญหาคุณภาพโค้ดของโค้ดที่ถูกสร้างขึ้น
    • อัตราการเติบโตของ codebase ที่เร็วขึ้น
  • AI มีแนวโน้มแก้ปัญหาแบบตะลุยตรงไปตรงมา มากกว่าการใช้ abstraction
    • ตัวอย่าง: ใช้เงื่อนไขหลายสิบชุดแทน Strategy design pattern
  • โดยเฉพาะปัญหาคุณภาพโค้ด เป็นจุดที่ตอกย้ำว่านักพัฒนาและสถาปนิกต้องใส่ใจอย่างต่อเนื่อง เพื่อไม่ให้ตกหลุมโค้ดแบบ "ใช้งานได้แต่แย่มาก"
  • ดังนั้นสมาชิกในทีมจึงควรให้ความสำคัญกับแนวปฏิบัติทางวิศวกรรมที่ดีมากขึ้น เช่น unit test, architecture fitness function และเทคนิค governance กับ validation อื่น ๆ ที่พิสูจน์แล้ว
    • เพื่อให้มั่นใจว่า AI กำลังช่วยลดแรงงาน แทนที่จะทำให้ codebase เต็มไปด้วยความซับซ้อน

Rust is anything but rusty - Rust ไม่ได้ขึ้นสนิมเลย

  • Rust กำลังค่อย ๆ กลายเป็นภาษาโปรแกรมระบบที่ได้รับความนิยมมากขึ้น
  • ในทุกเซสชันของ Radar ชื่อของ Rust ปรากฏขึ้นซ้ำ ๆ อยู่เสมอในบริบทของการสนทนา
  • เครื่องมือจำนวนมากที่ถูกพูดถึงนั้นเขียนด้วย Rust
  • Rust เป็นภาษาที่นิยมใช้เมื่อจะมาแทนที่ยูทิลิตีระดับระบบแบบเก่า หรือเมื่อจะเขียนบางส่วนของ ecosystem ใหม่เพื่อเพิ่มประสิทธิภาพ
  • คำขยายที่พบบ่อยที่สุดสำหรับเครื่องมือที่สร้างด้วย Rust ดูเหมือนจะเป็น "เร็วมากอย่างเหลือเชื่อ"
  • ตัวอย่างเช่น ใน ecosystem ของ Python มีเครื่องมือหลายตัวที่มีทางเลือกแบบ Rust-based เพื่อรองรับประสิทธิภาพที่ดีกว่าอย่างชัดเจน
  • ผู้ออกแบบภาษาและชุมชนสามารถสร้าง ecosystem ของ SDK หลัก ไลบรารี และเครื่องมือพัฒนาที่เป็นที่ชื่นชอบได้สำเร็จ พร้อมมอบความเร็วในการทำงานที่ยอดเยี่ยมโดยมีหลุมพรางน้อยกว่าภาษารุ่นก่อน ๆ มาก
  • หลายคนในทีมเป็นแฟนของ Rust และดูเหมือนว่านักพัฒนาส่วนใหญ่ที่ใช้ Rust ก็ชื่นชมมันอย่างมาก

การเติบโตอย่างค่อยเป็นค่อยไปของ WASM

  • WASM(WebAssembly) คือรูปแบบคำสั่งแบบไบนารีสำหรับ virtual machine ที่ทำงานบนสแตก
  • สำหรับความสนใจของนักพัฒนาส่วนใหญ่ มันอาจฟังดูเฉพาะทางและอยู่ในระดับต่ำเกินไป แต่ผู้คนมองเห็นนัยสำคัญของมัน: ความสามารถในการรันแอปพลิเคชันที่ซับซ้อนภายใน browser sandbox
  • WASM สามารถทำงานภายใน JavaScript virtual machine ที่มีอยู่แล้วได้ ทำให้นักพัฒนาฝังแอปพลิเคชันลงในเบราว์เซอร์ได้ ซึ่งก่อนหน้านี้ทำได้เฉพาะผ่าน native framework และส่วนขยายเท่านั้น
  • เบราว์เซอร์หลักทั้ง 4 ราย (Chrome, Firefox, Safari, Edge) รองรับ WASM 1.0 แล้วในตอนนี้ เปิดความเป็นไปได้ที่น่าสนใจสำหรับการพัฒนาแบบพกพาและข้ามแพลตฟอร์มที่ซับซ้อน
  • เราติดตามมาตรฐานนี้ด้วยความสนใจอย่างมากตลอดหลายปีที่ผ่านมา และยินดีที่ตอนนี้มันเริ่มแสดงศักยภาพในฐานะเป้าหมายการดีพลอยที่ใช้งานได้จริง

การระเบิดครั้งใหญ่แบบแคมเบรียนของเครื่องมือ generative AI

  • หากดูจากแนวโน้มที่นำเสนอใน Radar ไม่กี่ฉบับที่ผ่านมา ก็พอคาดได้ว่า generative AI จะถูกพูดถึงอย่างโดดเด่นในการสนทนาของเรา
  • ถึงอย่างนั้น เราก็ยังประหลาดใจกับการระเบิดของ ecosystem เทคโนโลยีที่รองรับ language model อยู่ดี:
    • guardrails, evaluation, เครื่องมือสร้าง agent, เฟรมเวิร์กสำหรับงาน structured output, vector database, cloud service และเครื่องมือ observability
  • การเติบโตที่รวดเร็วและหลากหลายนี้ ในหลายแง่มุมถือว่าเข้าใจได้อย่างสมบูรณ์
  • ประสบการณ์เริ่มต้น หรือความง่ายของการป้อน prompt แบบข้อความธรรมดาให้ language model ได้ต่อยอดไปสู่ software product engineering
  • มันอาจยังไม่ไปถึงความฝันและคำกล่าวอ้างเกินจริงที่เกิดขึ้นหลังจากผู้คนส่ง prompt แรกให้ ChatGPT แต่เราเห็นการใช้งาน generative AI อย่างชาญฉลาดและสร้างประสิทธิผลจากลูกค้าจำนวนมาก และเครื่องมือ แพลตฟอร์ม กับเฟรมเวิร์กทั้งหมดเหล่านี้มีบทบาทสำคัญในการนำโซลูชันที่อิงกับ LLM เข้าสู่ production
  • เช่นเดียวกับกรณีการระเบิดของ ecosystem JavaScript ราวปี 2015 เราคาดว่าการเติบโตอันสับสนเช่นนี้จะดำเนินต่อไปอีกระยะหนึ่ง

[Techniques]

Adopt

  • 1% canary

    • ใช้ canary deployment เพื่อกระตุ้นการรับ feedback ระยะแรกต่อซอฟต์แวร์เวอร์ชันใหม่และลดความเสี่ยง
    • เป็นเทคนิคการ rollout ฟีเจอร์ใหม่ให้ผู้ใช้ 1% ทำให้ทีมสามารถเก็บ feedback, สังเกตผลกระทบ และตอบสนองได้เมื่อจำเป็น
    • สำคัญต่อการดีพลอยในวงกว้าง เช่น แอปมือถือ อุปกรณ์ edge computing หรือ software-defined vehicle
  • Component testing

    • test automation คือรากฐานสำคัญของการพัฒนาซอฟต์แวร์ที่มีประสิทธิภาพ
    • มุ่งเน้นที่ frontend testing เพื่อให้ได้ทั้งความเสถียรและความเร็ว
    • ใช้ jsdom สำหรับ component testing เพื่อรันในหน่วยความจำ
    • สำหรับ end-to-end testing ให้ใช้เครื่องมือของเบราว์เซอร์
  • Continuous deployment

    • นำแนวทาง continuous deployment มาใช้ให้มากที่สุดเท่าที่ทำได้
    • ดีพลอยทุกการเปลี่ยนแปลงที่ผ่าน automated test เข้าสู่ระบบ production โดยอัตโนมัติ
    • ทำให้เกิด feedback loop ที่รวดเร็วและส่งมอบคุณค่าให้ลูกค้าได้อย่างฉับไว
    • แนะนำหนังสือ "Continuous Deployment" ของ Valentina Servile ซึ่งให้ roadmap สำหรับไปสู่ระดับความพร้อมที่จำเป็น
  • Retrieval-augmented generation (RAG)

    • เป็นแพตเทิร์นที่นิยมใช้เพื่อปรับปรุงคุณภาพคำตอบของ large language model
    • ถูกใช้อย่างประสบความสำเร็จในโครงการอย่างแพลตฟอร์ม Jugalbandi AI
    • จัดเก็บข้อมูลเกี่ยวกับเอกสารที่เกี่ยวข้องและเชื่อถือได้ไว้ในฐานข้อมูล
    • ค้นหาเอกสารที่เกี่ยวข้องกับ prompt และนำมาเสริมเพื่อให้บริบทที่สมบูรณ์ยิ่งขึ้น
    • ให้ผลลัพธ์ที่มีคุณภาพดีกว่าและลด hallucination ลงอย่างมาก

Trial

  • Domain storytelling

    • domain-driven design (DDD) ได้กลายเป็นรากฐานของแนวทางการพัฒนาซอฟต์แวร์ของเรา
    • หลายทีมเริ่มต้นทำ DDD ได้ยาก
    • domain storytelling เป็นทางเลือกหรือแนวทางเสริมสำหรับการพัฒนา domain model ในระยะแรก
    • ทำให้ความเข้าใจร่วมกันชัดเจนขึ้นด้วยการทำแผนภาพคำอธิบายกิจกรรมของผู้เชี่ยวชาญทางธุรกิจ
  • Fine-tuning embedding models

    • เมื่อสร้างแอป LLM ที่อิงกับ retrieval-augmented generation คุณภาพของ embedding ส่งผลโดยตรงต่อการค้นหาและการตอบกลับ
    • สามารถปรับปรุงความแม่นยำและความเหมาะสมของ embedding สำหรับงานหรือโดเมนเฉพาะได้
    • ทีมของเราทำ embedding fine-tuning เมื่อการดึงข้อมูลอย่างแม่นยำมีความสำคัญในแอป LLM เฉพาะโดเมน
    • จำเป็นต้องพิจารณาทั้งข้อดีและข้อเสียของแนวทางนี้
  • Function calling with LLMs

    • ความสามารถที่ทำให้ LLM ตัดสินใจและเรียกใช้ฟังก์ชันที่เหมาะสม โดยอิงจาก query และเอกสารที่เกี่ยวข้องที่ได้รับ
    • ขยายให้ LLM ทำงานได้มากกว่าการสร้างข้อความเพียงอย่างเดียว
    • ผ่านการเรียกใช้ฟังก์ชันหรือ API trigger ทำให้ LLM สามารถทำงานที่ก่อนหน้านี้อยู่นอกขอบเขตความสามารถแบบสแตนด์อโลน
    • LLM สามารถเชื่อมต่อกับระบบภายใน ฐานข้อมูล หรือแม้แต่ค้นหาอินเทอร์เน็ตผ่านเบราว์เซอร์ได้
    • เป็นแพตเทิร์นนามธรรมที่ควรทำความเข้าใจในบริบทของ retrieval-augmented generation และ agent architecture
  • LLM as a judge

    • เราสร้างระบบที่สามารถให้คำตอบโดยอิงจากคำถามต่อชุดข้อมูลขนาดใหญ่ได้ แต่ยากที่จะติดตามว่ามันไปถึงคำตอบนั้นได้อย่างไร
    • ใช้ LLM เพื่อประเมินคำตอบของอีกระบบหนึ่ง ซึ่งอาจเป็นระบบที่อิงกับ LLM เช่นกัน
    • ใช้ในการประเมินความเกี่ยวข้องของผลการค้นหาใน product catalog และทิศทางการแนะนำผู้ใช้ของ chatbot ที่อิงกับ LLM
    • จำเป็นต้องตั้งค่าและปรับเทียบ evaluator system อย่างรอบคอบ
    • อาจนำไปสู่การเพิ่มประสิทธิภาพและลดต้นทุนได้
  • Passkeys

    • นำโดย FIDO Alliance และได้รับการสนับสนุนจาก Apple, Google, Microsoft จนใกล้เข้าสู่การใช้งานกระแสหลัก
    • เมื่อสร้างการตั้งค่าล็อกอินใหม่ จะมีการสร้าง key pair โดยเว็บไซต์ได้รับ public key ส่วนผู้ใช้เก็บ private key ไว้
    • ประมวลผลการล็อกอินด้วย asymmetric cryptography
    • พิสูจน์การครอบครอง private key ซึ่งถูกเก็บไว้บนอุปกรณ์ของผู้ใช้และไม่ถูกส่งไปยังเว็บไซต์
    • การเข้าถึง Passkey ได้รับการปกป้องด้วย biometric หรือ PIN
    • สำหรับผู้ใช้หลายแพลตฟอร์ม สามารถเก็บ Passkey ไว้บนอุปกรณ์อื่นที่ไม่ใช่อุปกรณ์ที่ใช้สร้างคีย์หรือล็อกอินผ่าน CTAP ได้
  • Small language models

    • แม้โมเดลภาษาขนาดใหญ่ (LLM) จะมีประโยชน์ แต่ก็อาจก่อปัญหาจากขนาดของมัน
      • ต้องใช้ทรัพยากรประมวลผลจำนวนมากในการตอบสนองต่อพรอมป์ต์ จึงช้าและมีค่าใช้จ่ายสูง
      • เนื่องจากโมเดลเป็นแบบเฉพาะทางและมีขนาดใหญ่ จึงต้องโฮสต์บนคลาวด์ของบุคคลที่สาม ซึ่งเป็นปัญหาสำหรับข้อมูลอ่อนไหว
      • ในกรณีส่วนใหญ่ การฝึกโมเดลมีค่าใช้จ่ายสูงเกินไป
    • แม้รูปแบบ RAG จะช่วยลดความจำเป็นในการฝึกและ fine-tuning โมเดลพื้นฐานได้ แต่ปัญหาเรื่องต้นทุนและความเป็นส่วนตัวยังคงอยู่
    • ความสนใจต่อโมเดลภาษาขนาดเล็ก (SLM) กำลังเพิ่มขึ้น
      • มีจำนวน weights และระดับความแม่นยำน้อยกว่า (โดยทั่วไปอยู่ที่ 3.5 พันล้านถึง 1 หมื่นล้านพารามิเตอร์)
      • หากตั้งค่าได้ถูกต้องในบริบทที่เหมาะสม ก็อาจให้ประสิทธิภาพเทียบเท่าหรือดีกว่า LLM ได้
      • ด้วยขนาดที่เล็กกว่า จึงสามารถรันบนอุปกรณ์ edge ได้
      • เป็นสาขาที่กำลังพัฒนาอย่างรวดเร็ว เช่น Gemini Nano ของ Google และตระกูล Phi-3 ของ Microsoft
  • Synthetic data for testing and training models

    • รวมถึงการสร้างข้อมูลสังเคราะห์ที่สามารถเลียนแบบสถานการณ์จริงได้โดยไม่ต้องพึ่งพาแหล่งข้อมูลอ่อนไหวหรือแหล่งข้อมูลที่เข้าถึงได้จำกัด
    • ข้อมูลสังเคราะห์สำหรับชุดข้อมูลแบบมีโครงสร้างได้รับการศึกษาอย่างกว้างขวาง
    • มีการนำข้อมูลสังเคราะห์สำหรับข้อมูลแบบไม่มีโครงสร้างกลับมาใช้เพิ่มขึ้น
    • โดยเฉพาะในองค์กรที่เผชิญปัญหาขาดแคลนข้อมูลเฉพาะโดเมนแบบมีป้ายกำกับสำหรับการฝึกหรือ fine-tuning LLM
    • เครื่องมืออย่าง Bonito และ AgentInstruct ของ Microsoft สามารถสร้างข้อมูลคำสั่งสังเคราะห์สำหรับการปรับแต่งได้จากแหล่งข้อมูลดิบ เช่น เอกสารข้อความและไฟล์โค้ด
    • ช่วยเร่งการฝึกโมเดลพร้อมลดต้นทุนและการพึ่งพาการคัดสรรข้อมูลด้วยตนเอง
    • การสร้างข้อมูลสังเคราะห์เพื่อแก้ปัญหาข้อมูลไม่สมดุลหรือมีอยู่น้อยก็เป็นกรณีใช้งานที่สำคัญเช่นกัน
      • พบได้บ่อยในงานอย่างการตรวจจับการฉ้อโกงหรือการแบ่งกลุ่มลูกค้า
    • เทคนิคอย่าง SMOTE ช่วยสร้างอินสแตนซ์ของคลาสส่วนน้อยขึ้นมาเทียมเพื่อปรับสมดุลของชุดข้อมูล
    • ในอุตสาหกรรมอย่างการเงิน มีการใช้ GAN เพื่อจำลองธุรกรรมที่เกิดขึ้นไม่บ่อย ทำให้โมเดลตรวจจับ edge case ได้แข็งแกร่งขึ้นและปรับปรุงประสิทธิภาพโดยรวม
  • Using GenAI to understand legacy codebases

    • Generative AI (GenAI) และโมเดลภาษาขนาดใหญ่ (LLM) ช่วยให้นักพัฒนาทั้งเขียนและทำความเข้าใจโค้ดได้ดีขึ้น
    • มีประโยชน์อย่างยิ่งกับโค้ดเบสแบบ legacy ที่เอกสารประกอบไม่ดี ล้าสมัย หรือทำให้เข้าใจผิด
    • เทคนิคและผลิตภัณฑ์สำหรับใช้ GenAI เพื่อทำความเข้าใจโค้ดเบสแบบ legacy กำลังก้าวหน้ามากขึ้น
    • โดยเฉพาะอย่างยิ่ง มีการใช้อย่างประสบความสำเร็จในการสนับสนุนงาน reverse engineering เพื่อทำ modernize ระบบเมนเฟรม
    • แนวทาง retrieval-augmented generation (RAG) ที่ทำ retrieval ข้อมูลจาก knowledge graph ของโค้ดเบสมีแนวโน้มที่ดี
    • knowledge graph สามารถเก็บรักษาข้อมูลเชิงโครงสร้างเกี่ยวกับโค้ดเบสได้มากกว่าสิ่งที่ LLM อนุมานจากข้อความของโค้ดเพียงอย่างเดียว
    • มีประโยชน์เป็นพิเศษกับโค้ดเบสแบบ legacy ที่ขาดความอธิบายตัวเองและมีความเชื่อมโยงภายในต่ำ
    • ยังมีโอกาสที่จะเสริมกราฟเพิ่มเติมด้วยเอกสารที่มีอยู่เดิมและเอกสารที่ AI สร้างขึ้น การพึ่งพาภายนอก และความรู้เชิงโดเมนทางธุรกิจ เพื่อช่วยให้งานของ AI ง่ายขึ้น

Assess

  • AI team assistants

    • เครื่องมือช่วยเขียนโค้ดด้วย AI มักถูกพูดถึงในบริบทของการสนับสนุนและเพิ่มประสิทธิภาพการทำงานของผู้มีส่วนร่วมรายบุคคลเป็นหลัก
    • แต่การส่งมอบซอฟต์แวร์เป็นงานแบบทีมมาโดยตลอดและจะยังคงเป็นเช่นนั้น ดังนั้นจึงควรหาวิธีสร้าง AI team assistant ที่ช่วยสร้างทีมแบบ 10x แทนที่จะมุ่งหา 10x engineer
    • พัฒนาการล่าสุดของตลาดเครื่องมือทำให้เราเข้าใกล้ความเป็นจริงนี้มากขึ้นอีกขั้น
      • Unblocked เป็นแพลตฟอร์มที่รวมแหล่งความรู้ทั้งหมดของทีมและผสานเข้ากับเครื่องมือของสมาชิกทีมอย่างชาญฉลาด
      • Rovo ของ Atlassian นำ AI เข้าสู่แพลตฟอร์มการทำงานร่วมกันของทีมที่ใช้งานอย่างแพร่หลายที่สุด พร้อมมอบรูปแบบใหม่ของการค้นหาและการเข้าถึงเอกสาร
    • เรากำลังสำรวจศักยภาพของ AI สำหรับการขยายความรู้และการสนับสนุนแนวปฏิบัติของทีมด้วยตัวเอง
      • เปิดซอร์ส Haiven team assistant และเริ่มเรียนรู้จากการใช้ AI ช่วยงานที่ไม่ใช่การเขียนโค้ด เช่น การวิเคราะห์ความต้องการ
  • Dynamic few-shot prompting

    • อาศัย few-shot prompting โดยใส่ตัวอย่างเฉพาะลงในพรอมป์ต์แบบไดนามิกเพื่อชี้นำการตอบของโมเดล
    • ปรับจำนวนและความเกี่ยวข้องของตัวอย่างเหล่านี้เพื่อเพิ่มประสิทธิภาพความยาวของบริบทและความเกี่ยวข้อง ช่วยปรับปรุงทั้งประสิทธิภาพและผลลัพธ์ของโมเดล
    • ไลบรารีอย่าง scikit-llm นำเทคนิคนี้ไปใช้โดยอาศัยการค้นหา nearest neighbors เพื่อดึงตัวอย่างที่เกี่ยวข้องที่สุดซึ่งตรงกับคำค้นของผู้ใช้
    • ช่วยใช้ประโยชน์จากหน้าต่างบริบทที่จำกัดของโมเดลได้ดีขึ้นและลดการใช้โทเค็น
    • เครื่องมือสร้าง SQL แบบโอเพนซอร์ส vanna ใช้ dynamic few-shot prompting เพื่อเพิ่มความแม่นยำของคำตอบ
  • GraphQL for data products

    • การใช้ GraphQL เป็น output port ของ data product เพื่อให้ไคลเอนต์นำผลิตภัณฑ์ไปใช้งาน
    • ใช้ GraphQL สร้างชั้น Unified API ที่ช่วยซ่อนความซับซ้อนของข้อมูลพื้นฐานและมอบอินเทอร์เฟซที่สม่ำเสมอและจัดการได้ง่ายกว่าให้กับไคลเอนต์
    • เมื่อใช้ GraphQL กับ data product ผู้ใช้งานสามารถค้นพบรูปแบบข้อมูลและความสัมพันธ์ต่าง ๆ ผ่าน GraphQL schema ได้อย่างราบรื่น และใช้เครื่องมือไคลเอนต์ที่คุ้นเคยได้
    • ทีมของเรากำลังสำรวจเทคนิคนี้ในกรณีใช้งานเฉพาะสำหรับการสำรวจและค้นพบข้อมูลเชิงลึกจาก big data ด้วยความช่วยเหลือของ LLM
      • LLM สร้าง GraphQL query จากพรอมป์ต์ของผู้ใช้และ GraphQL schema ที่ให้อ้างอิง
  • LLM-powered autonomous agents

    • ด้วยการมาของเฟรมเวิร์กอย่าง Autogen และ CrewAI เทคโนโลยีนี้กำลังก้าวไปไกลกว่าระบบเอเจนต์เดี่ยวและระบบหลายเอเจนต์แบบคงที่
    • เป็นเทคนิคที่แยกกิจกรรมซับซ้อนออกเป็นงานย่อยหลายงาน แล้วมอบบทบาทเฉพาะให้แต่ละเอเจนต์ดำเนินการ
    • นักพัฒนาสามารถใช้เครื่องมือที่ตั้งค่าไว้ล่วงหน้าสำหรับการทำงาน และเอเจนต์สามารถสนทนากันเองพร้อมประสานลำดับการทำงานได้
    • เทคโนโลยียังอยู่ในช่วงพัฒนาเริ่มต้น โดยทีมของเราพบปัญหาอย่างเอเจนต์ติดอยู่ในลูปต่อเนื่องหรือเกิดพฤติกรรมที่ควบคุมไม่ได้
    • ไลบรารีอย่าง LangGraph มอบการควบคุมปฏิสัมพันธ์ของเอเจนต์ได้มากขึ้นด้วยความสามารถในการกำหนดโฟลว์เป็นกราฟ
    • แนะนำให้ใช้กลไก fail-safe เช่น การตั้ง timeout และการกำกับดูแลโดยมนุษย์เมื่อใช้งานเทคโนโลยีนี้
  • Observability 2.0

    • การเปลี่ยนผ่านจากเครื่องมือติดตามแบบดั้งเดิมที่แยกส่วนและหลากหลาย ไปสู่แนวทางแบบรวมศูนย์ที่ใช้ข้อมูลเหตุการณ์เชิงโครงสร้างและมี cardinality สูงในแหล่งเก็บข้อมูลเดียว
    • เก็บเหตุการณ์ดิบที่มีรายละเอียดสูงพร้อม metadata ที่สมบูรณ์ เพื่อเป็นแหล่งข้อมูลจริงหนึ่งเดียวสำหรับการวิเคราะห์แบบครอบคลุม
    • การเก็บเหตุการณ์ในรูปแบบดิบช่วยให้การหาความสัมพันธ์ทำได้ง่ายขึ้น รองรับทั้งการวิเคราะห์แบบเรียลไทม์และการวิเคราะห์เชิงนิติวิทยาศาสตร์ และเปิดทางสู่ความเข้าใจที่ลึกขึ้นต่อระบบที่ซับซ้อนและกระจายตัว
    • มอบความสามารถด้านการมอนิเตอร์ความละเอียดสูงและการตรวจสอบแบบไดนามิก
    • ให้ความสำคัญกับการเก็บข้อมูลที่มี cardinality สูงและข้อมูลหลายมิติเพื่อการตรวจสอบเชิงลึก โดยไม่ให้เกิดคอขวดด้านประสิทธิภาพ
    • แหล่งเก็บข้อมูลแบบรวมศูนย์ช่วยลดความซับซ้อน มอบมุมมองที่สอดคล้องกันต่อพฤติกรรมของระบบ และทำให้แนวปฏิบัติด้าน observability สอดคล้องกับวงจรการพัฒนาซอฟต์แวร์มากยิ่งขึ้น
  • On-device LLM inference

    • ปัจจุบันสามารถรันโมเดลภาษาขนาดใหญ่ (LLM) ได้แล้วบนเว็บเบราว์เซอร์และอุปกรณ์ edge เช่น สมาร์ตโฟนและโน้ตบุ๊ก
    • ช่วยประมวลผลข้อมูลอ่อนไหวได้อย่างปลอดภัยโดยไม่ต้องส่งขึ้นคลาวด์ มอบ latency ต่ำมากสำหรับงานอย่าง edge computing และการประมวลผลภาพ/วิดีโอแบบเรียลไทม์ ลดต้นทุนด้วยการประมวลผลในเครื่อง และยังคงใช้งานได้แม้การเชื่อมต่ออินเทอร์เน็ตไม่เสถียรหรือไม่มีเลย
    • เป็นสาขาที่มีงานวิจัยและพัฒนาอย่างคึกคัก โดยก่อนหน้านี้ได้เน้นย้ำถึง MLX ซึ่งเป็นเฟรมเวิร์กโอเพนซอร์สสำหรับการทำ machine learning อย่างมีประสิทธิภาพบน Apple silicon
    • ขณะนี้มีเครื่องมือใหม่อย่าง Transformers.js และ Chatty ปรากฏขึ้น
      • Transformers.js ใช้ ONNX Runtime เพื่อรัน transformer ในเบราว์เซอร์ได้ (รองรับโมเดลที่แปลงมาจาก PyTorch, TensorFlow และ JAX)
      • Chatty ใช้ WebGPU เพื่อรัน LLM ในเบราว์เซอร์แบบเนทีฟและเป็นส่วนตัว มอบประสบการณ์ AI ที่มีความสามารถหลากหลาย
  • Structured output from LLMs

    • หมายถึงแนวทางการจำกัดการตอบกลับของโมเดลภาษาให้อยู่ในสคีมาที่กำหนดไว้
    • ทำได้โดยสั่งให้โมเดลทั่วไปตอบกลับในรูปแบบเฉพาะ หรือปรับจูนโมเดลเพื่อให้มีเอาต์พุต "พื้นฐาน" เช่น JSON
    • ตอนนี้ OpenAI รองรับ structured output แล้ว ทำให้นักพัฒนาสามารถกำหนดการตอบกลับของโมเดลด้วย JSON schema, pydantic หรือออบเจ็กต์ Zod ได้
    • มีประโยชน์อย่างยิ่งเมื่อความถูกต้องและการทำตามรูปแบบเป็นสิ่งสำคัญ เช่น การเรียกฟังก์ชัน การโต้ตอบกับ API และการผสานระบบภายนอก
    • รองรับกรณีการใช้งานได้กว้างขวาง ไม่เพียงแต่ช่วยปรับปรุงวิธีเชื่อมต่อกับโค้ด แต่ยังรวมถึงการสร้างมาร์กอัปสำหรับการเรนเดอร์กราฟด้วย
    • ยังช่วยลดโอกาสเกิดอาการหลอนในเอาต์พุตของโมเดลได้ด้วย

Hold

  • ความชะล่าใจกับโค้ดที่สร้างโดย AI

    • AI coding assistant อย่าง GitHub Copilot และ Tabnine ได้รับความนิยมอย่างมาก
    • จากแบบสำรวจนักพัฒนาปี 2024 ของ StackOverflow พบว่า "72% ของผู้ตอบแบบสอบถามทั้งหมดมีทัศนคติเชิงบวกหรือเชิงบวกมากต่อเครื่องมือ AI สำหรับการพัฒนา"
    • เราเองก็ยอมรับถึงข้อดีของมัน แต่ยังคงระมัดระวังต่อผลกระทบระยะกลางถึงระยะยาวต่อคุณภาพของโค้ด และขอเตือนนักพัฒนาไม่ให้ชะล่าใจกับโค้ดที่ AI สร้างขึ้น
    • หลังจากมีประสบการณ์เชิงบวกไม่กี่ครั้ง ก็เป็นเรื่องง่ายที่จะลดความระมัดระวังลงเมื่อทบทวนข้อเสนอจาก AI
    • งานวิจัยของ GitClear ชี้ให้เห็นแนวโน้มของ codebase ที่เติบโตเร็วขึ้น ซึ่งคาดว่าสอดคล้องกับ pull request ที่มีขนาดใหญ่ขึ้น
    • งานวิจัยนี้ของ GitHub ตั้งคำถามว่าอัตราการรวม pull request ที่เพิ่มขึ้น 15% ตามที่กล่าวถึงนั้นเป็นเรื่องดีจริงหรือไม่ หรือเป็นเพราะผู้คนเชื่อผลลัพธ์จาก AI มากเกินไปจนรวม pull request ที่ใหญ่ขึ้นได้เร็วเกินไป
    • เรายังคงใช้คำแนะนำพื้นฐานสำหรับ "การเริ่มต้น" ที่ให้ไว้เมื่อ 1 ปีก่อน และควรระวัง automation bias, sunk cost fallacy, fixation และ review fatigue
    • นอกจากนี้ยังควรพัฒนากรอบความคิดที่ดีว่าจุดไหนและเมื่อใดที่โปรแกรมเมอร์ควรใช้ AI และไม่ควรเชื่อมัน
  • สภาพแวดล้อมทดสอบการรวมระบบระดับทั้งองค์กร

    • เป็นแนวปฏิบัติที่พบได้ทั่วไปและสิ้นเปลือง ซึ่งทำให้ทุกอย่างช้าลง
    • มักกลายเป็นทรัพยากรล้ำค่าที่ทำซ้ำได้ยากและกลายเป็นคอขวดของการพัฒนา
    • ให้ความรู้สึกปลอดภัยแบบหลอก ๆ เนื่องจากความไม่สอดคล้องของข้อมูลระหว่างสภาพแวดล้อมที่หลีกเลี่ยงไม่ได้และภาระในการตั้งค่า
    • เหตุผลคัดค้านทางเลือกอื่นทั่วไป (เช่น สภาพแวดล้อมชั่วคราวหรือสภาพแวดล้อมทดสอบ on-premises หลายชุด) กลับเป็นเรื่องต้นทุนอย่างน่าขัน
    • แต่กลับไม่ได้คำนึงถึงต้นทุนจากความล่าช้าที่เกิดจากสภาพแวดล้อมทดสอบการรวมระบบระดับทั้งองค์กร
      • ซึ่งเกิดขึ้นขณะที่ทีมพัฒนาต้องรอให้ทีมอื่นทำงานเสร็จ หรือรอให้มีการติดตั้งระบบที่พึ่งพาเวอร์ชันใหม่
    • ทางที่ดีกว่า ทีมควรใช้สภาพแวดล้อมชั่วคราว และใช้ fake stub แทนของจำลองจริง เพื่อให้ชุดการทดสอบที่ทีมพัฒนาเป็นเจ้าของสามารถเริ่มต้นและยกเลิกได้ในต้นทุนต่ำ
    • เทคโนโลยีอื่นที่สนับสนุนทางเลือกนี้ ได้แก่ contract testing, การแยก deployment ออกจาก release, การมุ่งเน้นที่ mean time to recovery และการทดสอบบนโปรดักชัน
  • การแบน LLM

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

    • เมื่อพูดถึง coding assistant ประเด็นเรื่อง pair programming มักถูกหยิบยกขึ้นมาอย่างหลีกเลี่ยงไม่ได้
    • วิชาชีพของเรามีความสัมพันธ์แบบทั้งรักทั้งเกลียดกับ pair programming
      • บางคนเชื่อมั่นมาก ขณะที่บางคนทนไม่ได้เลย
    • ตอนนี้ coding assistant ทำให้เกิดคำถามว่า มนุษย์จะสามารถจับคู่กับ AI แทนมนุษย์อีกคน และยังได้ผลลัพธ์แบบเดียวกันสำหรับทีมได้หรือไม่
    • GitHub Copilot ถึงกับเรียกตัวเองว่า "AI pair programmer ของคุณ"
    • แม้เราจะคิดว่า coding assistant สามารถมอบประโยชน์บางส่วนของ pair programming ได้ แต่เราไม่แนะนำให้ใช้ AI แทน pair programming อย่างสมบูรณ์
    • หากมอง coding assistant เป็น pair programmer ก็อาจทำให้มองข้ามข้อดีหลักอย่างหนึ่งของการทำงานแบบจับคู่ นั่นคือการยกระดับทีมให้ดีขึ้น ไม่ใช่แค่ตัวผู้มีส่วนร่วมรายบุคคล
    • coding assistant อาจช่วยแก้จุดที่ติดขัด เรียนรู้เทคโนโลยีใหม่ ช่วย onboarding หรือทำงานเชิงแท็กติกได้เร็วขึ้น เพื่อให้โฟกัสกับการออกแบบเชิงกลยุทธ์มากขึ้น
    • แต่ไม่ได้ช่วยในด้านประโยชน์ของการทำงานร่วมกันในทีม เช่น การจำกัดงานที่กำลังทำอยู่ให้ต่ำ ลดการส่งต่องานและการต้องเรียนรู้ใหม่ ทำให้เกิด continuous integration ได้ และปรับปรุง collective code ownership

[Platforms]

Adopt : ไม่มี

Trial

  • Databricks Unity Catalog

    • เป็นโซลูชันด้าน data governance สำหรับสินทรัพย์อย่างไฟล์ ตาราง และโมเดล ML ใน Lakehouse
    • เป็นโซลูชันโอเพนซอร์สแบบมีการจัดการ ที่ใช้จัดการและคิวรีข้อมูลทั้งใน external storage หรือข้อมูลภายใต้การดูแลของ Databricks ได้
    • ข้อดีคือรองรับทั้ง governance, การจัดการ metastore และการค้นหาข้อมูลแบบรวมศูนย์ จึงช่วยลดความจำเป็นในการต้องดูแลหลายเครื่องมือ
    • ข้อเสียที่พบคือ Databricks managed Unity Catalog ไม่มีระบบกู้คืนจากภัยพิบัติแบบอัตโนมัติ
      • ทีมต้องตั้งค่าความสามารถด้านการสำรองและกู้คืนด้วยตนเอง
    • แม้เป็นโซลูชันแบบรวมศูนย์ แต่ก็สามารถมอบหมายสิทธิ์ให้แต่ละทีมจัดการสินทรัพย์ของตนเองได้
  • FastChat

    • เป็นแพลตฟอร์มแบบเปิดสำหรับการฝึก เสิร์ฟ และประเมินผล large language model
    • สามารถโฮสต์หลายโมเดล (Llama 3.1, Mistral 7B, Llama-SQL เป็นต้น) ในรูปแบบ OpenAI API ได้อย่างสม่ำเสมอ
    • ใช้สถาปัตยกรรม controller-worker เพื่อโฮสต์โมเดลหลากหลายบน worker หลายตัว
    • รองรับ worker หลายประเภท เช่น vLLM, LiteLLM และ MLX
    • สามารถสร้างและขยาย FastChat model worker คนละประเภทตามลักษณะการใช้งานได้
      • ข้อเสนอแนะโค้ดใน IDE ของนักพัฒนาต้องการ latency ต่ำ จึงขยายเป็นหลาย worker
      • ส่วน Text-to-SQL มีความต้องการต่ำ จึงไม่จำเป็นต้องมีหลาย worker
    • สามารถนำไปใช้กับ A/B testing ได้
      • โดยตั้งค่าพารามิเตอร์ไฮเปอร์ของโมเดลเดียวกันต่างกันเพื่อระบุค่าที่เหมาะสมที่สุด
      • และตรวจสอบการย้ายโมเดลแบบไร้การหยุดชะงักเมื่อสลับโมเดลในบริการจริงได้
  • GCP Vertex AI Agent Builder

    • เป็นแพลตฟอร์มที่ยืดหยุ่นสำหรับสร้าง AI agent ได้ทั้งด้วยภาษาธรรมชาติหรือแนวทาง code-first
    • ผสานกับข้อมูลองค์กรได้อย่างราบรื่นผ่าน third-party connector
    • มีเครื่องมือครบถ้วนที่จำเป็นต่อการสร้าง ทำต้นแบบ และปรับใช้ AI agent
    • ช่วยให้นักพัฒนาสามารถทำต้นแบบ agent ได้อย่างรวดเร็วด้วยการตั้งค่าน้อยที่สุด และจัดการงานข้อมูลที่ซับซ้อนได้
    • เหมาะสำหรับสร้างฐานความรู้หรือระบบสนับสนุนอัตโนมัติที่จัดการข้อมูลแบบ structured/unstructured ได้อย่างมีประสิทธิภาพ
  • Langfuse

    • เป็นเครื่องมือสำหรับการสังเกตการณ์ การมอนิเตอร์ และการประเมินผลแอปพลิเคชันที่ใช้ LLM
    • สามารถวิเคราะห์ประสิทธิภาพและความแม่นยำของการตอบกลับได้ผ่านความสามารถด้าน tracing, analytics และ evaluation
    • ช่วยให้ปรับปรุงโดยอิงข้อมูลได้ ด้วยการจัดการต้นทุนและ latency และทำความเข้าใจรูปแบบการใช้งานในโปรดักชัน
    • ใช้ข้อมูล instrumentation ที่ให้การติดตามได้ครบถ้วนทั้ง flow แบบ request-response และขั้นตอนระหว่างทาง
    • สามารถใช้ร่วมกับ RAG และ autonomous agent ที่อิง LLM ได้
    • สามารถวิเคราะห์ trace ของบทสนทนาที่ได้คะแนนต่ำเพื่อระบุจุดที่สถาปัตยกรรมต้องการการปรับปรุง
  • Qdrant

    • เป็นโอเพนซอร์ส vector similarity search engine และฐานข้อมูลที่เขียนด้วย Rust
    • รองรับโมเดล embedding แบบ dense ทั้งข้อความและมัลติโหมดได้หลากหลาย
    • สามารถนำ embedding โอเพนซอร์สอย่าง MiniLM-v6 และ BGE ไปใช้กับฐานความรู้ของหลายผลิตภัณฑ์ได้
    • ถูกใช้เป็น enterprise vector store ที่รองรับ multi-tenancy
    • จัดเก็บ vector embedding เป็น collection แยกต่างหากเพื่อแยกฐานความรู้ของแต่ละผลิตภัณฑ์
    • นโยบายการเข้าถึงของผู้ใช้จะถูกจัดการในชั้นแอปพลิเคชัน
  • Vespa

    • เป็นเสิร์ชเอนจินโอเพนซอร์สและแพลตฟอร์มประมวลผลบิ๊กดาต้า
    • เหมาะสำหรับแอปพลิเคชันที่ต้องการ latency ต่ำและ throughput สูง
    • สามารถทำไฮบริดเสิร์ชโดยใช้เทคนิคการค้นหาหลายแบบร่วมกันได้
    • รองรับการกรองและการจัดเรียงเมทาดาทาหลากหลายประเภทได้อย่างมีประสิทธิภาพ
    • สามารถทำการจัดอันดับหลายขั้นได้
    • สามารถทำดัชนีเวกเตอร์หลายตัวต่อเอกสารโดยไม่เกิดความซ้ำซ้อน
    • สามารถค้นหาข้อมูลจากหลายฟิลด์ที่ทำดัชนีไว้ได้พร้อมกัน

Assess

  • Azure AI Search

    • เป็นบริการค้นหาบนคลาวด์สำหรับประมวลผลข้อมูลแบบมีโครงสร้างและไม่มีโครงสร้างสำหรับแอปพลิเคชันอย่างเช่นระบบฐานความรู้
    • รองรับการค้นหาหลายประเภท เช่น keyword, vector และ hybrid search
    • สามารถรวบรวมรูปแบบข้อมูลไม่มีโครงสร้างที่พบบ่อย เช่น PDF, DOC, PPT โดยอัตโนมัติ และสร้างคอนเทนต์ที่ค้นหาได้
    • ผสานการทำงานกับบริการ Azure อื่น ๆ เช่น Azure OpenAI ทำให้สร้างแอปพลิเคชันได้โดยต้องผสานระบบด้วยตนเองเพียงเล็กน้อย
    • เหมาะกับโปรเจกต์ที่โฮสต์อยู่ในสภาพแวดล้อม Azure และให้ประสิทธิภาพที่เสถียร
    • สามารถกำหนดขั้นตอนประมวลผลข้อมูลเฉพาะทางผ่าน custom skill ได้
  • Databricks Delta Live Tables

    • เป็นเฟรมเวิร์กเชิงประกาศสำหรับสร้าง data processing pipeline ที่เชื่อถือได้ ดูแลรักษาง่าย และทดสอบได้
    • กำหนด data transformation ด้วยแนวทางเชิงประกาศ และจัดการโครงสร้างพื้นฐานกับ data flow ที่อยู่เบื้องหลังโดยอัตโนมัติ
    • มีความสามารถด้านการมอนิเตอร์ที่แข็งแกร่ง และแสดง DAG ของ data pipeline ทั้งหมดในรูปแบบภาพ
    • มีประโยชน์ต่อการติดตาม data lineage และ dependency
    • เนื่องจากผสานรวมกับระบบนิเวศ Databricks อย่างลึกซึ้ง จึงอาจมีข้อจำกัดด้านการปรับแต่งอินเทอร์เฟซ
  • Elastisys Compliant Kubernetes

    • เป็น Kubernetes distribution เฉพาะทางสำหรับอุตสาหกรรมที่มีข้อกำกับเข้มงวด เช่น สาธารณสุข การเงิน และภาครัฐ
    • มีการจัดเตรียมกระบวนการรักษาความปลอดภัยแบบอัตโนมัติ
    • รองรับทั้งมัลติคลาวด์และออนพรেমิส
    • สร้างขึ้นบนสถาปัตยกรรมความปลอดภัยแบบ Zero Trust
    • มีการรองรับการปฏิบัติตามกฎหมายอย่าง GDPR, HIPAA และมาตรฐานควบคุมอย่าง ISO27001 มาในตัว
  • FoundationDB

    • เป็นฐานข้อมูลมัลติโมเดลที่ Apple เข้าซื้อในปี 2015 และโอเพนซอร์สในปี 2018
    • แกนหลักคือ distributed key-value store ที่ให้ธุรกรรมแบบ strict serializable
    • มีการปรับปรุงสำคัญ เช่น การกระจายข้อมูลแบบอัจฉริยะเพื่อหลีกเลี่ยง write hotspot และ storage engine แบบใหม่
    • ด้วยสถาปัตยกรรมแบบ unbundled ทำให้สามารถสเกลส่วนต่าง ๆ ของคลัสเตอร์ได้อย่างอิสระ
    • แม้จะมีความสามารถครอบคลุมอย่างกว้างขวาง แต่ก็ยังดูแลคลัสเตอร์ขนาดใหญ่ได้ไม่ยาก
  • Golem

    • เป็นแพลตฟอร์ม distributed computing ที่ใช้สถาปัตยกรรม explicit state machine สำหรับ durable computing
    • เหมาะกับเวิร์กโฟลว์ของ microservice saga ที่รันระยะยาว หรือการ orchestration AI agent
    • สามารถเขียน WebAssembly component ได้ด้วยทุกภาษาที่รองรับ
    • มีความเป็น deterministic และรองรับเวลาเริ่มต้นที่รวดเร็ว
  • Iggy

    • เป็นแพลตฟอร์ม persistent message streaming ที่เขียนด้วย Rust
    • รองรับหลาย stream, topic และ partition
    • มีความสามารถอย่าง at-most-once delivery, message expiration และรองรับ TLS สำหรับโปรโตคอล QUIC/TCP/HTTP
    • สามารถทำ throughput การอ่าน/เขียนได้สูงด้วยเซิร์ฟเวอร์เพียงเครื่องเดียว
    • มีแผนรองรับ clustering และ io_uring จึงอาจเป็นทางเลือกแทน Kafka ได้
  • Iroh

    • เป็นระบบจัดเก็บไฟล์แบบกระจายศูนย์และระบบส่งคอนเทนต์ที่พัฒนาต่อยอดจาก IPFS
    • ไม่มีข้อจำกัดเรื่องขนาดบล็อกสูงสุด และมีกลไกซิงก์ข้อมูลผ่าน range-based set reconciliation
    • มี browser support ผ่าน WASM อยู่ในโรดแมป
    • สามารถใช้บริการคลาวด์ได้ผ่าน iroh.network
    • มี SDK สำหรับหลายภาษา และใช้งานง่ายกว่า IPFS
  • Large vision model (LVM) platforms

    • เป็นแพลตฟอร์มโมเดลวิชันขนาดใหญ่ที่สามารถทำ segmentation, synthesis, reconstruction และ analysis ของสตรีมวิดีโอและภาพได้
    • สามารถใช้งานร่วมกับ diffusion model หรือ CNN มาตรฐานได้
    • ยังมีความท้าทายเกี่ยวกับการนำไปใช้ในสภาพแวดล้อม production
      • เช่น การเก็บรวบรวมข้อมูลสำหรับฝึก, object segmentation และ labeling, การ fine-tune โมเดล เป็นต้น
    • เครื่องมืออย่าง V7, Nvidia Deepstream SDK และ Roboflow เกิดขึ้นมาเพื่อช่วยแก้โจทย์เหล่านี้
    • Deepstream และ Roboflow มีทั้ง GUI และ API สำหรับจัดการสตรีมวิดีโอแบบรวมศูนย์
  • OpenBCI Galea

    • เป็นแพลตฟอร์มเทคโนโลยีแบบไม่รุกล้ำสำหรับ brain-computer interface (BCI)
    • ใช้สัญญาณ electrophysiological เช่น EEG เพื่อเป็นทางเลือกที่มีความเสี่ยงต่ำกว่าการฝังอุปกรณ์ในสมอง
    • เป็นผลิตภัณฑ์ล่าสุดของ OpenBCI ที่รวมความสามารถของ VR headset เข้ากับ BCI
    • ให้สตรีมข้อมูลทางสรีรวิทยาที่ซิงก์ตามเวลา รวมถึงเซ็นเซอร์ตำแหน่งเชิงพื้นที่และการติดตามสายตา
    • สามารถใช้ข้อมูลจากเซ็นเซอร์ใน Unity หรือ Unreal ได้
    • ให้บริการเป็นแพลตฟอร์มโอเพนซอร์สเพื่อสนับสนุนนวัตกรรมของนักวิจัย
  • PGLite

    • เป็น WASM build ของฐานข้อมูล PostgreSQL
    • สามารถรันได้โดยตรงในเว็บเบราว์เซอร์โดยไม่ต้องใช้ Linux virtual machine
    • สามารถสร้างฐานข้อมูลชั่วคราวในหน่วยความจำ หรือทำ persistence ลงดิสก์ผ่าน indexedDB ได้
    • สามารถใช้ร่วมกับ Electric เพื่อสร้างแอปพลิเคชันแบบ reactive local-first ที่อิงบน PostgreSQL ได้
  • SpinKube

    • เป็นโอเพนซอร์ส serverless runtime สำหรับ WebAssembly บน Kubernetes
    • ด้วยเวลาเริ่มต้นระดับมิลลิวินาทีของ WebAssembly จึงให้โซลูชัน serverless สำหรับ on-demand workload ที่มีความไดนามิกและยืดหยุ่นมากขึ้น
    • ช่วยลดความซับซ้อนในการพัฒนาและดีพลอย workload ที่อิง WebAssembly
  • Unblocked

    • เป็นเครื่องมือค้นหา asset และ artifact ของ SDLC
    • ผสานกับเครื่องมือ ALM และเครื่องมือทำงานร่วมกันเพื่อช่วยให้เข้าใจ codebase และทรัพยากรที่เกี่ยวข้อง
    • ให้คอนเท็กซ์ที่เกี่ยวข้องและพร้อมใช้งานทันทีเกี่ยวกับโค้ด ทำให้ง่ายต่อการสำรวจและทำความเข้าใจระบบที่ซับซ้อน
    • ช่วยให้ทีมวิศวกรรมเข้าถึงการสนทนาที่เกี่ยวข้องกับงาน, asset และเอกสารได้อย่างปลอดภัย
    • เก็บและแบ่งปันความรู้ของสมาชิกทีมที่มีประสบการณ์ เพื่อให้ทุกคนในทีมสามารถนำไปใช้ได้

Hold : ไม่มี

[Tools]

Adopt

  • Bruno

    • Bruno เป็นทางเลือกโอเพนซอร์สบนเดสก์ท็อปแทน Postman และ Insomnia สำหรับการทดสอบ พัฒนา และดีบัก API
    • มุ่งเน้นการออกแบบแบบเรียบง่ายที่ทำงานออฟไลน์เท่านั้น เพื่อมอบการทำงานร่วมกัน ความเป็นส่วนตัว และความปลอดภัยที่ดี
    • คอลเลกชันถูกเขียนด้วย Bru Lang ซึ่งเป็นภาษามาร์กอัปข้อความธรรมดาแบบกำหนดเอง และบันทึกลงไฟล์ซิสเต็มโดยตรง จึงสามารถแชร์ผ่าน Git หรือเครื่องมือควบคุมเวอร์ชันที่เลือกเพื่อทำงานร่วมกันได้
    • ใช้งานได้ทั้งในรูปแบบแอปเดสก์ท็อปและเครื่องมือ CLI มีส่วนขยาย VS Code อย่างเป็นทางการ และมีแผนรองรับ IDE เพิ่มเติม
    • กลายเป็นตัวเลือกหลักของหลายทีมใน Thoughtworks แล้ว แต่ควรระวังเพราะมีรายงานว่าคำขอบางรายการล้มเหลวโดยไม่คาดคิดเมื่อทำงานในสภาพแวดล้อม VPN และพร็อกซี
  • K9s

    • K9s ได้ปรับปรุงความสามารถด้านการแสดงผลด้วยการผสานกราฟและมุมมองที่ละเอียดมากขึ้น
    • ตอนนี้สามารถแสดง logs และ metrics ได้ดีขึ้น และแสดง custom resource (CRD) ได้อย่างยืดหยุ่นมากขึ้น
    • การทำงานกับ pod ถูกขยายเพิ่มขึ้น การผสานกับเครื่องมือดีบัก (เช่น kubectl debug) แข็งแรงขึ้น และการรองรับสภาพแวดล้อมแบบ multi-cluster ดีขึ้น
    • การรองรับ CRD ได้รับการปรับปรุงอย่างมาก ทำให้ตอนนี้สามารถสำรวจและจัดการ resource เหล่านี้ได้ดีขึ้น และโต้ตอบกับ custom resource ได้ลื่นไหลกว่าเดิม
    • แผงคีย์ลัดก็ได้รับการปรับปรุง ทำให้นักพัฒนาที่ไม่คุ้นเคยกับ kubectl เข้าถึงได้ง่ายขึ้น
    • เนื่องจากในช่วงแรก K9s มุ่งเน้นไปที่ทีม DevOps เป็นหลัก นี่จึงเป็นการปรับปรุงที่สำคัญ
  • SOPS

    • SOPS เป็นตัวแก้ไขไฟล์ที่เข้ารหัส ซึ่งรองรับไฟล์ได้หลายรูปแบบและเข้ารหัสด้วย KMS
    • ในการจัดการความลับ คำแนะนำของเรามาโดยตลอดคือให้แยกออกจากซอร์สโค้ดเสมอ
    • อย่างไรก็ตาม ในแนวคิดของโค้ดโครงสร้างพื้นฐาน เมื่อต้องเลือกระหว่างระบบอัตโนมัติเต็มรูปแบบกับการจัดการ ตั้งต้น และหมุนเวียนซีดซีเคร็ตผ่านขั้นตอนแบบแมนนวลบางส่วน เช่น การใช้เครื่องมืออย่าง Vault ทีมมักต้องเผชิญกับทางประนีประนอม
    • ตัวอย่างเช่น ทีมของเราใช้ SOPS เพื่อจัดการข้อมูลรับรองตั้งต้นสำหรับการบูตสแตรปโครงสร้างพื้นฐาน
    • แต่ในบางสถานการณ์ ก็ไม่สามารถลบความลับออกจากที่เก็บโค้ดแบบเลกาซีได้
    • ในกรณีเหล่านี้ เราใช้ SOPS เพื่อเข้ารหัสความลับในไฟล์ข้อความ
    • SOPS ผสานรวมกับที่เก็บกุญแจแบบคลาวด์ที่มีการจัดการ เช่น AWS และ GCP Key Management Service (KMS) หรือ Azure Key Vault เพื่อใช้เป็นแหล่งของคีย์เข้ารหัส
    • นอกจากนี้ยังทำงานได้ข้ามแพลตฟอร์มและรองรับคีย์ PGP
    • เมื่อจำเป็นต้องจัดการความลับในที่เก็บโค้ด หลายทีมของเราเลือกใช้ SOPS เป็นค่าเริ่มต้น
  • Visual regression testing tools

    • ก่อนหน้านี้เราเคยเน้นย้ำเครื่องมือทดสอบ visual regression และได้เห็นอัลกอริทึมพัฒนาจากการเปรียบเทียบระดับพิกเซลดิบไปสู่การจับคู่แพตเทิร์นที่ซับซ้อนและการรู้จำอักขระด้วยแสง (OCR)
    • เครื่องมือ visual regression testing รุ่นแรก ๆ สร้าง false positive จำนวนมาก และมีประโยชน์เฉพาะในช่วงปลายของการพัฒนาเมื่ออินเทอร์เฟซนิ่งแล้วเท่านั้น
    • BackstopJS หลีกเลี่ยงปัญหานี้ด้วยการกำหนดค่า selector และ viewport เพื่อทำการทดสอบเชิงภาพกับองค์ประกอบเฉพาะของหน้าได้อย่างแม่นยำ
    • อย่างไรก็ตาม machine learning ทำให้ตรวจจับและเปรียบเทียบองค์ประกอบภาพได้แม่นยำยิ่งขึ้น แม้องค์ประกอบจะเคลื่อนที่หรือมีเนื้อหาแบบไดนามิก
    • เครื่องมือเหล่านี้มีประโยชน์มากขึ้นเรื่อย ๆ และอยู่ในตำแหน่งที่ดีต่อการใช้ประโยชน์จากความก้าวหน้าล่าสุดของ AI และ machine learning
    • เครื่องมือเชิงพาณิชย์หลายตัว เช่น Applitools และ Percy ตอนนี้อ้างว่าใช้ AI ในการทดสอบ visual regression
    • หนึ่งในทีมของเราใช้ Applitools Eyes อย่างกว้างขวาง และพึงพอใจกับผลลัพธ์
    • แม้ว่า visual regression testing จะไม่สามารถแทนที่การทดสอบฟังก์ชันแบบ end-to-end ที่เขียนมาอย่างดีได้ แต่ก็เป็นส่วนเสริมที่มีคุณค่าในชุดเครื่องมือทดสอบ
    • เรากำลังนำสิ่งนี้มาใช้ เพราะมันได้กลายเป็นตัวเลือกเริ่มต้นที่ปลอดภัยในฐานะองค์ประกอบหนึ่งของกลยุทธ์การทดสอบ UI แบบครอบคลุม
  • Wiz

    • Wiz ได้กลายเป็นแพลตฟอร์มความปลอดภัยคลาวด์ที่ถูกเลือกใช้ในหลายโครงการ
    • ทีมของเราชื่นชมที่มันสามารถตรวจสอบการเปลี่ยนแปลงอย่างต่อเนื่องและตรวจจับความเสี่ยงกับภัยคุกคามได้เร็วกว่าเครื่องมือที่คล้ายกัน
    • Wiz สามารถตรวจจับและแจ้งเตือนการกำหนดค่าผิดพลาด ช่องโหว่ และความลับที่รั่วไหลได้ทั้งในอาร์ติแฟกต์ที่ยังไม่ถูกนำไปใช้งานจริง เช่น อิมเมจคอนเทนเนอร์และโค้ดโครงสร้างพื้นฐาน รวมถึงเวิร์กโหลดที่กำลังทำงานอยู่จริง เช่น คอนเทนเนอร์ VM และบริการคลาวด์
    • เรายังชื่นชมความสามารถด้านการรายงานที่แข็งแกร่งสำหรับทั้งทีมพัฒนาและฝ่ายผู้นำ
    • การวิเคราะห์นี้ช่วยให้เข้าใจได้ว่าช่องโหว่อาจส่งผลต่อบริการใดบ้าง เพื่อให้สามารถแก้ปัญหาได้อย่างเหมาะสมในบริบทนั้น

Trial

  • AWS Control Tower

    • AWS Control Tower ยังคงเป็นตัวเลือกที่ดีที่สุดสำหรับการจัดการบัญชี AWS ในสภาพแวดล้อมแบบหลายทีม
    • มีกลไกที่สะดวกสำหรับการกำหนดค่าการควบคุมด้านความปลอดภัยและการปฏิบัติตามข้อกำหนดล่วงหน้า ซึ่งจะถูกนำไปใช้กับ landing zone ใหม่โดยอัตโนมัติ
    • นี่คือตัวอย่างของ “compliance at the point of change” ซึ่งหมายถึงทุกครั้งที่มีการสร้างโครงสร้างพื้นฐานใหม่ การควบคุมจะถูกนำไปใช้และตรวจสอบทันที จึงไม่จำเป็นต้องมีการตรวจ compliance แบบแมนนวลในภายหลัง
    • AWS Control Tower Account Factory for Terraform (AFT) ยังคงพัฒนาต่อเนื่องนับตั้งแต่เล่มก่อน และตอนนี้ใช้งานได้ใน AWS Region มากขึ้น
    • ด้วย AFT คุณสามารถ provision บัญชี Control Tower ผ่าน pipeline ของโค้ดโครงสร้างพื้นฐานได้
    • เราชอบที่ AFT สามารถปรับแต่งให้ส่ง webhook หรือดำเนินการเฉพาะบางอย่าง เพื่อผสานรวมกับเครื่องมือภายนอกอย่าง GitHub Actions ได้อย่างมั่นคงและปลอดภัย
    • ทีมของเราประสบความสำเร็จอย่างมากจากการใช้ AWS Control Tower เพื่อจัดการบัญชี แต่ก็หวังว่าเมื่อมีโอกาสปรับปรุง AWS จะเปิดรับการมีส่วนร่วมจากชุมชนในโครงการนี้
  • CCMenu

    • สำหรับทีมที่ทำ continuous integration การรับรู้สถานะของบิลด์ส่วนกลางจากระบบ continuous integration (CI) เป็นเรื่องสำคัญ
    • ก่อนการระบาดใหญ่ แดชบอร์ดบนหน้าจอทีวีขนาดใหญ่ในห้องทีมช่วยให้เห็นข้อมูลนี้ได้อย่างรวดเร็ว
    • เมื่อการทำงานทางไกลยังคงดำเนินต่อไป จึงจำเป็นต้องมีโซลูชันที่ทำงานบนเวิร์กสเตชันของนักพัฒนาแต่ละคน
    • สำหรับ Mac ช่องว่างนี้ถูกเติมเต็มโดย CCMenu ซึ่งเป็นแอปขนาดเล็กที่เขียนโดย Thoughtworker
    • เดิมทีเป็นส่วนหนึ่งของ CruiseControl แอปนี้ทำงานได้กับทุกเซิร์ฟเวอร์ที่สามารถให้ข้อมูลในรูปแบบ cctray รวมถึง Jenkins และ TeamCity
    • จากการเขียนใหม่เมื่อไม่นานมานี้ ได้เพิ่มการรองรับ GitHub Actions และเปิดทางไปสู่การผสานรวมที่ลึกยิ่งขึ้นกับเซิร์ฟเวอร์ CI และรูปแบบการยืนยันตัวตนอื่น ๆ อีกมาก
  • ClickHouse

    • ClickHouse เป็นฐานข้อมูล OLAP แบบคอลัมน์โอเพนซอร์สสำหรับการวิเคราะห์แบบเรียลไทม์
    • เริ่มต้นจากโครงการทดลองในปี 2009 และเติบโตเป็นฐานข้อมูลวิเคราะห์ที่มีประสิทธิภาพสูงและขยายขนาดแบบเชิงเส้นได้
    • ด้วยเอนจินประมวลผลคำสั่งคิวรีที่มีประสิทธิภาพและความสามารถในการบีบอัดข้อมูล มันจึงเหมาะกับการรันคิวรีแบบโต้ตอบโดยไม่ต้องมีการสรุปล่วงหน้า
    • ClickHouse เป็นตัวเลือกที่ดีสำหรับการจัดเก็บข้อมูล OpenTelemetry
    • ด้วยการผสานรวมกับ Jaeger จึงสามารถจัดเก็บข้อมูล tracing ปริมาณมากและวิเคราะห์ได้อย่างมีประสิทธิภาพ
  • Devbox

    • แม้เครื่องมือพัฒนาจะก้าวหน้าไปมาก แต่การรักษาสภาพแวดล้อมการพัฒนาแบบโลคัลให้สอดคล้องกันก็ยังเป็นความท้าทายสำหรับหลายทีม
    • การ onboard วิศวกรใหม่มักต้องรันคำสั่งหรือสคริปต์ที่ปรับแต่งเอง ซึ่งอาจล้มเหลวอย่างคาดเดาไม่ได้ในแต่ละระบบ และนำไปสู่ความไม่สอดคล้องกัน
    • เพื่อแก้ปัญหานี้ ทีมของเราพึ่งพา Devbox มากขึ้นเรื่อย ๆ
    • Devbox เป็นเครื่องมือบรรทัดคำสั่งที่มอบอินเทอร์เฟซที่เข้าถึงง่ายสำหรับการสร้างสภาพแวดล้อมการพัฒนาแบบโลคัลที่ทำซ้ำได้และเฉพาะต่อโปรเจกต์ โดยใช้ตัวจัดการแพ็กเกจ Nix โดยไม่ต้องพึ่ง virtual machine หรือคอนเทนเนอร์
    • เมื่อตั้งค่าสำหรับ codebase หนึ่งครั้งแล้ว การสร้างสภาพแวดล้อมที่กำหนดไว้บนอุปกรณ์ใหม่ต้องใช้เพียงคำสั่ง CLI เดียว (devbox shell) ซึ่งช่วยลดความซับซ้อนของเวิร์กโฟลว์การ onboard ได้อย่างมาก
    • Devbox รองรับ shell hook, สคริปต์แบบกำหนดเอง และการสร้าง devcontainer.json เพื่อผสานรวมกับ VSCode
  • Difftastic

    • Difftastic เป็นเครื่องมือที่ไฮไลต์ความแตกต่างระหว่างไฟล์โค้ดด้วยวิธีที่รับรู้โครงสร้างไวยากรณ์
    • สิ่งนี้แตกต่างอย่างมากจากเครื่องมือเปรียบเทียบความต่างของข้อความ เช่น คำสั่ง Unix diff
    • ตัวอย่างเช่น Difftastic จะเพิกเฉยต่อการขึ้นบรรทัดใหม่ที่แทรกเข้ามาเพื่อแบ่งประโยคยาว ๆ ในภาษาอย่าง Java หรือ TypeScript ที่ใช้เซมิโคลอนเป็นตัวคั่น
    • เครื่องมือนี้จะไฮไลต์เฉพาะการเปลี่ยนแปลงที่มีผลต่อไวยากรณ์ของโปรแกรมเท่านั้น
    • เพื่อทำเช่นนั้น มันจะพาร์สไฟล์เป็น abstract syntax tree ก่อน จากนั้นใช้อัลกอริทึมของ Dijkstra เพื่อคำนวณระยะห่างระหว่างต้นไม้
    • เราพบว่า Difftastic มีประโยชน์อย่างยิ่งในการทำความเข้าใจการเปลี่ยนแปลงเมื่อรีวิว codebase ขนาดใหญ่
    • Difftastic ใช้ได้กับทุกภาษาโปรแกรมที่มี parser และรองรับโดยค่าเริ่มต้นมากกว่า 50 ภาษาโปรแกรม รวมถึงรูปแบบข้อความที่มีโครงสร้างอย่าง CSS และ HTML
    • นี่ไม่ใช่เครื่องมือใหม่ แต่เราคิดว่ามันควรค่าแก่การให้ความสนใจในยุคของผู้ช่วยเขียนโค้ด LLM ที่การรีวิวแบบ human-in-the-loop มีความสำคัญมากขึ้นเรื่อย ๆ
  • LinearB

    • LinearB ซึ่งเป็นแพลตฟอร์ม software engineering intelligence มอบข้อมูลเชิงลึกที่ขับเคลื่อนด้วยข้อมูลแก่ผู้นำด้านวิศวกรรมเพื่อสนับสนุนการปรับปรุงอย่างต่อเนื่อง
    • ช่วยจัดแนวในด้านสำคัญ เช่น benchmarking, workflow automation, และการลงทุนแบบมุ่งเป้าเพื่อยกระดับประสบการณ์ของนักพัฒนาและผลิตภาพ
    • ประสบการณ์การใช้งาน LinearB เน้นให้เห็นถึงความสามารถในการสร้างวัฒนธรรมแห่งการปรับปรุงและประสิทธิภาพภายในทีมวิศวกรรม
    • ทีมของเราใช้แพลตฟอร์มนี้เพื่อติดตามเมตริกวิศวกรรมหลัก ระบุด้านที่ต้องปรับปรุง และนำมาตรการที่อิงหลักฐานมาใช้
    • ความสามารถเหล่านี้สอดคล้องอย่างมากกับคุณค่าหลักของ LinearB ได้แก่ benchmarking, การทำให้การเก็บรวบรวมเมตริกเป็นอัตโนมัติ และการขับเคลื่อนการปรับปรุงด้วยข้อมูล
    • LinearB ผสานการทำงานกับซอร์สโค้ด, วงจรชีวิตแอปพลิเคชัน, CI/CD และเครื่องมือสื่อสาร พร้อมใช้ทั้งเมตริกวิศวกรรมที่ตั้งค่าไว้ล่วงหน้าและเมตริกวิศวกรรมแบบกำหนดเอง เพื่อมอบข้อมูลเชิงลึกเชิงปริมาณที่ครอบคลุมเกี่ยวกับประสบการณ์ของนักพัฒนา ผลิตภาพ และประสิทธิภาพของทีม
    • ในฐานะผู้สนับสนุน DORA เราชื่นชมที่ LinearB ให้ความสำคัญกับเมตริกเฉพาะเหล่านี้ และเพิ่มความสามารถในการวัดแง่มุมหลักของประสิทธิภาพการส่งมอบซอฟต์แวร์ซึ่งจำเป็นต่อการปรับปรุงประสิทธิภาพ
    • ในอดีต ทีมต่างๆ มักประสบปัญหาในการเก็บรวบรวมเมตริกเฉพาะของ DORA และมักต้องพึ่งพาแดชบอร์ดแบบกำหนดเองที่ซับซ้อนหรือกระบวนการแบบแมนนวล
    • LinearB ยังคงเป็นโซลูชันที่น่าสนใจด้วยการทำให้การติดตามเมตริกเหล่านี้เป็นอัตโนมัติ และมอบข้อมูลแบบเรียลไทม์ที่สนับสนุนการตัดสินใจเชิงรุกเกี่ยวกับประสบการณ์ของนักพัฒนา ผลิตภาพ และความคาดการณ์ได้
  • pgvector

    • pgvector เป็นส่วนขยายโอเพนซอร์สสำหรับ PostgreSQL เพื่อการค้นหาความคล้ายคลึงของเวกเตอร์ ซึ่งช่วยให้สามารถจัดเก็บเวกเตอร์ร่วมกับข้อมูลแบบมีโครงสร้างในฐานข้อมูลเดียวที่จัดการไว้เป็นอย่างดี
    • แม้จะขาดความสามารถขั้นสูงบางอย่างของฐานข้อมูลเวกเตอร์แบบเฉพาะทาง แต่ก็ได้รับประโยชน์จากการรองรับ ACID, point-in-time recovery และความสามารถที่แข็งแกร่งอื่นๆ ของ PostgreSQL
    • เราพบว่าพร้อมกับการเติบโตของแอปพลิเคชันที่ขับเคลื่อนด้วย generative AI รูปแบบการจัดเก็บและค้นคืน embedding vector อย่างมีประสิทธิภาพเพื่อใช้กับงานด้านความคล้ายคลึง ซึ่ง pgvector แก้ปัญหาได้อย่างมีประสิทธิผล ก็กำลังเพิ่มขึ้น
    • เมื่อพิจารณาจากการใช้งาน pgvector ในสภาพแวดล้อม production ที่เพิ่มขึ้น โดยเฉพาะในทีมที่ใช้งานผู้ให้บริการคลาวด์ที่มี managed PostgreSQL อยู่แล้ว รวมถึงความสามารถที่พิสูจน์แล้วในการรองรับความต้องการค้นหาเวกเตอร์ทั่วไปโดยไม่ต้องมี vector store แยกต่างหาก เราจึงมั่นใจในศักยภาพของ pgvector
    • ทีมของเราใช้มันได้อย่างเป็นประโยชน์ในโครงการที่เปรียบเทียบข้อมูลแบบมีโครงสร้างกับข้อมูลไม่มีโครงสร้าง ซึ่งแสดงให้เห็นถึงศักยภาพในการนำไปใช้ในวงกว้าง
    • ดังนั้นเราจึงย้าย pgvector ไปอยู่ในขั้นทดลอง
  • Snapcraft build tool

    • Snapcraft เป็นเครื่องมือบรรทัดคำสั่งแบบโอเพนซอร์สสำหรับสร้างและแพ็กเกจแอปพลิเคชันแบบ self-contained ที่เรียกว่า snap สำหรับ Ubuntu, Linux distribution อื่นๆ และ macOS
    • snap สามารถนำไป deploy และบำรุงรักษาได้ง่ายบนฮาร์ดแวร์หลายแพลตฟอร์ม รวมถึงคอมพิวเตอร์ Linux, สภาพแวดล้อมเสมือน และระบบคอมพิวเตอร์ออนบอร์ดของยานพาหนะ
    • แม้ว่า Snapcraft จะมี public app store สำหรับเผยแพร่ snap แต่ทีมของเราใช้ build tool นี้เพื่อแพ็กเกจระบบขับเคลื่อนอัตโนมัติเป็น snap โดยไม่เผยแพร่ไปยัง public app store
    • สิ่งนี้ทำให้สามารถ build, test และ debug ระบบซอฟต์แวร์แบบฝังตัวได้ภายในเครื่อง พร้อมทั้งเผยแพร่ไปยัง internal artifact repository ได้
  • Spinnaker

    • Spinnaker เป็นแพลตฟอร์ม continuous delivery แบบโอเพนซอร์สที่สร้างโดย Netflix
    • โดยมีความสามารถระดับ first-class สำหรับการจัดการคลัสเตอร์และการ deploy baked image ไปยังคลาวด์
    • เราชอบแนวทางที่ชัดเจนและมีแบบแผนของ Spinnaker สำหรับการ deploy ไมโครเซอร์วิส
    • ก่อนหน้านี้เราเคยชี้ให้เห็นว่าเวอร์ชันเก่าไม่สามารถกำหนดค่า pipeline เป็นโค้ดได้ แต่ปัญหานี้ได้รับการแก้ไขแล้วด้วยการเพิ่ม spin CLI
    • เราไม่แนะนำ Spinnaker สำหรับสถานการณ์ CD แบบเรียบง่าย แต่ในบริบทที่ซับซ้อนมันได้กลายเป็นเครื่องมือที่หลายคนเลือกใช้ร่วมกับ deployment pipeline ที่ซับซ้อนไม่แพ้กัน
  • TypeScript OpenAPI

    • TypeScript OpenAPI (หรือ tsoa) เป็นทางเลือกแทน Swagger สำหรับสร้างข้อกำหนด OpenAPI จากโค้ด
    • เป็นแนวทางแบบ code-first โดยใช้ TypeScript controller และ model เป็นแหล่งความจริงเดียว และใช้ annotation หรือ decorator ของ TypeScript แทนการต้องมีไฟล์และการกำหนดค่าที่ซับซ้อนมากขึ้นเมื่อใช้เครื่องมือ OpenAPI ใน TypeScript
    • สามารถสร้างข้อกำหนด API ทั้งเวอร์ชัน 2.0 และ 3.0 และสามารถสร้าง route สำหรับ Express, Hapi และ Koa ได้
    • หากคุณเขียน API ด้วย TypeScript โปรเจ็กต์นี้ก็น่าลองพิจารณา
  • Unleash

    • แม้แนวทางที่เราแนะนำยังคงเป็นการใช้ feature toggle ที่เรียบง่ายที่สุดเท่าที่จะทำได้ แต่เมื่อขนาดทีมขยายและการพัฒนาเร็วขึ้น การจัดการ toggle ที่ทำขึ้นเองก็ซับซ้อนมากขึ้น
    • Unleash เป็นตัวเลือกที่ทีมของเราใช้อย่างแพร่หลายเพื่อรับมือกับความซับซ้อนนี้และทำให้ CI/CD เป็นไปได้
    • สามารถใช้งานเป็นบริการหรือโฮสต์เองได้
    • มี SDK สำหรับหลายภาษา พร้อม UI ที่คุ้นเคยสำหรับประสบการณ์ของนักพัฒนาและการจัดการ
    • แม้ยังไม่มีการรองรับสเปก OpenFeature อย่างเป็นทางการ แต่สามารถพบ provider ที่ชุมชนดูแลสำหรับ Go และ Java ได้
    • Unleash ใช้ได้ไม่เพียงกับ feature toggle แบบง่ายเท่านั้น แต่ยังใช้สำหรับ segmentation และ gradual rollout ได้ด้วย จึงเป็นตัวเลือกที่เหมาะสำหรับการจัดการฟีเจอร์ในระดับสเกล

Assess

  • Astronomer Cosmos

    • Astronomer Cosmos เป็นปลั๊กอิน Airflow ที่ออกแบบมาเพื่อให้การรองรับ dbt core workflow แบบเนทีฟมากขึ้นใน Airflow
    • เมื่อติดตั้งปลั๊กอินแล้ว DbtDag จะเปลี่ยน dbt node ให้เป็น Airflow task/task group เมื่อห่อหุ้ม dbt workflow ทำให้วิศวกรสามารถมองเห็นกราฟการพึ่งพาของ dbt และความคืบหน้าของการรันได้โดยตรงใน Airflow UI
    • นอกจากนี้ยังสามารถใช้ Airflow connection แทน dbt profile ได้ ซึ่งช่วยลดการกระจายตัวของการกำหนดค่า
    • เรากำลังทดลองใช้เครื่องมือนี้เพราะมีศักยภาพที่จะทำให้งาน dbt ใน Airflow ลื่นไหลยิ่งขึ้น
  • ColPali

    • ColPali เป็นเครื่องมือใหม่สำหรับค้นหาเอกสาร PDF โดยใช้ vision language model ซึ่งช่วยแก้ความยากในการสร้างแอปพลิเคชัน retrieval-augmented generation (RAG) ที่มีประสิทธิภาพในการดึงข้อมูลจากเอกสารมัลติมีเดียที่มีรูปภาพ ไดอะแกรม และตาราง
    • ต่างจากวิธีการเดิมที่พึ่งพา text-based embedding หรือเทคนิค optical character recognition (OCR) โดย ColPali ประมวลผลทั้งหน้า PDF และใช้ visual transformer เพื่อสร้าง embedding ที่คำนึงถึงทั้งข้อความและเนื้อหาเชิงภาพ
    • แนวทางแบบองค์รวมนี้ไม่เพียงให้การค้นหาที่ดีขึ้น แต่ยังช่วยให้สามารถให้เหตุผลได้ว่าทำไมเอกสารบางฉบับจึงถูกค้นพบ และช่วยยกระดับประสิทธิภาพของ RAG สำหรับ PDF ที่อุดมด้วยข้อมูลอย่างมาก
    • เราได้ทดสอบ ColPali กับลูกค้าหลายรายและพบผลลัพธ์ที่มีแนวโน้มดี แต่เทคโนโลยีนี้ยังอยู่ในระยะเริ่มต้น
    • โดยเฉพาะสำหรับองค์กรที่มีข้อมูลเอกสารเชิงภาพซับซ้อน นับว่าคุ้มค่าต่อการประเมิน
  • Cursor

    • การแข่งขันของเครื่องมือเขียนโปรแกรมที่มี AI ช่วยยังคงดำเนินต่อไป และ Cursor คือหนึ่งในตัวที่โดดเด่นที่สุด
    • Cursor เป็นตัวแก้ไขโค้ดแบบ AI-first ที่ออกแบบมาเพื่อเพิ่มผลิตภาพของนักพัฒนาโดยผสาน AI เข้ากับเวิร์กโฟลว์การเขียนโค้ดอย่างลึกซึ้ง
    • เราเคยกล่าวถึง Cursor ในการประเมิน Radar ก่อนหน้านี้ แต่ชัดเจนว่าการพัฒนาอย่างต่อเนื่องล่าสุดของ Cursor ได้ก่อให้เกิดการเปลี่ยนแปลงเชิงคุณภาพ
    • จากการใช้งานของเรา Cursor แสดงให้เห็นความสามารถที่แข็งแกร่งในการอนุมานบริบทจาก codebase ที่มีอยู่
    • ในขณะที่เครื่องมือโค้ด AI อื่นๆ เช่น GitHub Copilot มักเน้นการสร้าง snippet และการทำงานร่วมกัน ความสามารถของ Cursor ในการแก้ไขหลายบรรทัดและหลายไฟล์ทำให้มันโดดเด่น
    • Cursor ถูก fork มาจาก VSCode และพัฒนาต่อยอดบนพื้นฐานนั้น โดยมอบวิธีโต้ตอบที่รวดเร็วและใช้งานง่ายซึ่งสอดคล้องกับสัญชาตญาณของนักพัฒนา
    • งานที่ทรงพลังสามารถทำได้ด้วย ctrl/cmd+K และ ctrl/cmd+L
    • Cursor กำลังเป็นผู้นำการแข่งขันระลอกใหม่ของเครื่องมือเขียนโปรแกรม AI ในด้านการปฏิสัมพันธ์กับนักพัฒนาและความเข้าใจ codebase
  • Data Mesh Manager

    • Data Mesh Manager มอบชั้นเมทาดาทาสำหรับแพลตฟอร์ม data mesh ทั่วไป
    • โดยเฉพาะอย่างยิ่ง เครื่องมือนี้มุ่งเน้นไปที่การนิยาม data product และข้อกำหนด data contract โดยใช้โครงการริเริ่ม OpenContract และสามารถผสานเข้ากับ build pipeline ได้ผ่าน DataContract CLI ที่เชื่อมต่ออยู่
    • นอกจากนี้ แอปพลิเคชันนี้ยังมี data catalog สำหรับค้นหาและสำรวจ data product และเมทาดาทาที่เกี่ยวข้อง พร้อมรองรับ federated governance ซึ่งรวมถึงการกำหนดเมตริกคุณภาพข้อมูลและการจัดการกฎคุณภาพข้อมูล
    • นี่เป็นหนึ่งในเครื่องมือพื้นฐานชุดแรกที่ปรากฏขึ้นในพื้นที่นี้ และไม่ได้พยายามดัดแปลงแพลตฟอร์มเดิมให้เข้ากับแนวคิด data mesh
  • GitButler

    • อินเทอร์เฟซบรรทัดคำสั่งของ Git นั้นทรงพลังและมีประโยชน์ แต่ก็ขึ้นชื่อว่าซับซ้อนมากเมื่อต้องจัดการหลาย branch และ stage commit ภายในนั้น
    • GitButler เป็น Git client ที่มีกราฟิกอินเทอร์เฟซ ซึ่งมีเป้าหมายเพื่อทำให้กระบวนการนี้ง่ายขึ้น
    • มันทำงานโดยติดตามการเปลี่ยนแปลงของไฟล์ที่ยังไม่ได้ commit แยกจาก Git แล้วจึง stage การเปลี่ยนแปลงเหล่านั้นลงใน virtual branch
    • อาจมีคนแย้งได้ว่านี่คือการแก้ปัญหาสำหรับสิ่งที่ไม่ควรเป็นปัญหาตั้งแต่แรก หากทำการเปลี่ยนแปลงเล็ก ๆ บ่อย ๆ และ push เข้าสู่ trunk ก็ไม่จำเป็นต้องมีหลาย branch
    • อย่างไรก็ตาม หาก workflow ของคุณมี pull request รวมอยู่ด้วย โดยเฉพาะเมื่อมีรอบการรีวิวยาวนานก่อน merge PR โครงสร้างการแตก branch ก็อาจซับซ้อนได้
    • เพื่อแก้ปัญหานี้ GitButler จึงผสานกับ GitHub เพื่อจัดกลุ่มการเปลี่ยนแปลงเป็น pull request แบบเลือกได้และส่งออกได้โดยตรงจากตัวเครื่องมือ
    • GitButler เป็นอีกหนึ่งรายการในกลุ่ม blip ที่กำลังเติบโตสำหรับการจัดการความซับซ้อนที่มีอยู่ในกระบวนการ PR
  • JetBrains AI Assistant

    • JetBrains AI Assistant เป็นผู้ช่วยเขียนโค้ดที่ออกแบบมาให้ผสานการทำงานอย่างราบรื่นกับ IDE ทุกตัวของ JetBrains เพื่อช่วยด้าน code completion การสร้างเทสต์ และการปฏิบัติตาม style guide
    • สร้างขึ้นบนโมเดลอย่าง OpenAI และ Google Gemini และโดดเด่นด้วยความสามารถในการจดจำรูปแบบการเขียนโค้ดสำหรับเซสชันในอนาคต เพื่อให้ผลลัพธ์มีความสม่ำเสมอ
    • นักพัฒนาของเรามองว่าฟีเจอร์การสร้างเทสต์มีประโยชน์เป็นพิเศษ และสังเกตเห็นความสามารถในการจัดการเอาต์พุตที่ยาวขึ้นได้โดยไม่มีปัญหาด้านเสถียรภาพ
    • อย่างไรก็ตาม ต่างจากคู่แข่งบางราย JetBrains ไม่ได้โฮสต์โมเดลของตนเอง จึงอาจไม่เหมาะกับลูกค้าที่กังวลเรื่องการประมวลผลข้อมูลโดยบุคคลที่สาม
    • ถึงกระนั้น การที่เครื่องมือนี้ผสานอยู่กับ JetBrains IDE ก็ทำให้มันเป็นตัวเลือกที่มีอนาคตสำหรับทีมที่กำลังสำรวจผู้ช่วยเขียนโค้ดที่ขับเคลื่อนด้วย AI
  • Mise

    • นักพัฒนาที่ทำงานในสภาพแวดล้อมแบบ polyglot มักต้องเผชิญกับสถานการณ์ที่ต้องจัดการหลายเวอร์ชันของภาษาและเครื่องมือต่าง ๆ
    • mise มีเป้าหมายที่จะแก้ปัญหานี้ด้วยการมอบเครื่องมือเดียวที่สามารถแทน nvm, pyenv, rbenv, rustup และอื่น ๆ ได้ และยังสามารถใช้แทน asdf ได้ด้วย
    • Mise เขียนด้วย Rust เพื่อความเร็วในการโต้ตอบกับ shell และต่างจาก asdf ที่ใช้ shim บน shell, mise จะปรับตัวแปรสภาพแวดล้อม PATH ล่วงหน้า ทำให้เวลาเรียกใช้เครื่องมือเป็นการเรียกตรง
    • นี่เป็นหนึ่งในเหตุผลที่ mise เร็วกว่า asdf
    • สำหรับนักพัฒนาที่คุ้นเคยกับ asdf อยู่แล้ว mise มอบความสามารถแบบเดียวกันแต่มีความแตกต่างสำคัญบางประการ
    • มันเขียนด้วย Rust จึงเร็วกว่า และมีฟีเจอร์บางอย่างที่ asdf ไม่มี ตัวอย่างเช่น สามารถติดตั้งหลายเวอร์ชันของเครื่องมือเดียวกันพร้อมกันได้ และมีคำสั่งที่ยืดหยุ่นกว่า รวมถึงการจับคู่แบบฟัซซี
    • นอกจากนี้ยังมี task runner แบบบูรณาการที่มีประโยชน์สำหรับการรัน linter, test, builder, server และงานเฉพาะโปรเจกต์อื่น ๆ
    • หากคุณเริ่มเบื่อกับการต้องใช้หลายเครื่องมือเพื่อจัดการสภาพแวดล้อมการพัฒนา และไวยากรณ์ที่บางครั้งก็ดูขัด ๆ ของเครื่องมืออื่น mise ก็คุ้มค่าที่จะลองอย่างชัดเจน
  • Mockoon

    • Mockoon เป็นเครื่องมือโอเพนซอร์สสำหรับทำ API mocking
    • มันมีอินเทอร์เฟซที่ใช้งานง่าย เส้นทางที่ปรับแต่งได้ และการตอบสนองแบบไดนามิก รวมถึงความสามารถในการทำให้การสร้างชุดข้อมูลจำลองเป็นอัตโนมัติ
    • Mockoon รองรับ OpenAPI และสามารถสร้างสถานการณ์ทดสอบได้หลากหลายแบบเพื่อทดสอบบนเครื่องโลคัลและผสานเข้ากับ pipeline การพัฒนา
    • นอกจากนี้ยังสามารถดักจับคำขอและปลอมเฉพาะการเรียกที่นิยามไว้ใน Mockoon เพื่อสร้าง “partial mock” ได้
    • partial mock ช่วยจำลองเส้นทางหรือ endpoint ของ API บางส่วน และส่งต่อคำขออื่นไปยังเซิร์ฟเวอร์จริง
    • partial mock อาจมีประโยชน์ในบางสถานการณ์ แต่หากใช้มากเกินไปก็เสี่ยงจะนำไปสู่ความซับซ้อนที่ไม่จำเป็น
    • นอกเหนือจากนั้น Mockoon ก็ยังคงเป็นเครื่องมือที่มีประโยชน์สำหรับการตั้งค่า mock API อย่างรวดเร็ว รวมถึงช่วยปรับปรุงและทำให้ workflow การพัฒนาเป็นอัตโนมัติ
  • Raycast

    • Raycast เป็น launcher ระดับพรีเมียมบน macOS ที่ให้คุณเปิดแอปอย่างรวดเร็ว รันคำสั่ง ค้นหาไฟล์ และทำงานอัตโนมัติได้จากคีย์บอร์ด
    • ทีมของเราชื่นชอบความสามารถที่มีมาให้สำหรับนักพัฒนา และการขยายความสามารถได้ง่ายเพื่อโต้ตอบกับแอปและบริการของบุคคลที่สาม เช่น VSCode, Slack, Jira และ Google
    • Raycast มุ่งเน้นด้าน productivity และเป็นเครื่องมือที่มีประโยชน์สำหรับผู้ที่ต้องการทำให้งานประจำวันเรียบง่ายขึ้นโดยลดการสลับบริบทให้น้อยที่สุด
    • ผู้ใช้ Pro สามารถเข้าถึง Raycast AI ซึ่งเป็นผู้ช่วยค้นหาที่ขับเคลื่อนด้วย AI แบบเฉพาะทางได้
  • ReadySet

    • ReadySet เป็น query cache สำหรับ MySQL และ PostgreSQL
    • ต่างจากโซลูชันแคชแบบดั้งเดิมที่พึ่งพาการทำ invalidation ด้วยตนเอง ReadySet ใช้ database replication stream เพื่ออัปเดตแคชแบบค่อยเป็นค่อยไป
    • ด้วย partial view materialization ทำให้ ReadySet มี tail latency ต่ำกว่า read replica แบบดั้งเดิม
    • ReadySet เข้ากันได้กับ MySQL และ PostgreSQL ในระดับ wire protocol ดังนั้นจึงสามารถดีพลอยไว้หน้า database เพื่อขยาย read workload ในแนวนอนได้โดยไม่ต้องเปลี่ยนแอปพลิเคชัน
  • Rspack

    • หลายทีมของเราที่ทำงานกับฟรอนต์เอนด์บนเว็บได้ย้ายจากเครื่องมือ bundling รุ่นเก่าอย่าง Webpack ไปใช้ Vite
    • ผู้เล่นรายใหม่ในพื้นที่นี้คือ Rspack ซึ่งเปิดตัวเวอร์ชัน 1.0 หลังการพัฒนามา 18 เดือน
    • มันถูกออกแบบมาให้เป็นตัวแทนของ Webpack และเข้ากันได้กับปลั๊กอินและ loader ใน ecosystem ของ Webpack
    • สิ่งนี้อาจเป็นข้อได้เปรียบเหนือ Vite เมื่อต้องย้ายการตั้งค่า Webpack ที่ซับซ้อน
    • เหตุผลหลักที่ทีมของเราย้ายไปใช้เครื่องมือสมัยใหม่อย่าง Vite และ Rspack คือประสบการณ์ของนักพัฒนา โดยเฉพาะเรื่องความเร็ว
    • ไม่มีอะไรทำลาย flow ในการพัฒนาได้มากไปกว่าการต้องรอประมาณ 1–2 นาทีก่อนจะได้รับฟีดแบ็กจากการเปลี่ยนแปลงโค้ดล่าสุด
    • Rspack ที่เขียนด้วย Rust ให้ประสิทธิภาพที่เร็วกว่า Webpack มาก และในหลายกรณีก็เร็วกว่า Vite ด้วย
  • Semantic Router

    • เมื่อสร้างแอปพลิเคชันที่ใช้ LLM สิ่งสำคัญคือการตัดสินเจตนาของผู้ใช้ก่อนจะส่งคำขอไปยังเอเจนต์ที่เหมาะสมหรือเรียกใช้โฟลว์เฉพาะ
    • Semantic Router ทำหน้าที่เป็นชั้นการตัดสินใจความเร็วสูงมากสำหรับ LLM และเอเจนต์ ช่วย route คำขอได้อย่างมีประสิทธิภาพและเชื่อถือได้ตามความหมายเชิงอรรถศาสตร์
    • ด้วยการใช้ vector embedding เพื่ออนุมานเจตนา Semantic Router จึงลดการเรียกใช้ LLM ที่ไม่จำเป็น และมอบแนวทางที่เรียบง่ายและคุ้มค่ากว่าในการทำความเข้าใจเจตนา
    • ศักยภาพของมันไม่ได้จำกัดแค่การอนุมานเจตนา แต่ยังขยายไปเป็นคอมโพเนนต์อเนกประสงค์สำหรับงานเชิงความหมายที่หลากหลาย
    • ด้วยความเร็วและความยืดหยุ่นที่มอบให้ มันจึงเป็นตัวเลือกที่แข็งแกร่งในสภาพแวดล้อมที่ต้องการการตัดสินใจแบบรวดเร็วและเรียลไทม์โดยไม่มี overhead ของ LLM
  • เอเจนต์ด้านวิศวกรรมซอฟต์แวร์

    • ปัจจุบันหนึ่งในหัวข้อที่ร้อนแรงที่สุดในวงการ GenAI คือแนวคิดของเอเจนต์ด้านวิศวกรรมซอฟต์แวร์
    • เครื่องมือช่วยเขียนโค้ดเหล่านี้ทำได้มากกว่าช่วยให้วิศวกรเขียนโค้ดเป็นชิ้น ๆ ตรงนั้นตรงนี้ โดยขยายขนาดของปัญหาที่สามารถแก้ได้ และในอุดมคติคือทำงานได้อย่างอัตโนมัติพร้อมการแทรกแซงจากมนุษย์ให้น้อยที่สุด
    • แนวคิดคือเครื่องมือเหล่านี้สามารถดึง GitHub issue หรือ Jira ticket มาพร้อมเสนอแผนและการเปลี่ยนแปลงโค้ด หรือแม้แต่สร้าง pull request ให้มนุษย์ตรวจทานได้
    • นี่คือก้าวถัดไปที่สมเหตุสมผลในการเพิ่มอิทธิพลของ AI coding assistance แต่เป้าหมายของเอเจนต์ทั่วไปที่มักถูกโฆษณาว่าสามารถจัดการงานเขียนโค้ดได้อย่างกว้างขวางนั้นทะเยอทะยานมาก และสถานะของเครื่องมือในปัจจุบันก็ยังไม่ได้แสดงให้เห็นอย่างชัดเจนว่าทำได้
    • อย่างไรก็ตาม เรามองว่าสำหรับงานง่าย ๆ ที่มีขอบเขตจำกัดมากกว่า สิ่งนี้อาจใช้งานได้ในเร็ว ๆ นี้เพื่อช่วยคืนเวลาให้นักพัฒนาไปจัดการปัญหาที่ซับซ้อนกว่า
    • เครื่องมือที่มีการออกเอเจนต์เวอร์ชันเบต้าแล้ว ได้แก่ GitHub Copilot Workspace, qodo flow, Tabnine agent for JIRA และ Amazon Q Developer
    • แม้ว่า benchmark SWE Bench จะมีการระบุเครื่องมืออื่น ๆ ในพื้นที่นี้เพิ่มเติม แต่ก็ควรรับข้อมูล benchmark ในวงการ AI ด้วยความระมัดระวังและตั้งข้อสงสัยไว้บ้าง
  • uv

    • Rust เหมาะกับการเขียนเครื่องมือ command line เนื่องจากมีประสิทธิภาพการเริ่มทำงานที่รวดเร็ว และเราเห็นผู้คนจำนวนหนึ่งเขียน toolchain บางส่วนขึ้นใหม่ด้วย Rust
    • ใน Radar ครั้งก่อน เราเคยกล่าวถึง Ruff ซึ่งเป็น Python linter ที่เขียนด้วย Rust
    • ในเล่มนี้ เราได้ประเมิน uv ซึ่งเป็นเครื่องมือจัดการแพ็กเกจ Python ที่เขียนด้วย Rust
    • ข้อเสนอคุณค่าของ uv คือความ "เร็วอย่างเหลือเชื่อ" และใน benchmark ก็เหนือกว่าเครื่องมือจัดการแพ็กเกจ Python อื่น ๆ อย่างมาก
    • อย่างไรก็ตาม ระหว่างการประเมิน Radar เราได้ถกเถียงกันว่าการปรับปรุง build tool ในระดับไม่กี่วินาทีนั้นเป็นเพียงการปรับปรุงเล็กน้อยหรือไม่
    • เมื่อเทียบกับประสิทธิภาพแล้ว สิ่งที่สำคัญกว่าสำหรับระบบจัดการแพ็กเกจคือ ecosystem, ชุมชนที่เติบโตเต็มที่ และการสนับสนุนระยะยาว
    • ถึงอย่างนั้น feedback จากทีมโครงการก็แสดงให้เห็นว่าการปรับปรุงประสิทธิภาพเล็ก ๆ นี้สามารถช่วยปรับปรุงวงจร feedback และประสบการณ์โดยรวมของนักพัฒนาได้มาก เรามักทำให้การแคช CI/CD แบบแมนนวลซับซ้อนมากเพื่อให้ได้การปรับปรุงเล็กน้อยนี้; uv ช่วยทำให้การจัดการ environment ของ Python ง่ายขึ้น
    • เมื่อพิจารณาว่าการจัดการแพ็กเกจและ env สำหรับการพัฒนา Python ยังมีพื้นที่ให้ปรับปรุงอีกมาก เราจึงคิดว่า uv เป็นตัวเลือกที่คุ้มค่าแก่การประเมิน
  • Warp

    • Warp คือเทอร์มินัลสำหรับ macOS และ Linux
    • มันแบ่งผลลัพธ์ของคำสั่งออกเป็นบล็อกเพื่อให้อ่านง่ายขึ้น
    • Warp มีฟีเจอร์ที่ขับเคลื่อนด้วย AI เช่น การแนะนำคำสั่งอัจฉริยะและการประมวลผลภาษาธรรมชาติ
    • นอกจากนี้ยังมีฟังก์ชัน notebook ที่ให้ผู้ใช้จัดระเบียบคำสั่งและผลลัพธ์ พร้อมเพิ่ม annotation และคำอธิบายได้
    • ด้วยความสามารถเหล่านี้ ผู้ใช้สามารถสร้างไฟล์ README หรือเอกสาร onboarding และนำเสนอพร้อมจัดการ workflow บนเทอร์มินัลในรูปแบบที่เป็นโครงสร้างและโต้ตอบได้
    • Warp ยังผสานรวมกับ Starship ซึ่งเป็น cross-shell prompt ที่ยืดหยุ่นได้อย่างง่ายดาย ทำให้สามารถปรับแต่งประสบการณ์การใช้งานเทอร์มินัลด้วยการดึงข้อมูลเกี่ยวกับ process ที่กำลังทำงานอยู่ เวอร์ชันเฉพาะของเครื่องมือที่ใช้งาน รายละเอียด Git หรือแม้แต่ Git user ปัจจุบันได้
  • Zed

    • หลังจากโครงการ text editor อย่าง Atom สิ้นสุดลง ผู้สร้างได้พัฒนา editor ตัวใหม่ชื่อ Zed
    • Zed เขียนด้วย Rust และปรับแต่งมาเพื่อใช้ประโยชน์จากฮาร์ดแวร์สมัยใหม่ จึงให้ความรู้สึกรวดเร็ว
    • มันมีทุกอย่างที่คาดหวังจาก editor ยุคใหม่ ไม่ว่าจะเป็นการรองรับภาษาโปรแกรมจำนวนมาก เทอร์มินัลในตัว และการแก้ไขแบบ multi-buffer
    • การเขียนโค้ดด้วย AI assistance สามารถใช้งานได้ผ่านการผสานรวมกับผู้ให้บริการ LLM หลายราย
    • ในฐานะคนที่ชื่นชอบ pair programming อย่างมาก เราประทับใจกับความสามารถด้านการทำงานร่วมกันระยะไกลที่มีมาใน Zed
    • นักพัฒนาสามารถค้นหากันผ่าน GitHub ID แล้วร่วมงานกันใน workspace เดียวกันแบบเรียลไทม์ได้
    • ยังเร็วเกินไปที่จะตัดสินว่าทีมนักพัฒนาจะสามารถและต้องการหลุดจากแรงดึงดูดของ ecosystem ของ Visual Studio Code หรือไม่
    • อย่างไรก็ตาม Zed เป็นทางเลือกหนึ่งที่น่าลองสำรวจ

Hold

  • CocoaPods
    • CocoaPods เป็นเครื่องมือจัดการ dependency ที่ได้รับความนิยมมาอย่างยาวนานในโปรเจ็กต์ Cocoa ของ Swift และ Objective-C
    • ตลอดเวลากว่า 10 ปีที่ผ่านมา มันเป็นเครื่องมือสำคัญสำหรับนักพัฒนา iOS และ macOS
    • ขณะนี้ทีม CocoaPods ได้ประกาศว่าโครงการจะเข้าสู่โหมด maintenance และจะยุติการพัฒนาเชิงรุก
    • ตัวเครื่องมือ CocoaPods และทรัพยากรที่เกี่ยวข้องจะยังคงใช้งานได้ต่อไป แต่จะไม่มีการพัฒนาฟีเจอร์ใหม่หรือการปรับปรุงเพิ่มเติม
    • นักพัฒนาถูกแนะนำให้ย้ายไปใช้ Swift Package Manager
    • Swift Package Manager มีการผสานรวมกับ Xcode แบบ native และมีแนวโน้มจะได้รับการสนับสนุนระยะยาวจาก Apple

[Language and Frameworks]

Adopt

  • dbt

    • ยังคงถูกมองว่าเป็นตัวเลือกที่ทรงพลังและชาญฉลาดสำหรับการทำ data transformation ใน ELT pipeline
    • เราชอบที่มันช่วยให้เกิด engineering rigor และแนวปฏิบัติอย่างความเป็นโมดูล การทดสอบได้ และการนำกลับมาใช้ซ้ำของการแปลงข้อมูลที่อิง SQL
    • มันผสานรวมได้ดีกับ cloud data warehouse, lakehouse และฐานข้อมูลจำนวนมาก เช่น Snowflake, BigQuery, Redshift, Databricks และ Postgres และยังมี ecosystem ของ community package ที่แข็งแรงอยู่รอบตัว
    • การรองรับ unit test แบบ native ที่เพิ่งเพิ่มเข้ามาเมื่อไม่นานนี้ (dbt core 1.8+ และประสบการณ์ dbt Cloud แบบ "versionless" ที่เพิ่งเปิดตัว) ยิ่งเสริมตำแหน่งของมันใน toolbox ให้แข็งแกร่งขึ้น
    • ฟีเจอร์ unit test ใหม่นี้ช่วยให้กำหนดข้อมูลทดสอบแบบคงที่ ตั้งค่าความคาดหวังของผลลัพธ์ และทดสอบได้ทั้งโหมด incremental และ full refresh ของ pipeline ได้อย่างง่ายดาย ซึ่งเป็นสิ่งที่ทีมชื่นชมมาก
    • ในหลายกรณี สิ่งนี้ทำให้สามารถเลิกใช้สคริปต์ที่พัฒนาขึ้นเองได้ โดยยังคงรักษาระดับคุณภาพเดิมไว้
  • Testcontainers

    • จากประสบการณ์ของเรา Testcontainers เป็นตัวเลือกพื้นฐานที่มีประโยชน์สำหรับการสร้างสภาพแวดล้อมที่เชื่อถือได้สำหรับการรันทดสอบ
    • มันเป็นไลบรารีที่พอร์ตไปหลายภาษา ซึ่งทำ Dockerize dependency สำหรับการทดสอบที่พบได้ทั่วไป รวมถึงฐานข้อมูลหลายประเภท เทคโนโลยีคิว บริการคลาวด์ และ dependency ของการทดสอบ UI อย่างเว็บเบราว์เซอร์ อีกทั้งยังสามารถรัน Dockerfile แบบกำหนดเองได้เมื่อจำเป็น
    • เมื่อไม่นานมานี้ได้มีการเปิดตัวเวอร์ชันเดสก์ท็อปที่ช่วยให้จัดการ test session แบบมองเห็นภาพได้ และรองรับการจัดการสถานการณ์ที่ซับซ้อนมากขึ้น ซึ่งทีมมองว่ามีประโยชน์อย่างมาก

Trial

  • CAP

    • ไลบรารี .NET สำหรับการทำ Outbox pattern เพื่อให้การอัปเดตฐานข้อมูลและการเผยแพร่ event เกิดขึ้นแบบ atomic ในระบบ distributed messaging
    • แก้ปัญหาด้วยการบันทึกเจตนาที่จะเผยแพร่ event ไว้ในธุรกรรมฐานข้อมูลเดียวกัน
    • รองรับฐานข้อมูลและแพลตฟอร์ม messaging หลายแบบ และมีประโยชน์เพราะรับประกันการส่งอย่างน้อยหนึ่งครั้ง
  • CARLA

    • simulator โอเพนซอร์สสำหรับการวิจัยด้าน autonomous driving ที่ใช้ทดสอบระบบขับขี่อัตโนมัติก่อนนำขึ้นใช้งานจริง
    • สามารถสร้างและนำโมเดล 3D ของยานพาหนะ ภูมิประเทศ มนุษย์ สัตว์ และอื่น ๆ กลับมาใช้ซ้ำได้อย่างยืดหยุ่น ทำให้จำลองสถานการณ์ได้หลากหลาย
    • ระบบขับขี่อัตโนมัติต้องสามารถรับรู้วัตถุที่มีการเคลื่อนไหวเหล่านี้และดำเนินการที่เหมาะสม เช่น การเบรก
    • ถูกนำมาใช้เพื่อการพัฒนาและทดสอบระบบขับขี่อัตโนมัติอย่างต่อเนื่อง
  • Databricks Asset Bundles

    • DABs ซึ่งประกาศ GA ในเดือนเมษายน 2024 กำลังกลายเป็นเครื่องมือสำหรับการแพ็กเกจและ deploy asset บน Databricks ที่ช่วยผลักดันให้ทีมข้อมูลนำแนวปฏิบัติด้านวิศวกรรมซอฟต์แวร์มาใช้
    • มันสามารถแพ็ก bundle ของ workflow และการตั้งค่างาน รวมถึงโค้ดที่จะรันในงานเหล่านั้น แล้ว deploy ไปยังหลาย environment ผ่าน CI/CD pipeline ได้
    • รองรับทั้งเทมเพลตสำหรับ asset ทั่วไปและเทมเพลตแบบกำหนดเอง ทำให้สร้าง service template ที่เหมาะกับโปรเจ็กต์ data engineering และ ML ได้
    • กำลังถูกนำไปใช้มากขึ้นเรื่อย ๆ ในฐานะส่วนสำคัญของ workflow ด้านวิศวกรรม
    • แม้ว่าจะมี notebook template และรองรับการ deploy notebook ขึ้น production แต่เราไม่แนะนำให้ทำ notebook ให้เป็น production
    • เราสนับสนุนให้เขียน production code อย่างตั้งใจด้วยแนวปฏิบัติทางวิศวกรรมที่รองรับความต้องการด้านการบำรุงรักษา ความยืดหยุ่น และการขยายระบบ
  • Instructor

    • ไลบรารีที่ช่วยเมื่อใช้ LLM เพื่อขอคำตอบแบบมีโครงสร้าง (JSON, YAML เป็นต้น) แล้วนำไปพาร์สเพื่อใช้งานในแอปพลิเคชัน
    • เนื่องจาก LLM ไม่มีความแน่นอนในการทำงาน จึงอาจไม่ทำงานตามที่ร้องขอเสมอไป
    • สามารถกำหนดโครงสร้างผลลัพธ์ที่ต้องการไว้ และตั้งค่าการลองใหม่ได้หาก LLM ไม่ส่งคืนโครงสร้างตามที่ขอ
    • ยังมีความสามารถในการพาร์สโครงสร้างบางส่วนจากสตรีม ทำให้สามารถสตรีมผลลัพธ์ได้โดยไม่ต้องรอคำตอบทั้งหมด
  • Kedro

    • ได้รับการปรับปรุงอย่างมากในฐานะเครื่องมือ MLOps และยังคงมุ่งเน้นที่ความเป็นโมดูลและแนวปฏิบัติด้านวิศวกรรม
    • เน้นความเป็นโมดูล เช่น การแยกโค้ดออกจากข้อมูลด้วยการนำแพ็กเกจ kedro-datasets แบบสแตนด์อโลนมาใช้
    • ปรับปรุง CLI, เทมเพลตโปรเจกต์เริ่มต้น และความสามารถด้าน telemetry
    • ล่าสุดมีการเปิดตัวส่วนขยาย VS Code เพื่อยกระดับประสบการณ์ของนักพัฒนา
  • LiteLLM

    • ไลบรารีที่ผสานรวมกับ API ของผู้ให้บริการ LLM หลากหลายรายได้อย่างราบรื่น โดยทำให้การโต้ตอบเป็นมาตรฐานผ่านรูปแบบ OpenAI API
    • รองรับผู้ให้บริการและโมเดลจำนวนมาก พร้อมมอบอินเทอร์เฟซแบบรวมสำหรับ completions, embeddings และการสร้างภาพ
    • ทำให้การผสานรวมง่ายขึ้นด้วยการแปลงอินพุตให้ตรงกับข้อกำหนด endpoint เฉพาะของผู้ให้บริการแต่ละราย
    • มีเฟรมเวิร์กสำหรับใช้งานความสามารถด้านปฏิบัติการที่จำเป็นต่อแอปพลิเคชันระดับโปรดักชัน เช่น caching, logging, rate limiting และ load balancing
    • ช่วยให้สลับใช้โมเดลต่าง ๆ ได้ง่าย ซึ่งเป็นความสามารถที่จำเป็นในสถานการณ์ปัจจุบันที่โมเดลพัฒนาอย่างรวดเร็ว
    • ควรตระหนักว่าคำตอบของโมเดลต่อพรอมป์เดียวกันมีความหลากหลาย ดังนั้นการมีเพียงวิธีเรียกใช้งานที่สม่ำเสมออาจไม่เพียงพอต่อการปรับประสิทธิภาพของ completions ให้เหมาะสม
    • แต่ละโมเดลยังมีการทำฟีเจอร์เสริมในแบบเฉพาะของตนเอง จึงอาจยากที่อินเทอร์เฟซเดียวจะรองรับทุกความสามารถได้
  • LlamaIndex

    • มีเอนจินสำหรับออกแบบแอปพลิเคชัน LLM แบบเฉพาะโดเมนและอิงบริบท พร้อมรองรับงานอย่างการรวบรวมข้อมูล การทำ vector indexing และการถามตอบเอกสารด้วยภาษาธรรมชาติ
    • สามารถใช้ LlamaIndex เพื่อทำเอกสารเข้าโดยอัตโนมัติ ทำดัชนี embeddings ของเอกสาร และสร้างไปป์ไลน์ RAG (Retrieval-Augmented Generation) ที่คิวรี embeddings เหล่านี้ตามอินพุตของผู้ใช้
    • สามารถใช้ LlamaHub เพื่อขยายหรือปรับแต่งโมดูลของ LlamaIndex และสร้างแอปพลิเคชัน LLM ร่วมกับผู้ให้บริการ LLM, embeddings และ vector store ที่ต้องการได้
  • LLM Guardrails

    • ชุดแนวทาง นโยบาย หรือฟิลเตอร์ที่ช่วยป้องกันไม่ให้ LLM สร้างเนื้อหาที่เป็นอันตราย ทำให้เข้าใจผิด หรือไม่เกี่ยวข้อง
    • ยังสามารถใช้ปกป้องแอปพลิเคชัน LLM จากผู้ใช้ประสงค์ร้ายที่พยายามใช้ระบบในทางที่ผิดด้วยเทคนิคอย่างการบิดเบือนอินพุต
    • ทำหน้าที่เป็นตาข่ายความปลอดภัยโดยกำหนดขอบเขตให้กับการประมวลผลและการสร้างเนื้อหาของโมเดล
    • เฟรมเวิร์กที่กำลังมาแรงในด้านนี้ เช่น NeMo Guardrails, Guardrails AI และ Aporia Guardrails มีประโยชน์อย่างมาก
    • แนะนำให้วาง guardrails ในทุกแอปพลิเคชัน LLM และปรับปรุงกฎกับนโยบายอย่างต่อเนื่อง
    • เป็นสิ่งสำคัญต่อการสร้างแอปแชต LLM ที่มีความรับผิดชอบและเชื่อถือได้
  • Medusa

    • โซลูชันอีคอมเมิร์ซสำหรับสร้างเว็บไซต์ช้อปปิ้งส่วนใหญ่มักตกอยู่ในกับดัก 80/20
    • Medusa เป็นแพลตฟอร์มคอมเมิร์ซโอเพนซอร์สที่ปรับแต่งได้สูงและมีความสมดุลดี ช่วยให้นักพัฒนาสร้างประสบการณ์ช้อปปิ้งที่มีเอกลักษณ์และปรับให้เหมาะเฉพาะได้
    • สร้างบน Next.js และ PostgreSQL พร้อมโมดูลที่ครอบคลุมตั้งแต่รถเข็นสินค้า การจัดการคำสั่งซื้อ ไปจนถึงฟีเจอร์ขั้นสูงอย่างโมดูลบัตรของขวัญและการคำนวณภาษีตามภูมิภาค ช่วยเร่งกระบวนการพัฒนา
    • เมื่อนำไปใช้กับบางโปรเจกต์แล้วได้รับการประเมินว่าเป็นเฟรมเวิร์กที่มีคุณค่า
  • Pkl

    • ภาษาและเครื่องมือสำหรับคอนฟิกแบบโอเพนซอร์สที่ Apple สร้างขึ้นมาใช้ภายในในช่วงแรก
    • ความสามารถหลักคือระบบชนิดข้อมูลและการตรวจสอบความถูกต้องที่ช่วยจับข้อผิดพลาดของคอนฟิกได้ก่อนนำไป deploy
    • ช่วยลดความซ้ำซ้อนของโค้ด (เช่น กรณี override ตาม environment) และสามารถตรวจสอบความถูกต้องของการเปลี่ยนแปลงคอนฟิกก่อนนำไปใช้กับสภาพแวดล้อมจริง
    • รองรับการผสานรวมกับ IDE และภาษาต่าง ๆ อย่างกว้างขวาง รวมถึงการสร้างไฟล์ JSON, PLIST, YAML, .properties และการสร้างโค้ด
  • ROS 2

    • เฟรมเวิร์กโอเพนซอร์สสำหรับการพัฒนาระบบหุ่นยนต์
    • มีไลบรารีและเครื่องมือที่ช่วยให้สามารถนำแอปพลิเคชันไปใช้งานแบบโมดูลาร์ได้ โดยครอบคลุมความสามารถอย่างการสื่อสารระหว่างโปรเซส การทำงานแบบมัลติเธรด และคุณภาพการให้บริการ
    • ได้รับการปรับปรุงจากเวอร์ชันก่อนหน้าในด้านความสามารถแบบเรียลไทม์ ความเป็นโมดูลที่ดีขึ้น การรองรับแพลตฟอร์มที่กว้างขึ้น และค่าเริ่มต้นที่สมเหตุสมผล
    • สำหรับผู้ผลิตที่มีแอปพลิเคชันภายในรถที่ซับซ้อนและเปลี่ยนแปลงอยู่ตลอด เช่น ความสามารถในการขับขี่อัตโนมัติ สถาปัตยกรรมแบบ node-based และโมเดลการสื่อสารแบบ topic-based มีความน่าสนใจเป็นพิเศษ
    • กำลังถูกใช้งานมากขึ้นเรื่อย ๆ ในอุตสาหกรรมยานยนต์
  • seL4

    • ใน SDV หรือสถานการณ์สำคัญด้านความปลอดภัยอื่น ๆ ความเสถียรแบบเรียลไทม์ของระบบปฏิบัติการเป็นสิ่งสำคัญ
    • เนื่องจากมีอุปสรรคในการเข้าสู่ตลาดสูง ทำให้มีเพียงไม่กี่บริษัทที่ครองพื้นที่นี้อยู่ ดังนั้นโซลูชันโอเพนซอร์สอย่าง seL4 จึงมีคุณค่า
    • seL4 เป็นไมโครเคอร์เนลของระบบปฏิบัติการที่มีความเชื่อมั่นสูงและประสิทธิภาพสูง
    • ใช้วิธี formal verification เพื่อตรวจสอบว่าการทำงานของระบบปฏิบัติการสอดคล้องกับข้อกำหนดในเชิง “คณิตศาสตร์” หรือไม่
    • สถาปัตยกรรมไมโครเคอร์เนลลดความรับผิดชอบของแกนหลักให้เหลือน้อยที่สุดเพื่อรับประกันเสถียรภาพของระบบ
    • บริษัทผู้ผลิตรถยนต์ไฟฟ้าอย่าง NIO กำลังทำงานร่วมกับระบบนิเวศ seL4 และอาจมีความก้าวหน้าเพิ่มเติมในด้านนี้ในอนาคต
  • SetFit

    • ปัจจุบันเครื่องมือที่ขับเคลื่อนด้วย AI ส่วนใหญ่เป็นแบบสร้างเนื้อหา ทั้งการสร้างข้อความและภาพ รวมถึงใช้ GPT
    • สำหรับงานข้อความแบบดั้งเดิม (เช่น การจัดประเภทข้อความหรือการระบุเจตนา) มักนิยมใช้ sentence transformers
    • SetFit เป็นเฟรมเวิร์กสำหรับ fine-tune sentence transformers
    • ใช้การเรียนรู้แบบเปรียบเทียบเพื่อแยก intent classes ต่าง ๆ ออกจากกัน และมักทำให้ได้การแยกที่ชัดเจนแม้มีตัวอย่างเพียงจำนวนน้อยมาก
    • sentence transformers ยังสามารถมีบทบาทในระบบ generative AI ได้เช่นกัน
    • ประสบความสำเร็จในการใช้ SetFit เพื่อตรวจจับเจตนาในระบบแชตบอตที่ติดต่อกับลูกค้าโดยใช้ LLM และเลือกตัวจัดประเภทที่อิง SetFit เพื่อการกรองที่เข้มงวดยิ่งขึ้น
  • vLLM

    • เอนจินอนุมานสำหรับ LLM ที่มี throughput สูงและใช้หน่วยความจำอย่างมีประสิทธิภาพ ซึ่งสามารถรันได้ทั้งบนคลาวด์หรือ on-premises
    • รองรับสถาปัตยกรรมโมเดลหลายแบบและโมเดลโอเพนซอร์สยอดนิยมได้อย่างราบรื่น
    • มีการ deploy vLLM workers แบบคอนเทนเนอร์บนแพลตฟอร์ม GPU อย่าง NVIDIA DGX และ Intel HPC เพื่อโฮสต์โมเดลอย่าง Llama 3.1 (8B และ 70B), Mistral 7B และ Llama-SQL สำหรับงานอย่างการช่วยเขียนโค้ด การค้นคืนความรู้ และการโต้ตอบกับฐานข้อมูลด้วยภาษาธรรมชาติ
    • เข้ากันได้กับมาตรฐาน OpenAI SDK ช่วยส่งเสริมการให้บริการโมเดลอย่างสม่ำเสมอ
    • AI Model Catalog ของ Azure ปรับปรุงประสิทธิภาพการให้บริการโมเดลด้วย custom inference containers และใช้ vLLM เป็นเอนจินอนุมานเริ่มต้น เนื่องจากมี throughput สูงและการจัดการหน่วยความจำที่มีประสิทธิภาพ
    • เฟรมเวิร์ก vLLM กำลังกลายเป็นตัวเลือกเริ่มต้นสำหรับการ deploy โมเดลขนาดใหญ่

Assess

  • Apache XTable™

    • ในบรรดารูปแบบ open table ที่ใช้งานได้ ยังไม่มีผู้ชนะที่ชัดเจน
    • เครื่องมืออย่าง Delta UniForm ช่วยให้เกิดการทำงานร่วมกันระหว่างรูปแบบเหล่านี้ได้
    • Apache XTable™ เป็นโปรเจกต์ Apache Incubator ที่ส่งเสริมการทำงานร่วมกันแบบสองทางอย่างเต็มรูปแบบระหว่าง Hudi, Delta และ Iceberg
    • อย่างไรก็ตาม เนื่องจากความแตกต่างด้านความสามารถของรูปแบบเหล่านี้ การพึ่งพาการทำงานร่วมกันแบบสองทางอย่างมากในระยะยาวอาจทำให้ทีมใช้ได้เพียงฟีเจอร์ระดับ “ตัวหารร่วมต่ำสุด” เท่านั้น
  • dbldatagen

    • การเตรียมข้อมูลทดสอบสำหรับ data engineering เป็นความท้าทายอย่างมาก
    • การย้ายข้อมูลจากโปรดักชันไปยังสภาพแวดล้อมทดสอบอาจมีความเสี่ยง ดังนั้นทีมจึงมักพึ่งพาข้อมูลปลอมหรือข้อมูลสังเคราะห์
    • dbldatagen (Databricks Labs Data Generator) เป็นไลบรารี Python สำหรับสร้างข้อมูลสังเคราะห์ภายในสภาพแวดล้อม Databricks เพื่อใช้ในการทดสอบ การทำเบนช์มาร์ก เดโม และอื่น ๆ
    • dbldatagen สามารถสร้างข้อมูลได้ระดับหลายพันล้านแถวภายในไม่กี่นาที รองรับหลากหลายสถานการณ์ เช่น หลายตาราง, change data capture และงาน merge/join พร้อมความสามารถในการสร้างข้อมูลสังเคราะห์ในสเกลใหญ่
  • DeepEval

    • DeepEval เป็นเฟรมเวิร์กประเมินผลแบบโอเพนซอร์สบนพื้นฐาน Python สำหรับประเมินประสิทธิภาพของ LLM
    • สามารถใช้ประเมินแอปแบบ RAG (retrieval-augmented generation) และแอปประเภทอื่น ๆ ที่สร้างด้วยเฟรมเวิร์กยอดนิยมอย่าง LlamaIndex หรือ LangChain รวมถึงใช้ตั้งค่า baseline และ benchmark เมื่อต้องการเปรียบเทียบโมเดลหลายแบบตามความจำเป็น
    • DeepEval มีเมตริกและความสามารถที่ครอบคลุมสำหรับประเมินประสิทธิภาพของ LLM เช่น การตรวจจับอาการหลอน, ความเกี่ยวข้องของคำตอบ และการปรับแต่งไฮเปอร์พารามิเตอร์
    • รองรับการทำงานร่วมกับ pytest และสามารถผนวกชุดทดสอบเข้ากับ CI (continuous integration) pipeline พร้อม assertion ได้อย่างง่ายดาย
  • DSPy

    • ปัจจุบัน แอปพลิเคชันส่วนใหญ่ที่อิงกับ language model ยังพึ่งพา prompt template ที่ปรับแต่งด้วยมือสำหรับงานเฉพาะ
    • DSPy เป็นเฟรมเวิร์กสำหรับพัฒนาแอปพลิเคชันลักษณะนี้ โดยใช้แนวทางที่แตกต่างออกไปซึ่งตัดความจำเป็นของ prompt engineering โดยตรง
    • โดยจะนำเสนอ abstraction ระดับสูงที่เกี่ยวข้องกับ flow ของโปรแกรม (ผ่านโมดูลที่สามารถซ้อนเป็นชั้น ๆ กันได้), เมตริกที่จะใช้ปรับให้เหมาะสม และข้อมูลที่จะใช้ฝึกหรือทดสอบ
    • จากนั้นจึงปรับ prompt หรือ weight ของ language model พื้นฐานให้เหมาะสมตามเมตริกที่กำหนดไว้
    • โค้ดเบสที่ได้มีลักษณะคล้ายกับการฝึก neural network ด้วย PyTorch อย่างมาก
  • Flutter for Web

    • Flutter เป็นที่รู้จักจากการรองรับข้ามแพลตฟอร์มสำหรับแอปพลิเคชัน iOS และ Android
    • ตอนนี้ได้ขยายไปยังแพลตฟอร์มอื่น ๆ มากขึ้นแล้ว
    • สามารถสร้างแอปสำหรับ iOS, Android และเบราว์เซอร์ได้จากโค้ดเบสเดียวกัน
    • แม้ว่าเว็บแอปพลิเคชันไม่ใช่ทุกประเภทจะเหมาะกับ Flutter แต่เหมาะเป็นพิเศษสำหรับ progressive web app, single-page app และกรณีแปลงแอปมือถือ Flutter เดิมให้ทำงานบนเว็บ
    • Flutter รองรับ WebAssembly (WASM) เป็นคอมไพล์เป้าหมายในช่องทางทดลองมาระยะหนึ่งแล้ว ซึ่งหมายความว่ายังอยู่ระหว่างการพัฒนาอย่างต่อเนื่องและอาจมีบั๊กหรือปัญหาด้านประสิทธิภาพ
    • ในรีลีสล่าสุด ความสามารถนี้ได้เข้าสู่สถานะเสถียรแล้ว
    • ประสิทธิภาพของ Flutter เว็บแอปพลิเคชันที่คอมไพล์ไปยัง WASM นั้นดีกว่าเป้าหมายการคอมไพล์แบบ JavaScript อย่างชัดเจน
    • ประสิทธิภาพที่ใกล้เคียง native บนหลายแพลตฟอร์มก็เป็นหนึ่งในเหตุผลที่ทำให้นักพัฒนาหลายคนเลือก Flutter ตั้งแต่แรก
  • kotaemon

    • kotaemon เป็นเครื่องมือและเฟรมเวิร์กแบบโอเพนซอร์สที่อิง RAG สำหรับสร้างแอป Q&A สำหรับเอกสารฐานความรู้
    • สามารถเข้าใจเอกสารได้หลายประเภท รวมถึงไฟล์ PDF และ DOC และมีเว็บ UI ที่สร้างบนพื้นฐาน Gradio เพื่อให้ผู้ใช้จัดการฐานความรู้และโต้ตอบผ่านอินเทอร์เฟซแชตได้
    • มี RAG pipeline ในตัวพร้อม vector store และสามารถขยายความสามารถได้ด้วย SDK
    • นอกจากนี้ยังรองรับการอ้างอิงเอกสารต้นทางในคำตอบ พร้อมการแสดงตัวอย่างแบบอินไลน์บนเว็บและคะแนนความเกี่ยวข้อง
    • หากต้องการแอปพลิเคชัน Q&A เอกสารที่อิง RAG เฟรมเวิร์กที่ปรับแต่งได้นี้ถือเป็นจุดเริ่มต้นที่ดีมาก
  • Lenis

    • Lenis เป็นไลบรารี smooth scrolling ที่มีน้ำหนักเบาแต่ทรงพลัง ออกแบบมาสำหรับเบราว์เซอร์สมัยใหม่
    • รองรับประสบการณ์การเลื่อนที่ลื่นไหล เช่น การซิงก์การเลื่อนกับ WebGL และเอฟเฟกต์พารัลแลกซ์ จึงเหมาะอย่างยิ่งสำหรับทีมที่สร้างหน้าเว็บที่มีปฏิสัมพันธ์การเลื่อนที่ยืดหยุ่นและลื่นไหล
    • นักพัฒนาพบว่า Lenis เรียบง่าย ใช้งานง่าย และมอบแนวทางที่กระชับสำหรับการสร้าง smooth scrolling
    • อย่างไรก็ตาม ไลบรารีนี้อาจมีปัญหาด้านการเข้าถึง โดยเฉพาะปฏิสัมพันธ์การเลื่อนแนวตั้งและแนวนอนที่อาจทำให้ผู้ใช้ที่มีความพิการสับสน
    • แม้จะดึงดูดสายตา แต่หากต้องการคงการเข้าถึงไว้ก็จำเป็นต้องนำไปใช้อย่างระมัดระวัง
  • LLMLingua

    • LLMLingua ช่วยเพิ่มประสิทธิภาพของ LLM โดยบีบอัด prompt ผ่านการตัด token ที่ไม่จำเป็นออกด้วย language model ขนาดเล็ก ทำให้สูญเสียประสิทธิภาพน้อยที่สุด
    • แนวทางนี้ช่วยให้ LLM จัดการ prompt ที่ยาวขึ้นได้อย่างมีประสิทธิภาพ พร้อมคงความสามารถด้านการให้เหตุผลและการเรียนรู้ในบริบทไว้ จึงช่วยแก้โจทย์อย่างความคุ้มค่าด้านต้นทุน, latency ของการอนุมาน และการจัดการบริบท
    • LLMLingua รองรับ LLM ได้หลากหลายโดยไม่ต้องฝึกเพิ่มเติม และรองรับเฟรมเวิร์กอย่าง LlamaIndex จึงเหมาะสำหรับการเพิ่มประสิทธิภาพของงานอนุมาน LLM
  • Microsoft Autogen

    • Microsoft Autogen เป็นเฟรมเวิร์กโอเพนซอร์สที่ช่วยทำให้การสร้างและ orchestration ของ AI agent ง่ายขึ้น และรองรับการทำงานร่วมกันของหลาย agent เพื่อแก้ปัญหางานที่ซับซ้อน
    • รองรับทั้งเวิร์กโฟลว์แบบอัตโนมัติและแบบ human-in-the-loop พร้อมความเข้ากันได้กับ LLM หลากหลายตัวและเครื่องมือสำหรับปฏิสัมพันธ์ระหว่าง agent
    • ทีมหนึ่งใช้ Autogen กับลูกค้าเพื่อสร้างแพลตฟอร์มที่ขับเคลื่อนด้วย AI โดยให้แต่ละ agent แทนทักษะเฉพาะ เช่น การสร้างโค้ด การรีวิวโค้ด หรือการสรุปเอกสาร
    • ด้วยการกำหนดโมเดลและเวิร์กโฟลว์ที่เหมาะสมผ่านเฟรมเวิร์ก ทีมจึงสามารถสร้าง agent ใหม่ได้อย่างราบรื่นและสม่ำเสมอ
    • โดยใช้ LlamaIndex เพื่อ orchestration เวิร์กโฟลว์ ทำให้ agent จัดการงานอย่างการค้นหาสินค้าและการเสนอแนะโค้ดได้อย่างมีประสิทธิภาพ
    • Autogen แสดงให้เห็นถึงศักยภาพอย่างมาก โดยเฉพาะในสภาพแวดล้อมโปรดักชัน แต่ยังคงมีความกังวลเรื่อง scalability และการจัดการความซับซ้อนเมื่อมีการเพิ่ม agent มากขึ้น
    • จำเป็นต้องมีการประเมินเพิ่มเติมเพื่อพิจารณาความเป็นไปได้ในระยะยาวของการขยายระบบที่อิง agent
  • Pingora

    • Pingora เป็นเฟรมเวิร์ก Rust สำหรับสร้างบริการเครือข่ายที่รวดเร็ว เสถียร และสามารถเขียนโปรแกรมควบคุมได้
    • Pingora ซึ่งเดิมพัฒนาโดย Cloudflare เพื่อแก้ข้อจำกัดของ Nginx ได้แสดงให้เห็นถึงศักยภาพอย่างมากแล้ว โดยมีพร็อกซีรุ่นใหม่อย่าง River ถูกสร้างขึ้นบนพื้นฐานนี้
    • แม้คนส่วนใหญ่จะไม่ได้เผชิญกับขนาดระดับ Cloudflare แต่ก็ยังพบสถานการณ์ที่การทำ routing ในแอปพลิเคชันเลเยอร์อย่างยืดหยุ่นเป็นสิ่งจำเป็นสำหรับบริการเครือข่าย
    • สถาปัตยกรรมของ Pingora ทำให้สามารถใช้ประโยชน์จากความสามารถทั้งหมดของ Rust ในสถานการณ์เช่นนี้ได้ โดยไม่ต้องแลกกับความปลอดภัยหรือประสิทธิภาพ
  • Ragas

    • Ragas เป็นเฟรมเวิร์กที่ออกแบบมาเพื่อประเมินประสิทธิภาพของ RAG pipeline โดยมุ่งแก้โจทย์การประเมินทั้งองค์ประกอบด้านการค้นคืนและการสร้าง
    • มีเมตริกแบบมีโครงสร้าง เช่น fidelity, ความเกี่ยวข้องของคำตอบ และการใช้บริบท เพื่อช่วยประเมินประสิทธิผลของระบบที่อิง RAG
    • นักพัฒนาพบว่ามีประโยชน์สำหรับการรันการประเมินเป็นประจำเพื่อปรับแต่งพารามิเตอร์อย่าง top-k retrieval และ embedding model
    • บางทีมได้นำ Ragas ไปผนวกเข้ากับ pipeline ที่รันทุกวันเมื่อมีการเปลี่ยนแปลง prompt template หรือโมเดล
    • แม้เมตริกจะให้ข้อมูลเชิงลึกที่แข็งแรง แต่ก็มีความกังวลว่าเฟรมเวิร์กอาจไม่สามารถจับทุกนัยสำคัญและปฏิสัมพันธ์ที่ซับซ้อนของ RAG pipeline ที่ซับซ้อนได้ จึงแนะนำให้พิจารณาเฟรมเวิร์กประเมินอื่นเพิ่มเติม
    • ถึงกระนั้น Ragas ก็โดดเด่นจากความสามารถในการทำให้การประเมิน RAG ในสภาพแวดล้อมโปรดักชันง่ายขึ้น และช่วยให้เกิดการปรับปรุงบนพื้นฐานข้อมูล
  • Score

    • หลายองค์กรที่สร้างแพลตฟอร์มพัฒนาภายในของตนเองมักมีแนวโน้มจะสร้างระบบ orchestration ของแพลตฟอร์มขึ้นมาเอง เพื่อบังคับใช้มาตรฐานขององค์กรระหว่างนักพัฒนาและทีมโฮสต์แพลตฟอร์ม
    • อย่างไรก็ตาม ความสามารถพื้นฐานของแพลตฟอร์มการใช้งานแบบ paved road สำหรับโฮสต์ container workload อย่างปลอดภัย สม่ำเสมอ และเป็นไปตามข้อกำหนดนั้นมีความคล้ายกันในแต่ละองค์กร
    • จะดีไหมหากมีภาษากลางร่วมกันสำหรับระบุข้อกำหนดเหล่านี้
    • Score กำลังแสดงให้เห็นถึงศักยภาพที่จะกลายเป็นมาตรฐานในด้านนี้
    • เป็นภาษาประกาศแบบ YAML สำหรับอธิบายวิธี deploy containerized workload รวมถึง service และพารามิเตอร์เฉพาะที่จำเป็นต่อการรัน
    • เดิมที Score ถูกพัฒนาขึ้นเป็นภาษาคอนฟิกสำหรับผลิตภัณฑ์ Platform Orchestrator ของ Humanitec แต่ปัจจุบันเป็นโครงการโอเพนซอร์สภายใต้การดูแลของ CNCF (Cloud Native Computing Foundation)
    • ด้วยการสนับสนุนจาก CNCF ทำให้ Score มีโอกาสถูกใช้งานอย่างกว้างขวางมากขึ้นนอกเหนือจากผลิตภัณฑ์ของ Humanitec
    • เปิดตัวพร้อมกับ reference implementation สองแบบคือ Kubernetes และ Docker Compose
    • คาดว่าความสามารถในการขยายของ Score จะนำไปสู่การมีส่วนร่วมจากชุมชนสำหรับแพลตฟอร์มอื่น ๆ
    • Score มีความคล้ายคลึงกับข้อกำหนด Open Application Model (OAM) สำหรับ Kubevela แต่เน้นที่การ deploy container workload มากกว่าทั้งแอปพลิเคชัน
    • ยังมีส่วนที่ทับซ้อนกับ SST อยู่บ้าง แต่ SST สนใจการ deploy ไปยัง cloud infrastructure โดยตรงมากกว่าแพลตฟอร์มวิศวกรรมภายใน
    • เรากำลังติดตาม Score ด้วยความสนใจขณะที่มันพัฒนาต่อไป
  • shadcn

    • shadcn ท้าทายแนวคิดดั้งเดิมของไลบรารีคอมโพเนนต์ ด้วยการมอบคอมโพเนนต์ที่นำกลับมาใช้ซ้ำได้และคัดลอกไปวางได้
    • แนวทางนี้มอบความเป็นเจ้าของและการควบคุมอย่างเต็มที่ให้กับทีม ทำให้ปรับแต่งและขยายได้ง่ายขึ้น ซึ่งเป็นจุดที่ไลบรารีดั้งเดิมที่ใช้กันทั่วไปอย่าง MUI และ Chakra UI มักทำได้ไม่ดีนัก
    • shadcn ที่สร้างบน Radix UI และ Tailwind CSS สามารถผสานเข้ากับแอปพลิเคชันที่ใช้ React ได้อย่างราบรื่น จึงเหมาะกับโครงการที่ให้ความสำคัญกับการควบคุมและการขยายต่อ
    • มี CLI ที่ช่วยรองรับกระบวนการคัดลอกและวางคอมโพเนนต์ลงในโปรเจ็กต์
    • ด้วยข้อดีในการลด hidden dependency และป้องกัน implementation ที่ผูกติดกันแน่นเกินไป shadcn จึงได้รับความสนใจในฐานะทางเลือกที่น่าสนใจสำหรับทีมที่มองหาแนวทางการพัฒนาฟรอนต์เอนด์ที่ใช้งานได้จริงและยืดหยุ่นกว่าเดิม
  • Slint

    • Slint เป็นเฟรมเวิร์ก GUI แบบ declarative สำหรับสร้าง native user interface สำหรับแอปพลิเคชัน Rust, C++ หรือ JavaScript
    • แม้จะเป็นเฟรมเวิร์ก UI แบบหลายแพลตฟอร์มที่มีฟีเจอร์สำคัญอย่าง live preview, การออกแบบ UI แบบ responsive, การผสานกับ VS Code และประสบการณ์ผู้ใช้แบบ native แต่เราอยากเน้นย้ำถึงประโยชน์ของมันสำหรับระบบ embedded โดยเฉพาะ
    • ทีมที่พัฒนาแอปพลิเคชัน embedded โดยทั่วไปมีตัวเลือกสำหรับการพัฒนา UI อย่างจำกัดมาแต่เดิม และแต่ละตัวเลือกก็มีข้อดีข้อเสียของตัวเอง
    • Slint ใช้ภาษามาร์กอัปที่คล้าย HTML และใช้งานง่าย อีกทั้งคอมไพล์ตรงเป็น machine code ทำให้เกิดสมดุลที่ยอดเยี่ยมระหว่างประสบการณ์นักพัฒนาและประสิทธิภาพ
    • ในส่วน runtime ก็ยังใช้ทรัพยากรต่ำ ซึ่งเป็นเรื่องสำคัญสำหรับระบบ embedded
    • สรุปได้ว่า เราชื่นชอบ Slint เพราะมันนำแนวปฏิบัติที่ผ่านการพิสูจน์แล้วจากการพัฒนาเว็บและมือถือเข้าสู่ระบบนิเวศ embedded
  • SST

    • SST เป็นเฟรมเวิร์กสำหรับ deploy แอปพลิเคชันไปยังสภาพแวดล้อม cloud พร้อม service ทั้งหมดที่จำเป็นต่อการรันแอปพลิเคชันนั้น
    • SST ไม่ใช่แค่เครื่องมือ IaC ธรรมดา แต่เป็นเฟรมเวิร์กที่มี TypeScript API สำหรับกำหนดสภาพแวดล้อมของแอปพลิเคชัน รวมถึงมี service ที่ deploy แอปพลิเคชันเมื่อถูก trigger จาก Git push และมี GUI console สำหรับจัดการแอปพลิเคชันที่ได้ผลลัพธ์รวมถึงเรียกใช้ความสามารถด้านการจัดการของ SST
    • เดิมที SST สร้างอยู่บน AWS Cloud Formation และ CDK แต่เวอร์ชันล่าสุดถูกติดตั้งอยู่บน Terraform และ Pulumi ทำให้ในทางทฤษฎีไม่ผูกกับ cloud ใด cloud หนึ่ง
    • SST รองรับการ deploy เฟรมเวิร์กเว็บแอปมาตรฐานหลายตัวโดยตรง เช่น Next.js และ Remix และยังรองรับแอปพลิเคชัน API แบบ headless ด้วย
    • SST ดูเหมือนจะอยู่ในหมวดหมู่ของตัวเอง
    • แม้จะมีความคล้ายกับเครื่องมือ platform orchestration อย่าง Kubevela แต่ก็มีฟีเจอร์อำนวยความสะดวกให้นักพัฒนา เช่น live mode ที่พร็อกซีการเรียก AWS Lambda ไปยังฟังก์ชันที่รันอยู่บนเครื่อง local ของนักพัฒนา
    • ขณะนี้ SST ยังเป็นสิ่งที่ชวนให้สนใจอยู่เล็กน้อย แต่เมื่อมันพัฒนาต่อไป ก็เป็นทั้งโครงการและส่วนหนึ่งของหมวดหมู่เครื่องมือที่น่าจับตา

Hold : ไม่มี

10 ความคิดเห็น

 
kane44 2024-11-05

ขอบคุณครับ สนุกดีนะครับ

 
dastjead 2024-11-04

เหนื่อยมากเลยนะ... ขอบคุณมากครับ!

 
roxie 2024-10-31

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

พอลองเลื่อนด้วยล้อเมาส์ก็รู้สึกว่าแอนิเมชันสะดุดอยู่เรื่อย ๆ แต่ถ้ากดปุ่มลูกศรลงเพื่อเลื่อนก็เร็วเกินไปจนอ่านเนื้อหาได้ยาก

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

 
roxie 2024-10-31

Databricks โผล่มาเยอะจนน่ากลัวเลยนะ

 
halfenif 2024-10-29

อ่านไปอ่านมาก็หมดแรงเลย ฮือฮือ

 
savvykang 2024-10-29

ฉันได้รวบรวมผลิตภัณฑ์/บริการที่เคยถูกโพสต์บน GeekNews ไว้แล้ว

Platforms - Assess

Platforms - Trial

Language and Frameworks - Adopt

Language and Frameworks - Assess

Language and Frameworks - Trial

Tools - Adopt

Tools - Assess

Tools - Trial

 
wwhite103 2024-10-29

ขอบคุณครับ น่าสนุกดีนะ~

 
nottiger 2024-10-29

อ่านแล้วครับ ขอบคุณมากครับ

 
bbulbum 2024-10-29

อ่านอย่างเพลิดเพลินมากครับ ขอบคุณครับ