Template LaTeX Untuk Tugas Akhir dan Tesis Informatika ITB

Beberapa hari lalu Peb (IF 2003 2002) mengontak saya perihal template LaTeX yang ada di Github saya. Dokumen ini saya buat sudah sangat lama hingga saya hampir lupa keberadaannya. Dulu ceritanya usai sidang gelar master saya lima tahun lalu , Pak Imam yang pembimbing tesis saya mengomentari bahwa dokumen yang saya susun memiliki tampilan yang bagus. Oh iya dong pake LaTeX. Lalu beliau mengusulkan saya untuk menyumbangkan template agar bisa digunakan mahasiswa yang lain.

bahkan latest commitnya pun 5 tahun lalu

Kembali ke lima tahun kemudian, Peb menyumbangkan beberapa kode untuk perbaikan. Saya lalu merasa penasaran dan menanyakan ke Restya (IF 2006) yang sekarang mengajar di Informatika apakah masih belum ada standar LaTeX untuk tugas akhir. Ternyata belum ada. Jadi selama lima tahun terakhir ini mahasiswa Informatika ITB masih hidup dalam masa kegelapan.

Bagi saya seorang programmer menyusun dokumen tebal dan kompleks dengan LaTeX adalah hal yang menyenangkan dan terasa sangat natural. Penyusunan layaknya seperti kode aplikasi biasa, pengorganisasian kode, otomatasi, serta manajemen revisi menggunakan git membuat pengerjaan dokumen terasa mudah. Oleh karena itu saya menghibahkan template ini agar mahasiswa dapat fokus dalam membangun karya ketimbang berkutat dengan dokumen.

Kodenya dapat diakses di Github saya.

Beberapa hal yang akan dikerjakan (kalau sempat)

  1. Tutorial penggunaan.
  2. Penyesuaian dengan template Microsoft Word milik program studi.
  3. Template dua kolom untuk makalah.
  4. Cara otomatis pengunggahan ke Dropbox.

Saya sangat berharap ini bisa membantu mahasiswa untuk bisa berkarya.

Why do you or don’t you smile back at strangers? #JuliNgeblog Day 11

Today’s post is in English. Just some change in mood. And it is also inspired by another question from Ask.fm. Sometimes the questions are quite intriguing for me to answer. Just like this one

Why do you or don’t you smile back at strangers?

I do smile back or even smile first at strangers. I even love doing it. Of course except when I am in a very bad mood, I often forget to smile. My head is filling with tangled thoughts that makes my lips stay still. But when some stranger smile at me, I feel a warm touch in my heart. It is as if they are giving me support and trying to say, “You can do it!” I might just have a very bad day in my life and seeing their smiles makes me realize that it is not really that bad at all.

And I smile back to them as a gratitude for reminding me that wonderful thought.

The courtesy should also go both ways. I try as much as I can to smile first to stranger. It was really hard at first for a loner like me, but now it goes pretty natural. People might also be having a very bad day and me giving them a long face will not help with anything if it is not making them feel worse in the first place. So I smile so that they can cheer up and do the same to other people who might also have a bad day. Spread the joy!

Talking about this reminds me the song What A Wonderful World by Louis Armstrong and how it inspires me to smile 😉

The colors of the rainbow, so pretty in the sky
Also on the faces of people going by
I see friends shaking hands, saying how do you do
They’re only saying I love you

What a wonderful world, such a waste if we do not fill it with smile.

So, why do you or don’t you smile back at stranger?

Belajar Pemrograman Dari Buku Atau Kuliah Informatika? #JuliNgeblog Day 10

Pertanyaan yang saya jadikan sebagai judul tulisan ini merupakan perdebatan yang sudah saya ketahui sejak saya duduk di bangku kuliah dan saya yakin sudah ada sejak ada jurusan Informatika belasan tahun sebelumnya. Ini juga sering sekali ditanyakan di forum atau milis pemrograman dan akhirnya ditanyakan ke saya langsung di halaman ask.fm pribadi saya.

