14 poin oleh GN⁺ 2024-01-14 | 1 komentar | Bagikan ke WhatsApp
  • Notebook untuk bereksperimen cepat dengan data dan model
  • Eksekusi per sel, perhitungan otomatis, dan pembaruan
  • Selalu bisa dijalankan ulang tanpa status tersembunyi
  • Disimpan sebagai file Python sehingga Git-friendly
  • Notebook dapat dijadikan pipeline atau dideploy sebagai web app interaktif

Lingkungan pemrograman reaktif

  • marimo menjamin konsistensi antara kode notebook, output, dan status program.
  • Saat sebuah sel dijalankan, marimo secara otomatis memperbarui sel yang mereferensikan variabel tersebut sehingga mencegah kesalahan akibat menjalankan ulang sel secara manual.
  • Saat sebuah sel dihapus, marimo menghapus variabel tersebut dari memori program sehingga menghilangkan status tersembunyi.
  • Notebook dijalankan dalam urutan deterministik berdasarkan referensi variabel, sehingga tidak bergantung pada posisi sel di halaman.
  • Saat berinteraksi dengan elemen UI seperti slider, dropdown, dan transformer dataframe, sel yang menggunakan nilainya akan otomatis dijalankan ulang dengan nilai terbaru.
  • marimo menganalisis kode secara statis dan hanya menjalankan sel yang memang perlu dieksekusi untuk meningkatkan performa.
  • marimo menyertakan berbagai fitur kenyamanan seperti GitHub Copilot, pemformatan kode Black, ekspor HTML, pelengkapan kode cepat, dan ekstensi VS Code.

Memulai dengan cepat

  • Instalasi: jalankan pip install marimo atau conda install -c conda-forge marimo di terminal untuk memasang marimo.
  • Membuat notebook: buat notebook kosong dengan marimo editor dan edit notebook dengan nama tertentu menggunakan marimo edit your_notebook.py.
  • Menjalankan app: jalankan marimo run your_notebook.py untuk menjalankan notebook sebagai web app. App ini dapat dideploy ke cloud marimo.
  • Menjalankan sebagai skrip: jalankan python your_notebook.py untuk menjalankan notebook marimo sebagai skrip.
  • Konversi otomatis notebook Jupyter: gunakan CLI untuk mengonversi notebook Jupyter menjadi notebook marimo secara otomatis.
  • Tutorial: jalankan marimo tutorial --help untuk menampilkan semua tutorial.

Pelajari lebih lanjut

  • marimo mudah digunakan bahkan oleh pemula, sekaligus menyediakan beragam fitur untuk pengguna profesional.
  • Sebagai contoh, Anda dapat melihat alat visualisasi embedding (video) yang dibuat dengan marimo.
  • Anda bisa mendapatkan lebih banyak informasi melalui dokumentasi, folder examples/, dan galeri.

Inspirasi

  • marimo membayangkan ulang notebook Python sebagai program Python yang dapat direproduksi, interaktif, dan mudah dibagikan.
  • Dengan keyakinan bahwa alat yang kita gunakan membentuk cara kita berpikir, marimo berharap dapat menghadirkan lingkungan pemrograman yang lebih baik bagi komunitas Python.
  • marimo terinspirasi dari banyak tempat dan proyek seperti Pluto.jl, ObservableHQ, dan esai Bret Victor.
  • marimo adalah bagian dari gerakan yang lebih besar dalam reactive dataflow programming, di mana ide pemrograman fungsional, deklaratif, dan reaktif dari IPyflow, streamlit, TensorFlow, PyTorch, JAX, React, dan lainnya digunakan untuk meningkatkan berbagai alat.

Opini GN⁺

  • marimo adalah notebook Python reaktif yang inovatif dan bertujuan mengatasi keterbatasan alat seperti notebook Jupyter yang sudah ada, memungkinkan eksperimen data dan model, keyakinan terhadap akurasi notebook, serta komersialisasi notebook menjadi pipeline atau web app interaktif.
  • Alat ini menekankan konsistensi dan reproduktibilitas kode, serta menyederhanakan interaksi dengan elemen antarmuka pengguna untuk meningkatkan pengalaman pemrograman.
  • marimo memudahkan kolaborasi dan berbagi dalam bidang data science, riset, dan pendidikan, serta menyediakan platform yang mendorong interaksi antar pengguna dan berbagi pengetahuan melalui pembangunan komunitas.

