Skip to main content

Jurnal Fasilkom Semester 4 Bagian 1: Full Time Kuliah



Satu semester lagi terlewatkan di Fasilkom!!!!

Setelah 2019 yang super sibuk mengambil banyak organisasi & kepanitiaan, aku memilih untuk jadi kupu-kupu saja :). Softkill dapat, saatnya balik ngambis di akademis. Karena memang di intinya orang yang suka belajar komputer dan ilmu komputer ^_^. 

...Gak gitu juga...

Paragraf diatas atas ada benernya. Cuman aku milih ga ngambil banyak organisasi lagi karena diamanahkan menjadi salah satu Person In Charge di COMPFEST. Karena tanggung jawab yang besar, dan belajar dari pengalaman tahun lalu, aku memutuskan untuk tidak mengambil kegiatan lain selain COMPFEST ini. Jadi waktuku cuma ngambis dan COMPFEST. :D

Untuk semester 4 ini aku rencana bakal ada 3 post. Yang pertama dan kedua bahas mostly akademis. Yang ketiga bahas COMPFEST doang. Kenapa akademis dibagi 2 ._. ? karena matkul semester ini seru-seru jadi kalau digabung bakal jadi wall of text. Oke jadi total semester ini aku ambil 6 matkul dan bakal dibagi sebagai berikut:

Bagian 1 (post ini!):

- Siak War
- OS
- Anum
- AP
- Asdos PPW

Bagian 2:

- TBA
- MPPI
- Basdat
- secret content ^_^

Ya seperti yang kita ketahui, semester 4 ini dilanda tragedi besar yaitu virus COVID-19. Sehingga dari UTS kami pindah ke Pembelajaran Jarak Jauh (PJJ). PJJ ini ada plus, dan ada minusnya. Tentu saja ini akan dibahas juga di tulisan-tulisan dibawah :). Kalau yang semester 3 (link) aku ada kasih rating per matkul. Nah aku rasa lebih mantap kalau gak cuma rating keseruan, tetapi juga rating effortku dalam matkul tersebut. Jadi bisa ngasih lebih banyak gambaran :)

Siak War

MENANG TELAK!

no context of course


Setelah 2 semester mentengin SIAK untuk kenaikan kapasitas kelas, untuk pertama kalinya aku bisa hidup tenang dengan hanya buka SIAK sekali saja. Aku sudah melatih tanganku untuk bergerak secepat kilat sehingga butuh kurang dari beberapa detik untuk memilih matkul. Dengan ini akhirnya aku bisa merasakan gimana sih kelas "dosen enak" yang sering disebut-sebut orang. Semester 4 starting out really good!

aku morning person, jadi aku bisa tidur siang dengan puas

Operating System (OS)

Matkul ini membahas sistem operasi. Seperti gimana cara kerja memori, paralel processing, filesystem, dan hal-hal yang berhubungan. Dosen pilihanku: bapak internet Indonesia, the legend himself, Pak RMS.

first day dapat slide legend

Sebelum PJJ

Minggu pertama berjalan cukup mulus. Banyakkan haha-hihi dikelas. Everything seems fineee... sampai aku sadar kalau aku gak dapat apa-apa di kelas. Uh oh! dari silabus OS minggu pertama yang begitu banyaknya, yang aku dapat hanya: "vim editor paling baik sedunia!". Aku sempet berpikir mau pindah kelas aja berhubung masih ada kesempatan, tapi dicegah temen-temenku. Kata mereka kelasnya OK. Huh, yaudah deh aku coba attitude positif dan melanjutkan kelas ini.

