Archive for ‘Interlude’

8 November 2011

Abstraksi dan Konsep 2

Saya menemukan algoritma tertua yang pernah ada, untuk mencari akar pangkat dua, he he he.

Resep orang Babilonia, untuk mencari akar pangkat dua dari 250 ( ataupun sembarang angka ):

1. Bagi 250 dengan asal tebak angka

2. Cari rata-rata dari asal tebak angka dan hasil pembagiannya

3. Ulangi sampai dapat tingkat ketelitian yang diinginkan

What?? ndak mudeng aku?

misal, saya asal tebak angka 10, untuk akar pangkat dua dari 250. Ini rincian perhitungannya !

Tebakan

Pembagian

Rerata

Tebakan Berikutnya

10

250/10 = 25

(25+10)/2=17.5

17.5

17.5

250/17.5 = 14.285

(17.5+14.285)/2=15.89

15.89

15.89

250/15.89 = 15.73

(15.89+15.73)/2=15.81

15.81

Iklan
23 September 2011

abstraksi dan konsep

Jika saya harus menulis pendek untuk menggambarkan abstraksi dan konsep, maka ini-lah yang saya tulis:

Saya belajar waktu kecil, satu tambah satu sama dengan dua.
Orang tua saya bilang, satu buah tambah satu buah sama dengan dua buah.
Teman saya bicara, satu menit tambah satu menit sama dengan dua menit.
Akuntan menghitung, satu juta tambah satu juta sama dengan dua juta.
Aljabar menunjukkan pada saya abstraksi dan konsep: satu n tambah satu n sama dengan dua n.

Tag:
9 Agustus 2011

Kolaborasi..Saat Ini Juga

Disclaimer: Semua tulisan saya hanya mewakili konsep dalam bahasa paling awam, untuk menggambarkan konsep rumit yang digunakan Teknologi Informasi. Referensi lebih lanjut bisa anda cari di Internet atau source yang lebih valid daripada saya 🙂

Real-time collaboration? Pertama kali saya mendengar istilah ini, pikiran saya terlintas teknologi yang rumit, setidaknya, melibatkan teknik yang jelimet. Saya terpesona ketika pertama kali Google memperkenalkan istilah ini dan mendemonstrasikan secara langsung dengan Wave-nya. dan buat saya, ini adalah pengalaman ‘wow’ saya yang membuat saya merinding (damn, mereka benar-benar pintar cipta-in sesuatu :p) Sayang baby project ini tidak sempat berkembang menjadi real aplikasi karena sambutan yang tidak terlalu banyak untuk menggunakannya. Semenjak itu banyak orang mencoba menawarkan tekniknya untuk membuat suatu web bisa menjadi lebih real-time.

Namun waktu membuat saya untuk memahami-nya bahwa teknik ini, sebenarnya, tidak terlalu rumit (walau dulu-nya saya menganggap bahwa ada teknik ‘sulap’ tingkat tinggi untuk bisa membuat hal seperti itu, atau bahasa teknis-nya adalah, bagaimana membuat dua (atau lebih) pemakai berbeda, saling berkirim pesan sedemikian rupa, sehingga saling memperbarui konten yang mereka buat?)

Saya berpikir (dulu) bahwa infrastruktur mereka pasti bagus, setidaknya ada protokol XMPP dibalik teknik seperti ini. Dan tebakan saya tidak terlalu meleset, bahwa hal seperti ini membutuhkan infrastruktur teknologi. Sampai satu ketika, waktu mengenalkan saya dengan HTTP REST, salah satu infrastruktur yang saya sebut-sebut tadi. REST sendiri adalah akronim dari REpresentational State Transfer yang artinya Pertukaran Keadaan yang Terwakilkan. Bingung? bahasa awam-nya adalah, data-dalam-banyak-rupa, tetapi sama secara isi/konteks, dan dapat dipertukarkan dengan mengubahnya menjadi format yang diinginkan (tanpa bentuk fisik sebuah file yah). Bayangkan begini, anda punya data dalam bentuk CSV (kumpulan data dengan pemisah koma) seperti ini:

