Minggu, 07 Desember 2014

Momen Penting Dalam Hidup

Hai! Pada saat hari ulang tahunku di tahun ini, seseorang berkata ini kepadaku, "you should be happy. it's your birth day. it is an important day.".  Baru belakangan ini aku sadar bahwa aku merupakan orang yang menganggap hari ulang tahun diriku sendiri bukan merupakan hari yang penting. Biasanya, hari ulang tahunku seperti hari biasa dengan ditambah beberapa teman dan keluargaku mengucapkan selamat ulang tahun. Akan ada kue dan hadiah seperti biasa, tapi dari diriku sendiri, aku tidak merasa ada yang berubah. 

Aku lebih merasa acara makan siang atau malam bersama teman, sekitar 2-5 orang, di hari apapun jauh lebih berharga dari hari ulang tahunku. Kami berbicara banyak tentang kehidupan dan pengalaman kami. Berbagi lelucon yang kami ketahui. Bertukar pikiran. Saling menceritakan prinsip hidup. Atau bahkan pergi jalan-jalan bersama. Kalau dibandingkan dengan hari ulang tahun, jauh banget men. Gak perlu hari penting buat bikin momen.

Perjalanan Ke Bromo
Selain momen bersama teman, bekerja pun menjadi momen yang sangat menyenangkan. Pekerjaanku yang menjadi seorang insinyur perangkat lunak(software engineer) sangat membuatku bertumbuh dan senang. Setiap hari, aku bekerja untuk terus mengembangkan hal baru yang bertujuan untuk membantu kepentingan orang banyak. Aku tidak terlalu peduli dengan karir, yang penting aku fokus ke tujuanku dan aku senang melakukannya. :). 

Walaupun aku tidak menganggap ulang tahunku penting, aku sangat berterima kasih kepada teman dan keluarga yang mengucapkan selamat ulang tahun kepadaku. :). #senang. Terima kasih semuanya. Mari kita buat momen-momen lagi sekarang. :D.


Sabtu, 11 Oktober 2014

Pemanis Mata Saat Menulis Kode

Pada saat menulis kode, tentunya saya akan melihat ke layar sebuah editor teks dalam waktu yang sangatttt lama. Mungkin dalam satu hari, minimal sekitar 6 - 8 jam. Karena saya berpengalaman dalam desain amatiran pada saat kuliah, mata saya cukup sensitif terhadap tipe font dan warna yang digunakan. Oleh karena itu, pemilihan font dan warna kode sangat berpengaruh terhadap efektivitas penulisan kode saya :D. Dengan pemilihan font dan warna yang tepat, aktivitas menulis kode menjadi hal yang sangat menyenangkan. XD.

Mari mulai membahas dari pemilihan warna. Dari penggunaan sehari-hari, saya menggunakan Sublime Text sebagai teks editor saya. Skema warna dari Sublime Text yang awal adalah Monokai. Preview di editor saya bisa dilihat di gambar di bawah ini.

Monokai
Monokai

Skema warna Monokai sangatlah ringan dan manis di mata. Wajar saja kalau skema ini menjadi standar yang digunakan di Sublime Text. Dengan warna kode yang cerah, kontras dengan latar belakangnnya membuat kode mudah dibaca. Lalu, terkait warna setiap istilah di kode seperti kelas, obyek, string, dan statement haruslah menggunakan warna yang berbeda agar mudah dibedakan. Untuk saya, warna untuk setiap elemen kode itu harus berbeda. Walaupun jenis warnanya jadi sangat banyak, kode jadi mudah dibedakan. Skema warna yang sedang saya gunakan adalah Tomorrow dan Zenburn. Berikut contoh kodenya.


Tomorrow
Tomorrow

Zenburn
Zenburn
Kedua Skema warna tersebut sangat cocok dengan kebutuhan saya. Level kontras yang cukup tinggi, warna yang berbeda di hampir setiap elemen kode, dan warna yang tepat bagi mata saya untuk dilihat berjam-jam. Level kontras Zenburn sedikit lebih rendah daripada Tomorrow, tetapi pilihan warnanya Zenburn lebih manis. 

Selanjutnya, saya akan menunjukan tipe font yang saya gunakan pada saat menulis kode. Saya cukup banyak bereksperimen terhadap font yang saya gunakan karena saya sadar bahwa pemilihan font sangat berpengaruh terhadap efektivitas penulisan kode. Dengan font yang tepat, saya merasa mata saya lebih efektif dalam bekerja. Tentu saja font-font yang saya gunakan dalam menulis kode bersifat monospace yaitu setiap font mempunyai lebar yang sama. Font pilihan pertama saya adalah Inconsolata.

