May 11


Edsger W Dijkstra

Hari ini adalah ulang tahun Edsger Wybe Dijkstra (Rotterdam, 11 Mei 1930).

Bagi yang belum terlalu mengenal Dijkstra, dia adalah ilmuwan komputer Belanda, yang sangat terkenal dengan algoritma ciptaannya shortest path - algorithm , biasa disebut juga dengan Dijkstra’s algorithm, yang salah satu implementasi pentingnya adalah OSPF (open shortest path first) yang menjadi dasar dari internet routing.

Selain itu dia terkenal karena kebiasaannya menulis manuskrip-manuskrip yang biasa disebut “EWDs” karena Dijkstra selalu memberi penanda nomor diikuti dengan “EWD” sebagai prefix pada setiap judul manuskripnya. Kebanyakan topik yang terdapat di setiap manuskripnya seputar matematika dan sains komputer.

Dijkstra dikenal sebagai seseorang yang akrab dengan sains komputer tetapi hanya memiliki sebiji komputer seumur hidupnya, yang agak telat dimilikinya. Itu pun sangat jarang digunakannya. Ceritanya, sebagian besar manuskrip Djikstra diterbitkan setelah tahun 1972 berupa tulisan tangan. Dia sangat menjauhi penggunaan komputer pada pekerjaannya selama beberapa puluh tahun. Akhirnya setelah mengalah kepada dorongan beberapa koleganya di Universitas Texas, dia memutuskan untuk membeli sebuah komputer Macintosh, dan ujung-ujungnya hanya digunakan untuk memeriksa email dan browsing. Dikarenakan prinsipnya yang mengatakan sains komputer sangat lebih abstrak dari sekedar programming semata. “Computer Science is no more about computers than astronomy is about telescopes.” ujarnya.

Selain itu kalimat slogan terkenal dari Dijkstra adalah “2 or more, use a for” . Artinya bila anda menemukan situasi didalam penulisan kode program anda yang ternyata memerlukan pemrosesan instance dari suatu struktur data lebih dari sekali, maka waktunya untuk membuat loop, baik dengan statement for(..) maupun while(..)

Dijkstra meninggal tanggal 06 Agustus 2002 di Nuenen Belanda, sehari setelah aku berusia 24 tahun, karena kanker. Untuk mengenang jasa Djikstra, oleh ACM (Association for Computing Machinery) yang mengurus penghargaan bidang komputer tahunan “PODC Influential Paper Award ” mengganti nama penghargaan itu menjadi “Dijkstra Prize” sampai sekarang.

Selamat Ulang Tahun Dijkstra, algoritma shortest path-nya memecahkan segala pendekatan pemikiran yang memusingkanku sewaktu SMA dulu. Nama Dijkstra secara pribadi begitu melekat di otak sejak aku belajar C++ dulu ketika membaca pengantar buku “C++ A Practical Introduction” karangan Brian Hahn, disitu tertulis pendapat Dijkstra yang mengatakan “Pemrograman Berorientasi Objek adalah gagasan buruk yang janggal”. Sampai saat ini aku belum bisa mengerti mengapa dia bisa berpendapat seperti itu?

Download Algoritma Dijkstra beserta Tester di Actionscript 3.0 di sini

May 8

Beberapa bulan terakhir ini proyek pembuatan peta Sampit dengan Flex 2.0.1 ini agak jarang disentuh karena kesibukan lain.
Alasan pembuatan peta? Ya mungkin karena orang yang suka coding pasti tertarik dengan sesuatu yang berbau diagram, juga tertarik dengan peta, itu pasti naluri kan?
Bagi beberapa orang sebaliknya, biasa saja..

Pembuatan peta kota sudah sering kulakukan setiap kali berada di suatu wilayah, dulunya waktu SMP dengan manual seadanya, jalan kaki sambil gambar, bersepedamotor sambil gambar, foto -foto. Terakhir 3 tahun yang lalu sewaktu gmap mulai rame agak terbantu juga dengan satelite imagery-nya, trus setelah kenal Garmin menjadi lebih seru lagi, jalan jalan keliling kota sambil tracking.

Pengolahan hasil tracking dan waypoint dilakukan di GPSMapEdit dan cGPSMapper, kalibrasi Datum dan lain-lain dengan OzyExplorer. Setelah itu format dasar di-export menjadi Polish Format (*.mp), kemudian di-export lagi ke format tersendiri sesuai device-nya, untuk J2ME di K508i memakai format tersendiri (custom) yang lebih ringan, sedangkan untuk PDA tetap memakai Polish Format, dan untuk Flex memakai custom format (*.dyp) yang berupa binary terkompress, exporter bikin di Netbeans.

