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. 

Jumat, 23 Mei 2014

A Perfect Teacher

Teacher is a job title for a person who teach their students every day. In our life, teachers become an integral part of our life. We, humans, cannot survive without another human being. We do need the assistance of teachers to help us study how to live in this world. It is not a exaggeration that a child future is determined by the teachings of the teachers. Unfortunately, there are so little teachers that teach the right thing. There are more teachers that only teach the necessary skill to survive, not to excel with every child's talent.

Most teachers only teach their subject, done. i.e. Math teacher teach only math, history teacher only teach history. This is wrong. Every teacher has an obligation to assist every one of their student to let them know and do their talent. I believe we are not designed only to survive in this world. We are designed to maximize our potential to improve our quality of life.

From my personal opinion, the best teacher I've ever had is a person that motivate me to be the best on what I'm good at. It is on my senior high school moment, I had a teacher that know me quite good. She always knew that if I do not give my best on a test and she always mad to me if I do not give my best. After that, she always motivated me to be the best. It is a great privilege to had a teacher like that in my life. I'm forever indebted to her. :). 

That is the point of the whole thing of education. Teaching is not like pouring water to an empty water canister, but it is more like a candle in the dark that light the path of the bearer. And I believe that the whole education thing is not only the teacher's obligation, but every people has the obligation to assist their relatives to improve their life quality.

A lot of people thought that we can only stop disaster or any bad guys by using super power. That's why a lot of people likes to see super hero movie. The story is relatively simple, the bad guy appear and destroy a town. Then, the hero comes to stop the bad guys. For me, teacher that teach and lead their student to be a good man is the real super hero. They prevent any kind bad things even before it happened. So, with this post, I want to encourage us to be a teacher to make this world a little bit better. Teacher is not only an occupation, it is a lifestyle. :D 

Rabu, 09 April 2014

Tutorial: Python Strings Literal

I feel like writing programming tutorial right now. :D. Back in the college, I always wrote programming tutorials for other people's blog and I think is was fun. Even though my writings back there was awful because I only cover basic knowledge of a programming language. So, right now, I want to write more conceptual tutorial that I hope would make the reader more keen about programming. I will start with the String literals.


Kinds of String Literals

Python has three kinds of string literals single quoted, double quoted, and triple quoted. All types of Python strings are immutable. It means, every operation that tried to change the content of the string will resulted in a new string object. It is different with Ruby string that is mutable.  Here are the examples of the usage.
    
    print 'hello world!'
    print "hello world!"
    print """hello world!"""

Those three statements will return the same string value. Actually, the single quoted and double quoted string literals have no difference except if you use the single quoted string and you want to use the single quotation char, you need to use the backslash symbol and vice versa for the double quoted string.  As for the the triple quoted string, it is usually used to represent long string that need the newline on the string like docstrings. Here are the example.

    print '\'hello world!\''
    print "\"hello world!\""
    print """hello
        world
        !"""

String Literals Usage

That was the basic of Python string literals, but I have my own convention on using string literal in order to make the code even tidier. I only use the single quoted string for symbol-like or some kind of identifier like the key on dictionary structure and use the double quoted string for any other general text. Here are the example.
    
    full_names = {
        'edwin': "Edwin Lunando",
        'mirana': "Mirana Nightshade"
    }
As for triple quoted string, I only use it for docstring and very long text like an email template. That's all for today. Thank you. :D

Senin, 24 Maret 2014

A Whole New of Generation

Hi! I've just finished watching Free to Play movie. It is documentary created by Valve. It is a movie that tell us about a journey of Dendi, Fear, and hyhy. They dedicate their life into DotA, a game. DotA is one of the most played team play game until now and those three tried to live their life to be the best within the world and get paid for doing it. Like every other team sport, to win the game, you need teamwork, sacrifice, and trust. Until today, gaming is not a viable career for almost any people I've ever met. They thought, game is a hindrance for their or their children to reach success. Is it what success looks like? Go to college, graduate, work at big companies, and then reach the top of the career? Gaming is only for fun? Playing games is childish? This movie answers all that questions.

Most of the communities think that game is a only a source of entertainment, but there are people believe that game is everything they ever have. They really dedicate them self to gaming even though they know it would be hard for them to make a living from it. They just following what they want really do in their life. I do really appreciate them. I know it was ridiculously hard to make a career in gaming as there are a lot of barrier like, parents, social pressure, and having no salary. Some people turned down gaming, some of them persist despite the dreadful condition. Those people, against all odds, keep struggle until they become the best of the world and proud of it. Why?

One thing I really admire from them is that they always has the courage to follow what they want to do. They have been so adamant about it until the point that they prepared to sacrifice a lot of things to make it possible. I believe that this determination is the things that makes us, humans, alive. Most people think that trying to reach their dream is impossible. They afraid that their action will hurt people they love. They afraid they will face defeat in their journey. Dendy, Fear, and hyhy comes from different backgrounds, but they face the same obstacles. Their parents forced them to stop, their families do not support them, they suffer loses more than your average gamer guy, and bleak financial future haunts them, yet they still persist. Why?