Nama depan, Nama belakang, Alamat surel
Budi, Doe, budidoe@contoh.com
Tuti, Doe, tutidoe@contoh.com

Nah, untuk menukar data, katakanlah, cabang anda menggunakan sistem yang hanya membaca format XML sehingga kita perlu mengubah data kita, menjadi format yang diperlukan, dan dibaca oleh orang yang kita berikan datanya (dalam contoh ini, cabang anda) . Kita akan mengubah data-nya menjadi format seperti ini:

<?xml version="1.0" encoding="utf-8" ?>
<data>
<record>
<nama depan>Budi</nama depan>
<nama belakang>Doe</nama belakang>
<alamat surel>budidoe@contoh.com</alamat surel>
</record>
<record>
<nama depan>Tuti</nama depan>
<nama belakang>Doe</nama belakang>
<alamat surel>tutidoe@contoh.com</alamat surel>
</record>
</data>

Jelas sekali terlihat bagaimana data berubah bentuk tanpa kehilangan isi (baca: state) yang dikandungnya, dalam hal ini konversi CSV menjadi XML. Inilah state yang dimaksud dan coba dijelaskan oleh konsep REST, bahwa data dapat berubah (transisi) , dan disebut state, dan dapat dipertukarkan dengan mudah antar sistem. Tidak ada file fisik yang menyimpan data itu karena semuanya hasil olahan dari basis data yang kita gunakan. Dan jika ditambahkan dengan HTTP menjadi HTTP REST, ini berarti maksudnya…, yup, benar sekali, pertukaran lewat protokol HTTP.

Pernah mencoba Amazon Web Service? (disclaimer: saya bukan marketing-nya :p) Saya sudah. Saya menggunakannya untuk meng-upload data saya, berupa berkas, atau gambar, atau musik atau lainnya dan semuanya melalui jalur protokol HTTP. Artinya, anda mengirim data, dan mengaksesnya melalui sebuah alamat URL, katakanlah: http://contoh.com/datasaya/gambar/koleksi1. Walau ini sedikit membahas Cloud Computing, namun yang saya mau coba jelaskan adalah konsep bagaimana melakukan pertukaran melalui protokol HTTP. Anda bisa menambahkan album dari koleksi1 menjadi koleksi2 dan dapat mengaksesnya di alamat url: http://contoh.com/datasaya/gambar/koleksi2. keren? yup, Hal ini yang benar-benar mengubah saya dan membuat saya berhasil menyingkap teknik yang mungkin, untuk aplikasi semacam Wave.

Belum ‘ngeh’ dengan penjelasan saya, bagaimana mungkin kolaborasi real-time dapat dilakukan sejauh ini? Bung, bagaimana pengguna dapat berkomunikasi, kalau setiap request harus dibuka ulang? (protokol http bilang, anda hanya di-ijinkan melakukan request POST atau GET dengan membuka ulang halaman web) Anda juga harus melewati larangan untuk mengirim AJAX request, seandainya anda menggunakan AJAX, melewati domain yang berbeda atau lintas domain.

Jawabannya, adalah melalui teknik AJAX (untuk teknik ini, pembahasannya mungkin lain kali ya) Push Server-side Proxy. Untuk melewati domain, anda membutuhkan proxy untuk melakukan request yang membuat server mengira anda adalah server. Umumnya, browser adalah client yang melakukan request (meminta) halaman kepada server untuk ditampilkan. Maksudnya istilah client di sini adalah, selama anda masih di-url, katakanlah, http://contoh.com, anda dapat bebas mengakses halaman(resource) di http://contoh.com. Kalau anda anda di-url http://contoh.com dan melakukan request dari http://contoh.com ke http://example.com (ilustrasi) langsung dari browser, maka anda akan mendapatkan pesan error mengabarkan bahwa anda melakukan panggilan lintas domain (dan tidak bisa untuk alasan keamanan). Ada banyak teknik untuk meng-akali kondisi ini seperti menggunakan IFrame atau melakukan long-polling (Anda bingung kenapa browser sekarang ini reloadnya seperti lama karena indikator-nya berjalan terus? ini mungkin artinya, website itu melakukan teknik long-polling dengan membuka terus connection-nya) . Saya sendiri menemukannya mudah jika menggunakan server proxy.

