Rencana Menulis Buku dan Mengajar

Ketika seseorang bertanya hal teknis, saya sering memberi jawaban untuk googling (mungkin sedang tidak mood untuk menjelaskan) tapi terkadang saya memberi jawaban panjang lebar (yang mungkin malah membuat sipenanya semakin bingung). Saya yakin kesalahan ada pada saya dalam hal menjelaskan. Untuk itu saya berusaha mengasah cara penyampaian dengan mulai berbicara di depan banyak orang. Jika tidak halangan, insyaallah, hari sabtu dan minggu saya akan membawakan materi di acara bertema Joomla di Paramadina. Dengan membiasakan diri menyampaikan materi di depan banyak orang, saya berharap ke depannya akan lebih mudah menyampaikan suatu materi kepada orang lain.

Continue reading Rencana Menulis Buku dan Mengajar »

Kesuksesan, Kegagalan dan Tanggung Jawab

Sejak pertengahan desember saya sudah tidak lagi bekerja di perusahaan. Saya sempat berpindah ke content provider juga, dan hanya empat hari saya bekerja. Lho kenapa? Jawabannya akan saya berikan nanti. Ada beberapa alasan yang membuat saya “untuk sementara ini” menjadi pekerja lepas saja. Sebelum memulai bercerita, kita flashback dulu di masa saat saya menjelang lulus kuliah. Faktor pertama yang membuat saya ingin bekerja di suatu perusahaan adalah uang, tapi itu dulu, saat saya baru pertama kali ingin bekerja. Saya sempat mengalami masa luntang-lantung hanya dengan datang ke kampus, ngobrol bersama teman, dan sesekali mengoprek robot tanpa menghasilkan uang sama sekali. Saya mulai mengkesampingkan idealisme saya dan berencana bekerja di perusahaan saja. Tanpa pikir panjang tawaran yang ada di depan mata saat itu pun saya ambil. Jelas saat itu, alasan utama adalah karena uang. Selain alasan uang, tentunya saya juga ingin mencari pengalaman dan ilmu. Saat bekerja disuatu perusahaan, saya merasakan idealisme yang mulai luntur. Saya tidak pernah lagi berpikir tentang kualitas karena saat bekerja saya lebih dituntut oleh waktu. Saya tidak sempat lagi untuk mencoba-coba hal baru, menerapkan hal baru bahkan untuk menulis kode secara rapih dan decoupling. Saya mulai berpikir “kapan saya bisa maju jika hanya berkutat dengan hal seperti ini terus”. Saat bekerja diperusahaan, saya harus menerima apapun pekerjaan yang diberikan. Meskipun gaya menulis kode saya tidak sesuai, saya harus tetap menerima. Saat merapikan pekerjaan lama, saya harus memilih diantara pekerjaan saya tidak selesai sesuai waktu atau memaksakan gaya menulis dengan yang sudah ada.

Akhirnya saya memutuskan untuk keluar dari pekerjaan saya. Tidak terpikir oleh sayapun akan bekerja dimana nanti, hanya saya tidak ingin stack. Saya masih ingin mencari ilmu lagi. Akhirnya untuk sementara saya putuskan bekerja lepas saja, toh saya masih bisa bereksperimen bebas. Jika Anda yakin dengan bekerja lepas dapat membuat Anda lebih maju sambil menuntut ilmu, Anda tidak sendiri karena saya berpikir yang sama dengan Anda. Tidak semua bekerja di perusahaan itu membuat stack, ada beberapa orang yang beruntung dapat bekerja sambil bereksperimen. Beberapa perusahaan ada yang menghasilkan produk sumber terbuka dimana mengharuskan pekerjanya berkontribusi di produk sumber terbuka tersebut. Setelah keluar dari satu perusahaan saya sempat berpindah ke perusahaan content provider. Kenapa hanya sampai empat hari? Baiklah, mungkin ini kesalahan saya. Kita tidak pernah tahu apakah tempat bekerja kita nantinya akan membuat kita nyaman atau tidak. Saya berinsiatif mengundurkan diri secepatnya, karena jika saat saya tak nyaman tentunya akan berpengaruh terhadap kinerja. Saya sadari jika ini terlalu egois dan idealis, OK itu salah saya.