Minggu kedua dan ketiga bener-bener RIP, bapaknya sepertinya mengharapkan kita belajar sendiri sehingga di kelas biasanya skip-skip slide lalu launch vim ._. oh fuck. Di minggu ketiga aku udah nyerah di kelas. Saat kelas OS jadinya biasanya aku buka laptop untuk belajar kanji saja. Total mungkin pengetahuan week 1 - 3 ku hampir nol O:). Padahal, 1 minggu OS materinya udah buaanyaakk banget :(.

Duh kok topik pertama di blogpost ini udah menyedihkan gini :(.

Tapi mulai minggu keempat tahu-tahu materinya mulai jelas. Bapaknya tobat dari flexing vim dan mulai bahas soal! mantap jadi lumayan ngerti materinya dan bisa eksplor-eksplor sendiri. Biasanya orang ditunjuk -> maju -> ngerjain deh. Aku duduk didepan jadi beberapa kali maju.

Untuk sistem penilaian OS ini, tidak ada PR. Nilainya 33% nilai partisipasi, 66% dari ujian. Sisanya 1% itu bisa minta tugas misal nilainya nanggung dan bisa mengubah huruf. Kalau nilai partisipasi ini dikumpulkan tiap minggu. 1 Minggu maks dapat 3%. Ngumpulinnya dengan ngabsen, nanya-nanya, dan jawab soal. Karena aku cukup PeDe, aku banyak nanya-nanya jadi bapaknya hafal. Aku disebut deh "Mr. G" oleh Pak RMS.

Aku lumayan ngerti minggu kelima dan keenam. Materi UTS mencakup keenam minggu yang dipelajari. Oiya, disini minggunya zero-based ya. Jadi minggu keempat sampai keenam aku lumayan ngerti, minggu pertama sampai ketiga gak ngerti. Bobot UTSnya juga rata setiap minggu. Jadi bakalan ada 6 soal, 1 soal untuk setiap minggu, dengan bobot sama. Jadi semua minggu harus pelajari. Untuk membantu mengerjakan soal UTS nanti, kita boleh membawa notes. Jadi 1 lembar bolak-balik untuk 1 minggu.

Oke, kira-kira H - 7 UTS aku mulai menyusun rencana untuk memperbaiki kekuranganku di matkul OS ini. Jadi aku mulai deeh belajar minggu 1 sampai 3. Belajar dimana? buku rujukan OS, Silberschatz karena soal-soalnya pasti diambil dari situ. Jadi cara belajarku, aku baca buku Silber-chan (yamete Galang-kun >_<), terus poin-poin yang penting aku masukin notes deh. Targetku, membuat notes yang bisa bikin aku konstruksi ulang seluruh bab Silber-chan yang aku catet.

Karena Aku udah ngerti banget minggu 4 - 6, jatah notes minggu tersebut aku isi dengan materi minggu ketiga. Pokoknya memaksimalkan kemungkinan soal-soal yang keluar. Ngapain juga nyatet materi yang udah diluar kepala kan? mending pake buat materi-materi lain yg masih cupu.

Hasilnya saat UTS sangat memuaskan. Pak RMS ngasih nilai untuk setiap soal dari skala 0 - 6. Total kalau diubah ke skala 0 - 100, nilai UTSku 97. Not bad bukan. Soal-soal yang keluar sudah kucatat di cheetsheetku semua. Aman :)

Setelah PJJ

Sistem belajar berubah jadi full forum scele, gaada google meet/zoom. Ada video pembelajaran sih, tapi mager banget bukanya. Nah, di PJJ ini aku mulai malas. Karena OS gaada tugas sama sekali dan sekarang aku gak perlu "hadir kelas", aku menganggap mata kuliahku berkurang 1.

Jadi di forum scele aku cuma ngabsen lalu basa-basi di salah satu forum. Syuudahh deh, gitu doang aku di OS sampai materi habis. Aku baru tobat di libur lebaran yang memisahkan UAS. Aku mulai deh ngambis belajar OS. Tapi aku cuma belajar dikit banget, cuman belajar materi 3 minggu doang karena libur lebaran aku lelahh banget. Banyak waktuku dihabiskan untuk rebahan. Tapi yah aku juga males sih karena kata Pak RMS UASnya bakal ngoding. Jadi harusnya gak perlu lah teori-teorinya :)




Ternyata UAS OS adalah liburan killer ku. UASnya 5 tahap, dan 1 tahap semingguan. Jadi total sebulan lah berurusan dengan OS dari Juni - Juli. Dimana matkul lain sudah selesai UAS, UAS OS baru 40% selesai :). Untuk marking schemenya dikasih tahu, jadi kalau ngerjain tahap 1 dapat poin berapa, tahap 2 dapat poin berapa, dan lain-lain. Sebenernya, aku cuma perlu ngerjain tahap 1 sudah A, tetapi yah gak bisa gitu, karena saat itu lagi pride month.

UAS OS ini berkelompok. Sistem pembentukannya cukup unik dan aneh. Pak RMS buat 20 file text di github lalu kita daftarkan diri di salah satu file. Lumayan susah nyari kelompok kalau udah tahap lanjut karena temen-temen yang udah dapat A mau liburan. Jadinya karena listing groupnya free for all, aku liat ada group yg isinya cewe semua dan aku hampir aja join kesana (harem moment), sayangnya ditarik temenku -_-.

Jadi aku tetep ambis sampai tahap 5 cuma karena seneng aja. Jadinya nilai OSku di SIAK lumayan gede. yay :D. Tapi yah, UAS OS gak masuk akal karena menguras liburanku sebulan. Aku iri dengan kelas non RMS karena UASnya jawab soal normal. Kalau kita UASnya malah ngurusin encrypt-decrypt PGP -_-" OSnya dimana? Ada task uas yang diminta buat website isi informasi-informasi OS, bisa lihat punyaku disini

Kesimpulan: kating-kating bilang ambil Pak RMS karena memesnya. Kataku, mau memes? ke 9GAG aja sana :)

Perlu di mention, selama PJJ kelasnya pak RMS dilakukan lewat scele. Tetapi pernah dua kali diadakan "kelas" zoom, jam 10 malam. Yeah...

