Wednesday, June 27, 2007

Tribal Wars

Aih... sejak kapan ya aku mulai maen Tribal Wars? Mulanya tertarik untuk mencoba link yang diposting oleh salah seorang temanku di milis, eh ternyata malah bikin ga bisa berhenti maen. Permainan ini berbasis web, dan sepertinya karena nggak ada fitur-fitur yang aneh-aneh, bisa berjalan di semua browser. Aturan mainnya menurutku sangat sederhana dan mudah. Kita diberi sebuah village. Lalu dengan village yang sudah ada, bisa dibangun bangunan-bangunan lain, mengumpulkan resource, membuat pasukan, menyerang village-village lain (merampok resourcenya), dan bertukar resource dengan village lain. Selain itu kita dapat membuat tribe sendiri dan menjalin hubungan diplomasi dengan village-village atau tribe-tribe lain.


Resource yang digunakan pada permainan ini ada tiga jenis, yaitu Wood, Clay, dan Iron. Masing-masing resource ini dihasilkan dari Timber Camp, Clay Pit, dan Iron Mine atau bisa didapat dari menjarah village lain. Resource-resource ini dapat digunakan untuk membangun pasukan atau meng-upgrade level dari bangunan-bangunan yang terdapat pada permainan ini, termasuk bangunan penghasil resource ini sendiri. Semakin tinggi levelnya, maka semakin tinggi pula kecepatan produksi resourcenya.


Selain itu ada Village Headquarter yang merupakan bangunan yang berada di tengah village. Melalui bangunan ini, kita dapat membangun bangunan lain (jika belum ada). Semakin tinggi level bangunan ini, semakin cepat pula proses pembuatan bangunan dan upgrade bangunan yang telah ada.


Untuk menampung resource, ada Warehouse yang memiliki kapasitas penyimpanan sesuai dengan levelnya. Sementara itu, ada pula Hiding Place yang menyimpan resource yang ada sehinggal bila village kita dijarah, maka tidak semua resource kita akan diambil oleh village yang menyerang. Pada permainan ini, level Hiding Place dibatasi hingga level 10 yang kapasitas penyimpananya adalah 2.000 per masing-masing resource, sementara kapasitas Warehouse bisa mencapai puluhan ribu unit per masing-masing resource.


Populasi pada permainan ini dibagi menjadi dua, yaitu populasi untuk pasukan, dan populasi yang digunakan untuk keperluan operasional bangunan-bangunan yang ada. Kapasitas populasi maksimum pada Tribal Wars ditentukan oleh level pada Farm yang dimiliki. Semakin tinggi levelnya, semakin tinggi pula populasi maksimumnya.


Untuk membuat pasukan, telah tersedia bangunan-bangunan seperti berikut:

  • Barrack : membuat Spear Fighter, Swordsmen, Axemen, dan Archer
  • Stable : membuat Scout, Light Cavalry, Heavy Cavalry, dan Mounted Archer
  • Workshop : membuat Ram, dan Catapult
Masing-masing pasukan yang dibuat memiliki kapasitas yang berbeda dalam mengangkut resource hasil jarahan. Untuk Ram dan Catapult tidak memiliki kapasitas untuk mengangkut. Sementara yang kapasitas mengangkutnya paling besar adalah Light Cavalry. 1 Light Cavalry dapat mengangkut 80 unit resource. Bandingkan dengan Axemen yang kapasitas mengangkutnya hanya 10 unit resource. Pasukan favoritku tentu saja Light Cavalry. Kapasitas angkutnya sangat besar, sementara dapat bergerak lebih cepat dibandingkan dengan infantri atau Ram dan Catapult. Ram dan Catapult lebih difokuskan untuk merusak bangunan.


Berhubung game ini real time dan semuanya berjalan di server. Jadi bisa ditinggal semau kita. Pembuatan pasukan, upgrade bangunan, bertukar resource, serta menyerang village lain merupakan proses yang memerlukan waktu. Selagi menunggu proses tersebut selesai, permainan ini dapat ditinggalkan begitu saja. Jadinya, seharusnya sih nggak bakalan mengganggu ke perkerjaan kita * katanya sih bgituh... *. Yang paling penting dari permainan ini adalah: jika ingin maju dengan cepat, permainan ini harus selalu dimonitor, jangan sampai ada resource yang tidak terpakai. Hehehehe.... * makanya, ngabisin waktunya disini *

Dan akhirnya setelah beberapa minggu memainkan permainan ini, temen-temen di kantorku pada keracunan juga. Terhitung hari ini sudah ada 8 orang rekanku disini yang sudah meregistrasi dan memainkan permainan ini. Asyik juga nih, bisa maen game barengan sama temen-temen satu divisi. Beginilah jika lagi nggak banyak kerjaan. Banyak sekali godaan-godaan untuk mengerjakan sesuatu yang kurang penting dan aditif seperti ini. Hihihi.. Lucunya, ada juga yang menanggapi permainan ini dengan serius. Membayangkan jika permainan seperti ini dapat di-porting menjadi mobile version menggunakan protokol WAP. Ide yang lumayan menarik... buat nambah-nambah revenue perusahaan. :))

Testing: Maxthon 2

Beberapa hari yang lalu, iseng-iseng aku mencoba menggunakan Maxthon, browser yang menggunakan engine IE. Informasi tentang browser ini aku dapatkan dari salah satu vendor yang kebetulan setiap kali ketemu selalu menggunakan browser ini. Karena penasaran, aku download aplikasinya dan mencoba untuk menggunakannya. Yang aku gunakan saat ini adalah Maxthon 2 RC3. Masih versi beta, bukan versi releasenya. Ada sih yang versi 1, cuma berhubung namanya juga iseng-iseng, sekalian aja pakai yang versi 2 nya.


Sayang, browser ini menggunakan engine IE, jadinya cuma bisa jalan di Windows doang. Tetapi, dari sisi fitur sih lumayan menarik. Walaupun dari sisi experience rasanya sama saja dengan menggunakan IE, tetapi IE yang sudah di-enhance tentunya. Berikut ini adalah beberapa fitur yang aku dapatkan dari website resminya:

  • Tabbed Browsing Interface
  • Mouse Gestures
  • Super Drag&Drop
  • Favorites Bar
  • Ad Hunter
  • IE Extension Support
  • External Utility Bar
  • Privacy Protection
  • Skins
  • Plugins
  • Compatibility & Low on Resources
Dari sekian banyak fitur yang telah disebutkan diatas, yang menurutku lumayan membantu adalah fitur Ad Hunter. Tanpa perlu konfigurasi apapun, fitur ini sudah dapat memblok konten-konten yang berbau iklan. Mungkin nggak semuanya difilter, tetapi filter untuk iklannya bisa diatur. Dengan fitur Ad Hunter ini, halaman-halaman yang biasanya sarat dengan iklan seperti Detik dan Tribal Wars :P pun bisa kubuka lebih cepat. Mungkin karena fitur inilah, browser ini terasa lebih ringan, lebih cepat, dan lebih menghemat resource memori. Maklum, kebanyakan konten-konten iklan berupa flash movies yang memakan memori cukup banyak.

