5.3.11

Sepenggal Kisah Lalu

Kemarin di tengah-tengah pelajaran Knowledge Representation and Ontologies, saat itu sang dosen sedang membahas tentang formalisasi Unified Modeling Language (UML) ke First Order Logic, tiba-tiba pikiran ini melayang ke masa-masa paling indah, masa-masa di sekolah. Pada saat itu saya bertanya-tanya, "kok di kelas malah pikirannya kemana-mana?"

Oke, itu tidak penting. Entah bagaimana caranya, tiba-tiba terbayang masa-masa SMP, saat saya masih lugu dan lucu (sekarang udah gak begitu lugu, tapi masih lucu yang jelas). Perlu diketahui, sampai akhir SMP saya benar-benar bertolak belakang dengan jelangkung. Makhluk itu, tidak peduli dengan eksistensinya, (menurut tagline film yang berjudul sama) "datang tak dijemput, pulang tak diantar". Nah, saya sampai selesai SMP masih diantar-jemput oleh supir di rumah.


Skip this paragraph, please!! Sebelum masuk ke tahap yang lebih jauh, saya akan sedikit membahas terminologi yang saya garis bawahi. Menurut de Morgan's Law, negasi dari konjungsi dua buah proposisi adalah disjungsi dari negasi masing-masing proposisi, atau dalam bahasa matematikanya ~(A^B) = ~AV~B. Pada kasus di paragraf kedua, bentuk negasinya sebenarnya cukup "datang dijemput atau pulang diantar", akan tetapi jika keduanya benar, sebenernya tetap benar, oleh karena itulah saya gunakan frase BENAR-BENAR.

Kembali ke masalah SMP tadi. Akibat hal tersebut, saat yang paling saya sukai adalah Minggu pagi, karena hari itu ada ekstrakulikuler bulutangkis di sekolah. Selain itu yang "menyenangkan" adalah kebebasan jam pulang karena saya pulang sendiri naik angkot. Hal yang menyenangkan lainnya, selain bulutangkis dan kebebasan waktu pulang, adalah saat diantara keduanya.

Tiada banyak yang saya (dan teman-teman) lakukan di masa itu. Jajan, jalan-jalan (tidak lama juga), menghirup udara Bandung yang (dulu masih) segar. Tapi entah mengapa, kadang hal-hal kecil dan sederhana seperti itu terasa luar biasa menyenangkannya.

Dan tadi saat "layangan" pikiran itu kembali ke kelas, barulah kusadari, terasa betapa "menderitanya" kehidupanku saat ini.

1.3.11

24, 25, and 26....

... adalah batas usia youth di sebagian besar wilayah Eropa. Untuk selanjutnya, istilah youth akan diganti dengan kawula muda.

Itulah salah satu alasan, jika ingin berkuliah di Eropa dan berjalan-jalan adalah salah satu tujuan sampingan utama (tujuan sampingan yang diutamakan), bersegeralah! Hal ini juga berlaku jika bepergian ke Eropa hanya untuk berjalan-jalan. Alasannya jelas, perusahaan-perusahaan transportasi (umumnya transportasi darat) dan tempat wisata umumnya memberikan harga yang berbeda, lebih murah tentunya, untuk mereka yang masuk kategori ini. Lebih lanjut, jika memang terdaftar sebagai mahasiswa, ada kemungkinan mendapat diskon lebih (atau, mereka yang mendapat diskon hanya mahasiswa yang kawula muda, atau kawula muda yang mahasiswa). Sayangnya hal ini tidak berlaku untuk restoran-restoran atau tempat makan.

Tidak ada penjelasan mengenai aturan resmi, tiap negara, bahkan tiap tempat bisa memiliki aturan yang berbeda. Mungkin saja untuk masuk bangunan A di kota X, ada diskon untuk mereka yang berusia dibawah 25 tahun, tapi bangunan B di sebelahnya memberi diskon untuk mereka yang berusia dibawah 26 tahun. Atau bangunan C memberi diskon untuk mereka yang berusia dibawah 25 tahun dan mahasiswa, atau mungkin saja bangunan D memberi diskon untuk mereka yang mahasiswa, tidak peduli usianya, atau beberapa aturan yang tidak tercakup disini, seperti, hanya mahasiswa yang berkuliah di Uni-Eropa saja yang mendapat diskon, dan sebagainya.