Grumpy wizards make toxic brew for the evil Queen and Jack.

Cukup mirip dengan TheSansMono, font ini memberikan rasa yang jauh berbeda daripada font-dont biasa yang digunakan editor teks yang standar seperti Couriew New dan Consolas. Dengan klasifikasi Humanist, Inconsolata membuat kode jadi jauh lebih mudah dibaca dan jelas. Font pilihan kedua saya adalah Source Code Pro.

Grumpy wizards make toxic brew for the evil Queen and Jack.

Kalau Inconsalata memberikan kenyamanan mata pada sisi keterbacaan dan kejelasan, Source Code Pro memberikan kesan cantik pada kode. Membuat saya tahan melihat kode berjam-jam. Kelebihan Source Code Pro selain kecantikannya adalah mudah dibaca. Beberapa font yang relatif cantik itu kebanyakan tidak mempunyai keterbacaan sebaik Source Code Pro. Jadi, inilah pilihan warna dan font saya. Semoga Anda juga bisa mencari pasangan yang tepat sebagai pemanis mata saat menulis kode. :D


Minggu, 28 September 2014

Shellshock, Bug yang Lebih Berbahaya Daripada Heartbleed




Bagi para admin sistem yang tugasnya merawat server, tentunya ini menjadi minggu yang sangat sibuk. Sebuah bug yang baru ditemukan telas dipublikasin dan diperkirakan semua server yang menggunakan "Bash", rentan terhadap peretasan. Bash merupakan sebuah interpreter yang banyak digunakan OS distro Linux untuk mengatur hampir semua sumber daya yang ada di komputer tersebut. Bug tersebut membuat para peretas bisa mengeksekusi kode Bash dari jauh dan tanpa otentikasi. Kenapa lebih berbahaya dari heartbleed? Karena jumlah komputer yang menggunakan Bash sangatlah lebih banyak dan bug ini memberikan akses yang lebih besar pada peretas daripada Heartbleed.

Tentunya pertanyaan terbesar, bagaimana caranya mengakses server yang kita sendiri tidak punya informasi untuk masuk ke sana. Jadi, bug ini memanfaatkan perintah  ForceCommand yang terdapat di Web server Apache yang dapat digunakan untuk menjalankan perintah di sebuah server melalui skrip CGI. Nah, contohnya adalah header HTTP request berikut.

http-header = Cookie:() { :; }; ping -c 3 209.126.230.74
Bug shellshock adalah kesalahan pada bash yang mengeksekusi string yang ada setelah definisi sebuah fungsi sebagai perintah Bash yang valid. Tentunya, celah ini sangat berbahaya karena jika seorang peretas berhasil mempunyai akses terhadap bash di suatu server, artinya peretas tersebut dapat melakukan apapun terhadap server tersebut. Coba jalankan perintah di bawah untuk mengecek apakah server Anda juga terkena bug Shellshock.

env x='() { :;}; echo rentan' bash -c "ini adalah test"

Jika kode tersebut menghasilkan "rentan" artinya Anda pun ikut terkena bug Shellshock ini. Bisa dilihat "echo rentan" itu merupakan string setelah deklarasi fungsi kosong "() { :;};". Ada beberapa solusi yang dapat digunakan untuk menutup lubang keamanan tersebut. Salah satunya dengan menghilangkan akses skrip CGI untuk melakukan pemanggilan fungsi ke sistem bash. Selain itu, cara yang lebih simpel adalah dengan menginstall Bash yang terbaru dengan perintah berikut di server Linux yang berbasis debian.

apt-get update; apt-get upgrade;
Beberapa tambalan kode yang pertama ternyata gagal menghilangkan bug Shellshock secara penuh. Oleh karena itu, selalu siapkan diri Anda untuk memperbarui Bash Anda dalam beberapa hari atau minggu ke depan secara rutin. Informasi lengkap terkait Shellshock bisa dilihat di sini. Semoga membantu. :)

Selasa, 23 September 2014

Library Python Pertama: django-naomi

Setelah hampir 3 tahun menggunakan Python, akhirnya saya merilis secara publik pustaka pertama saya. :). Dengan menjadi pustaka publik, semua orang bisa menggunakannya dengan sesuka hatinya. Pada awal penggunaan Python, saya rasa sulit sekali mencari celah untuk menulis sebuah pustaka baru. Seakan-akan Python atau komunitasnya sudah membuatkannya untuk saya. Semakin lama saya menggunakan Python, semakin sadar pula bahwa celah-celah itu semakin besar dan banyak. Tentunya, jiwa open-source saya semakin terbakar melihat kesempatan ini. 