Kembali ke laptop masa kuliah. Sejak duduk di bangku kuliah, saya ingin sekali berkontribusi dalam banyak hal, salah satunya yang belum kesampaian adalah membuat proyek sumber terbuka. Karena saya sudah mempunyai banyak waktu luang, saya mencoba belajar untuk membuat proyek sumber terbuka. Jangan takut dengan kualitas kode kita saat ini, karena seiring waktu jika Anda terus belajar dengan benar kualitas kode yang Anda hasilkan pasti akan meningkat. Kunci dalam proyek sumber terbuka adalah release early, release often. Jadi mulailah kontribusikan skrip sederhana Anda, jangan takut dengan bug-bug yang akan muncul nantinya. Saya percaya dengan kita banyak berkontribusi bagi banyak orang pekerjaan akan datang dengan sendirinya. Sambil menulis kode secara bebas, saya bisa memanfaatkan situs untuk freelancer yang melelang pekerjaan lepas.

Pada saat berada dalam kondisi seperti ini, saya terlalu terngiang dengan pikiran “Apakah saya telah gagal? Apakah saya bisa sukses dengan cara seperti ini? Apakah saya tidak bertanggung jawab dengan tidak bekerja tetap? Saya yakin, orang-orang dekat Anda akan bertanya “Bagaimana keluarga mu kelak nak?”. Saya tidak punya jawaban yang tepat dengan pertanyaan itu, karena hal itu butuh pembuktian dan belum terjadi. Pertanyaan seperti itu sebenarnya sama seperti “Bagaimana nanti kamu saat umur 40?” Tidak tahu bukan. Tapi saya punya rencana saat ini. Hehe.. jadi saya hanya bisa sebutkan rencana. Mari kita baca kembali paragraf ini dari awal, perhatikan kalimat “Apakah saya telah gagal?”. Ini menunjukkan suatu kejadian lampau. Ya, kejadian ini mungkin akan terulang lagi di masa depan, mungkin juga tidak. Lalu kalimat setelahnya “Apakah saya bisa sukses dengan cara seperti ini?”. Ini menunjukkan ketidakpastian mengenai sesuatu yang kita tempuh. Pernah mendengar kalimat “Gagal adalah suatu kejadian, sukses adalah jalan / cara”? Lalu apa kaitannya dengan tanggung jawab? Menurut saya, tanggung jawab disini adalah bagaimana strategi kita menghadapi kejadian gagal dan mencapai jalan sukses. Dan satu lagi, sukses itu relatif, bukan uang. Orang mempunyai perspektif yang berbeda mengenai sukses. Saya mempunyai gambaran yang mungkin sama dengan Anda tentang sukses. Saat kita mempunyai beberapa target kedepan dan kita bisa sukses mencapai target tersebut, bisa dikatakan kita telah sukses. Saat saya mempunyai target membuat proyek sumber terbuka dan belum tercapai, bisa dikatakan saya sedang menjalani cara sukses saya. Saat saya telah membuat proyek sumber terbuka, saya mempunyai target mempopulerkan dan terus mengembangkan proyek tersebut. Dan seterusnya target itu akan terus ada.

Seminar Go Open Source di SMA Sudirman Bekasi

Alhamdulillah telah selesai juga acara seminar Go Open Source di SMA Sudirman Bekasi. Saya sangat beruntung dapat diberi kesempatan sebagai pembicara di acara ini. Basically, para peserta yang notabene adalah siswa/siswi pangsud sangat antusias mengikuti acara, terlebih saat seksi tanya jawab. Mereka melontarkan banyak pertanyaan tentang “apa itu sih Linux?” dan “seperti apa itu sih open source?”. Saya harap mereka akan terus terpacu untuk mengetahui “apa itu Linux dan apa itu open source”. Terima kasih untuk rekan-rekan di pangsud atas kerja samanya, komunitas BELL atas jerih payahnya dan IGOS Center Bekasi atas usahanya untuk memasyaratkan open source. Well, a picture is worth a thousand words, tapi sayangnya saya tidak mengkopi satu photo pun, mungkin akan menyusul.

