Monday, December 31, 2007

Privat Whizkids : Memulai Netbeans pada Dik Wawan

Ini adalah Sesi III saya dengan Dik Wawan.
Saya punya ide u/ langsung mengajarkan pemrograman Java dengan Netbeans kepadanya. Ide ini muncul karena saya baru saja menyelesaikan (belum sempurna) software isi ulang pulsa metode bayar belakang di bawah ini :

Saya senang sekali menulis aplikasi GUI Database dengan Netbeans

Sesi ini saya awali dengan mengenalkannya kepada konsep penyajian data dalam berbagai macam cara. Saya instruksikan u/ membuat data via mind map dengan Vym, kemudian memindahkannya ke OpenOffice Spreadsheet, dan terakhir mencoba membuat form dengan Netbeans.

Tujuan apa yang saya lakukan ini adalah u/ merangsang minat dan ketertarikan dengan dunia programming. Karena, saya rasa, hanya dengan perasaan berminat saja seseorang akan mampu menguasai banyak hal di dunia programming (dan tentu hal yang sama berlaku di dunia lainnya).

Sebagai penutup, saya rancang satu form dengan Netbeans, dan saya jadikan PR bagi Dik Wawan, yaitu merancang form yang sama.

Lihat form yang saya rancang di bawah ini:

Saya juga berusaha mengarahkan dan membuat Dik Wawan menikmati dan menseriusi Masa Depannya


Menyenangkan sekali!

Smg bermanfaat,
Eko SW

NB :
  • Masih banyak terbuka peluang bisnis privat yang lain, tidak terbatas pada programming. Misalnya saja, saya bisa mempelajari mental Aritmatika, dan mengajarkannya via privat kepada siswa-siswa yang dibuat tertarik dengan itu terlebih dahulu
  • Atau privat UMPTN?
  • Atau juga sekedar bimbingan bagi adik-adik siswa SD,SMP dan SMA. Nilai kemanusiannya tinggi insya Allah. Dan jg baik bagi perkembangan psikologi Anda yang mengajarkan privat tersebut. Hidup dan sedikit ilmu yang kita kuasai terasa sangat bermakna.
  • Terakhir, saya ingat sebuah hadits dari Rasulullah SAW, yang mahfumnya : Barangsiapa yang mengajarkan sebuah ilmu, maka Allah akan berikan ia ilmu yang belum pernah ia ketahui. Nah, sepertinya ini rahasia keberkahan ilmu. Insya Allah. Ooops, saya belum mengecek hadits tersebut. Mohon ada yang mengeceknya bagi yang ingin kemantapan dalam bersikap.
Nuhuuun...

Sunday, December 30, 2007

Privat Whizkids : Tiga Prinsip Alih Knowledge IT ke Siswa Yunior

Whizkids adalah film Sci Fi (meski cenderung mistis) ttg sekelompok anak jagoan komputer yang dulu membuat saya punya minat dan cintaaa yg dalam kepada Komputer. Hehehe.

Nah, Whizkids saya jadikan title u/ privat bagi siswa yunior saya. Tujuannya u/ mengubah mereka dari Pemakai menjadi Programmer. Saya baru memulai dengan satu siswa, Dik Wawan. Tapi, konsepnya sederhana saja : berusaha mentransfer semua kemampuan programming dan skill IT lainnya yang saya kuasai ke siswa didik.

Prinsip cara kerja privat ini ada tiga :
  1. Menarik minatnya ke komputer.
  2. Mengarahkan aktivitasnya ke aktivitas yang akan bermanfaat untuk penguasaan Software Development.
  3. Memulai basic skill untuk software Development.

Dan, karena menggunakan Ubuntu, maka saya sarankan Anda menginstalasi paket-paket Edubuntu Ubuntu. Sangat membangkitkan rasa penasaran siswa. Anda bisa mulai dengan sekedar TuxPaint (eeh, itu bukan sekedar ya? Siswa bs merasa senang sekali menggambar dengan TuxPaint). Untuk semakin membangkitkan minat dan keheran-heranan siswa, Stellarium atau Celestia bisa dipergunakan u/ mengajarinya tentang Astronomi dan Hukum-Hukum Alam Semesta ciptaan Allah SWT, dengan seketika membangkitkan rasa penasarannya tentang bagaimana Stellarium bs bekerja seperti itu.

Setelah itu, Anda harus mengajarkan skill speed typing kepada mereka. Banyak sekali alat bantu ajar untuk kategori ini, yang pertama mungkin bisa dimulai dengan TuxTyping u/ membuatnya memainkan game sekaligus mempercepat refleks pengetikan kode. Selanjutnya Klavaro bs dipakai u/ tingkat pembelajaran speed typing yang lebih serius.

Selanjutnya u/ memulai basic skill programming, sebenarnya saya ingin langsung mengajarkan membuat Skrip Dengan Gading-18 kreasi saya. Namun, saya mencoba dengan menggunakan KTurtle bawaan Edubuntu. Wah, minggu lalu Dik Wawan sudah bs menggerakkan sang kura-kura hijau u/ membuat kotak di sekitar teks string berisi nilai Variabel C.

Ohya, jangan lupa u/ menyelingi sesi dengan memainkan game LAN (saya menghubungkan Laptop saya dengan komputer Dik Wawan peer-to-peer via Kabel UTP). Pengalaman ini bisa sangat menyenangkan untuk siswa didik. Bayangkan kita berada di satu dunia 3D dan satu sama lain bisa berinteraksi di dunia tersebut. Nah, sesi itu bs merangsang niat dan skillnya u/ di masa depan membuat software Jaringan. Iya kan?

Mungkin pembelajaran di siang nanti, insya Allah, akan saya lanjutkan dengan KTurtle yang lebih mendalam lagi. Dan juga ... entahlah ide apa nanti yang saya dapatkan ^_^