Saya sendiri cukup beruntung dalam kasus ini. Sewaktu di Portugal, harga tiket transportasi (bulanan) berbeda untuk mereka yang berusia dibawah 24 tahun DAN berstatus mahasiswa di Portugal (diskon 50%). Sedangkan sekarang di Italia, harga tiket transportasi (tahunan) berbeda untuk mereka yang berusia dibawah 26 tahun DAN berstatus mahasiswa di Italia (harga khusus, 100 euro per tahun untuk seluruh alat transportasi murah dalam satu regional). Andai kasus perpindahan saya dibalik (dari Italia ke Portugal), saya tidak akan mendapatkan kemudahan itu di Portugal tentunya.

Demikian dan terima kasih.

24.2.11

Not so important posting...

Perjalanan yang kutempuh selama 5 hari ke Lisbon kemarin telah memberikan cukup banyak pelajaran.

Bukan hanya bahwa tidak semua orang memiliki cara berpikir yang sama terhadap suatu masalah apalagi untuk memahami pandangan yang berbeda tersebut, bukan pula sekadar mengetahui bahwa hidup saya yang hampir satu tahun di wilayah ibukota Portugal tersebut ternyata masih belum cukup untuk mengetahui, apalagi memahami, sejarah kota itu. Bukan pula menyadari bahwa perjalanan Bolzano-Milano membutuhkan waktu lebih lama daripada perjalanan Milano-Lisboa.

Lebih dari itu semua, menyadari arti penting seorang sahabat dan lebih kepada penjagaan diri, karena sebuah kesalahan "kecil" di masa lalu dapat mengakibatkan luka yang dapat menjadi penyesalan di masa yang akan datang.

Untukmu, sahabatku, terima kasih untuk maafmu dan pelajaran hidup yang telah kau berikan. Lupakan masa itu dan tataplah masa depan yang, Insya Allah, lebih cerah.

16.12.10

"Clean" Programming Check-List

Alhamdulillah, masih bisa mempertahankan (at least) one post per month...