The answer is so simple yet so complex, until so many people do not follow the answer. They do it because they are happy doing it. They are happy to have a shot to be the best of the world at something. Dendi said that for him, the game is not just a game, it is everything. If I into the gaming ecosystem, I would put myself into Valve's shoes. I want to make a platform that could facilitate people on doing what they really want to do. 

From this movie, I learnt that it is not about what are you doing, but how intense is you feeling toward what are you doing. It is okay whether you are a working gamer or any kinds profession. The real question is that are you really satisfied with what you do? When you really fight for want you want, that would be the time that you will feel very lively. I hope you found what you really want to and dedicate your life for that. Thank you. :D

Jumat, 07 Maret 2014

Intermedia is Racist

This is a story about one moment of my college life experience. This experience is about building a good culture in a team and I believe that a culture is one of the most important in every team even in business or non-formal organization. Since the fourth semester, I was elected to be one of the division leader of an organization. The division was called Intermedia. It was a division that handle every media that the organization use. e.g. Twitter, Facebook, printed newsletter, and website.

Our numbers were about 15 until we start promoted the division widely to the 2011 freshmen. The number grew until it reach 50 people as the member of the division. While Intermedia is only 15 people, we were very very close to each other. I were very close to each people at Intermedia, but it is indeed It was quite hard to maintain a good environment with 50 people. Even though the number of active member is around 30, still, it was a huge number. I'm afraid that they will make their own group. I know it was not wrong to built a group, but at least, I want all of them to be close. I want that they could could talk to each other seamlessly.

So, I start to be racist. I start to shout it to myself and senior member of the division. I called myself "cina" or "cino" and the senior members as their own race when we had our weekly meeting. It could be "batak", "toraja", or "jawa" depend on the person. :)). Since I close to the senior members, I'm pretty sure they would be okay. One thing that I afraid the most is that the freshmen will take the wrong message. Surprisingly, some of the freshmen start to laugh and tried to mock the senior members including me. Looking to the momentum, I tried to made jokes about my and their race. Suddenly, they laugh and I realized that their communication barrier is weaker.

The next day or meeting is merrier and merrier. It's not that everyone instantly close to everyone, but I can see that this division is alive. At least they could talk to each other freely. The racists thing keeps growing until every time we met, we mock each other race. :)). I frequently heard words like "SIPIT!" and "GLODOK!" towards me, but I found it very funny. :)). Until at the end of Intermedia Camp, we took photos based on our race. Here is the photo.

Jawa Race
Here's another one.

Cina Race

Here's another one.
Batak Race

This "tradition" still continue until this year Intermedia's camp. Oh, how I missed that moment. I'm very happy that I have been a part of this division. A division that made me understand that it is not about what division that made your college life meaningful, but it is how committed are you to a division. Back to the topic, so, it is very important to maintain a good culture to every team. It was fun after all. It gives me motivation for every time I want to met every one of them. It was a humbling experience to serve in this division. Thank you. :D

Jumat, 28 Februari 2014

Weekly Log #4

Hi! It's been quite a time since the last post. Almost every several days I wrote to this blog, but I kept it as a draft. I will publish it until I satisfied with the quality of the writing. So, let's start with my life update. :)

Since early February, I started the MOOC projects that I've been waiting for a veryyyyy long time. It was very exhilarating that I could made something to Indonesia with my own skill. I want to make a dent at Indonesia's problem. It was a very fun project to do and it makes me want to stay at office more and more to continue the project. It is been a while that I really wanted to skip all the holidays in order to keep working on the project. :D. I have never felt so lively. Now, the design is already finished. Just a little enhancement and the engineering team and me could start the development next week. 

This month is very great for me. Every day, is not the same me as yesterday. I learnt a lot from every moment occurred to me in this month. Meeting a lot of old and new people, tried a lot of new things, talking to a lot of people, and read a lot of books. It means very very much for me. This month is all about my MOOC project. Thank you. See you on the next update. :)

Sabtu, 01 Februari 2014

On Being a Good Programmer

I already code for approximately 6 years since the first code I wrote. I have created so many bugs, compile errors, applications, and scripts. In that process, I learnt that programming is really hard. I do not think that a lot of people would let their eyes stares into blocks of code for days or weeks to find the root of the errors and fix it. One of my favorite method to mitigate my stress when fixing bus is to throw pillows to the wall. :D. Even though I have code for not quite a long time, I believe that I have some experience to tell. So, today, I will share some of my perspective on how to be a good programmer. I define programmer are any people that write code. Software engineer that write code is considered programmer.