Maxthon 2 juga memiliki fitur Mouse Gesture. Fitur ini berfungsi seperti shortcut yang dapat diakses menggunakan mouse dengan menahan klik kanan pada dan menggambar bentuk tertentu di layar. Namun bentuk-bentuk yang dikenali di browser ini hanya berupa garis horizontal, garis vertikal, atau kombinasi keduanya. Berikut ini adalah beberapa shortcut yang dapat diakses menggunakan fitur ini:
  • Menggambar garis vertikal ke bawah (scroll halaman ke bawah)
  • Menggambar garis vertikal ke atas (scroll halaman ke atas)
  • Menggambar garis horizontal ke kiri (back, kembali ke halaman sebelumnya)
  • Menggambar garis horizontal ke kanan(forward, ke halaman berikutnya)
  • Menggambar garis vertikal ke atas dilanjutkan dengan garis vertikal ke bawah (refresh halaman yang sedang aktif)
  • Menggambar garis vertikal ke bawah dilanjutkan dengan garis horizontal ke kanan (Menutup halaman yang sedang aktif)
Lumayan, fitur ini cukup membantu, terutama untuk scrolling halaman.

Selain fitur-fitur diatas, ada fitur Screen Capture yang mengingatkanku pada masa-masa kuliah dulu. Melalui fitur ini, aku dapat mengambil screenshot pada halaman yang aktif, baik region (area yang akan dicapture dapat dipilih), maupun satu halaman penuh (walaupun panjang halaman melebihi ukuran window). Terlebih lagi, dapat pula diambil screenshot dari semua halaman pada tab-tab yang sedang dibuka dalam sekali klik. Benar-benar praktis. Cocok digunakan ketika membuat dokumentasi atau user manual suatu sistem. Sayangnya dulu sewaktu kuliah mengambil screenshotnya menggunakan aplikasi Hypersnap yang notabene adalah bajakan (ga sanggup beli yg asli). Hehehehe...

Kelebihan lain yang kurasa cukup membantu adalah kemudahan dalam mengakses fungsi pengontrolan konten. Fungsi-fungsi untuk mengaktifkan atau menonaktifkan konten-konten seperti image, script, ataupun flash movies dapat diakses secara langsung melalui menu, tanpa perlu membuka dialog yang mengatur konfigurasi global dari browser ini.

Kekurangan yang aku rasakan dari browser ini adalah manajemen tab nya yang agak-agak aneh. Ketika aku sudah membuka suatu alamat pada suatu tab, maka ketika aku mengetikkan alamat lain pada tab yang sedang aktif, alamat beru tersebut akan dibuka di tab baru, bukan di tab yang sedang aktif. Lumayan menjengkelkan. Karena itu artinya tab-tab yang sedang aku buka menjadi bertambah banyak -menghabiskan resource aja-. Entahlah, mungkin masalah ini bisa dikonfigurasi, namun aku belum menemukannya.

Walaupun semua fitur yang dimiliki oleh browser ini juga dimiliki oleh Firefox (menggunakan extension), kurasa browser ini layak untuk dicoba. Yang jelas, dari sisi fitur, browser ini jauh lebih baik dibandingkan dengan IE :P.

Thursday, June 21, 2007

Sebuah perenungan...

"Apa yang ada di belakang kita dan apa yang ada di depan kita merupakan hal kecil dibanding dengan apa yang ada di dalam kita."

Oliver Wendell Holmes


Well, yang aku tangkap dari quote tersebut adalah bahwa semua hal yang berada di luar jangkauan kita seharusnya tidak terlalu perlu untuk kita pikirkan. Masih banyak hal-hal yang sebenarnya bisa kita lakukan yang memang masih berada di dalam kendali diri kita sendiri.

Sebagai contohnya adalah misalnya ketika kita ditimpa suatu musibah atau mungkin berada dalam keadaan yang tidak menyenangkan. Daripada terus menggerutu dan mengeluh dengan keadaan yang terjadi, aku rasa lebih baik jika kita mencoba mengambil hikmahnya dan mencari jalan keluarnya. Semua hal buruk yang telah terjadi biarkanlah seperti adanya. Toh, semuanya sudah terjadi. Lebih baik berpikir saat ini. Apa yang bisa dilakukan saat ini yang dapat memperbaiki keadaan kita? Apa pula yang harus kita kerjakan agar musibah yang telah terjadi tidak terjadi lagi di masa yang akan datang?

Aku rasa untuk memiliki pola pikir yang seperti ini tidaklah mudah, tetapi bukan berarti tidak bisa. Mengeluh pada keadaan bukanlah suatu solusi, karena itu diluar kendali kita. Tetapi kita bisa memilih respon yang tepat untuk mengatasi masalah ini. Apakah kita akan terus menyalahkan keadaan? Atau apakah kita akan melupakan kejadian ini dan bangkit untuk memperbaiki diri dan berfokus pada hal-hal yang memang bisa kita lakukan untuk membuat semuanya menjadi lebih baik?

~semakinNggakJelasAjaNih....

Wednesday, June 20, 2007

Boxing dan Unboxing

Seperti yang sudah dijelaskan pada postingan sebelumnya, terdapat dua jenis data type: Value Types dan Reference Types. Selanjutnya terdapat mekanisme untuk melakukan konversi dari value type ke dalam reference type yang dinamakan dengan boxing. Sementara itu konversi dari reference type kembali ke value type dinamakan unboxing.

Boxing
Berikut ini adalah contoh dari operasi boxing:

int i = 23;
object 0 = i; // boxing secara implisit, secara eksplisit -> object o = (object)i;


Hasil dari operasi boxing diatas untuk statement pada baris kedua adalah terciptanya sebuah object o pada stack, yang menunjuk suatu nilai yang bertipe int pada heap. Nilai yang ditunjuk ini merupakan salinan dari nilai yang di-assign ke variabel i. Gambar berikut ini memberikan ilustrasi untuk variabel i dan o pada memori:


Sesuai dengan gambar diatas, jika isi variabel i berubah, nilai variabel o tidak akan berubah karena variabel o telah menyimpan salinan dari nilai variabel i.

UnBoxing
Pada proses unboxing, nilai yang ada pada heap disalin kembali ke stack. Sebelum proses penyalinan ini, dilakukan pemeriksaan terlebih dahulu, apakah instance dari object yang akan di-unboxing berupakan versi boxed dari value type yang diassign untuk proses unboxing tersebut. Berikut ini adalah contoh dari proses boxing dan unboxing:

int i = 23;
object 0 = i; // boxing secara implisit, secara eksplisit -> object o = (object)i;
int y = o; // unboxing secara implisit, secara eksplisit-> int y = (int)


Berikut ini adalah ilustrasi dari proses diatas pada memori:

Proses unboxing sedikit berbeda dengan proses boxing. Agar proses unboxing ke suatu value type berhasil dilakukan ketika run-time, maka argumen yang digunakan untuk proses unboxing harus berupa instance dari object yang sebelumnya dibuat melalui proses boxing pada value type tersebut. Jika proses unboxing dilakukan pada variabel yang berisi null atau berisi instance dari object yang tidak sama dengan value type hasil unboxing, maka ketika run-time akan muncul InvalidCastException.

Berikut ini adalah contoh lain untuk proses unboxing:

int i = 23;
object o = i;
double y = (double)o;


Potongan kode diatas dapat di-compile, namun pada saat run-time akan muncul exception :
InvalidCastException karena variabel i di-boxing sebagai variabel bertipe integer sehingga harus di-unboxing juga kedalam variabel bertipe integer. Tentu saja setelah dilakukan proses unboxing ke dalam variabel tipe integer, baru dapat dilakukan konversi ke variabel bertipe double seperti berikut ini:

int i = 23;
object o = i;
double y = (double)(int)o; // Melakukan unboxing lalu melakukan casting variabel ke
// tipe double