Yang jelas buat siswa senyaman mungkin senang dengan setiap sesi.
Oh ya, saya juga punya ide u/ membuat semacam CBT (Computer Based Training) via Web Application (PHP/Java/.. Ruby yg belum pernah saya coba sama sekali). Jadi, u/ memantapkan pemahaman siswa, nanti siswa tinggal menjawab soal2 ujian dari desktopnya ke aplikasi Web yg ada di Laptop saya. Nah, ada yang tertarik u/ mencoba mengembangkannya? Bisa juga dipergunakan sebagai bahan Tugas Akhir. Atau thesis jika ditambahkan aspek Expert System di dalamnya ( wah, saya mengkhayal ini)


Oke, smoga bermanfaat!!!

Mari menuju Tahun Baru 2008 yg lebih baik dari Tahun 2007!!!

Sunday, December 23, 2007

Riset Belajar Computer Vision untuk "Gading-18"

Hm... ternyata saya membutuhkan pengetahuan tentang Computer Vision untuk skill selanjutnya yang dibutuhkan. Dari artikel Wikipedia ini, selanjutnya artikel dari Dr. Dobb's ini bisa membantu juga memahami apa itu Computer Vision. Yang baru saya ketahui adalah, bahwa Computer Vision memungkinkan komputer untuk "melihat" dunia luar dan berinteraksi sesuai dengan yang dilihatnya. Misalnya komputer bereaksi kepada gerakan pemakai yang bertepuk tangan.

Library yang akan dipergunakan (tak heran) adalah Open CV milik Intel.


Anda bisa ke hompagenya disini, atau langsung join ke milisnya di Yahoo Group di ini. Pasti sangat menyenangkan bisa membangun sesuatu yang "aneh" seaneh membuat komputer bisa melihat. ^_^


Hmm... waktu saya tanya Aji yang sedang mengambil S2, sepertinya Computer Vision belum diajarkan. Wah, nilai pembelajaran Computer Vision ini semakin berharga kalau begitu.

Ohya, dengan Ubuntu Anda tidak perlu mendownload OpenCV dari Internet. Semua tersedia di 5 DVD Repo Gutsy yang baru. Menarik bukan???

Semoga bermanfaat!!!

Eko SW

Bimbingan Skripsi : Troubleshooting Aplikasi Pengajaran Matematika untuk SMP

Hm... alhamdulillah, ini dari temannya Jaya, meski Jaya sendiri belum selesai bimbingannya.

Nah, model bimbingannya adalah per sesi, jadi bukan per paket (mungkin saya harus merevisi mengenai Etika Kerja saya). Situasinya adalah software untuk skripsi tersebut sudah hampir jadi, hanya ada beberapa kendala yang saya berusaha selesaikan. Softwarenya itu sendiri dibuat dengan Microsoft Visual Basic 6 berupa software pembelajaran Matematika dengan Soal dan Tutorial yang berupa jawaban pilihan ganda.

Hm hm hm, sebenarnya saya dulu pernah membuat aplikasi yang mirip dan juga dengan Visual Basic 6. Dan solusi dengan VB 6 sangat cepat dikembangkan.

Dari semua checklist yang harus diselesaikan, salah satunya yang penting adalah Bagaimana Menampilkan Gambar yang disimpan sebagai Blob/Object pada database Microsoft Access ke Picture Box pada form Tutorialnya. Dan berikut adalah dua hit yang saya rasa bisa menyelesaikan kendala tersebut, yaitu :
  1. Dari halaman ini, silahkan download ini.
  2. Meski yang ini menggunakan Oracle, namun tentu tidak berbeda implementasinya.

Selamat Idul Adha 1428 H ya....

Dan jg Hari Natal dan Tahun Baru bagi yg merayakannya....


Semoga bermanfaat!

Eko SW

Friday, December 14, 2007

Hosting File via MediaFire.com (Source Gading-18)

Jazaakallah untuk Dik Lynxluna, atas infonya
Berawal dari thread diskusi Ogre di MyQuran disini : [BELAJAR BARENG] Belajar Bareng Ogre, maka saya dapat info ttg Media Fire. Sebuah situs u/ file hosting yg baik (dapat awward Dari PC Magazine juga). Smoga ini sudah mencukupi untuk kebutuhan hosting file2 yang saya rasa ada manfaatnya.

Untuk hosting file pertama, silahkan download file SVN Repository dari Gading-18 disini : 00.Game3D SVN-Repository.tar.bz2.

Ah ya, saya belum sempat membuatkan artikel tentang apa itu Subversion sebagai tool management Source Code. Insya Allah segera akan saya buatkan. Namun bagi yang tak sabar, mungkin bisa mempelajarinya secara mandiri dengan mendownload Tortoise SVN. Mungkin tool SVN terbaik untuk Windows. Untuk lingkungan Ubuntu, saya menyarankan Anda menggunakan plugin subversion yang ada di Easy Eclipse untuk kebutuhan management repository central SVN. Dan, untuk tools SVN Client, ternyata command line SVN yang paling efektif. Plugin Subversion Easy eclipse sangat bagus untuk mempercepat browsing repository central SVN dan pembuatan tag-tag.

Silahkan extract dan pergunakan Tortoise SVN yang baru Anda download untuk melakukan browsing terhadap source code Gading-18 lengkap dengan tahapan perkembangannya.

Semoga bermanfaat!!!

Salam hormat,

Eko SW

Bimbingan Skripsi : Pengembangan Software Pengisian Pulsa Bayar Belakang

Hm... awalnya saya ingin menyerahkan pembimbingan Mas Ahmad Kurnia Anshoruddin ke Gitra Perdana, adik kelas yg dulu juga bersama2 bekerja di PT. Gamatechno Indonesia. Namun karena Dik Gitra ternyata ada ujian u/ penerimaan kerja di Jakarta, maka pembimbingan mas Aan kembali saya tangani.

