Showing posts with label Linux. Show all posts
Showing posts with label Linux. Show all posts

Wednesday, December 03, 2025

TODO after installing Ubuntu

This is to document what I must have done after installing Ubuntu on a new PC or laptop. I have been a loyal Ubuntu user since 2009 and never changed to another OS. To be an expert, you need to focus on one thing. This also applies when choosing an operating system for your computer.

Recently, I received a PC with RTX5090 for work. I asked the student to install Ubuntu 24.04. After it was installed, I needed to make it suit my workflow. Here is what I have done after installing Ubuntu 24.05.

TODO (as per December 2025), i.e., to install; 

  1. VScode
    1. VSCode extensions: Python, Pylance, Copilot, Ampcode, etc.
    2. gh (Github CLI): sudo snap install gh 
    3. Swith default git editor to VIM 
  2. Simplenote
  3. Mendeley (install via flatpak)
  4. Diodon (for clipboard management)
  5. Gnome-sushi (for [audio] preview)

Optionals:  

  1. Multipass
  2. Mozc (to enable Japanese characters
  3. pyenv (to enable multiple Python versions)
  4. uv (for faster Python development)

Previously when I installed Ubuntu on a new device, I made a lot of modifications: themes, icons, etc. (more complete list: https://bagustris.blogspot.com/p/download.html) . Now, default should be the best. If nothing works, then modification is needed. If there is no problem, there is no need to change the default. Minimal installation, maximum speed.


Thursday, January 30, 2025

A proposal for file extension of back up files

There are several extensions used for backup files: 

  • .0, .1, etc.
  • .old, 
  • .bak, 
  • .backup, 
  • .bkp, 
  • ~ suffix
  • .orig
  • .save
  • .baka, etc. 

Based on Reddit votes, the most used is .bak; therefore, we should use the extension used by common sense.

choosing backup filename extension

(Proposed) Specification:

  1. A backup file must be named with the extension .bak
  2. If there are multiple backups, the next backup extension must be added with an integer, e.g., .bak1, .bak2, etc.
  3. The above rules also apply for folder or directory, e.g., folderA.bak, dirB.bak1.

Finding all backup files

To find all backup files, simply use a shell command

$ ls *.bak*
a.bak  a.bak0  a.bak1  a.bak2


Update: 
  • 2026/03/23: Sometimes, I found adding .0, .1, is simpler and shorter. 

Monday, April 26, 2021

Running IPython in multiple GPUs

Here is a simple configuration to run IPython on different GPUs on a single PC.

1. Check available GPU in PC via terminal, "$ sudo lshw -C display"

Checking number of GPUs

2. Launch "$ CUDA_AVAILABLE_DEVICES=0 ipython3" to use IPython using first GPU

Set IPython to use the first GPU (on OS level)

3. Launch "$ CUDA_AVAILABLE_DEVICES=1 ipython" to use IPython using second GPU

Set IPython to use the second GPU

4. Check "$ nvidia-smi" to confirm both GPUs are running simultaneously

Output of nvidia-smi when two GPUs are used simultaneously

5. For comparison, here is the output of 2 GPUs used in IPython without commands above

IPython without configuration resulting two GPUs output

Ouput of nvidia-smi without configuration

It can be seen from both IPython outputs and nvidia-smi that the configuration works. Each IPython window outputted a single GPU, while without configuration (without adding "CUDA_VISIBLE_DEVICES=X") the output of IPython is two GPUs. Also, the nvidia-smi output shows two GPUs work simultaneously with the given configs, while without config it shows only one GPU is running (the consumed memory of the second GPU only 416MiB meaning idle condition).

 

Update  2021/05/13

I checked again today, the above-mentioned steps sometimes still failed to choose GPU on multiple GPUs. The following workaround works for me.

Choose GPU 0

import os
os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"]="0"

# check with
import tensorflow as tf
tf.test.is_gpu_available()
The same steps apply to GPU 1. These steps also can be applied using the shell command "export".
export CUDA_DEVICE_ORDER="PCI_BUS_ID"
export CUDA_VISIBLE_DEVICES="1" 
Please be sure not to make typo (E.g, VISIBLE -> VISBLE), otherwise, the configuration won't work. There is no error message when we make string typos in a shell.

Monday, December 14, 2020

Me-rename semua file dalam satu folder

Merename atau mengkonversi file satu per satu sangat melelahkan dan menyita waktu. Untungnya ada perangkat dan jalan pintas untuk melakukan pekerjaan tersebut: shell.

Merename


Mengubah nama file pdf, misal dari 001.pdf, 002.pdf, dst menjadi 001-bta.pdf, 002-bta.pdf bisa dilakukan secara batch atau berrombongan. Caranya sebagai berikut:
for i in *.sql ; do
    mv -v $i ${i%.sql}-bta.sql
done

Ganti "bta" dengan suffiks yang diinginkan.

Menkonversi (pdf ke png)

Sebagai contoh adalah konversi semua file pdf dalam satu folder ke file png, karena ukuran file .png lebih kecil dan lebih cepat diload (dalam presentasi). Perintah berikut akan mengubah semua file pdf ke png. Perangkat yang digunakan adalah "convert" (imagemagick).
for i in *.pdf; 
do convert $i ${i%.pdf}.png; 
done

Cara lain yang lebih sederhana pernah saya tulis disini > https://bagustris.blogspot.com/2012/01/bulk-rename-files-in-ubuntu-linux.html

Saturday, June 20, 2020

Konversi file svg ke pdf via terminal

Ekstensi pdf sangat fleksibel, baik digunakan secara independen maupun ketika di "embedd" ke dalam file lain, misalnya Latex. Gambar yang baik (resolusinya) kebanyakan bukan dalam format pdf, tapi (contohnya) SVG. Konversi yang cepat (dalam hitungan detik) dibutuhkan agar kita tidak perlu membuka program berbasis grafis (seperti InkScape atau Adobe Illustration) untuk konversi dari SVG ke PDF. Berikut solusinya.

# install program jika belum terinstall
$ sudo apt-get install librsvg2-bin
$ rsvg-convert -f pdf -o output.pdf input.svg

Cara ini menghemat waktu sekitar 10 menit dari cara konvensional (berbasis grafis). Selain itu, aplikasi berbasis grafis sering "mend-distract" kita untuk mengerjakan sesuatu yang lain di aplikasi tersebut.

Friday, December 27, 2019

Membuka (terjemah) Quran di Terminal

Hari ini saya iseng mencari-cari aplikasi yang bisa menampilkan Al-Quran di command line alias terminal. Apa manfaatnya? (1) Ketika disebutkan surat dan ayatnya, misal 7:37, kita segera tahu arti ayat tersebut (dalam bahasa inggris); (2) Ketika membaca Quran (yang tidak ada terjemahannya), kita juga bisa langsung tahu artinya. Ternyata ada aplikasi ini Github. Langsung cus saya coba. Berikut tutorial singkatnya.

Monday, September 09, 2019

Beberapa shortcut penting Byobu

Saya menggunakan "ssh" untuk mengakses desktop, dimana hampir semua proses komputasi saya lakukan di PC tersebut, bukan di laptop. Keuntungannya, selama saya bisa konek ke jaringan kampus (apato, perpus, dll) saya tetap bisa mengakses desktop, menjalankan simulasi, merubah variabel, dll. Jika berada diluar kampus, saya menggunakan TeamViewer. Untuk memudahkan menggunakan terminal dengan ssh, saya menggunakan perangkat "byobu", sebuah utilitas yang dibuat untuk menjembatani tmux atau screen, perangkat lain untuk memudahkan menggunakan terminal di Linux yang "membisakan" penggunaan terminal dalam beberapa sesi, beberapa jendela, dan menutupnya tanpa harus menghentikan proses yang sedang berjalan (ini penting ketika mengeksekusi perintah di terminal).

Berikut beberapa shortcut penting ketika menggunakan byobu via ssh:

  1. Ctrl A, D : keluar dari ssh tanpa menghentikan proses (=F6)
  2. F2: membuat jendela baru
  3. Alt + Panah Kanan/Kiri: berpindah jendela
  4. Ctrl + F6: keluar dari jendela, split
  5. Fn + F7: enable scroll
  6. Ctrl + C: keluar (dari enable scroll)
  7. Alt + F6: menghentikan ssh dari komputer lain kecuali yang dipakai
  8. F9: menampilkan help (gunakan tab untuk berpindah menu, =Shift+F1)
  9. Ctrl+F6 atau ketik 'exit': keluar dari sesi

Beberapa shortcut lainnya seperti "Shift+F2" (membagi jendela secara horizontal), "Ctrl + F2" (membagi jendela secara vertikal), tidak saya masukkan karena saya jarang membagi jendela terminal menjadi beberapa bagian (kecuali terpaksa). Jika itu dilakukan, maka untuk berpindah fokus ke jendela samping atau atas/bawah gunakan "Shift+Panah". Selain shortcut di atas saya menggunakan perintah berikut:

byobu-enable: membisakan byobu disetiap koneksi ssh
byobu-disable-prompt: agar prompt lebih singkat (set di bashrc)

Berikut screenshot byobu saya ketika mengetik tulisan ini.


n.b: 
- Byobu tidak terinstall by default pada Ubuntu maupun OS lainnya, untuk menginstall byobu pada turunan debian, gunakan `sudo apt-get install byobu`.

Saturday, March 31, 2018

Tutorial Shell Unix/Linux untuk pemula

Shell Linux/Unix merupakan tools yang sangat powerful. Jika kita bisa menggunakannya dengan baik, shell dapat digunakan untuk menyelesaikan permasalahan apapun yang berkaitan dengan komputasi. Berbeda dengan GUI (graphical user interface), mudah diawal namun tidak fleksibel. Contoh sederhana, jika anda ingin merubah satu kata yang sama dengan kata yang lain dalam 1000 file teks, apakah anda tidak capek melakukannya dengan GUI? Dengan shell, hal tersebut bisa dilakukan hanya dalam satu menit. Beda dengan menggunakan GUI yang membutuhkan waktu berjam-jam.
Laman depan Tutorial Shell Linux

Alhamdulillah, saya telah menyelesaikan tutorial Shell Linux/Unix untuk pemula. Tutorial ini saya terjemahkan secara bebas dari Carpentries' shell-novice yang saya improvisasi dan kembangkan dengan bahasa Indonesia yang sederhana dan mudah dipahami. Langsung saja cus ke link berikut.
https://bagustris.github.io/shell-tutorial/
Anda juga bisa berkontribusi pada tutorial tersebut. Jika menemukan salah ketik, silahkan diberbaiki  diperbaiki. Jika ada yang bisa di-improve, silahkan juga. Buat pull-request, insyaAllah saya accept selama itu baik. Karena di-track dengan Git, anda harus menguasai Git jika ingin berkontribusi. Jika ingin belajar git sekalian, silahkan pelajari posting saya tentang git disini.


Friday, October 28, 2016

Tutorial KmPlot

KmPlot adalah tool untuk memplot (membuat grafik) berdasarkan suatu fungsi/persamaan matematika. Dengan tool ini, akan lebih cepat membuat kurva dari fungsi matematika daripada kita menggunakan GNU Octave ataupun GeoGebra. Untuk perhitungan yang lebih kompleks, analisa dengan Octave atau python tetap diperlukan. Tool ini sangat powerful untuk demo di kelas atau ketika kita menginginkan plot kasar dari suatu persamaan matematik, bisa karena belum tahu atau lupa.

Instalasi

Untuk menginstall KmPlot pada Ubuntu cukup mudah, yakni dengan perintah berikut:
sudo apt install kmplot
Untuk mengeceknya, buka dash (tekan Super) dan ketik Km, maka Kmplot akan muncul pada layar Dash. Klik ikon tersebut dan akan tampilan seperti dibawah.

Tampilan awal KmPlot

Tampilan diatas adalah tampilan defautl KmPlot. Untuk memplot sebuah fungsi, klik menu "Create", maka akan muncul 5 menu baru. Jika anda masih awam dengan tipe-tipe plot tsb, penjelasan sederhanya adalah sbb.
  1. Cartesian Plot
  2. Pada mode Cartesian Plot, fungsi yang diplot adalah fungsi eksplisit. Fungsi eksplisit artinya f(x) dan x ditulis dalam yang terpisah, f(x) disebelah kiri dan x di sebelah kanan. Contoh fungsi ini adalah, $f(x)=x^2$, $f(x)=x^2+x-6$, dsb.
  3. Parametric Plot
  4. Pada fungsi parametrik, $x$ dan $y$ tidak terhubung secara langsung, biasanya dihubungkan oleh variabel $t$. Contoh fungsi parametrik adalah $f_x(t)=10+t, f_x(t)=sin(t)$, dll.
  5. Polar Plot
  6. Polar plot adalah plot fungsi pada bidang plot/lingkaran. Fungsi yang diplot pada polar plot biasanya merupakan fungsi yang bergantung pada variabel radius (r) dan sudut ($\theta$). Contoh fungsi yang bisa diplot pada polar plot misalnya pola keterarahan sumber suara, $I=\dfrac{I_0}{r^2}$
  7. Implicit Plot
  8. Implicit plot adalah kebalikan dari eksplisit plot, yakni variabel x dan y ditulis pada ruas yang sama. Contohnya $x^2+y^2=24$
  9. Differential Plot
  10. Differential plot adalah plot turunan dari fungsi, bisa turunan pertama, turunan kedua atau ke $n$. Contoh, $f'(x)=2x$.

Friday, March 25, 2016

Parallel programming pada Bash shell

Sejak tahun 2005, perkembangan processor komputer telah berganti paradigma, dari peningkatan clock CPU menjadi peningkatan jumlah core (Cek Wikipedia: Intel CPU Trends). Namun, pemrograman komputer yang banyak dipakai sekarang masih serial yang hanya mengandalkan single core. Artinya, kita belum banyak mengeksplorasi kemampuan komputer yang memiliki banyak core tersebut. Sebagai contoh, laptop saya memikil 4 physical core, jika saya hanya mengandalkan pemrograman serial, maka tiga core lainnya tak terpakai. Bagaimana cara memprogram secara parallel? Materi berikut saya peroleh dari workshop computational infrastructure dan scientific computing.

Screenshot workload 4 CPU (hyperthread) saat running parallel programming, keempat CPU menunjukkan beban kerja yang hampir 100% (baik pada "top" maupun system setting CPU history)

Instalasi

Cara termudah untuk parallel programming adalah dengan dengan menggunakan OS berbasis Linux. Saya menggunakan Ubuntu OS dengan library openmpi. Cara menginstallnya adalah sebagai berikut:
 sudo apt-get install openmpi-bin
Untuk mengeceknya, silakan ketik di terminal "mpirun" dan enter, Jika ada keterangan dan pesan "Report bugs to http://www.open-mpi.org/community/help/" berarti library openmpi sudah terinstall di Ubuntu.

Program Pertama

Program pertama yang bisa kita tes dengan mpirun adalah sebagai berikut,
 mpirun -np 12 /bin/hostname 
Program diatas artinya mencetak nama hostname (nama komputer) kita melalui 12 processor (-np 12). Meski jumlah processor kita hanya 4, namun kita bisa memerintahkan pada PC untuk me-run lebih dari jumlah CPU/processor. Sisa process (12-4=8) akan diluar setelah 4 process pertama, namun karena program diatas sangat ringan maka duabelas outputnya pun dapat ditampilkan bebarengan. Jika anda mendapat ouput 12 nama hostname, itu adalah hasil pemrograman parallel pertama anda. Hello world!