Pustaka yang saya tulis, bernama django-naomi. Merupakan pustaka yang memudahkan untuk men-debug email saat menggunakan Django. Kalau dalam kasus biasanya, email akan terkirim ke alamat email yang dituju, django-naomi akan membuat email tersebut langsung muncul di web browser sehingga memudahkan untuk melihat hasil email. Membuat pada pengembang web tidak perlu menggunakan SMTP server untuk melihat hasil pengiriman email. Pustaka ini merupakan hasil inspirasi dari pustaka letter-opener. Sebuah pustaka yang menghasilkan efek yang sama namun, dalam bahasa pemrograman Ruby.

Sampai sekarang, kegunaan pustaka django-naomi hanya begitu saja. Memudahkan dalam men-debug email. Saya memegang prinsip bahwa sebuah library pembantu itu sebaiknya cukup satu fungsi yang utama dan lakukan itu dengan baik. Tentunya, django-naomi belum sempurna, masih ada beberapa fungsionalitas yang belum bekerja dengan baik contohnya belum bisa menampilkan attachment pada email. Tapi tentunya ini merupakan awal untuk django-naomi. Tunggulah perkembangan-perkembangan selanjutnya dari django-naomi. :D


Jumat, 12 September 2014

Ulasan ASUS UX32VD

Halo semuanya, akhir-akhir ini saya merasakan, pentingnya sebuah Ulasan terhadap suatu barang. Saat saya ingin membeli suatu barang, pergi ke restoran, ataupun menggunakan sebuah jasa dari tempat tertentu, saya dengan pasti akan mencari ulasan terkait jasa atau barang tersebut secara online. Sayangnya, ulasan-ulasan dalam bahasa Indonesia tersebut masih sangatlah jarang. :(. Padahal, ulasan yang tepat pada suatu barang akan sangat berpengaruh terhadap hidup seseorang. Oleh karena itu, saya akan mulai membudayakan memberikan ulasan terhadap semua barang yang saya gunakan. Mulai dari Laptop saya. Yuk, langsung mulai saja.



Laptop saya merupakan ASUS UX32VD. Saya membelinya 2 tahun yang lalu dan sampai sekarang belum ada masalah yang berarti. Hanya saja, pas saya membeli, beberapa hari kemudian hardisknya bermasalah. Namun, setelah saya bawa ke service center ASUS, sampai sekarang tidak ada masalah. Enaknya dengan laptop ini, ringan, mudah di bawa ke mana-mana.

Terkait dengan performa, adanya SSD 32GB sangat membantu proses booting. Saat saya membandingkan kecepatan boot saya dengan leptop teman saya yang prosesornya lebih baik, laptop ini masih jauh lebih cepat. Kalau untuk performa game, NVIDIA 620 memberikan kesempatan untuk bermain game-game yang tidak beban grafisnya tidak terlalu berat. DotA 2 dengan setting mendekati medium masih kuat. Sayangnya, saat membuka cukup banyak aplikasi, sudah mulai terasa lag. Saya rasa karena prosesornya, bukan karena memorynya yang tidak cukup. Dengan intel i5 versi low voltage, kekuatan memprosesnya memang tidak terlalu kuat, tapi lebih dari cukup untuk melakukan banyak hal.

Saya akui, monitor di UX32VD sangatlah bagus. Resolusinya memang belum full-HD(1080p), tetapi kualitas gambar dan layar monitor bukan terkesan plastik seperti monitor laptop lainnya.

Untuk suara, jika dibandingkan dengan leptop yang lain dengan harga yang mirip, volume maksimal laptop ini sedikit lebih besar. Untuk kualitas suara, tampaknya tidak jauh berbeda. Kalau untuk suara, saya merekomendasikan menginvestasikan untuk membeli headphone yang bagus. 

Untuk kamera, standar, tidak terlalu jelek, tidak terlalu bagus. Cukup untuk melakukan video call dengan kualitas yang rendah.

Terkait touch pad, standar, tidak terlalu berbeda dengan touch pad laptop lain. USB portnya pun baik, namun, dari 3 USB port yang ada, saya merasa ada 1 USB port yang performanya paling baik. Setiap kali mencolok ke port itu, hampir selalu berhasil, sedangkan port yang lainnya tidak. Audio port masih berjalan dengan baik sampai sekarang. Mungkin salah satu kerurangan leptop ini adalah tidak ada port VGA. Jadi, untuk presentasi, harus membawa converter VGA ke port lain(Seperti Mac Book).

Salah satu fitur dari latop ini yang aku rasa sangat membantu adalah ada backlit LED di keyboard yang membuat saya tetap bisa melihat keyboard walaupun saat gelap.

Lalu, saat saya menginstal OS Ubuntu, semua function keys berjalan dengan lancar. Padahal, ada teman saya yang mempunyai laptop ASUS dan saat menginstal Ubuntu, beberapa tombolnya tidak jalan. :). Baterai pun sudah berjalan 2 tahun tapi masih bagus. Tahan 1 jam lebih untuk bekerja saat penuh. Chargernya pun belum pernah rusak sampai sekarang.