Dan ternyata eventnya tepat sekali, karena sehari sebelumnya Dik Taufik sudah menyelesaikan pembimbingannya hanya dalam 5-6x pertemuan saja. Alhamdulillah. Nah, karenanya saya bisa mudah menyelesaikan s/w u/ Mas A'an ini.

Software ini mungkin bisa menjadi kandidat aplikasi yang bisa dikomersilkan. Kalau saya gunakan deskripsi bebas, maka software ini adalah software yang diinstall di Dealer Pulsa untuk melayani permintaan pengisian pulsa via SMS dari Agent Penjual/Pengecer pulsa, dengan metode penagihan di belakang.

Menurt mas A'an, umumnya s/w pengisian pulsa menganut metode pembayaran di depan. Artinya agent sudah memiliki deposit di Dealer, untuk kemudian setiap permintaan pengisian pulsa akan menyebabkan pengurangan deposit tersebut.

S/W ini (tidak mengherankan) memiliki arsitektur yang tidak jauh berbeda dengan aplikasi milik Dik Taufik (screenshot menyusul). Hanya perbedaannya adalah ada aksi permintaan pengisian pulsa dari Dealer ke Provider Seluler. Nah, ini --sejauh ini-- menurut saya hanya bisa dilakukan jika provider selulernya memiliki interface pengisian (transfer) pulsa via SMS, seperti yang dimiliki oleh Telkomsel. Adapun u/ provider yang hanya bisa mengisi/mentransfer pulsa via menu layanan kartu, maka menurut saya (lihat diagram) merupakan riset selanjutnya yang di pending untuk pengembangan berikutnya atau justru kekurangan sistem.

Berikut saya sertakan Free Form High Level Architectureal Diagram yang saya kerjakan berdasarkan diskusi di sesi pertama dengan Mas A'an :



Implementasinya tetap menggunakan Comm.jar, meski saya rasa Gammu layak dicoba. Namun untuk kecepatan penyelesaian, maka saya nilai lebih baik kami menggunakan Comm.jar yang sudah teruji pada aplikasi Deteksi Penyakit Mata milik Dik Taufik

Semoga bermanfaat!

Salam hormat,
Eko SW

Perbedaan Jam Kerja Saat Anda Sebagai Karyawan dan Saat Anda Mandiri

Dari segi totalnya?
Insya Allah saat Anda mandiri akan lebih banyak jumlah total kerjanya...
Hm.. atau tidak? (terserah cara kerja Anda)
Yang jelas dari segi bebasnya... Anda yang mengatur...
Artinya, Anda memiliki kebebasan total,
tanpa batas.

Sekedar gambarannya,
ada satu hari dimana saya merasa sangat malas untuk keluar dari rumah,
dan ingin menghabiskan waktu dengan Al-Fath dan Ela saja.
Maka, ya sudah, itulah yg saya lakukan selama dua hari penuh.

Atau ada hari dimana saya butuh dan antusias sekali untuk mengerjakan suatu riset penting,
maka 3 hari itu saya isi penuh dengan kesibukan desain dan koding.
Ups, tapi itu tetap saya lakukan di rumah.
Hanya sesekali saya keluar,
saat butuh koneksi Internet,
karena belum memilikinya via Mobile,
meski insya Allah sudah akan ada
(Alhamdulillah, memudahkan riset via internet dan membahagiakan istri dengan tetap di rumah)

Kalau saya di Warnet, itu pun saya atur untuk mengusahakannya mulai dari jam 6 sampai jam 8,
setelah sholat subuh berjama'ah di masjid, taklim Fadhilah Amal, zikir pagi dan sholat Isyraq 2 sampai 12 raka'at.

Namun, hehe, kalau saya pas lagi bergairah sekali,
maka ada kalanya saya berangkat ke Warnet mulai jam 12 malam, sampai masuk Subuh.
Kemudian sholat subuh, tetap di masjid, dan akhirnya, kalau kuat saya mengikuti taklim (atau kalau sudah seperti ini jadi jarang, karena saya pasti akan terkantuk-kantuk),
atau kalau tidak, maka saya ijin dan pamit pulang setelah subuh
(atau, hehe, tak pamit jg tak pa pa),
dan tidurlah saya dari subuh sampai jam 11 siang,
dengan ditemani Istri yang setia,
yang sudah menyediakan sarapan dan teh Rosella hangat.

Nah, Jangan coba2 melakukan itu jika Anda menjadi karyawan di perusahaan ...

^_^

NB :
  • Tapi saya sadar manusia terdiri dari berbagai tipe dan karakteristik. Meski saya ingin mengatakan bahwa ada manusia yang bertipe senang bekerja di kantor, teratur,senang diatur serta siap menghabiskan waktunya di kantor, namun saya tetap cenderung untuk mengatakan bahwa kebenaran hakikinya adalah manusia senang bebas, tanpa ada yang mendikte dan mengaturnya. Mungkin juga penilaian saya ini salah, dan saya tetap menghargai dan sangat mengagumi teman-teman yang memiliki dedikasi di kantornya...
  • ... Meski... saya tidak merasa banyak manfaat yg bisa ditinggalkan untuk anak keturunan, jika Anda menghabiskan usia sebagai pekerja kantor. Anda tak akan bisa meninggalkan suatu sistem yang berjalan dan siap untuk mereka pelajari. Anda hanya bisa melakukan itu jika Anda sebagai seorang Suami atau Ayah memiliki kemandirian yang Anda latih sedikit demi sedikit, dengan penuh kebebasan serta kebahagiaan. Itu pemahaman saya.

  • Meski selanjutnya yang menjadi pertanyaan adalah, bagaimana kalau saya akhirnya mendirikan kantor dan menyerap tenaga kerja? Tidakkah mereka akan mengalami "kesusahan" dan "keterbatasan" hidup seperti yang saya ceritakan? Hm... maka jawabannya adalah Visi Pendirian Kantor tersebut. Itu saja yang bisa saya curahkan, meski ... sebenarnya saya bisa detailkan lebih lanjut. Hanya saja ... insya Allah cukup ^_^

