Tuesday, December 26, 2006

Kerja dalam hampa



Photo is taken from Aceh Media Center.

2 Tahun

sudah...

Kalau daku saja mengingat hari demi hari yang berlalu.

Bagaimana dengan mereka yang harus berkutat, bergelut, dan berjuang dengan kenyataan itu tiap detik-nya?

Jalan masih panjang.


Tuesday, December 19, 2006

Kebanyakan Alat

Menakjubkan kalau melihat betapa banyaknya alat ukur + alat bantu analisa di dunia telekomunikasi sekarang ini.

Mulai dari alat yang berfungsi memantau operasi dan membantu pemeliharaan jaringan telekomunikasi itu sendiri, kemudian alat untuk mengukur performansi, kemudian alat untuk "melihat" apa yang sedang dibawa oleh jaringan telekom itu hingga ke alat-alat analisa yang bisa mengkorelasikan beragam data dan memberikan beragam kesimpulan.

Belum lagi variasi dari masing-masing jenis alat itu yang berada di pasaran, semuanya gak kalah lucu-nya satu dengan yang lain. Belum lagi yang dikembangkan sendiri oleh para operator jaringan telekomunikasi.

Saking banyaknya alat-alat ini, jarang sekali ada tukang-tukang (bukan pekerja lho) telekomunikasi yang bisa mengetahui fungsi apalagi cara menggunakan beragam alat itu. Bahkan kami, errr... mereka, pun belum tentu mengetahui bahwa sebuah alat itu ada. :-)

Sekarang, bayangkan kalau alat-alat itu semua digabung. Mungkin dalam semacam sistem pelayanan satu atap.

Ceritanya bisa jadi lebih lucu lagi.

Tuesday, December 05, 2006

More on Software

Bjarne follow up the previous paragraph with these:

"On the other hand, looking at "average" pieces of code can make me cry. The structure is appalling, and the programmers clearly didn't think deeply about correctness, algorithms, data structures, or maintainability. Most people don't actually read code; they just see Internet Explorer "freeze."

I think the real problem is that "we" (that is, we software developers) are in a permanent state of emergency, grasping at straws to get our work done. We perform many minor miracles through trial and error, excessive use of brute force, and lots and lots of testing, but--so often--it's not enough."

I can't stop laughin' on this one.

How so true.... :-)

Stroustrup on Software

"Our technological civilization depends on software, so if software had been as bad as its worst reputation, most of us would have been dead by now."

I'm thinking about it now... I mean, really?

Friday, November 24, 2006

Reverse Dependencies

Di dunia Microsoft Windows ada DLL, yang bukan singkatan dari "dan lain-lain" atau "dan lagi-lagi" (walau yang terakhir ini mungkin agak mirip dengan maksud hidup DLL itu *smile*).

DLL disitu adalah singkatan dari Dynamic Link-Library.
Yang artinya kurang lebih adalah kumpulan (pustaka/library, -red) fungsi program yang bisa digunakan oleh program-program lain.

Belakangan ini aku lagi belajar cara bikin semacam DLL itu, tapi di dunia Linux, or I should've say GNU/Linux to not upset anyone. Di dunia ini dia dikenal dengan nama shared objects (CMIIW). Tentu saja aku menggunakan bahasa C untuk membuatnya... :-)

Kalau dilihat dari sudut pandang bahasa C, sebetulnya nggak ada yang spesial tentang pembuatan shared-objects ini, satu hal yang mudah untuk diingat adalah tidak adanya fungsi main(), boleh buat beragam fungsi, asal namanya bukan main(). Ini bisa dimengerti, karena memang dia tidak akan dijalankan langsung.

Beda yang kedua adalah, pada waktu kompilasi, perintah yang digunakan agak sedikit berbeda. Kalau pakai gcc (compiler yang hebat itu!) , gunakan perintah
gcc -shared -fPIC namafile.c -o namafileoutput.so

Dengan demikian maka kumpulan fungsi kita tadi bisa diakses dari program-program lain atau bahkan dari pustaka-pustaka lainnya (detailnya agak sedikit lebih rumit, tapi ya gampangnya gitu dech).

Namun bagaimana jika kita ingin membuat pustaka kita ini dapat melihat fungsi ataupun variabel yang ada di program yang memanggil pustaka kita ini? Ini dinding yang bikin ku kepentok kemarin.

