Afief Yona Ramadhana

Full Stack Web/App Developer

Web Developer yang gemar bermain dengan javascript dan HTML5. Namun sesekali bercanda dengan Unity dan C#. Menulis blog untuk meninggalkan jejak sebagai manusia biasa.
18 Dec 2015
Capture

Error Handling Demi Kemaslahatan Umat

Sore ini di timeline nemu berita mengejutkan. Tentang seorang guru yang meninggal akibat serangan jantung setelah pekerjaannya input rapor online hilang ketika dicek satu persatu.

Kalo dilihat dari sisi korban, mungkin korban sedang terlalu lelah hingga hal itu bisa terjadi. Itu memang musibah. Tapi, dari sudut pandang gue sebagai developer, ada hal-hal kecil yang sebenarnya bisa ditangani agar kejadian tersebut (input rapor online hilang) tidak terjadi.

Kejadian tersebut ngingetin gue ke program try-out online yang diadakan secara offline di sebuah kampus. Gue diundang dosen buat bantu acara tersebut, tapi bukan sebagai developer yang mengembangkan aplikasi web onlinenya, tapi hanya bantu-bantu guide siswa peserta untuk menggunakan web tersebut.

Ada satu kesalahan fatal di aplikasi web tersebut. Data jawaban dari soal-soal yang dikerjakan siswa dikirim dengan method POST melalui element FORM HTML biasa yang membuat halaman aplikasi web akan terefresh ketika melakukannya.

Dua tiga siswa berhasil input jawaban ke server dan mendapatkan skor. Tapi sisanya, karna kebanyakan siswa selesai bersamaan, BOTTLENECT!. Data siswa gagal terkirim ke server. Dan karna method pengirimannya membuat halaman terefresh, maka muncul halaman browser kosong. Ketika tekan tombol back, form jawaban kebanyakan siswa hilang. Banyak siswa panik. Try-Out kacau. Developernya pusing. Gue pulang :)

Dari dua kejadian itu, satu hal yang harus benar-benar diperhatikan oleh developer. Error handling. Hal tersebut harus jadi prioritas bagi developer. Kapan kira-kira aplikasi akan error karna kesalahan koding, atau karna user error.

Dari kasus gue misalnya, developer bisa handling data siswa dengan menyimpannya di localStorage. Lalu pengiriman data menggunakan AJAX secara berkala sehingga tidak membutuhkan refresh user. Dengan menyimpan data di localStorage, bahkan bila terjadi hal yang tidak diinginkan seperti batre laptop mati, ketika laptop dihidupkan kembali, data masih bisa di restore.

17 Dec 2015

Le Petit Prince – Suis Moi

Playlist Kamis kali ini jatuh ke Suis Moi. Salah satu soundtrack dari film Le Petit Prince. Le Petit Prince adalah sebuah film animasi yang diadaptasi dari novel dengan judul yang sama.

Meskipun seperti film anak-anak, tapi film ini justru lebih mengena bagi orang dewasa yang menontonnya. Pesan moral paling ngena bagi gue dari film ini adalah, jangan pernah lupa dan melupakan ketika tumbuh dewasa. Di beberapa adegan sendiri gue sempet beberapa kali nyesel udah grow up. Tapi asalkan masih punya impian setinggi bintang dilangit, dan imajinasi yang sanggup melawan arus kehidupan yang monoton, harus tetap semangat dan jangan pernah melupakan masa kecil. halah. begitulah.

10 Dec 2015
5-1-1399210763

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.

03 Dec 2015
12141998_552559428229923_1846756801_n

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.

Info lebih detail tentang band ini dan 11 lagu lainnya bisa dibuka di supermassiveandfriends.com.

01 Dec 2015

Mendadak Liburan

Mendadak Liburan ~ #waterpark #garut

Video kiriman Afief Yona Ramadhana (@afynr) pada

Kelamaan merancang liburan biasanya justru membuat liburanya batal. Jadi, paling aman adalah siapkan tabungan, lalu pergi liburan saat diinginkan.

12 Nov 2015
ezgif-4031835661

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 stackoverflowPadahal 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.

Lesson Learned : Baca Dokumentasi

07 Nov 2015
11931165_479986892180432_1217381571_n

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.

30 Sep 2015

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.

Di dalam grunt.initConfig, gue mendefinisikan parameter pkg, parameter ini berisi objek yang diambil dari file package.json. Di dalam file package.json berisi

Selanjutnya, gue coba paparkan penjelasan beberapa baris kode pada gruntfile.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.

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.

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 installCapture

Jalankan grunt, dan cek folder build. Akan ada dua file. File hasil gabungan, dan file gabungan yang sudah diminifikasi.

Capture2Selesai. :)

18 Sep 2015
afiefnet

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.

16 Sep 2015
Distraksi Programmer. Dont bother the coder - Commitstrip

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.

14 Sep 2015
Auf Das Leben!

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).

13 Sep 2015
IMG_20150909_234736

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. 😇