Semoga bermanfaat,

Eko SW

Wednesday, December 12, 2007

Test Drive Gading-18 yang Tak Disangka-Sangka

Bagaimana mungkin saya menyangka kalau setelah malamnya saya sukses mengimplementasikan LUA di Gading-18, ternyata besok siangnya saya menggunakannya sebagai materi utama privat pemrograman pada Dik Wawan, putra ketua takmir masjid Al-Istiqomah (masjid di Karanggayam yg paling dekat dengan rumah kami), Pak Zainal Musthofa?

Saya pernah sampaikan di blog ini bahwasanya target peserta privat pemrograman ini tak terbatas usia : dan justru saya antusias sekali untuk mendapatkan adik-adik kecil yang bisa dibuat senang dan tertarik untuk menguasai pemrograman komputer. Karena saya ingat sekali bagaimana saya dulu sukaaa dan cintaaa sekali dengan komputer, hanya karena Mas Tri (tentor kursus Introduction to Computer saya saat SMP kelas 2 dulu) orangnya baik hati dan penuh perhatian. Nah, saya ingin menjadi Mas Tri bagi adik-adik yg kelak saya ajar. Via Privat, dari rumah ke rumah.

Tujuan akhir saya bagi setiap adik-adik yg menjadi siswa privat adalah menjadikannya seorang programmer komputer. Nah, untuk mencapai tujuan ini, saya mulai dengan menjelaskan apa itu programmer dan apa bedanya dengan pemakai biasa.

Berikut adalah diagram yang saya buat (sembari berusaha menginstall Ubuntu di komputer desktop Dik Wawan --siswa kelas 6 SD) tentang perbedaan programmer dan pemakai biasa :


Yang terutama adalah garis warna merah, yang secara provokatif menunjukkan apa yang menjadi arah Dik Wawan

Mudah kan pahamnya?

Angka2 itu menunjukkan bahwa kita akan mulai dengan membuat ptogram game, kemudian paint dan terakhir word (meski setelah itu saya merasa sebaiknya saya fokuskan ke game saja)

Saya sampaikan bahwa saat ini Dik Wawan adalah seorang pemakai komputer biasa --dan saya minta dia untuk menyebutkan program-program komputer yang diketahuinya--, karena Dik Wawan sudah terbiasa menggunakan program komputer. Kemudian saya rangsang dengan pertanyaan : darimana semua program itu berasal?

Dari para rogrammer-lah jawabannya!!!

Jadi, Dik Wawan bisa menggunakan Word, Paint, Game dan Power Point karena ada programmer Word, programmer Paint, programmer Game dan Programmer Power Point. Artinya, kita tidak bisa menggunakan program yang tidak ada programmernya. Kalau kita jadi programmer nanti, maka kita bisa membuat program komputer sendiri. Dan kita pakai sendiri (kurang lebih seperti itu yang saya sampaikan)

Setelah Dik Wawan manggut-manggut, maka inginnya saya lanjutkan dengan menjelaskan tentang berbagai komponen komputer (Monitor, CPU/Processor, Memory dan lain sebagainya) , namun karena ada gangguan instalasi Ubuntu (yang akhirnya saya dapati adalah karena DVD-R/W-nya error), maka ... saya putuskan untuk lebih baik langsung menunjukkan apa itu program dan bagaimana memprogram.

Nah, saya lihat bahwa di sistem Windows-nya sudah diinstall Visual Studio 6.0. Perfect Candidate!

Ternyata Visual Basic tidak bisa dijalankan (karena ... yah, DLL-Hell ^_^) maka saya pergunakan Visual C++.
Karena Dik Wawan sudah diajari program2 Microsoft Office di sekolahnya (wah, jd punya ide mendemokan Ubuntu di sekolahnya, Salman Al-Farisi, Klebengan, kalau begitu), maka saya berusaha pahamkan apa bedanya antara Visual C++ dengan Word. Nah, jadilah diagram ini (dicorat-coret dengan Paint) :

Mungkin istilah Programmernya Program untuk Programmer agak membingungkan. Namun itu yang saya sembunyikan dari Diagaram Diatas

Disitu saya jelaskan bahwa WORD menghasilkan berbagai dokumen (saat saya tanya apa yg dihasilkan oleh WORD, Dik Wawan menjawab dengan data. Bagus sekali jawabannya), entah Teks, Gambar atau Grafik. Maka kemudian saya jelaskan bahwa C++ dan sebagainya menghasilkan program. Kemudian saya contohkan bahwa Web dihasilkan oleh PHP (karena setelah saya tanya, ternyata Dik Wawan pernah nge-net. Tepatnya ke situs ... Primbon Jawa! ^_^). Jadi mudah memberikan contoh, bahwasanya ada Program yang menghasilkan Program, yaitu PHP menghasilkan Web).

Dan mulailah saya demokan pembuatan satu aplikasi berbasis Dialog dengan Visual C++, yang hasilnya berikut ini :

Aplikasi ini sudah merupakan aplikasi yang fungsional dan bisa langsung dipergunakan sehari-hari, bagaimanapun sederhananya.

Maaf warnanya menjadi 16 warna, karena keterbatasan Bitmap Editor Visual C++

Jelas bukan Dik Wawan, tapi Pak Zainal Mustofa!
Tapi karena poto Dik Wawan tidak ada, bisa juga dunk poto ayahnya... ^_^