1 komentar

 
GN⁺ 2024-01-14
Komentar Hacker News
  • Sebagai pengguna notebook Jupyter dan Observable, saya merasa Observable kurang memiliki reaktivitas antar sel, dan menurut saya masalah itu diselesaikan dengan baik di sini. Saya juga suka karena format file Marimo menggunakan Python, dan lisensi Apache 2 juga menarik. Saya terkesan dengan penemuan fitur GitHub Copilot.

    • Pengguna Jupyter dan Observable memberikan tanggapan positif terhadap Marimo karena dinilai berhasil mengatasi masalah reaktivitas sel, serta sangat menghargai format file berbasis Python, lisensi Apache 2, dan fitur GitHub Copilot.
  • Saat bekerja dengan rekan kolaborator yang menggunakan Jupyter Notebook, pengaturan lingkungan dan status tersembunyi Jupyter menjadi masalah. Proyek ini mencoba menyelesaikan masalah kedua, tetapi mengorbankan fleksibilitas. Jika fokusnya pada reproduksibilitas, ini bisa menjadi kompromi yang dapat diterima. requirements.txt adalah solusi standar untuk masalah lain, tetapi cukup merepotkan untuk digunakan.

    • Komentar ini menyoroti masalah pengaturan lingkungan dan status tersembunyi di Jupyter Notebook, sambil menyebut bahwa proyek ini mencoba mengatasi yang terakhir meski fleksibilitasnya bisa berkurang. Ia juga merasa penggunaan requirements.txt merepotkan dan berharap ada solusi yang lebih baik.
  • Saya senang akhirnya ada yang mengerjakan ini. Ada ekstensi VSCode, tetapi agak disayangkan karena ia membuka tampilan browser penuh alih-alih memakai antarmuka notebook bawaan VSCode. Saya juga berbagi pemikiran tentang manajemen paket dan deployment kode produksi.

    • Komentar ini menyampaikan harapan sekaligus kekecewaan terhadap ekstensi VSCode, serta menekankan pentingnya manajemen paket dan deployment kode. Ia juga menyatakan niat untuk berkontribusi pada proyek ini.
  • Saya punya beberapa pertanyaan tentang platform ini: widget interaktif, serta penjelasan tentang ketergantungan dan interaksinya dengan ekosistem Jupyter.

    • Komentar ini menanyakan dukungan widget interaktif dan hubungan platform dengan ekosistem Jupyter, serta menunjukkan minat untuk mem-porting widget miliknya ke platform ini.
  • Saya rasa ekstensi Jupytext masih kurang dihargai. Ia menyelesaikan masalah interaksi git di Jupyter dan masalah praktik pemrograman yang menghambat penulisan file library. Saya berharap pembaruan reaktif di proyek baru ini akan berguna bagi pemula maupun proyek yang kompleks.

    • Komentar ini menekankan kegunaan ekstensi Jupytext dan berharap pembaruan reaktif dari proyek baru ini akan membantu pemula pemrograman maupun proyek yang rumit.
  • Daftar dependensinya pendek, dan selain tornado tidak menarik banyak dependensi tambahan yang berat. Terlihat seperti proyek yang sangat berguna dan keren.

    • Komentar ini menilai daftar dependensi proyek cukup ringkas dan, kecuali tornado, tidak menambah beban besar. Proyek ini dipuji sebagai sesuatu yang berguna dan keren.
  • Marimo terasa hebat. Saya penasaran apakah ada pertimbangan untuk menambahkan dukungan mermaid.js di markdown.

    • Komentar ini menunjukkan respons positif terhadap Marimo sambil menanyakan kemungkinan penambahan dukungan mermaid.js di markdown.
  • Saya penggemar Akshay dan Myles, para pendiri Marimo, dan saya berharap hadirnya pesaing untuk Jupyter akan membawa dampak baik bagi ekosistem alat sains.

    • Komentar ini mendukung Marimo dan para pendirinya, serta berharap persaingan seperti ini akan membawa perubahan positif bagi ekosistem alat ilmiah.
  • Saya pikir Quarto menyelesaikan banyak masalah Jupyter yang disebutkan di thread ini. Bahkan NIH juga merekomendasikan penggunaan Quarto dan menyediakan pelatihan untuknya.

    • Komentar ini menyebut Quarto sebagai solusi untuk berbagai masalah Jupyter, dan membagikan fakta bahwa NIH merekomendasikan serta menyediakan pelatihan penggunaan Quarto.
  • Mendefinisikan variabel yang sama beberapa kali adalah kesalahan. Alasannya jelas. Tetapi jika variabel itu hanya digunakan di sel tempat pertama kali dipakai, seharusnya nama variabel bisa digunakan ulang.

    • Komentar ini menyoroti bahwa redefinisi variabel adalah kesalahan, tetapi berpendapat bahwa dalam kondisi tertentu nama variabel semestinya boleh digunakan kembali.