Itu artinya, begini:

  • Saya harus menulis proxy-call untuk website saya
  • Saya harus mengamankan port-nya untuk Unauthorized Request (artinya, private hanya untuk saya yang guna-in)
  • Saya harus meng-enkripsi datanya
  • Saya harus mengompress data-nya untuk menghemat bandwitdh dan storage
  • Saya harus membangun REST Server saya pribadi
  • Saya harus membangun AJAX-call service di server saya
 
Sebelum checklist saya menjadi bertambah panjang, itulah daftar yang harus saya kerjakan, sebelum saya membangun tutorial Menulis Source Real-Time di website saya. Dan dengan ini saya memperkenalkan sebuah demo aplikasi real-time pertama saya :p, yaitu: 
Chilik Channel <http://goo.gl/wveJO>


Creative Commons License 
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License. 
6 Agustus 2011

Lisensi, kuatir.. atau tidak kuatir? itulah pertanyaannya

Ceritanya begini, saya membuat framework untuk satu bahasa, kemudian merilisnya dengan lisensi, katakanlah lisensi ‘A’. Nah, untuk publisitas, tentu saja saya langsung promosi di forum terbesar Indonesia untuk menjangkau pengguna framework ini ke depan-nya untuk bertambah. Lumayan besar antusias-nya terbukti dari jumlah traffic yang saya analisa maupun jumlah yang men-download framework ini. Kemudian timbullah satu pertanyaan dari penghuninya, kenapa lisensi ‘A’?  ada yang meminta lisensi Chilik Framework diubah saja, dari lisensi ‘A’ yang strict menjadi yang lebih ‘fleksibel’.  bahkan ada yang nekat ‘memaksa’. Hehehe… ada ada saja nih ulah mereka, pikir saya dalam hati.

Mengenai lisensi, saya sudah lama mengetahuinya dan merupakan concern saya untuk sedapat mungkin, tidak merugikan pihak lain. Kesadaran ini tentu saja bukan datang tiba-tiba. Banyak artikel yang saya baca untuk ‘menjaga’ saya, jika saya terantuk dengan masalah lisensi. Namun menarik bercerita sedikit tentang lisensi, terutama yang saya bahas tentu saja tentang lisensi software.

Lisensi untuk piranti lunak sendiri berkaitan dengan hak cipta, yaitu hak atas kekayaan intelektual penemunya. Biasanya seorang penemu akan mendaftarkan paten, spesifik mengenai hal/teknik/metode/produk yang ditemukannya, dan mengenakan biaya dengan menerbitkan  lisensi bagi yang  menggunakan hasil temuannya. Hal ini menjamin penghargaan (dalam hal ini sejumlah uang) atas hasil temuannya dan mendorong orang lain menemukan solusi lain dari yang sudah ditemukan. Hal itu bagus bukan?

but, we live in imperfect world, and corrupted implementation. Sedemikian pintar-nya orang sampai dapat ‘mengeksploitasi’ paten ini menjadi senjata menakutkan. Alih-alih paten mendorong kemajuan (khan mengharuskan untuk mencari solusi lain untuk masalah yang sama), pada praktiknya beberapa perusahaan menggunakan-nya untuk menjegal perusahaan lain. Nah, disinilah kita menggunakan definisi proprietary untuk melabeli mereka yang memiliki hak ekslusif, yaitu paten. Satu perusahan mengajukan tuntutan karena satu produk terlalu populer (ingat Nokia vs Apple?) , atau satu perusahaan menjegal popularitas satu piranti lunak (SCO vs. Linux (IBM))  ataupun yang terbaru saat ini bersatu membentuk konsorsium (mengumpulkan modal membeli paten) mencegah kepemilikan suatu paten oleh satu perusahaan (lihat Novell dan Nostrell paten).  so, bisa dilihat, dunia proprietary adalah dunia dimana satu sama lain saling menuntut (hahaha, bener gak yah tarik benang merahnya :p).