Setelah saya suruh Dik Wawan menekan tombol tanda seru (CTRL+F5, untuk Execute), maka saya jelaskan bahwasanya yg barusan dibuat adalah Program. Saat saya tanya lagi, Kira2 ini program apa dik? Dijawab : tidak tahu. Nah, saya jawab : ini program yang mengucapkan selamat datang kepada orang lain dan mengucapkan bahwasanya komputer ini milik Dik Wawan. Insya Allah Dik Wawan paham. Kemudian untuk memantapkan kefahaman, saya tanya dik Wawan : bisa tidak menginstall aplikasi (saya mulai sering memakai istilah program dan aplikasi berganti-ganti) ini ke Start Menu. Meski dijawab tidak bisa, saya tetap instruksikan Dik Wawan u/ meng-klik kanan Start Menu, Explore (sudah paham kalau disuruh milih Explore --itu membuat saya puas) dan sampai akhirnya membuat folder baru bernama Wawan di folder Programs. Nah, setelah membuat shortcut dari program tersebut dan di cut serta di paste ke Folder Start Menu->Programs->Wawan, maka sepertinya Wawan sudah mantap dengan kepahaman bahwa barusan ia sedang melihat proses penulisan Program.

Di titik ini saya sudah puas dengan proses memahamkan Dik Wawan akan hakikat Program. Dan mulailah saya membuka laptop dan memulai proses ... langsung ke pemrograman...

Senang sekali...

Memaksimalkan Ubuntu

Intinya Game.

Sepertinya tidak ada aplikasi yang paling disenangi siapapun dan paling menarik minat kecuali Game (apa ada ya, Rental Microsoft Office yg digemari anak-anak? Rental PS-2 dunk!)

Awalnya saya ingin menunjukkan game2 di Ubuntu. Eh, tapi Dik Wawan sendiri yang tanya : Game Ninjanya kemarin mana mas? (Beberapa hari lalu waktu menawarkan kelas privat saya ke Pak Mustofa saya mendemokan aplikasi FireUpEngine yang sudah berjalan). Ya sudah, saya jalankan di Xterm (sepertinya saya akan mempolakan Dik Wawan untuk hidup di xterm ^_^ ... )

Nah, setelah saya tunjukkan dan saya mainkan. Kemudian saya jelaskan bahwa, game ini bisa seperti ini karena ada kode di belakangnya. Dan saya buka file Gading18.cc dengan Emacs berikut ini :

Tidak berlebihan untuk memulai petualangan seorang anak kecil di dunia komputer dengan Emacs. Saya pikir, justru efek Konsol akan mengefektikan dan mempercepat daya serap belajarnya. Insya Allah



Saya tekankan betapa sulitnya bisa membuat kode seperti itu. Namun juga, saya sampaikan, bahwa Dik Wawan akan saya bimbing untuk menguasainya setahap demi setahap. Senangnya saya saat Dik Wawan mengangguk. Tapi kemudian saya teringat akan kode script Main.lua berikut ini :

ninja = Karakter("ninja hijau","ninja.mesh")
ninja:atur_posisi(100,0,0)
ninja:atur_skala(10,10,10)
ninja:atur_animasi("Attack3")

Saat malam sebelumnya saya putuskan untuk menggunakan bahasa Indonesia dalam interface script LUA ke engine Gading-18, maka saya tidak menyangka akibatnya akan berpengaruh kepada materi privat saya kali ini (dan misi ke depan saya selanjutnya, insya Allah). Maka saya instruksikan Dik Wawan untuk membuat modifikasi pada file Main.lua. Dan lengkaplah sudah semuanya saat Dik Wawan merampungkan dengan script berikut ini :


ninja = Karakter("ninja biru", "ninja.mesh") ninja:atur_posisi(100,100,100)
ninja:atur_skala(10,10,10)

pesawat =Karakter("pesawat","razor.mesh")
pesawat:atur_posisi(100,100,500)
pesawat:atur_skala(20,20,20)

dewi=Karakter("dewi","athene.mesh")
dewi:atur_posisi(300,300,300)
dewi:atur_skala(100,100,100)

Mungkin sederhana, namun baris di atas merupakan logika pemrograman dengan alur kode sekuensial. Konsep pertama yang penting dalam memulai proses pembelajaran pengembangan software.

Berikut adalah hasil Game Instan yang ditulis Dik Wawan tersebut (dijalankan dengan perintah ./Gading18 --root=wawan) :

Setelah tahap ini, maka saya insya Allah akan tambahkan fitur menggerakkan karakter di dunia 3D, akibatnya saya bisa menunjukkan berbagai perintah logika IF kepada Padawan saya yang baru ini... ^_^
Saya jadi mudah memahamkan kepadanya, hubungan antara Kode yang ditulis dan Program yang sudah berjalan.

Untuk menutup sesi ini, ada satu lagi yang saya tekankan.

Di method main() pada kelas Gading18, saya hapus satu tanda titik koma (;) dan kemudian saya coba jalankan dengan perintah make (saya perintahkan Dik Wawan untuk menekan tombol F4 pada Emacs dan mengetikkan : make). Dan gagal.

Saya sampaikan bahwa, dalam pemrograman tak boleh ada kesalahan penulisan satu tanda baca pun. Satu saja titik koma salah, maka program tidak bisa dibuat.

Setelah sesi berakhir, karena sudah masuk adzan Ashar, saya tanya dik Wawan : "Bagaimana, tertarik membuat game tidak?". Jawabannya polos : "Enggak mas"
GUBRAKS!

Hehehe, setelah saya lagi : "Kenapa?" Dijawab : "Susah sekali".

"Owh itu, enggak pa pa. nanti kita mulai sedikit demi sedikit. Mudah kok!"

Kemudian saya teringat akan Video Inside Microsoft Game yang bareng2 kami (Team Gading-18) tonton di rumah Aji. Wuih, kalau saya perlihatkan video itu, insya Allah Dik Wawan akan tertarik.

Ada seninya lho, membuat anak kecil suka akan kita dan apa yang kita katakan. Tak boleh ikut cara kita, harus cara dia.

Silahkan dicoba dan semoga berhasil dengan privatee juniornya!!!

Salam hormat,

Eko SW