The first on being a good programmer is that they have "write less code" in their mindset. Do not judge programmer by the number of codes, but the number of solutions. The true purpose of programmers is to create solutions. A good programmer will always know how to reduce the number of codes. One of my favorite way is to find existing solution or third party libraries on the web. I believe if my problem is too general, any other people will already solve it and let people use their solutions. Open source has becoming so far until it can let programmers finish their solution very quickly. You just have to find it.

Another way to reduce the amount of code is try new things. The "things" could be programming language, framework, library, and tools. Unfortunately, not a lot of people would have the sufficient amount of courage to learn new things. The choose to stay with their level of knowledge and stick with it. In my experience, I choose my primary programming language very carefully. When I choose web development as my specification, I tried 6 (Java, PHP, Ruby, Python, C#, and Javascript) programming languages. Then, I tried a lot of web frameworks for each language to see the design between each frameworks. I tried a lot of editor and IDE's to see which one help me the most. I have done that until I choose Python, Django, and PyCharm as my primary web development language, framework, and tools. Even for now, I still actively finding new technologies that could reduce the amount of code.

We do have heard the term "pair programming" where a person doing the code and the other one is reviewing the code simultaneously. Okay, I admit it was hard and expensive to let another programmer review my code while I write it. In real life, I have never done it, but I always seek advice and review of my application architecture, especially in the early stages of a project. Architectural design failure will makes not only the code is bigger, but also unmanageable. Next, in the absence of a partner, I always give my time to review my own code with this measurement from this cartoon. :))


That's it! I comes with a single point of "write less code" mindset and it could go to a lot of ideas. There are still a lot of criteria to be a good programmer, but I think these three are the most important. Do you want to know what is a great programmer? They are people who lead programmer into good programmer or even great programmer. Good day.

Selasa, 21 Januari 2014

Hackathon Experience: Do Not Give Up

Hello! Today, I am going to tell you one of my experiences. It was a very simple story while I am still undergoing college life. I learnt so much from this experience and arguably, this is one of the moment that made me very striving to moving forward no matter how grieving is the situation. 

In some time at 2012, I gathered some of my friends to compete to a local hackaton at Bandung. The four of us met and discussed our ideas since about one month before the hackathon. Almost every week we dedicated some hours to review our ideas and pick the best one. We do not want to compete with just "good enough" idea. We want to build an idea that has a great potent to make impact and winning the hackathon.

And it comes to three days before the hackathon. It started with a simple question I asked. "Do you guys have applied the hackathon ticket?". They looked very surprised and from their reaction, I could simply concluded that they have not. I was not saying things like "I have told you guys to apply the tickets since a long time ago", but I quickly check the website and found that the tickets has sold out. Our morale suddenly drops, but we know that we would not walk away without a fight.

So, we sent an email to the committee to explain our situation and asked for additional tickets for the rest of the team. Surprisingly, the response was quick. It really made us amazed since in our mind, it would take a couple day if we contacted someone by email. The answer is simple but exhilarating. He said that he will help us. Pheww. It. Was. Com. For. Ting. From a short moment of intense, the room cooled down drastically. Then, we continue with the discussion as scheduled.

In the end, we got the second place of the hackathon. It is really exciting when I tried to remember the experience. It is like the line between winning or losing it the time when we choose to give up or not. Yoda said that "Do or do not, there is no try". It was a great moment to won the hackathon, but the accident made it perfect. :D.

Selasa, 07 Januari 2014

On Love and Romance

One night after the New Years Eve, I talked a lot with my friends and I knew that the later the night goes on, the talking topic will converge into romance and gossip about people. I thought that it would be fun and interesting to listen to high school romance stories and actually, it really is. I could understood what they are undergo at their age. Here is the first story.

One of my friend, he is older than me, told that he did not like chase his crush if the girl is very easy to get. He wants the thrill of chasing. He wanted to give out the best of him before finally got the one. He described his experience that he went all-out to one girl. He told us that he wanted to give the most romantic moment with the girl. Every single important day like Valentine or Christmas always goes with a lot of presents. Then, he told everyone again that he did not want to date girl that makes the first move and most of the girls agree. 

It was a fairly interesting story to know that we, human, are driven by challenge. We do not want to acquire something without great effort. Me too, has already experienced the thrill of chasing girls. The feeling of waiting our significant other respond and each respond give me some kind of hope. :D. Until one day that I realize that was not the point of love. I think this is the reason why so many breakups while dating or marriage. When the excitement is lost, they want to find new excitement to fulfill their desire. They feel that excitement is point of any relationship. 

My dear friend, love is a verb. The feeling of love comes from loving action. It is the fruit of love. Listen to them, give your attention, care for them, appreciate their work, sacrifice your time for them. If you want to learn the real meaning of love, look to people who sacrifice them self for the sake of the others. Let's look to parents. They give birth to child. They sacrifice their life, health, and time for the child. If you want to get the excitement, love them. If you want to feel the value of love, you need to release your ego. Ego is the big wall that stand between you and love. Destroy it and you will feel love. :").