2 คะแนน โดย GN⁺ 2023-07-16 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Uxn/Varvara คือ สแตกการประมวลผลส่วนบุคคล ที่มี เครื่องเสมือนขนาดเล็ก เป็นศูนย์กลาง เพื่อให้แอปพลิเคชันเดียวกันทำงานได้บนหลายระบบ
  • แม้จะเริ่มต้นจากความต้องการเฉพาะด้านในการโฮสต์แอปพลิเคชันแบบกราฟิก แต่ก็เปิดเผยให้ทุกคนนำไปใช้เป็น เป้าหมายสำหรับการรีลีส ได้
  • โปรแกรมถูกเขียนด้วยภาษาเฉพาะของมันเองคือ Uxntal และรูปแบบการแจกจ่ายคล้ายกับการแชร์เกม ROM สำหรับอีมูเลเตอร์คอนโซลแบบคลาสสิก
  • การรันต้องใช้อีมูเลเตอร์ตามระบบปฏิบัติการ และยังสามารถพัฒนาอีมูเลเตอร์ขึ้นเองจากสเปกของ VM และ I/O ได้
  • โครงสร้างที่ใช้ ROM เดียวกันรันได้บนเดสก์ท็อป อุปกรณ์อิเล็กทรอนิกส์ขนาดเล็ก เครื่องพกพา และเบราว์เซอร์ ทำให้ซอฟต์แวร์ขนาดเล็กดูแลรักษาได้ยาวนานและย้ายข้ามสภาพแวดล้อมต่าง ๆ ได้ง่าย

สแตกการประมวลผลที่ Uxn/Varvara มุ่งไปสู่

  • ระบบนิเวศ Uxn/Varvara คือ สแตกการประมวลผลส่วนบุคคล ที่มี เครื่องเสมือนขนาดเล็ก เป็นแกนกลาง
  • เป้าหมายหลักคือทำให้แอปพลิเคชันเดียวกันสามารถทำงานได้บนหลายระบบ
  • การออกแบบตั้งอยู่บนแนวคิด ให้ความสำคัญกับการลงมือสร้างก่อน และปรับให้เหมาะกับความต้องการเฉพาะในการโฮสต์แอปพลิเคชันแบบกราฟิก
  • Uxn เขียนโปรแกรมด้วยภาษาเฉพาะของตัวเองคือ Uxntal
  • การแจกจ่ายโปรแกรม Uxn คล้ายกับการแชร์ เกม ROM สำหรับอีมูเลเตอร์คอนโซลแบบคลาสสิก
  • ดูเบื้องหลังการออกแบบเพิ่มเติมได้ในโน้ต uxn design

อีมูเลเตอร์และการรัน ROM

  • หากต้องการรันโปรแกรม Uxn ต้องมี อีมูเลเตอร์ ที่ตรงกับระบบ
  • สามารถพัฒนาอีมูเลเตอร์ขึ้นเองได้จากสเปกของ VM และ I/O
  • อีมูเลเตอร์ข้ามแพลตฟอร์มสำหรับเดสก์ท็อปต้องใช้ SDL2
    • Arch: sudo pacman -S sdl2
    • Ubuntu: sudo apt install libsdl2-dev
    • Void Linux: sudo xbps-install SDL2-devel
    • OSX: brew install sdl2
    • openBSD: doas pkg_add sdl2
  • มีหลายวิธีในการรัน ROM
    • ใช้โปรแกรม launcher
    • ลากไฟล์ .rom ไปวางบนหน้าต่างอีมูเลเตอร์
    • รัน bin/uxnemu path/to/example.rom จากเทอร์มินัล
  • การควบคุมอีมูเลเตอร์พื้นฐานใช้ปุ่มฟังก์ชันและการแมปปุ่ม
    • F1: สลับการซูม
    • F2: สลับดีบักเกอร์
    • F3: จับภาพหน้าจอ
    • F4: โหลด launcher.rom
    • L-Ctrl: A, L-Alt: B, L-Shift: Select, Home: Start

สภาพแวดล้อมที่รันได้และโปรแกรมตัวอย่าง

  • Uxn ROM เดียวกันสามารถใช้ได้บนคอมพิวเตอร์เดสก์ท็อป อุปกรณ์อิเล็กทรอนิกส์ขนาดเล็ก เครื่องพกพารุ่นใหม่ และเบราว์เซอร์
  • ยังมีพอร์ตสำหรับ GBA, Nintendo DS, Playdate, DOS, PlayStation Vita, Raspberry Pi Pico, Teletype, ESP32, Amiga, iOS, STM32, IBM PC และอื่น ๆ โดยบางส่วนยังไม่สมบูรณ์
  • โปรแกรม Uxn ที่มีให้เป็นตัวอย่างครอบคลุมทั้งของเล่น เกม และเครื่องมือ
    • Oquonie: โลกประหลาด
    • Donsol: dungeon crawler แบบการ์ด
    • Left: โปรแกรมแก้ไขข้อความ
    • Noodle: โปรแกรมวาดภาพ
    • Orca: สภาพแวดล้อม live coding
    • Nasu: โปรแกรมแก้ไขสไปรต์
    • Turye: โปรแกรมแก้ไขฟอนต์
    • Catclock: นาฬิกาเดสก์ท็อป
    • Dexe: โปรแกรมแก้ไขเลขฐานสิบหก
    • Bicycle: REPL แบบโต้ตอบ