Paten sendiri bisa berakhir, but jangan terlalu berharap untuk piranti lunak saat ini karena rentang waktunya yang masih panjang. Setiap paten yang ditemukan biasanya akan berakhir selama hidup penemunya plus 60 tahun. Paten akan ber-umur 95 tahun dari tahun dirilisnya/ dipublikasikan atau 120 tahun dari waktu pembuatannya.  Tariklah angka 100 tahun untuk setiap paten, maka bisa dikatakan setiap 1 abad kemudian kita akan menemukan suatu produk, paten-nya berakhir… dan masuk dalam Public Domain (Wilayah Publik). Ketika suatu produk masuk dalam Public Domain, maka royalti dan hak cipta tidak dapat dikenakan lagi sehingga satu karya menjadi bebas digunakan tanpa ijin sekalipun (misalnya, karya Sherlock Holmes-nya Conan Doyle atau karya Shakespeare).

Seseorang bisa saja menaruh karya-nya dalam Public Domain sebebas orang memberikan piranti lunaknya kepada orang lain. Artinya ‘memberikan cuma-cuma’ tanpa biaya. Namun hal ini tidak menjamin apapun, karena bisa saja si pemberi berubah pikiran dan mengenakan charge. Atau, ternyata piranti lunak-nya penuh bug atau membuat hardware-nya rusak. Hal ini tentu saja akan berakhir di pengadilan dengan tuntutan kepada si pemberi-nya. Hmm, tentu bukan hal ini khan yang di-inginkan? maka muncullah kata-kata yang harus disertakan, yang kurang lebih bunyinya seperti ini, ” …diterima APA ADANYA, DENGAN HARAPAN DAPAT BERGUNA TANPA MENYEDIAKAN JAMINAN, TERTULIS ATAUPUN TIDAK, ATAUPUN SESUAI DENGAN KEBUTUHAN BISNIS TERTENTU ATAU SPESIFIK. TIDAK ADA SATU ALASAN APAPUN DAPAT MEMBAWA PENULISNYA ATAUPUN PEMILIK HAK CIPTA DALAM SATU TUNTUTAN ATAU KLAIM.. “. Nah, inilah yang mendorong bermunculan lisensi seperti lisensi BSD-like, atau Apache atau MIT (perbedaannya hanya sedikit, misalnya harus mencantumkan nama pembuatnya, dll).

But, tentu saja dalam prakteknya, kita menemukan orang-orang oportunis yang memanfaatkan kebaikan seperti ini, dengan membuatnya menjadi  proprietary karena dia telah menaruh ‘resep’ spesial dan membuat fitur baru yang super (bombastis nih bahasanya :p). Tidak ada satupun lisensi yang saya singgung di-atas dapat melakukan tindakan apapun terhadap orang-orang tipe ini, selain satu lisensi yaitu GPL(General Public License). kenapa tidak bisa? karena hanya satu-satunya lisensi yang mengharuskan semua karya yang dirilis dalam lisensi GPL, selalu menggunakan lisensi: GPL.

Lalu, Chilik framework menggunakan lisensi apa? you know, lah 🙂

 

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.

15 Juli 2011

Hello world!

Sorry, interrupted.

Hello World of WordPress. So, ini adalah jurnal pertama saya, yang rencananya akan menceritakan segala hal menarik dari dunia saya, dunia programming. so, enjoy my posts 🙂

Welcome to WordPress.com. After you read this, you should delete and write your own post, with a new title above. Or hit Add New on the left (of the admin dashboard) to start a fresh post.

Here are some suggestions for your first post.

  1. You can find new ideas for what to blog about by reading the Daily Post.
  2. Add PressThis to your browser. It creates a new blog post for you about any interesting  page you read on the web.
  3. Make some changes to this page, and then hit preview on the right. You can alway preview any post or edit you before you share it to the world.