kaka petra, gimana tanggapannya tentang: 1) komentar “buat apa kuliah jadi programmer, itu kan bisa belajar sendiri dari buku” dan 2) lulusan if itb yang kerja di posisi yg sama dengan lulusan smk? (no offense ya follower kaka petra, pure curiosity)

Dari pengamatan saya biasanya pertanyaan ini muncul dari rasa ketidak amanan pada kedua belah pihak: pihak non-formal dan pihak formal. Pihak non-formal merasa tidak aman karena merasa takut tidak bisa mengejar ketinggalan atau malah takut gajinya bisa lebih kecil karena tidak memiliki ijazah formal. Pihak formal pun merasa takut ditikung dari belakang atau sekadar ego saja.

Tapi sebelum membaca opini saya di bawah, biarlah saya mengutarakan kesimpulan di muka. Dari mana pun latar belakang Anda, formal ataupun non-formal, yang penting belajarlah dari banyak orang dan tetap berusaha untuk melakukan yang terbaik!

Saya mengenal banyak sekali orang hebat dari kedua sisi. Dari sisi formal saya kenal banyak alumni saya yang sukses. Saya mengenal seorang yang latar belakangnya akuntansi dan kemudian menjadi freelancer tersohor dan akhirnya membuka agency sendiri bahkan meluangkan waktunya untuk mengajar pemrograman ke orang yang tidak mampu membiayai kursus atau kuliah. Saya juga mengagumi teman yang dulu kuliah di farmasi, kemudian menjadi programmer kawakan yang pengetahuannya sangat melebar di banyak bidang.

Kembali ke pertanyaan pertama, untuk apa kuliah jadi programmer, kalau semuanya bisa belajar dari buku? Ini pemahaman yang sangat keliru, paling tidak untuk jurusan Informatika ITB tempat saya dulu menuntut ilmu. Di kuliah dasar pemrograman, hal ini sudah ditekankan oleh Ibu Inggriani Liem, dosen di kuliah tersebut. Bu Inge sering mengatakan kita tidak hanya belajar untuk menulis kode program atau “apa bedanya kalian dengan jurusan XX != IF, mereka juga diajarkan ngoding, kok“.

Bedanya adalah di Informatika, kita dididik menjadi seorang software engineer atau computer scientist, bukan semata orang yang hanya bisa menuliskan kode. Ada banyak sekali aspek yang menentukan seorang engineer dan scientist yang jauh lebih luas dari sekadar kode yang ditulis. Aspek ini membentang mulai dari cara analisa masalah dan penyelesaiannya, pengaplikasian teori-teori dan konsep informasi dan matematika ke dalam penyelesaian masalah, pemodelan dan desain solusi, dan lain-lain (sisanya bisa dibaca di Situs Informatika ITB)

Yang paling menarik adalah di Informatika ITB pun sebenarnya kita tidak diajarkan bahasa pemrograman. Kuliah pertama saya dulu menggunakan bahasa yang bahkan tidak ada compilernya. Istilahnya adalah notasi algoritmik. Mahasiswa diwajibkan untuk belajar bahasa pemrograman seperti Pascal, C, Java secara mandiri di lab. Untungnya saya sebelum masuk kuliah sudah bisa bahasa-bahasa di atas termasuk PHP dan BASIC. PHP masih saya gunakan hingga sekarang termasuk Java, Python, Javascript, dll sementara BASIC sudah tidak pernah terdengar lagi.

Menurut saya aspek yang paling sulit didapat dari belajar sendiri dari buku adalah aspek sosial. Meski terdengar bertentangan dengan intuisi tapi ini natural. Pemrograman sekarang ini adalah kegiatan sosial. Kode yang awalnya ditujukan untuk dimengerti oleh komputer sekarang ditulis dengan tujuan dapat dibaca oleh orang lain. Perangkat lunak yang kita gunakan seperti Linux yang menjalankan ponsel Android ditulis sedikitnya oleh seribu orang lebih.

