Mahalnya Sekolah

Beberapa waktu lalu, saya iseng cari tahu biaya sekolah kalau pulang ke Indonesia untuk dibandingkan dengan biaya sekolah di Chiang Mai sini. Saya masih ingat waktu saya SD uang spp nya sekitar 300 rupiah, SMP dan SMA saya lupa tapi saya ingat ga pernah bayar lebih dari 1000 rupiah per bulan. Saya sekolah negeri sejak SD, SMP, SMA dan yang paling mahal ketika saya harus kuliah di Bandung tiap semesternya biaya 445 ribu rupiah. Masa SD saya bisa jalan kaki ke sekolah, SMP mulai naik bemo/becak/sepeda dan SMA naik angkutan kota yang jaraknya 7 km dari rumah. Ketika jadi mahasiswa saya semakin jauh deh dari orangtua saya karena saya merantau ke Bandung.

Biaya sekolah mengirim saya ke universitas terasa lebih mahal buat orangtua saya karena saya diterima di Bandung dan orangtua saya di Medan. Mereka harus kirimin uang buat saya tiap bulan sekitar 150 ribu rupiah buat ongkos dan makan saya. Uang kontrakan kost sudah dibayarkan langsung setahun supaya saya pasti punya tempat tinggal selama setahun dan harganya ga naik selain dapat diskon 200ribu kalau bayar pertahun dibandingkan bayar perbulan. Saya merasa beruntung karena orangtua saya dengan kondisi ekonomi yang cukup sehingga saya masih bisa sekolah dan fokus belajar tanpa harus memikirkan biaya hidup saya. Saya bisa lihat, mereka berusaha mencukupkan kami anak-anaknya untuk mendapatkan pendidikan dengan harapan mendapat masa depan lebih baik dari mereka.

Waduh intro jadi kepanjangan karena bernostalgia. Dari hasil browsing saya mengenai uang sekolah, saya pikir di sini saja sekolah mahal, ternyata di Indonesia juga ga kalah mahal (bahkan mungkin lebih mahal). Jaman sekarang kalau mau cari sekolah buat anak lebih banyak pertimbangan dibanding jaman saya sekolah dan biayanya juga bikin saya menahan napas. Saya yakin dulu orangtua saya kirim kami ke sekolah terdekat dari rumah dan sekolah negeri karena masa itu orangtua saya ya mampunya sekolah negeri, dekat rumah lebih baik karena lebih gampang untuk antar jemput dan saya ingat kelas 1 SD kadang saya pulang sekolah jalan sendiri, kadang saya jalan dengan kakak saya dan masa itu semua terasa aman-aman saja.

Saya tidak tau biaya sekolah negeri sekarang ini berapa, tapi sepertinya jaman sekarang ini ada banyak kekhawatiran memasukkan anaknya ke sekolah negeri. Entah kenapa dan sejak kapan, ada kesan sekolah negeri kurang bagus mutu pendidikannya dan kekhawatiran bertemu anak yang nakal dari lingkungan masyarakat kurang mampu. Banyak orang tua terutama yang di kota besar memilih memasukkan anaknya ke sekolah swasta yang punya nama dan menurut survey cukup berkualitas dari segi pengajaran dan keamanan. Beberapa orang memilih yang dekat kantor supaya bisa berangkat dan pulang bareng. Atau ya yang menyediakan layanan antar jemput. Umumnya anak SD akan diantar karena sekolahnya ga walking distance dari rumah (kecuali mungkin sekolah dalam komplek perumahan). Beberapa orangtua yang lebih dari cukup juga umumnya akan berusaha mencari sekolah terbaik walaupun agak jauh dari rumah dan biaya yang mungkin ga sedikit.

Angka yang saya dapati yang bikin shock itu uang pendaftaran. Dari hasil google sejak beberapa tahun terakhir yang paling murah harus habiskan di atas sepuluh juta di awal masuk sekolah. Dari level TK ke level SD walaupun di sekolah yang sama, orangtua harus bayar lagi uang pangkal/pembangunan/pendaftaran. Jadi kebayang untuk masuk Preschool (usia 3 tahun) orangtua harus nabung sejak anak lahir, lalu ketika anak masuk SD harus bayar sekian puluh juta lagi. Kalau anak lebih dari 1 dan beda usia berdekatan, orangtua harus kerja ekstra keras mendapatkan penghasilan tambahan.

Sumber : http://www.the-alvianto.com/2017/10/binus-school-kinderfield-global.html

Ada beberapa sekolah yang membutuhkan orangtua siapin uang sekitar 100 juta rupiah untuk daptar TK. Saya bayangkan orangtuanya mungkin pengusaha yang omsetnya Miliar perbulan atau kalau pegawai pastinya punya gaji lebih dari 100juta perbulan. Biaya bulanan juga variasi, yang paling murah sekitar 450 rebu perbulan untuk TK. Untuk level daycare bahkan ada yang memasang harga sekitar 5 juta sebulan.

Waktu Jonathan menjelang usia 4 tahun, saya survey banyak sekolah di Chiang Mai. Ada 3 jenis sekolah di sini, Thai, bilingual (kurikulum Thai tapi menggunakan bahasa pengantar Inggris dan sebagian Thai) dan sekolah Internasional (menggunakan kurikulum Amerika atau British, full bahasa Inggris). Untuk biaya sekolah sudah pasti sekolah Thai paling murah, dibandingkan dengan sekolah Internasional bisa berpuluh kali lipat.

