Jadi Fasilitator di Indonesia Android Kejar

Google melalui Google Developers akhir tahun ini mengadakan Google Indonesia Android Kejar (page). Sebagai sarjana kurang ngajar dan developer yang pertengahan Oktober lalu sudah tidak di Inmotion lagi, gue gabung sebagai fasilitator.
Ini jadi pengalaman baru dan berbeda setelah sekian lama gak berada di depan kelas. Kalau di kesempatan lain diundang untuk mengisi workshop dengan kelas yang sudah disediakan, peserta yang jumlahnya sudah fix, dan amplop (ehem) yang jumlah isinya belum pasti namun bisa dipastikan ada isinya. Disini, setiap fasilitator mencari dan mengkoordinasi tempat untuk offline study group, menghubungi peserta untuk join di group whatsapp dan standby dengan problem mereka, serta sedari awal disebutkan rewardnya tidak disebutkan dalam mata uang.
Namun apa yang gue dapet disini jelas gak bisa dibandingkan dengan menjadi fasilitator di tempat lain pada tahun-tahun sebelumnya. Di program ini, gue yang lebih banyak bersentuhan dengan teknologi web, mau gak mau harus belajar Android Studio dengan java-nya yang amat kental. Dengan begitu, motifasi gue sejak tahun 2011 belajar development native android sedikit dipaksakan dan itu bener-bener berhasil bikin gue fasih dan pede untuk lebih dalem di development native android.
Sebelumnya, gue lebih banyak membuat dan mempublish aplikasi mobile dengan Ionic Framework ke playstore. Hanya ada satu aplikasi yang gue develop dengan Android Studio, aplikasi untuk event Google MakeTimeFly (contoh hasilnya) yang di develop selama dua minggu. Sebenernya gue cukup puas dengan aplikasi itu, namun karna waktu development yang cukup singkat, gak banyak konsep dasar yang gue pelajari.
My Spotify Playlist

Satu lagi yang menarik dari Spotify, Recomended Songs. Ketika membuat playlist, di bagian bawah daftar lagu playlist itu bakalan ada daftar lagu yang setipe. Gak jarang lagu-lagu itu juga asik dan cocok. Salah satu playlistnya yang gue buat disini
Playlist Kamis : Short Change Hero