Di hampir semua mata kuliah Informatika, mahasiswa diwajibkan mempraktekkan pengembangan perangkat lunak dalam tim dalam bentuk tugas-tugas kuliah. Dalam pengerjaan tugas mahasiswa mendapat pengalaman bagaimana berkoordinasi dalam bentuk kode program. Mahasiswa belajar bagaimana membaca spesifikasi yang diberikan oleh dosen dan membagi tugas kepada anggota tim. Kode yang dikumpulkan juga akan dibaca oleh asisten dosen dan keterbacaan ini juga dimasukkan ke dalam kriteria penilaian.

Hal yang membantu juga di kuliah adalah kita lebih mudah untuk berdiskusi dan bertanya. Beberapa teman kuliah saya membuat kelompok belajar yang sering berkumpul untuk membahas materi kuliah (biasanya 20 menit pertama dan kemudian dilanjutkan bergosip selama 4 jam). Pintu ruangan dosen juga selalu terbuka (umumnya kiasan) untuk bertanya. Saya jarang mendengar ada yang melakukan, tetapi kalau ada mahasiswa yang kurang mengerti dan mengirim email untuk bertanya saya yakin dosen pasti dengan senang hati menjawab.

Selain itu aspek sosial yang didapat dari kuliah adalah membangun jaringan yang akan berguna di masa depan. Jaringan kuat antar mahasiswa bisa diolah ketika lulus menjadi jaringan profesional dan akan memberikan hasil beberapa tahun kemudian. Selain itu juga dengan membangun jaringan dosen akan memberikan hasil yang lebih besar dalam waktu yang lebih cepat. Saya sering menyarankan ke mahasiswa untuk banyak-banyak mengenal dosen dan kalau bisa coba ikut membantu proyek-proyek mereka. Selain mendapat uang lebih untuk tambahan jajan, keuntungan lain adalah mendapat ilmu dan wejangan langsung dari dosen yang tidak akan didapat dari kuliah dan ditambah lagi kesempatah terpapar terhadap koneksi ke dunia profesional. Faktanya, posisi saya sekarang dimulai dari sepuluh tahun lalu saat saya mengetuk pintu ruangan Bu Inge dan menanyakan apa yang saya bisa bantu untuk pelatihan Tim Olimpiade Komputer yang dibina oleh beliau.

Dari sekian banyak keuntungan kuliah dibandingkan jalur non-formal, saya yakin banyak dari hal tersebut yang dapat dikejar apalagi dengan bantuan banyaknya sumber informasi. Kuliah di Coursera misalnya. Saya sendiri belajar beberapa hal dari situs ini materi-materi yang tidak sempat saya ambil di bangku kuliah. Ada juga Quora tempat kita bisa bertanya pada ahlinya. Saya sering bertanya di situ untuk hal-hal yang tidak saya mengerti. Di samping itu saya juga terbuka bagi siapa pun yang bertanya lewat email. Saya akan usahakan balas di sela-sela kesibukan.

Untuk aspek sosialnya juga bisa dikejar dengan usaha lebih seperti mulai berkontribusi di proyek-proyek open source. Selain itu juga bisa mulai membangun jaringan dengan menghadiri seminar atau workshop kemudian mengajak kenalan para peserta dan pengajar. Selalu ada cara bagi mereka yang mau berusaha.

Tentunya penjelasan di atas tidak berlaku untuk semua lulusan Informatika. Ada yang kuliahnya rajin dan setelah lulus hasilnya baik. Ada juga yang kuliahnya malas-malasan dan sering bolos dan lulusnya tidak terlalu jelek (saya misalnya, hehe). Tidak jarang ada yang kuliahnya juga baik tapi akhirnya banting haluan karena tidak merasa memiliki passion. Ada juga beberapa lulusan yang pada saat kuliah begitu-begitu saja, dan sekarang juga begitu-begitu saja.

Lalu mengenai pertanyaan tentang bagaimana kalau lulusan Informatika ITB ditempatkan pada posisi yang sama dengan lulusan SMK. Saya rasa tidak masalah. Mungkin perusahaan yang bersangkutan sudah memiliki pertimbangan, misalnya lulusan SMK tersebut sudah memiliki portofolio yang sangat panjang.