Saatnya Tembak dan Maju

He.. sudah lama tidak menulis di blog ini. What’s wrong? Well, kalau dibilang sibuk banget, sebenarnya juga tidak. Tapi kerjaan, alhamdulillah, ada terus dan waktu luang yang ada sulit dialokasikan untuk menulis ataupun mengoprek. Hehe.. itu sama saja sibuk ya. Sebenarnya juga tidak, karena dalam sehari pasti ada waktu luang yang “masih” bisa dimanfaatkan untuk menulis dan mengoprek. Berarti disini ada faktor lain yang menyebabkan si waktu luang tidak teralokasikan dengan baik. Ya, tepat sekali, karena apa? Benar sekali tebakan Anda, malas telah menurunkan produktifitas. Apakah saya malas selalu? Tentu tidak, saya juga mempunyai semangat untuk mempelajari teknologi terbaru dan saya senang mengoprek apa yang saya ingin ketahui. Dalam hal ini kondisi saya sedang tidak in.

Saya teringat oleh tulisan Joel Spolsky yang berjudul Fire and Motion. Ada saat dimana programmer berada dalam fase tidak produktif dan tidak tahu kapan dapat kembali ke masa produktifnya. Seperti halnya orang diet, yang hanya dapat sementara dan kembali ke pola makan biasanya. Dia tidak tahu fase itu. Memang benar apa kata si Joel, seperti ada batu besar di otak kita yang sulit untuk menggulirkannya atau malah menunggu batu itu bergulir dengan sendirinya. Batu diam akan cenderung diam. Namun jika telah berada dalam pergerakan itu, sebaiknya yang perlu dipertahankan adalah pergerakannya, bahkan lebih dipercepat akan sangat bagus. Seperti dibilang Joel, dalam strategi perang apalagi kita hanya diam, maka musuh akan membrondongi kita. Well, saatnya saya mulai tembak Anda dan bergerak maju (Cover me! I’ll move to that bridge and shoot that bastard).

Wisata Kuliner Bebek Goreng Karet Cibinong

Kemarin jumat, pulang dari Slipi saya dan Kumiz main dulu ke kontrakannya Onay di Karet, Sudirman. Tidak berapa lama, kami berdua pun langsung segera berpamitan. Dari Sudirman kami naik metromini 640 dan turun di Komdak, sesuai saran Dajjal. Phew, semua bus arah bekasi penuh banget. Entah karena mata saya yang siwer, atau ada sesuatu yg mengganti tulisan “Cibinong” menjadi “Cikarang” di penglihatan saya. Sambil membayangi akan turun di Jati Bening dan langsung naik ojek, sampai rumah mandi, makan, bikin kopi susu, nongkrong depan komputer sampai tepar (ajib). Tapi tunggu dulu, saya melihat jalan tolnya kok gak familiar ya. Langsung terbesit “Cikarang” menjadi “Cengkareng”, tapi lewat Tanjung Priuk. Ah bukanlah, tapi ini pasti nyasar, soalnya Cawang bawah gak muncul-muncul. OK, saya mulai memperhatikan rambu-rambu di jalan tol, gak lama terpampang “Taman Mini”. Sue, suasana hati tambah suram. Tanya mbak-mbak sebelah yang lagi berdiri, “Mbak, ini kemana ya?”. Mbak tersebut menjawab “Cibinong”. Saya membalas “Makasih mbak.. no telp berapa?” (yang ini ngibul). Kampret, akhirnya saya cuma bisa memberi senyuman bapuk ke Kumiz. Mana duit tinggal ceban lebih dikit. Untung Kumiz bawa duit lebih. Ya udah akhirnya sampai Cibinong makan bebek goreng dulu. Kampret lagi nih, bebek goreng apa karet goreng nih.Ya sudahlah lengkap penderitaan hari jumat. Hanya dua dummy yang pulang dari Slipi ke Bekasi lewat jalur ini, don’t try this at home!!