Contoh biaya salah satu sekolah bukan internasional, sumber http://www.varee.ac.th/en/admissions.php (diakses Mei 2018)

Saat ini kurs 1 THB sekitar 440 rupiah. Untuk uang pendaftaran, beberapa sekolah Thai meminta sekitar 10.000 baht dan uang sekolah persemesternya sekitar 18.000 – 22.000 baht. Sekolah internasional uang pendaftaran sekitar 50.000 baht dan uang semesternya bisa mencapai di atas 100.000 baht. Di Thailand sini, sekolah itu seperti tempat menitipkan anak. Mereka menyediakan kelas mulai dari umur 18 bulan (persiapan TK), lalu sejak umur 3 tahun kelas TK sebanyak 3 level, dan mulai SD sejak umur 6 tahun selama 6 tahun. Level SMP dan SMA ada 6 tahun.

Contoh biaya sekolah internasional. Sumber: https://www.vcis.ac.th/fee-schedule/ diakses Mei 2018

Ketika melihat angka yang fantastis untuk menyekolahkan anak, saya dan Joe sering berpikir dengan uang sekolah semahal itu, kalau anak sekolah sejak umur 3 tahun sampe kuliah, berapa dana pendidikan yang harus disiapkan? Setelah menyekolahkan anak semahal itu, kira-kira anak harus jadi apa supaya penghasilan nya bisa lebih dari biaya pendidikannya? Saya tahu kita harus berpikir optimis dan berharap anak akan lebih dari apa yang kita capai sekarang ini, dan saya tahu mengirimkan anak ke sekolah adalah bentuk investasi kita untuk masa depan anak yang mandiri dan bisa membiayai keluarganya kelak. Tapi kalau angkanya sekarang udah fantastis, berarti kami harus mempersiapkan anak yang bisa menyekolahkan anaknya lebih lagi dari yang dibayarkan sekarang ini.

Situasi kami sebagai orang asing tinggal di Thailand awalnya bikin pusing pilih sekolah buat Jonathan. Kami pingin anak-anak kami tetap bisa bahasa Indonesia, tapi juga fasih berbahasa Inggris dan Thai. Sekolah berbahasa Indonesia cuma ada di kedutaan di Bangkok. Awalnya kami sepakat bahasa Inggris lebih penting dari bahasa Thailand karena kami belum tahu berapa lama kami akan di sini dan supaya logatnya Inggris nya ga seperti Thaiglish ataupun Indoglish.

Harapannya anak-anak bisa menyerap bahasa Thai setelah fasih berbahasa Inggris dan tetep bisa bahasa Indonesia. Untuk saat ini target kami cukup berjalan sesuai harapan buat Jonathan. Kami cukup beruntung Jonathan bisa kami masukkan sekolah Internasional yang harga seperti sekolah Thai. Tapi setelah hampir 3 tahun di sana, Jonathan kami homeschooling.

Berdua belajar

Sejak homeschooling perhitungan uang sekolah digantikan dengan uang beli buku, berbagai peralatan dan mendaftarkan Jona berbagai kegiatan yang  ga bisa saya ajarkan sendiri. Ternyata sekolah ga harus mahal. Di tulisan berikut akan saya tulis lebih banyak soal homeschooling Jonathan.

Lulusan Kuliah IT seharusnya bisa apa?

Tahun lalu saya membaca mengenai skill yang seharusnya dimiliki lulusan SMK. Entah kenapa tulisan ini beredar lagi di timeline saya tahun ini. Ketika saya baca lagi mengenai skill yang diharapkan, kebanyakan skill ini bahkan tidak dimiliki oleh lulusan Sarjana Informatika/Ilmu Komputer/Teknologi Informasi (berikutnya akan saya singkat jadi: lulusan/sarjana IT).

Sudah menjadi fakta bahwa banyak lulusan IT yang tidak bisa memprogram (silakan baca artikel: Why can’t programmers.. program?). Separah ini:

Like me, the author is having trouble with the fact that 199 out of 200 applicants for every programming job can’t write code at all. I repeat: they can’t write any code whatsoever.

Sebelum diskusi masuk ke masalah pekerjaan, kesuksesan, jiwa entrepreneur, dsb saya ingin menekankan dulu: lulusan apapun dengan skill bagaimanapun bisa bekerja di berbagai bidang yang tidak sesuai jurusan yang diambilnya. Tapi jika sebuah negara ingin bisa maju di bidang tertentu, ya tentunya yang diharapkan adalah lulusan dari bidang tersebut memiliki skill yang baik dan berkontribusi di bidangnya.

Contohnya sebagian orang menyatakan: nggak apa-apa nggak bisa mrogram setelah lulus IT, yang penting kemampuan logikanya terpakai nanti ketika jadi manager. Nah terus siapa yang akan memajukan industri IT? Contoh lainnya: jika semua sarjana pertanian beralih profesi ke berbagai bidang lain, bagaimana bisa maju pertanian Indonesia?