NB :
  • Mengajarkan sesuatu kepada anak kecil, membutuhkan kesabaran dan keikhlasan kita melepaskan ego, dan masuk ke dunianya. Tidak akan berhasil seseorang dalam membuat anak kecil menyukainya, kecuali jika egonya dihilangkan, atau at least ditekan.
  • Selain itu saya juga mulai minggu depan insya Allah akan mengambil satu siswa Kelas 4 SD. Hehehe, saya ingin mencoba mengambil juga satu siswa SMP. Hm... belum melihat ada yg seusia itu .... Pastinya pola pikirnya berbeda, dan itu berarti saya akan berbeda juga ...
  • Anda akan menyenangi proses belajar-mengajar antara Anda dan seorang/beberapa anak kecil. Tidak bisa diceritakan bagaimananya, kecuali coba dan rasakan sendiri. Insya Allah ... ^_^
  • Oh ya, sesi ini di akhiri dengan makan bersama di Rumah Pak Zainal bersama Dik Wawan. Wah, ternyata Dik Wawan juga senang pedas seperti saya.

Thursday, December 06, 2007

Essay I - Pemaparan Konsep Gading-18 Game Engine

Ketika kami diminta mengembangkan Game 3D, maka awalnya saya ingin mengusulkan menggunakan Torque, sebuah Game Engine yang saya nilai baik. Setelah saya download, saya tunjukkan demonya ke Pak Har dan teman-teman lain di Studio Jalan Gading-18, Jogjakarta. Hehe, saya tak sangka kalau Pak Har tak menggubris apa yg saya demokan :))

Tidak, saya tidak sakit hati, meski agak malu. Karena sebelum demo itu, beliau mengatakan begini : "Kalau kita mau menggunakan game engine komersial, kalian-kalian ini tidak akan kami panggil". Dan jadilah, demo Aji dengan Ogre yang mendapat penekanan khusus. Wah, saya justru semangat banget dengan hal itu. Awalnya mungkin karena saya miss-understand dengan dengan apa yang diinginkan Pak Har : menyelesaikan proyek ini bukan dengan filosofi Purpose Based, namun ... Core. Awalnya saya menyangka ini Yet Another Project, dan ternyata bukan. Insya Allah bisa kami selesaikan dengan baik.

Kemudian beliau hanya meminta kami membuat contoh aplikasi dengan Ogre yang dibuat dari scratch (tanpa bantuan Helper Class bawaan Demo Ogre) dan menampilkan sebuah Cube disana. Wah, ternyata memang sangat berbeda memulai coding dengan berbekal kepercayaan diri dan harga diri untuk memulai dari scratch dan membangun sesuatu yang berada pada domain yang sama dengan sistem serupa yang sudah ada di pasaran, yaitu berbagai title Game Engine 3D yang sudah ada. Dan mulailah tiga hari penuh konsentrasi saya lalui. Yang saya maksud penuh konsentrasi adalah benar-benar membuat kode, tanpa sibuk mencari-cari kode di Internet. Ini termasuk filosofi yang menarik : "lebih baik 2 jam full coding, ketimbang 10 menit full searching"

Namun setelah saya membuat satu kelas baru yang akan berfungsi sebagai Base Engine-nya (yaitu di dalam file BaseEngine.cc), kemudian saya sadari akan terjadi suatu kebosanan : saya harus terus-menerus menulis kelas C++ yang baru untuk setiap game yang diminta dibuat Kalau cuma 3 tidak masalah. Tapi bayangkan kalau ada .. 15 buah! Wah, teknik inheritance tidak boleh dipakai! Meskipun screenshot yang dihasilkan sudah baik, perhatikan screenshot di bawah ini :


Namun hasil di atas saya dapatkan dengan tetap terpaksa menyentuh kode C++, membuat engine baru, dan membuat semua definisi Scene 3D/Level/Mission (yang mungkin di load dari suatu file, ini sudah memudahkan) di Engine yang baru tersebut (saya beri nama FireUpEngine.cc). Dan itu, ... tidak baik.

Setelah saya relax beberapa jam, saya dapati solusinya cuma satu. Namun satu jalan solusi ini memulai begitu banyak perubahan desain, cara kerja dan tentunya pola pikir. Solusi itu saya dapatkan saat dulu pertama kali melihat-lihat Game Engine apa saja yang sudah dibuat dengan Ogre, yaitu saya membaca sesuatu tentang LUA. Ia adalah scripting Engine dengan C murni (strict C) yang dapat di-embed di aplikasi kita, untuk kemudian membuat aplikasi kita dapat dikembangkan dengan arsitektur plugins.

Kalau Anda belum bisa membayangkan apa itu plugin, maka bayangkan saja Anda harus membuat aplikasi yang begitu banyak, namun sesungguhnya mereka memiliki kesamaan yang sangat seragam. Letak perbedaannya mungkin hanya sekedar I/O atau tingkah laku obyek-obyek yang diolahnya. Dan jawaban dari pertanyaan ini adalah arsitektur aplikasi dengan subsistem PLUGINS.

Dengan menggunakan fondasi berpikir tersebut, maka nantinya akan ada dua istilah yang harus dipahami dengan baik, yaitu Game Instan dan Game Engine. Game Instan adalah apa yang dilihat dan berfungsi sperti yang diharapkan oleh pemakai sebagai sebuah Game, dan Game Engine adalah apa yang memungkinkan Game Instan tersebut untuk dapat hidup.

Silahkan cermati block diagram di bawah ini untuk memahami apa yang saya maksudkan :



Anda dapati Derived Game (Game Instant) merupakan semua kumpulan resource yang akan dijalankan oleh Gading-18 dan muncul kepada pemakai sebagai sebuah Game yang sesungguhnya. Di titik ini saya masih gamang dengan konsepnya : tepatnya bagaimana saya memisahkan antara script dan engine? Nah, setiap saya blank dalam melanjutkan koding, saya tuangkan gambaran samar apa yang saya rasakan di Inkscape, dan jadilah block diagram berikut ini :