Three Kinds of Answers

When you have tried (err.. don’t forget to pray), here they are, three kinds of asnwers you might get from Allah:

  1. Allah gives you what you want (Alhamdulillah)
  2. Not this time, you might get better if you’re waiting
  3. No, you’ll get the best later

So, if you didn’t make it, there are two possibilities you’ll get more than what you want. I quote this wish sentences from someone,  thanks for giving me this hint.

Line Follower Robot dengan PID

Sesuai janji saya, kali ini akan saya bahas robot line follower dengan sistem kontrol PID. Patokan yang saya gunakan berasal dari artikel di Chibots, perbedaannya adalah sistem steering yang digunakan robot. Pada artikel tersebut PID digunakan untuk mengontrol servo rear (steering) dan kecepatan 1 servo belakang (moving). Pada kasus saya, robot menggunakan differential wheeled. Keseluruhan fisik robot (yang diberi nama Semar Mesem ini) dibuat oleh Dadank, saya hanya menulis programnya saja. Saya tidak memegang skematiknya, tapi kurang lebih rangkaiannya terdiri dari:

  • Microcontroller ATMega16 dengan clock 4MHz
  • L298 untuk driver motor yang terhubung dengan PORD.1 – PORTD.6
  • 10 Sensor (menggunakan phototransistor dan LED biru) yang terhubung ke IC LM339 (komparator). 8 sensor terhubung dengan PINA untuk sensor depan, 2 sensor (PINB.5 dan PINB.6) untuk bagian tengah kiri dan kanan ujung.
  • LCD 2×16 yang terhubung dengan PORTC
  • 4 tactile switch yang terhubung dengan PINB.0 – PINB.3. Switch ini digunakan untuk tombol navigasi menu yang ditampilkan lewat LCD.

Bentuk jadinya robot :

Photo lainnya yang memperlihatkan rangkaian dan gear motor bisa dilihat di:

http://picasaweb.google.co.uk/gedex.adc/SemarMesem

Semar mesem menggunakan 8 sensor di depan untuk mengikuti garis. Lebar garis yang ideal untuk diikuti adalah 1.5 – 2 cm dengan kemungkinan 2 – 3 sensor dapat mengenai garis. Langkah selanjutnya adalah melakukan mapping nilai sensor untuk mendapatkan process variable (PV). Kurang lebih seperti berikut (misal nilai 0 merepresentasikan sensor mengenai garis):

11111110 (-7)        // ujung kiri
    11111000 (-6)
    11111100 (-6)
    11111101 (-5)
    11110001 (-4)
    11111001 (-4)
    11111011 (-3)
    11100011 (-2)
    11110011 (-2)
    11110111 (-1)
    11100111 (0)        // tengah
    11101111 (1)
    11000111 (2)
    11001111 (2)
    11011111 (3)
    10001111 (4)
    10011111 (4)
    10111111 (5)
    00011111 (6)
    00111111 (6)
    01111111 (7)        // ujung kanan
    11111111 (8 / -8)  // loss

Kondisi ideal pada robot adalah bergerak maju lurus mengikuti garis, dengan kata lain PV = 0 (nilai sensor = 11100111). Dari sini bisa kita asumsikan Set Point (SP) / kondisi ideal adalah saat SP = 0. Nilai sensor yang dibaca oleh sensor disebut Process Variable (PV) / nilai aktual pembacaan. Menyimpangnya posisi robot dari garis disebut sebagai error (e), yang didapat dari e = SP - PV. Dengan mengetahui besar error, microcontroller dapat memberikan nilai PWM motor kanan dan kiri yang sesuai agar dapat menuju ke posisi ideal (SP = 0). Nah besar PWM ini bisa kita dapatkan dengan menggunakan kontrol Proportional (P), dimana P = e * Kp (Kp adalah konstanta proportional yang nilainya kita set sendiri dari hasil tuning). Misalkan nilai PWM didefinisikan dari 0 – 255 dengan nilai 0 berarti berhenti dan 255 berarti kecepatan penuh. Dari data nilai 8 sensor yang telah dimapping ada 16 PWM untuk tiap motor. Tapi dalam kondisi real dimisalkan saat sepelan-pelannya motor adalah PWM < 30 dan secepat-cepatnya (maju lurus) adalah 250. Saat PV = 8 atau -8 itu tergantung dari kondisi PV sebelumnya, jika PV lebih besar dari 0 maka, nilai PV adalah 8 dan jika PV kurang dari 0 maka nilai PV adalah -8. Kodenya bisa ditulis secara sederhana seperti berikut:

...
    Kp = 1;
    SP = 0;
    MAXPWM = 255;
    MINPWM = 0;
    intervalPWM = (MAXPWM - MINPWM) / 8;

    void scan() {
        switch(sensor) {
            case 0b11111110:        // ujung kiri
                PV = -7;
                break;
            case 0b11111000:
            case 0b11111100:
                PV = -6;
                break;
            case 0b11111101:
                PV = -5;
                break;
            case 0b11110001:
            case 0b11111001:
                PV = -4;
                break;
            case 0b11111011:
                PV = -3;
                break;
            case 0b11100011:
            case 0b11110011:
                PV = -2;
                break;
            case 0b11110111:
                PV = -1;
                break;
            case 0b11100111:        // tengah
                PV = 0;
                break;
            case 0b11101111:
                PV = 1;
                break;
            case 0b11000111:
            case 0b11001111:
                PV = 2;
                break;
            case 0b11011111:
                PV = 3;
                break;
            case 0b10001111:
            case 0b10011111:
                PV = 4;
                break;
            case 0b10111111:
                PV = 5;
                break;
            case 0b00011111:
            case 0b00111111:
                PV = 6;
                break;
            case 0b01111111:        // ujung kanan
                PV = 7;
                break;
            case 0b11111111:        // loss

            if (PV < 0) {
                PV = -8;
            } else if (PV > 0) {
                PV = 8;
            }
        }

        error = SP - PV;
        P = Kp * error;

        MV = P;
        if (MV == 0) { //lurus, maju cepat
            lpwm = MAXPWM;
            rpwm = MAXPWM;
        } else if (MV > 0) { // alihkan ke kiri
            rpwm = MAXPWM - ((intervalPWM - 20) * MV);
            lpwm = (MAXPWM - (intervalPWM * MV) - 15);

            if (lpwm < MINPWM) lpwm = MINPWM;
            if (lpwm > MAXPWM) lpwm = MAXPWM;
            if (rpwm < MINPWM) rpwm = MINPWM;
            if (rpwm > MAXPWM) rpwm = MAXPWM;
        } else if (MV < 0) { // alihkan ke kanan
            lpwm = MAXPWM   ( ( intervalPWM - 20 ) * MV);
            rpwm = MAXPWM   ( ( intervalPWM * MV ) - 15 );

            if (lpwm < MINPWM) lpwm = MINPWM;
            if (lpwm > MAXPWM) lpwm = MAXPWM;
            if (rpwm < MINPWM) rpwm = MINPWM;
            if (rpwm > MAXPWM) rpwm = MAXPWM;
        }
    }

    }
    ...

Nah dengan mengukur seberapa jauh robot menyimpang dari kondisi ideal, sistem kontrol P sudah diterapkan. Output (berupa nilai PWM) didapat dari perhitungan yang melibatkan hanya variabel P = e * Kp. Jika pergerakan robot masih terlihat bergelombang, bisa ditambahkan kontrol Derivative (D). Kontrol D digunakan untuk mengukur seberapa cepat robot bergerak dari kiri ke kanan atau dari kanan ke kiri. Semakin cepat bergerak dari satu sisi ke sisi lainnya, maka semakin besar nilai D. Konstanta D (Kd) digunakan untuk menambah atau mengurangi imbas dari derivative. Dengan mendapatkan nilai Kd yang tepat pergerakan sisi ke sisi yang bergelombang akibat dari proportional PWM bisa diminimalisasi. Nilai D didapat dari: D = Kd * rate, dimana rate = e(n) - e(n-1). Dalam program nilai error (SP – PV) saat itu menjadi nilai last_error, sehingga rate didapat dari error - last_error Untuk menambahkan kontrol D, program di atas dapat dimodifikasi menjadi :