Rating 6/10: materi paruh pertama hampir gak dapet, materi paruh kedua lumayan bagus. Sistem UAS bikin menderita :(
Effort: 4/10: Untuk UTS aku belajar dari semingu sebelumnya untuk mengejar ketertinggalanku. Tapi paruh kedua aku literally cuma ngabsen doang di Scele. Belajar OS dikit banget pas libur lebaran dan ngerjain UAS seadanya.

Analisis Numerik

nama variabelnya aa, bb, c, t, ... 

Matkul ini seharusnya untuk mahasiswa semester 6, jadi ini merupakan salah satu matkul yang aku sodok. Yang dipelajari disini adalah metode-metode numerik. Yaitu, sebuah metode untuk menyelesaikan permasalahan-permasalahan yang susah secara exact (analitik) dengan pendekatan komputasi. Misal nih contoh paling simpel, ngitung integral tentu e^(x^2) dari 0 sampai 1 kan impossible dengan teknik analitik dasar. Kalau dengan numerik? bagi aja [0, 1] jadi 10.000 interval terus hitung luas persegi riemannya. Profit. 

Sebelum PJJ

Yang dipelajari disini: floating point, sistem persamaan linear (numeric style), sistem persamaan nonlinear, interpolasi, turunan dan integral numerik, dan initial value problem. Dari day 1 saat dibacain silabus, aku sudah tertarik ke semua topik bahasannya (kecuali IVP, fak dat). Aku memang suka matematika, dan anum ini memperkenalkanku ke dimensi baru (pun intended).

Materi pertamanya tentang floating point. Awalnya aku kira seru, tetapi setelah jalan ternyata lumayan membosankan. Gitu-gitu aja pokoknya. Intinya: penjumlahan, perkalian: good, pengurangan: bad.

Materi berikutnya baru mulai seru. Kita belajar tentang sistem persamaan linear versi numerik. Materinya kurang lebih sama seperti alin, cuma disini kita belajar bagaimana cara ngodingnya untuk meminimalisir error nya. Tokoh utamanya: LU Decomposition. Pokoknya asal ngerti LU decomposition keknya aman-aman saja di materi ini. DI cheatsheet ICPCku ada kode ini, akhirnya aku tahu buat apa.

"wah, ini kan tanpa ngoding juga bisa!"
Tenang, materi berikutnya mulai terlihat powernya komputer, dan kenapa menurutku anum matkul paling keren semester ini: sistem persamaan nonlinear! imagine mencari (x, y) pada persamaan kaya gini:
x cos(y) + x^3 + log(x + 2y)= 0
xy + e^y= 0
Wah kalau diselesaiin pake kertas mati tuh:

"Uhh uhhh, persamaan kedua jadiinn... x = e^y/y ...???"
"terus uhhh, substitusi ke persamaan pertama?"
"wait a minute, caranya faktorin gimana :O"

Kalau pake metode numerik persamaan kaya gini tinggal dibuat matriks jacobinya, iterasi beberapa kali, BOOM! it spits out the (x, y) like magic! Ya tentu saja algonya ada penjelasannya, tapi tetep wow. Dengan fokus mencari jawaban angka (numerik) untuk kasus khusus, solusinya jadi gampang banget. Berasa dapat superpower baru.

Untuk PR anum, ada 6 PR individu dan 4 TK. PR individu ini bisa dikerjakan berdua, dan soalnya cukup mudah. Sebelum PJJ, temen-temenku pada ambitch jadi kita kerja pr sendiri-sendiri. Meski demikian, untuk ngelarin pr individu aku paling lama 2 jam lah. Itupun karena aku males-malesan dengan kulinya, aku ngerjain bareng Krisna jadi life is good.

Berbeda cerita dengan TK. hohoho, ini baru killer. TK 1 kelompok ber-empat. Kelompoknya milih sendiri, jadi tentu saja aku membentuk kelompok berisi anak ambis quanta: Krisna, Tsaqif, dan Naufal. Sebenernya soal TK gak sulit, cuman kulinya aja itu lho. Bayangin TK2nya dikasih 6 fungsi nonlinear f terus diminta cari x yang memenuhi f(x) = 0. "loh susanya dimana?", diminta coba dengan 3 cara, dan masing-masing cara pilih 5 titik mulai, dengan batas laporann cuma 5 halaman. Jadi, kami menggunakan sneak technique: semua tabel, gambar, plot, dkk dimasukkin appendix (gak dihitung halaman) jadi kami bisa mencapai limit 5 halaman tersebut.

laporan 5 halaman, appendix 8 halaman.

Skema penilaian TK anum lumayan "menarik". Bobot 60% untuk kerapihan penulisan, 40% di actual content.  yeah, thats how u know a matkul is hard.

Setelah PJJ

Minggu pertama PJJ belajarnya lewat video rekaman, yang menurut saya sangat baik karena bisa nonton dengan 2x speed. Tetapi entah kenapa minggu-minggu berikutnya malah berubah jadi pembelajaran google meet. Yah sedih. Aku sebenernya paling suka belajar lewat video karena bisa diskip-skip dan diatur kecepatannya.

Kejelekannya belajar anum lewat google meet sangat terasa: 
*Pak Chan jelasin suatu bahasan*
Galang: "oh gampanglah" *lanjut ngoding AP*
*5 menit kemudian, ngeliat layar google meet*
Galang: "what the...."

Jadi untuk anum di pertengahan PJJ aku sudah nyerah nonton google meet karena toh terlalu lambat juga. Jadinya ya aku gak ikut lagi meetnya dan nantinya nonton hasil rekamannya doang. Lumayan lah lebih ngerti. Kalau masalah materi, materi setelah PJJ lebih seru lagi dibanding sebelum PJJ. Menurutku materi paling keren tentu saja integral numerik. Ngitung integral pas matdas 1 untuk fungsi "sederhana" aja panjangnya 1 baris, eh di anum integral yang paling susah pun bisa diselesaikan dengan kode yang mirip *oops*.

TK4 Anum menurutku sangat keren
kita inputkan titik-titik random, program bisa connect the dots secara smooth


PR anum: *rilis*
Krisna H+1:

deadlinenya lagi seminggu


Rating 10/10: Menurutku matkul paling seru semester ini, menunjukkan power dari komputer over analitik. Topiknya seru-seru kecuali floating point. Berasa dapat power baru setelah lulus. Catatan: aku suka mat jadi matkul ini seru, kalau engga suka ya just another hambatan.

Effort: 3/10: Walau matkul seru, effortku disini sangat kecil? :O. Ngerjain PR individu maks sejam kelar, TK relatif santai dibanding matkul lain, di kelas hanya merhatiin 10%, dan kalau ujian paling mentok cuma nerapin algoritma yang sudah diajarin secara mentah (sedikit *analisis* whatsoever). 

Tapi aku ngerti kok kalau ini matkul yang killer bagi banyak orang. Keliatan waktu pembagian nilai akhir, standar diturunin sehingga 79 masih mendapat A, 40 masih lulus (C). Aku sendiri cukup kaget karena "hanya" dapat 82 despite enthusiasmeku di anum. Eh tapi ternyata aku doang yang dapat nilai diatas 80 saat itu...

Advanced Programming (AP)

first impressions


Yang sebelum-sebelumnya matkul teori, kalau yang ini lebih berat ke koding. Pada matkul ini kita belajar teknik-teknik koding kece-kece, seperti design patterns, clean code, microservices, dan asyncronous programming. Jadi secara kasar kita bukan belajar cara ngoding memenuhi suatu requirement, melainkan cara berpikir dalam koding agar mempermudah di masa depan? wakakakakk jelek banget penjelasannya. Oke mending sambil bahas materinyaa~

Sebelum PJJ

Materi bahasan sampai UTS cuma design pattern. Design pattern itu semacam cara-cara ngoding tertentu yang sudah diuji agar nanti kedepannya kodingannya mudah di maintain. Wah ini keren sih. Dulu waktu magang aku selalu takut ngoding karena mikir gimana nasib kodinganku kedepannya, nah sekarang dengan magic "design pattern" aku gaperlu lagi pusing-pusing mikirin itu! pake design pattern, hidup tenang :D. 

Jadi design pattern itu sebuah metodologi ngoding untuk permasalahan-permalasahan yang umum dalam ngoding. Jadi misal nih mau buat fitur alarm. Kan kita harus buat beberapa object "alarm" yang akan membunyikan alarm saat jam menunjukkan pukul tertentu. Dari sini kan kita harus ada suatu metode praktis agar object alarm kita dapat update dengan jam. Tentunya kita bisa ngoding cara biasa, baca-baca dari jam, dan lain-lain. Tetapi kalau kita ngodingnya asal, saat mau nambah fitur baru bakal kesulitan :O. Disini kita bisa menggunakan observer pattern yaitu suatu cara ngoding bisa menyelesaikan masalah ini dan telah diuji jika ada perubahan fitur hanya mengubah sedikit kode. 

Ternyata dulu aku pernah implementasi design pattern saat belum tahu yaitu waktu intern di OVO aku implementasi template method pattern untuk algo-algo videonya karna aku mikir cara gini gampang di extendnya (link blog). Setelah lulus desain pattern, jadi #smackinyaqueen dalam ngoding deh.

Woah, mudah-mudahan sudah jelas AP ngapain. Jadi bukan belajar problem solving dengan kode, tapi teknik-teknik yang membuat kode tahan lama dan adaptif terharap perubahan. Keren deh.

Untuk AP, diadakan lab mingguan. Sistem labnya unik. Soal di upload hari senin/selasa, lalu saat lab di hari kamis kita hanya perlu demo ke asisten. Aku kesusahan di lab pertama dan kedua. Di kelas santai-santai bahas kedai kopi dan resto pizza, tau-tau demonya dihajar spring boot. Bener kata Kak Fairuzi di blognya kalau errornya gak deskriptif banget ditambah dokumentasiya yang jelek banget.

kangen django </3



Jadi untuk menghadapi lab biasanya aku kerjain H-1. Jadi tunggu temen-temenku kelarin dulu terus tinggal baca history chat :). Tapi lama-lama aku lumayan ngerti kok. Kira-kira lab 3 seterusnya aku udah jago bisa berdiri sendiri. Yang mengganggu tetep demonya. Jadi lab AP dimulai jam 3, sedangkan jam setengah 5 aku harus naik kereta untuk les jepang. Jadinya aku harus dapat demo urutan awal. Masalah pertama, demo ke asdosnya di rolling setiap minggu jadi kita gatau siapa yang bakal demoin di minggu itu karena baru diumumin beberapa menit sebelum lab dimulai. Masalahnya kedua: anak-anak ambitch udh nungguin di lab dari jam 1!  jadi kalau telat dikit datang ke lab, sudah dehh urutan terakhir.