Kebanyakan jurusan teknik yang saya tahu minimal lulusannya memiliki dasar teori yang baik mengenai bidang ilmunya, dan memiliki keahlian praktis meskipun sangat minimal. Misalnya target pelajaran Teknik Kimia dan Teknik Fisika adalah untuk industri, dan saya tahu bahwa lulusan Teknik Kimia dan Fisika minimal punya keahlian praktis untuk mengenal dan mengoperasikan berbagai peralatan lab sederhana. Mereka juga memahami berbagai konsep dasar mengenai ilmu Kimia/Fisika.

Beda kasusnya dengan banyak lulusan IT yang saya tahu: banyak yang tidak bisa melakukan hal dasar. Install sistem operasi? tidak bisa, itu kan bisa dilakukan oleh dukungan teknis, Memasang kabel jaringan atau mengkonfigurasi router/firewall? tidak bisa, itu kan bagian jaringan.

Sedihnya lagi, seringkali skill pemakaian software juga rendah. Contoh kecil: Microsoft Word memiliki fitur otomatis untuk membuat daftar isi. Tapi banyak yang tidak tahu fitur ini dan daftar isinya seringkali dibuat secara manual. Memakai spreadsheet juga terbatas pada formula sederhana (tidak sampai LOOKUP atau Pivot). Saya tidak berharap seseorang jadi jago Ms Excel ketika lulus, tapi setidaknya konsep dasarnya tahu dan tidak bingung jika pindah ke OpenOffice atau Google Sheets. Sama seperti lulusan Teknik Fisika tidak akan bingung memakai timbangan, baik itu analog maupun digital.

Memang di jurusan IT ini gampang sekali mencontek: semua praktikum programming bisa mencontek/menyalin dengan mudah dari orang lain (via internet/jaringan lokal/USB disk). Semua tugas dan pekerjaan rumah bisa dicari jawabannya online (atau bisa pesan dari situs freelancer). Jadi kurang ada “paksaan” untuk serius mencoba.

Berbeda dengan lulusan Teknik Kimia yang pasti harus pernah melihat dan bekerja berbagai bahan kimia, hanya sedikit lulusan IT yang pernah bekerja dengan berbagai software praktis. Apakah yang diajarkan ketika kuliah terlalu banyak teori? Bagaimana dengan level skill yang lebih tinggi, misalnya membuat blueprint aplikasi (baik skala kecil ataupun besar) atau merancang database? ini juga biasanya tidak bisa.

Supaya praktikum IT bisa dilakukan dengan cepat, di kebanyakan tempat semua sudah disiapkan di awal. Semua software sudah terinstall dengan versi eksak yang sudah diberikan (kadang versi softwarenya sudah kuno), dan mahasiswa hanya perlu datang, mengetik (atau mencontek/download dari Internet/copy dengan USB Disk) lalu pulang. Keahlian mendebug program biasanya tidak diajarkan. Jika programnya lambat, umumnya tidak paham kenapa terjadi, baik secara teori dari analisis notasi Big-O ataupun secara praktis menggunakan tools profiler.

Kebanyakan mahasiswa yang ketika lulus bisa memprogram secara praktis (misalnya: membuat website, membuat game, membuat aplikasi) biasanya belajar sendiri berbagai keahlian itu. Jadi apakah ini salah kurikulumnya? salah dosennya?

Sebagian mungkin salah dosennya. Seringkali dosen tidak bisa menjelaskan dengan baik suatu topik. Bahkan banyak dosen yang tidak bisa memprogram sedangkan dosen tersebut mengajar pemrograman.

Kalau saya bertemu lulusan Teknik Kimia, saya cukup yakin dia akan bisa menjelaskan secara umum tentang dasar kimia (atau lulusan fisika untuk menjelaskan tentang dasar fisika). Sedangkan kalau saya tanyakan ke lulusan IT, cukup banyak yang tidak tahu menjelaskan dari mulai 0 dan 1, mesin turing, sampai bagaimana program bisa berjalan. Padahal dasar ilmu komputer tidak terlalu rumit.

Harapan saya seorang lulusan IT bisa tahu dasar teori dan bisa mempraktikkannya. Hapalan teori untuk dunia IT lebih sedikit dari kebanyakan bidang lain (kebanyakan hal bisa memakai logika saja). Dalam urusan praktis saat ini semua masalah bisa dicari solusinya dengan Google asalkan tahu apa yang perlu dicari. Jadi skill praktis minimal adalah: menginstall sesuatu, menjalankan sesuatu, dan mencari solusi suatu masalah di Google/StackOverflow. Tentunya dasar teori yang baik akan mendukung dalam hal praktis, misalnya jika sudah mengerti konsep OOP dengan baik, berpindah dari Java ke C# bisa dilakukan dengan cepat. Jika sudah mengerti konsep sistem operasi Unix, berpindah dari Linux ke FreeBSD/NetBSD/Solaris bisa dilakukan relatif singkat.