Perbedaan mendasar antara lulusan SMK Informatika dan Sarjana Informatika terletak pada tujuannya. Lulusan SMK Informatika dididik untuk siap kerja; silabus dan mata pelajarannya lebih banyak berfokus pada hal-hal praktikal dan (harusnya) banyak paparan ke industri. Lulusan Sarjana Informatika (ITB) dididik untuk memecahkan masalah; isi kuliahnya lebih diberatkan ke dalam hal-hal seperti konsep, teori, dan abstraksi. Banyak sarjana yang awalnya lambat untuk beradaptasi dengan industri tapi setelah sekian lama langsung melejit.

Dan banyak juga yang akhirnya jatuh biasanya karena ego. Ego adalah penyakit kebanyakan lulusan ITB (sejujurnya saya hingga sekarang kadang-kadang dikuasai oleh ego). Ketika ada hal yang tidak sesuai dengan mereka inginkan, orang yang dikuasai ego akan menyalahkan keadaan atau orang lain. Tetapi kalau semua sejalan dengan yang mereka inginkan, mereka merasa itu semua adalah kontribusi dari mereka.

Daripada mempermasalahkan posisi yang sama, jadikan itu sebagai sarana untuk berkolaborasi. Saya rasa baik yang lulusan sarjana dan kejuruan bisa saling belajar satu sama lain. Kesampingkan rasa ego untuk kepentingan organisasi niscaya akan memberi keuntungan bagi semua orang.

Yang terpenting adalah berusaha untuk menghasilkan yang terbaik. Ketika diberi tugas oleh manajer atau atasan, tanyakan apa tujuan yang ingin dicapai dari tugas tersebut. Setiap selesai mengerjakan tugas, coba tinjau ulang kira-kira kalau diberi tugas yang sama lagi apa yang bisa ditingkatkan. Apa kah algoritmanya bisa dioptimasi, proses pengerjaannya bisa diperbaiki, apakah biayanya bisa ditekan, atau adakah bagian yang bisa diotomatisasi? Dan jangan lupa untuk meminta pendapat dan peninjauan ulang dari manajer atau atasan. Ingat, mereka bukan cenayang yang bisa membaca pikiran. Kalau ada ide atau komplain harus sering disampaikan jangan tunggu penilaian kinerja tahunan. Seperti yang saya tulis di awal, proses pengembangan perangkat lunak adalah proses sosial, butuh komunikasi.

Demikian opini dari saya yang penuh anekdot pribadi. Intinya menurut pendapat saya pertanyaan-pertanyaan di atas tidak perlu terlalu diperdebatkan karena menghabiskan waktu dan tidak ada tujuan jelasnya. Cobalah berkenalan dengan banyak orang dari banyak latar belakang dan belajar dari mereka semua. Dan di atas semua itu lakukan yang terbaik.

#JuliNgeblog Day 8: Bermain Card Game Penuh Identitas Rahasia Dan Manipulasi Di Coup The Dystopian Universe

Saya bukan seorang penggemar berat board game dan sebangsanya (like seriously, udah kerja disuruh mikir berat masak maen game juga mesti mikir), tapi saya tidak pernah menolak kalau diajak bermain selama jadwalnya bisa disesuaikan. Kemarin saya diajak oleh Radix Hidayat (best bro!) bermain board game night dengan beberapa teman kami Dwika Putra cs. Kami berkumpul di rumah Galih, pendiri Arcanum Board Games Community, yang juga menjual banyak sekali permainan.

IMG_6430Salah satu permainan yang kami mainkan semalam adalah Coup (The Dystopian Universe). Saya sangat terpesona dengan Coup sehingga begitu saya tahu Galih punya satu set yang tersisa untuk dijual, saya langsung membeli di tempat. Berhubung saya sudah pernah membahas tentang A Game Of Thrones: The Board Game, maka saya juga akan membahas permainan Coup ini.

Tujuan utama dari permainan ini adalah mengeliminasi lawan dan bertahan hingga menjadi pemain yang terakhir. Di awal permainan, setiap pemain akan diberikan dua kartu yang memiliki peran antara lain Duke, Assassin, Ambassador, Captain, Contessa. Setiap peran memiliki kemampuan yang berbeda-beda. Kartu ini tidak boleh diketahui oleh pemain lain.