ketika gatau siapa asdosnya namun ingin demo paling pertama
isi nama di setiap asdos.

Untuk UTS AP sangat diluar ekspektasi. Karena UTSnya online, sistemnya dirombak total. Sejujurnya sebelum UTS aku ngerasa cukup pede karena materi ujiannya cuma 1 (design pattern). Ternyata UTS AP diluar dugaan! ada faktor waktu! Ada sesi teori dan 3 sesi koding. Satu sesi koding itu kira-kira setengah jam. Nah, tingkat kesulitannya setara lab. Bayangin lab waktunya unlimited, ini cuma setengah jam. Ya RIP lah. Untungnya sih aku fast hands jadi selesai, tapi melihat group chat Quanta sehabis lab, banyak yang tidak seberuntung aku. Aku pun selesai tidak bisa dikatakan sempurna, tapi atleast sudah running lah.

Setelah PJJ

Berbeda dengan matkul lain yang justru berkendala saat PJJ, menurutku AP jadi lebih enak setelah PJJ. Menurutku sesi tatap muka di kelas terlalu lambat. Konsep design pattern yang bagiku cukup intuitif bisa dijelaskan sampai satu jam. Jadi karena PJJ aku bisa nonton google meet sambil ngerjain tugas karena interupsi lebih sedikit...