Saya tidak berharap lulusan IT bisa menjadi Superman yang bisa segala macam hal. Tapi yang diharapkan adalah: bisa cepat beradaptasi dengan berbagai hal praktis, dan juga bisa mengimplementasikan berbagai algoritma jika diperlukan. Jika ada suatu algoritma baru yang sangat baik dan ada deskripsi lengkapnya, maka bisa menyatakan: ok akan saya implementasikan dalam Python, dan bukan berkata: belum ada yang membuat versi Python-nya jadi kita tunggu saja sampai suatu saat ada yang mengimplementasikan (kadang kalau beruntung bisa cepat, tapi bisa juga beberapa tahun kemudian baru ada versi Python-nya)

Dasar Komputer itu Mudah

Sebagian masalah dalam dunia IT mungkin karena sekarang ini komputer sudah terlalu abstrak. Hal ini menyebabkan orang sulit memahami hal-hal dasar yang membentuk sebuah sistem komputer. Padahal Kurikulum informatika/ilmu komputer sebenarnya sudah dirancang dengan baik, tapi banyak yang tidak bisa melihat benang merah topik-topik yang diajarkan.

Akibat tidak terlihatnya benang merah ini, orang merasa belajar berbagai topik terpisah yang tidak dipahami konsepnya (misalnya pelajaran otomata, arsitektur komputer) dan juga tidak punya nilai praktis di kehidupan nyata (tetap tidak bisa assembly setelah arsitektur komputer, tidak bisa membuat parser setelah pelajaran otomata).

Di pelajaran matematika SMU (atau bahkan SMP) kita sudah diajari mengenai basis bilangan. Di luar konteks komputer basis bilangan ini biasanya kurang penting tapi karena komputer yang kita temui sehari-hari memakai sistem biner, maka ini penting. Menuliskan nilai biner bisa sangat panjang, jadi kita biasanya juga memakai basis 8 (mengelompokkan 3 bit biner jadi satu digit basis 8) dan basis 16 (mengelompokkan 4 bit biner jadi satu digit basis 16).

Kuliah arsitektur komputer biasanya akan memperkenalkan gate dasar, seperti AND, OR, NOT, dsb. Gate-gate ini kemudian disusun untuk membuat sebuah binary adder (penjumlah 1 bit dengan 1 bit). Sepertinya ini tidak penting, tapi ingat waktu kita masih SD, kita diajari untuk menghapal penjumlahan satu digit (seperti 9 + 7), supaya berikutnya kita bisa menjumlahkan angka yang lebih besar (misalnya 19+27) dengan menjumlahkan dulu digit paling kanan (9+7 = 16), lalu jika ada lebihnya (carry, dalam kasus ini ada carry 1) ditambahkan ke penjumlahan berikutnya (1 + 2 + carry).

Sama seperti ilmu penjumlahan satu digit desimal bisa dipakai untuk n-digit. Sirkuit adder ini bisa disusun dengan adder yang lain agar bisa menjumlahkan bukan cuma 1 digit biner tapi n digit biner. Sekarang kita bisa menjumlahkan bilangan sebesar apapun. Karena bisa menjumlahkan, kita juga bisa mengalikan, perkalian hanyalah penjumlahan yang diulang.

Bagaimana dengan pengurangan? kita bisa merepresentasikan bilangan negatif dengan menggunakan two’s complement. Sekarang jika kita punya angka 2, angka -1 dan sirkuit adder, kita bisa menjumlahkan 2 dan -1 dan hasilnya adalah 1. Jadi dengan memahami representasi tersebut, kita bisa mengurangi, dan jika kita bisa mengurangi, maka kita bisa membagi.

Bisa mengurangi juga berarti bisa membandingkan. Sebuah bilangan a sama dengan b jika a dikurangi b nilainya nol. Sebuah bilangan a lebih dari b jika a dikurangi b nilainya positif, dan sebaliknya a kurang dari b jika a dikurangi b nilainya negatif.

Topik lain yang akan diajarkan adalah flip-flop atau latch. Intinya adalah sirkuit ini bisa “mengingat” atau menyimpan satu bit. Jika kita bisa menyimpan satu bit, maka dengan banyak flip-flop kita bisa menyimpan banyak bit. Ini adalah topik dasar memori. Topik clock juga biasanya akan dijelaskan untuk memahami urutan operasi.

Dalam sebuah sirkuit digital, kita bisa memilih (dengan multiplexer dan demultiplexer) sirkuit mana yang aktif. Jadi  kita bisa memasukkan dua bilangan biner, dan memilih apakah ingin membagi atau menjumlah, atau melakukan operasi lain.

Sebagai manusia kita bisa memasukkan sekuens biner ini (yang merupakan “instruksi”)secara manual  satu persatu: tekan ini untuk menjumlah, lalu tekan ini untuk mengurangi, dst seperti memakai kalkulator. Tapi karena kita sudah mengenal memori (dari topik flip-flop), maka bilangan dan urutan instruksi tersebut bisa dimasukkan ke dalam memori, dan kemudian dieksekusi.

Setelah itu topik akan berlanjut ke berbagai detail bagaimana membuat instruksi yang lebih kompleks yang tidak hanya menjalankan instruksi secara linear dari pertama sampai terakhir tapi bisa juga lompat instruksi tertentu (jump) jika kondisi  terpenuhi (biasanya kondisi ini dari hasil komparasi, yang pada dasarnya adalah pengurangan). Inilah dasar sebuah komputer.