Tuesday, June 19, 2007

Secure SHell FileSystem

Berhubung di Ubuntu aku tidak menemukan aplikasi yang cukup user friendly semacam WinSCP di Windows, maka terpaksa deh mencari alternatif lain yang dapat memudahkanku dalam melakukan transfer file dari local ke remote ataupun sebaliknya. Di Ubuntu setahuku package yang cukup interaktif adalah secpanel, sejenis WinSCP. Cuma tampilannya terkesan kuno dan cara pakainya juga rada-rada ribet. Masa setiap mau transfer file ditanyain dulu passwordnya. Entahlah jika aplikasi tersebut butuh konfigurasi lebih lanjut lagi.


Setelah melakukan pencarian, aku menemukan package yang bernama sshfs yang merupakan singkatan dari Secure SHell FileSystem. Aplikasi sshfs ini memungkinkan adanya sebuah file system yang beroperasi dengan file-file yang ada pada remote komputer menggunakan SSH login. Dengan kata lain, aku dapat melakukan mount folder remote kedalam folder lokal. Malah lebih praktis jadinya. Aku nggak perlu repot-repot menyalin file dari local ke remote ataupun sebaliknya. Tinggal buka filenya, edit, lalu save seperti halnya menyunting file-file yang berada di local.

Untuk melakukan instalasi package sshfs di Ubuntu, caranya sangat mudah. Aku mengikuti panduan yang aku dapat dari Ubuntu Guide. Kira-kira seperti inilah langkah-langkahnya:

Install package sshfs

sudo apt-get install sshfs
Menambahkan driver kernel untuk FUSE yang memungkinkan pengguna Linux untuk membuat file system sendiri tanpa harus menulis kode kernel.

sudo modprobe fuse

Menambahkan username ke dalam group fuse, dalam kasus ini username yang aku gunakan adalah amphie

sudo adduser amphie fuse

Melakukan logout dan login ulang agar perubahan dapat terjadi

Mengubah kepemilikan /dev/fuse menjadi milik group fuse

sudo chgrp fuse /dev/fuse

Membuat mountpoint (lokasi mount remote folder di local folder), dalam kasus ini aku membuat mountpoint di folder remote208 di folder /home/amphie

mkdir ~/remote208

Dan yang terakhir adalah melakukan mount remote folder ke mountpoint (remote208). Pada contoh dibawah ini, aku melakukan mount remote folder /home/ekopre yang berada pada 10.1.89.208 ke dalam /home/amphie/remote208 yang berada di local.

sudo sshfs 10.1.89.208:/home/ekopre ~/remote208 -o allow_other

Untuk melakukan proses unmount, perintahnya adalah:

fusermount -u ~/remote208

Sejauh ini, aplikasi sshfs ini aku gunakan untuk menyunting file-file PHP yang berada di remote. Lumayan juga, jadi lebih praktis dan lebih menghemat waktu. Tetapi anehnya Ubuntu punyaku seringkali nge hang ketika file-file remote yang aku sunting menggunakan editor Screem ataupun BlueFish. Ketika aku menggunakan Komodo Edit, semuanya berjalan dengan normal. Nggak tahu deh apakah ini adalah bug atau memang ada konflik di package-pakcage yang sudah kuinstall di Ubuntu punyaku.

Testing: Google Talk

Yesterday, I tried Google Talk to transfer files. So far, I've never used this feature. Just only for chatting. Coincidently, my friend (Arnold) ask me to transfer him photos taken from events which held in Bimo's house two days ago. I zipped all of these photos into a single file which size is up to 160 MB.

So, I sent the file to him which took 4 hours to complete the transfer, not as quick as I had imagined before. But it's okay, as long as the file was not corrupted when Arnold received it. Unfortunately when the transfer had been running for about 1 hour, I mistakenly unplugged the UTP cable on my computer. Hahahaha... the connection was broken. When I plugged the UTP cable, the connection was still broken. I guessed Google Talk couldn't resume the broken connection. Minus 10 points for Google because it couldn't handle broken connection.

Finally,
I splitted the file into the smaller one. I splitted the file based on the source of these photos, which was came from my digicam, Icha's digicam, and Novan's digicam. So there were three files ( 28 MB, 47 MB, 91 MB). I sent the smallest file first which took about 30 minutes to complete. This file was successfully transferred in first attempt. Beside that, Arnold could open and unzip the file which means the file was not corrupted. Yeah plus 10 points for Google.

The second file (47 MB) was also transferred successfully within about 40 minutes in first attempt. Hmm.. I think Google Talk is reliable for transferring file with big size except you unplug the UTP cable from your computer. Hehehehe.. Plus 10 more points for Google.

The biggest file took about more than 1 hour to complete the transfer. After the transfer had been finished, I didn't confirm to Arnold whether he's received the file or not. He said that he left his computer when the file was still being transferred. So I assumed everything was fine when the transfer was completed.

This morning he told me that his computer has been restarted when he was not there. I guess after he left his computer yesterday afternoon, he didn't use the computer until this morning. He said the third file I sent yesterday was gone. Very-very funny.. It seems Google save the received file in a temporary folder and if we don't save the file immediately, the file will be gone. May be, before receiving a file, Google Talk should show up a "Save As" dialog to ensure the received file wouldn't be erased when the computer restarted unexpectedly. Hahahaha... minus 10 more points for Google.

Monday, June 18, 2007

Perayaan Ulang Tahun di rumah Bimo

Hari minggu kemarin, tepatnya tanggal 17 Juni 2007, anak-anak 2002 (nggak semuanya lah) pada ngumpul di rumahnya Bimo. Intinya sih merayakan ulang tahun beberapa teman-teman CSUI 2002 yang jatuh pada bulan Mei dan Juni sekaligus sebagai sarana kumpul-kumpul dan silaturahmi. Berikut ini adalah teman-teman CSUI 2002 yang ulang tahunnya dirayakan pada acara ini (berurutan):

  • Bimo Widhi Nugroho - Momo (7 Mei)
  • Pratiwi Wijayanti - Tiwi (18 Mei)
  • Retno Amelia - Enno (21 Mei)
  • M Sattar I (29 Mei)
  • Alisa Dewanti - Icha (29 Mei)
  • Yenni Rahmawati (14 Juni)
Dan inilah daftar anak-anak yang datang di acara ini:
Aku, Bimo (pasti lah), Adhita, Dian Wulandari (DWL), mbak Dikey, Afaf, Diah, Tiwi , Enno, Achie, Kania, Nako, Iang, Ardhita, Susi bersama ka Wisnu, Hendy, Novan bersama Isti, Boby, Dimas Julian (nggak berani nulis pake nama panggilan), Ramot, Yenni, Alex, Dian Maya, Anti, Tya, Icha, Puspita, Prita, Nasri bersama Syifa, Sattar, Amin, Aria (2004), Desmond (2004), Chrysta bersama Ihsan Wahyu, dan hmmm... siapa lagi yah. Maaf yah buat yang belum disebut, soalnya rada-rada lupa :P

Acaranya nggak jauh-jauh amat dengan acara-acara serupa yang pernah diadakan sebelumnya. Inti acaranya yaitu tiup lilin, potong kue, makan-makan dan tentu saja foto-foto. Sayangnya nggak ada Delon. Jadi kurang rame niy ;)