Kali ini, seperti yang tertulis di judul, saya akan sedikit membahas mengenai checklist memprogram, atau dalam bahasa Bu Inge-nya, "Sudah seberapa 'bersih'-kah kamu memprogram?" Saya "berani" membawa topik "kebersihan" program karena, meski ada tulisan tentang Why can't programmers program, saya cukup yakin bahwa pembaca blog ini terdiri "hanya" dari dua tipe saja:
  1. Teman/saudara/kerabat/handai Taulan (TSKHT) saya
    • TSKHT saya yang pernah berurusan dengan dunia pemrograman. Anda pasti bisa memprogram!
    • TSKHT saya yang memang tidak berurusan dengan dunia pemrograman (kayanya sebentar lagi bakal nutup tab ini deh :( )
  2. Orang "lewat"... Jika Anda masuk kategori ini, saya yakin Anda bisa memprogram... Soalnya kalo nggak, gimana caranya bisa nyasar ke blog ini... Wong Page Rank-nya aja cuma 3/10...

Dengan asumsi demikian, Anda pasti bisa memprogram atau tidak pernah berurusan dengan dunia pemrograman... Oleh karena itu, tidak ada salahnya memeriksa kebersihan kode seseorang yang memprogram (!= programmer). Berikut ini daftar yang "dikeluarkan" oleh Bu Inge dalam memprogram: (dalam kasus ini, saya menggunakan Java)

  1. Tidak pernah menggunakan break ataupun continue, so instead of doing something like this:
    int ans = -999;
    for(int i = 0; i < strArr.length; i++){
        if(strArr[i].equals("elvi")){
            ans = i;
            break;
        }
    }
    akan jauh lebih baik jika memperbaikinya menjadi begini:
    int ans = -999;
    {
        boolean found = false;
        for(int i = 0; i < strArr.length && !found; i++){
            if(strArr[i].equals("elvi")){
                ans = i;
                found = true;
            }
        }
    }
    Ini memang "ujian" paling berat, apalagi dari segi panjangnya kode, kode kedua lebih panjang
  2. Tidak memberi return lebih dari satu di satu fungsi, so instead of doing something like this:
    if(i == 2)
        return i;
    return i+1;
    akan jauh lebih baik jika memperbaikinya menjadi begini:
    int ans;
    if(i == 2)
        ans = i;
    else
        ans = i+1;
    return ans;
    
    atau untuk memendekkan kodenya, menjadi seperti ini:
    int ans = i;
    if(i != 2)
        ans++;
    return ans;
    
  3. Tidak memberi return di prosedur (void), so instead of doing something like this:
    public void voidA(int x){
        if(x == 2) return;
        else {
            // do something
        }
    }
    akan jauh lebih baik jika memperbaikinya menjadi begini:
    public void voidA(int x){
        if(x != 2) {
            // do something
        }
    }
  4. Tidak melakukan kesalahan-kesalahan "konyol" memprogram, so instead of doing something like this:
    int i = 0;
    boolean found = false;
    while(!found){
        // do something
        if(/* something happened*/) found = true;
        i++;
    }
    i--;
    or this:
    int i = someFunction();
    if(i == 1){
        // doing something that doesn't change the value of i
    }
    if(i == 2){
        // doing something
    }
    akan jauh lebih baik jika bagaimana? Saya serahkan kepada pembaca untuk menjawabnya...
  5. Tidak cetak-cetek pulpen :D
    Karena cetak-cetek bulpen adalah awal dari kegilaan dunia... Hehehe...
Mungkin banyak, termasuk saya, terutama yang sudah masuk di dunia "nyata" mempertanyakan pentingnya "kebersihan" dari program, tapi saya sendiri sampai saat ini melihat hal diatas sebagai keindahan pemrograman... Meski sama sekali tidak menutup kemungkinan saya melakukan satu (atau lebih) kesalahan diatas, terutama saat kepepet dikejar deadline(eniwei, istilah yang bener untuk batas akhir pengumpulan (tugas, dkk) adalah deadline bukan dateline)


Terakhir... Pesan yang selalu disampaikan oleh Bu Inge kepada anak didiknya "Anakku, jadilah orang waras di dunia yang sudah gila ini"

27.11.10

Dream on dream on...

Keep on dreaming, friends...

Bermimpi memang tidak ada salahnya, masih berkaitan dengan KTT (Khayalan Tingkat Tinggi) (baca juga: Perusahaan Penerima Pekerja dan kehancuran dunia IT), kali ini saya memiliki ide lain, terutama berguna untuk orang dengan mobilitas tinggi dan lebih terutama lagi, untuk negara dengan kualitas internet pas-pasan (saya tidak akan menyebutkan contohnya) :D

Ide yang saya mimpikan ada 2, yang pertama adalah... TRANSFER BANDWIDTH...

Jadi, meski rekan-rekan sudah bisa membayangkan, saya akan menjelaskan sedikit.. Pada saat dua orang, yang satu kaya bandwidth (A) dan yang lainnya miskin bandwidth (B), sedang online bersama... Nah, si B bisa meminta bandwidth beberapa puluh kilobyte(atau ratus kilobyte, atau beberapa megabyte, atau sesukanya lah, tergantung keinginan dan kesepakatan antara A dan B) kepada si A, dan kemudian dia bisa memanfaatkannya... Andai teknologi ini benar-benar terlaksana, hmmm, mungkin bisa dijadiin lahan bisnis juga tuh, seperti "sedia bandwidth sampai 5 Megabit per second hari ini! langganan bandwidth hanya 100 ribu per bulan", sepertinya seru sekali yaaaa... Ihihihi...

Permasalahannya adalah, si penerima (B) masih memerlukan bandwidth (sedikit) untuk menerima transfer-an bandwidth dari si pengirim (A). Oleh karena itu, diciptakanlah ide kedua!! (kaya ide itu apa aja, harus diciptakan segala) Ide kedua dari saya ini adalah, BANDWIDTH STORE!!

Nah yang ini keliatannya jauh jauh lebih asik lagi... Jadi kita bisa menyimpan bandwidth ke dalam suatu drive (hard drive, flash drive, atau mungkin perlu dibuat drive khusus untuk penyimpanan bandwidth). Bahkan di wilayah dengan bandwidth pas-pasan pun, teknologi ini akan sangat membantu. Bayangkan saat kita tidur, kita menyimpan semua bandwidth yang bisa kita peroleh ke dalam drive, kemudian saat kita bangun, tiba-tiba kita mendapati drive kita sudah berisikan bandwidth sebesar 5 GB download dan 1 GB upload... Coba bayangkan jika ini terjadi saat kita mau pulang kampung, yang tidak ada koneksi internet... Kita tetap bisa berselancar di kampung halaman! Jika ide ini benar-benar bisa terealisasikan, sungguh kasian ISP-ISP yang bertebaran di luar sana, sepertinya gak banyak yang masih digunakan di dunia ini... Hwehehehe...

Andai dua ide ini terwujud, nikmatnya hidup ini... Wawawawawa