Tanpa sebuah “bahasa pemrograman” dan bahkan tanpa sebuah “assembler”, dasar teori tadi sudah cukup untuk menjelaskan komputer sangat sederhana, dan bahkan komputer paling awal dulu ya seperti ini: input output biner, tanpa assembler/shell/editor/user interface.

Gambar berikut ini adalah PDP-8, komputer pertama yang sukses di pasaran. Komputer ini mulai dipasarkan tahun 1965 dan terjual 50 ribu buah komputer. Dulu harganya 18500 USD, dengan menghitung inflasi kira-kira saat ini setara sekitar 2 milyar rupiah).

Jadi kita mengisi memori (baik instruksi maupun data) langsung dengan mengeset bit 0 dan 1 menggunakan saklar, lalu menekan tombol untuk mengirimkan bahwa kita sudah selesai mengisi. Ada tombol juga untuk pergi ke memori berikutnya. Outputnya pun berupa biner dalam bentuk lampu yang menyala.

Komputer populer berikutnya di tahun 1976 adalah KIM-1. Komputer ini tidak sesulit PDP-8, input dalam bahasa mesin menggunakan keypad heksadesimal, dan output 6 digit angka. Komputernya memang seperti di bawah ini, tidak ada case-nya (245 USD pada tahun 1976, setara dengan 15 juta rupiah nilai saat ini). Prinsip kerjanya masih sama dengan komputer sebelumnya: input disederhanakan dengan keypad dan output dengan bilangan heksadesimal 6 digit. Semua harus diprogram dalam bahasa mesin.

KIM-1

Apakah kita masih bisa bereksperimen dengan benda low level seperti ini? Sangat bisa. Kita bisa membeli transistor sendiri dan menyusun komputer sendiri (harganya sangat murah). Adakah orang yang “gila” untuk melakukan hal ini? Jawabnya: ada, contohnya proyek monster6502

Menyusun transistor memang terlalu hardcore (satu gerbang logika butuh beberapa transistor), alternatif lain adalah membeli chip yang mengimplementasikan gate tertentu (NAND, OR, NOT, dsb). Kemudian kita bisa menyusun sendiri chip-chip ini untuk membentuk komputer. Ada banyak orang yang iseng melakukan hal ini. Ekseperiman semacam ini sekarang tidak penting, tapi bagi orang yang cara belajarnya bisa paham melalui praktik, saya hanya ingin menyatakan bahwa ini masih bisa dilakukan.

Jika kita hanya ingin bekerja secara konseptual tanpa praktik langsung, ada banyak emulator yang bisa kita pakai, termasuk juga emulator untuk berbagai komputer awal. Sebagai catatan, dulu di masa awal komputer, bahkan ada buku belajar bahasa mesin untuk anak-anak (klik pada gambar untuk link ke PDF-nya, sudah digratiskan oleh penerbitnya).

Buku lama ini saat ini juga tidak terlalu berguna, kecuali Anda penyuka sistem klasik, tapi ilmunya masih bisa dipakai untuk membuat emulator. Berbagai dasar low level ini juga diperlukan jika kita ingin membuat compiler atau interpreter yang memakai JIT.

Berbagai mata kuliah lain saling melengkapi. Mata kuliah Teori bahasa dan Otomata akan memberikan dasar penting: bahwa komputer yang sudah dijelaskan di arsitektur komputer ini bisa dipakai untuk menghitung/menjalankan algoritma semua fungsi yang computable. Selain itu ada teori bagaimana sebuah bahasa bisa di-parse ini akan menjelaskan kenapa bahasa pemrograman tidak seperti bahasa manusia.

Setelah memahami bagian dasar ini, topik pemrograman akan terasa lebih sederhana. Semua yang diproses komputer hanyalah bilangan. Sebuah teks hanyalah pemetaan dari bilangan ke sebuah karakter (misalnya bilangan 65 berarti karakter A di tabel ASCII). Sebuah foto di layar hanyalah titik-titik dengan nilai warna tertentu (nilai warna ini juga hanya bilangan) dan video hanyalah gambar yang berganti dengan cepat seolah bergerak. Signal suara yang mentah di komputer hanyalah nilai sampling amplitudo setiap interval waktu tertentu.

Jika sudah memahami layout memori, kebanyakan algoritma dan struktur data dasar bisa dipahami dengan logika saja dan terasa sangat wajar, tidak perlu menghapal. Contoh struktur data yang mudah adalah: linked list, tree, hash table. Contoh algoritma sederhana: berbagai sorting dasar.

Beberapa struktur data dan algoritma memang rumit, tapi biasanya kita tidak perlu mengimplementasikan berbagai algoritma ini dalam pemrograman sehari-hari. Hal yang penting adalah: kita paham algoritma tersebut ada dan bisa dipakai di kasus seperti apa, dan dari deskripsi detail algoritmanya kita bisa mengimplementasikan algoritma itu di bahasa tertentu yang mungkin baru kita kenal.

Berbagai pelajaran lainnya sebenarnya hanyalah penerapan dari dasar yang sudah dipelajari. Misalnya: sistem operasi memberikan abstraksi supaya kita tidak mengakses hardware secara low level, dan bagaimana mengatur sumberdaya sistem supaya bisa dipakai oleh banyak program/user. Pemrograman grafis adalah penerapan dari berbagai algoritma dasar, algoritma yang berhubungan dengan matriks, dan algoritma spesifik untuk grafik tertentu.