Aku coba teknik standar dalam bahasa C seperti mendeklarasikan variabel/fungsi itu dengan deklarasi extern yang artinya variabel/fungsi itu tidak dideklarasikan dalam pustaka tadi. Dan harus dicari deklarasi jelasnya dimana nanti belakangan. Namun teknik ini tidak berhasil.

Ternyata ada 1 lagi argumen di gcc yang bisa dipakai untuk mengatasi masalah ini. Argumen itu adalah argumen -rdynamic. Digunakan ketika kita mengkompilasi program yang akan memanggil pustaka kita tadi, agar variabel/fungsi-2 yang ada di program ini di eksport dan bisa diakses dari pustaka kita tadi pada saat dijalankan.

Dan masalah ini namanya adalah Reverse Dependencies. Gitu.

Capek dech.

Wednesday, November 15, 2006

Hmm... Free Software... yummy

Jadi,
Java, yang bahasa dan framework pemrograman, dan god knows what apaan lagi dia itu sebenarnya, yang dibuat oleh James Gosling dari Sun yang hebat itu, akhirnya menjadi Free Software dengan menggunakan lisensi GPLv2.

Hmm... ini artinya apa ya?

Friday, November 10, 2006

Jumpa lagi...

Pernah coba mrogram pakai bahasa tingkat Enak (e gede) kayak php atau perl atau ruby? Segalanya sudah enak tersedia disitu. Paling tidak, hampir segalanya.

Ada beberapa yang bisa dicatat, tapi saat ini, enaknya kita ngomongin soal "associative-array", salah satu jenis struktur data yang didukung oleh bahasa-bahasa tersebut. Dengan associative-array ini, kita bisa melakukan hal-hal sebagai berikut:

daftar_harga["apel"] = 2000;
daftar_harga["mangga"] = 3000;

Sekarang, mari bermain dengan bahasa C. Bahasa tingkat enak (e kecil) yang satu ini sungguh ajaib. Konsepnya gak banyak, cukup untuk bisa disimpen di alamat memori akses langsung di otak kita. Ini keliatan awalnya. Nyatanya, setan didalamnya cukup banyak untuk bisa bikin stress orang-orang yang gak siap mental.. :-)

Nah, di C, tidak ada yang namanya associative-array. Jenis data array memang ada di C, namun tidak associative, semua array hanya bisa punya indeks angka. Jadi kalau ingin melakukan hal seperti diatas dalam C, kita jadi harus melakukan, kira-kira, hal berikut:

#define APEL 0
#define MANGGA 1

daftar_harga[APEL] = 2000;
daftar_harga[MANGGA] = 3000;

penjelasan detailnya apa itu #define, silahkan cari di kamus-kamus terdekat.

Problem ini tentu saja selesai, kalau kita memang hanya ingin melihat daftar harga Apel dan Mangga. Bagaimana bila kita tiba-tiba ingin melihat juga daftar harga Jeruk, Salak, dan Semangka?

Di php dan kawan-kawan, ini bukan masalah besar, malah jika ingin kita bisa saja membuat associative-array secara dinamis dengan mengambil daftar buah dan harga dari sebuah file atau mungkin dari tabel di database.

Bagaimana melakukan hal yang sama dalam C?

Untuk itu, kita jadi perlu berkenalan dengan hash dan linked list, dua format struktur data yang bisa digambarkan dengan 1 kata; "Menarik"!

Dari dulu waktu mulai belajar C, kalau ketemu linked list, aku selalu garuk-garuk kepala. Pertama pusing, bagaimana sebenarnya dia bekerja, kemudian pusing, mengapa implementasi linked-list ku selalu berhasil mengeluarkan pesan "Segmentation fault". Dan terakhir, suka terkagum-kagum sendiri karena akhirnya (mengira) berhasil mengerti dan membuat linked list sendiri :-)

Cukup dengan nostalgianya.

Sekarang bagaimana kita bisa menggunakan hash dan linked list untuk implementasi sesuatu seperti associative array?

Konsep-nya sederhana, begini mungkin ceritanya:

1. Mengingat bahwa di C segala array itu hanya bisa diindex dengan angka, maka kita perlu merubah kata-kata yang ingin kita jadikan indeks itu menjadi angka terlebih dahulu. Inilah gunanya hash. Dengan menggunakan fungsi hash, kita bisa merubah kata-kata "pisang" jadi angka 1, misalnya.