แหล่งเรียนรู้และชุมชน

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

 
GN⁺ 2023-07-16
ความคิดเห็นจาก Hacker News
  • ทุกแง่มุมของกลุ่มนี้น่าสนใจมาก เป็นพวก ดิจิทัลโนแมดบนเรือ และแต่ละบทความก็เปิดให้เห็นชีวิตแบบที่ไม่เคยคิดมาก่อนว่าจะเป็นไปได้
    ทุกครั้งที่เข้าเว็บนี้ก็เหมือนหล่นลงไปในโพรงกระต่าย ถ้าเป็นอีกชีวิตหนึ่งก็คงอยากลองใช้ชีวิตแบบนั้นดู
    https://100r.co/site/dry_toilet_installation.html

    • มีอะไรน่าสนใจจริง ๆ เยอะมาก ส่วนตัวชอบเรื่อง หลอดรับความร้อนแสงอาทิตย์ มากที่สุด เป็นเรื่องการทำอาหารและถึงขั้นอบขนมปังด้วยแสงแดด
      https://100r.co/site/solar_evacuated_tube_cooking.html
    • พวกเขาเบื่อ dependency และระบบปฏิบัติการที่พองตัวเกินไป เลยใช้งาน 9front กันอย่างจริงจังด้วย 9front มีขนาดเล็กมาก ทุกอย่างคอมไพล์แบบ static และ API ก็เล็ก
      การ cross-compile ก็ทำได้ง่าย และถ้าอ่านหนังสือแนะนำ Plan 9 ของ Ballesteros ไปเรื่อย ๆ ก็จะค่อย ๆ ซึมซับสัญชาตญาณทางวิทยาการคอมพิวเตอร์ไปด้วย
    • ถ้าสนใจก็ยังมีวิกิส่วนตัวของ Devine ด้วย: https://wiki.xxiivv.com/site/home.html
      มีเนื้อหาดี ๆ มากมายจริง ๆ
    • น่าประทับใจมากที่แม้จะต้องจัดการปัญหาใน “โลกความจริง” พวกนี้ทั้งหมด ก็ยังมีพลัง แรงจูงใจ และเวลามาสร้าง virtual machine ได้อีก
      ที่น่าทึ่งคือมันยังรันได้บนฮาร์ดแวร์จริงหลายแบบด้วย เคยเห็นโปรเจ็กต์ virtual machine มามาก แต่ส่วนใหญ่มักให้ความรู้สึกเหมือนถูกแยกขังอยู่ในคอมพิวเตอร์อีกเครื่องหนึ่ง ข้อจำกัดสุดขั้วน่าจะผลักดันให้การออกแบบเดินไปคนละทิศทางโดยสิ้นเชิง
    • ใน YouTube มีวัฒนธรรมย่อยของคนเดินเรือขนาดใหญ่ และส่วนตัวก็ดูเป็นคอนเทนต์หนีความจริง
      แน่นอนว่า YouTube algorithm ก็ยังเป็น YouTube algorithm และทุนนิยมก็ยังเป็นทุนนิยม ดังนั้นวิดีโอการเดินเรือจำนวนไม่น้อยก็เป็นคอนเทนต์บิกินีไปด้วย แต่ขณะเดียวกัน ชีวิตที่ต้องซ่อม ดัดแปลง และอัปเกรดเรือยอชต์ลำเล็กก็เป็นอีกส่วนสำคัญ ตั้งแต่งานไฟเบอร์กลาสไปจนถึงพลังงานแสงอาทิตย์และระบบทำน้ำจืด ทำให้ได้เห็นชีวิตที่น่าสนใจมากจริง ๆ
  • นับถือทีมนี้มาก และควรอ่านบทความยอดเยี่ยมของพวกเขาเกี่ยวกับการค้นหา โมเดลการคอมพิวติ้ง ที่เรียบง่ายกว่าด้วย: https://100r.co/site/weathering_software_winter.html

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

  • บัญชีผู้เขียนบน Mastodon (https://merveilles.town/@neauoire) เป็นขุมทรัพย์ของโปรเจ็กต์เล็ก ๆ และภาพหน้าจอจาก จักรวาลการคอมพิวติ้งคู่ขนาน ของคอมพิวเตอร์ของ Devine
    ขอแนะนำตอนพอดแคสต์ที่ทำร่วมกับ Future of Coding อย่างมาก: https://futureofcoding.org/episodes/044.html และยังมีตอนต่อที่พูดถึง Orca สภาพแวดล้อมดนตรีสดที่น่าทึ่งมาก: https://futureofcoding.org/episodes/045.html
    คนคนนี้และผู้ใช้ Lisp รุ่นเก๋าในฟอรัมนี้ทำให้ผมคิดเรื่องการคอมพิวติ้งทางเลือกและภาษาโปรแกรมเฉพาะกลุ่มมาเป็นเวลานาน Uxn อยู่ในรายการสิ่งที่ต้องทำ และช่วงนี้กำลังยุ่งกับสาย Smalltalk ก่อนจะลงลึกไปใน Forth กับ Uxn :)

    • มีการพูดถึงปฏิทินที่แบ่งปีหนึ่งออกเป็น ช่วงละ 2 สัปดาห์ ตั้งแต่ A ถึง Z รวม 26 ช่วง แต่ 26 ช่วง ๆ ละ 2 สัปดาห์มีแค่ 364 วันเอง เลยสงสัยว่าปฏิทินนี้ตั้งใจให้ปีมี 364 วัน เพิ่มวันพิเศษไว้นอก 26 ช่วง หรือมีวิธีอื่นกันแน่
    • ในโปรไฟล์ Mastodon ระบุ they/them ไว้ชัดเจนเลย
  • เวลาคนกลุ่มนี้ขึ้นหน้าแรกทีไรก็ดีใจทุกครั้ง ซอฟต์แวร์ที่เขียนก็น่าสนใจ แต่สิ่งที่น่าทึ่งจริง ๆ คือการทำให้เรือของพวกเขา พึ่งพาตนเอง ได้มากที่สุดเท่าที่จะทำได้

  • มีแฟน Blame! ไหม? https://wiki.xxiivv.com/site/devine_lu_linvega.html https://blame.fandom.com/wiki/Davine_Lu_Linvega

  • ในบรรดาเว็บของพวกเขา เว็บที่เช็กบ่อยจริง ๆ คือเว็บสูตรอาหาร: https://grimgrains.com/site/home.html
    มีอะไรสนุก ๆ สำหรับคนชอบทำอาหารอยู่พอสมควร

  • Maxine Chevalier-Boisvert ซึ่งเป็นที่รู้จักจากงาน Basic Block Versioning JIT และ yjit ช่วงหลังก็กำลังพูดถึงไอเดียคล้าย ๆ กันอยู่เหมือนกัน
    https://pointersgonewild.com/2023/02/24/building-a-minimalistic-virtual-machine/

  • เป็นงานออกแบบ virtual machine ที่เล็กและสง่างาม น่าจะถูกใจคนจำนวนมากที่นี่

    • สิ่งที่น่าทึ่งคือมันใช้งานได้จริงแค่ไหน พวกเขาพอร์ตมันไปลงอุปกรณ์เก่า ๆ หลากหลายแบบ และยังสร้างซอฟต์แวร์ไว้เพียบ
      ไม่ได้เป็นแค่ดีไซน์บนหน้าเว็บของใครสักคน แต่เอาไปทำเครื่องมือ เกม และงานศิลปะจริง ๆ
    • ถ้าอยากเห็นแนวคิดนี้ในแบบที่เป็นกระแสหลักมากกว่า ก็ลองดู RISC-V ได้ การทำ interpreter virtual machine สำหรับ RISC-V พื้นฐานแบบไม่มีส่วนขยายใช้เวลาประมาณวันเดียว
      ผมลองทำมาแล้ว มันซับซ้อนกว่าชุดคำสั่งของพวกเขาเล็กน้อย แต่ไม่ได้ต่างกันมาก และเพราะมี compiler จริงรองรับเป็น target ได้ จึงแทบจะรันซอฟต์แวร์อะไรก็ได้ เพียงแต่ยังต้องจัดเตรียมสภาพแวดล้อม virtual machine ส่วนที่เหลือสำหรับ I/O และอย่างอื่นอยู่ดี
  • ฟังดูคล้าย Z-Machine ตรงที่เป็น เกมสไตล์เรโทร บนฐาน Forth ใช้สเปกต่ำ และพอร์ตได้แทบทุกที่ แต่เหมาะกับงานพิกเซลมากกว่า
    ดูเหมาะกับเกมสไตล์ GB ที่ไม่ต้องไปสู้กับ instruction set แบบ Z80 และไม่ต้องคอยกังวลว่าจะเผา LCD จริงเพราะบั๊ก timing แปลก ๆ ระหว่างแสดงสไปรต์