Berbagai hal praktis bisa dijelaskan ketika praktikum. Dan untuk mendalami suatu topik tertentu sebaiknya dilakukan sendiri di luar kelas. Contoh: jika ingin menjadi network engineer untuk merk tertentu (CISCO, JUNIPER, dsb) ya pelajari materi dari vendor tersebut.

Mungkin ada juga yang berpikir: ah nggak perlu tahu sampai sedetail itu cukup kok buat cari kerja. Sekali lagi saya tekankan: kalau sekedar supaya bisa memprogram sederhana, lulusan SMK juga bisa diarahkan. Kalau ingin Indonesia punya tenaga ahli yang bisa memajukan dunia IT, ya pengetahuan sangat low level dibutuhkan.

Ingin jadi ahli security yang baik, yang bisa menemukan bug sejenis Spectre? perlu tahu sampai level hardware. Jika ingin mendapatkan overview yang cukup baik bisa membaca buku yang membahas sampai level ini Silence On the Wire oleh Michal Zalewski, pada tiap bab diberikan pengenalan berbagai topik informatika dasar untuk bisa menjelaskan bug security. Deskripsi buku ini cukup akurat:

In Silence on the Wire: A Field Guide to Passive Reconnaissance and Indirect Attacks, Zalewski shares his expertise and experience to explain how computers and networks work, how information is processed and delivered, and what security threats lurk in the shadows.

Memang saat ini sudah banyak sekali berbagai produk open source untuk membuat apapun, tapi untuk menjadi terdepan tetap dibutuhkan berbagai komponen khusus buatan sendiri. Contohnya: untuk membuat sistem chat dengan skala WhatsApp atau Telegram tetap dibutuhkan sistem custom . Telegram hanya membuka source code aplikasi client untuk Desktop/Web/Mobile, tapi komponen server tetap milik mereka dan tetap tertutup.

Berbagai perusahaan besar bisa menjadi terdepan karena mereka menciptakan sendiri teknologi yang saat itu belum ada. Misalnya Google bisa maju karena algoritma PageRank dan juga memiliki BigTagble untuk implementasinya.

Penutup

Semua di atas hanyalah gabungan dari berbagai fakta dicampur dengan opini saya. Jika tujuannya memang hanya mencari kerja, ya silakan saja belajar berbagai hal yang praktis. Tapi saya berharap lulusan jurusan IT levelnya lebih dari sekedar praktis (apalagi sekedar bisa memakai produk buatan orang lain), tapi bisa tahu berbagai konsep dasar dan mengaplikasikannya.

Sebagai tambahan untuk yang masih kuliah dan merasa blank saya sarankan untuk mulai mengubah cara belajar dan mencari suplemen materi lain, misalnya dari Coursera atau YouTube.

Dua buku saya sarankan: Code: The Hidden Language of Computer Hardware and Software, buku ini ringan dengan banyak penjelasan sederhana. Buku lainnya adalah The Elements of computing systems. Buku ini sangat praktis dan mencakup topik dasar sampai lanjut.

Kemungkinan akan ada banyak yang kurang setuju dengan tulisan ini. Buat yang kurang setuju dengan isi tulisan ini, mungkin bisa menjawab dua pertanyaan saya:

  1. Jika bukan lulusan jurusan IT, jadi lulusan mana yang seharusnya bisa memajukan dunia IT Indonesia? (Apakah harus mengimpor programmer dari India?)
  2. Menurut Anda lulusan jurusan IT itu minimal harus bisa apa? Di mana keseimbangan sangat praktis (seperti diajarkan di SMK) atau sangat teoretis (level S2/S3)?

Jadi peserta CTF yang bener dong, jangan malu-maluin

Tahun lalu saya mengkritik panitia Cyber Jawara karena soal CTF-nya ngawur. Sekarang gantian saya mengkritik peserta yang ngawur di penyisihan online. Banyak peserta yang sharing jawaban, seperti mencontek soal ujian.

Tahun ini, panitia Cyber Jawara dan pembuat soal sudah bekerja sangat baik. Soal yang dibuat berkualitas, dan mereka juga mengecek jawaban peserta dengan teliti sehingga kelakuan curang seperti itu bisa diketahui dan didiskualifikasi.

Kutipan komentar dari panitia (Fariskhi Vidyan):

jadi gini ceritanya ya. Ada beberapa tim yang melaporkan ada tim-tim yang minta flag dan juga menawarkan flag dengan bukti screenshot. Jadi ada tim yang kerjaannya minta-minta flag dan mendistribusikan itu ke tim lain dengan syarat minta pap/foto tim. Ada juga yang pakai cara-cara lain. Gara-gara komunikasi pakai telegram jadinya mudah untuk ngelakuin ini.

Selain itu writeupnya juga pada gak bener. Ada yang persis copy paste. Bahkan user terminalnya pun sama persis -,- dan kata-katanya pure copy tanpa ada perubahan satu karakter pun. Banyak juga yang isinya asal-asalan dan bahkan penjelasan yang salah pun diikutin.