Jadi, pengalaman saya menggunakan ASUS UX32VD sangatlah baik dan saya sangat mempertimbangkan untuk menggunakan produk ASUS lagi untuk leptop saya yang selanjutnya. Mungkin ulasan ini memang telat, tapi ini sebagai awal untuk saya mengulas barang dan jasa yang pernah saya gunakan. Tunggu ulasan-ulasan saya yang berikutnya. :D

Senin, 25 Agustus 2014

Harapan Pendidikan Indonesia

Tampaknya ini merupakan post pertama saya yang akan menggunakan bahasa Indonesia. Setelah sekian lama dalam pengembangan, saya menyatakan bahwa kuliahkita.com sudah dirilis! Yap, tentunya saya sadar kalau ini barulah awal. Masih banyak ruang untuk peningkatan mulai dari fitur-fitur hingga dengan materi-materi baru. 

Untuk sekarang, baru ada lima materi terkait bidang teknologi informasi, tetapi ke depannya akan saya punya mimpi kalau pelajaran semua bidang pun bisa diakses di kuliahkita.com, sehingga setiap orang Indonesia yang ingin belajar, bisa langsung akses kuliahkita.com. Jadi, fokus saya sekarang adalah, pertama, memperbanyak konten. Bisa dari tim KuliahKita yang membuat konten atau dari pengajar lain. Keduanya sedang kami jalani sekarang. Kedua, kami akan memperbaiki dan menambah fitur-fitur yang ada di kuliahkita.com. 

Semoga aplikasi kecil yang baru tumbuh ini bisa menjadi bibit baru untuk membantu Indonesia yang lebih baik. Baiklah, tunggu kabar-kabar terbaru dari KuliahKita, kami segenap tim KuliahKita akan mengurus setiap hari bibit yang kami percaya akan membantu rakyat Indonesia. Kami mohon bantuannya. Terima kasih. :)

Kamis, 19 Juni 2014

Requirement is There to be Changed

For a software engineer, like me, required to develop application based on the requirement. Every project comes with a requirement document so that the developed application could become the solution of the designated problem. Unfortunately, this was not the ideal world. In my experience, there was not perfect requirement. Every project I have ever finished, the requirement always changed at least once. For us, engineers, we upset when the requirement changed. It is a very tedious or annoying task when we need to change our code design from the very beginning. So, how do we do this?

In my opinion, the most responsible person of this requirement thing is of course the person that do the requirement analysis, in my experience, is the project officer. Even though, there is no 100% requirement analysis, the project officer need to give their full effort to get as near as 100%. 90% is already good in small-scale project. The larger the project scale, the harder to analyze the requirement. The more complete the requirement, the happier the engineers. The happier the engineers, the solution is obviously better.

For developers that work with people that capable of analyzing the requirement thoroughly, you are damn lucky. Obviously, this kind of people is scarce. I think, it is easier to find great engineers than great analyst. If the great developer is a tiny fraction of all developers, great analyst is tiny fraction of the great engineers. This is because the nature of analyst. If someone want to be a great analyst, they need to have the experience of developing an application. so that they know everything it needs to develop an application into a solution.

Me, as an engineer, has small portion on requirement analysis. The farthest I could do is to take the initiative to ask about the application A LOT and get used to requirement change. It is really annoying to change the requirement in the middle of a project, but it is inevitable. For me, it is very annoying to change my code design, but it is more annoying if my code is not becoming the solution of the problem. I cannot imagine if my coded application cannot help people to achieve more in their life. We, engineers, make solutions, not applications.  Engineer should focus on the solution. So, deal with it. :D.