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.
1 |
<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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
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
1 2 3 4 5 6 7 8 9 |
{ "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.
1 2 3 4 5 6 7 8 9 |
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
.
1 2 3 4 5 6 |
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
.
1 2 3 4 |
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.
Auf Das Leben! – Untuk Hidup!

Untuk Hidup, Kita Butuh Tujuan. Bahkan seperti lebah di taman, pun mereka punya tujuan hidup. Menyebarkan serbuk sari biar bunga tetap berseri dan bisa dibuat madu darinya.
Dan untuk mempunyai tujuan, kita butuh alasan. Seperti yang tujuannya ingin masuk surga, kemungkinan besar alasannya karna surga itu indah merona semua ada senantiasa bahagia kekal abadi selamanya. Untuk yg ingin kaya pun juga begitu, alasannya bisa karna ingin bahagiakan orang tua lalu pamer harta dan naik martabat di depan teman-temannya. Dan yang rajin bekerja, alasan lebih banyak lagi. Karna tanggung jawab, naik pangkat, naik gaji, dll.
Tanpa alasan, tujuan bakal kabur. Seperti Lene yang kehilangan alasan ketika Nelly memutuskan untuk kembali ke suaminya. Lene yang semula ingin ke Palestina bersama Nelly untuk membantunya menyusun kembali hidupnya pasca menjadi korban perang, memutuskan untuk bunuh diri setelah keputusan Nelly tersebut. Tujuan Lene untuk ke Palestina pun hilang, dan itu adalah satu-satunya tujuan yang ia punya.
Begitu pula dengan Ruth. Pengalaman traumatis semasa kecil dan kisah hidupnya yang membuatnya harus hidup sendiri dan pindah ke sebuah apartemen berujung pada percobaan bunuh diri. Namun beruntung Jonas menemukannya dan membawanya ke rumah sakit disaat yang tepat. Jonas, pemuda yang juga kehilangan tujuan hidup karna menderita penyakit yang membuatnya menjauhi kekasihnya, membantu Ruth untuk alasan kemanusiaan.
Tapi karna tindakannya tersebut, mobil Jonas – yang juga merupakan rumah baginya – dicuri segerombolan anak kecil ketika ia buru-buru membawa Ruth ke dalam rumah sakit. Kini Jonas harus membantu Ruth lebih lanjut agar ia dapat tinggal di apartemennya untuk sementara. Dan Ruth, pun kembali mempunyai tujuan hidup setelah membantu Jonas bertemu kekasihnya dan juga bergabung dengan pasien lain untuk saling membantu di rumah sakit tersebut.
Lene dan Ruth adalah dua kisah diwaktu berbeda ketika kita harus sedikit lebih sabar ketika disudutkan pada kesendirian. Kita hanya butuh waktu untuk kembali menemukan tujuan hidup ketika hilang.
Nelly & Lene : Phoenix (2014).
Ruth & Jonas : Auf Das Leben! (2014).
Fritz Lang’s Metropolis

German Season tahun ini secara resmi dibuka dengan pemutaran film Metropolis karya Fritz Lang. Film buatan 1927 dengan latar tahun 2026 ini diiringi orkestra asal Berlin, Deutsches Filmochester Babelsberg. Film ini diputar di tiga kota di Indonesia, salah satunya tanggal 9 September kemarin di Aula Barat ITB, Bandung.
Dibagian awal gue nonton, gue pikir ini bakal jadi film romansa klasik antara kaum si kaya dan di miskin. Tapi setelah nonton lebih jauh, ternyata konflik yang diangkat justru lebih berat. Bahkan lebih berat dari Tukang Bubur Naik Haji. 😅
Pemeran utama adalah Freder, anak laki-laki dari si Kaya yang jatuh cinta pada Maria yang berasal dari kaum buruh. Karna penasaran, Freder turun ke kota buruh dan bertukar posisi dengan salah satu buruh disana. Singkat cerita, Freder bertemu Maria.
Maria yang percaya bahwa suatu saat nanti akan datang perantara antara kaum atas dan kaum buruh, melihat setitik harapan Pada Freder. Namun hal itu sudah terlambat. Pertemuan mereka diketahui oleh ayah Freder dan Rotwang, seorang penemu gila. Rotwang menculik Maria, lalu membuat robot yang menggunakan wajah Maria. Robot itulah yang kemudian menghasut kaum kaya dan kaum buruh. Kaum kaya berpesta pora, sedangkan kaum buruh berontak dan merusak jantung kota.
Karna mengangkat isu-isu sosial seperti itulah, film ini pada masanya ditahan oleh pemerintah. Hingga berpuluh-puluh tahun kemudian, setelah perang dunia kedua, film ini ditemukan dan disusun kembali dan diolah menyerupai aslinya meskipun tidak sempurna 100%.
Film ini jadi semakin menarik dengan live orkestra dari Filmochester Babelsberg. Gue takjub dengan permainan mereka yang konsisten selama dua jam. Bahkan banyak yang ketiduran di lokasi nonton saking syahdunya. 😂

Robot Maria
Film dengan genre science-fiction ini otomatis jadi film paling tua yang pernah gue tonton selama ini. Dan kabarnya ini adalah film pertama yang memuat robot. Di jaman dimana listrik sepertinya hanya digunakan untuk lampu dan telepon, mereka sudah memikirkan robot. Dan bahkan robotnya menjadi inspirasi C-3PO nya StarWars.
Referensi lebih lengkap tentang film ini bisa dibaca di Wikipedia. 😇
Javascript Google Drive API Library

Percayalah, google sudah sangat baik membuat banyak servicenya dapat diakses oleh para developer. Ditambah dengan dokumentasi yang komplit dan lengkap. Dengan tambahan sample code yang mudah dipahami dan di copy paste.
Tapi memang, sudah kodratnya manusia, yang tak pernah puas akan semua anugrah yang diberikan, dan selalu berharap akan kemudahan-kemudahan. Oleh karena itu, gue meringkas beberapa fitur yang paling sering digunakan di Google Drive API kedalam satu buah library kecil yang gue letakkan di github.
Semoga berkenan, dan bermanfaat bagi umat https://github.com/afief/GDriveJS
Silakan di fork, lalu kita sama-sama making the world a better place.
Minimarket Bebas Parkir

Hidup di jaman di mana hampir semua hal bisa jadi uang, sulit untuk cari minimarket yang bebas parkir. Minimarket yang dulu jadi andalan karna bebas parkir, kini sudah tak gratis lagi. Padahal sebelumnya adem ayem, jarang ada masalah sama motor yang parkir.
Memang sih, tempat parkir juga punya pajaknya (PBB, Pajak Bumi dan Bangunan). Tapi kalau sudah jelas-jelas tertulis “Parkir Gratis”, masak iya masih minta bayaran. Masih mending kalau ngasih efek positif. Jaminan jika motor hilang, atau kasih fasilitas kardus biar gak kepanasan. Kalau keberadaannya cuma nguras gocek di saku mah, ngapain. Seribu itu emang sedikit, tapi kalau sering, dan kalau di saku cuma ada duaribuan selembar, ya jadi bukit.
Ngoding di Jakarta Asik Juga

Jakarta panas, iya. Macet ya. Tapi kalo ngoding kan gak di jalan, di luar sambil papanasan.