Kd = 0.8;

    ...

    error = SP - PV;
    P = Kp * error;

    rate = error - last_error;
    D    = rate * Kd;

    last_error = error;

    MV = P   D;

    ...

Jika dengan P D sudah membuat pergerakan robot cukup smooth, maka penambahan Integral menjadi opsional. Jika ingin mencoba-coba bisa ditambahakan Integral (I). I digunakan untuk mengakumulasi error dan mengetahui durasi error. Dengan menjumlahkan error disetiap pembacaan PV akan memberikan akumulasi offset yang harus diperbaiki sebelumnya. Saat robot bergerak menjauhi garis, maka nilai error akan bertambah. Semakin lama tidak mendapatkan SP, maka semakin besar nilai I. Degan mendapatkan nilai Ki yang tepat, imbas dari Integral bisa dikurangi. Nilai akumulasi error didapat dari: I = I error. Nilai I sendiri : I = I * Ki. Jika dinginkan nilai MV = P I D, maka program di atas di modifikasi menjadi :

Kd = 0.8;
    Ki = 0.3;

    ...

    error = SP - PV;
    P = Kp * error;

    I = I   error;
    I = I * Ki;

    rate = error - last_error;
    D    = rate * Kd;

    last_error = error;

    MV = P   I   D;

    ...

Keseluruhan source code robot Semar Mesem dapat diunduh di sini. Fitur menu belum sepenuhnya ada, silahkan modifikasi sesuai kebutuhan dan sesuaikan formula untuk lpwm dan rpwm dengan kecepatan motor DC yang digunakan. Video Semar Mesem bisa dilihat di sini dan di sana. Penggunaan PID di Semar Mesem masih sangat sederhana, jika dirasa ada yang salah dengan penggunaan PID atau mungkin cara mendapatkan nilai PWM yang tepat dari MV mohon dishare di sini. Knowledge is Belong to the World.

Update Rangkaian dari Dadank:

Referensi:

PWM Motor DC dari ADC

Kebetulan Mamank lagi buat PI untuk joystick yang mengatur PWM motor DC dari nilai ADC. Rangkaian yang dibuat sebelumnya dibuat tanpa menggunakan microcontroller. Nah sebenarnya kita bisa memanfaatkan microcontroller yang punya fitur ADC internal (seperti ATMega16 atau ATMega8535) untuk mengurangi komponen elektronik. Kebetulan ada yang bertanya lewat email mengenai program untuk ini, jadi sekalian saya jawab lewat posting ini. Rangkaian seperti ini banyak digunakan untuk joystick pengendali robot manual di KRI (Kontes Robot Indonesia). Saya menggunakan ADC0 (PINA.0) yang terhubung ke potensio untuk mengatur PWM motor kiri dan ADC1 (PINA.1) untuk motor kanan. PORTB untuk LCD dan PORTD ke driver motor DC. Rangkaian yang terhubung ke PIN ADC kurang lebih seperti ini :

Nilai R1, R2, R3 dan R4 bisa 180, 220 atau 330 ohm. Resistor tersebut hanya menjaga agar VCC dan GND tidak langsung terhubung saat nilai R1 dan R2 kecil. R1 dan R2 adalah potensio 10k atau 50k. Program sederhananya bisa di download di sini. Saya akan jelaskan sedikit programnya. Karena range nilai adc adalah 1 – 255, maka saya ambil nilai tengah 126 – 128 untuk kondisi motor stop. Saat nilai adc lebih besar dari 128, maka motor akan bergerak maju (cw) dan range 129 – 255 menjadi nilai pengali PWM. Formula sederhananya untuk PWM saat motor bergerak maju adalah ( data_adc - 128 ) * 2. Saat nilai adc kurang dari 126 maka motor akan bergerak mundur (ccw) dan range 1 – 125 menjadi nilai pengali PWM. Formula sederhananya untuk PWM saat motor bergerak mundur adalah 255 - (data_adc * 2). Saya menggunakan interrupt timer 0 dengan overflow untuk PWM motor. Nilai 255 adalah full speed (100%). LCD digunakan untuk mendebug nilai adc dan PWM (paling kiri adalah data untuk motor kiri, baris atas berupa nilai PWM dan status pergerakan motor dan baris bawah adalah nilai ADC0. Sedangkan sebelah kanan adalah data untuk motor kanan). Sesuaikan formula PWM dengan kecepatan motor DC yang ingin digunakan. Pada kasus saya, nilai PWM di bawah 15 sudah membuat motor berhenti. Semoga membantu.