2. Keliatannya selesai? Belum. Mengingat bahwa tidak ada fungsi hash yang sempurna, dalam artian selalu menghasilkan angka yang berbeda untuk setiap macam kata, maka tabrakan (collission) pasti akan terjadi. Misalnya, kalau hash("pisang") => 1, maka bukan tidak mungkin kalau hash("rambutan") juga => 1. Kalau begini, apa yang bisa kita lakukan? Ada dua yang kuketahui, 1 yang disebut dengan Chaining, dan 2 yang disebut dengan Open-Addressing.

3. Berhubung kita lagi ngomongin linked-list (dan aku gak ngerti Open-addressing *smile*), maka kita memilih metode Chaining untuk memecahkan masalah tabrakan tadi. Chaining ini artinya, semua data yang mau kita associate-kan kita simpan dalam sebuah hash-table dalam bentuk linked-list.

Susah juga ya menjelaskannya.
Mungkin aku harusnya menjelaskan soal apa itu linked-list dulu kali ya?

to-be continued aja dech... :-)

ps: anyone interested, please lookup the details on Google or Wikipedia, they should have it and should provide better explanations than what I can give.

Thursday, November 09, 2006

Bersyukur pada-Mu...

ya Allah,
aku sering lupa dan kurang bersyukur.

Untuk hidup yang Kau berikan...
atas setiap hembusan nafas.

Untuk mendung hari ini,
atau panas esok hari.

Thursday, October 05, 2006

Satu lagi korban keegoisan kita

Kemarin dulu, aku lihat berita, ada kakek-kakek tua meninggal di kolong jembatan.
Konon beliau meninggal karena sakit.

Begitu saja.
Tanpa ada yang menyadarinya sampai suatu ketika.

Satu lagi tamparan buat kita dan keegoisan kita.

Freakonomics

Menurut Steven D. Levitt di buku ini,

"Moralitas itu menggambarkan bagaimana dunia yang ideal"

sementara,

"Ekonomi menggambarkan bagaimana yang sebenarnya terjadi di dunia ini"

Levitt ini sendiri orangnya konon unik, misalnya dikisahkan, ketika ada seorang pengemis menghampiri dia, yang Levitt lakukan hanya menatap pengemis itu hingga dia berlalu sendiri.

Kemudian Levitt berkomentar,
"Wow, dia punya ponsel yang sangat bagus! Bahkan lebih bagus dari milikku."

Walau agak berat buatku yang gak pernah sepenuhnya mengerti ekonomi ini (walaupun telah berusaha, bener!) buku ini sangat menarik.

Di buku ini diceritakan bagaimana mendeteksi kejujuran eksekutif-eksekutif dan pegawai-pegawai perusahaan-perusahaan top dengan cara berjualan roti.

Atau betapa teori Broken Window yang selama ini dipercaya sebagai faktor utama yang berhasil mengatasi bahkan mengurangi kriminalitas di kota New York selama periode tahun 90-an itu ternyata hanya punya kontribusi minimal. Dan apa faktor utamanya? I don't want to be a spoiler. Just go read the book. (Gramedia, where's my percentage... ? )

Atau tentang mengapa banyak bandar narkoba masih tinggal bersama ibunya.

Dan banyak lagi kisah-kisah menarik lainnya.

Oh iya, menurut penjual roti itu, paling tidak 87% manusia itu jujur. Paling tidak, manusia-manusia yang bekerja di perusahaan-perusahaan kenamaan itu.

Wednesday, September 27, 2006

Bahayanya Senjata Nuklir

Tiba-tiba jalur komunikasi putus antara dua instansi militer penting.

Kemungkinannya cuman dua. Satu, semua jalur komunikasi alternatif terputus, dan kedua, ini yang mengerikan, serangan telah dilancarkan lawan yang menghancurkan dua instansi penting itu.

Jalur komunikasi itu punya banyak sekali rute alternatif, termasuk diantaranya melalui jalur telekomunikasi komersial. Jadi kemungkinan nomer satu ini sangat kecil.

Tanda bahaya dibunyikan, pesawat-pesawat B52 pun disiagakan, mereka diinstruksikan untuk menyalakan mesin dan bersiap-siap, namun juga untuk tidak lepas landas sampai ada pemberitahuan lebih lanjut.