Block diagram ini sudah jauh lebih jelas bagi saya. Perhatikan bahwa yang saya maksud dengan Script adalah sekedar event handler yang akan dipanggil oleh Gading-18. Nah, dengan pemahaman yang ini saja, maka saya sadar bahwa yang paling pintar adalah Gading-18, bukan scriptnya. Selain itu, Anda dapati terdapat ProgramOption yang merupakan class dengan member static public, yang berfungsi untuk menyimpan semua konfigurasi yang dibaca dari file konfigurasi. Oh ya, saya lupa memberitahukan terlebih dahulu, bahwa lonjakan kemajuan Gading-18 terjadi pada saat saya selesai menggunakan Boost.Program_options, sebagai pustaka yang menangani fungsionalitas pemberian opsi ke dalam program, baik via command line atau configuration file.

Ini sangat hebat. Anda dapat menjalankan Gading-18 dengan berbagai konfigurasi. Dan satu2nya konfigurasi yang saya butuhkan saat itu adalah root folder yang merupakan tempat satu suatu game instan di simpan :

./Gading18 --root=./dinosaur_adventure

Selain itu untuk menambahkan kemantapan saya dengan arsitektur Script pada Gading-18, maka saya tambahkan satu atribut window-name :

./Gading18 --root=./dinosaur_adventure --window-name="To Strengthen The Love to Prophet Muhammad SAW"

Nah, dengan fleksibilitas tersebut, maka saya tuangkan lagi apa yang ada di benak saya tentang Game Instans menjadi block diagram berikut ini :



Dan saya sudah mulai sanggup menulis banyak game dengan cara yang singkat saja, kira-kira seperti ini :

./Gading18 --create-game "princess" "Princess in A Castle"


Maka Gading-18 akan membuatkan struktur folder yang lengkap dan dapat dijalankan oleh Gading-18 dengan cara yang serupa :

./Gading18 --root=/home/ela/istri_yang_diberkahi/princess

Berikut adalah screenshot dari Game Instan yang dihasilkan oleh Gading-18 :



ScreenShot tersebut di atas merupakan The Simplest Possible Application yang bisa dibangun dengan Gading-18. Fitur-fitur standar Game 3D seperti Collision Detection dan Hukum Allah pada Alam Semesta lainnya akan segera diimplementasikan. Untuk saat ini Anda bisa menggunakan tombol Panah u/ menggerakkan kamera dan tombol W,A,S,D untuk pergerakannya. Semua konfiguras yang bisa dipakai dapat dilihat dengan menggunakan perintah ini :

./Gading18 --help


Dan Anda bisa meng-override opsi yang sudah dituliskan pada file ./game/Main.cfg melalui perintah Command Line. Sebagai contoh, perintah berikut ini akan menjauhkan kamera dari Ninja dan Ogre :

./Gading18 --camera-start-position-x 500

Sepertinya saya cukupkan sampai disini saja pemaparan saya tentang Konsep Gading-18.Ah, ya, saya belum sampaikan (sepertinya ini justru hal yang penting. Tapi, apalah artinya sebuah Nama. Semuanya akhirnya berpulang kepada kualitas. Dan itu, sesuatu yang harus diperjuangkan), bahwa Gading-18 adalah backronym dari :

GAME DEVELOPMENT INFRASTRUCTURE NOT GADING-18

Dan akan saya akhiri dengan satu catatan kaki berikut ini :

"Game Final yang dimainkan pemakai adalah Sinergi antara Game Engine dan Game Instan. Sehingga istilah Game Programmer akan ditambahkan lagi dengan istilah Game Maker : Anda tidak perlu mengetahui isi kode C++ Gading-18 untuk bisa membuat Game yang menarik"

Silahkan download semua track record pengembangan Gading-18. Itu merupakan hasil dari Export SVN. Sudah lengkap dengan binary dan screenshot, hanya saja untuk beberapa binary, Anda harus mempunyai folder Samples/Media bawaan Source Code Ogre dan jangan lupa buatkan symbolic link (di Linux ya, kalau Anda menggunakan Windows silahkan disesuaikan. Dan kabari saya jika Anda berhasil ^_^) di tempat yang "sesuai". Silahkan cari sendiri ya!!!

Semoga bermanfaat bagi pengunjung setia blog ini!

Betapa senangnya hati ini jika kebahagiaan yang saya rasakan juga dirasakan dan bermanfaat bagi siapapun di luar sana

Insya Allah

Salam hormat,
Eko SW

* Catatan : sepertinya saya belum berkesempatan mengupload source Gading-18. Mungkin di lain waktu (saat koneksi Internet lancar mungkin). Atau silahkan email pribadi ke saya, insya Allah akan saya kirimkan source-nya. Harapan saya semoga bermanfaat

Sekelumit Tentang Silaturahim, Berbuat baik dan Kemajuan Kemandirian

Saat ini saya sedang bekerjsama dengan Aji Pamungkas dan teman-teman yang lain, dalam mengerjakan proyek pengisian konten s/w petualangan 3D u/ suatu tempat edukasi anak-anak di Jogja.

Kalau saya runut2 ke belakang bagaimana semua ini bisa terjadi, maka saya dapati fondasinya ada dua : kebaikan hati dan silaturahim.

Tidak tidak, saya tidak mengatakan bahwa saya baik hati, namun saya hanya ingin mengatakan bahwa keinginan membantu akan berakibat kepada hakikatnya kita sendiri yang membantu diri kita. Yang jelas untuk akhirat yang abadi, atau pastinya untuk bantuan masa depan kita di dunia.

Begini runtutannya.

Suatu hari saya di telepon Mas Koko yg bertanya kepada saya, apakah berminat bergabung di tim yang mengerjakan software petualangan 3D ? Mas Koko ini adalah rekan satu tim saya saat menjadi asisten bahasa pemrograman C++ dan Java di SiC (Student Internet Center) MIPA UGM. Kami sangat akrab saat pengasistenan dulu tersebut.