Technocorner 2008

Agak telat menulis sebenarnya, karena saya baru ke kampus hari ini untuk mencari photo yang tercecer di kawan lainnya. Technocorner 2008 yang merupakan lomba robot line follower ini juga diikuti oleh anak bengkel robot gundar. Walaupun saya tidak menjadi peserta, tapi cukup seru menonton lomba robot ini. Semua juara dipegang oleh tuan rumah UGM. Saat saya pertama kali melihat peserta-peserta yang ikut, sepertinya mukanya tidak familiar semua. Oh ternyata mereka juga mantan peserta galelobot 2008 dan KRI/KRCI 2008. Kalau mengikuti galelobot 2008, pastilah kenal dengan juara I dan juara II di technocorner 2008 ini, mereka adalah Robotiko-X dan Mozaem. Photo-photo nya bisa diubek di picasa saya. Untuk anak UNES photonya juga bisa diubek disitu, soal email yang dimaksud saya tidak menemukannya di inbox (kalau mau bisa add YM saya : kotzen86).  Untuk program sederhana PID robot line follower saya bahas pada postingan selanjutnya (kasus robot Semar Mesem).

Acara Perdana KPLI Bekasi

Tanggal 5 Juli 2008, bertempat di SMK Sandikta, berlangsung acara seminar dan workshop Linux fundamental. Acara berlangsung dari pukul 10.00 sampai 17.00. Pembukaan berupa sambutan dari ketua KPLI Bekasi (Pak Yasser) dan Kepsek Sandikta. Lalu dilanjutkan dengan seminar yang dibawakan oleh Anjar Hardiena (perwakilan dari AWALI dan developer distro Linux Zencafe). Setelah selesai seminar, acara selanjutnya adalah layar tancap film Pirates of Silicon Valley sambil dimoderasi oleh saudara Hartato. Anak-anak Sandikta hanya mengetahui tokoh Bill Gates saja, jadi Steve Jobs dan Steve Wozniak memang kalah pamor dikalangan pelajar :mrgreen: . Selesai layar tancap, workshop Linux pun segera dimulai. Karena jumlah peserta yang membludak hingga ribuan (lebay :mrgreen: ), maka workshop dibagi menjadi dua tempat. Sebagian di bengkel TKJ dan sebagian lagi di lab komputer atas. Sebenarnya distro yang ingin dipakai dalam workshop adalah BlankOn 3 (Lontara), tapi pas tester malam sebelumnya instalasi Zencafe lebih cepat (10 – 15 menit) untuk PC di lab yang hampir seragam specnya. Jadi peserta dapat dua modul dan dua CD, BlankOn dan Zencafe (plus bonus CD OpenSUSE untuk yang bisa jawab quiz). Instrukturnya pun instruktur dadakan, yaitu Saya sendiri dan Hartato :mrgreen: . Selain mendapatkan modul dan CD, peserta juga mendapatkan majalah infolinux dan sertifikat. Fiuh, akhirnya acara perdana bisa berjalan cukup lancar. Anggota KPLI Bekasi yang hadir dan membantu terlaksananya acara :

http://gedex.web.id/wp-content/uploads/2008/07/dsc00019.jpg

Dari kiri ke kanan: Saya, Mas Anjar, Pak Yasser, Hartato, Fadli, Adit, Iman

Pertemuan selanjutnya disepakati sekitar bulan September (sambil buka puasa bersama). Diskusi selanjutnya mungkin akan dibahas melalui milist.