Monday, June 28, 2021

Resources for academic writing: word concordance

When I am writing an academic paper, for a journal, or a conference, I used several tools to find the most precise words. Among these, the following are the most I used ones.
Among those resources, the Mendeley is the most I used since it used the words in my field and can be used offline on my local PC. This technique is also intended to avoid the creation of jargon or our own words. Instead of creating "new words", it is better to follow the words already used by other researchers. Below is my search for the word "splitting" that leads to concord with "into".



Abstract Generated by Transformer
I tried Huggingface's Transformer once. Instead of generating word concordance, they complete my abstract given only one sentence.


Saturday, June 26, 2021

Ubuntu on Mac: Home, End, PgUp, PgDn

Here the equivalent keyboard shorctus for Ubuntu on Macbook (it also works for OSX).
Home: Fn + Left Arrow
End: Fn + Right Arrow
Page Up: Fn + Up Arrow
Page Down: Fn + Down Arrow
That's all. Tested on: MBP Mid 2012, Ubuntu 16.04.07.

Tuesday, June 22, 2021

Sympy: Menyelesaikan Persamaan Matrik

Sympy melakukan proses komputasi yang tidak bisa dilakukan oleh Numpy: simbolik. Misal kita punya persamaan berikut

$$2.10^{6}\left[\begin{array}{crr} 1 & -1 & 0 \\ -1 & 2 & -1 \\ 0 & -1 & 1 \end{array}\right]\left\{\begin{array}{l} 0 \\ u_{2} \\ u_{3} \end{array}\right\}=\left[\begin{array}{c} F_{1}+1500 \\ 9000 \\ 7500 \end{array}\right] $$
Dalam bentuk gambar, persamaan di atas dapat ditampilkan di bawah ini (rendering kode Latex/mathjax di atas kadang Luama....).
Untuk menyelesaikan persamaan di atas (u1=0), maka solusi dengan Sympy adalah seperti kode di bawah ini:
from sympy import *

# buat symbol
u2, u3, F1 = symbols('u2 u3 F1')

# matrik sebelah kiri (left-hand)
K = Matrix([[ 1, -1, 0], [-1, 2, -1], [0, -1, 1]]) 
Ke1 = 2e6*K
U = Matrix([0, u2, u3]).reshape(3,1)

# matrik sebelah kanan
F = Matrix([F1+1500, 9000, 7500])

# selesaikan: cari u2, u3, dan F1
sol = solve(Ke1*U-F, (u2, u3, F1))


Jika dijalankan, hasilnya adalah sebagai berikut.
print(sol)
{u2: 0.00825000000000000, u3: 0.0120000000000000, F1: -18000.0000000000}

Monday, June 21, 2021

Numpy: Broadcasting