Setelah PJJ ini lab sudah ditiadakan. Sebagai penggantinya, TK AP dimulai. TK ini hanya mengerjakan 1 proyek dan durasinya dari selesai UTS sampai UAS. Meski demikian, proyek ini ukurannya besar. Setiap minggu kita harus progress report menambahkan fitur baru yang berhubungan dengan konsep yang sedang dipelajari di AP.

TK ini berdarah-darah

Jadi kan aku berkelompok dengan Sonya, Naura, dan Stephen. Aku propose kita buat line chatbot tentang SRS flashcard (macam anki gitu). Kenapa chatbot? karena belom ada aja. Di kepala dan di teorinya sih gampang, dan temen-temenku pada setuju. Masalah utama muncul saat mulai ngoding seperti yang dibilang di atas, springboot errornya jelek, dokumentasi gaje

Jadi, 2 minggu pertama 10% ngoding, 90% searching-searching error-error aneh karena web springboot gak jelas. Beberapa error yang kita temukan:
- error saat ngerun saat masih template
- error spring JPA gamau connect ke aplikasi
- error autowired gak detect class
- error connect database
... dan ini baru 2 minggu pertama :)

Untuk menambah penderitaan, dokumentasi springboot is fucking shit. Untuk masing-masing error itu aku bisa ngabisin waktu 2 - 4 hari nonstop googling solusi. Jadi, aku hampir selalu skip kelas pagi (Anum, AP) untuk ngerjain TK ini. Untungnya selasa kamis gaada kelas sync sehingga beban berasa berkurang. Tapi yah, 2 minggu pertama TK dimulai dengan dasyat, gmn minggu-minggu selanjutnya ya :)

Bener saja, selama 3 minggu kedepan, hampir semua waktuku habis untuk ngoding TK AP. Project kami memanfaatkan interaksi antar user seperti berikut:

ada tanya/jawab



Nah, sayangnya LINE api tidak support websocket (aku sudah tanya developernya langsung). Sehingga tidak ada cara builtin untuk membangun sebuah komunikasi dengan user (menyimpan state sebelumnya). Nah, untuk menghadapi ini, kita koding state handling manual memanfaatkan database. Jadi, setiap user memiliki "state" yang menyatakan user sedang ada di interaksi mana. Nah, desain ini juga sulit karena ada beberapa fitur, terutama karna ini AP yang meminta struktur kode yang baik. Setelah thonkang, aku nemu arstikekturnya yaitu sebagai berikut:

jadi main oper-oper. Dari root ada handler ke fitur, yang lalu ada handler ke setiap kemungkinan interaksi


jadi, ada 2 state class. Class pertama menyatakan user ada di fitur mana, dan Class kedua menyatakan user ada di tahap mana di fitur tersebut.

Karena struktur ini, setiap fitur, bahkan sesimpel hapus kartu, memerlukan sangat banyak kode. Harus koding handler untuk masing-masing tahap, harus ngoding state managementnya, dan tentu saja harus ngoding testnya agar aman. Kita ada berapa fitur? 13 fitur :)


Jika TK sudah se-kompleks ini, disinilah TDD sangat membantu. Manfaat yang aku rasakan:
  • Bisa menangkap bug (jelas). Dalam TDD tentunya kita buat test terlebih dahulu untuk semua kasus-kasus yang mungkin sebelum ngoding. Karena ada cukup banyak skenario disini, bug dapat ditangkap dengan mudah.
  • Memudahkan refactoring. Aku beberapa kali refactor kodeku. Karena testnya yang lengkap, aku tidak perlu takut merubah struktur kodeku karena nanti dapat diuji kebenarannya dengan menjalankan testnya.
Aku juga belajar teknik powerfull dalam testing: mocking. Sebelum UTS kita sudah diarahkan untuk memakai Mockito, sebuah framework testing java. Namun aku dan temen-temenku pada "ADZLJZFKJ MOCKITO WTF IS THIS". Setelah UTS, aku paksain belajar Mockito lewat tutorial dan ternyata mocking dan mockito sangat powerful.