Playlist Kamis minggu ini gue pilih Theme-Songnya Borderlands 2, Short Change Hero. Short Change Hero ada pada album The House That Dirt Built yang di release oleh Band Indie Rock asal Inggris, The Heavy. The Heavy sendiri merelease album pertamanya Tahun 2007 dengan genre Neo Soul.
Selain digunakan di Borderlands 2, Short Change Hero juga ada di trailernya Batman: Arkham City dan TV Serial Suits.
[soundcloud url=”https://api.soundcloud.com/tracks/30980670″ params=”auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&visual=true” width=”100%” height=”450″ iframe=”true” /]
Playlist Kamis : Supermassive

Supermassive. Band dari California Utara. Album barunya, major major, berisi 12 track yang enak di telinga. Satu lagu yang membuat gue suka dengan album ini adalah sittin here. Temponya pas buat mencegah kantuk sembari ngoding.
Lagu ini pertama gue denger dari video Strormtrooper mainan Longboard.
[soundcloud url=”https://api.soundcloud.com/tracks/231557588″ params=”color=0066cc&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false” width=”100%” height=”166″ iframe=”true” /]
Info lebih detail tentang band ini dan 11 lagu lainnya bisa dibuka di supermassiveandfriends.com.
Mendadak Liburan
Kelamaan merancang liburan biasanya justru membuat liburanya batal. Jadi, paling aman adalah siapkan tabungan, lalu pergi liburan saat diinginkan.
Ionic Side Menu dan Dokumentasi

Satu hal yang membosankan ketika ada teknologi baru yang belum dipelajari adalah membaca dokumentasi. Banyak programmer nemu masalah dan berakhir di stackoverflow. Padahal jawaban dari pertanyaan yang ada ujung-ujungnya juga kembali ke dokumentasi.
Salah satunya Ionic Side Menu. Berjuang membuat ukuran lebar side menu yang dapat dikostum dengan membuat javascript sendiri untuk override fungsi di ionic. Tapi ternyata fungsi untuk mengubah ukuran dapat dilakukan dengan satu baris tambahan perintah, width.
<ion-side-menu side="left" width="80">
Lesson Learned : Baca Dokumentasi
Hadapi dengan tegar, atau menyerah pada kegelapan

Rabu lalu gue tumbang. Pulang pergi Bandung – Padalarang tiap hari ditambah load kerjaan cukup banyak membuat gue harus istirahat total di Hari Kamis. Dan Alhamdulillah, Jumat gue udah fit kembali dan siap untuk menerjang jalanan menuju Dayeuhkolot demi GDGPrime.
Namun, alam semesta punya cerita lain. Diturunkan hujan di hari ini, anugrah tiada tara. Hujan yang ditunggu sejak lama meskipun membuat gue terhambat lalu batal hadir ke acara. Dan sore ini pun tetap mengantar sang nona mengajar.
Baru genap sehari bugar, sudah siap menerjang hujan. Kini semua terserah gue. Hadapi dengan senyuman tegar, atau menyerah dan mengutuki kegelapan.
ヾ(⌐■_■)ノ Kini, saatnya jemput istri.
Mencoba Grunt : The Javascript Task Runner
Bertahun – tahun berinteraksi dengan Javascript, akhirnya kemarin gue coba Grunt. Awalnya gue skeptis, namun setelah melihat banyaknya repository projek-projek bermaanfaat di Github yang menggunakan Grunt, gue luluh. Ada dua hal yang gue butuhkan dari grunt. Concatenation & Minification.
Tujuan utama dari Grunt adalah automation. Sama seperti tujuan dasar programming, to automate processes. Sebelum menggunakan Grunt, gue menggabungkan beberapa file javascript secara manual, lalu mengkompresinya melalui http://jscompress.com/. Gue melalukan hal itu karna dulu gue pikir proses itu hanya dilakukan pada tahap selesai development. Proses manual yang cukup panjang itu tidak begitu terasa karna hanya dilakukan sekali, ketika upload ke server publik. Tapi nyatanya, revisi tetap membutuhkan update. Dan gue harus melakukan proses itu ketika ada update ke server.
Dengan Grunt, gue bisa mengautomasi penggabungan beberapa file javascript kemudian mengkompresi ukurannya sehingga ready untuk distribusi. Yang dibutuhkan oleh grunt, hanyalah file package.json dan gruntfile.js. Mendefinisikan dua file tersebut memang cukup memakan waktu. Tapi proses tersebut hanya dilakukan sekali. Selanjutnya, otomatis!
Untuk mempermudah proses development. Gue membuat template untuk concatenation & minification. Template ini bisa digunakan untuk projek lain, hanya perlu mengganti beberapa parameter pada gruntfile.js.
module.exports = function(grunt) { // Project Configuration grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), concat: { options: { separator: ';' }, dist: { src: ['js/*.js'], dest: 'build/<%= pkg.name %>.js' } }, uglify: { build: { src: 'build/<%= pkg.name %>.js', dest: 'build/<%= pkg.name %>.min.js' }, } }); // Load the plugin that provides the "uglify" task grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-uglify'); // Default task(s) grunt.registerTask('default', ['concat', 'uglify']); };
Di dalam `grunt.initConfig`, gue mendefinisikan parameter `pkg`, parameter ini berisi objek yang diambil dari file package.json. Di dalam file package.json berisi
{ "name": "vlp-js", "version": "0.1.0", "devDependencies": { "grunt": "~0.4.5", "grunt-contrib-concat": "^0.5.1", "grunt-contrib-uglify": "~0.5.0" } }
Selanjutnya, gue coba paparkan penjelasan beberapa baris kode pada gruntfile.js.
concat: { options: { separator: ';' }, dist: { src: ['js/*.js'], dest: 'build/<%= pkg.name %>.js' } },
Parameter `concat` berisi konfigurasi untuk menggabungkan beberapa file. Didalamnya terdapat parameter `options`, lalu `separator`. `separator` berisi string pemisah antar file ketika disatukan. Gue mengisi `;` agar tidak terjadi error kalau ternyata pada baris terakhir setiap file ada yang tidak diberi titik koma. Lalu terdapat parameter `dist` yang maksudnya adalah ‘distribusi’ berisi `src` dan `dest`. `src` merujuk pada file-file yang akan digunakan. Pada contoh diatas gue menggunakan asterik untuk menyeleksi semua file .js pada folder js. `dest` merujuk pada nama file gabungan dari setiap javascript tersebut. `<%= pkg.name %>` akan merujuk pada nama projek yang didefinisikan pada file `package.json`.
uglify: { build: { src: 'build/<%= pkg.name %>.js', dest: 'build/<%= pkg.name %>.min.js' }, }
Selanjutnya, `uglify`. Cara kerjanya adalah menghapus newline pada file dan membuat beberapa nama variabel menjadi lebih pendek. Dengan begitu, ukuran file javascript pun akan menjadi lebih kecil. Pada parameter ini, kita mengatur sumber file pada parameter `src`. Dan nama file setelah diminifikasi pada parameter `dest`.
grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.registerTask('default', ['concat', 'uglify']);
Baris kode diatas berguna untuk me-load plugin yang akan digunakan, lalu menggunakannya pada fungsi `registerTask`.
Sebelum menjalankan grunt, jangan lupa install semua dependensinya dengan perintah `npm install`
Jalankan `grunt`, dan cek folder build. Akan ada dua file. File hasil gabungan, dan file gabungan yang sudah diminifikasi.
Banyak maunya

Gue pernah denger ejekan “orang miskin banyak maunya”. Gue sedikit setuju dengan hal itu, kecuali soal miskin. Karena, anonim dari miskin adalah kaya. Dan orang kaya juga terkadang banyak maunya. Oke, kalimatnya gue ganti jadi “orang yang kekurangan, lebih banyak maunya.”
Logikanya, orang yang berkecukupan, akan segera mendapatkan apa yang dia pengen. Pengen baju baru, segera beli. Pengen mobil baru, segera ada. Pengen beli game baru, segera klik, bayar, dan main. Kaum ini gak punya wishlist di steam yang menumpuk, karna setiap nemu game bagus, punya cukup kredit buat beli.
Sedangkan yang kekurangan. Pengen baju baru, masukin wishlist. Pengen mobil baru, masukin wishlist. Pengen game baru, masukin wishlist. Ketika akhirnya ditanya maunya apa, munculin wishlist panjang. Dan begitulah, orang yang kekurangan, lebih banyak maunya. Sedih, ya? Eh, Ada yang mau ngasih Intel Galileo, gaes? ?
sekian.
Distraksi programmer ketika ngoding

Programming adalah pekerjaan yang tenaganya 90% dihabisnya untuk berfikir. Sisanya tentu untuk menggerakkan jari di papan ketik, menggerakkan tetikus, atau menggerakkan badan untuk membuat kopi. Oleh karna itu, pikiran yang jernih jadi aset paling berharga untuk para programmer.
Tak jarang, di banyak lowongan pekerjaan untuk programmer, kompetensi yang diperlukan tertulis “Mampu Bekerja Dibawah Tekanan”. Menggelitik. Memang tak salah dengan kalimat tersebut. Suka-suka si pencari programmer. Namun perlu dipahami. Bahwa dengan tekanan, kualitas kode justru akan berkurang. Ibarat ban bocor lebar yang ditambal dengan kualitas rendah. Rentan. Padahal, jangankan dengan tekanan. Dengan distraksi sedikit saja, bisa membuyarkan konsentrasi yang ujungnya ke produktifitas.
Hal paling nyaman ketika ngoding adalah ketika fikiran nyaman, tanpa distraksi, dan fokus pada kode yang ditulis. Ketika programmer sedang in the flow, setiap baris kode akan berada di dalam kontrol. Kualitas kode akan terjaga dan memuaskan. Disitulah keadaan dimana ngoding bisa menjadi sebuah hobi yang menyenangkan.
Sayangnya, keadaan tersebut sulit untuk dicapai. Tak hanya bagi programmer kantoran, tapi juga bagi para freelancer. Bagi yang ngoding di kantor, tak jarang ada programmer lain yang tiba-tiba bertanya perihal masalahnya, atau projek yang sedang digarap bersama. Belum lagi masalah meeting, makan siang, urusan aset, dll. Begitu juga freelancer, email yang masuk tiba-tiba, godaan facebook, distraksi dari orang rumah, tentu bisa menjadi gangguan tersendiri.
Distraksi-distraksi tersebut tentu sulit untuk dihindari. Namun, setiap programmer punya siasat tersendiri untuk hal-hal tersebut. Berikut gue coba tulis tips en trik versi gue :
Fokus
Fokus jadi hal paling sulit untuk dilakukan. Apalagi kalau sedang berperan sebagai full-stack developer. Sering ketika sedang mengerjakan back-end dengan PHP, harus membuka kembali bagian front-end yang mana adalah Javascript. Lalu muncul error karna memasukkan kode PHP di dalam Javascript.
Tentukan Goal
Hal ini menjadi sangat penting terutama ketika sedang bekerja secara berkelompok. Atur tujuan yang jelas, lalu bagi sejelas mungkin. Sehingga ketika harus kembali ke komputer dan mengerjakan kode masing-masing, frekuensi partner kembali bertanya secara tiba-tiba tentang projek akan berkurang (yah, meskipun tidak hilang sama sekali).
Singkirkan Distraksi
Twitter stream, halaman facebook, notifikasi email, notifikasi chatting whatsapp, akan sangat mengganggu. Matikan / mute untuk sementara.
Pastikan tugas yang dikerjakan menyenangkan
Untuk kasus dimana programmer punya pilihan untuk menentukan tugas yang diemban, ini menjadi hal yang cukup penting. Misal gue sendiri, lebih suka mengerjakan model dan controller ketika membuat projek web ketimbang mengerjakan hal-hal yang berkaitan langsung dengan tampilan. Hal tersebut akan membuat gue lebih jarang memindahkan tangan ke tetikus dan lebih fokus ke ngoding.
Demikian tips dari gue, yang kadang gue sendiri gak lakukan ?. Yang terpenting adalah jaga kesehatan. Sedikit sakit bisa mengganggu konsentrasi, terutama jika sakit gigi.