Konsep python yang agak susah dipahami adalah operasi broadcasting. Operasi broadcasting merupakan "menyebar" pesan ke seluruh elemen matrik. Contoh sederhana, matrik c saya tambahkan dengan '5', maka semua elemen dalam matrik c akan ditambah dengan nilai 5. Operasi ini, sesuai konsep vektorisasi Numpy, akan jauh lebih cepat dari loop `for'. Syarat operasi broadcasting ini adalah setidaknya harus ada kompatibilitas antar aksisnya, bisa kolomnya, bisa barisnya, atau skalar. Misalnya matrik c  dengan ukuran (3, 3) bisa kita tambah dengan [1, 2, 3] tapi tidak dengan [1, 2, 3, 4].
>>> c = np.array([[ 5,  8, 11],
      [ 6,  9, 12],
      [ 7, 10, 13]])
>>> c +  [1, 2, 3]  # bisa juga dengan list langsung
array([[1,  5,  9],
      [ 2,  6, 10],
      [ 3,  7, 11]])
>>> c + np.array([1, 2, 3, 4])                
------------------------------------------
ValueError   Traceback (most recent call last)
< ipython-input-42-d334d3cf449e> in < module >
----> 1 c + np.array([1, 2, 3, 4])

ValueError: operands could not be broadcast together
with shapes (3,3) (4,)
Contoh lain adalah penjumlahan vektor kolom [1, 2, 3] dengan vektor baris [1, 2, 3]. Contoh ini menunjukkan betapa menariknya operasi broadcasting, kolom dijumlah dengan baris. Pada kolom pertama hasilnya menjadi [2, 3, 4], tiap elemen vektor kolom ditambah 1. Pada kolom 2 tiap elemen vektor kolom ditambah 2, dan pada elemen 3 tiap elemen vektor kolom ditambah dengan 3.
>>> np.array([1, 2, 3])[:, np.newaxis]+np.array([1, 2, 3])                                                                            
array([[2, 3, 4],
       [3, 4, 5],
       [4, 5, 6]])
Tulisan ini melengkapi tulisan ini.

Thursday, June 10, 2021

Membatasi Pen Tablet pada Satu Monitor

Skenario

Menggunakan dua atau lebih monitor menjadikan kita produktif, namun dengan menggunakan pen tablet (misal saya menggunakan Huion 950P) pada dua monitor sangat mengganggu. Pen tablet akan lari kesana kesini karena perbedaan ruang di pad yang kecil dan di dua monitor yang cukup besar. Hal ini berakibat kepada ketidaknyamanan ketika menulis dengan menggunakan aplikasi whitboard seperti xournal. Berikut adalah solusi membatasi pen tablet (khususnya gerakan stylus) hanya pada satu monitor saja di Ubuntu 20.04. 


Pilih monitor mana 

Perintah di terminal adalah
bagus@m049:tmp$ xrandr
Screen 0: minimum 320 x 200, current 3840 x 1080, maximum 16384 x 16384
HDMI-1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 698mm x 393mm
   1920x1080     60.00*+  50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.88  
   1280x1024     75.02    60.02  
   1440x900      74.98    59.90  
   1280x960      60.00  
   1152x864      75.00  
   1280x720      60.00    50.00    59.94  
   1440x576      50.00  
   1024x768      75.03    70.07    60.00  
   832x624       74.55  
   800x600       75.00    60.32    56.25  
   720x576       50.00  
   720x480       60.00    59.94  
   640x480       75.00    66.67    60.00    59.94  
   720x400       70.08  
DP-1 connected primary 1920x1080+1920+0 (normal left inverted right x axis y axis) 598mm x 336mm
   1920x1080     60.00*+  74.97    50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1600x1200     60.00  
   1680x1050     59.95  
   1280x1024     75.02    60.02  
   1440x900      74.98    59.89  
   1280x960      60.00  
   1152x864      75.00  
   1280x720      60.00    50.00    59.94  
   1024x768      75.03    60.00  
   832x624       74.55  
   800x600       75.00    60.32  
   720x576       50.00  
   720x480       60.00    59.94  
   640x480       75.00    60.00    59.94  
   720x400       70.08  
HDMI-2 disconnected (normal left inverted right x axis y axis)
Pada kasus di atas, saya memilih DP-1 sebagai monitor untuk pen stylus. Monitor ini menggunakan koneksi display port sehingga namanya DP-1. 

Pilih divais mana 

Perintah di terminal adalah
bagus@m049:tmp$ xinput
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ Lite-On Technology Corp. USB Multimedia Keyboard Consumer Control	id=11	[slave  pointer  (2)]
⎜   ↳ USB Optical Mouse                       	id=13	[slave  pointer  (2)]
⎜   ↳ Tablet Monitor stylus                   	id=15	[slave  pointer  (2)]
⎜   ↳ Tablet Monitor Dial pad                 	id=16	[slave  pointer  (2)]
⎜   ↳ Tablet Monitor Touch Strip pad          	id=17	[slave  pointer  (2)]
⎜   ↳ Tablet Monitor Pad pad                  	id=18	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Power Button                            	id=6	[slave  keyboard (3)]
    ↳ Video Bus                               	id=7	[slave  keyboard (3)]
    ↳ Power Button                            	id=8	[slave  keyboard (3)]
    ↳ Sleep Button                            	id=9	[slave  keyboard (3)]
    ↳ Lite-On Technology Corp. USB Multimedia Keyboard	id=10	[slave  keyboard (3)]
    ↳ Lite-On Technology Corp. USB Multimedia Keyboard System Control	id=12	[slave  keyboard (3)]
    ↳ Lite-On Technology Corp. USB Multimedia Keyboard Consumer Control	id=14	[slave  keyboard (3)]
Output yang penting dari output perintah di atas adalah "id". Saya memilih id 15-18 karena itu adalah id pen tablet saya. 

Map ke satu monitor 

Langkah terakhir adalah mapping. Perintahnya adalah berikut
bagus@m049:ptxconf$ xinput map-to-output 15 DP-1
bagus@m049:ptxconf$ xinput map-to-output 16 DP-1
bagus@m049:ptxconf$ xinput map-to-output 17 DP-1
bagus@m049:ptxconf$ xinput map-to-output 18 DP-1
Selesai! Sekarang saya bisa dengan leluasa menggunakan stylus di satu monitor untuk keperluan kuliah online. Berikut contohnya!




Konfigurasi Tambahan dan Menambahkan pada start up application

Agar setting di atas tetap alias tidak berubah pada setiap kali reboot, peintah mapping perlu kita tambahkan pada start up application. Dari empat perintah mapping di atas, perintah mapping stylus merupakan yang utama dan itu saja yang sebenarnya perlu ditambahkan.
 
Buat file 950p.sh di direktori /home/namamu dan isi dengan teks berikut.
MONITOR="DP-1"
PAD_NAME='Tablet Monitor'
ID_STYLUS=$(xinput | grep "Tablet Monitor stylus" | cut -f 2 | cut -c 4-5)
xinput map-to-output $ID_STYLUS $MONITOR

# konfigurasi tambahan untuk Krita, Xournalpp
xsetwacom set "$PAD_NAME Pad pad" button 1 key Ctrl z # undo
xsetwacom set "$PAD_NAME Pad pad" button 2 key Ctrl y # redo
xsetwacom set "$PAD_NAME Pad pad" button 3 key Ctrl shift p # pen
xsetwacom set "$PAD_NAME Pad pad" button 8 key Ctrl shift e # eraser
xsetwacom set "$PAD_NAME Pad pad" button 9 key Ctrl shift h # highlight
xsetwacom set "$PAD_NAME Pad pad" button 10 key Ctrl 1 # shape recognizer
xsetwacom set "$PAD_NAME Pad pad" button 11 key Ctrl shift r # select rect.
xsetwacom set "$PAD_NAME Pad pad" button 12 key Ctrl d # new page after

 
Kemudian, tambahkan perintah pada startup application seperti berikut.
Startup application > Add > Command > huion950p.sh

Bonus

Agar ukuran papan tulis bisa penuh satu monitor, saya membuat 'page' custom di aplikasi whiteboard sesuai ukuran monitor saya yakni 27 inchi (598mm x 336mm). Ukuran tsb juga didapatkan dari output perintah xrandr. Untuk tingginya saya kurangi sedikit karena ada toolbar milik xournal. Sehingga,
width = 59 cm, dan
height = 26 cm.

Wednesday, June 09, 2021

Eight Steps to Structuring an Academic Paper

The following tips are my version of "11 steps to structuring a science paper". I revised it from 11 to 8 because of the following reasons.
  1. It makes sense to draft the topic (concretely a title) before starting to structuring the paper.
  2. After drafting a title, it is necessary to draft an abstract along with the keywords to plan what we want to write. These abstract and keywords will guide and give an overview of the overall content of the paper.
  3. I dropped the writing reference. It should be done automatically via BibTeX. Acknowledgment is not necessary unless your research receive funding or important helps from other researchers/agencies.
Here you are.


Note after finishing writing a compelling introduction, you didn't finish your paper yet. You need to revise it many times, mine usually about ten times. In revising, you should follow the order of your paper, from Title to Reference.


Reference: 
 [1] https://www.elsevier.com/connect/11-steps-to-structuring-a-science-paper-editors-will-take-seriously

Friday, June 04, 2021

Python: List Comprehension

Salah satu fitur di pemrograman Python yang saya suka dan sering pakai adalah list comprehension. Fitur ini menyederhanakan "for" loop dalam satu baris. Berikut contohnya.

Saya punya dua vektor A dan B. Saya ingin mencari dimana kemunculan vektor B dalam vektor A. 

a = np.array([1, 2, 3, 4, 5, 6])
b = np.array([2, 3, 4])
Dengan contoh di atas, jawaban atas pertanyaan saya adalah [1, 2, 3]; posisi/indeks dimana vektor B muncul di vektor A. Solusi pertama dengan "for" loop sebagai berikut:
import numpy as np
for i in b: 
    print(np.where(a == i)) 
Solusi kedua dengan List comprehension seperti berikut (baris kedua merupakan output).
In [26]: [np.where(a==x) for x in b]                                            
Out[26]: [(array([1]),), (array([2]),), (array([3]),)]
Cukup simpel dan intuitif.

Wednesday, June 02, 2021

Membuat Symbolic Link di Windows 10

Salah satu "kesalahan besar" penamaan foder atau direktori adalah membolehkan spasi pada penamaan folder atau direktori tersebut. Hal ini sangat menyulitkan ketika bekerja dengan folder lewat teks (CLI, command line interface). Sebagai contoh nyata, windows membuat direktori OneDrive 365 dengan format "OneDrive Nama Perusahaan". Untuk menghindari kesalahan ketika bekerja di terminal (solusi lainnya: selalu memakai tanda kutip untuk memanggil nama folder di terminal) caranya adalah membuat symbolic link antara dari folder yang memiliki spasi pada nama tadi. Caranya adalah sebagai berikut (lewat Cmd bukan PowerShell).
C:\Users\bagus>mklink /J onedriveAIST "OneDrive - 国立研究開発法人産業技術総合研究所"
Junction created for onedriveAIST <<===>> 'OneDrive - 国立研究開発法人産業技術総合研究所
Dengan membuat symbolic seperti ini (mklink /J destinasi sumber), kita bisa berpindah direktori secara leluasa, khususnya di WSL (Windows Subsystem for Linux).

Update
Perintah di atas sebenarnya sama dengan perintah bash softlink yakni `ln -s`. Jadi pembuatan symbolic link di atas juga bisa dilakukan di terminal WSL sebagai berikut.
ln -sf "OneDrive - 国立研究開発法人産業技術総合研究所" onedriveAIST

Monday, May 31, 2021

Data Jalan Kaki, Tidur, dan Detak Jantung September 2020 - Maret 2021

September 2020 sampai dengan maret 2021 adalah bulan-bulan terakhir saya menjalani PhD di JAIST, Kota Nomi, Prefektur Ishikawa di Jepang. Kebetulan, di akhir september 2020 saya membeli mi band 4 yang murah meriah. Gelang tersebut memuat sensor langkah (jalan kaki), waktu tidur, dan detak jantung (BPM, beat per minute) selain data lainnya. Berikut saya sajikan data tersebut ketika berjuang menyelesaikan tahapan-tahapan terakhir studi S3 di JAIST.

Setting alat

Tidak ada yang spesial dalam mengkonfigurasi mi band saya. Hanya saja, saya mengeset "sleep assistant" pada "heart rate monitoring" (Profile > Mi Smart Band 4 > Heart rate monitoring). Selain itu saya off-kan semua. Dengan cara ini, sensor deteksi waktu tidur akan lebih akurat dan umur baterai band lebih panjang. Biasanya saya mengisi catu daya (charge) band saya sekitar sebulan sekali. Lebih kurang setiap 28 hari sekali.

Visualisasi data dilakukan dengan bantuan libreoffice Calc. Fitur yang dipakai adalah pivot table dan group and outline. Berikut datanya.

Data langkah kaki



Data rata-rata langkah kaki per bulan; distance dalam meter, calories dalam kcal

Sebagai informasi tambahan, jarak antara rumah (apato) dan lab di kampus hanya 200 m. Hanya saja, apato saya berlokasi di lantai 5 (tidak ada lift), sedang lab saya ada di lantai 9 (ada lift). Dengan kondisi di tempat terpencil demikian justru saya masih bisa menjaga langkah jalan kaki sekitar delapan ribu langkah per hari.

Data waktu tidur (deep sleep, shallow sleep, total)

Data lama tidur September 2020 - Maret 2021

Data rata-rata lama tidur, mulai tidur, dan bangun tidur

Dari data tidur di atas nampak tidak ada perubahan berarti ketika mengerjakan disertasi. Saya masih bisa tidur normal (6-9 jam per hari), bahkan di malam menjelang ujian pre-defense (1 Desember 2020) dan final defense (2 Februari 2021). 

Data detak jantung (heartrate, beat per minutes [bpm])

Mean				65.1039860577353
Standard Error			0.044167266977505
Mode				75
Median				63
First Quartile			57
Third Quartile			74
Variance			87.307653868568
Standard Deviation		9.34385647731
Kurtosis			1.00227156060073
Skewness			0.877115460025224
Range				101
Minimum				40
Maximum				141
Sum				2913794
Count				44756

Data detak Jantung tidak menunjukkan perubahan yang berarti. Saya juga kesulitan untuk menginterpretasikan data di atas. Kedepannya, mungkin hanya data langkah kaki dan waktu tidur yang dijadikan rujukan utama untuk memvisualisasikan pola hidup.

Penutup

Tujuan utama visualisasi data jalan kaki, tidur, dan detak jantung ini adalah untuk mengetahui pola hidup saya di akhir studi S3. Saya ingin membandingkan data saat sekolah tersebut dan data saat mulai bekerja (April 2021). Data selanjutnya akan dipublikasikan juga jika memungkinkan.

Update:  

Wednesday, May 26, 2021

Menyalin teks dari Screenshot

Untuk menyalin teks dari sceenshot, gunakan normcap. Langkah-langkahnya (Ubuntu 20.04): 
  1. Install library yang dibutuhkan
  2. sudo apt-get install tesseract-ocr xclip python3-dev python3-tk python3-pil.imagetk libleptonica-dev libtesseract-dev libnotify-bin build-essential 
  3. Install normcap via pip
  4.  pip3 install normcap
  5. Panggil normcap dari terminal
     normcap

Berikut demonya.

 

 

Catatan untuk Ubuntu 16.04

Langkah di atas hanya bekerja pada Ubuntu 20.04 dengan Python 3.8. Untuk Ubuntu 16.04, anda harus menginstall tesseract-ocr (engine pengenalan teks) terbaru, yakni versi 4.1 via ppa. Program tesseract-ocr yang ada di repo 16.04 adalah versi lama (3.0.4) dan menyebabkan terjadinya error pada instalasi normcap di Ubuntu 16.04.

Ikuti langkah-langkah di sini untuk instalasi tesseract-ocr baru di Ubuntu 16.04. Meski sudah menginstall tesseract-ocr terbaru dan menambah data train (tessdata) di /usr/share/tesseract-ocr/tessdata/, saya masih gagal menginstall normcap di Ubuntu 16.04. Pesan errornya seperti ini.

...  
AttributeError: type object 'tesserocr.OEM' has no attribute 'LSTM_ONLY'
Catatan ini akan diupdate bila ada informasi baru.
Solusi:
Berdasarkan komentar pembuatnya, berikut solusi instalasi normcap di Ubuntu 16.04:
pip3.8 uninstall tesserocr
pip3.8 install --user normcap
Dan sekarang kita bisa menyalin teks dari gambar lewat screenshot di Ubuntu 16.04!

Tuesday, April 27, 2021

Perkalian waktu di Python

Ada kalanya kita ingin mengalikan waktu agar kita mengetahui jumlah jam yang kita gunakan untuk mengerjakan sesuatu, misalnya jam kerja. Dengan cara biasa, jam:detik tidak bisa dikalikan. Cara berikut dapat digunakan untuk mengetahui berapa lama kita seharusnya menggunakan waktu tersebut. Misalnya, jika perhari kita "hanya" dialokasikan waktu tujuh jam empat puluh lima menit (ditulis "7:45"), berapa waktu (lagi "jam:menit") yang boleh dan harus kita gunakan untuk berkerja?
import datetime

# waktu kerja per hari, 7 jam 45 menit
t1 = datetime.timedelta(hours=7, minutes=45) 

# waktu kerja sebulan, 21 hari
t2 = t1 * 21


# fungsi untuk konversi jam dan menit
def sec2hourmin(t2_datetime):
	hours seconds = divmod(t2_datetime.total_seconds(), 3600)
    minutes, x  = divmod(seconds, 60)
    return hours, minutes

print(sec2hourmin(t2))
Dengan cara ini, kita bisa mendapatkan jumlah jam yang harus kita kerjakan untuk mengerjakan sesuatu (kerja) dalam sebulan. Agar lebih elegan, teknik di atas dapat kita konversi menjadi skrip python dengan argumen jumah hari untuk menghasilkan output "jam:menit" perbulannya.
# function to calculate hours and minutes per month for work
# input argument: # days (integer)
# example python3 days_to_hours.py 21

import sys
import datetime

def days2hours(days):
    tpday = datetime.timedelta(hours=7, minutes=45)
    tpmonth = tpday * days
    hours, seconds = divmod(tpmonth.total_seconds(), 3600)
    minutes, x  = divmod(seconds, 60)
    return int(hours), int(minutes)

hours, minutes = days2hours(int(sys.argv[1])) 
print('{}:{}'.format(str(hours), str(minutes)))
Ketik skrip di atas di editor dan simpan sebagai day_to_hour.py. Cara menggunakan skrip di atas adalah sebagai berikut.
# Jika sebulan ada 21 hari kerja
$ python3 day_to_hour.py 21
162:45
Artinya, dalam bulan itu ada 21 hari kerja; kita hanya diperbolehkan dan diharuskan bekerja selama 162 jam dan 45 menit.

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.

Wednesday, March 17, 2021

Configure java-11 for Ltex in VScode Ubuntu 16.04

As a scientist or researcher or a lecturer, writing paper in Latex is a must. To make it easy writing in Latex, I used VScode with Latex Workshop extension. For non native English speaker, there is another extension called ltex (based on "language tool") to check spelling and grammar. This is a perfect combination for writing paper in Latex: VScode+Latex Workshop+Ltex.

However, since I used Ubuntu 16.04 as my OS, there is a difficulty on installing the latest Ltex version (v9.0.0) in Ubuntu 16.04, which required java-11. Here, I documented my steps to tackle the problem.
  1. Download openjdk from this link: https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.10%2B9/OpenJDK11U-jdk_x64_linux_hotspot_11.0.10_9.tar.gz
  2. Extract the downloaded file.
  3. Copy extracted file to /usr/local:  sudo cp -r jdk-11.0.10+9/ /usr/local
  4. Set ltex java path to: /usr/local/jdk-11.0.10+9
  5. Finish
The last step, step 4 (before finish), can be shown below.

Now Ltex is ready, as shown below. It checks your spelling and grammar errors aumatically, for free.


Another trick
I used another PC with also 16.04 version, but I don't need to follow these tricky steps with leaving "Ltex Java path" blank.

Friday, March 12, 2021

Pentingnya mengucapkan "Terima Kasih"

Hari ini saya mendapat komplain dari guru bahasa Jepang saya. Seorang teman, ketika membalas email, tidak mengucapkan terima kasih. Padahal guru saya tersebut sudah mau mengajarinya bahasa Jepang, tanpa dibayar. Sensei berkata, impresinya terhadap teman saya ini kurang baik. Beliau bahkan menanyakan apa dia (teman saya tersebut) orang baik. Saya jawab tidak tahu, hanya kenal saja.

Dari sini saya belajar pentingnya mengucapkan terima kasih. Dalam kultur Jepang, ucapan terima kasih ini sangat penting dan sudah membudaya. Bahkan mereka mengatakannya dua kali untuk hal yang sama. Pertama saat ketika selesai ditolong. Kedua saat bertemu lagi, biasanya keesokan harinya atau di lain waktu.

Saya kemudian mengevaluasi diri, apakah saya sudah cukup mengatakan terima kasih. Kadang saya suka terlambat membalas email dari sensei, sampai sensei mengemail lagi apakah telah menerima email sebelumnya. Meski hanya email singkat, seperti "Terima kasih atas emailnya", hal ini sangat berarti. Untuk keharmonisan hubungan guru-murid dan teman kerja, di Jepang ucapan terima kasih merupakan hal yang dijunjung tinggi dan tidak boleh dilupakan.

Pun ketika kita membayar untuk sebuah jasa. Misal ketika naik angkutan umum, saya biasakan (dan memang itu biasa di Jepang) mengucapkan terima kasih (kepada sopir) saat turun dari angkutan tersebut. Terlebih ketika angkutan tersebut gratis. Juga ketika membeli sesuatu di toko, jangan lupa bilang terima kasih pada kasirnya. Kalau saat ditolong seseorang, ucapan terima kasih ini tak boleh lupa, seperti contoh curhatan sensei (guru) saya di atas. Berterima kasih dua kali juga lebih etis ketika kita mendapatkan pertolongan.

Syariatnya, kita berterima kasih kepada manusia. Hakikatnya, kita berterima kasih pada Tuhan, Allah SWT, Tuhan Semesta Alam.

Wednesday, March 10, 2021

Tricks for obtaining Researcher visa while not yet holding PhD certificate

I think this note is important. That's why I shared it here.

For a graduate student (Ph.D.) in Japan who found a researcher position in a research institute (or company), there is a trick to change the visa smoothly. First, here is a list of necessary documents to change the status of residence:

  • Application form 1 copy
  • Photo (4cm×3cm) 1 copy
    • If the applicant wishes to change his/her current status to a status of residence which does not come under that for a mid to long-term resident (a photo is also not required for persons under the age of 16 years).
    • A photo that shows the applicant pictured alone.
    • The applicant should face squarely to the front and should remove any hats, caps, or head coverings.
    • There should be a plain background with no shadows.
    • The photo must be sharp and clear.
    • The photo must have been taken within three months prior to submission.
  • The supporting documents to be submitted on the occasion of application are shown in Table 3 (As the applicant sometimes needs to submit document material(s) other than stipulated in the Immigration Control Act Enforcement Regulations, please refer to your regional immigration office or immigration information center.)
  • Passport and residence card (or alien registration certificate deemed equivalent to a residence card)
  • A document that proves the status (if a legal representative or agent submits the application form on behalf of the applicant)
In principle, documents and materials which have been submitted will NOT be returned to you. If you have submitted any original copies of documents and materials, which would be difficult for you to re-obtain and would like to have them returned to you, please notify them when you file your application.

In my case, I was asked to submit a degree of certificate (Ph.D.). Because I have not graduated from university yet (planned for the end of March in Japan), hence it is difficult to show the certificate. The certificate of completion expectation didn't work. It will cause trouble if I wait to use the original certificate of my Ph.D. study.

I googled on the previous day before I went to the immigration office to look solution. As listed here, there are three conditions to meet the researcher's visa application.



Luckily, I brought the original certificate of my master's degree and showed it to the immigration officer. They accepted it. That is the trick, use a master's degree certificate instead of a Ph.D. certificate. The Ph.D. (expectation) certificate is necessary for the employer but unnecessary for the immigration office. The master's degree certificate is enough.

Friday, February 19, 2021

Japanese for Work!

Japanese is not as easy as we think, but also not as difficult as we think (do you agree with this?).  I have learned Japanese for about 5 years (2012-2014, 2017-2020), but I judged that my Japanese skills are only enough for daily conversation, not for working in Japan (even though I have been working in Japan for two years). I need to upgrade my Japanese skills.

A screenshot of "Explanatory material" from NHK Japanese for work on my smartphone


For leveling up my Japanese skills, NHK is my favorite resource. Started from Easy Japanese 2011 edition, continued to the 2015 edition (grammar), then the 2018 edition (conversation), I learned a lot. Now, I am learning Easy Japanese for Work. It simply improves my Japanese communication because it provides real-life conversation. However, different from the other editions, this Japanese for Work only provides online learning tools, without downloadable materials. Hence, I converted the material so that I can learn while offline. I contribute to making a single pdf file for all conversations, a single page for each conversation explanations (skit's explanation), and 30 audio files from all skits. Here is a summary of what I've done:
  • Text file (pdf) of conversation,
  • Text file (page) of explanation of the conversation,
  • Audio files of the conversation.

This lesson assumes prior knowledge of basic Japanese, including reading hiragana, katakana, and some kanji. Three items for learning have a different purpose: audio for listening to conversations, conversations to check understanding, and explanatory material for parts requiring further explanation (i.e., if you don't understand the conversation file well). You can download the conversation script and explanatory material in the list above.

For the audio files, I convert the dialog from video files (not downloadable) to mp3 files. I didn't combine all skits to be a single audio file. Instead, I convert one by one skit to mp3 file. Here is the list, click it to view the lesson with audio.
  1. 手伝って くださって 大変助かりました。
  2. すみませんが、もう一度言っていただけますか。
  3. 私のおすすめは、墨田区の水族館です。
  4. それではまず、行きかたについてご説明します。
  5. 急ぎの書類はメールで送る、とのことです。
  6. お先に失礼してもよろしいでしょうか。
  7. 今日は遅れてしまい、申し訳ありませんでした。
  8. よろしければ、私が致しましょうか。
  9. 私の席はどこか、教えていだかけませんか。
  10. それなら、これを見るといいですよ。
  11. 失礼ですが、お名前はなんとお読みするんですか。
  12. すみません、確認させてください。
  13. 申し訳ありません。和田は他の電話に出ております。
  14. あの、実は今、別の仕事を頼まれています。
  15. コストを下げるために、ここの部品を変えました。
  16. そこを何とか、ご検討いただけませんでしょうか。
  17. よければ、いつでも相談に乗りますよ。
  18. お気持ちはありがたいのですが、受け取らない決まりになっております。
  19. お時間を頂いてしまい、申し訳ありません。
  20. 場合によっては間に合わないこともあります。よろしいでしょうか。
  21. 本社からのお願いです。ぜひご協力いただけませんか。
  22. あの、すみません。私からひとつよろしいでしょうか。
  23. 行き違いがあったようです。すぐに対応いたします。
  24. その日はあいにく先約が入っております。
  25. スキューバダイビングをなさるんですか。始められたきっかけはなんですか。
  26. うまくいかないこともあるよ。気持ちを切り替えてやってみようよ。
  27. ご無理を言って申し訳ありませんが、残業をお願いできませんか。
  28. 大事な内容なので、念のため確認させてください。
  29. 少し様子を見て戻ると言っていました。病院に行くほどではないそうです。
  30. 今はちょっと手が離せません。終わり次第お手伝いします。
  31. ご迷惑をおかけして申し訳ありません。今後、清掃のルールを徹底させます。
  32. お時間はとらせません。至急判断をお願いします。
  33. かわいいと言いますと。
  34. できる範囲。
  35. その場では判断できかねる。
  36. 私がやっておきますね。
  37. 人員の調整。
  38. お話中すみません。
  39. きょうの仕事も大変でしたね。
  40. 図面に不備があり。
  41. 先ほど、何か失礼がございましたでしょうか。
  42. ご相談があります。
  43. すみません、分かりませんでした。
  44. お客様のお車の場合。
  45. では、手短に申し上げます。
  46. 今日明日中には。

The main page for all lessons is at https://bagustris.github.io/japanese-for-work/. The PDF and audio files can be downloaded from https://github.com/bagustris/japanese-for-work/.

Wednesday, February 10, 2021

Menghindari Human Error: Pentingnya Pokayoke

Hari ini saya dirugikan oleh keteledoran saya yang menyebabkan JPY 1500 dan waktu tiga jam terbuang sia-sia. Tidak besar memang, tapi bisa jadi di kemudian hari kerugian yang saya derita akan jauh lebih besar hanya karena human error. Tulisan ini untuk mendokumentasikan peristiwa human error dan langkah-langkah yang bisa ditempuh untuk mencegahnya.

Implementasi pokayoke untuk menghindari kesalahan pemasangan simcard HP

Dua tipe kesalahan manusia: dua tipe human error

Manusia itu tempatnya salah dan lupa (hadist). Berdasarkan hadist ini, dan sebuah bacaan di buku Minna no Nihongo Chukyuu I, maka ada dua tipe kesalahan, lebih tepatnya human error. Pertama human error karena kesalahan, lebih spesifik karena tidak sadar atau tidak tahu (carelesness), kedua human error karena lupa (absent-mindedness). Untuk mengetahui tipe mana yang lebih dominan, coba jawab pertanyaan di sini, https://brainfall.com/quizzes/how-absent-minded-are-you.

Singkatnya, karena sudah sifat manusia, maka suatu ketika manusia pasti salah. Semua manusia pasti pernah berbuat kesalahan. Human error pasti terjadi. Sisi positifnya, human error bisa dihindari, atau lebih spesifik bisa diminimalisir. Teknik untuk menghindari atau meminimalisir human error ini, dalam bahasa Jepang, disebut pokayoke.

Pokayoke

Pokayoke (dari kata ぽか避ける) adalah bagian dari manajemen lean (ditemukan oleh Toyota) untuk menghindari human error. Pokayoke mencegah manusia berbuat salah. Karena manusia pasti (pernah) berbuat salah maka harus dibuat langkah untuk menghindari kesalahan itu. Contoh sederhana, ketika anda bekerja yang mengharuskan tangan kanan, maka tangan kiri harus dipekerjakan juga dengan pekerjaan lainnya, agar tidak ikut mengerjakan pekerjaan yang seharusnya dikerjakan oleh tangan kanan. Teknik/prosedur ini banyak diterapkan oleh pabrik-pabrik di Jepang.

Contoh lain sebenarnya pernah kita terapkan. Bila anda ikut pramuka maka anda akan diajari periksa kerapian untuk memeriksa kelengkapan atribut yang anda pakai. Cara tersebut merupakan salah satu aplikasi pokayoke, yakni dengan melafalkan (shouting) apa yang di-cek (pokayoke tipe atensi). Cara ini juga banyak dipakai di Jepang. Contohnya adalah para masinis ketika memeriksa prosedur menjalankan kereta api.

Untuk membangun prosedur pokayoke, diperlukan tujuh langkah berikut:

  1. Identifikasi proses
  2. Analisa dimana kesalahan bisa terjadi
  3. Cari pokayoke yang tepat, shutout (menutup/blok kemungkinan terjadinya kesalahan) atau atensi (highlight persiapan/cek)
  4. Mengambil langkah komprehensif, bisa berupa langkah fisik atau bantuan berupa alat.
  5. Menggunakan salah satu, beberapa, atau semua dari kontak (bisa bentuk [shape], ukuran [size], atau atribut fisik), angka konstan, atau urutan metode.
  6. Evaluasi metode yang diusulkan
  7. Latih pada operator, review performansi, dan ukur kesuksesan metode pokayoke tersebut.

Studi kasus: Keliru membawa paspor anak saat mengganti status residensi di kantor Imigrasi Jepang

Masalah human error yang saya alami tadi sepele, saya keliru membawa paspor anak saya alih-alih paspor saya sendiri. Tujuannya saya ingin mengganti status visa (status residen) saya di Jepang dari pelajar ke peneliti. Dokumen yang dibutuhkan ada di sini: aplikasi, foto, paspor, dan resident card. Sederhana, namun ternyata ada kesalahan yang membawa implikasi kerugian uang dan waktu. Berikut teknik pokayoke yang akan saya terapkan:

  1. Proses: kelengkapan dokumen (foto, pasport, residen card, form aplikasi)
  2. Kesalahan bisa terjadi: keliru paspor, form tidak lengkap
  3. Pokayoke: atensi (sebutkan dan cek ulang)
  4. Langkah komprensif: kumpulkan dokumen dalam satu map
  5. Alat bantu: urutan dokumen
  6. Evaluasi: cek dua kali minimal
  7. Review: apakah ada yang kurang atau belum

Sekian. Manusia itu tempatnya salah dan lupa. Pokayoke adalah teknik untuk meminimalisasi salah dan lupa.

Referensi:

  1. https://kanbanize.com/lean-management/improvement/what-is-poka-yoke

Friday, February 05, 2021

Book Summary: Grammar Choices for graduate and professional writer

I just realize my mistakes when actually I made a summary but I named it a review (describing the pros and cons of a book). So, from this post, I would like to make summaries of books that I read. 

The summary is especially intended for me, to find faster what I read and remember in the past. In this occasion, I would like to summary a new book provided by my university: Grammar for Graduate and professional writers (2nd ed.) by Nigel Caplan. I resumed this book based on its eight chapters.

This summary only includes important points based on my judgments (and time).

Chapter 1: An approach to academic grammar 

In chapter 1, the author emphasized the ideas inside the books: 
1. Sentence can be broken into slots (clause, subject, verb, complement) 
2. Grammar is more than rules: a range of choices 
3. Your choices create three levels of meaning at the same time: the content of your sentence, your attitude or relationship with the readers, the organization of the text.

At the first concept, the author briefly described clause structure: a finite clause (a complete idea that can stand alone as a complete sentence), subject and verb, limitation of the type of words for each slot, complements (elements that come after and controlled by the verb), and non-finite clauses.

A few common errors on verb complementation include:
  • A small number of reporting words CANNOT be followed by a "that" noun clause. They include support, present, present, discuss, describe, oppose. Thus, the following sentences are wrong.
  • The research supports that the previous finding is true. The data described that the higher resistance, the lower current.
  • The verb "make" and "let" are complemented by a verb in the base form, without "to". It is better to replace "make" to "force", "require", "cause", "lead to", "let" to "allow", "permit", "enable" "facilitate." 
The excerpt of this first chapter is freely available here

Chapter 2: Clause combination

Chapter 2 of this book focuses on equal clause and unequal clause, as an extension of a simple sentence with a finite clause. The difference between an equal clause and an unequal clause is shown below; equal clauses are combined by coordinating conjunctions while unequal clauses are combined by subordinating conjunctions.


Aside from the differences between equal and unequal clauses, the following are the most important takeaways from chapter 2:
  • Punctuating simple, compound, and complex sentences: "and" for any coordinating conjunction, "because" for any subordinating conjunction, and however for any sentence connector.
  • Clauses introduced by "most of", "some of", "two of" are non-restrictive clauses. They need a comma.
  • Three meaning created by clauses: elaborating (e.g., "... ; in fact, ..", ".. and indeed...", ".., which.."; extension (e.g., "Moreover", "..whereas.."); enhancing (e.g., ".., so..", "Although..").
  • Fragments and run-ons are not acceptable in most academic writing, e.g., "Because it is different from the previous " (fragment), "Culture shock is not usual, it happens to almost everyone who moves to a new place" (run-on).

Chapter 3: Embedded, Noun, and Complement Clauses

Embedded clauses are restrictive clauses (that ..., without coma) that restrict the meaning of a noun phrase. 
1a. The students, who had been nervous about their exam results, are waiting for their teacher in that room. (non-restrictive, all students)
1b. The students who had been nervous about their exam results are waiting for their teacher in that room. (restrictive, some students)

Embedded clauses can be reduced. Most cases are "with/that" with "be". See the example below.
Another issue that is to be solved in this paper is the effect of silence regions in speech.

Noun clauses are dependent clause (a clause that cannot stand alone as a complete sentence, e.g., "when he is coming...") that usually complements or reporting linking verbs, nouns or adjective. There are three types of noun clauses:
  1. Subordinator using "that", e.g., "The previous research found that bacteria are present.
  2. Indirect question using "whether", e.g., "Researcher wonder whether the bacteria are present
  3. Indirect question using "where". e.g., "Researchers ask where bacteria are present."
Some exceptions:
  • wonder can be followed by if, whether, any wh-question, but not that.
  • Argue usually followed by that
  • Realizes takes that and what clause but not wh-question, if, or whether.
A complement (noun) clause s a noun clause that is embedded in a noun phrase or used after an adjective. The most commons are claim, argument, fact, e.g., 
The fact that the first simple DNN architecture works is a significant achievement.

Not all nouns can be followed by noun clauses; only nouns that refer to facts, ideas, and opinion can be followed by complement noun clauses. The nouns such as notion, belief, point, principle, evidence, and chance.

Chapter 4 

The focus in chapter 4 is is verb forms. Verbs can be modified in four ways: time, aspects, voice, and modality. The combination of time and aspect is called Tenses, where this unit more focuses on. The summary of Tenses can be shown in the figure below (taken from the book).


 

Chapter 5

Chapter 5 discusses the noun phrase. One of the most important topics in the noun phrase is whether it needs a determiner, the articles. As I resumed another book: Three Little Words, it is not easy to choose what article needed by a noun phrase. From this book, I obtained additional information that the choice of an article also depends on whether the writer and/or reader know the exact reference of the noun. The following figure shows the resume of the use.



The next chapters talk about Hedging, Boosting, and Positioning (Chapter 6), collocation and corpus searching (Chapter 7), and beyond sentence (Chapter 8). This book, perhaps, is the most complete book explaining grammar and style in academic writing.  It is more complete than free grammar for academic writing or other books. I wish I already read and understand it before pursuing my doctoral degree. But this is not too late.

Friday, January 29, 2021

Latex: Remove Ugly Boxes

 Just a reminder for me to remove ugly boxes when writing in Latex.

\usepackage[hidelinks]{hyperref} 

Before:
Reference with ugly green boxes (link to reference if it is clicked)

After:
Reference without ugly boxes (still clickable)

Wednesday, January 20, 2021

Cara Bermain Snowboard: Skill dasar dan Cara Meningkatkannya

Bermain snowboard itu gampang-gampang susah. Bahkan, orang yang hidup/tinggal di daersah salju pun belum tentu bisa. Sebaliknya, orang yang hidup di daerah tropis bisa saja mengendarai snowboard dengan mahir. Secara alami, tentu saja orang yang hidup di daerah bersalju lebih mahir bermain snowboard daripada orang yang hidup di daerah tropis. Berikut dokumentasi saya tentang cara bermain snowboard berdasarkan pengalaman pribadi dan sumber-sumber internet selama tiga tahun ini (2017/2018 - 2020/2021).

Pertama sebelum pertama

Pertama sebelum menjejakkan snowboard di salju adalah mengetahui kaki mana kaki depan anda. Caranya sederhana. Minta tolong teman anda untuk mendorong anda dari belakang. Sebelum anda terjatuh, anda akan memajukan salah satu kaki anda untuk menjaga keseimbangan. Kaki itulah kaki depan. Umumnya orang Indonesia menggunakan kaki kiri sebagai kaki depannya. Ketika turun dari naik bus, hampir semua orang menggunakan kaki kirinya untuk turun menjejak ke tanah. Inilah fakta pendukung argumen sebelumnya.

Sebelum memulai snow board

Sebelum memulai snowboard, anda harus bisa menguasai teknik berikut:
1. Berjalan dengan satu kaki,
2. Meluncur dengan satu kaki terikat dan kaki lainnya bebas,
3. Balik kanan dan balik kiri dengan snowboard (dalam posisi duduk).

Skill dasar:

  1. Bergerak maju ke depan secara horisontal (Heel-side slide)
  2. Bergerak maju ke kanan dan ke kiri (Heel-edge side-to-side)
  3. Bergerak maju dengan menghadap ke belakang (toe-side slide)
  4. Bergerak ke kanan ke kiri menghadap ke belakang (toe-edge side-to-side)

Langkah 1, 2 dan 3 adalah yang paling penting. Jika anda bisa menguasainya, anda bisa bermain snowboard. Lihat video berikut untuk praktek skill dasar di atas (bonus: bergerak lurus ke depan). Ingat, anda masih belum bisa bergerak lurus tanpa menamatkan dua langkah selanjutnya.



Langkah 5 & 6

Setelah menguasai langkah pertama sampai dengan keempat diatas, anda sudah mendapatkan teknik dasar bermain snowboard, tapi itu belum cukup. Dibutuhkan dua langkah lainnya seperti di bawah ini.

Langkah ke-5: Berbelok seperti huruf C
Berbelok seperti huruf C adalah skill dasar baik berbelok ke kiri atau ke kanan. Dengan kaki depan adalah kaki kiri, bergerak ke kanan dilakukan dengan memindahkan tumpuan dari heel edge (tumit) ke toe edge (jari), dan berbelok ke kiri dari toe-edge (jari) ke heel edge (tumit). Ketika berbelok, belokkan juga pinggul anda beserta anggota tubuh yang lainnya. Gunakan tangan belakang sebagai kendali, gerakkan se arah jarum jam belokan anda. Ketika berbelok ke kanan, putar tangan kanan anda yang di belakang ke kanan juga, kanan kiri yang di depan juga mengikuti searah jarum jam ini. Ketika berbelok ke kiri maka gerakkan sebaliknya, tangan kanan yang di belakang bergerak melawan arah jarum jam, tangan kiri yang di depan mengimbanginya seacara searah. Lihat rute (belok) yang ingin anda lalui, dan tunjuk/pandu dengan tangan depan anda. Ini sangat membantu dalam melakukan belokan di tahap-tahap awal.

Kesalahan yang umum ketika berbelok adalah menggerakkan pinggul dan badan ke belakang (dan terlalu cepat), bukan ke depan seperti seharusnya, yamg membuat anda terjatuh. Ingat menggerakkan badan ke depan berarti menambah kecapatan, dan menggerakkan badan ke belakang mengurangi kecepatan. Perpindahan yang terlalu cepat menyebabkan ketidakseimbangan. Latihan berbelok di permukaan yang landai akan lebih mudah daripada yang curam. Kuasai teknik ini. Jika sudah bisa, lakukan dengan kaki kanan sebagai kaki depan dengan cara belok sebaliknya. Meski tidak wajib, merubah kaki depan akan sangat membantu dan pratktis di butuhkan di trek panjang.

Langkah ke-6: Berbelok seperti huruf S
Berbelok seperti huruf S merupakan gabungan dari dua kali berbelok dengan seperti C. Berbelok seperti huruf S adalah berbelok ke kanan yang langsung diikuti berbelok ke kiri, seperti huruf S. Tentunya anda harus menguasai berbelok seperti huruf C dengan baik. Jika anda telah mampu mempraktekkan berbelok seperti huruf S, selamat, anda telah bisa bermain snowboard.

Langkah ke-7

Bergerak lurus, itulah langkah ke-7. Lakukan gerakan ini pada trek landai dan tingkatkan pada trek yang lebih miring. Kontrol dan kombinasikan gerakan lurus dengan gerakan S: lurus-S-lurus-S dst sampai tiba di tempat naik lift dengan presisi. Artinya, kita hanya membutuhkan jalan (dengan snowboard) seminimal mungkin dan tanpa jatuh. Untuk berhenti lihatlah ke bawah, ke sepatu anda, ketika menghadap depan; lihatlah ke puncak gunung ketika menghadap ke belakang.

Meningkatkan permainan snowboard

Jika anda sudah menguasai empat teknik di atas, langkah selanjutnya adalah meningkatkan kemampunan mengendarai snowboard. Video berikut menjelaskan caranya.



Sunday, January 17, 2021

Hiking: Pentingnya Berhenti Ketika Menengok ke Belakang

Tiga minggu yang lalu saya mengalamani cedera terkilir (sprained ankle) ketika turun Gunung Midoyama. Penyebabnya satu: ketika saya menengok ke belakang (untuk melihat teman saya), saya melakukannya sambil berjalan turun (di belokan). Hasilnya, saya terkilir. Butuh waktu 3-4 minggu untuk pulih total, meski, sejenak setelah saya terkilir saya masih bisa berjalan normal seperti biasanya. Tidak ada gangguan berarti kecuali ketidaknyamanan, khususnya ketika duduk di waktu sholat.

Pelajaran pentingnya: berhentilah ketika menengok ke belakang di waktu hiking. Kemungkinan terkilirnya mungkin kecil, 1/100. Tapi, menghindari cedera akan lebih menguntungkan untuk perjalanan selanjutnya. Ketika trail panjang (>30 km), menghindari cedera sangat penting.


Inilah rute perjalanan saya saat terkilir tersebut.
御堂山 / bagusさんの御堂山(石川県)の活動データ | YAMAP / ヤマップ
Update 7 Februari 2021:
Setelah 5 minggu, cedera terkilir pada engkel saya baru "mulai" pulih.

Thursday, January 14, 2021

Latex: Multiline Equation

Catatan ini hanya sebagai pengingat bagi saya ketika ingin menuliskan "multiline equation" di Latex. Daripada selalu googling, lebih baik saya letakkan disini.

Ada tiga cara untuk menuliskan persamaan multibaris pada Latex: Align, Split, dan Multline.
Cara favorit saya adalah dengan "align" sebagai berikut.
\begin{align}
  cov(X,Y) \&= \sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y}) \\
  \sigma_x \&= \sqrt{\sum_{i=1}^{n}(x_i-\bar{x})^2}
\end{align}

Hasilnya adalah sebagai berikut:
$$ cov(X,Y) = \sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y}) ~~~~ (5) $$ $$ \sigma_x = \sqrt{\sum_{i=1}^{n}(x_i-\bar{x})^2} ~~~~~~~ (6) $$
Lebih jelasnya lewat screenshot pdf ini.

Jika ingin menghilangkan penomoran persamaan, gunakan {align*} untuk menggantikan {align}.

Friday, January 08, 2021

Book Review: Three Little Words

This is my review for the book "Three Little Words: A, An, The" by Alan S. Brender [1]. Judging if a word needs an article and what is the appropriate article for that word is troublesome work. This book consists of 52 steps to identify if a word or a phrase needs an article: a, an, or the.

To summary these 52 steps, I made the following chart. Feel free to download the pdf version here.


Notice the color. Blue fonts are for "The" article, greens are for "a" or "an", and reds are for omitting articles. Teal for "yes" line, magenta for "no" line. Feel free to comment if there is any mistake.

To simplify the steps, I skip the first to the third steps. These steps are:
Step #1: Identify whether a word is a noun or a phrase is a noun phrase
Step #2: Determine whether the nouns are common or proper nouns. A proper noun is the name of something.
Step #3: Decide whether the nouns are singular or plural.

Then, we can follow the step #4 to #52 in the above chart.

As a comparison, we can also find a suitable article for a particular noun/noun phrase from the writer's point of view as below [2].



Reference:
[1] Alan S. Brender, "Three little words: A, An, The", 1989.
[2] https://writingcenter.unc.edu/tips-and-tools/articles/

Thursday, December 31, 2020

Being Good: Sebuah Refleksi di Akhir Tahun

Tulisan ini dikonsep akhir tahun 2017, diterbitkan akhir tahun 2020.

Dari tahun ke tahun, hanya ada tiga hasil: sama, lebih baik atau lebih buruk. Bisa saja hasinya sama, namun tidak ada kesamaan yang benar-benar identik. Apakah tahun ini lebih baik dari tahun kemari? Apakah tahun depan akan lebih baik dari tahun ini..?

Agama saya telah menjelaskan teknik evaluasi diri yang kurang lebih seperti ini bila diterjemahkan:
Barang siapa hari ini LEBIH BAIK dari hari kemarin, dialah tergolong orang yang BERUNTUNG. Barang siapa yang hari ini SAMA DENGAN hari kemarin dialah tergolong orang yang MERUGI. Dan Barang siapa yang hari ini LEBIH BURUK dari hari kemarin dialah tergolong orang yang CELAKA.
Saya tidak ingin berdiskusi tentang derajat hadist tersebut (bila diklaim dari hadist), namun esensi dari pesan yang terkandung di dalamnya. Kalau tahun ini sama saja sama dengan tahun lalu, kita dikatakan merugi, apalagi jika lebih buruk. Tomorrow must be better.

Sederhananya seperti ini.
Lebih buruk dari sebelumnya = CELAKA
Sama dengan sebelumnya = RUGI
Lebih baik dari sebelumnya = BERUNTUNG
Untuk pergantian tahun kata "sebelumnya" pada kutipan di atas bisa diganti "tahun sebelumnya".

Kembali pada tahun-tahun sebelumnya. Dua tahun yang lalu, adalah tahun terburuk saya, tahun dimana banyak maksiat, kejahatan dan kebodohan saya lakukan sejak saya dilahirkan. Bukankah manusia tempatnya salah dan lupa? Dan Adalah Tuhan yang maha mengampuni hambanya..?? Ini pembenaran. Bukan dikatakan dosa kecil jika dilakukan berulang kali, dan bukan dikatakan amal kecil pula jika juga dilakukan berulang kali. Kesalahan harus diakhiri, jangan sampai, seorang muslim, jatuh pada lubang yang sama sampai dua kali.

Being good adalah tujuan hidup saya, seperti hal-nya kedua orang tua saya memberi nama demikian. Life is short, that is why we must being good, such as helping each others.

Seperti halnya menjadi lebih baik dari tahun lalu, artikel ini menandai jumlah artikel yang sama diterbitkan pertahun tahun ini dan tahun lalu (42 artikel/tulisan). Meskipun jumlah artikelnya sama, dari sisi pembaca (viewer), jumlahnya pembacanya lebih banyak. Dari metrik terakhir ini (yang tidak saya sebutkan jumlahnya dan akan saya bahas di tulisan lain), tentu tahun ini lebih baik dari tahun kemarin.

Pentingnya sebuah metrik

Bagaimana kita bisa tahu lebih baik, sama dengan atau lebih buruk dari sebelumnya? Inilah pentingnya sebuah "metrik". Ukuran kualitas dari sesuatu secara kuantitas atau nilai numerik. Misal, tahun lalu kita khatam Quran 2 kali, tahun ini 3 kali. Tahun lalu kita sedekah 1 juta, tahun ini satu juta. Tahun lalu pemasukan kita 100 juta, tahun ini 200 juta. Inilah metrik, angka yang menujukan kuantitas sebuah ukuran.

Metrik bisa apa saja, kita yang memilih. Misal kampus saya memilih U-Multirank sebagai metrik evaluasi keberhasilannya. Kampus lain bisa saja memilih metrik lain seperti THE (Times Higher Education) atau QS world universities rankings. Sekali memilih metrik, sebaiknya konsisten dengan metrik tsb. Karena, jika berpindah metrik, acuannya akan berbeda.

Seperti telah dijelaskan sebelumnya, dalam hal blog saya memilih jumlah artikel dan jumlah pembaca. Dalam hal akademik, saya memilih jumlah artikel, sitasi, dan h-indeks. Dalam hal agama saya memilih jumlah jumlah khatam, jumlah hafalan, jumlah rakaat, jumlah puasa sunnah, dan lain-lain.

Metrik itu penting untuk mengevaluasi diri. Demikian refleksi akhir tahun ini.

Monday, December 21, 2020

Jetson AGX change mode

Some important commands to change the mode of Jetson AGX.

Change CPU and Power mode
sudo nvpmodel -m 0 # change power mode to 1 

Change Fan mode
sudo nvpmodel -d quiet # to change to quiet mode
sudo nvpmodel -d cool # to change to cool mode

Change Clocks mode

Check current clock mode
sudo /usr/bin/jetson_clocks --show

Change clock to max mode
sudo /usr/bin/jetson_clocks 


Reference:
  1. https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/power_management_jetson_xavier.html

Thursday, December 17, 2020

Belajar Kanji Otomatis lewat Wallpaper PC

Belajar kanji bisa dilakukan secara otomatis. Bagaimana bisa? Bisa. Dengan kata lain, kita bisa "terpaksa" belajar kanji (ini yang saya maksud secara otomatis) karena melihat wallpaper PC (komputer). Begini caranya.


OS: Ubuntu

Cara yang saya coba terangkan di sini bisa diterapkan dengan mudah pada Ubuntu. Pada OS lain bisa, tapi perlu penyesuaian, khususnya aplikasi untuk mengubah wallpaper setiap sekian waktu. Pada Ubuntu, aplikasi ini sudah tersedia secara default. Aplikasi tersebut adalah "Shotwell Photo Manager" yang biasa digunakan untuk membuka file foto.


Materi Kanji

Pertama, download (git clone) wallpaper kanji (dari N3 ke N5) dari github berikut.

https://github.com/alb404/JLPT-one-kanji-a-day-wallpaper-set

Simpan direktori tersebut pada tempat (direktori) di mana ingin menyimpan file kanji. 


Langkah-langkah (dicoba pada Ubuntu 16.04):

  1. Buka aplikasi shotwell
  2. Import direktori file kanji (misal: /home/bagus/JLPT-one-kanji-a-day-wallpaper-set) dengan cara File >> Import
  3. Set sebagai background dengan cara, Ctrl+A semua file wall paper kanji, kemudian File >> Set as desktop background (Set as desktop slideshow)
  4. Konfigurasi waktu untuk berganti wallpaper, misal (default) satu jam
  5. Selesai!

Konfigurasi ganti wallpaper setiap satu jam pada Shotwell


Berikut adalah tampilan setelah proses import selesai.


Tampilan awal, kanji tampak ter-"zoom"

Nah, kanji sudah terpasang sebagai wallpaper. Masalahnya, by default, tidak ada konfigurasi untuk wallpaper tersebut atau wallpaper ditampikan dalam keadaan ter-zoom, seperti gambar di bawah. Untuk mengganti konfigurasi "zoom" ke "scaled", agar sesuai dengan ukuran monitor, gunakan perintah berikut

gsettings set org.gnome.desktop.background picture-options "scaled"
Cara di atas (mengganti "zoom" ke "scale") bisa memakai GUI bila ada di setting (Setting >> Appearance >> Look), seperti gambar di bawah tangkapan layar berikut.
Tampikan wallpaper seteleah di "scale"

Nah sekarang, ukurannya tinggal pas. Selanjutnya tinggal mengganti warma background di belakang kanji, lewat setting di bawah. Hasilnya adalah gambar di bawahnya.

Mengganti background kanji, dari biru ke hitam

Wallpaper kanji yang berubah setiap jam


Referensi:  

[1] https://askubuntu.com/questions/1111201/background-image-resize-in-ubuntu-18-04-1-lts/1111271#1111271

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

Thursday, December 10, 2020

Some important commands on using "pdftk"

pdftk is a powerful tool. It can be used to cut, merge, and edit pdf file. Even I have PDF Studio Pro, in several cases (merging copyrighted pdf) it failed, but pdftk works. Here some important pdftk commands to work with pdf files.

# Collate scanned pages

    pdftk A=even.pdf B=odd.pdf shuffle A B output collated.pdf

   # or if odd.pdf is in reverse order:

    pdftk A=even.pdf B=odd.pdf shuffle A Bend-1 output collated.pdf

# Decrypt a PDF

    pdftk secured.pdf input_pw foopass output unsecured.pdf

# Encrypt a PDF using 128-bit strength (the default), withhold all permissions (the default)

    pdftk 1.pdf output 1.128.pdf owner_pw foopass

# Same as above, except password baz must also be used to open output PDF

    pdftk 1.pdf output 1.128.pdf owner_pw foo user_pw baz

# Same as above, except printing is allowed (once the PDF is open)

    pdftk 1.pdf output 1.128.pdf owner_pw foo user_pw baz allow printing

# Join in1.pdf and in2.pdf into a new PDF, out1.pdf

    pdftk in1.pdf in2.pdf cat output out1.pdf

   # or (using handles):

    pdftk A=in1.pdf B=in2.pdf cat A B output out1.pdf

   # or (using wildcards alphabetically):

    pdftk *.pdf cat output combined.pdf

# Remove page 13 from in1.pdf to create out1.pdf

    pdftk in.pdf cat 1-12 14-end output out1.pdf

   # or:

    pdftk A=in1.pdf cat A1-12 A14-end output out1.pdf

# When using the Windows command-prompt, it helps to use drag-and-drop from the file manager: drag the input PDF file from the file manager onto the command-prompt, and its full pathname will appear at the prompt.

# Apply 40-bit encryption to output, revoking all permissions (the default). Set the owner PW to foopass.

    pdftk 1.pdf 2.pdf cat output 3.pdf encrypt_40bit owner_pw foopass

# Join two files, one of which requires the password foopass. The output is not encrypted.

    pdftk A=secured.pdf 2.pdf input_pw A=foopass cat output 3.pdf

# Uncompress PDF page streams for editing the PDF in a text editor (e.g., vim, emacs)

    pdftk doc.pdf output doc.unc.pdf uncompress

# Repair a PDF’s corrupted XREF table and stream lengths, if possible

    pdftk broken.pdf output fixed.pdf

# Burst a single PDF document into pages and dump its data to doc_data.txt

    pdftk in.pdf burst

# Burst a single PDF document into encrypted pages. Allow low-quality printing

    pdftk in.pdf burst owner_pw foopass allow DegradedPrinting

# Write a report on PDF document metadata and bookmarks to report.txt

    pdftk in.pdf dump_data output report.txt

# Rotate the first PDF page to 90 degrees clockwise

    pdftk in.pdf cat 1east 2-end output out.pdf

# Rotate an entire PDF document to 180 degrees

    pdftk in.pdf cat 1-endsouth output out.pdf
    
# Inverse the page order from 1-end to end-1.

    pdftk in.pdf cat end-1 output output.pdf

Monday, December 07, 2020

Berapa Makalah yang Anda Baca Dalam Sehari? Panduan Singkat Teknik Membaca Makalah Ilmiah

Dalam suatu perjalanan untuk melihat Gunung Eiger, Monch dan Junfrau, seorang teman yang memiliki h-indeks jauh lebih tinggi daripada saya (per hari ini h-indeksnya 12 dengan 767 sitasi) bertanya kepada saya: berapa paper ilmiah yang kamu baca dalam sehari? Saya menjawab, 1-2 paper dalam seminggu. Teman saya menimpali, "Saya, dalam sehari, bisa lima paper". Pantas saja dia mencapai h-indeks dan sitasi sebanyak itu dengan waktu mulai (start) riset yang sama dengan saya. 

Sejak saat itu saya berusaha meningkatkan kemampuan membaca makalah akademik saya. Berikut ini adalah teknik-teknik membaca makalah ilmiah yang, menurut saya, mampu meningkatkan kemampuan (pemahaman) membaca makalah ilmiah akademik.

Skimming

Sebelum lebih jauh mengurai teknik membaca paper, ada dua tipe membaca yang perlu dipahami, scanning dan skimming. Dalam membaca paper, saya selalu menggunakan teknik skimming. Saya hanya membaca apa yang saya cari. Secara singkat teknik skimming ini seperti ini, 

  1. Skimming: cari apa yang anda ingin anda ketahui (pertanyaan di kepala anda, misal: METODE apa yang digunakan? berapa jumlah layernya? Apa input dari sistem yang diusulkan?)
  2. Skip yang tidak dipahami, baca yang dipahami dulu. Baca bagian lain yang bisa membantu pemahaman anda.
Dengan skimming ini, berikut urutan cara membaca makalah ilmiah.

Alternatif urutan membaca paper ilmiah (sumber: IG @bagustris)


Teknik dasar, menurut saya!

Berikut langkah-langkah membaca saintifik menurut pengalaman pribadi saya. Teknik ini saya dapatkan ketika mengikuti workshop tentang "Complex System" di Trieste. Urutan membaca makalah saintifik termudah adalah:

  1. Baca (scanning) ABSTRAK,
  2. Skim Methods,
  3. Lihat GAMBAR dan TABEL,
  4. Skim Results,
  5. Baca (scanning) Conclusions.
Langkah tambahan:
  1. Pahami persamaan matematika yang digunakan (jika ada), jika bisa. Hubungkan persamaan tersebut dengan konteks yang digunakan dalam paper tersebut.
Langkah 1 merupakan yang terpenting, tidak bisa dilewati. Jika ditulis dengan baik, abstrak sudah mencakup isi makalah dari pendahuluan hingga kesimpulan. Langkah ke-2 adalah kunci dari makalah, ide yang ditawarkan. Langkah ke-3 dan ke-4 adalah yang paling sulit untuk dipahami. Langkah ke-5 lebih mudah, dan seharusnya selaras dengan abstrak. 

Pada banyak paper, terutama di bidang sains dan teknik, pasti ada persamaan matematika yang digunakan. Persamaan tersebut untuk memformulasikan permasalahan sekaligus juga solusinya. Inilah pentingnya konsep dan matematika. Tanpa keduanya, kita tidak bisa membaca paper secara menyeluruh. Solusinya harus belajar lagi: teori dasar dan matematika dasar. Bagaimanapun, memahami "ide" dalam sebuah makalah ilmiah tidak memerlukan pemahaman matematika tingkat tinggi. Cukup alur cerita dari makalah tersebut yang bisa diserap untuk memahami apa yang ditawarkan. Pemahaman matematika akan membantu kita memahami makalah secara komprehensif dan memunculkan solusi-solusi lain dari permasalahan yang diangkat pada makalah ilmiah tersebut.

Membaca dengan teknik Feynman

Menurut Feynman, teknik belajar, yang juga bisa diaplikasikan untuk membaca paper, adalah sebagai berikut:

  1. Identifikasi apa subyeknya, tulis apa yang anda ketahui dari paper tsb (kata kunci, definisi, teori, dll).
  2. Jelaskan apa yang anda pahami dari paper tersebut dengan tulisan anda, misal dalam sebuah blog atau tulisan (baik tangan atau cetak).
  3. Cari gap dari makalah dan tulisan anda.
  4. Organisasikan dan sederhanakan tulisan anda. Ceritakan ke orang awam.


Menurut Emka Bluemke

Menurut Emka Bluemke [4], Urutan membaca paper akademik setelah skimming abstrak adalah sebagai berikut:

Sebidang: Conclusions --> Discussion --> Introduction --> Methods

Tidak sebidang: Intro --> Conclusions --> Discussion --> Introduction --> Methods



Membaca paper berdasarkan Quran

Membaca (paper) berdasarkan Quran surat Al-Alaq ayat 1-5 menurut saya adalah seperti berikut:

  1. Bacalah dengan nama TuhanMu yang menciptakan. Teknik membaca paper dari ayat ini adalah: Niat, niat membaca paper untuk mencari ridho Allah.
  2. Menciptakan manusia dari 'alaq. Teknik kedua membaca paper dari ayat ini, menurut saya, adalah: pelajari dasarnya, embrionya (al-'alaq).
  3. Bacalah dan aqungkan nama tuhanMu. Teknik membaca paper dari ayat ini, menurut saya, adalah: meluruskan tujuan kita kembali (reminder) untuk membaca (makalah ilmiah), yakni untuk mengagungkan nama Tuhan. Mereview dan membaca ulang (sebagaimana ayat 1).
  4. Yang menciptakan alam dengan perantara kalam. Teknik membaca paper dari ayat ini, menurut saya, adalah menulis kembali apa yang ada dalam makalah dengan bahasa kita, khususnya dengan pena. 
  5. Yang mengajarkan manusia apa yang tidak diketahuinya. Teknik membaca paper dari ayat ini, menurut saya, adalah mengajarkan apa yang kita pahami (ke orang lain atau simulasi mengajar ke orang lain) dan mencari tahu apa yang tidak kita pahami dalam makalah ilmiah tersebut.

Demikian beberapa teknik membaca paper yang saya ketahui. Bagaimana dengan anda? Teknik membaca paper tidak hanya terbatas pada teknik-teknik di atas. Setidaknya, cara di atas adalah cara-cara yang terbukti memberikan informasi dan pemahaman dari makalah akademik jika selama ini anda stuck dan tidak mendapatkan apa-apa ketika membaca makalah saintifik ilmiah.


Referensi:

  1. https://www.sciencemag.org/careers/2016/03/how-seriously-read-scientific-paper
  2. https://blogs.lse.ac.uk/impactofsocialsciences/2016/05/09/how-to-read-and-understand-a-scientific-paper-a-guide-for-non-scientists/
  3. https://towardsdatascience.com/how-to-read-scientific-papers-df3afd454179
  4. https://twitter.com/emmabluemke/status/1269615728581361666

Related Posts Plugin for WordPress, Blogger...