Melalui komunikasi radio akhirnya didapatkan fakta bahwa tidak ada penyerangan apapun terhadap instansi-2 tersebut. Dan ternyata semua rute alternatif jalur komunikasi tersebut mempunyai satu titik simpul di sebuah stasiun relay yang saat itu punya masalah mekanik (motor kepanasan) dan mengakibatkan putusnya semua jalur komunikasi.

---

Peristiwa diatas dan banyak peristiwa-peristiwa "nyaris" lainnya yang hampir membawa dunia ke kehancuran akibat perang nuklir bisa dibaca disini.

Ini satu hal yang, menurutku, susah untuk dilihat secara optimis.

Bulan Penuh Berkah

Ramadhan itu bulan penuh berkah, kata seorang Akhmad Syakhlani.

Dan dia lebih lanjut mengatakan kalau kita seharusnya memandang Ramadhan dari sisi itu.

Hmm...

Aku berdoa semoga memang demikian adanya Ramadhan 1427 kali ini, penuh berkah, bagi semua. Bagi mereka yang melaksanakan kewajibannya, dan bagi yang lain, yang merasakan berkahnya melalui mereka yang melaksanakannya.

Dan semoga ridha Allah jadi milik kita.
Amin.

Ways on seeing religion differences

  1. To treat religion as the prime factor that defines a person and use this view to guide how we interact with other people. We might dislike them just by that, or on the contrary, loving them by that.
  2. To treat religion just like we treat skin colors, sure it make different people different, but when we interact with people as an educated person, we'll (usually) disregards skin colors. So we realizes the differences, might also grows some prejudice upon them, but we won't act by it.
  3. To treat religion as an insensitive issues, that really don't matter in everyday life.

So what's your view?

My own view right now might be a join of the views above.
I choose to respect the religion of others, may considered religion is irrelevant in many things on interactions with others in everyday life, and I also tend to care more for my own religion.

Errr... it sounds unclear.
Ok, let me rephrase, basically, my view is this:

(taken from Al-Quran, Surah Al-Kafirun, last verse)
"Lakum dinukum waliyadin"

It translates (my own words, please CMIIW):
"For you your religion, for me my religion".

No Judgement != No Opinion

Beberapa minggu lalu berlangsung diskusi kecil-kecilan di Isnet. Ngomongin perbedaan, dan bagaimana mengatasinya on conceptual, individual level. Menariknya buatku, diskusi ini mendalami pemikiranku yang lama tentang masalah ini.

Ibu Dr. Darfiana Nur yang hebat itu, menyebutkan sesuatu yang mirip dengan pandanganku tentang ini.

Basically its goes like this:
No judgement to the belief of others. But not opinionless.

Below is my personal stressing on the point (not hers).
I really, really, think that enforced personal judgements to others is bad.

And I really like to bring a point I've mentioned in the discussion here,
this point I raised when the discussion went on to mention that Muhammad SAW/PBUH had in several times enforced judgement to others when they disregards or insults Allah.

My point were:
" ... we are not Muhammad, may never will be. We don't have his wisdom, we don't have Allah direct guidance and we don't have his qadha and qadar ... "

When we judge people and enforce our judgements as if they were the only right possible judgements or interpretation on a matter, we have more or less acting as God.

And that is an unforgivable sin.

What's your 10 MRU shell commands?

Following a meme on planet debian:

$ history|awk '{print $2}'|awk 'BEGIN {FS="|"} {print $1}'|sort|uniq -c|sort -nr|head -10

81 ls
76 ll
71 cd
32 svn
27 vi
18 ps
16 apt-cache
13 find
13 exit
12 ssh


---

Nothing outstanding here...
Still an interesting things...

So what are yours?
Comment please.

Friday, August 25, 2006

Pointer to Function vs Pointer to Data

From http://www.opengroup.org/onlinepubs/009695399/functions/dlsym.html:

--- start ---

The ISO C standard does not require that pointers to functions can be cast back and forth to pointers to data. Indeed, the ISO C standard does not require that an object of type void * can hold a pointer to a function. Implementations supporting the XSI extension, however, do require that an object of type void * can hold a pointer to a function. The result of converting a pointer to a function into a pointer to another data type (except void *) is still undefined, however. Note that compilers conforming to the ISO C standard are required to generate a warning if a conversion from a void * pointer to a function pointer is attempted as in:

fptr = (int (*)(int))dlsym(handle, "my_function");
--- end ---