Untuk foto-foto yang kemarin, sudah aku upload ke Picasa dan dapat dilihat disini. Foto-foto tersebut dari kamera punyaku, kamera punya Novan, dan dari Icha. Mohon maaf jika ada beberapa gambar yang rada-rada blur. Duh mana foto-foto yang portrait lupa aku rotate lagi. ~X(

Untuk Iang: tuma gimana niy? Bisa dipake buat upload foto-foto lagi nggak?

Ini slideshow dari foto-foto kemarin:

Sunday, June 17, 2007

Editor apa yang bagus di Ubuntu???

Setelah merasa cukup jenuh menggunakan Windows, beberapa waktu lalu aku mencoba untuk menggunakan Linux kembali. Sudah lama Ubuntu yang sudah ku upgrade dari 6.10 ke 7.04 nggak aku pake lagi. Sayang aja kalo udah cape-cape di install kemudian nggak dipake lagi. Yah, itung-itung sekalian download update-update terbaru lah.

Berhubung minggu ini banyak sekali kerjaan yang berhubungan dengan kodingan, aplikasi Ubuntu yang aku gunakan tak jauh dari text editor untuk HTML dan PHP. Aku mengalami masalah dalam hal pemilihan text editor di Ubuntu. Sejauh ini, aku belum begitu terbiasa mengembangkan suatu aplikasi menggunakan Ubuntu. Paling banter yang aku pakai cuma text editor biasa semacam gedit. Setelah nanya-nanya temenku tentang editor yang paling oke, aku dianjurkan untuk menggunakan Bluefish. Editornya lumayan bagus. Simpel dan nggak aneh-aneh. Ada syntax highlightingnya yang cukup membantu. Namun entah kenapa justru fitur ini yang sering membuat masalah. Terkadang ketika sedang asyik-asyik coding, fitur ini jadi ngaco. Separuh file ada syntax highlightingnya sementara separuh file yang lain cuma plain text saja. Duh, kode-kode PHP nya jadi nggak enak dipandang deh.

Pilihan lain adalah Screem, gPhpedit, Quanta Plus, emacs, dan vim. Emacs dan vim konon katanya bagus. Tetapi learning curve nya agak-agak nggak bagus. Setelah aku coba juga ternyata sepertinya tampilan editor-editor ini kurang user friendly.

Menurut info yang aku dapat dari suatu forum, editor yang paling bagus adalah Screem. Ternyata editornya oke juga. Ada fitur syntax highlighting dan code foldingnya. Tetapi menurutku masih ada yang kurang. Di dalam IDE nya, tidak ada panel untuk browsing file. Padahal fitur ini mempercepat dan memudahkanku untuk membuka file-file lain yang masih berada dalam satu direktori. Terlebih lagi sepertinya Screem lebih cocok digunakan sebagai editor HTML, bukan PHP.

Akhirnya aku mencoba Quanta Plus. Iseng-iseng karena aplikasinya sudah terinstall di Ubuntu punyaku. Kesan pertamaku menggunakan editor ini adalah tampilannya yang cukup kompleks dan memiliki banyak menu-menu di menubarnya, yang menunjukkan bahwa editor ini memiliki fitur-fitur yang lumayan banyak. Semua fitur-fitur seperti syntax highlighting, code folding, panel untuk browsing file, list fungsi-fungsi PHP yang sudah aku buat, hingga fitur code completion, semuanya ada disini. Menurutku, jika dibandingkan dengan Screem, Quanta masih unggul. Sepertinya sih karena Quanta tidak seperti Screem yang aku rasa hanya spesifik untuk menangani file-file HTML saja. Sayangnya menurutku syntax highlighting pada Quanta tidak sebaik di Screem. Hanya masalah pemilihan font dan warna saja siy. Cuma males aja mesti mengubah settingan-settingan default yang sudah tersedia disitu. :P

Selain Quanta Plus, aku juga menemukan editor lain, yaitu Komodo Edit. Sayangnya editor ini walaupun free tetapi tidak open source dan tidak ada pada package Ubuntu. Selain untuk Linux, ada juga versi untuk Windowsnya. Namun untuk versi Windows, aku lebih suka menggunakan Notepad++. Versi Komodo Edit yang aku gunakan adalah versi 4.1. Tampilan Komodo Edit jauh lebih sederhana dibandingkan dengan Quanta Plus. Namun jangan salah, walaupun lebih sederhana, fitur-fiturnya lumayan OK. Fitur syntax highlighting, code folding, dan auto complete ada disini. Syntax highlightingnya lebih enak dilihat dibandingkan dengan Quanta Plus. Selain itu fitur auto complete untuk fungsi-fungsi built in PHP pada editor ini lebih user friendly dibandingkan dengan Quanta. Jika pada Quanta untuk mengaktifkan auto complete harus menekan tombol Ctrl+Space, maka pada Komodo Edit, fitur tersebut akan aktif dengan sendirinya begitu kita mengetikkan beberapa karakter dari nama fungsi yang akan diketik. Bahkan fungsi auto completenya tidak hanya berlaku untuk fungsi-fungsi built in PHP saja, namun berlaku juga untuk nama variabel dan nama fungsi lokal yang ada di dalam file yang sedang diedit. Selain itu, terdapat fitur lain yang tidak dimiliki oleh Quanta, yaitu fitur IntelliSense. Sebagai contohnya, misalkan ada potongan kode seperti dibawah ini:


class Test
{
var $var1;

function Function1($var1, $var2)
{
. . .
}

function Function2()
{
. . .
}
}
Lalu diluar kelas tersebut kita mengetikkan

$test = new Test();
$test->Function2();

maka ketika kita mengetikkan $test-> akan muncul daftar semua fungsi dan variabel yang dimiliki oleh class Test. Sejauh ini aku belum menemukan editor gratisan untuk PHP yang memiliki fitur ini. Entah apakah aku yang terlalu ketinggalan jaman atau karena aku baru nemu aja. Dulu banget aku percaya bahwa IntelliSense itu akan sangat sulit diterapkan di PHP. Karena semua variabel di PHP dianggap sebagai variant atau apalah (nggak tahu istilahnya apa). Tetapi ternyata anggapan itu menjadi hilang sekarang. Ternyata ada juga editor yang dapat mem-parsing tipe variabel untuk PHP disaat design-time. Walaupun aku rasa fitur ini hanya berlaku jika secara eksplisit statement:

$test = new Test();

masih berada dalam satu scope dengan statement

$test->Function2();

Berbicara tentang fitur, sayangnya Komodo Edit tidak memiliki panel untuk melakukan browsing file seperti di Quanta. Tetapi editor ini memiliki toolbar yang dapat menampilkan file-file yang masih berada dalam satu folder dengan file yang sedang diedit melalui sebuah combo box. Untuk membuka file di folder lain secara cepat, ada pilihan untuk memilih folder dimana nanti akan ditampilkan file-file yang berada dalam folder tersebut.

Hmm... begitu banyak pilihan dalam memilih editor mana yang paling cocok. Menurutku sih Quanta atau Komodo Edit cukup mencukupi. Entah jika ada editor lain yang lebih bagus. Ada yang tahu editor lain yang lebih baik dari yang telah aku sebutkan diatas???

Friday, June 15, 2007

User, Developer, dan Notulis

Setelah bersantai-santai dalam beberapa minggu terakhir, akhirnya minggu ini bisa sibuk juga. Empat hari terakhir ini aku kerja lembur. Rata-rata pulang dari kantor jam 9 malam. Sampai di rumah sekitar jam setengah 11. Capek juga sih, namun aku merasa puas. Akhirnya aku bisa produktif juga dalam urusan pekerjaan, walaupun beberapa rutinitasku terganggu karena pulang larut malam setiap hari.

Diawali dari hari Senin. Saat itu aku kebagian kerjaan sebagai "User", melakukan UAT bersama bagian IT dan vendor yang telah aku sebutkan dalam postinganku sebelumnya. Menjadi "User" memang harus jeli pada setiap celah yang mungkin ada. Jika memang terjadi sesuatu yang salah pada sistem, mau nggak mau mesti menunggu vendor menambal celah tersebut. Untungnya di UAT yang kemarin hal-hal yang seperti itu tidak terjadi. Malahan yang terjadi kesalahan banyak terjadi dari internal perusahaan. Maklum, setahuku ini UAT nya juga mendadak, jadi kurang persiapan. Seharusnya bisa pulang cepat, akhirnya malah mesti lembur hingga jam 10 malam.

Hari Selasa dan Rabu, aku menjadi "Developer" atau disini bisa lah disebut sebagai "Programmer". Berhubung kebagian pekerjaan yang memang sudah aku nanti-nantikan, ya nggak apa-apa lah lembur. Maksudnya biar kerjaan cepet beres. Aku berharap minggu depan jam kerjaku bisa normal lagi. Dalam kasus ini, aku bisa dibilang menjadi vendor untuk Departemen Content yang berada satu divisi denganku. Dari sisi "Vendor" ini, aku harus bisa membuat sistem yang sempurna (kalo nggak bisa ya paling nggak mendekati lah) yang sesuai dengan permintaan mereka.

Sistem yang aku kembangkan berurusan dengan salah satu perusahaan di luar sana yang berurusan dengan "email dan mesin pencari". Yang perlu aku lakukan hanya membaca data, membuat file XML dan mengirimkannya ke mereka. Aktivitas ini akan dilakukan rutin setiap hari. Menurutku cukup simple dan seharusnya dalam waktu kurang dari satu minggu bisa beres. Tetapi kenyataannya tak seperti itu. Beberapa hari ini koneksi ke server yang biasa aku pakai mengalami masalah. Anehnya ini cuma terjadi di divisiku. Sepertinya router untuk akses ke server di lantaiku mengalami masalah. Sehingga terkadang untuk melakukan upload atau download file dari server internal saja lama sekali. Tentunya hal ini mempengaruhi kecepatanku dalam menyelesaikan pekerjaan ini.

Hari Kamis, terpaksa aku harus menghentikan pekerjaanku untuk sementara waktu karena ada acara workshop dari pagi hingga sore. Workshop ini membahas perencanaan-perencanaan yang akan dilakukan divisiku pada kuartal ke-3 dan ke-4 tahun ini sekaligus mengevaluasi apa-apa yang telah dilakukan pada dua kuartal sebelumnya. Pada workshop itu aku menjadi notulis yang bertugas mencatat semua hal yang disiskusikan. Sejauh ini sih, aku belum pernah mendapat kerjaan yang 'resmi' seperti ini. Lumayan juga buat nambah-nambah pengalaman sekaligus melatih indera pendengaranku. Karena sejauh ini, aku tipe orang visual yang lebih mengandalkan penglihatan dibanding pendengaran.

Setelah workshop, akhirnya aku bisa melanjutkan kembali kerjaanku sebagai "Developer". Setelah memaksakan untuk lembur di hari itu dan sempat frustasi akibat ulah PHP yang aneh, akhirnya selesai juga pekerjaanku. Walaupun hanya untuk tahap awal, aku merasa senang karena semuanya sudah beres.


Minggu ini benar-benar aneh. Aku telah mengerjakan tiga hal yang menurutku cukup berarti dan ketiga-tiganya sangat berlainan. Walaupun demikian, aku sangat puas. Karena seminggu ini aku cukup produktif. Tidak seperti minggu-minggu sebelumnya. Apalagi ketiga hal ini tentunya menambah pengalaman dan pelajaran untuk memandang sesuatu dari sudut pandang lain. Kurasa inilah cara untuk mengaktualisasikan diri: mengerjakan apa saja yang bisa aku kerjakan untuk membuat segalanya menjadi lebih baik. Tak masalah apakah pekerjaan itu aku suka atau tidak, selama bisa aku kerjakan dan bisa kubuat lebih baik, mengapa tidak???

Thursday, June 14, 2007

Codingan yang aneh..

Beberapa hari ini aku dapet kerjaan buat mendevelop suatu sistem menggunakan PHP. Kerjaannya sih sederhana. Aku cuma perlu membaca data dari database tertentu, lalu memindahkannya ke tabel pada database lain, lalu membuat file XML yang isinya merepresentasikan data-data yang sebelumnya aku baca. Data yang harus dibaca mencapai ribuan. Jumlah data seharusnya nggak menjadi masalah disini, karena aku rasa PHP cukup reliable dalam menangani file berukuran besar.

Anehnya, jumlah data yang banyak itu menjadi masalah dalam script yang aku buat. Jika datanya sedikit, file XML yang dihasilkan dapat terbaca dan ter-parsing dengan baik (well formed). Namun, karena data yang aku baca lumayan besar, file XML yang dihasilkan berukuran sekitar 10 MB. Anehnya, file XML yang dihasilkan menjadi tidak well formed. Pada beberapa tag tertentu muncul karakter-karakter aneh. Bahkan nama tag yang sudah jelas-jelas aku hardcode pun untuk record-record tertentu menjadi kosong atau menjadi karakter-karekter aneh. Masa untuk suatu record tertentu element XML yang dihasilkan bisa berubah, sementara untuk hampir semua record nggak ada masalah. Padahal kode yang digunakan untuk mem-parsing masing-masing record itu sama.

Dan setelah aku coba mengacak-ngacak kode yang aku buat sendiri, akhirnya aku menemukan solusi yang tak terduga. Aku mengganti nama variabel yang aku gunakan dengan nama lain, dan semua masalah terselesaikan. Benar-benar aneh. Sebagai informasi tambahan, PHP yang aku pakai adalah PHP versi 4. Aku rasa ini adalah salah satu bug di PHP versi tersebut yang berkaitan dengan masalah alokasi memory secara dinamis. Mau minta upgrade versinya juga pasti susah karena server yang digunakan adalah server production. Alhamdulillah... yang penting semuanya udah beres. Bikin frustasi aja selama 2 jam ini... Fiuhh...

Monday, June 11, 2007

UAT bersama NSN

Tanpa diduga siang hari ini aku disuruh untuk UAT di lantai 11, tempat dimana orang-orang IT dan vendor berada :P. Rada-rada males juga, soalnya lagi ada kerjaan yang mesti cepet-cepet diberesin. Terlebih lagi, pengalamanku dengan UAT agak-agak kurang bagus. Terakhir kali UAT, pulangnya jam 10 malam, mana itu juga belum selesai lagi. Walaupun berada di posisi user, tetep aja males juga kalo sampe jam segitu.

UAT kali ini dilakukan bersama dengan bagian IT Business System Development (IT BSD) sebagai bagian yang bertanggung jawab dalam pengembangan sistem yang akan diuji. Sementara vendor yang mengerjakan sistem yang akan diuji adalah Nokia Siemens Network (NSN). Ternyata orang NSN yang dateng adalah kakak kelasku sendiri, Parlin 97. Yah, itung-itung jadi kenal lah. Dulu sewaktu kuliah, aku nggak terlalu kenal sama orangnya.

Pada awalnya, UAT berjalan dengan sukses. Skenario yang dibuat harus dapat dijalankan untuk kartu HALO, Simpati, dan Kartu As. Untuk Simpati dan Kartu As, semua skenario dapat berjalan dengan baik. Namun, ternyata untuk kartu HALO tidak demikian. Beberapa skenario mengalami masalah dan ujung-ujungnya UATnya molor sampe malem. Duh, padahal harusnya sebelum jam 6 sore udah bisa kelar. Masalahnya ternyata sederhana. Ada beberapa kesalahan konfigurasi dan environment yang digunakan untuk UAT ini ternyata digunakan juga oleh bagian lain, yang mungkin sedang dalam tahap development atau bahkan sedang UAT.

Akhirnya UAT diakhiri jam 10 malam, walaupun sebenarnya belum selesai. UAT akan dilanjutkan besok pagi. Untungnya skenario yang belum diuji tinggal sedikit. Semoga saja besok sebelum makan siang semuanya sudah beres. Masih banyak kerjaan yang mesti diberesin. Mana kerjaannya nggak bisa selesai dalam waktu satu atau dua hari lagi. Sepertinya minggu ini bakalan lembur tiap hari. Rencanaku untuk minggu ini jadi berantakan deh. Hhh.. Ya Allah, berilah aku kesabaran untuk menghadapi semua ini. Semoga aja weekend ini aku nggak sakit gara-gara kecapekan.

Walaupun baru sampe rumah jam setengah 12 malem, puas juga rasanya. Beban untuk UAT sudah berkurang lumayan banyak. Berpikir positif aja lah. Besok insyaallah semuanya pasti beres. Terlebih lagi, paling nggak tadi bisa makan malem bareng sama temen-temen dari IT. Udah lama nggak kumpul-kumpul ama temen Induction. Puas lah walaupun cuma bisa ngobrol-ngobrol dan bersenda gurau ketika makan malem. Semuanya terasa menjadi menyenangkan dan harus disyukuri, jika kita dapat melihat dari sudut pandang yang benar. Ahh.. kebahagiaan memang bisa datang dari mana saja tanpa bisa diduga.

Sunday, June 10, 2007

Acara Microsoft di Kampus

Hari sabtu kemarin, di kampus ada acara Microsoft Installation Festival, semacam workshop bgitulah. Agenda acaranya antara lain membahas Agile software Development Practices, Visual Studio 2005 in Action, dan Windows Vista Speech Recognition. Acara dimulai jam 8. Cuma berhubung aku ada janji ama temenku jam 9 di kampus, aku datengnya agak-agak siangan. Lagipula itu kan acaranya sebenernya buat mahasiswa. Jadi nggak terlalu ngebet banget untuk ikutan.

Setelah urusan dengan temanku selesai (kira-kira jam 10an), aku masuk ke aula kampus tempat acaranya diadakan. Ternyata penuh banget. Nggak nyangka aja, biasanya di kampusku kebanyakan tertariknya ama yang berbau open source. Bahkan kata panitia disitu, jam setengah 8 aja udah pada antri orang-orangnya. Berhubung waktu aku masuk udah penuh banget, kebagiannya di paling belakang (iyalah, baru dateng jam 10). Udah nggak fokus. Suara pembicaranya kurang kedengaran dan slide presentasinya juga tidak bisa terbaca dengan jelas karena kejauhan. Jadinya malah ngobrol ama adek-adek kelas duduknya di barisan paling belakang juga.

Yang membuat menarik adalah pada acara itu Microsoft akan membagi-bagikan license untuk 5 produknya : Windows Vista (entah versi yang mana), Windows XP Professional, Visual Studio 2005 Team Suite, Office Project Professional 2007 , dan Office Visio Professional 2007. Konon katanya semua mahasiswa yang sudah registrasi dalam acara itu akan mendapat lisensi untuk kelima produk diatas. Pantesan aja rame banget. Kalau diuangkan dapet berapat tuh buat lisensi kelima produk tersebut. Apalagi ini Visual Studio yang dikasih edisi yang Team Suite. Yang kalo nggak harganya sekitar 10.000 $.

Sayangnya aku bukan mahasiswa, jadinya nggak dapet deh. Tapi, aku tertarik sekali untuk mendapatkan lisensi Visual Studio 2005 Team Suite. Lumayan lah buat belajar. Selama ini, nyari yang bajakannya aja nggak dapet-dapet. Sekarang udah ada di depan mata. Tinggal nyari-nyari orang yang mau dengan sukarela memberikan produk ini secara cuma-cuma ke aku. Yeah... setelah berusaha nanya-nanya kesana dan kemari, akhirnya ada yang berbaik hati untuk memberikan lisensinya. Kebetulan ada temenku yang melanjutkan S2 disana dan waktu itu pernah ngerjain proyek yang sama di kampus. Berhubung dia ngerjain proyek di kampus, dia udah dapet lisensi untuk Visual Studio 2005 itu. Terlebih lagi, dia memberikan lisensi Office Project 2007 nya untukku. Dia bilangnya nggak pake. Dan sepertinya nggak bakalan aku pake juga.

Walaupun ujung-ujungnya rencanaku di hari itu berantakan, yang penting dapet dua lisensi untuk Visual Studio 2005 sama Office Project 2007. Makasih banyak buat Josef yang udah ngasih tahu kalo di kampus ada acara beginian. Makasih joe....

Friday, June 08, 2007

Hikmah dibalik error pada YM

Siang kemarin, mendadak Yahoo Messenger yang biasa aku gunakan mendadak error. Tiba-tiba YM ku menjadi sangat lambat dan tampak mau nge-hang. Yang paling aneh adalah akhirnya bisa login, tetapi list contact nya kosong. Tidak ada satupun contact atau group yang ditampilkan disitu, baik yang online maupun yang offline. Semula aku pikir masalahnya berasal dari proxy yang kugunakan. Ternyata akses ke situs-situs lain melalui browser tidak ada masalah. Download file-file berukurn besar juga tidak ada masalah.

Aku curiga jangan-jangan gara-gara ada proses audit di IT, akses untuk YM dibatasi. Ah semoga saja tidak. Selanjutnya aku mencoba login menggunakan SOCKS proxy yang biasa aku gunakan untuk mengakses FTP keluar. Ternyata sama saja. Bahkan sekarang SOCKS proxy yang biasa aku gunakan tersebut tidak bisa dipakai untuk mengakses situs-situs luar.

Masalah berlanjut hingga sore hari. Saat itu kebetulan aku melihat rekan kerjaku yang sama-sama menggunakan YM, namun tidak mengalami masalah sepertiku. Setelah aku tanyakan, ternyata dia menggunakan proxy yang sama namun menggunakan port yang berbeda. Duh.. ini padahal proxy resmi, tapi kok bisa bisa-bisanya dibuka akses untuk port lain juga. Karena penasaran, aku mencoba melakukan scan port pada beberapa IP yang alamatnya berdekatan dengan proxy resmi tadi. Dan yang aku dapat sungguh mengejutkan, hampir semua alamat IP yang aku scan dapat dijadikan proxy, baik itu HTTP proxy maupun SOCKS proxy. Aih... ini sih jauh lebih parah dibandingkan dengan keadaan di kampusku. Entahlah, apakah sebenarnya proxy-proxy tersebut legal atau tidak. Atau mungkin untuk keperluan development, aku juga tidak tahu. Seandainya semua proxy tersebut ilegal, bisa jadi sasaran empuk untuk audit. Entahlah kenapa proxy-proxy tersebut bisa ada. Entah karena adanya penyalahgunaan, atau jangan-jangan memang belum diaudit. Yang jelas, proxy-proxy ini menambah daftar proxy yang bisa aku gunakan sebagai alternatif untuk mengakses internet :D Dan yang paling penting, YM ku sudah tidak bermasalah lagi sekarang. ;)