Kenapa memakai format peta tersendiri? Paling nggak tidak bisa dibuka di aplikasi map lain / ini sih berhubungan dengan hak cipta. Karena tracking sendiri muterin seantero kota selama berminggu-minggu lebih capek daripada coding, makanya pembatasan kompatibilitas format file harus dipikirkan, :)

Dari 3 proyek ini (J2ME, PDA, Flex) yang sudah cukup matang adalah J2ME, sedangkan untuk PDA (Win CE) masih terkendala manajemen memory Flash Player 6 untuk PDA yang jelek.

Pada versi demo Flex dibawah ini, beberapa feature tidak disertakan seperti Label, Search Form, Area Calculating, Path Finder dan lain-lain.

Dan demo J2ME-nya di Emulator KToolBar :

Apr 27

Pada 25 April 2007 lalu framework Flex berubah menjadi Opensources (Mozilla Public License).
Status ini tidak hanya untuk source code dari framework saja tetapi juga Flex SDK termasuk MXMLC, COMPC, ASC, Flex Debugger, Flex Components, dan ini yang menarik : ActionScript 3 Libraries juga ikut opensources

Baca press release di Adobe Press Room
Baca Info tambahan di Labs
Baca FAQ Flex Opensources di sini
gabung dengan groups diskusi Flex Opensources di http://groups.google.com/group/flex-open-source/

Sayangnya Flex Charting tidak berubah statusnya, tetap tertutup.
Demikian juga dengan Flex Data Services, tetap tertutup. Kabarnya FDS (Flex Data Services) akan di-integrasikan dengan produk Adobe lainnya : Adobe LiveCycle ES (enterprise suite) sebagai LiveCycle Data Services.

Apr 26
Mungkin gerah juga karena Apollo banyak dibanding bandingkan
dengan Zinc, akhirnya Jaspal Sohal [CEO, Multidmedia Ltd] angkat bicara
untuk menjelaskan perbedaan keduanya (Nggak enak ati sama Mike Chamber
kali..)
Berikut tabel perbandingannya :

Zinc™ vs Apollo™
 
Zinc
Apollo
100% Standalone (No Plug-Ins/Runtimes required)
Does not Require Installation to Run
Can run from CD-Rom/DVD/USB
Alpha Transparency
File IO Commands
Browser Commands
Database Connectivity
Play External Video (MPEG, AVI, MOV)
Distribute via DRM Solutions
Connect to External 3rd Party DLL’s

Sumber : MDM Newsletter - April 2007
Baca artikel lengkapnya di http://www.multidmedia.com/support/developers/articles/?action=show&id=33

Tentang Apollo™ sampai saat ini kita tidak bisa terlalu dini memberi penilaian khusus karena masih versi alpha.
Paling tidak janganlah Apollo sama nasibnya dengan saudara tuanya (Central) yang langsung layu / kurang diminati, [alasan Adobe : Central hanya diperuntukkan di Actionscript 2.0]

Apr 22

FLV (Flash Video)

FLV adalah salah satu format video di internet dengan menggunakan Adobe Flash Player.
Format FLV adalah proprietari dari Adobe (Macromedia).
Flash Player bisa menghantarkan format flv dimulai sejak Flash Player versi 6.

Dengan kemampuan diputar oleh swf atau diembed kedalamnya, flv menjadi salah satu format video yang bisa diputar hampir disemua sistem operasi.
Browser yang sudah mempunyai plug in flash player akan langsung bisa memutar flv.
Ini adalah salah satu kunci keuntungan dibanding dengan format video lain yang biasanya memerlukan plug in di browser yang lebih besar (ukuran installer plug in-nya).
Didukung juga dengan keuntungan lain seperti distribusi penyebaran Flash player yang sangat luas.

Format Video
Umumnya flv menggunakan stream bit video yang merupakan salah satu varian dari standar video H.263 (Sorenson Spark).
Pada Flash Player 8 keatas terdapat fasilitas dukungan untuk memainkan stream bit video On2 TrueMotion VP6 yang mempunyai keunggulan seperti kualitas visual yang lebih tinggi serta kemampuan dalam penggunaan lower bit rates, tetapi karena memerlukan proses render dengan tingkat komputasi yang lebih tinggi maka diragukan format ini dapat berjalan lancar di komputer low end (tua).

Flv dibuat (encoding) dengan tool yang terdapat di Macromedia Flash 8, atau bisa menggunakan On2’s Flix encoding tools, Sorenson Squeeze, FFmpeg dan tool-tool dari pihak lainnya.