Dan katanya ini emang udah terjadi dari tahun2 lalu. Tapi kalau tahun2 lalu nilai akhir itu nilai di web scoring + nilai write up. Makanya yang curang-curang pada datang rombongan. Mana bisa begitu. Untuk tahun ini, ditegasin dengan kasih penalti besar-besaran ke write up yang gak valid, untuk nilai soal yang write upnya gak bener/ngasal dijadikan 0. Ada yang tadinya full score sampai jadi di bawah 500. Yang write up soalnya sama persis juga dikasih penalti dua-duanya.

Saya kesal dengan mentalitas pencontek seperti ini. Dulu waktu saya masih sering ikutan CTF di akhir pekan, banyak juga yang menanyakan apa flag (jawaban) sebuah soal. Sebenarnya kalo ada yang tanya petunjuk (hint) untuk mengerjakan soalnya, biasanya akan saya jawab. Misalnya akan saya jawab dengan: coba SQL injection, atau: coba baca artikel ini.

Untungnya masih ada beberapa yang bertanya seperti itu, dan sampai sekarang pun masih ada yang rajin menanyakan hint dan meminta petunjuk buku atau artikel mana yang perlu dibaca untuk menyelesaikan soal tertentu atau memahami konsep tertentu. Orang-orang seperti ini yang akan sangat dirugikan oleh cheater.

CTF perlu anti contek juga?

Banyak orang mengkritik kalau pejabat pemerintah bobrok, banyak koruptor, dsb. Padahal kelakuan seperti itu dimulai dari kelakuan kecil seperti mencontek ini.  Jangan pikir bahwa mencontek ini tidak merugikan siapa-siapa: di lomba semacam ini, kelakuan curang akan sangat merugikan orang yang jujur dan memiliki keahlian.

Sebenarnya apa sih tujuan main CTF kalau mainnya curang? CTF itu untuk belajar, dan nanti bisa terpakai di dunia nyata di dunia security. CTF juga buat bersenang-senang seperti menyelesaikan puzzle. Kelakuan cheater seperti ini cuma merusak kesenangan orang yang beneran menikmati main CTF.

Andaikan team curang ini lolos ke final, mereka akan bengong melihat soal-soal yang ada. Andaikan panitia tidak teliti, dan semua team cheater yang masuk final, maka ketika ke tahap berikutnya di level ASEAN, mereka akan bengong dan memalukan Indonesia.

Mencegah kecurangan

Sebenarnya ada cara untuk mempersulit kecurangan semacam ini, tapi panitia harus bekerja ekstra. Tiap flag bisa dibuat unik per peserta, jadi flag tidak bisa dishare begitu saja. Tentunya tidak mudah membuat variasi ini untuk semua jenis soal, tapi mungkin bisa dilakukan untuk sebagian soal saja. Ini tidak mencegah peserta untuk sharing cara mereka menyelesaikan soal.

Untuk membuat orang segan berbagi metode, di beberapa CTF, skor untuk satu soal dikaitkan dengan dua faktor: siapa yang menyelesaikan duluan dan berapa banyak yang menyelesaikan soal tersebut.

Peserta yang duluan menyelesaikan soal mendapat skor lebih tinggi dari peserta berikutnya (misalnya 100%, 99%, dst). Jika sebuah soal banyak diselesaikan oleh orang, maka bobot soal dikurangi, artinya soal yang hanya bisa dipecahkan oleh 10 orang bobotnya lebih tinggi dari yang bisa diselesaikan 100 orang.

Dalam metode scoring ini skornya jadi dinamis. Misalnya soal 1 nilai bobot awalnya 1000. Team A menyelesaikan soal 1, dan mendapat skor 1000. Tiba-tiba ada 9 peserta lain yang berhasil menyelesaikan, bobot skor dikurangi jadi 900, sekarang tiba-tiba team A memiliki skor 900 meskipun tidak melakukan apa-apa.

Team yang jagoan, yang bisa menemukan beberapa flag akan malas sharing dengan team lain: buat apa sharing, nanti skor saya akan menurun kalo banyak yang menyelesaikan soalnya.

Penutup

Bagi saya sendiri, CTF untuk bersenang-senang, kenalan dengan banyak orang, dan kadang-kadang juga mendatangkan rejeki dari tawaran pekerjaan. Beberapa CTF (Seperti Flare On) juga menawari peserta untuk mengirimkan resume (jika berhasil menyelesaikan semua challengenya).

CTF yang baik dan fun butuh panitia yang baik, dan juga butuh peserta yang baik. Jadilah peserta CTF yang jujur dan mau belajar. Panitia jadi akan punya lebih banyak waktu untuk membuat soal yang baik daripada susah payah mencegah cheater.

Dunia CTF dan CTF Tingkat Dunia

Sebagian pihak ternyata “tidak terima” dengan pendapat saya di tulisan sebelumnya, bahwa event CTF (capture the flag) tertentu itu levelnya buruk. Mereka berpendapat itu hanya “pendapat sebagian orang saja”. Di tulisan ini saya akan membahas seputar dunia CTF, dan apa yang saya maksud dengan CTF Tingkat dunia. Buat Anda yang blank mengenai dunia CTF, bisa membaca perkenalan CTF oleh saya di posting ini.