IT Audit

Saat ini bagian IT perusahaanku sedang diaudit. Aku sendiri nggak tahu tepatnya, apa saja yang sudah dilakukan dalam proses audit ini. Yang jelas, beberapa minggu terakhir ini aku tidak bisa mengakses server-server tertentu. Dan sepertinya apa yang aku alami juga dirasakan departemen-departemen lain. Menurut aturan, memang seharusnya server-server tersebut tidak bisa diakses oleh sembarang orang. Namun, kalau tidak salah, karena keterbatasan sumber daya, dan untuk mempercepat proses bisnis, yang dapat mengakses server-server tersebut tidak hanya dari bagian IT Operation saja. Resminya sih setiap permintaan untuk mengakses data-data dari server tersebut harus melalui nota dinas yang notabene memerlukan waktu agar diproses lebih lanjut. Sementara jika memiliki akses langsung, tak perlu membuat nota dinas. Masalah bisa beres saat itu juga.

Namun, sepertinya semua ini menjadi masalah juga karena batasan pihak-pihak yang dapat mengakses server-server tersebut menjadi tidak jelas. Jika terjadi sesuatu pada server-server tersebut, yang pertama disalahkan pasti bagian IT Operation. Tetapi ada juga yang lucu dari penutupan akses pada server-server ini. Beberapa orang yang aku ketahui secara rutin mengakses server itu dan sekarang udah nggak bisa mengakses server itu, menjadi lepas tangan pada masalah-masalah yang terjadi. Dengan alasan sudah tidak memiliki akses pada server yang dimaksud. Istilahnya, kerjaan jadi berkurang. Sementara disisi lain, kerjaan bagian IT Operation menjadi menumpuk. Kasian juga tuh temen-temenku yang di bagian IT Operation. Yang biasanya nggak sibuk jadi sibuk. Di departemenku sendiri, beberapa orang merasa pekerjaannya menjadi berkurang. Termasuk aku sendiri :P