Inti dari mocking: misal kita mau test sebuah class QuizAnswerer. Nah, quiz ini memanfaatkan beberapa class lain, seperti QuestionRepository untuk mendapatkan pertanyaan. Kita mau test fungsionalitas QuizAnswerer dimana dia mendapatkan pertanyaan dari QuestionRepository lalu menjawabnya. Kalau tanpa mocking, berarti kita harus siapin database, isi database, lalu implementasi QuestionRepository juga harus sudah siap. Nah, dengan mocking, kita bisa buat mock dari QuestionRepository. Jadi kita buat class palsu yang dipakai di test, yang dimana return value dari method palsu ini kita bisa set secara hardcode. Nah, jadi dengan begini kita tidak perlu set-up database, tidak perlu ngoding QuestionRepository, dan cukup mocking saja. Aku rasa ini essensial untuk TDD proyek ini karena kodenya sangat banyak dan tanpa mocking, mungkin semua kode harus ada dulu sebelum bisa di test (ga TDD dong...).

Oke lanjut ke materinya. Materi sebelum UTS full bahas design pattern. Setelah UTS, setiap minggu ada materi baru. Dan menurutku semuanya keren-keren. Seperti:
  • Microservices: bagaimana caranya memecah proyek menjadi servis-servis yang lebih kecil. Dua servis berbeda bisa saja memakai teknologi berbeda (1 pake springboot, 1 pake python misalnya).
  • Asyncronous Programming:  Bagaimana menjalankan dua proses berbeda secara barengan.
  • Profiling: Mengukur performa kode.
Setiap minggu kita harus mengimplementasikan konsep yang diajarkan di kelas pada TK kita. Menurutku, konsep yang susah cuma microservices, karena ini hal yang benar-benar baru dan menuntut deployment. Apalagi, ini adalah materi kedua di AP sehingga kondisi TK saat itu masih menyedihkan :(. Untuk handle ini, aku hanya tersenyum dan nunggu Nadhif ngepost tutorialnya di grup. Tapi ujung-ujungnya tidak aku pakai dan menggunakan cara hackish buatanku sendiri .__. Jadi Nadhif pake service registry, aku pake hardcode link. Karena limitasi heroku yaitu akan mematikan service yang tidak aktif sehingga tidak bisa di deteksi service registry.

Proyek besar, tapi gapapa kan TK berempat juga?


Yeah jadi sepertinya aku terlalu carry di proyek ini. Aku yang discovery cara make teknologinya, yang mikirin arsitektur, dan yang ngoding hampir semua fitur dasarnya (jadi yang lain tinggal ngikut). Bisa dilihat sendiri dari jumlah commitnya :"(. One step further, kita punya 2 repo karena mengimplementasikan microservices. 1 repository hanya aku yang ngoding. Karena aku penganut TDD, setiap minggu aku bisa keluarin 50 - 70 tests untuk implementasi AP ini, bahkan ada satu HARI dimana aku buat 75 test. Ini sudah masuk ke rekor-rekor tentunya.

Tapi yah memang salahku juga memilih proyek yang terlalu besar. Di kertas keliatannya gampang, tetapi satu demi satu issue muncul yang membuat proyeknya ternyata hellish. Pesan moral: jika TK bareng aku, jangan kasi aku nentuin ide. Saat PPW semester lalu ini terjadi juga. Dari penentuan design pattern aja udah keliatan kalau proyek ini jauh lebih berat dibandingkan kelompok lain. Kelompok lain: pakai 1 - 2 pattern, kelompok 3:




Secara keseluruhan, aku sangat suka materi dari AP walaupun kodenya hell dan aku habisin paling banyak waktuku disini. Setelah lulus AP aku jadi lebih hati-hati ngoding sehingga bisa menciptakan kode yang maintainable. Ini kepakai di part timeku sekarang, dimana requirement baru bisa datang setiap minggu. 

suatu hari aku bosen dan "sit in" kelas onlen dosen lain

Jika kalian penasaran dengan proyek AP kelompok kami, bisa buka slide ini, didalamnya ada link youtube, dan link chatbotnya. Kalau tertarik, ke git reponya

Special mention buat lagu hero too, versi aslinya, dan covernya Raon Lee yang menemaniku selama ngoding TK AP. Rasanya gak lengkap ngoding kalau gak sambil ngeloop lagu ini.

Rating 9.9/10: Teknik-tekniknya sangat berguna. Aku rasa skill kodingku naik kasta setelah lulus matkul ini. Sayangnya penilaian komponennya (UTS, UAS, Kuis, Tugas) subjektif sehingga aku yang ngerasa ngerti jadi gak dapat nilai sesuai ekspektsi.

Effort 10/10: Ada masa dimana aku skip semua sesi google meet kelas untuk full ngoding AP. Aku bisa buat 70+ unit test per minggu untuk appku. Inget guys, riset dulu sebelum nentuin project AP!

Asdos PPW



Tentu saja tidak ada semester yang lengkap tanpa ngasdos. Ini berarti kedua kalinya aku ngasdos setelah DDP1 semester lalu. Aku awalnya cuma mau ngasdos DDP2. Aku cukup yakin dengan nilai akhir DDP2ku 102, ditambah IPKku yang sangat memuaskan. Tetapi sayangnya aku tidak diterima

me buka siasisten setiap bangun tidur

Setelah sedih, aku lihat slot asdos PPW masih dibuka. Secepat kilat aku daftar. Malam itu juga langsung direkomendasikan. HAPPY!!!! Ternyata aku beruntung banget karena memang pendaftaran asdos PPW ditutup hari itu. Woah! akhirnya aku diterima dong, yay ngasdos lagi. Karena PPW kelas nyodok, hanya dibuka 1 kelas jadinya hanya perlu 5 asdos. Asdos PPW saat itu ada Aku, Kak Michael, Alghi, Okto, dan Leo.

Jadi malam saat aku direkomendasikan asdos PPW, aku seneng banget jadi buat story IG. Nah si Alghi nge DM aku nanyain asdos apaan. Aku jawab rahasia dong. Taunya besok ketemu di ruang rapat asdos PPW...

Anyway awalnya aku lumayan takut jadi asdos ini, karena aku sendiri juga dulu sering nemu masalah saat ngoding PPW, dan juga bisa habis seharian buat googling error-error aneh. Tapi ya aku coba jalanin aja, asdos gak harus sempurna juga kan? Itulah mengapa asdos ada banyak.

*Ikut sit in kelas perdana*
Le anak toki: "Kak, ngulang ya?"
Galang: "weits, cek BRP"

Salah satu perbedaan utama dari asdos DDP1 lalu dan PPW adalah banjir buat soal. Pada PPW ada tugas mingguan (story) sebanyak 10x. Karena asdos berlima, dan satu story dibuat oleh dua asdos, maka assignment membuat soal di obral. Mungkin sangat berbeda dari PPW semester ganjil dimana jumlah story sama, namun dikeroyok 40+ asdos. Aku sendiri buat 3 story :).