Pada setiap putaran, setiap pemain akan mengambil paling tidak sebuah koin atau tergantung peran. Saat koin ini sudah cukup pemain dapat mengeliminasi satu kartu milik pemain lain. Pemain yang kehilangan semua kartunya langsung keluar dari permainan. Setelah mengambil koin, pemain dapat melakukan aksi seperti mengeliminasi kartu lawan seperti yang sudah disebutkan atau misalnya mengambil koin milik orang lain atau aksi-aksi lainnya tergantung peran yang dimiliki.

IMG_6431

Lalu serunya di mana? Nah, karena peran seorang pemain tidak bisa diketahui oleh pemain lain, pemain itu dapat mengaku memiliki peran apa saja. Misalnya pada saat awal langkah, karena saya tidak memiliki kartu Duke, harusnya saya hanya boleh mengambil satu koin. Tetapi saya dapat mengaku memiliki kartu Duke dan mengambil tiga koin sesuai karena itu adalah kemampuan yang dimiliki peran Duke. Pemain lain dapat memilih untuk percaya bahwa saya memiliki kartu tersebut atau menantang saya.

Ketika seorang pemain ditantang dan ternyata pemain tersebut memiliki kartu sesuai dengan klaimnya, maka penantang harus mengeliminasi satu kartu miliknya dan kartu yang ditantang harus ditukar. Tetapi kalau yang ditantang ketahuan berbohong, maka pemain tersebut juga harus mengeliminasi salah satu kartu.

Selain kemampuan untuk menyusun strategi, di Coup pemain juga dituntut untuk memiliki kemampuan berbohong dan memanipulasi lawan. Pemain yang terlalu lugu dan mudah percaya dengan perkataan orang lain akan sulit untuk melalui setiap putaran. Sisi positif yang bisa didapat dari permainan ini adalah kalian bisa tahu teman mana yang merupakan pembohong ulung (jangan pinjemin duit ntar kalo dia butuh, *eh*)

Permainan Coup ini dapat dimainkan hingga 6 orang dan hanya memakan waktu 15 menit. Sangat direkomendasikan untuk permainan di pesta atau gathering atau hanya sekadar mengisi waktu luang menunggu jadwal tayang sepakbola. Ingat, resikonya kalian dapat kehilangan kepercayaan dari teman-teman kalian atau malahan dapat kehilangan teman-teman yang dapat dipercayai yang selama ini kalian percayai untuk perkara hidup dan mati.

Have fun!

#JuliNgeblog Day 7: Bermain Pokémon GO

Penantian yang berlangsung lama akhirnya terjawab juga. Tiga hari lalu game Pokémon GO yang sejak dulu ditunggu-ditunggu dirilis. Perilisan ini meski untuk dua platform Android dan iOS, sayangnya  hanya terbatas di Australia dan New Zealand, serta kemarin ditambah di Amerika Utara. Tapi berhubung APK sudah ada yang upload jadinya kita bisa menginstall Pokémon GO di ponsel Android tanpa menggunakan Google Play Store.

Kesan pertama memainkan Pokémon GO adalah keren tapi sekaligus kecewa karena tidak sesuai dengan apa yang dibayangkan. Di bayangan saya, permainannya sama persis dengan apa yang saya mainkan dulu di Gameboy. Saya bayangkan pemain harus menangkap Pokémon dengan cara mengadunya dengan Pokémon yang sudah dimiliki. Untungnya gameplay Pokémon GO ini tidak terlalu buruk dan masih bisa saya nikmati.

Tampilan utama
Tampilan utama

Di permainan ini saya bisa mejelajah mulai lingkungan kompleks rumah, kelurahan, kecamatan untuk menangkap Pokémon. Penangkapan ini dilakukan dengan menggunakan Pokéball yang jumlahnya terbatas. Berbeda dengan bayangan saya di mana Pokémon harus diadu melawan Pokémon milik pemain, di sini penangkapan hanya dengan melempar Pokéball ke arah Pokémon yang ditemukan. Kalau Pokéball ini mengenai Pokémon tersebut maka Pokémon akan tertangkap. Ada beberapa Pokémon yang tingkatnya lebih tinggi yang lebih susah ditangkap hingga perlu beberapa kali pelemparan atau dibantu dengan item lain.