Sekarang tinggal menunggu kapan divisiku bakalan diaudit. Lagipula sepertinya divisiku adem ayem aja nih. Nggak ada persiapan-persiapan yang menurutku lumayan signifikan untuk menghadapi proses audit ini. Semoga saja nantinya tidak terjadi hal-hal yang diluar dugaan.

Thursday, June 07, 2007

Value Type dan Reference Type

Dalam C# dikenal dua jenis tipe data : value type dan reference type. Berikut ini merupakan penjelasan singkat dari masing-masing type.

Value Types
Variabel yang termasuk ke dalam value type berisi data itu sendiri. Melakukan assignment pada variabel value type ke variabel lain akan menyalin isi dari data yang berada didalamnya, sehingga jika nilai dari variabel yang pertama berubah, tidak akan mempengaruhi nilai data pada variabel yang kedua. Semua tipe data yang masuk ke dalam value types merupakan turunan dari kelas System.ValueType.

C# memiliki built-in value type yang diantaranya adalah sbyte, byte, char, short, ushort, int, uint, long, ulong, float, double, decimal, dan bool. Selain itu, semua enumerations dan structs termasuk ke dalam value type.

Berikut ini adalah beberapa karakteristik dari value type:

  • Disimpan di dalam stack, sehingga pada umumnya dapat diakses secara cepat
  • Dapat diakses secara langsung, tidak perlu menggunakan operator new untuk melakukan inisialisasi
  • Memiliki dua bentuk : boxed (bentuk value type dalam reference type, yang biasanya dianggap sebagai object) dan unboxed (bentuk asli dari value type)
  • Value type tidak berada dalam kontrol Garbage Collector
  • Memiliki karakteristik sealed, tidak dapat dibuat kelas turunan dari value type