Hmm...

Hmm...

Hmm...

So that's why they do it like this:


* (void **) (&fptr) = dlsym(handle, "my_function");

me, on learning how to load a library ...

and the really funny thing:
I was actually searching first to linux kernel code to learn how they did module load/unload, before resorted to dl*() family of functions...

Poor me.

Friday, August 18, 2006

Merdeka!

Setting tahoen 1945.

atau 05, sebagaimana tercantum dalam teks asli proklamasi,
yang aku baru ngeh lagi kemarin, ketika mengikuti (dengan khidmat dong) peringatan detik-detik krusial itu kemarin.

Rakyat mendengarkan dengan khidmat, harap-harap namun bukan cemas, sesuatu yang lain yang dirasakan, bulu kuduk tidak mau kalah unjuk diri, menegaskan rasa itu. Merinding.

Soekarno pelan dan penuh ketegasan mengucapkan bait-baik teks yang disusun malam sebelumnya. Hatta dekat berdiri dibelakangnya.

Mungkin tak ada yang tahu bagaimana hari-hari berikutnya akan dilalui. Mungkin pula saat itu tak ada yang begitu memperdulikannya. Rasa haru dan bahagia terlalu dalam. Mengaburkan rasio.

Ketika teks selesai dibacakan, rasa yang terpendam pun meluap, memuncak, membuncah. Semua berteriak.

Merdeka!

---

Setting tahun 2000.

Aga lahir.

Negeri tempatnya lahir, berkubang dalam sengketa.
Sengketa berdarah antar saudara.
Mempertanyakan makna kemerdekaan.

Jika merdeka, mengapa menderita?
Jika merdeka, mengapa terkungkung?

tertekan. ditekan.

Tak bebas mencari makna hidup.
Tak bebas mengikuti langkah angin.
Terbelenggu.

Maka Aga pun Mahardika.

---
Setting tahun 2006.

Merdeka-pun mendua.
Sebagian terkekang karenanya.
Mungkin karena sadar bahwa Merdeka itu belum.

Sebagian, menari dalam setiap langkahnya.
Merasa bebas. Seperti angin. Tanpa batas.
Bebas tanpa arti. Mungkin juga tanpa isi.

Tidak sadari, bahkan angin pun mengikuti aturan-Nya.

Friday, August 04, 2006

A War on Stupidity and Arrogancy

Seen on planet debian (from: http://www.advogato.org/person/vorlon/diary.html?start=17):

On foreign policy

When you defend the death of a civilian
and say
he should have known better
he should have left his home
and his life
in the land of your enemy
that is hate.

When you say the boy's death was justified,
for daring to be born in that country
with such people
and such policies
it is because you hate.

When the war comes to your town
and you are caught in the cross fire,
I too will say,
you had it coming.

---

What more we can say?

I'm hereby declaring a war on stupidity, ignorancy, and arrogancy shown by Israel and America, winners of the Stupid and Arrogant Goliath of the century award.

I do realize that there still exists many smart, sightful people with conciousness on both countries, to them I offer my condolences for being intellectually impotent, though that may not be by their own will.

And this war is not limited to those countries, but also to others who shows that kind of stupidity, ignorancy and arrogancy.

Monday, July 17, 2006

The War on Terror ?

This one taken from: http://www.britshalom.org/csforum/read.php?id=43?

"You and your friends have no moral right to be there and certainly not to do what you are doing to the population there. You have no moral right to imprison the population, to enter their homes in the middle of the night, to go from home to home by breaking down walls, to detain people indiscriminately, to destroy, to shoot, to tyrannize and to inflict casualties."

It's a reply from an Israelian to a letter from an Israel's soldier.

---

We're all living in a very sad period.

A period where intolerance, greed, and stupidity rules. A period where people stop using their sanity, and chooses to be insane. A period where people stop using their hearts, even forgot about it.

Terrors, as in peace effort, is not an individual or group act, it is a global, unified act. That's why when we said we should bring war on terror, at that moment, if we have self dignity and a little piece of consciousness, we should realize that we should start the war onto ourself.

And it's not a war of weapons.
It's a war of mind and heart, a war of finding one's trueself. A war against one's inner-evils.

B'cause human are meant to love and be loved.

If we care for all the children of war, to all the victims of war, past present and future, we should stop these stupid wars on terrors and start healing ourselves and others.

Start to love again.