Pokéstopnya banyak yang masjid ternyata.
Pokéstopnya banyak yang masjid ternyata.

Selain untuk berburu Pokémon, penjelajahan ini juga dilakukan untuk mengunjungi Pokéstop dan Pokémon Gym. Di Pokéstop, kita bisa mendapatkan itemitem seperti Pokéball, Potion, Revive, dan lain-lain. Pokéstop ini dalam kehidupan nyata menggunakan lokasi-lokasi publik. Dari banyak sekali Pokéstop yang sudah saya kunjungi, hampir semuanya adalah tempat-tempat ibadah, mural, atau patung. Berdasarkan informasi yang saya dapat dari teman saya yang bermain Ingress, yang dikembangkan oleh studio game yang sama, lokasi Pokéstop menggunakan data portal yang ada di Ingress. Bahkan ternyata cara bermainnya pun sangat mirip dengan Ingress.

IMG_6417Setelah Pokéstop, ada juga tempat yang namanya Pokémon Gym. Di Gym ini lah kita bisa mengadu Pokémon yang kita pelihara melawan Pokémon milik pemain lain. Setelah kita mencapai level 5, yang diraih dengan menambah poin Experience salah satunya dengan menangkap Pokémon, kita bisa memilih 3 jenis tim Instinct (kuning), Mystic (biru), dan Valor (merah). Salah satu tugas kita adalah untuk merebut Gym dari tim lain dan mempertahankan Gym tersebut agar tidak direbut kembali.

Agar kita bisa menang dengan Pokémon dari tim lain, kita harus menaikkan Combat Point dari Pokémon kita. Semakin tinggi Combat Point atau CP dibanding dengan lawan, semakin tinggi pula kemungkinan menang. Tapi ada faktor lain seperti jenis Pokémon yang menentukan. Misalnya serangan Pokémon air akan memiliki efek yang tinggi terhadap Pokémon batu, tetapi tidak terlalu efektif terhadap Pokémon api.

Berhasil merebut Gym!
Berhasil merebut Gym!

Tujuan utama permainan Pokémon ini sama halnya dengan permainan Pokémon pada umumnya adalah untuk melengkapi Pokédex. Kita harus berburu semua jenis Pokémon agar Pokédex kita bisa semakin lengkap. Tapi untuk menaikkan CP dari Pokémon kita, kita juga harus menangkap Pokémon yang jenisnya sudah kita tangkap sebelumnya. Ini akan memberikan apa yang disebut Candy dan Stardust, dua item ini diperlukan untuk mengingkatkan CP dan melakukan evolusi Pokémon. Pokémon yang telah berevolusi akan memiliki CP yang jauh lebih tinggi dari sebelumnya dan juga menambah kelengkapan di Pokédex.

Pokémon GO ini bisa menimbulkan efek kecanduan. Saya kemarin tanpa terasa berjalan hingga belasan kilometer untuk berburu Pokémon. Sepertinya beberapa bulan kemudian saya bisa kurus karena memainkan game ini. 😀 Menurut saya permainan ini sangat bagus, selain karena bisa melatih kemampuan fisik dan stamina, ini juga membuat kita sering keluar dan melakukan eksplorasi untuk lebih mengenal kemampuan-kemampuan sekitar. Tetapi kita harus hati-hati juga jangan sampai membahayakan diri sendiri dengan terus-terusan melihat ke handphone dan juga jangan terlalu menarik perhatian supaya tidak terjadi kejahatan terhadap diri kita.

Seperti yang saya bilang di awal, game ini baru dirilis untuk daerah New Zealand, Australia, dan Amerika. Untungnya di Android bisa diinstall dengan APK yang bisa didownload di APK Mirror di link ini. Rumornya game ini sedang dibatasi untuk daerah-daerah di luar daerah rilis resmi. Tapi hingga penulisan ini, gamenya kadang-kadang masih bisa diakses. Selamat berburu Pokémon! Gotta CatchEm All!