Reference Types
Variabel yang bertipe reference type disisi lain tidak berisi data itu sendiri, melainkan berisi alamat yang menunjukkan lokasi di memori dimana data disimpan. Melakukan assignment pada variabel reference type ke variabel lain tidak akan mengkopi data isi variabel tersebut, tetapi hanya menyalin alamat memori yang menunjukkan lokasi isi variabel di memori. Jika data pada variabel pertama berubah, maka data pada varabel kedua pun akan berubah. Karena masing-masing variabel menunjuk ke data yang sama.

C# memiliki dua built-in reference type : string dan object. Sementara reference type yang dapat dibuat oleh programmer dapat berupa class, interface, dan delegate.

Berikut ini adalah karakteristik dari reference types:
  • Data reference type tidak disimpan pada stack, namun disimpan pada heap. Heap ini digunakan oleh Garbage Collector untuk melakukan alokasi memori secara dinamis.
  • Dua atau lebih variabel dengan tipe reference type dapat menunjuk ke satu objek yang sama dalam heap, memungkinkan operasi pada satu variabel mempengaruhi objek yang ditunjuk oleh variabel-variabel yang lain.
  • Pada umumnya reference types lebih besar dan lebih lambat daripada value types

Wednesday, June 06, 2007

Kebahagiaan adalah pilihan

Hidup tak selamanya menyenangkan. Dalam menjalani kehidupan ini selalu ada masalah-masalah dan cobaan-cobaan yang harus dilalui. Selalu ada hal-hal yang mungkin membuat kita merasa kecewa, sedih, menderita, dan mungkin putus asa. Seperti ketika ada seseorang yang telah menyakiti hati dan membuat kita sedih. Untuk sebagian orang, tentu saja hal ini bukanlah hal yang mudah untuk dilupakan begitu saja. Sementara untuk sebagian yang lain dapat dengan ikhlas menerima hal ini.

Ketika kita mendapatkan perlakuan yang tidak menyenangkan, kita dapat memilih respons terhadap perlakuan tersebut. Apakah kita memilih untuk menderita atau memilih untuk tidak menderita. Eleanor Roosevelt mengemukakan, "Tak seorang pun dapat menyakiti anda tanpa persetujuan anda." Kita memiliki kebebasan untuk memilih apakah kita ingin bahagia atau tidak. Berhentilah untuk menyalahkan orang lain atas perlakuan mereka terhadap diri kita sendiri. Jangan biarkan diri kita dikendalikan oleh perlakuan orang lain. Kita bukan sasaran tindakan dari perlakuan orang lain.

Kita bisa saja merasa sedih dan kecewa. Tetapi, kita juga bisa menerima keadaan ini dan mencoba untuk mengintrospeksi diri kita sendiri mengapa orang lain bisa memberikan perlakuan yang kurang menyenangkan pada diri kita. Jangan berpikir untuk memberikan perlakuan yang sama, karena hal ini tidak akan menyelesaikan masalah. Lebih baik berfokus pada hal-hal yang berada dalam kendali kita. Jangan terlalu berharap agar orang lain dapat berubah karena itu diluar kendali kita. Beruntung jika orang tersebut dapat berubah. Jika tidak, bukannya mendapat kebahagiaan, tetapi rasa kecewa yang kita dapat. Terkadang hal yang paling sulit dari semua ini adalah mengenali hal-hal mana yang dapat kita ubah menjadi lebih baik dan hal-hal mana yang memang berada diluar kendali kita.