story 2 buat design web untuk asdosnya
shameless plug promosi blog

Sebelum PJJ lab berjalan mulus. Asdos keliling-keliling lab untuk bantu debuggin. Secara ajaib aku bisa jawab hampir semua pertanyaan :O, padahal dulu rasanya aku sering banget nanya saat PPW. Ternyata banyak masalah yang aku alami dulu dialamin oleh peserta PPW baru ini. 

Semenjak PJJ, aku merasa difficulty PPW naik pesat. Bukan, bukan storynya disusahin. PPW itu enaknya di conquer rame-rame. Karena PJJ, agak sulit ngoding bareng orang lain sehingga aku juga ngerasa mahasiswanya pada kesusahan. Paling kerasa dari submisi challenge PPW. Sebelum PJJ hampir semua submit challenge. Setelah lab yang submit challenge cuma 3 - 5 orang doang :((

Salah satu target besarku menjadi asdos PPW adalah belajar HTML

How To Meet Ladies

Akibat lain dari jumlah asdos yang dikit, sumber nanya-nanya mahasiswa juga sedikit. Jadinya banyak mahasiswa yang bukan asdosanku yang nanya aku juga, aku jadi belajar banyak banget selama jadi asdos PPW (terlalu banyak, in fact)

Untuk meriksa tugas sendiri, meriksa tugas PPW jauh lebih sulit dari tugas DDP1. Meriksa 1 tugas DDP untuk semua anak-anakku butuh rata-rata 30 menit. Sedangkan, meriksa 1 anak di PPW butuh 30 menit, jadi 1 tugas aku bisa habis 3 - 5 jam tergantung fokusku. Jadi pengerjaan tugas (disebut story) dilakukan dengan ngoding dan mengisi menjawab google sheets. Meskipun secara keseluruhan isinya bagus-bagus, kadang-kadang ada juga jawaban seperti ini (actual jawaban dari seorang asdosanku)

"Persona yang saya buat ada 3 yaitu persona ibu , persona HRD, dan persona teman. Alasan saya adalah membuat persona ibu adalah agar ibu saya bangga dengan hasil karya yang saya buat ini dan ibu adalah yang akan menjadi pengunjung setia dan yang akan memberikan saran yang membangun, persona HRD adalah website saya mungkin akan salah satu CV yang saya buat agar HRDnya tertarik untuk menerima saya ketika saya melamar kerjaan di perusahannya, persoana teman saya ingin menginspirasi mereka agar membuat seperti yang saya buat dan mudah-mudahan website saya bisa menjadi benchmark dan saya harap juga teman dapat memberikan keritik dan saran agar website ini lebih baik lagi. link persona saya bisa dilihat di [REDACTED]"

Aturan PPW untungnya sudah jelas. Bahasa gaje: nilai kecil. Aku udah tanya ke temenku yang suka bikin puisi kok, tulisan di atas bukan bahasa sastra tinggi. Jadi, perhatikan deadline tugas nulis gaes, jangan ngebut nulis deket-deket deadline. Aku udah kasih feedback sehingga tulisannya di tugas-tugas berikutnya improve jauh.

Selain buat story, sebagai asdos juga harus buat soal asistensi uts/uas. Untuk UTS karena dulu masih offline kita bisa kuis kahoot di lab. Karena kahoot jadi gak semua pertanyaan serius, ada pertanyaan macam gini:



Kalau untuk asistensi UAS karena sudah PJJ, jadinya soalnya serius semua. Untuk UAS, asdos-asdos lain jahad gamau bantu buat soalnya >:( semuanya pure buatanku. Aku buat soal yang lumayan sulit, karena prinsipku:

"Nama lain dari soal pilgan yang tidak menjebak adalah soal bonus"
Galangkangin Gotera


Kalau ngeliat statisticsnya sepertinya sukses:

perfectly uniform, as all things should be



live report pengerjaan asis di grup besar PPW

Bonus memes:


ketika deadline rilis TK2 H-1 dan belom translate


Penutup


Wew that was fun. Matkul-matkul semester 4 semuanya seru, jadi aku berusaha keras mikir pembagiannya yang adil. Aku gak ngambil organisasi kecuali compfest jadi aku bisa ngambis dengan tenang. Ada 2 matkul killer yang ngabisin banyak effortku yaitu AP dan MPPI (next part).  Untuk PJJ sendiri, aku gak terlalu suka >:(. Suasana kelas beda bgt dengan di kampus, apalagi beberapa matkul cuma post video doang. Untuk meminimalisir, biasanya aku dan temen-temenku streaming videonya bareng jd lebih berasa kek kelas.



Yang penting dan aku rasa perlu disebut lagi, aku merasakan character growth yang besar di semester ini pada TDD. Sebelum semester 4 pendapatku tentang TDD: "HAHAHA TDD, NGODING DULU, TAPI COMMIT TEST DULUAN", sekarang sudah seperti second nature aku TDD (buat test duluan). Ada matkul lain yang harus ngoding juga (basdat) dan rasanya aneh gitu karena gak buat test. TDD penting guys

Anyway penutupnya gitu aja dulu karena masih ada part 2 :).

see you


Comments

  1. Terima kasih Lang udah mau ngebuat review ini. Gw seneng banget dapet bocoran advanced programming. Ditunggu review selanjutnya lang :)

    ReplyDelete

Post a Comment

Popular posts from this blog

Menjadi Maba yang Penuh Ketidaktahuan

UI baru saja selesai UTS tadi, dan UTSnya sangat greget. Postingan sebelumnya sebenernya hanya untuk bilang kalau sekarang aku punya domain, ini postingan yang sebenernya. Jadi kali ini aku bakal buat nyeritain gimana aja sih selama 3 bulan pertamaku kuliah di UI.  Catatan: bukan berarti bakal ada update tiap 3 bulan ya, wkwkwk. Kurang lebih postingan ini jadi karena sangat banyak kegiatan-kegiatan "orientasi" yang aku alami dan sudah terlalu banyak bahan. Aku yakin nanti kegiatan perkuliahannya bakal membosankan dan mungkin saja bakal update 1x pertahun. Kamus: Maba = Mahasiswa Baru. Pacil = Fasilkom. Kutek = Kukusan Teknik (daerah di belakang UI) Kukel = Kukusan Kelurahan (daerah di belakang UI) Detos = Depok Town Square (Nama suatu pusat pembelajaan di Depok) kuis = ulangan PA = Pembimbing akademis (Paling mirip dengan "wali kelas" di SMA) KAMABA Singkatan dari Kegiatan Awal Mahasiswa Baru. KAMABA  dibagi me

Mengikuti ICPC 2019 Bagian 1: Jakarta Regional

Halo, sudah lama tidak berjumpa! Semester ini aku terlalu banyak kegiatan jadi lupa ada blog ini. Jadi, liburan semester ini bakal ada banyak blog-blog yang bakal keluar ^_^. Kali ini, aku bakal nyeritain pengalamanku mengikuti ICPC lagi tahun ini. ICPC,  The International Collegiate Programming Contest  adalah lomba programming yang setiap tahun diadakan. Tentunya aku ikut lagi dong. Apalagi, sudah dibekali ilmu dari matkul TKTPL saat semester 2. Peminat CP di UI lumayan banyak, jadi diadakan seleksi untuk masuk tim intinya. Aku lolos :D. Pembentukan Tim Aku gak perlu mikirin mau ngetim siapa, karena komposisinya sudah ditentukan oleh Pak Denny. Aku dapat tim bareng Kak Norman dan Budi. Aku lumayan seneng dengan timku. Tahun lalu, aku ngetim Kak Norman juga jadi sudah tahu kemampuan masing-masing. Budi, aku sudah sering ketemu saat ngajar di pelatnas 2 dan pelatnas 3 dan skillnya jago, Aku mikirnya dia bakal ngecarry kita, hehe. Oh, kita kebagian regional Kuala Lumpur. Jad

Teknik Rekursi untuk Menjawab Soal di Kertas

OSP kurang dari seminggu lagi dan dengan semakin seringnya muncul soal tipe ini,ingin  mencoba membahasnya. Kata orang kalau kita ngajarin orang lain jadi tambah ngerti maka jadilah post ini :v (untuk alasan lupa dan kurangnya niat mencari soal asli, beberapa soal di post ini mungkin memiliki deskripsi berbeda dengan soal aslinya) Pendahuluan “banyaknya string biner dengan panjang 8 dimana tidak ada 2 angka 1 yang berdampingan adalah?” saat membaca  soal ini, mungkin kita akan nyoba pake inklusi ekslusi yaitu banyaknya semua kemungkinan – banyaknya kemungkinan 2 angka 1 dempet + banyaknya kemungkinan 3 angka 1 dempet -… tapi, kasus banyak bakal mabok. Trus nyoba kuli aja, kelamaan. Jadi disini solusi yang tepat adalah menggunakan rekursi. Misal F(n) banyaknya string yang memenuhi syarat tersebut dengan panjang n.  Misalkan juga kita punya F(n) dan F(n-1), maka kita bisa mendapat F(n+1) sebagai berikut: F(n) tidak mungkin memiliki 2 angka 1 yang berdampingan. Maka, jika didepa