Setelah membaca defense dari pihak Cyberjawara, yang penuh dengan kekonyolan, sampai tidak tahu harus mulai dari mana (contohnya: katanya tidak semua writeup dipublish publik karena pembuat soal tidak mengijinkan), saya memutuskan untuk memperkenalkan dengan gamblang dunia CTF bagi semua orang.
Continue reading “Dunia CTF dan CTF Tingkat Dunia”

Bikin CTF yang bener dong, jangan malu-maluin

Daripada sekedar menyindir (sindiran sudah dilakukan puluhan orang dari beberapa tahun lalu), sekalian lah saya posting terbuka bagi penyelenggara lomba Capture The Flag (CTF) yang super ngawur, terutama CTF Cyber Jawara. Beberapa CTF Indonesia sudah baik (seperti botani.cf Gemastik, atau idsecconf), tapi Cyberjawara ini sudah parah, jadi bahan tertawaan setiap tahun tetap saja tidak membaik (tahun ini saja sudah ada beberapa, misalnya ini, ini dan ini). Padahal ini adalah kegiatan ID SIRTII (Indonesia Security Incident Response Team on Internet Infrastructure)

ctf
Continue reading “Bikin CTF yang bener dong, jangan malu-maluin”

Sekarang Windows sudah (lebih) gampang

Ketika membaca lagi posting lama saya, saya menemukan tulisan Siapa Bilang Windows itu Gampang?, yang saya tulis tahun 2009. Sekarang keadaan sudah cukup berubah menjadi lebih baik.

Sudah ada package manager yang namanya chocolatey sejak sekitar 2012. Sekarang saya tak perlu pusing mendownload, menginstall, dan mengupdate software. Misalnya saya butuh virtualbox, saya cukup mengetikkan:

choco install virtualbox

Dulu, setiap kali Windows menampilkan dialog “Finding Solution”, atau “Searching Driver Online”, saya sudah pesimis, dan biasanya solusinya tidak berhasil dan drivernya tidak ketemu. Sekarang proses mencari solusi dan mencari driver sudah benar-benar jalan. Bahkan ketika saya beli Clone Arduino dari China, ketika saya colok, dia mencari drivernya online, ketemu, dan langsung berjalan lancar.

Antivirus sekarang sudah built ini di Windows, dan tidak terlalu membebani sistem lagi.

Waktu saya menulis posting sebelumnya, saya belum terlalu mencoba powershell. Saya sempat mencoba powershell 1.0 dan masih ada banyak keterbatasannya, tapi semakin lama powershell ini semakin powerful, dan cukup bagus untuk scripting.

Mengenai beberapa software yang saya komplain sebelumnya, sebagian besar sudah lebih baik. PDF Reader sudah built in, Office saat ini bisa didapatkan dengan harga terjangkau, bahkan Internet Explorer sudah cukup baik untuk browsing sehari-hari. Untuk masalah development, saat ini microsoft memberikan Visual Studio Community Edition gratis.

Beberapa hal memang masih kurang nyaman (misalnya kadang butuh reinstall software ketika pindah harddisk, untung ini tidak sering saya lakukan). Mengenai konfigurasi secara remote, server ssh dari Bitvise sudah bagus, dan kalau butuh akses remote, saya bisa memakai TeamViewer.

Saya merasa saya adalah orang yang reasonable, saya tidak fanatik teknologi tertentu, jika ada teknologi yang bagus, saya akan mencoba dan berpindah jika memang suka. Saat ini saya cukup suka memakai Windows sehingga mau memakainya di laptop sebagai OS default, sementara di desktop saya masih dual boot Windows/Linux.

Produk Apple

Komputer pertama saya adalah Apple II, jadi saya sudah lama memakai produk Apple. Saya juga sempat memakai notebook apple ketika masih memakai Power PC (waktu itu namanya adalah Apple iBook, beda dengan software Apple iBooks ya). Saya membeli Macbook generasi pertama tak lama setelah keluar. Saya yang menyarankan semua komputer di kantor memakai produk Apple (dan sampai sekarang di kantor masih memakai Apple). Saya punya iPod Nano generasi kedua, dan sekarang juga masih punya iPod Touch, iPad, iPhone 5s, MacBook Pro, dan Mac Mini.

2874448573_84f2871238_b

Meski saya cukup suka produk Apple,saat ini saya mulai menghindari banyak produk Apple.

Hal pertama yang saya tidak suka dari produk Apple adalah harga. Dari dulu harganya memang cukup mahal, tapi sekarang ini untuk kategori tertentu (misalnya kategori laptop) harganya sudah berlebihan. Contoh: MacBook Pro (non retina) sekitar 15 juta, memorinya masih 4 GB, Masih Core i5, HD 500 GB. Sedangkan laptop Windows saya harga sekitar 7 juta, sudah Core i7, HD 1 TB memorinya mudah diupgrade, harddisknya juga, bahkan saya bisa memakai mSata 256 GB SSD + 1 TB HDD.

Saya cukup senang ketika Apple masih membolehkan kita mengupgrade komponen sendiri, karena upgrade memori atau HDD bisa kita lakukan dengan lebih murah (karena dari vendor lain, atau karena kita mengupgrade 1 tahun setelahnya, sehingga harganya sudah turun).

Continue reading “Produk Apple”