Inti dari semua ini adalah sikap ikhlas dalam menerima semua keadaan yang terjadi pada diri kita, baik keadaan yang menyenangkan maupun yang tidak menyenangkan. Mengapa kita harus larut dalam kesedihan dan kekecewaan jika kita bisa melakukan sesuatu untuk memperbaiki diri dan meraih kebahagiaan. Kebahagiaan dapat kita ciptakan sendiri dan untuk menciptakannya, kita mempunyai pilihan apakah kita mau melakukannya atau tidak.

SOP

Seminggu terakhir ini kerjaan di kantor nggak begitu banyak. Beruntung juga keadaan ini terjadi ketika aku lagi merasa nggak terlalu sehat seperti sekarang ini. Untuk menyibukkan diri, aku mencoba untuk membuat dokumentasi dari apa-apa yang menjadi pekerjaan rutinku disini, berhubung selama ini dokumentasi dari proses bisnis yang menjadi kerjaan rutinku belum ada. Lumayan lah, daripada nyantai-nyantai malah nggak enak juga.

Dimulailah pekerjaan pembuatan dokumentasi atau SOP ini mulai minggu kemarin. Berhubung banyak step-step yang sama, ujung-ujungnya copy-paste dimana-mana. Menurutku kebiasaan copy-paste ini kurang bagus karena membuatku menjadi kurang teliti dan tidak memeriksa kembali apa-apa yang udah aku copy-paste. Terbukti beberapa kali aku harus merevisi apa-apa yang telah aku copy-paste Walaupun kurang bagus, kurasa inilah cara yang paling cepat yang bisa aku lakukan untuk menyelesaikan pekerjaan ini.

Setelah semua langkah-langkah selesai didokumentasikan, kemudian ditambahkan screenshot dari masing-masing langkah. Selanjutnya dibuat tata alir dari semua langkah-langkah tadi menggunakan Cross Functional Flowchart (CFF). Duh, jadi inget kerjaan ketika Student Project dulu. Mulai dari mewawancara narasumber, membuat langkah-langkahnya, hingga membuat CFF dari langkah-langkah tersebut. Ternyata kepake juga nih ilmu bikin SOP. Padahal dulu rasa-rasanya aku nggak bakalan nyentuh lagi yang namanya bikin SOP.

Alhamdulillah hari ini sudah beres semuanya. Tinggal menunggu review dan perbaikan dari rekan-rekan yang ada disini. Walaupun ini kerjaan nggak resmi, karena ini dari inisiatifku sendiri, semoga saja aku bisa mendapat banyak masukan untuk perbaikan-perbaikan selanjutnya.

Tuesday, June 05, 2007

Finally...

Setelah seminggu yang lalu kurang tidur dan ditambah akhir minggu kemarin pulang kampung, akhirnya efeknya baru terasa dalam 2 hari ini. Kepala pusing, nggak enak badan, meriang, dan nggak bisa fokus kalo ngerjain sesuatu. Padahal dua hari terakhir ini tidur cukup. Terlebih lagi, waktu kemarin pulang kampung malah dipake buat tidur seharian. Kondisi ini bertambah parah di hari senin kemarin dengan minum segelas kopi. Biasanya sih nggak apa-apa, cuma entah kenapa beberapa jam setelah minum kopi badan rasanya tambah nggak karuan. Detak jantung meningkat, jadi deg-degan nggak jelas.

Hari ini udah mulai bersin-bersin dan hidung mulai mampet. Duh.. moga aja besok bisa berangkat ke kantor dengan kondisi yang lebih baik. Sepertinya weekend ini mesti banyak-banyak istirahat di rumah niy. Aneh juga kalo dipikir-pikir. Ketika lagi banyak kerjaan, sampai kurang istirahat dan kurang tidur, tubuh sepertinya malah lebih tahan dan lebih kebal. Tetapi setelah semuanya berlalu, kok malah gampang sakit bgini ya. Ada apa gerangan???

Alarm peringatan sudah berbunyi. Beberapa hari kedepan sepertinya harus mulai banyak-banyak istirahat dan tidur lebih awal niy. Biar sakitnya ga keterusan.

Monday, June 04, 2007

Selalu ada hikmah dibalik kejadian

Ah... senangnya hari ini. Tadi pagi aku mendapat sms dari dua temanku yang berada nun jauh disana. Entah kenapa ini kebetulan atau tidak. Isinya berupa nasehat-nasehat untukku. Walaupun isinya pendek dan sederhana, nasehat-nasehat itu sangat mengena untukku. Aku merasa ini sebagai peringatan dan pendorong semangat untukku agar aku bisa menjadi orang yang lebih baik lagi. Memang selalu ada hikmah dibalik suatu kejadian, dan aku rasa semua ini bukanlah sebuah kebetulan. Melainkan semua ini sudah ada yang mengatur. Aku merasa bersyukur, karena aku masih diberi petunjuk dan peringatan yang datangnya melalui kedua orang temanku. Terlebih lagi, ternyata teman-temanku yang berada nun jauh disana masih inget ama aku dengan mengirim nasehat-nasehat yang mungkin secara sekilas sederhana sekali. Alhamdulillah....

Walaupun telah menerima masukan-masukan dan nasehat-nasehat dari sana-sini, mengapa aku merasa sulit sekali untuk mengamalkan nasehat-nasehat itu. Hhh.... entahlah apakah ini cuma terjadi padaku saja atau semua orang pernah mengalami hal ini. Padahal, aku tahu bahwa nasehat-nasehat itu bisa membawaku ke arah yang lebih baik. Hidup ini adalah pilihan. Dan menurutku pilihan-pilihan itu sudah jelas. Namun, sulit sekali untuk mengikuti pilihan yang membawaku ke arah yang lebih baik. Duh... godaannya banyak banget. Ujungnya, ketika akhirnya aku mengambil pilihan yang kurang baik, malah mencari-cari alasan untuk justifikasi atas pilihan yang aku ambil. Rasanya perlu tambahan semangat lagi niy untuk menguatkan hati dan memantapkan niat untuk menjadi orang yang lebih baik.

Aku berharap, semoga peringatan-peringatan yang telah aku terima ini tak berakhir hanya sampai disini. Semoga esok, lusa, dan seterusnya aku masih dapat menjaga semua hal-hal baik yang aku miliki dan berusaha untuk menjadi orang yang lebih baik lagi...

Terimakasih ya Allah, atas petunjuk-petunjuk dan peringatan-peringatan yang kau berikan padaku hari ini...

Friday, June 01, 2007

Penyesalan

Betapa sedih hatiku
Bila ku mencoba tuk mengenangmu
Mengingat senyummu yang tulus
Serta smua kebaikan yg tlah kau berikan kpadaku

Sedih rasanya
Ketika aku tak sanggup
Untuk membalas smua kebaikanmu
Walaupun aku tahu
Semua kebaikanku takkan bisa membalas itu semua

Kau begitu menyayangiku
Namun, entah knapa
Terkadang aku tak menyadarinya
Aku baru sadar
Ketika semuanya sudah terlambat

Aku benar-benar menyesal
Tak pernah bisa membahagiakanmu
Sekarang, smuanya sudah terlambat
Yang tersisa hanyalah kenangan-kenangan indah bersamamu
Saat-saat yang takkan pernah kulupakan dalam hidupku
Kini, aku hanya bisa berdo'a dan berdo'a
Karena, itulah yang bisa kulakukan untukmu
Karena aku ingin kau tahu
Aku benar-benar menyayangimu