Format audio
Audio di flv biasanya di encode sebagai MP3, sedangkan audio yang berasal dari mikropon user akan di encode dengan Nellymoser codec (proprietary format).
Flv juga mendukung audio yang tidak terkompress atau nama lainnya ADPCM format audio.

FLV sebagai alasan utama Adobe mengakuisisi Macromedia.
Dari semua produk unggulan Macromedia dari Coldfusion, Dreamweaver, Firework, Jrun, Authorware, Flash, dan lain-lain. Yang menjadi alasan (nilai beli) yang menggoda Adobe bukanlah produk - produk laris seperti yang disebutkan diatas. Bukan pula Teknologi Animasi flash yang mengubah internet itu, tetapi adalah Flash Video.
Dikutip dari Mike Downey (Senior Product Manager Adobe Flash) :
“At the highest levels of Adobe’s corporate agenda is the Flash Video platform, it was officially called out by our CEO that it was one of the main reasons Adobe wanted to acquire Macromedia.”

Tonggak FLV yang fenomenal : Youtube
Kisah Youtube bermula dari empat orang (Chad Hurley, Steve Chen, and Jawed Karim) yang sebelumnya adalah karyawan PayPal.
Domain Youtube.com sendiri baru diaktivasi pada February 15, 2005.
Pada pertengahan 2006, youtube adalah salah satu site yang paling pesat pertumbuhannya dan menduduki peringkat 5 besar site yang paling terkenal diInternet.
Pada 9 Oktober 2006 Google mengakuisisi Youtube dengan nilai US$1.65 billion.
Dari 4 orang pendiri yang bermarkas di garasi, kini Youtube mempunyai 67 karyawan, 100 juta flv yang diakses tiap hari, 65.000 flv baru yang diupload tiap per 24 jam. Diakses 27 juta pengunjung tiap bulan.
Dengan statistik di atas tidak berlebihan majalah Time memberikan penghargaan ke Youtube sebagai “Invention of the Year” tahun 2006.
Semua tidak lepas dari keterkaitan dan penggunaan teknologi flv.
Hal lain yang cukup menggelitik adalah 3 kunci perkembangan flash yang dipaparkan Mike Downey :
1. IDE (Integrated Developing Tool) / Authoring Flash yang lebih baik.
2. Flash Mobile device (Flash lite).
3. Flash Video.
Ketiga aspek diatas kini masing masing mempunyai ratusan proyek-proyek internal yang terus menerus menggodok flash menjadi lebih matang di release versi berikutnya.

Bagaimana dengan flv didalam negeri? Salah satu portal yang mengadopsi teknologi flv adalah indonesia.sc , dan tampaknya akan semakin besar karena mempunyai konsep dan konsumen yang jelas.

Sekali lagi Flash mengubah Internet, kali ini tidak dengan animasi vektornya yang kadang membuat programmer antipati dengan usabiliti flash site yang buruk )*, tapi dengan penghantaran video dengan lebih efisien dan lebih efektif dibanding teknologi sejenis dari pihak lain.

Note :
*. Bukanlah flash mempunyai usability yang lebih buruk dibanding html page, tetapi jadilah desainer yang lebih bijak dalam usability dengan flash.
*. Kadang banyak anggapan programmer tidak bisa menjadi desainer yang baik, demikian pula sebaliknya. Syukurlah bila kita merasa baik - baik saja sebagai keduanya.

Apr 20

Sekarang ini, lazimnya untuk penyebutan bilangan bisa di bagi menjadi dua sistem. Sistem pertama dianut oleh Amerika dan Prancis. Sistem kedua dianut oleh kebanyakan negara Eropa (selain Prancis), seperti Inggris dan lainnya. Bagaimana dengan negara kita? Indonesia cenderung mengikuti sistem yang pertama.

Ditempat kita untuk menyebut angka diatas 1 milyar dengan menggunakan kelipatan perseribuan, misalnya satu milyar ( 1 bilyun) adalah seribu juta.
Yang agak repot adalah penulisannya. Kita terbiasa menulis desimal dengan koma, pengelompokkan digit dilakukan tiap perseribuan dan ditandai dengan titik. Untungnya di setiap sistem operasi komputer yang telah mapan sudah tersedia menu setting untuk mengganti / kustomisasi aturan regional ini.

Kembali ke sistem penyebutan bilangan, sistem kedua yang dianut oleh Inggris menyebut bilangan diatas 1 milyar dengan kelipatan persejutaan, misalnya satu milyar adalah sejuta juta. Agak aneh bagi kita ya? Untungnya pilihan katanya tetap sama dari juta, milyar, trilyun, kuadrilyun, kuintilyun, sekstilyun, septilyun, oktilyun, nonilyun, desilyun, dan seterusnya.