Tentang Game 3D, sebenarnya saya sih cuma pernah sampai tahap evaluasi tentang Game 3D pada saat pemilihan topik Skripsi. Tapi akhirnya beralih ke Extreme Programming di Java. Saya sangat berminat dengan tawaran mas Koko, meski saat itu ada rencana u/ belajar bekerjsama di Puskom UGM atas tawaran Pak Bambang Prastowo (gaji yang dihitung sebagai mahasiswa sebenarnya tidak terlalu masalah bagi saya, tapi ternyata Allah sebagai penentu masa depan berencana lain).

Kecenderung saya sebenarnya ingin mengerjakan semuanya sendiri : bukan karena saya bisa dan mampu, namun karena saya senaaang sekali. ^_^ Namun setelah saya ingat2, satu-satunya teman angkatan yang punya kecenderungan ke dunia Game 3D ya hanya Aji Pamungkas. Kemudian saya hubungi dan dia tentu tertarik. Nah, ternyata, Aji-lah yang menjadi juru penyelamat (saviour) proyek ini.

Hm... kalau saya runut-runut lagi, sebenarnya saya dan Aji tidak terlalu akrab. Hanya saja, pernah di akhir semester kelulusan Aji, saya dengan penuh semangat datang ke kostnya (yang pertama kali seumur hidup) untuk "memaksanya" belajar Eclipse di Java. Hehe, padahal saat itu sepertinya Aji belum pernah ngutak-atik Java. Tapi saya paksa saja :)) Bersamaan dengan Eclipse edisi Windows, saya sertakan juga berbagai ebook yang berhubungan dengan Java dan dunia yang ia senangi, Game 3D. Saya tak sangka, hal itu akan berakibat kepada masa depannya dan juga masa depan saya. Akhirnya saat ini Aji sedang tahap menyelesaikan Thesis S2-nya tentang Game 3D dengan Java. Masa depan yang praktis sekali ya?

Jadi, amalan membantu Aji dan kerjasama yang baik dengan Mas Koko berbuah kepada satu proyek Game 3D yang sedang kami geluti ini (kalau dalam kasus saya, maka proyek Game 3D ini adalah dunia baru yang sangat menarik).

Ah ya, bagaimana Mas Koko mendapatkan info proyek itu, adalah karena beliau sekarang ini sedang keasyikan melanjutkan menekuni profesi sebagai asisten Lab di MIPA, dan salah satu praktikannya adalah staff Pemda yang sedang melanjutkan kuliah, yaitu Mas Iwan. Nah, Mas Iwan ini adalah teman dari Mas Bayu, seorang enterpreneur di bidang IT. Kemudian akhirnya Mas Bayu adalah rekan kerja dari Pak Har dan Mas Danang Suharno yang mempunya ambisi besar mendirikan komunitas animator dan programmer 3D di jogja ini, dalam payungan nama Animacity.

Sungguh tak bisa terbayangkan bagaimana masa depan bergulir yang berbuah dari keinginan membantu sesama.

Semoga bermanfaat dan selamat membantu sesama!!!

NB :
• Sekedar buah pemikiran, kalau Anda adalah saya, coba bayangkan jika saat bekerjsama dengan Mas Koko saat asistensi dulu, Anda menunjukkan ketidakjujuran, keegoisan, ketidak ramahan dan seabreg akhlak buruk lainnya? Bisakah beliau punya keinginan menelpon Anda? Kalaupun Anda memang memiliki skill yang diinginkan, sepertinya Mas Koko akan lebih memilih orang yang lain yang mempunyai skill yang tidak sebaik Anda, namun mempunya akhlak yang lebih baik. Kritis sekali ya masa depan itu? Tergantung kepada akhlak dan kebaikan hati Anda.
• Atau kalau Anda tak pernah punya niat membantu Aji, bagaimana mungkin Anda akan dapat menghubungi Aji yang adalah penyelamat proyek Game 3D ini? Ah ya, seperti kondisi saya saat ini, bagaimana mungkin Aji punya keinginan memberi Anda proyek yang berasal dari temannya yang minta bantuan asistensi thesis ? Unik kan?
• Terakhir, jangan lupakan kekuatan Internet. Ternyata mas Koko bisa menelpon saya, karena melihat alamat blog saya di shoutbox Pak Prastowo. Nah, jangan abaikan aktifitas Anda di Internet. Ia akan berdampak kepada masa depan Anda. Baik dan buruk

Tukang Becak Kekasih Saya


Cinta karena ... terenyuh
Saya ingat saat beliau menunjukkan sepatu yg dibelinya u/ putranya

Itu tidak ringan di hati saya ...

Betapa mudahnya saya mendapatkan uang dan harta,
yg saya perlukan,
atau berlebih


Namun beliau mendapatkan sepatu tersebut,
dengan kayuhan becak,
yang tak bisa saya bayangkan lelahnya
.

Beliau adalah kekasih di hati saya,,
yang selalu mampu menggerus hati terdalam,
yang sering mengeras karena kelalaian

Semoga Allah berikan Jannah Firdaus tertinggi untuknya,
Wahai AR-RAHMAN...


Semoga Allah SWT menjaga dan melebihkannya di akhirat nanti,
meski di dunia ini,
manusia mungkin tak menyadari keberadannya
Insya Allah

Tebakan Solusi Masalah Shutdown, Reboot dan Hibernate pada Gutsy

Saya sering mengalami kegagalan shutdown, reboot, hibernate atau malah sekedar log off.
Komputer jadi hang. Nah, saya temukan (tebakan) solusinya adalah sebagai berikut :
Gunakan semua ini di dalam xterm (console/terminal) :
u/ shutdown : sudo shutdown -P now
v/ restart : sudo reboot now
w/ hibernate : sudo /etc/acpi/hibernate

Satu trik lagi, sptnya pastikan hard-disk di akses sebelum mulainya proses tersebut. Triknya coba jalankan aja Open Office Word Processor atau beberapa aplikasi besar lainnya.

Sepertinya sampai kernel Linux belum diu-upgrade, saya harus melakukan ini terus