Dibawah ada swf untuk demo penyebutan nominal rupiah dengan menggunakan library yang tadinya dibuat sewaktu ada proyek dari klien (Perusahaan Pembiayaan) tahun 2006.
Library ini digunakan di Flex 2.0.1 untuk penyebutan bilangan (nilai nominal uang) di salah satu modul yang diperlukan di aplikasi klien tersebut. Anda dapat menggunakannya dalam project anda dengan mendownload swc-nya.
Terdapat 2 class utama dalam swc yaitu : RupiahTerbilang dan RupiahFormatter.
Class RupiahTerbilang untuk menyebutkan nominal rupiah ke dalam suatu bentuk kalimat. Misalnya diberikan argument 12345. Oleh Class ini akan di-return-kan string berupa “Duabelas ribu Tiga Ratus Empat puluh Lima ”
Class RupiahFormatter untuk memformat bilangan yang diberikan menjadi terformat ke bentuk standar penulisan nominal rupiah. Argument 12345 oleh class RupiahFormatter akan di-return-kan string berupa “Rp12.345,00 ”

Catatan :
Pada Class RupiahTerbilang, penyebutan bilangan dibatasi hanya sampai 10 Kwadrilyun untuk menghindari kesalahan representasi tipe Number oleh Flash Player untuk angka lebih besar dari 10 Kwadrilyun. Karena Flash Player hanya menggunakan 52 bit dari total integer yang diberikan dan beberapa special hidden bit sisanya dalam merepresentasikan suatu integers dari -9,007,199,254,740,992 (-253) sampai 9,007,199,254,740,992 (253).

Anda bisa mencobanya di aplikasi dibawah ini (Flash Player 9 required)
Bila anda hanya melihat kotak kosong saja, update flash player anda

Masukkan di kotak pertama angka nominal (bila terdapat desimal tuliskan dengan titik bukan koma) kemudian tekan enter. Bila anda menulis angka dengan benar di kotak kedua akan langsung tertera bilangan yang sudah diformat oleh class RupiahFormatter, dan bila anda menggerakkan mouse ke kotak kedua akan muncul tooltip yang berisi kalimat hasil dari penyebutan angka oleh class RupiahTerbilang.

Download swc component
Download source

Mar 14

Di actionscript 3.0, inisiasi primitive boolean bisa ditulis :

public var test:Boolean
//ini sama saja dengan yang dibawah:
public var test:Boolean = false;

Variable dengan type boolean bila tidak diinisiasi selalu bernilai false;
Tidak terlalu berbeda dengan java dan C++;
Cuma ada perbedaan dalam peletakan inisiasi local variable;
Di actionscript 3.0, local variable dapat terlihat di seluruh badan method / function.
Sedangkan java dan C++ memperbolehkan inisiasi block variable, jadi variable hanya terlihat dari dalam block saja pada suatu methods.
Misalnya inisiasi int pada loop yang terdapat dalam suatu function, bila dilihat dengan actionscript 3.0 memperbolehkan int tersebut dilihat dari tempat lain dalam function. Sedangkan java hanya memperbolehkan melihat int tersebut didalam blok saja.

Yang membuat ku kelabakan adalah penulisan semacam ini :

/**
* Code I
* @langversion Actionscript 3.0
*/
for(var i:int = 0 ; i
    var b:Boolean;
    if(!b && foo[i].black){
        //do something here
    }else{
        b = true;
    }
}

Loop diatas akan menghasilkan result yang tidak sesuai dengan harapan.
Cukup lama untuk mengetahui dimana salahnya (1 jam kali..) akhirnya ketahuan solusinya :

/**
/**
* Code II
* @langversion Actionscript 3.0
*/
 
for(var i:int = 0 ; i<foo.length; i++){
    //Baris koreksi disini 
    var b:Boolean = false;
    if(!b && foo[i].black){
        //do something here
    }else{
        b = true;
    }
}

Akhirnya result sesuai harapan.

Kesimpulannya, apa sebab?
Pada code I , karena variable b yang sudah diinisiasi dengan perintah var b:Boolean,
harapan kita tentunya ingin b selalu otomatis jadi false.
Tapi ternyata..? deklarasi var b:Boolean tidak selalu jadi false bila ditaruh didalam perulangan!!
Karena pada iterasi (perulangan) berikutnya b sudah punya referensi yang bernilai true;

Repot juga.. ini mungkin karena declaration scope actionscript 3.0 yang berbeda dengan java kali ya?
Atau karena aku yang be**

Next Entries »