EP 149

Kisah-kisah Menyeramkan dgn @zainfathoni - Ngobrolin WEB

Bagikan:

🗣️🕸️ Selasa malam waktunya #ngobrolinWEB! Bertepatan dengan malam selasa kliwon, kita akan membacakan kisah-kisah menyeramkan yang dikirimkan penonton dan pendengar melalui form dan juga medsos ⏲️ Mulai mengudara jam 20:00WIB. Mari kita ramaikan! Kunjungi https://ngobrol.in untuk catatan, tautan dan informasi topik lainnya.

Ringkasan Episode

Bantu Koreksi

Episode spesial "Kisah-kisah Diiramakan" ini menghadirkan Mas Zain yang berbagi cerita horor pengalamannya sebagai engineer. Dua insiden utama dibahas: pertama tentang MIME type error yang menyebabkan JavaScript tidak dieksekusi sama sekali, dan kedua tentang masalah intermiten pada asset loading akibat konfigurasi double CDN. Diskusi juga mencakup pentingnya dokumentasi sebelum melakukan perubahan konfigurasi, serta pembelajaran dari insiden yang berlangsung hampir setahun sebelum akar masalah ditemukan.

Poin-poin Utama

  • Silent error adalah salah satu error yang paling sulit didiagnosa karena tidak menampilkan pesan error di console
  • MIME type salah (text/plain instead of application/javascript) membuat browser menolak untuk mengeksekusi JavaScript tanpa ada pesan error
  • Setelah upgrade CI/CD, konfigurasi default server mungkin berubah dan perlu diset secara eksplisit
  • Double CDN (Cloudflare di depan CloudFront) menyebabkan cache invalidation issues dan race conditions
  • Splitting bundle terlalu banyak meningkatkan frekuensi kejadian error intermiten
  • Screenshot atau dokumentasi sebelum melakukan perubahan konfigurasi sangat krusial untuk recovery
  • Cache adalah pedang bermata dua - mempercepat performa tapi juga menjadi sumber masalah kompleks
Transkrip Bantu Koreksi

0:00[musik]

0:18Dapatkan hanya di Domain Asia

0:20[musik]

0:31[musik]

0:35Nani, kok nggak ada Nani?

0:38Kok nggak seronok sih? Nah ini dong

0:41[tertawa]

0:44[musik]

0:47Sehat, sehat. Kok nggak bisa ini ya?

0:51Kok nggak bisa, kita juga nggak bisa pakai juga.

0:54[tertawa]

0:55Bisa lah, tapi harus dulu tuh yang kita bahas kemarin.

0:59[tertawa]

1:04[tertawa]

1:07Udah gimana tuh?

1:09[tertawa]

1:12Gak bisa banget.

1:15[tertawa]

1:19Mas Zain dia submit cerita lho. Mas Zain mau ceritain sendiri nggak?

1:24Kalau mau saya share lewat WhatsApp nih.

1:29Terimiatnya, diundang langsung buat menceritakan gitu ya.

1:34[tertawa]

1:36Iya, eh tapi dengar-dengar dari bocoran katanya mau ngisi ini ya.

1:43Deves ya, oh oke saya siap ya.

1:47Boleh, asik, asik, asik, asik.

1:49Ketemu di Jogja ya sama Ivan ya.

1:54Apa kabar di teman-teman semua?

1:58Mudah-mudahan sehat.

2:02Intro dulu dong, kenapa episode ini jadi kisah-kisah diiramkan?

2:08Kenapa ya?

2:09Karena hari ini Selasak Liwun, malam Selasak Liwun.

2:17Malam Selasak Liwun itu, kan kita mau nyari Jumat Liwun, tapi kan kita live-nya Selasa.

2:24Ternyata Selasak Liwun itu juga ada sesuatu, ada sesuatu yang spesial.

2:29Ada mitosnya.

2:31Sebentar, ya ada mitosnya. Sebentar saya screen dulu ya.

2:34Awalnya kan kita mau Halloween ya, Halloween cuman Halloween kan bukan budaya kita.

2:40Bukan kalifat lokal ceritanya.

2:44Jadi biasakan Jumat Liwun itu yang angker kan ternyata.

2:52Selasak Liwun juga ada.

2:55Hari Selasak Liwun dinamakan Anggara Kasi dan dianggap sebagai hari istimewa dalam budaya Jawa dan Bali.

3:03Oh gitu.

3:05Jam 9 ada meeting, gak apa-apa Mas.

3:08Silahkan, sudah saya share ya linknya kalau mau diceritakan langsung.

3:15Ceritanya menarik juga.

3:18Ide siapa sih yang cerita orang, kalau gak salah ada yang submit di GitHub ya.

3:23Di GitHub isu Eka awalnya.

3:26Kita pernah bahas itu, terus ya kayak Syntax FM atau podcast lainnya kan.

3:31Ya Syntax FM kemarin tuh seru banget.

3:34Sampai mereka bikin lagu.

3:36Sampai dua episode lagi.

3:37Single nya.

3:38Oh oh, seru banget.

3:40Kalau mereka emang niat perut, ngapa-ngapain.

3:43Kita minimal.

3:45At least tadi mukanya udah serem.

3:48Sisanya Mas, sebenarnya kita gak ngapa-ngapain, gak pake kostum.

3:51Serem.

3:52Udah serem.

3:53Ya, ya, ya.

3:55Nah, jadi sebelum kita memulai ya, kita membuka dengan ini ya.

4:00Ini keseremannya terjadi.

4:02Ini juga serem sih.

4:05Oh ini kostum ya, kostum Halloween.

4:08Ya ternyata ya, masih bergantung kepada US E1 ya.

4:14Kalau ada yang kena ya.

4:17Berarti maksudnya itu waktu US E1 error.

4:22Ya, down kan.

4:24Yang lain udah takut.

4:26Betul, jadi biar gak kena temen-temen.

4:30Bisa itu aja pake VPS nya Dominesia.

4:34Pasti gak kena.

4:37Karena data center-nya kan di E1.

4:40Coba promonya apa dulu, Nish?

4:43Jadi kalau mau pakai VPS nya Dominesia,

4:48itu temen-temen bisa pakai cloud VPS Turbo.

4:51Itu dapat diskon 50%.

4:54Pakai promokod ngobrolin VPS DN.

5:00Ngobrolin VPS DN.

5:01Dan itu bisa dipake berulang kali, nggak perlu bikin akun baru,

5:04pakai akun yang lama juga bisa.

5:06Kalau misalkan mau yang lebih simple,

5:08kayak kemarin saya cobain hosting yang bisa diinstall Node.js,

5:13itu bisa juga, tapi diskon-nya lebih murah.

5:15Diskon-nya 10%.

5:17Pakai promokod ngobrolin web DN.

5:22Jadi sekali lagi terima kasih buat Dominesia.

5:25Sudah bersedia untuk berkolaborasi di episode kali ini.

5:31Nah, pas banget nih.

5:34Ada orangnya langsung yang mau menceritakan.

5:37Jadi langsung aja kita invite.

5:40Tepuk tangan dong.

5:42Sanggup-sanggup.

5:44Sanggup tepuk tangan lah.

5:45Cerita horor.

5:46Kenapa pencet?

5:48Nah, cerita horor.

5:50Atau horor.

5:51Pasti semua mengalami kan ya.

5:53Pasti semua mengalami.

5:55Biasanya tuh kayak apa ya?

5:57Kayak perpeluncoan ya,

6:00kalau di dunia akademis ya.

6:04Biasa selalu aja ada terjadi kesalahan-kesalahan konyol gitu ya.

6:08Kesalahan konyol.

6:10Nah, kalau Mas Zain sendiri,

6:12pernah punya cerita apa nih yang bisa dibagikan?

6:14Belum bisa jadi ini ya.

6:18Belum bisa jadi server engineer kalau belum pernah.

6:22Iya, belum bisa jadi senior engineer

6:24kalau belum drop data base production.

6:27Waduh.

6:29Ngeri banget ya.

6:31Gimana nih ceritanya Mas Zain?

6:35Dulu waktu saya di Ninja Fan itu sempat...

6:41Kan ini Jumat Suri ya.

6:45Siang juga ya.

6:49Horor itu waktu-waktu horor ya.

6:52Jadi lucunya saya lupa alasannya waktu itu.

6:55Kalau nggak salah karena waktu itu kayak Gatsby JS kan.

6:59Gatsby itu kan.

7:01Oh, nge-buildnya lama karena banyak gambarnya.

7:05Atau banyak assetnya.

7:07Waktu itu sih belum...

7:09Masalah build belum lama sih kayaknya.

7:11Masalahnya bukan di build yang lama.

7:13Tapi ya udah lumayan banyak sih gambarnya.

7:15Cuman kayaknya nggak selama.

7:17Karena masih awal-awal jadi belum banyak lagi.

7:19Tapi terus karena waktu itu ada kebutuhan update content kalau nggak salah.

7:23Dan kan setiap update kan harus di rebuild kan.

7:25Jadi dari tim yang ubah kontennya udah bilang ini benar di-update.

7:30Oke udah di-update dari CMS-nya, udah di-update kan.

7:32Dari headless CMS-nya.

7:34Terus kita rebuild deh itu.

7:36Kan tekniknya nggak ada perubahan kode ya.

7:38Jadi harusnya nggak rusak.

7:40Terus tau-tau di deploy nggak bisa dipake.

7:45Jadi deploy tetap, HTML-nya bisa dibuka tapi nggak bisa diteraksikan.

7:50Sedangkan kan Gatsby waktu itu kan masih belum...

7:55Static site-nya masih sangat-sangat mengandalkan...

8:01Ini belum progressive enhancement.

8:04Jadi maksudnya kayak...

8:08Mungkin pindah, link-nya udah bisa ya, pindah-pindah.

8:10Kalau dari situlah ke halaman lain kan bisa pindah.

8:15Routing-nya sudah benar.

8:17Cuman begitu buka halaman itu kan kalau mau interaksi kan...

8:20Harus pakai JavaScript juga pada akhirnya.

8:23Ada tombol klik, ada komentar gitu ya.

8:27Apalagi kalau routing-nya tain site, di-click nggak bisa.

8:31Kalau dibuka halamannya langsung bisa.

8:34Karena yang di-load kan HTML-nya.

8:37Kalau dari nge-click link, soft link, soft navigation nggak bisa dong.

8:42Seram.

8:44Jadi ada beberapa navigasi yang soft itu jadi nggak bisa gitu.

8:49Ada yang main menu-nya masih bisa kan, header biasa gitu.

8:54Header link, soft link biasa.

8:57Berarti.

8:59Masalahnya ini website komport itu.

9:07Website utamanya perusahaan logistik.

9:10Jadi pasti ada butuh tracking kan.

9:12Tracking kan pasti pakai JavaScript.

9:14Oh, tracking pengiriman barang ya.

9:19Iya, bahkan kalau pake...

9:22Ngetikin paket daftar tracking-nya itu.

9:29Sebenernya kan tekniknya cuman buka query params.

9:32Terus query paramsnya ntar kita patch lagi, ada JavaScript yang patch dulu kan.

9:37Kan belum server render kan.

9:39Kalau di server render mungkin bisa.

9:41Karena masih ala-ala kan, masih sumi-sumi.

9:44Jadi cuman yang lencet, cuman static, cuman gitu aja.

9:48Template-nya awalnya terus, satu buat nampilin hasilnya kan harus pakai JavaScript.

9:52Itu nggak jalan, jadi semua fungsinya pasti yang membutuhkan JavaScript mati.

9:56Bingung, udah repeat, udah ulang kali mau repeat kembali sebelumnya sebagainya.

10:01Ini kenapa nggak, nggak jadi-jadi gitu.

10:04Masalahnya di konten.

10:08Jadi itu rebuild kan kita.

10:10Kita rebuild, nggak bisa.

10:12Mau report, nggak bisa karena somehow ICD-nya habis historinya.

10:17Tapi kalau report kan bisa pakai asset yang udah di place dulu kan.

10:20Ini kan saatnya klik build kan.

10:22Jadi ada build yang kemarin, kemarinnya gitu kan.

10:24Kan sebenarnya tekniknya tinggal diquail yang udah di build kemarin.

10:27Kan bisa gitu.

10:28Masalahnya semenjak saya klik itu, sebelumnya nggak ada historinya lagi gitu.

10:34Entah kenapa aku ilang.

10:36Jadinya, jadi kita nggak bisa report gitu kan.

10:39Terus karena ternyata itu terjadi setelah teman-teman infra ngerombak ICD-nya.

10:47Jadi cache build yang sebelumnya udah ilang duluan.

10:51Jadi mau nggak mau harus ditemukan masalahnya, harus diselesaikan.

10:56Saat itu juga.

10:58Jadi nggak bisa diselesaikan.

11:00Masalahnya tau kan JavaScript-nya nggak jalan kan.

11:04Itu tau kan masalahnya kan.

11:06Tapi kenapanya ya?

11:08Kenapanya kita nggak tau.

11:10Pada perubahannya cuma konten ya.

11:12Tapi gara-gara rebuild itu ya, perubahan CD-CD ya.

11:16Ya udah kita nggak tau ini kenapa nggak jalan.

11:20Kenapa semua yang berhubungan dengan JavaScript aja nggak jalan.

11:23Ya namanya saya anak baru front-end.

11:26Meskipun titlenya udah senyap.

11:28Tapi kan sebenarnya baru aja pindah ke front-end.

11:30Iya, sebelumnya back-end ya?

11:34Iya, jadi belum punya itu intuisi tau-tau oh, mind type-nya.

11:38Belum kebayang itu.

11:39Jadi ya udah setelah berjam-jam, terlalu lewat malam.

11:42Ada bagi terus kan.

11:44Tahun-tahun satu pagi, persian gitu nggak ada.

11:47Ini mind type-nya ternyata.

11:49Mind type-nya?

11:52Ya, jadi ternyata waktu teman-teman ini peranggubah.

11:55Kalau salah mind type, nggak dirender.

11:58Nggak di-execute ya?

12:00Nggak dijalani atau nggak dipanggil?

12:02Browser akan menolok untuk menjalankan.

12:04Jadi kan sama artinya harus text.

12:06Harus, kalau nggak salah itu application stress.

12:08Application stress.

12:10Ada dua atau tiga mind type-nya yang diterima oleh browser.

12:17Ada yang legacy, ada yang baru.

12:18Nah, waktu itu mind type-nya salah kayaknya mungkin cuman text.

12:21Jadi akhirnya nggak...

12:22Oh, text, ya.

12:24Textnya TML lagi.

12:26Plain text, plain text.

12:28Jadi jelas gitu ya.

12:30Nggak di-execute.

12:32Ketika server menghantar file JavaScript dengan tipe incorrect mind.

12:35Misalnya kalau kirinya text plain atau text TML

12:40instead of application stress JavaScript

12:42atau text stress JavaScript,

12:44browser akan...

12:46Nggak di-execute sih.

12:48Iya, nggak di-execute sih.

12:50Jadi nggak akan...

12:52Jadi nggak ada error juga ya.

12:54Console error juga nggak ada soalnya.

12:56Kadang nggak di-execute juga.

12:58Soal error pasti.

13:00Tapi penyebabnya nggak ada.

13:02Atau ada? Atau nggak ada?

13:04Mesejnya kriptik sih.

13:06Seingat saya malah nggak ada seingat saya.

13:08Nggak ada.

13:09Karena dia ignored aja.

13:11JavaScript itu yang susah.

13:13Jatuhnya silent error.

13:17Silent error itu yang mematikan sih silent error.

13:21Paling susah itu ngadibatnya.

13:23Ada dua error yang horror itu adalah silent error atau interneten.

13:28Ya.

13:29Kadang bisa, kadang tidak.

13:31Itu susah.

13:32Nggak bisa di-reproduce ya.

13:34Iya.

13:36Itu interneten itu saya juga ada.

13:40Gimana itu interneten?

13:43Oke.

13:45Sebentar, sebentar.

13:46Ini belum selesai, belum selesai.

13:47Ini kan udah ketahuan nih.

13:49Meme nya salah, mime nya salah.

13:51Itu penyebabnya apa?

13:52Gara-gara bangun ulang CI/CD itu?

13:55Tim infra nya atau gimana?

13:57Saya sih nggak tau persisnya apa yang dilakukan teman-teman infra ya.

14:00Cuman kan mungkin upgrade sih.

14:02Saya tuh upgrade versi server nya gitu.

14:06Cuman kan setelah upgrade kan mungkin biasa lah ya.

14:08Kan namanya upgrade persen kan mungkin ada breaking changes.

14:10Harus konfigurasi ulang.

14:11Atau ada beberapa konfigurasi default yang

14:13mungkin by default dia akan serve JS

14:15sebagai timetap yang benar.

14:16Terus jadi exterior.

14:18Harus dibuat eksplisit.

14:19Karena hal-hal kayak gitu kan kadang memang nggak bisa

14:22langsung diteksi atau dikenali secara awal.

14:27Ya nggak, nggak nyalain juga.

14:30Ya akhirnya karena udah tau solusi masalahnya

14:34tinggal bilang ke tim infra buat yang tau.

14:36Oh ini selesai.

14:37Tim infra ngecek.

14:39Setelah dicek benar ya.

14:41Bahkan bukan rebuild, bahkan redeploy aja.

14:43Tinggal redeploy.

14:46Redeploy nggak ya?

14:47Bahkan nggak kayaknya redeploy.

14:49Oh berarti ini platform sendiri ya?

14:52Platform sendiri ya?

14:53Bukan kayak Netlify atau apa bukan ya?

14:55Oke.

14:56Bukan.

14:57Oh CACD-nya.

14:58Ya under the wood sih kan masih pakai cloud ya.

15:01Kalau lupa waktu itu AWS ada di situ.

15:03Oke.

15:05Ya S3 aja sebenarnya ya S3.

15:07Cuman dari S3-nya kan di teman-teman infralight.

15:11Ya nggak tau tuh.

15:12Bukan cloud phone sih.

15:14Iya lupa.

15:16Iya ada cloud phone ya.

15:17Ini yang konferensi di area-area sana itu.

15:20Ya pernah lebih gitu lah.

15:22Jadi setelah dibutuhin main tab-nya ya udah jalan lagi lah.

15:25Jalan lagi normal ya.

15:27Itu dukat kan.

15:29Sampai ke sabtu berarti itu apa namanya lembur.

15:33Atau gimana.

15:35Ya hitungannya lembur.

15:38Tapi kan nggak ada belakang lembur juga kan.

15:41Tapi nggak sampai nginep di kantor.

15:44Oh nggak itu lemburnya.

15:47Nah kan remote kan.

15:48Ya remote ya.

15:50Waktu itu.

15:52Di Singapura kan.

15:53Waktu itu kantor.

15:54Singapura.

15:55Singapura.

15:56Itu kayaknya sebelum pandemi deh kayaknya.

15:57Sebelum pandemi ya.

15:58Berarti kantor ya jumatnya tuh kantor gitu ya.

16:01Iya di kantor jumatnya tuh.

16:02Karena saya masih ingat kejadiannya di kursi itu.

16:05Masih teringangnya.

16:06Jadi deploy di hari jumat nih ya.

16:08Bukan deploy bukan ribut bukan ya.

16:11Bukan deploy kan ya.

16:12Cuma push content aja kan ya.

16:15Technical deploy.

16:17Technical deploy ya.

16:19Ya publish.

16:21Terus di widget dislike hari sabtu nya.

16:26Enggak kan ketahuan nya udah dari jumat ya.

16:30Baru tau masalahnya sabtu gitu.

16:34Enggak jumatnya.

16:35Jadi setelah jumat itu udah langsung ketahuan.

16:38Cuma ya itu kenapa? Karena silent error.

16:42Ya betul lah.

16:43Karena silent error.

16:44Yang menemukan masalahnya di meme types itu siapa?

16:48Waktu itu saya teman saya sih bukan saya.

16:52Oke.

16:53Jadi sama-sama inspect gitu ya.

16:56Ngari-nyari tau.

16:57Kita berdua ini sama-sama.

17:00Sama-sama bergadang.

17:02Siapa duluan yang nemulah gitu.

17:04Oke.

17:05Waduh ngeri juga ya.

17:09Yang lagi tambahannya ini di lokal jalan.

17:13Di lokal gak apa-apa.

17:15Pasti jalan.

17:16Oh iya pasti.

17:19Kode production di lokal jalan nih.

17:23Iya.

17:25Sama kayak itu ya kasusnya ya.

17:28Kayak use case penggunaan docker ya.

17:31Di lokal saya jalan.

17:32Tapi di server enggak ya.

17:34Oh ini karena mungkin karena SSG juga ya.

17:37Server Site Generator itu.

17:39Kalau setiap ada artikel baru.

17:41Mau gak mau ya harus deploy semua kan.

17:44Berubah semua ya.

17:45Kan belum ISG kan.

17:48Belum incremental.

17:49Belum apa namanya incremental ya.

17:52Ya saya lupa ispanya tadi.

17:54DSG ya.

17:56Ya incremental.

17:58Oke.

17:59Wah.

18:01Ngeri juga ya.

18:03Oke.

18:04Yang intermiten.

18:06Oh boleh silahkan.

18:08Gimana.

18:09Dapat bonus kita.

18:10Dapat bonus.

18:11Intermiten itu bukan yang bikin down lama.

18:14Tapi lebih ke barang.

18:16Tapi kita gak tahu solusinya apa.

18:18Oh tapi itu juga kotak sih.

18:21Sebetulnya sempat bikin down juga.

18:25Di perusahaan yang sama.

18:27Bukan beda lagi.

18:29Oh beda lagi oke.

18:31Oh yang sekarang.

18:32Jadi ada bug.

18:34Bugnya itu intermiten.

18:38Jadi dari ratusan aset JS yang kita serve.

18:42Itu somehow ada aja.

18:45Ada beberapa klien yang komplain.

18:47Bahwa aset termo itu gak bisa dulu.

18:49Itu JS ya maksudnya ya.

18:53JS atau JS gitu.

18:55Ya karena ada JS yang.

18:57Ya karena ada JS yang.

18:59Atau CSS juga itu artinya ya aplikasinya jadi rusak.

19:03Yang simple kan aplikasi SPA sekarang kan ya ringki ya maksudnya.

19:10Dari ratusan itu satu aja yang gak gelut juga bisa.

19:13Atau semua kan.

19:14Bisa.

19:15Jadi ada berbagai report.

19:20Yang makin bikin curiga adalah karena waktu itu kan ada proses optimasi rendering ya.

19:34Karena tadinya itu build chunk-nya gede banget.

19:38Terus kita split build kan.

19:40Split perat jadi pakai dynamic imports itu.

19:43Sehingga jadi ratusan modulnya.

19:45Dengan bertambah banyak jumlah modul.

19:48Makin tinggi itu kejadiannya, frekuensinya.

19:51Jadi sekarang misalnya kalau kata-kata 1% aja modul yang gak gelut.

19:57Kalau chunk-nya cuma 5 kan.

19:59Kita menunggu ada 500 tunggu 6 baru kejadian 1, 2.

20:03Tapi begitu chunk-nya ada 50.

20:0510 orang gelut.

20:061 dari 10 udah kejadian.

20:08Jadi makin sering kejadiannya.

20:10Setelah itu kita.

20:14Ya itu kita gak tau apa ya.

20:16Menetap juga di situ sebenarnya.

20:18Gak tau dari situ sebenarnya.

20:19Terus di satu momen ada ketahuan tuh.

20:22Ternyata kemungkinan besar karena ada masalah di cloud platform-nya.

20:29Di casing-nya gitu.

20:31Lebih tepatnya di...

20:35Kalau di cloud store.

20:37Cloud store kan dari AWS-nya ya?

20:39Iya.

20:41Nah ini di...

20:43Di front of platform.

20:44Itu kita pakai platform juga.

20:45Double CDN.

20:47CDN ke CDN.

20:49Ya ini juga kita...

20:51Ini legacy app.

20:52Jadi somehow kok udah di situ seperti itu yaudahlah.

20:54Akhirnya kita pakai aja.

20:56Oh...

20:57Kita terus ini tuh kan.

20:59Double caching.

21:01Kok ada double caching ini?

21:03Ini masalah ini kan.

21:04Satu-satunya adalah matiin satu gitu kan.

21:07Yang kita matiin ini di depan.

21:09Nah ini horornya mulai di sini.

21:12Kita matiin lagi di depan.

21:14Sound effect loh.

21:16Tering.

21:17Itu saya WFC.

21:19WFC tuh saya tuh.

21:20WFC tuh tanya-tanya sama temen informasi.

21:22Nah anaknya, temen yang DevOps lah.

21:24"Mas gimana ini mas?"

21:25"Iya ini harusnya nggak double CDN."

21:27"Iya sih kita di sini juga supakat."

21:29"Di casing internal juga supakat."

21:30"Belau ini harusnya nggak double."

21:32"Coba aja matiin platform-nya."

21:36Jadi dua-duanya dimatiin dong?

21:39Satu aja yang...

21:40Oh satu.

21:42Yang cloud front-nya. Yang cloudflare-nya nggak.

21:44Sebaliknya yang cloudflare-nya dimatiin.

21:46Bukan dimatiin.

21:48Cloudflare itu kan ada konfigurasi cache.

21:52Sorry ada cache dan DNS only ya.

21:54Proxy.

21:55Proxy VFC.

21:56Proxy-nya dimatiin.

21:57Proxy-nya dimatiin.

21:58Saya tahu ujungnya kemana ini.

22:01Terang alamin juga ya.

22:04Terang alamin juga ya.

22:06Karena kita nggak bisa kalau matiin.

22:09Kalau proxy-nya dimatiin, berarti rule-rule yang lain.

22:12Forwarding rule, redirect rule, segala macam yang dimatiin.

22:15Hilang semua.

22:17Terang ini cuma mematiin cache.

22:19Termasuk SSL-nya mati.

22:21SSL cache.

22:23SSL apa?

22:25Oh, satelit S-nya.

22:27SSL di depan.

22:29Jadi nggak disetak.

22:31Padahal yang udah disetak.

22:33Di berbagai... yang udah disetak.

22:35SSL-nya tuh di depannya.

22:37Ternyata kalau di depannya.

22:39Ternyata kayaknya...

22:41Mungkin asal dipasang aja atau gimana.

22:43Nggak ada konfigurasi itu.

22:45Iya.

22:47Nah, karena ini masalah DNS ya.

22:49Maksudnya kan nggak langsung efek kan.

22:51Jadi pas saya matiin.

22:53Saya cek, oh, aman.

22:55Oh, iya, aman.

22:57Masih ada cache soalnya di browser samtian.

22:59Iya, di belakang juga ada cache.

23:01Terlang seburu 15 menit.

23:03Semerang seburu.

23:05Ya, iya, iya.

23:07Ini langsung di...

23:09Di...

23:11Ini langsung di...

23:13Di...

23:15Di...

23:17Di...

23:19Di...

23:21Di...

23:23Di...

23:25Di...

23:27Di...

23:29Di...

23:31Oh, snap.

23:33Iya, nggak boleh.

23:35Iya, iya, iya.

23:37Gak bisa TTP.

23:39Terus, ya udah jadinya.

23:41Ya, karena itu

23:43saya yang tahu.

23:45Saya penyebabnya kan.

23:47Ya udah, akhirnya langsung saya report.

23:49Cuman kan nge-report juga nggak segampang itu karena ada...

23:51Harus tahu konfigurasi sebelumnya.

23:53Untungnya saya screenshot sebelumnya.

23:55Jadi before afternya di screenshot.

23:57Oh, untung.

23:59Kalau sudah senior.

24:01Gitu tuh.

24:03Ada dokumentasinya harus catat.

24:05Kalau ini action berbahaya

24:07di screenshot semua step.

24:09Iya, iya, iya.

24:11Ya udah, saya benerin. Klik, benerin.

24:13Tapi itu kan namanya DNS kan ya.

24:15Dibenerin, nggak langsung benerin.

24:17Iya,

24:19nunggu dulu, nunggu dulu.

24:21Nunggu propagate.

24:23Iya.

24:25Tapi ya dari situ

24:27jadinya tetam. Ini kira-kira durasi incidentnya setengah jaman.

24:29Untungnya

24:31ini kan company-nya

24:33base-nya US ya.

24:35Tapi kelihatannya global sih.

24:37Pas orang sana tidur?

24:39Waktu itu siang.

24:41Jadi kalau ada complain, mungkin siangnya kita

24:43itu kan kalau di time zone itu kan nggak begitu

24:45belum banyak negara.

24:47Banyak ya.

24:49Kebanyakan kan di Amerika

24:51masih berada tidur.

24:53Terus yang di Kuala Lumpur juga mungkin masih pagi banget.

24:55Jadi belum ini, belum banyak

24:57belum banget lah.

24:59Ya udah, akhirnya.

25:01Tapi kok bisa ya

25:03CDN, di atas CDN?

25:05Soalnya ada clausur kontraknya si CloudFront itu

25:07nggak boleh loh.

25:09Nggak boleh ada CDN

25:11in front of another CDN

25:13dari kontraknya si AWS.

25:15Saya nggak tahu kontraknya gimana.

25:17Bahkan kalau kita pakai

25:19Netlify pun ya.

25:21Yang bukan kontrak, kayak kan saya masih pakai inkerdisan.

25:23Jadi Netlify kan juga disarankan.

25:25Jangan pakai CDN aja.

25:27Iya, nggak boleh.

25:29Saya tahu bahwa itu bukan

25:31spurt practice sih.

25:33Udah ada incident ini.

25:35Legacy.

25:37Warisan ya, warisan.

25:39Warisan.

25:41Terus bertahan dulu nih,

25:43biar dapet langsung dulu nih.

25:45Mastiin gimana.

25:47Iya.

25:51Itu

25:53banyak sih masalahnya memang

25:55CDN, CDN lagi.

25:57Aduh, banyak banget masalah gitu tuh.

25:59Kacau.

26:01Ya, sementara saat itu teman saya yang

26:03anak DevOps dia udah nggak berani nyaranin-nyaranin lagi.

26:05Amateri jadi kayak begini.

26:07Langsung berayah.

26:11Keselamatkan oleh

26:15screenshot berarti ya.

26:17Sebenernya pelajaran pentingnya ya itu ya.

26:21Harus dicatat ya apa

26:23langkah-langkah yang kita lakukan ya.

26:25Sumpah itu screenshot atau tulisan

26:27atau apa gitu ya.

26:29Itu juga sempat kejadian lagi tuh

26:31beratangan ini.

26:33Tapi bukan sama saya dan orang lain juga.

26:35Tapi sama, karena dia udah screenshot

26:37jadi juga lebih gampang.

26:39Seringnya kalau kita mau nyaksin berbahaya,

26:41apalah disimpan lah.

26:43Kalau misalnya cardet habis ya mungkin didump dulu.

26:45Jadi ada break up-nya.

26:47Oke, oke.

26:49Tapi lagi-lagi ini masalah intinya belum selesai.

26:51Masalah inti yang saya bingung intermukan itu ya.

26:53Akhirnya kita mencegah dulu di Katara.

26:57Terus kita revert lagi dari

26:59yang kadang kita bundle tanking-nya.

27:01Apa kita smitkan.

27:03Kita bundle-nya ya

27:05kita revert lagi.

27:07Jadi ya, mending jadi

27:09bundle gede-gede dulu, yang penting

27:11kejadiannya sedikit.

27:13Tapi itu baru selesai.

27:15Ini hampir setahun kemudian.

27:17Kita baru tahu masalah intinya apa.

27:19Udah ketemu?

27:23Udah ketemu, tapi masih kejadiannya kita.

27:25Intermittent.

27:27Padahal resolusinya ya,

27:29kita selalu

27:31page, menu juga ada ya.

27:33Itu yang kita pasang di quarter buat

27:35selalu di deployment.

27:37Kayaknya antara

27:39komunikasi si node-nya si Cloudflare

27:41sama node-nya si

27:43Cloudfront

27:45itu serisi cache

27:47time-nya itu dan ada

27:49raise condition aja.

27:51Jadi kalau misalnya ini pas lagi nge-request kesini

27:53terus ini call cache, dia

27:55minta dulu dan

27:57kayak

27:59bisa, mungkin ada itu

28:01stale-while-revalidate juga sih mas

28:03stale-while-revalidate. Yang di-serve ini

28:05yang stalnya.

28:07Dan yang di depan itu sudah dapat

28:09seri yang baru, bukan

28:11hash-nya ada yang baru nih.

28:13Yang baru dia minta kesini

28:15dan disini belum ada, dan lagi minta.

28:17Jadi sih mungkin 404.

28:19Ya antara 2 ini, 2 node

28:21antara si Cloudfront sama si

28:23Cloudflare.

28:25Makanya nggak boleh numpuk, sedih ya

28:27kan ideanya. Iya.

28:29Enggak boleh.

28:31Yang di-bypassed Cloudfront aja

28:33kalau mau sementara.

28:35Cache-invasion itu adalah satu

28:37masalah terbesar, salah satu masalah terbesar

28:39dalam programming. Ini kita

28:41tumpuk 2.

28:43Dua kali lipat.

28:45Potensi issue.

28:47Cache itu adalah

28:49pedang bermata 2.

28:51Dia yang menyalahmati

28:53dia juga yang mau bikin

28:55kusing. Kalau ditumpuk 2

28:57bermata 4 berarti.

28:59Bermata 4 dong di kali 2 ya.

29:01Itulah.

29:03Itu sih buka aib dari saya.

29:05Itu tuh, yang ke-2 ini

29:09ya film horror, Mas.

29:11Scream atau Final Destination

29:13atau apa yang sequel-nya banyak, yang sampai

29:15bertahun-tahun kemudian masih ada

29:17masalahnya.

29:19Ada masalah.

29:21Oh iya.

29:23Ini Mas Zain kan jam 9 mau meeting.

29:25Nah sebelum Mas Zain

29:27cabut, ini

29:29udah confirm ya di Jogja ya, mau ngisi

29:31Devast ya?

29:33Insyaallah sudah.

29:35Boleh bocorin

29:37topiknya ga? Boleh bocorin topiknya ga?

29:39Kita belum tentukan sih

29:41kayaknya.

29:43Kita belum tentukan.

29:45Cuma ada CDN.

29:47Belum saya, kepikiran nya sih pengen

29:51disambungin sama MCP.

29:53Kemarin kan saya belum ngisi

29:55di Road to

29:57Devast-nya kan, hari Minggu kemarin.

29:59Oke, wah menarik ya.

30:01Belajar bikin MCP, pengennya sih

30:05disambungin ke situ, jadi

30:07something about MCP, cuman

30:09prosesnya masih belum tau mau ambil dari situ.

30:11Sabtu bikin acara yuk,

30:13lucu-lucuan aja.

30:15Eh, temen-temen yang nonton

30:17di LinkedIn, di Youtube, mungkin

30:19ada yang orang Jogja, kita Kopdar

30:21yuk Kopdar. Kita Traktir

30:23Mas Zain, udah sering ditodong

30:25untuk ikutan acara ngobrolin

30:27tapi belum pernah dapet

30:29benefit dari kita. Traktir, traktir.

30:31Nanti kita traktir lah ya.

30:33Kita main di Jogja.

30:35Kita main ke Jogja.

30:37Ayo.

30:39Bikin itu yang jalanin

30:41ke Kopdar Bapak-Bapak itu lho, apa?

30:43Kopdar Bapak-Bapak?

30:45Ada, Mas Zain.

30:47Bikin ini, saya bikin

30:49BapakCerdas.com

30:51BapakCerdas.com?

30:55Iya, BapakCerdas.com

30:57Tapi Eka gimana dong?

30:59Eka gapapa lah.

31:01Jalan Pencari Bapak.

31:03Jalan Pencari Bapak.

31:05Jalan Pencari Bapak.

31:07Pencari Bapak untuk

31:09anak-anaknya.

31:11Beda ini sih, beda circle itu.

31:13Nyamar lah jadi Bapak-Bapak datang

31:15pakai Komismasum.

31:17Kita teman-teman

31:19komunitasnya aja.

31:21Ada banyak yang develop.

31:23Siap, siap, siap.

31:25Oke, mungkin

31:27Terima kasih buat Mas Zain. Silahkan kalau mau

31:29nyelengkrong disini, kalau mau cabut juga

31:31gak apa-apa. Kita mau lanjut ngobrol apa?

31:33Mau lanjut cerita horror, teman-teman yang menikmati.

31:35Cerita horornya.

31:37Soundboard nya dong, sound effect yang serem ada gak?

31:39Soundboard nya? Yang serem? Apa ya?

31:41Effect serem ada gak?

31:43Effect serem, ini?

31:45Ini apa sih?

31:47Ini apa sih?

31:49Kurang serem?

31:51Apa lagi? Gak serem juga.

31:53Apa lagi? Gak serem ya?

31:55Itulah X-File, X-File.

31:57Bener ya?

31:59Bener ya?

32:01Oke, siap.

32:03Ini tukang soundboardnya

32:05kurang profesional.

32:07Aku pilih satu deh nih.

32:09Cerita selanjutnya.

32:11Dari Mas atau Mbak Eka ya?

32:13Dari Mas atau Mbak Eka ya?

32:15Ceritanya adalah

32:17pada suatu hari

32:19leo

32:21menjalankan query Big Query

32:23tanpa web

32:25yang spesifik dan termonitor.

32:27Big Query, Big Query, oke.

32:29Tanpa web

32:31yang spesifik dan termonitor.

32:33Tapi belum, belum, belum.

32:35Ini belum bagian paling seremnya.

32:37Bentar, bentar.

32:39Tanpa web yang spesifik

32:41dan termonitor

32:43jalan 4 hari

32:45dan tanpa disadari

32:47pemakan biaya sebanyak

32:4970 juta rupiah.

32:51Nah.

32:55Ini baru serem.

32:57Horor, horor.

32:59Aduh, jahat gak sih

33:01kalau gue ketawa?

33:03Nggak, tapi ini untungnya. Ini happy ending.

33:05Cerita, contoh cerita horor.

33:07Tapi happy ending respon dari bos.

33:09Jangan sampai terjadi lagi ya.

33:11Jadi gak apa-apa.

33:13Oh, pasti bosnya pernah ngalamin ini.

33:15Bosnya pernah ngalamin.

33:17Jadi empatinya muncul.

33:19Berapa peta byte itu?

33:2370 juta.

33:25Oh my God.

33:27Iya, ianya 70 juta.

33:29Karena query-nya tanpa

33:31web close. Jadi jalan terus kali ya.

33:33Intinya karena gak ada kondisinya.

33:35Iya.

33:37Iya, BigQuery kan datanya

33:39gede banget.

33:41Makanya jadi big dia disana.

33:43Ya, username-nya jadi

33:45maksimal. Kayak nama samaranya

33:47itu komputasi awan.

33:49Ya, oke.

33:51Komputasi awan.

33:53Risiko horor

33:55dari komputasi awan ya

33:57jalan terus. Beneran

33:59kalau query-nya salah

34:01atau gak dekondisionalnya, beneran bisa

34:03jalan terus non-stop.

34:05Sampai biayanya 70 juta.

34:07Untung bosnya baik.

34:09Baik hati ya.

34:11Dan tidak sombong kali ya.

34:13Dan tidak sombong.

34:15Mungkin dia nyombongin.

34:17Waktu itu anak gue saya

34:19salah bikin kudingan

34:21sampai 70 juta.

34:23Saya biarin, saya maafin ya kali dia

34:25sombong tapi baik hati.

34:27Sombong tapi baik hati.

34:29Kita

34:31tadi mulai jam 8.

34:33Raihan punya cerita gak?

34:35Kalau mau

34:37bercerita boleh lah ya.

34:39Siapa lagi? Ivan?

34:41Mau cerita apa?

34:43Mau pilih cerita yang mana?

34:45Banyak nih.

34:47Mau cerita sendiri lagi apa?

34:49Lagi nyari screenshotnya dimana gitu.

34:51Oh cerita diri sendiri.

34:53Iya.

34:55Udah nemu?

34:57Ivan sekarang.

34:59Cerita pribadi nih?

35:01Cerita pribadi.

35:03Oke.

35:05Jadi suatu hari

35:07ini kasusnya unik

35:13sekali.

35:15Ada web performance.

35:17Jadi kita

35:19di WordPress

35:21dan kita udah push

35:23deploy

35:25sempurna

35:27flowless nyantai.

35:29Tetapi

35:31gak lama kemudian mulai satu-satu

35:33dari tim editorial

35:35mengeluhkan

35:37saya tidak, begitu

35:39login

35:41terus

35:43Chrome nya nge-freeze.

35:45Kayak kehabisan memori.

35:47Kayak unresponsive gitu loh.

35:49Kalau Chrome nya sudah lambat

35:51terus dia muncul

35:53this page is unresponsive.

35:55This tab is unresponsive ya.

35:57Terus disuruh close.

35:59Dan begitu pencet close

36:01gak ada yang bisa di close karena

36:03freeze semua. Semua tabnya freeze.

36:05Oh kayak itu ya. Kayak Windows ya.

36:11Windows managernya entas ya.

36:13Seharusnya gak sih. Karena

36:15jamannya Chrome

36:17itu memperbaiki

36:19masalahnya si Firefox.

36:21Firefox kan.

36:23But somehow this issue

36:27gak tahu kenapa.

36:29Begitu dia sudah kayak, oh snap itu

36:31memang masih bisa pindah tab. Tapi tab yang lain

36:33gak bisa di click. Gak bisa ngapa-ngapain.

36:35Sampe harus close. Oh udah berat banget gitu ya.

36:37Iya. Sudah kayak kehabisan CPU lah

36:39ceritanya.

36:41Dahsyat.

36:43Masalahnya gak

36:45semua user.

36:47Terus

36:49saya gak bisa

36:51reproduce. Sama sekali gak bisa.

36:53Waduh. Saya tanya

36:55teman sekantor. Gak bisa

36:57juga. Saya tanya yang lain.

36:59Gak bisa juga. Saya

37:01sampai

37:03lebih dari

37:052 jam, 3 jam apa

37:07masalahnya. Sampe mau

37:09makan nasi pun susah.

37:11Mikir terus.

37:13Makan nasi doang susah.

37:15Makan mie. Makan roti

37:17gak apa-apa. Bisa. Makan lontong bisa.

37:19Sampe

37:21nyarah juga. Sampe ke esokannya.

37:23Ke esokannya gak bisa

37:25nih. Saya harus face to face

37:27call sama kliennya. Ayo

37:29lo coba buka depan gue.

37:31Apa masalahnya?

37:33Karena sudah ditanya dia juga

37:35harus tau. Nah, masalahnya

37:37karena ini

37:39kliennya sangat

37:41financial institution ya.

37:43Jadi gak bisa sebarangan

37:45buka DevTool. DevTool itu

37:47di lock.

37:49Di lock.

37:51Di lock ya.

37:53Yes. Terus

37:55jadi kita harus approval

37:57dulu ke networknya

37:59mereka. Minta dibukain

38:01supaya bisa DevTool sementara.

38:03Panjang ceritanya, tetapi akhirnya

38:05bisa. Itu

38:07gak ada horornya. Cuma tinggal

38:09request, approve, sementara

38:11done. Gitu ya. Akhirnya bisa

38:13dipakai buat buka DevTool.

38:15Oke. Saya

38:17tunjukin ininya.

38:19Yang terjadi.

38:21Karena begitu saya bilang, oke

38:23saya bukain

38:25apa namanya?

38:27Dibukain DevToolnya.

38:29Ini yang terjadi.

38:33Siap-siap sound work.

38:35Oh, ini yang di

38:39IOX kemarin ya?

38:41Iya, saya sudah pernah share ini. Ini yang terjadi.

38:43Mana? Nggak ada?

38:45Oh, bentar. Remove dulu.

38:47Ivan, coba lagi.

38:49Remove, add to

38:51stage. Dah.

38:53Oke.

38:55Apa? Boleh diceritakan?

38:57Mengerti dengan

38:59gambar ini?

39:01Enggak. Coba

39:03dijelaskan.

39:05Oke.

39:07Kayaknya dia ngerti, Mas Zain.

39:09Ada apa yang

39:11ngeblokir main thread?

39:13Keep rendering.

39:15Iya, ini. Keep rendering.

39:17Ini CPU

39:19100%. Setelah load,

39:21setelah load,

39:23setelah Windows

39:25.load, dia

39:27terjadi

39:29CPU 100%.

39:31Dan ini terjadi

39:33terjadi.

39:35Sekian banyaknya. Halaman webnya

39:37itu halaman apa?

39:39Hanya halaman WordPress

39:41admin. In

39:43WordPress admin dashboard doang.

39:45Dashboard? Oh, dashboard.

39:47Nggak. Nggak mesti apapun.

39:49Pokoknya apapun. Pokoknya masuk dalam

39:51WordPress admin. Apapun halamannya begini?

39:53Langsung meledak begini.

39:55Dan mulai bermuncul-munculan.

39:57Kadang ada yang bisa,

39:59aman, kadang

40:01tidak bisa.

40:03Begitu dia login

40:05rusak, login rusak. Terus

40:07nanti user yang lain, "Gua nggak, gua baik-baik

40:09saja."

40:11Yang bilang, "Gua baik-baik saja."

40:13Satu jam kemudian kena lagi.

40:15Tetapi ada yang tadinya bisa,

40:17yang nggak bisa. Terus bilang,

40:19"Nggak, sekarang, eh, sudah semu,

40:21udah bagus-bagus saja."

40:23Tapi satu jam lagi kena lagi.

40:25Apa coba?

40:27Saya nggak bisa nge-reproduce sama sekali.

40:31Satu kali pun tidak bisa.

40:33Tetapi user kena.

40:37Di sini,

40:41yang terjadi di sini adalah

40:45ada yang namanya

40:47mutation callback.

40:49Jadi ada

40:51rogue

40:53script

40:55yang memanggil

40:57mutation

40:59callback.

41:01Jadi, kayak,

41:03kalau misalnya terjadi mutation,

41:05dia melakukan event apa?

41:07Ya, mutation observer, betul.

41:09Dia pakai mutation observer.

41:11Masalahnya,

41:15mutation observer,

41:21terus kemudian saya punya yang namanya

41:23debug tool

41:25yang kayak

41:27ada fire, ininya itu loh, kayak

41:29kecil-kecil, kayak elemen kecil-kecil

41:31buat menunjukkan

41:33grafik

41:35berapa banyak

41:37callback yang terjadi.

41:39Ya, ada debug tool itu.

41:41Tapi yang masalahnya adalah mutation callback itu

41:43memutate

41:45elemen lain.

41:47Jadi, recursive ya?

41:49Ya, jadi mutasi recursive kan.

41:51Dia mau mutate elemen lain,

41:53jadi mutasi, dia ketrigger, ya.

41:55Terus, ya udah, gitu aja terus.

41:57Tapi itu tidak menjawab

41:59kenapa satu user bisa,

42:01kadang bisa, kadang tidak.

42:03Ada yang kena, ada yang tidak.

42:05Jawabannya, race condition.

42:07Jadi, kalau script A

42:09duluan dipanggil atau baru script B,

42:11aman.

42:13Tapi kalau script B,

42:15duluan atau baru A,

42:17hancur.

42:19Nah,

42:23yang terjadi,

42:25yang terjadi,

42:27kalau

42:29komputernya yang bagus,

42:31dari kantor,

42:33speknya bagus,

42:35race conditionnya bagus,

42:37sesuai dengan,

42:39sesuai dengan yang kita inginkan,

42:41urutan.

42:43Tapi, kalau

42:45kalau komputernya,

42:47speknya, spek kantor,

42:49yang buat admin aja,

42:51hanya buat editorial,

42:53belum tentu itu terjadi.

42:57Jadi, bisa jadi

42:59B duluan, baru A.

43:01Justru dia yang kena 100 persen.

43:05Harusnya yang

43:07komputer yang bagus yang kena 100 persen,

43:09masih kuat. Ini yang

43:11terkena juga.

43:13Dua hari saya

43:15murad-murad

43:17mendebak ini.

43:19Jadi saya nggak bisa nge-debug langsung,

43:21karena nggak bisa reproduce.

43:23Saya nge-debug itu di kepala.

43:25Di kepala. Apa ini?

43:27Apa ini? Sampai saya lihat-lihat.

43:29Dan hanya bisa satu kali ini,

43:31karena dev tool-nya hanya dibuka jam.

43:33Hanya per jam aja.

43:35Cuma sementara doang dikasihnya.

43:37Karena nggak boleh.

43:39Apalagi, ini harus direcord.

43:41Karena saya nggak bisa ngasih,

43:43eh, tolong lo type script ini

43:45jalankan di console-nya lo.

43:47Itu dilarang banget.

43:49Nggak boleh.

43:51Jadi saya bisa lihat,

43:53oke, tunjuk ini, tunjuk itu.

43:55Dia udah. Saya boleh screenshot ini nggak?

43:57Boleh.

43:59Dan inilah yang terjadi.

44:01Jadi saya perhatikan apa yang terjadi di sini.

44:03Apa yang terjadi di sini.

44:05Satu-satu saya lihatin,

44:07pantengin terus. Sampai tidur.

44:09Inget-inget ini.

44:11Berusaha mensimulasikan di kepala.

44:13Ini mimpi.

44:15Impinya mimpi dev tool.

44:17Akhirnya.

44:19Akhirnya ketemu, ketemu ini gimana?

44:21Gimana akhirnya, oh ini gitu.

44:23Iya, saya kayak

44:25bisa, oh,

44:27kayaknya ini.

44:29Lihat-lihat, satu per satu

44:31javascript yang terparti

44:33atau gimana gitu.

44:35Oh, dia ada mutation callback.

44:37Oh, sial.

44:39Langsung kayak, saya langsung cari

44:41apa ini. Langsung

44:43dan coba nge-debug

44:45mutation callback-nya berapa banyak.

44:47Dan ini dia.

44:49Mutation callback

44:51yang bisa saya reproduce. Akhirnya

44:53bisa saya reproduce.

44:55Bentar ya. Kayaknya nggak bisa

44:57pakai screen capture.

44:59Kalau junior yang handle pasti

45:01udah copot.

45:03Ini dia.

45:05Mutation callback yang terjadi

45:07adalah, ini yang

45:09berhasil saya reproduce di lokal.

45:11Mutation record-nya bisa

45:13terjadi.

45:1536.620-an kali.

45:17Ya, ini di lokal saya ya.

45:19Ya, ini di lokal saya ya.

45:21Saya debug.

45:23Oh ini nih, this is it. Pasti ini.

45:25Terus saya coba, saya ubah urutannya.

45:27Saya coba men-trigger kalau

45:29terjadi kayak gini.

45:31This is it.

45:33This is mutation.

45:35Si nama ini simple bar.

45:37Oh iya, jelas.

45:43Jadi saya safe ya, jawab

45:45saya ya.

45:47Sebenarnya yang

45:51mutation observer itu melakukan

45:53apa sih, fungsinya apa sih di

45:55halaman itu atau di aplikasi

45:57itu?

45:59Inget nggak? Atau nggak boleh

46:01dikasih tahu?

46:03Open source kok simple bar itu saya nggak tahu

46:05gunanya apa.

46:07Somehow dia memutasi third party.

46:09Jadi si third party itu yang

46:11kalau-kalau duluan dia

46:13bersalah.

46:15Jadi kayak plugin gitu ya, pluginnya

46:17WordPress. Dan itu bukan

46:19third party bahkan kayak

46:21plugin lain

46:23atau plugin yang

46:25yang kita upload kan, extension kan

46:27yang kita upload kan. Extension ya.

46:29Plugin-plugin

46:31kalau user install

46:33itu jadi di-load kan, beserta

46:35semua. Yes. Dan simple bar itu

46:37bukan kita yang tulis, bukan

46:39siapa. Jadi third party

46:41yang masuk aja dan

46:43unfortunate aja dia punya

46:45begitu. Jadi rest condition.

46:47Terus

46:49apa diperbaiki berarti

46:51kode yang di upload itu yang

46:53diubah atau alus pull request dulu

46:55atau gimana? Oh pull request harus.

46:57Simple barnya.

46:59Nggak, saya buang aja

47:01simple bar yang ngapain pakai. Nggak dipake juga.

47:03Oh.

47:05Jadi itu sebenarnya nggak kepake.

47:07Sebenarnya nggak terlalu kepake.

47:09Nggak ada fungsi yang

47:11signifikan.

47:13Nest to have aja ya.

47:15Udah buang aja.

47:17Pluginnya buang aja.

47:19Untungnya cukup simple

47:21untungnya ya.

47:23Di kasus saya itu jadi hal yang

47:25bikin sebenarnya.

47:27Jadi kan. Gimana maksudnya rutin?

47:29Tim saya kan sekarang

47:31manage-nya aplikasi Shopify ya.

47:33Hmm.

47:35Oke.

47:37Ya kita punya aplikasi yang itu jalan

47:39untuk Shopify, namun ya

47:41idealnya begitu seperti ini. Cuman

47:43sering ada kasus, dimana

47:45tidak berjalan sebegimana biasa, nyatakan ya

47:47terserahannya terjadi di mereka.

47:49Dan mana kan kalau mereka bukan orang teknis

47:51kan mereka juga nggak tahu kan. Jadi ya

47:53udah jadi rutinitas. Ya

47:55kalau saya pribadi sih mungkin

47:57frekuensinya mungkin hampir bulanan

47:59lain. Atau kadang kalau agak sering bisa

48:01semingguan juga. Biasanya ada

48:03klien ini nggak bisa karena apa.

48:05Ya udah akhirnya kita buat nge-debugging kayak mas

48:07Ivan tadi. Terus di. Kan

48:09eventuallnya solusinya bukan kode

48:11pasifan kan. Solusinya kan plug-in lain

48:13yang diubah atau dihapus. Iya

48:15terpasti.

48:17Bisa jadi

48:19ke orang lain juga bisa kena kayak

48:21dependensi yang lain gitu.

48:23Bisa jadi bunyi. Yang sering terjadi adalah

48:25yang paling sering kasusnya adalah

48:27mereka override

48:29patch.

48:31Oh.

48:33Seperti nxds ya.

48:35Seperti nxds.

48:37Terus di global.

48:39Iya intinya.

48:41Iya iya iya iya.

48:43Kita kan extension untuk top 5.

48:45Mereka kan kadang juga pengen nambah extension

48:47lain. One of this extension

48:49ada yang nakal. Maksudnya mereka

48:51pake override.

48:53Tering banget sih. Jadi kalau sampe

48:55udah jadi intuisi tuh. Oh kalau ada masalah dia

48:57gak bisa patch. Nah ini mah gara-gara

48:59gara-gara ini. Jadi oh ini kita tinggal

49:01bantu aja buka di console.

49:03Ketika dibuka di console kita buka aja. Ini patch

49:05ini dari mana asalnya nih.

49:07Jadi bukan patch yang. Oh dia overriding

49:09patch, patch

49:11vanillanya ya. Iya kan jadi tau

49:13kan. Ini yang override

49:15script mana. Jadi script itu. Saya kasih tau aja

49:17ke pelayan. Ini jangan

49:19pake plug-innya atau jangan pake extension ini.

49:21Karena dia nyalahi

49:23apa ya. Tatakrama

49:25sesama plug-in dilarang

49:27sambil nge-operate. Percaya tuh tatakrama nya gitu ya.

49:29Dilarang operative

49:31functions gitu ya.

49:33Dilarang sambil nge-operate.

49:35Tapi itu tricky juga.

49:37Sistem yang kayak gitu yang ada

49:39apa. Maksudnya open

49:41plug-in system. Maksudnya

49:43kan kaya Crest atau Shopify

49:45atau apapun. Si end

49:47usernya masing-masing bisa

49:49apa install plug-in apapun

49:51entah dari mana pun

49:53yang kombinasinya gak bisa

49:55kita expect kan. Itu

49:57gak ada abis ya dong isu.

49:59Makanya makin kesini Shopify

50:01pendekatannya makin

50:03bisa dibilang makin strict dalam arti

50:05mereka ingin semua

50:07interactive itu di

50:09kalau bisa kita ngejalanin kodonya

50:13Shopify. Dalam arti

50:15kita

50:17kalau misalnya komponen nih

50:19yaudah kita pake komponen yang di perfect Shopify gitu.

50:21Atau kalau misalnya

50:23kita mau munculin modal atau munculin

50:25interactivity

50:27elemen ya. Itu kita

50:29panggil, kita dispatch event. Eventnya

50:31Shopify yang ngejalanin.

50:33Dengan begitu kan harapannya

50:35kan meminimalisir stepping

50:37on top of each other.

50:41Di HTCC itu

50:43bagus untuk Shopify. Tapi

50:45di HTCC ya jadinya kita jadi

50:47nempel banget. Aplikasinya jadi sangat-sangat

50:49attach sama Shopify kan. Padahal kan mungkin ada

50:51juga kita punya aspirasi

50:53ini bisa di port ke yang lain dan sebagainya.

50:55Tantangan tersentiri

50:57kalau numpang di atas platform.

50:59Ya itu

51:03resikonya terparti ya.

51:05Makanya kan

51:07NPM itu

51:09itu tadi pisau

51:11bermata dua.

51:13Satu sisi bagus, semua

51:15ada gitu ya. Di sisi yang lain

51:17resiko kita install

51:19sembarangan juga cukup besar.

51:21Iya hati-hati dengan dependensis.

51:23Dependensis.

51:25Setiap kali NPM install

51:27berarti menambah resiko ya.

51:29Ada yang kita nggak tahu. Bahkan

51:31Taipo aja kadang-kadang bisa

51:33berbahaya kan.

51:35Taipo apa maksudnya? Taipo

51:37bahkan NPM install

51:39monggus gitu. O nya 3

51:41bukan O nya 2.

51:43Taunya beneran ada, ada yang bikin

51:45gitu.

51:47Tapi niatnya udah jelek

51:49gitu.

51:51Karena kan berawal dari open

51:57kan. Semuanya di open jadi ya

51:59semua orang bebas submit terparti

52:01nggak ada

52:03kurasi gitu kan.

52:05Nah cuma bedanya kalau

52:07apa NPM dependensi

52:09ini kan apa ya

52:11kita punya package JSON ya.

52:13Sebahaya-bahayanya

52:15kita masih bisa kontrol, kita masih

52:17bisa ngecek. Tapi kalau yang contoh tadi kan

52:19apa kayak ekosistem

52:21WordPress atau Shopify plugin

52:23masih-masing user kan install

52:25entah apa, dari mana

52:27kombinasinya apa nggak tahu kan.

52:29Nggak bisa dikontrol.

52:31Bahkan kode yang kita baca.

52:33Bahkan kode yang kita baca

52:35kan udah off skated

52:37maksudnya bukan

52:39kode yang bisa

52:41dibaca.

52:43Iya kita nggak bisa kontrol

52:45jangan install ini, jangan install itu

52:47gitu ya. Atau

52:49nggak ada catatannya ya

52:51nggak ada dependensi list, dependensi

52:53listnya nggak ada ya.

52:55Cuma ya itu berarti kan case by case

52:57yang kayak tadi Mas Zain bilang kan

52:59ngomong sama user

53:01berarti ini di konsol cek, kalian

53:03pakai plugin apa aja, oh berarti plugin ini

53:05nggak boleh dipakai ya, kayak harus

53:07each time kayak gitu kan.

53:09Iya, iya, iya, iya.

53:11Sudah ada

53:13CI/CD kayak

53:15tools-tools kayak snike

53:17atau gigguardian

53:19yang bisa ngecek

53:21dependensi

53:23vulnerability kan.

53:25Kita bisa minta

53:27bantuan service

53:29ya

53:31depan the bot setelah terjadi

53:33setelah frekuensi

53:35kalau kayak

53:37snike.io misalnya

53:39kita saat

53:41pull request dibuka, dia bisa

53:43lalu snike dulu

53:45ngecek dulu sebelum bisa

53:47di merge.

53:49Oke, next cerita.

53:53Cerita selanjutnya.

53:55Oke.

53:57Oh iya, terima kasih Mas Zain.

53:59Terima kasih.

54:01Sampai ketemu di Jogja.

54:03Mudah-mudahan kita ketemu, bye-bye.

54:05Oke.

54:09Bye.

54:11Lanjut.

54:13Ini

54:15yang mana ya? Mas Zain mana nih?

54:17Dipilih, dipilih.

54:19Oke.

54:21Kau mau pakai atau nggak?

54:27Bagus itu

54:29ceritanya.

54:31Susah dengarnya.

54:33Iya, nggak jelas ya.

54:35Oke lah.

54:37Saya mau bacakan

54:39cerita yang

54:41dikirimkan oleh Mas Didik. Mas Didik

54:43ada nggak ya? Kayaknya belum ya.

54:45Wicak Sono nih.

54:47Iya, sering hadir juga. Beberapa kali

54:49hadir. Jadi

54:51Mas Didik ini share-nya dari

54:53Twitter ya.

54:55Udah nyubut nama nih, harusnya nyubut

54:57handle-nya aja ya. @did1k

54:59Didik.

55:03Mirip seperti kasus

55:05ya saya cerita kan di Twitter

55:07saya cerita kalau saya pernah melakukan

55:09update tapi lupa where.

55:11Ya mirip katanya.

55:13Tapi kasusnya delete, delete user.

55:15Waduh.

55:17Ceritanya

55:21Mas Didik sedang

55:23menghapus banyak user

55:25yang follow ke satu user. Jadi

55:27ada satu user, mau dihapus nih

55:29follower-nya.

55:31Itu kan. Nah, kalau

55:33di Ruby itu, Ruby

55:35on Rails, itu kan ada, dia

55:37pakai ORM kan namanya

55:39active record.

55:41Mungkin juga.

55:45Mungkin juga. Kayaknya sih

55:47kemungkinan besar ya.

55:49Oke. Jangan dibocorin lah.

55:51Oke.

55:53Jadi,

55:55kalau operasi sederhan nya kan user.follower.destroy_all

55:59Itu ada fungsinya

56:01kalau di ORM-nya

56:03si Ruby on Rails kan.

56:05Jadi

56:07ternyata user.follower

56:09itu bukan

56:11menghapus

56:13followers-nya

56:15si user yang tadi.

56:17Tapi mengacu ke user-nya

56:19yang bukan ke follow record-nya.

56:21Kayaknya bukan memutuskan rantainya.

56:27Iya.

56:29Bukan relasinya yang dihapus

56:31user follower-nya yang dihapus.

56:33Iya.

56:35Sembur, Pak.

56:39Iya.

56:41Bukan unfollow, bukan unfollow.

56:43Bukan menghapus relasi.

56:45Destroy all user

56:47yang merupakan follower

56:49si user ini.

56:51Oh-oh.

56:53Tapi

56:55ini, apa, happy ending.

56:57Karena setiap operasi

56:59ORM, ya,

57:01salah satu keuntungannya ya, ORM

57:03di sini, dalam hal ini,

57:05itu dia ada transaction.

57:07Ya, jadi

57:09ngerti kan?

57:11Habis itu kan ada transaction kan.

57:13Jadi harus sampai selesai semuanya.

57:15Baru commit.

57:17Misalkan contoh

57:19simpelnya itu kalau misalkan kita bikin

57:21kayak ATM gitu ya.

57:23Pas mau ngambil uang

57:25ternyata saldo-nya nggak cukup.

57:27Kan uangnya nggak dikurangin kan.

57:29Padahal kita udah ngambil 50 ribu

57:31ternyata saldo-nya 40 ribu.

57:33Nah itu kan proses pengurangan saldo itu

57:35tidak akan terjadi karena

57:37di rollback, dibalikin lagi ke step

57:39sebelumnya.

57:41Pengennya setelah duitnya keluar terus di rollback.

57:43Di rollback.

57:45Maunya itu.

57:47Ya nggak bisa kan gak ada duitnya.

57:49Kan nggak bisa.

57:51Kan pengennya ada duitnya, setelah

57:53duitnya keluar, di rollback.

57:55Terus duitnya masuk

57:57lagi gitu.

57:59Atau ada yang install,

58:01tiap hari ada

58:03cronjob, nambah 100 juta,

58:05nambah 100 juta, tiap jam 12 malam.

58:07Adminnya,

58:09salah nginstal, dia

58:11nginstal deep freeze ke

58:13server.

58:15Jadi begitu restart, balik lagi

58:17database-nya.

58:19Balik lagi state hour.

58:21State hour enggak, dong.

58:23Ini kayaknya

58:25yang nonton kita nggak ada yang tahu

58:27deep freeze itu apa ya.

58:29Warnet.

58:31Ada warnet yang tahu.

58:33Kayaknya ada warnet.

58:35Warnet tumba-lumba.

58:37Warnet tumba-lumba.

58:39Ya, jadi

58:41untungnya setiap operasi

58:43di ORM itu

58:45ada transaction. Jadi kalau operasi

58:47delete, belum di-commit,

58:49jadi bisa dibatalkan di rollback.

58:51Dan problem

58:55kayak gini kan rentan ya. Karena kan kita

58:57kayak kalau

58:59masuk ke server

59:01atau masuk ke

59:03ya itulah buka

59:07repel gitu kan.

59:09Dan bisa menjalankan ini kan kalau di

59:11rubi gitu kan.

59:13Jadi kita ketik user.followers.destroyall.

59:15Udah, kapus semua itu.

59:17Karena

59:21rentan,

59:23maka apalagi kalau misalkan

59:25dapat access SSH ke server,

59:27lebih parah lagi ya.

59:29Jadi semenjak

59:31kejadian ini,

59:33akhirnya kalau developer mau jalanin

59:35script seperti tadi,

59:37itu harus lewat web application.

59:39Jadi dibikinin web applicationnya.

59:41Dan kalau mau

59:43menjalankan, harus ada

59:45proses reviewnya dulu.

59:47Gak bisa sembarangan ya.

59:49Ya, sama lah ya. Kalau misalkan update

59:51lupaware itu juga, kan kita

59:53mengases database-nya langsung kan.

59:55Ya, walaupun di localhost atau di

59:57server development gitu ya.

59:59Apalagi server production gitu.

1:00:01Dan itu kan gak boleh kan harusnya ya.

1:00:03Kalau mau jalanin script-script kayak gitu,

1:00:05yang boleh melakukan ya harus

1:00:07pihak-pihak tertentu aja.

1:00:09Gak boleh semua orang.

1:00:11Apalagi tanpa supervisi.

1:00:13Tidak bisa dilakukan.

1:00:15Harus dalam pengawasan ya.

1:00:17Harus dengan pengawasan.

1:00:19Gak boleh sembarangan.

1:00:21Begitulah.

1:00:23Nah, kalau Mas Zain tau ya.

1:00:25Immutable.

1:00:27Anti-virus.

1:00:29Betul. Betul inget terus.

1:00:31Dulu, apa, numpang bikin tugas

1:00:33apa, internet,

1:00:35samirul bikin tugas.

1:00:37Cari inham, ngetik.

1:00:39Dulu masih kuliah sastra.

1:00:41Jadi tugasnya ya, tulis pakai

1:00:43bahasa manusia, dipanjang-panjang.

1:00:45Terus dapet ide.

1:00:47Terus cari kodnya

1:00:49online.

1:00:51Terus lupa. Gak di-copy

1:00:53ke flash disk.

1:00:55Ilang.

1:00:57Ya, dulu belum jangan di-unboxkan.

1:00:59Kalau Microsoft

1:01:01ilang semua.

1:01:03Mau nangis.

1:01:05Lucu nih.

1:01:07Lucu nih Mas Zain.

1:01:09Mas Zain masuk lagi.

1:01:11Gara-gara. Ini bukan horror ya.

1:01:13Bukan horror ya.

1:01:15Ini komedi situasi.

1:01:17Ini selalu terjadi.

1:01:19Ini adalah

1:01:21kejadian yang selalu terjadi

1:01:23setiap daylight saving time.

1:01:25Atau di akhir daylight saving time.

1:01:27Orang Amerika jamnya

1:01:29nambah satu jam.

1:01:31Atau

1:01:33mundur satu jam.

1:01:35Jamnya juga jadi berubah kan.

1:01:37Kayak nanti tuh

1:01:39Champions League jadi jam tiga.

1:01:41Tadinya jam dua. Ya, pokoknya

1:01:43jadi berubah jamnya kan.

1:01:45Tapi kan lain-lain. Di Eropa sama

1:01:47di Amerika juga daylight saving time-nya

1:01:49lain-lain.

1:01:51Tanggal berapa ini.

1:01:53Dan US juga

1:01:55gak semua state.

1:01:57Tapi ya, US by state.

1:01:59Kalau Eropa itu kayak ada

1:02:01apalah kayak Uni Eropa.

1:02:03Cuma ya maksudnya bukan Uni Eropa sih.

1:02:05Yang ikut CET sama CEST.

1:02:07Central Europe Standard Time.

1:02:09Jadi sekian negara sama

1:02:11ada yang...

1:02:13Saya gak pernah berusaha sampai sekarang

1:02:15tidak pernah mau berusaha mengerti

1:02:17urusan timezone.

1:02:19Setiap kali mau liat timezone, saya liat dulu world time body.

1:02:21Ini gimana?

1:02:23Gak pernah mau...

1:02:25Jelimet.

1:02:27Itu bisa jadi ide itu

1:02:29kapan-kapan bahas ya punya

1:02:31handling time.

1:02:33Karena waktu itu ternyata bisa

1:02:35berubah-ubah. Beneran maksudnya

1:02:37waktu itu social

1:02:39political construct juga.

1:02:41Time is

1:02:43relative kata

1:02:45Einstein. Time itu bukan absolute.

1:02:47Oke.

1:02:51Ya.

1:02:53Siapa lagi ini? Eka. Eka. Eka pilih.

1:02:55Oke. Bentar. Gua pilih dulu ya.

1:02:57Pilih-pilih.

1:02:59Banyak yang mirip-mirip yang tadi sih. Kayak kurang if

1:03:01atau kurang where. Coba cari yang

1:03:03varian lain ya.

1:03:05Ini dari sekian banyak

1:03:07yang mengirimkan.

1:03:09Ada satu yang beneran horror.

1:03:11Bukan horror develop.

1:03:13Beneran horror.

1:03:15Bacain, bacain.

1:03:17Ada yang panjang.

1:03:19Panjang, panjang.

1:03:21Yang panjang.

1:03:23Nanti penutup.

1:03:25Yang depannya ini sih beneran horror.

1:03:27Nah ini aja

1:03:29yang agak panjang.

1:03:31Dari Panadol. Nama itu ya.

1:03:33Nama samaranya.

1:03:35Pusing pasti.

1:03:37Pusing.

1:03:39Ini lumayan panjang ceritanya.

1:03:41Seru sih. Biar kayak film horror beneran.

1:03:43Awalnya kantor saya

1:03:45memiliki sepuluh.

1:03:47Sepuluh BPS di Digital Ocean.

1:03:49Yang mayoritas isinya

1:03:51WordPress dan beberapa

1:03:53aplikasi PHP.

1:03:55Karena ada kenaikan harga bulanan

1:03:57Digital Ocean itu berdampak

1:03:59juga ke pengeluaran bulanan kantor.

1:04:01Akhirnya dengan inisiatif

1:04:03sendiri, nah ini key word.

1:04:05Ini awal-awalnya film horror kan

1:04:07suka gitu kan. Akhirnya dengan

1:04:09inisiatif sendiri sebagai IT

1:04:11yang ditugasi mengurusi.

1:04:13Saya coba bersihkan web-web lama yang

1:04:15udah tidak terpakai. Nah so far kayaknya

1:04:17masih cukup.

1:04:19Dan saya gabungkan beberapa web

1:04:21ke VPS yang ada.

1:04:23Sehingga tersisa 5 VPS saja.

1:04:25Namun di antara

1:04:275 VPS ini ada

1:04:29satu VPS yang umurnya

1:04:31cukup tua dan masih menggunakan

1:04:33Ubuntu 16.

1:04:35Jadi VPS ini banyak celah

1:04:37keamanan. Dan kebetulan

1:04:39VPS ini punya storage yang paling besar.

1:04:41Padahal dengan tagihan yang sama

1:04:43VPS baru tidak mendapat storage

1:04:45sebesar VPS

1:04:47lama ini. Singkat cerita

1:04:49untuk mengatasi problem keamanan

1:04:51saya harus upgrade VPS

1:04:53lama ini. Nah ini juga

1:04:55ini juga mulai kalau horror itu

1:04:57udah mulai tanda-tanda ini.

1:04:59Nah lanjut. Saya harus

1:05:01upgrade VPS lama ini dengan install

1:05:03ulang VPS-nya

1:05:05menggunakan Image OS Ubuntu

1:05:07terbaru. Kenapa harus install ulang?

1:05:09Kan bisa VPS baru aja.

1:05:11Waktu itu saya berpikiran

1:05:13saya harus pertahankan VPS

1:05:15lama ini. Karena storage-nya besar.

1:05:17Terus kamu beli VPS

1:05:19baru dengan ukuran storage lama

1:05:21maka harganya jadi lebih mahal.

1:05:23Saya putuskan. Saya beli

1:05:25satu VPS untuk

1:05:27jadi server sementara atau server

1:05:29backup. Jadi semua web

1:05:31di VPS lama saya pindah ke

1:05:33VPS backup. Sebenernya

1:05:35kami sudah pakai run cloud. Jadi

1:05:37lebih mudah migrasi antar server.

1:05:39Dari 40 web yang ada waktu itu

1:05:41ada 3 aplikasi yang bukan WordPress

1:05:43tapi web app berbasis

1:05:45PHP. Dan 3 aplikasi

1:05:47ini berkendala saat saya migrasi

1:05:49menggunakan run cloud.

1:05:51Sehingga saya harus migrasi manual.

1:05:53Nah makin serem ini.

1:05:55Oke lanjut.

1:05:57Waktu itu saya

1:05:59dam satu database menjadi

1:06:01file db.gzip.gz

1:06:03di direktori

1:06:054 aplikasi pertama.

1:06:07Dan aplikasi pertama saya

1:06:09kompres ke tar.gzip.

1:06:11Lalu saya SCP

1:06:13ke server backup.

1:06:15Proses transfer file ini agak

1:06:17lama. Saat itu saya berpikiran

1:06:19ingin segera menyelesaikan

1:06:21semua proses ini agar

1:06:23tagihan server backup nanti tidak

1:06:25mahal. Nah ini juga sudah tanda-tanda.

1:06:27Akhirnya saya bikin

1:06:29session SSH baru

1:06:31untuk backup aplikasi kedua dan ketiga.

1:06:33Kebetulan yang ini

1:06:35memang agak rumit. Jadi saya

1:06:37harus pelajari dulu struktur

1:06:39direktorinya. Oke setelah itu

1:06:41saya dam database kedua

1:06:43aplikasi ini. Lalu saya kompres

1:06:45direktori dan SCP ke

1:06:47server backup. Prosesnya cepat.

1:06:49Setelah semua web

1:06:51sudah ada di PPS backup

1:06:53saya merasa semua sudah aman.

1:06:55Nah saya lanjut

1:06:57install ulang PPS lama tadi.

1:06:59Dan setelah itu saya ketapa

1:07:01saya kecewa. Karena ternyata setelah

1:07:03ulang ukuran storage-nya

1:07:05ikut menyusut

1:07:07menyesuaikan dengan

1:07:09harga terbaru. Ini

1:07:11semikomedi ya.

1:07:13Setelah install ulang ukuran

1:07:15storage-nya ikut menyusut

1:07:17dengan harga terbaru.

1:07:19Aduh berarti

1:07:21tadi dua paragraf di atas

1:07:23perjumpa.

1:07:25Ya lanjut.

1:07:27Karena PPS

1:07:29backup saya tadi harganya

1:07:31lebih mahal.

1:07:33Ya karena

1:07:39tadi harganya lebih mahal, saya harus

1:07:41kembalikan data web app ke

1:07:43PPS lama. Memang ini rencana awal

1:07:45saya dengan asumsi storage

1:07:47PPS lama tidak ikut

1:07:49menyusut.

1:07:51Dan yang pertama kali saya kembalikan adalah

1:07:53tiga website yang saya backup manual

1:07:55tadi. Karena hanya tiga website

1:07:57ini yang kondisinya offline.

1:07:59Yang lain tetap online walaupun

1:08:01ada di server backup.

1:08:03Website pertama oke lancar.

1:08:05Hanya ada sedikit kendala di

1:08:07file dem SQL. Karena nampaknya

1:08:09ada query yang pernah ditambah hacker

1:08:11yang menyebabkan error.

1:08:13Tapi semua pasti bisa di atas sih.

1:08:15Dan ketika

1:08:17memerlukan website kedua dan ketiga

1:08:19saya terlalu sangat kaget.

1:08:21Karena saya

1:08:25tidak...

1:08:27karena

1:08:29saya tidak menemukan file dem

1:08:31SQL database-nya.

1:08:33Ayo lo hilang.

1:08:35Ditambah tadi

1:08:39saya juga sudah hapus

1:08:41backup-backup SQL sebelumnya.

1:08:43Karena saya pikir sudah ada yang

1:08:45baru. Jujur

1:08:47saya langsung keringat dingin.

1:08:49Saya nggak percaya. Karena hal ini

1:08:51semestinya bisa saya hindari.

1:08:53Saya cek sampai

1:08:55dua tiga kali.

1:08:57Dan ternyata saya baru sadar.

1:08:59Saya tadi

1:09:01ngedam directory parent apa

1:09:03titik dua kali dot dot slash

1:09:05website saya.

1:09:07Sementara yang saya

1:09:09backup

1:09:11directory titik slash

1:09:13website saya.

1:09:15Jadi salah lokasinya.

1:09:17Salah apa?

1:09:19Salah path.

1:09:21Waktu ditar gesit

1:09:23semua nggak ikut.

1:09:25Enggak ikut. Yang

1:09:27levelnya apa yang level di atasnya ya?

1:09:29directory parent-nya.

1:09:31Yang tempat yang idam datanya.

1:09:33Patah saja. Tadi proses SVP-nya

1:09:35cepat. Karena file demam

1:09:37database tidak terinput.

1:09:39Saya lapor atasan terkait

1:09:41incident ini dengan

1:09:43persiapkan diri kalau saya bakal kena marah.

1:09:45Untungnya atasan tidak

1:09:47marah. Web ini sebenarnya

1:09:49juga sudah nggak terlalu digunakan.

1:09:51Tapi ada database penjualan

1:09:53dari tahun 2018

1:09:55yang tentunya sangat penting.

1:09:57Untungnya lagi

1:09:59ada backup data user

1:10:01di Google Sheets. Mencakup

1:10:0390% data user yang ada.

1:10:05Happy ending

1:10:07lumayan. Saya menyesal

1:10:09sudah terburu-buru dalam proses migrasi.

1:10:11Dalam pikiran saya

1:10:13mending tagihan mahal daripada

1:10:15terburu-buru. Terus data hilang.

1:10:17Nah, habis ini, ini

1:10:19moralnya. Saya kena mental karena

1:10:21kejadian ini. Tapi saya juga

1:10:23jadi belajar kalau hati-hati lebih

1:10:25penting daripada terburu-buru.

1:10:27Semoga dengan pelajaran ini saya

1:10:29tidak akan ulangi kesalahan yang sama

1:10:31lagi. Jangan lupa untuk

1:10:33selalu cek file backup sebelum file

1:10:35asli kamu hapus atau kamu

1:10:37akan menyesal.

1:10:39Sekian.

1:10:41Moral yang bagus.

1:10:43Jadi

1:10:45hal yang cukup sering ya.

1:10:47Hal yang cukup sering terjadi

1:10:49adalah kita

1:10:51ngedam tapi kita gak coba

1:10:53untuk ngerestore.

1:10:55Itu sering.

1:10:57Yang pertama dulu kita nge-kompres

1:10:59tapi gak coba nge-kompres.

1:11:01Dikompres.

1:11:03Ternyata

1:11:05kompresnya susah.

1:11:07Ternyata salah.

1:11:09Yang dikompres salah folder.

1:11:11Jadi

1:11:13pelajarannya luar biasa ya.

1:11:15Mantap-mantap.

1:11:17Cuma tadi kirain ordernya

1:11:19gara-gara urusan VPS-nya. Kenapa?

1:11:21Cuma nggak, VPS-nya kan cuma zon

1:11:23aja. Tadinya setengah mati mau ngirit.

1:11:25Ternyata setelah di-install ulang ya

1:11:27harganya sama aja.

1:11:29Tapi ya gak apa-apa. Emang kayak gitu.

1:11:31Cuma ternyata masalahnya karena

1:11:33keburu-buru

1:11:35jadi salah lokasi backup.

1:11:37Oke.

1:11:43Apa lagi?

1:11:45Mas Zain atau

1:11:47Mas Nisa atau saya.

1:11:49Kalau saya. Kedengeran.

1:11:51Kedengeran, aman.

1:11:53Dari Twitter nanti lagi yang

1:11:55serem.

1:11:57Untung geser time-zonenya

1:11:59ke belakang. Kalo ke depan

1:12:01tadi kita...

1:12:03Emang lebih...

1:12:05Emang lebih, apalagi yang April nanti.

1:12:07Yang April nanti kayak lebih

1:12:09sering diwanti-wanti sih. Karena jadi bisa

1:12:11tinggalan. Harusnya meeting, kan?

1:12:13Terus...

1:12:15Ternyata live streaming kan.

1:12:17Sangat-sangat tidak

1:12:19profesional.

1:12:21Malu.

1:12:23Ada yang keburu gitu, ada yang

1:12:25ngelaporin loh.

1:12:27Ada yang ngelaporin.

1:12:29Mereka nggak meeting, melainkan live streaming.

1:12:31Ini kita bacain

1:12:33dari Angga Dwi.

1:12:35Di Medsos ya.

1:12:37Angga. Dari X juga.

1:12:39Mas Angga.

1:12:41Kita bacain.

1:12:43Awal mulai kerja

1:12:45atau magang, nge-merge PR

1:12:47tapi base developnya nggak update.

1:12:49Jadi, kerjaan senior dev-nya

1:12:51hilang.

1:12:53Hampir dimakan satu ping itu

1:12:55kayaknya.

1:12:57Niat mau delete, duplicate.

1:12:59Jadi, awal kerja magang,

1:13:01nge-merge PR,

1:13:03tapi base developnya nggak update.

1:13:05Belum deface gitu, belum dipool.

1:13:07Dev branch-nya belum deface.

1:13:09Ya, kok bisa ya?

1:13:11Harusnya kan conflict.

1:13:13Harusnya nggak bisa nge-pool.

1:13:15Oh, kecuali force.

1:13:17Terus resolve-nya mungkin.

1:13:19Resolve-nya dia salah.

1:13:21Antara resolve atau dia

1:13:23force push?

1:13:25Ya, force push.

1:13:27Biasanya kalau dev branch-nya,

1:13:29ya branch-nya apapun belum di

1:13:31fetch latest,

1:13:33belum fetch sama gitpool, kan nggak bisa

1:13:35lagi kan ditolak.

1:13:37Dan tapi kalau pun force push kan

1:13:39harusnya nggak mau di recover sih.

1:13:41Kan bisa pakai git develop.

1:13:43Iya, masih bisa sih.

1:13:45Terus yang kedua,

1:13:49niat mau delete, duplicate roles

1:13:51di production, pakai post gray,

1:13:53malah ngehapus 80% data.

1:13:55Ini beneran serem sih.

1:14:01Ini langsung ya,

1:14:03berarti ware-nya

1:14:05keliru kali ya? Logika ware-nya kali ya?

1:14:07Iya, ware-nya sekeliru.

1:14:09Git blame.

1:14:13Git blame sangat membantu.

1:14:15Kalau yang beda

1:14:17lagi apa ya?

1:14:19Satu tema yang menurut saya perlu di ceritakan juga,

1:14:21kita sebagai supervisor,

1:14:23atasan atau lead,

1:14:25kalau nggak mau dibilang manager.

1:14:27Kalau ada junior kita

1:14:29yang lakukan misalnya itu,

1:14:31dia pernah di posisi,

1:14:33waktu itu sempat jadi manager kan,

1:14:37walaupun udah kapal terus sekarang jadi IT lagi.

1:14:39Tapi misalnya di posisi itu

1:14:41waktu jadi manager,

1:14:43saya sempat juga tuh ada yang melakukan

1:14:45kesalahan di production, tapi itu

1:14:47dari keripu saya.

1:14:49Itu gimana ya, jadi lebih,

1:14:53mungkin karena saya sudah pengalaman tadi,

1:14:55udah pengalaman bikin production besar.

1:14:57Ya, udah pernah mengalami ya.

1:14:59Ada empatinya ya.

1:15:01Iya, bisa lebih berempati.

1:15:03Yang penting kan proses post-mortem-nya

1:15:05sama ya kayak apa,

1:15:07ya pertama yang nyas break down dulu kan,

1:15:09kenapa bisa kayak gitu,

1:15:11terus gimana biar nggak terjadi lagi.

1:15:13Tidak terulang,

1:15:15yang penting itu.

1:15:17Itu pernah kejadian dua kali sih, misalnya satu di

1:15:19junior member yang permanen, satu lagi di

1:15:21anak intern. Ini anak intern yang

1:15:23bukan AI ya?

1:15:25Bukan AI.

1:15:27Bukan AI, anak intern.

1:15:29AI, anak intern.

1:15:31Kita bisa toleransi lah.

1:15:33Selama kita punya

1:15:37blameless acara budaya yang tidak

1:15:39sering

1:15:41menyalahkan,

1:15:43mau dari mana pun itu bersumber,

1:15:45selama kita bisa menambil pacar dari situ ya,

1:15:47misalnya.

1:15:49Saya ada cerita yang bagus lagi sih, masalah cerita ikhlas.

1:15:51Wah ini seru banget.

1:15:53Banyak amat cerita horor.

1:15:55Tapi ini bukan saya

1:15:57persangkanya ya,

1:15:59ini lebih ke

1:16:01change of unfortunate event.

1:16:03Jadi,

1:16:05ini ada katanya sama 0 day

1:16:07attack.

1:16:09Jadi,

1:16:11menarik nih.

1:16:13Sama-sama ring.

1:16:15Ini mungkin

1:16:17ntar akan jadi ketahuan juga

1:16:19pakai stacknya,

1:16:21jadi kon

1:16:23perusahaan,

1:16:25sebuah perusahaan ya,

1:16:27yang pernah ada disana.

1:16:29Itu pakai produknya

1:16:31salah satu,

1:16:33kita sebut aja, atrasian ya.

1:16:37Susah mau nyari

1:16:39samaran ya. Ini perupahan atrasian.

1:16:41Cuman kan atrasian ada yang versi self-hosted,

1:16:43ada yang versi cloud.

1:16:45Nah, karena

1:16:47cari yang murah, pakai yang self-hosted.

1:16:51Kalau udah aba baca yang murah,

1:16:53biasanya agak-agak ini.

1:16:55Cuman namanya software kan pasti,

1:16:57tadi yang masalah VPS

1:16:59tadi kan juga ada,

1:17:01ketika ubuntu servernya ketinggalan,

1:17:03pasti ada kekhawatiran security.

1:17:05Makanya kita harus selalu update.

1:17:07Ini masalahnya adalah,

1:17:09ternyata ada sebuah versi patch

1:17:11yang itu dirilis,

1:17:13buru-buru,

1:17:15segera dirilis,

1:17:17sehari setelah ada

1:17:19apa yang announced dulu,

1:17:21bahwa ada 0D incident di situ.

1:17:23Jadi ini ada sebuah

1:17:25vulnerability yang sangat signifikan.

1:17:27Terus,

1:17:29akhirnya semua yang pakai

1:17:31self-hosted harus upgrade.

1:17:33Berarti kan itu orang infiltranya harus aktif.

1:17:35Jadi kita

1:17:37dapet notifikasi tuh, tim infiltranya dapet notifikasi.

1:17:39Ini saya juga gak tau kejadiannya,

1:17:41saya tahu dari post-mortemnya ya.

1:17:43Jadi saya mau menyampaikan kembali.

1:17:47Sayangnya saat,

1:17:49jadi ada gap tuh, kalo gak salah hari Jumat

1:17:51diumumkan.

1:17:53Jadi idealnya ya kalo mau cepet karena yang diuruskan,

1:17:55ya sebetulnya harus dikejarin.

1:17:57Cuman masalahnya kalo gak salah waktu itu

1:17:59lagi cuti orang infiltranya.

1:18:01Jadi lagi cuti,

1:18:03terus ya...

1:18:05Ini juga udah tanda-tanda horror,

1:18:07ada unsur buru-buru,

1:18:09terus orang yang biasanya in charge

1:18:11paham banget lagi cuti,

1:18:13ini udah 2 komponen cerita horror.

1:18:15Ya gitu.

1:18:17Terus, kan sebenernya kalo kita

1:18:19ada backup-nya, cuman backup-nya juga

1:18:21waktu itu gak unavailable, saya lupa gimana ceritanya.

1:18:23Pokoknya intinya semua orang yang seharusnya bertanggung jawab

1:18:25upgrade itu

1:18:27lagi gak bisa dan

1:18:29selama ini sih gak ada masalah berarti ya.

1:18:31Kita kadang telah satu hari, dua hari, oke lah ya.

1:18:33Nah,

1:18:35ternyata

1:18:37apesnya adalah

1:18:39dalam rentang waktu itu,

1:18:41ternyata server-nya kena serang.

1:18:43Ternyata server-nya itu kena serang.

1:18:45Serangannya itu

1:18:47meng-encrypsi

1:18:49semua

1:18:51meng-encrypsi semua AC database

1:18:53di...

1:18:55bukan, meng-encrypsi

1:18:57volumenya,

1:18:59meng-encrypsi volume

1:19:01VPS siapa sih?

1:19:03di storage, saya gak tau.

1:19:05Volume ini,

1:19:07storage-storage kan?

1:19:09Iya, volume storage-nya.

1:19:11Ini yang volumenya ter-encrypsi, sehingga

1:19:13kan jadi gak bisa di access kita tanya-tanya.

1:19:15Akhirnya rusak,

1:19:17coba di restore dengan berapa macam, dengan back-up segala macam.

1:19:19Gak bisa juga karena apa saya juga

1:19:21aku bilang tuh kalau salah,

1:19:23saya lupa kenapa back-up jadi gak bisa di restore ya.

1:19:25Yang jelas back-up yang terakhir bisa di restore itu

1:19:27adalah back-up 6 bulan sebelumnya.

1:19:29Atau bahkan kalau gak salah setahun sebelumnya bahkan.

1:19:33Saya lupa, pokoknya jauh banget.

1:19:35Waduh.

1:19:37Dan itu produknya produk confluence.

1:19:39Jadi,

1:19:41sehingga yang terjadi adalah dokumen,

1:19:43dokumen selama setahun terakhir itu hilang.

1:19:45Hilang.

1:19:47Nah ini sound, apa soundboard

1:19:49perlul train

1:19:51narus.

1:19:53Iya namanya, itu kena ransomware atau di-encrypt?

1:19:57Kena ransomware gak?

1:19:59Seingat saya,

1:20:03sepertinya ransomware,

1:20:05seingat saya, cuman entah

1:20:07akhirnya ada yang mengontak buat

1:20:09minta an-encrypt atau enggak, saya lupa juga sih.

1:20:11Tapi pada akhirnya,

1:20:13gak bisa di-an-encrypt juga pada

1:20:15dan semua

1:20:17akhirnya macam-macam itu solusinya.

1:20:19Kan yang hilang dokumen ya.

1:20:21Jadi, sebenernya gak kritikal

1:20:23langsung ke bisnis ya. Jadi bisnisnya masih bisa berjalan lantar.

1:20:25Soalnya kan, ya namanya dokumen kan

1:20:27itu kan banyak keputusan yang di situ kan.

1:20:29Konfluence jika hilang semua berarti.

1:20:31Konfluence doang untungnya yang hilang. Jadi jira masih aman.

1:20:37Nah,

1:20:39ya akhirnya selama itu,

1:20:41bahkan disampai berbulan-bulan

1:20:43selanjutnya kita hidup dengan

1:20:45gak ada hidup seperti itu, sehingga

1:20:47kita harus menulis ulang.

1:20:49Kalau butuh, menulis ulang seingat-ingatnya.

1:20:51Lalu ada juga upaya untuk ke-backup

1:20:53dari email. Jadi kan setiap

1:20:55perubahan konfluence kan kita ada email ya.

1:20:57Nah itu ada yang cobain bikin script

1:20:59buat patch.

1:21:01Given the list of email, given emailnya datanya

1:21:03bisa di-patch, jadi

1:21:05restructure kembali ya dokumennya.

1:21:07Tapi ya, akhirnya ini mesti keberhasilan.

1:21:09Gara-gara itu,

1:21:11saya akhirnya, karena saya sudah gak

1:21:13percaya konfluence lagi.

1:21:15Semua dokumen saya saya taruh di markdown.

1:21:17Saya push di gitu.

1:21:19Jadi mau kena force push, mau kena

1:21:23apa, kan kita bisa revlog lagi.

1:21:25Ada sejarahnya, ada

1:21:27historinya. Plain text.

1:21:29It's the best.

1:21:31Dan historinya ada di semua.

1:21:33Ada di semua, iya.

1:21:35Komputer gitu kan. Jadi bahkan

1:21:37kalau setengah komputer kebakaran masih ada

1:21:39setengah komputer lain gitu.

1:21:41Distribusi.

1:21:43Udah kayak bitcoin aja.

1:21:45Bisa terlogis.

1:21:47Iya, iya, iya, iya.

1:21:51Masalahnya adalah jadinya kita

1:21:53jadi bisa tau,

1:21:55misalnya kita mau nge-link pull request ini

1:21:57kait kemana,

1:21:59atau bahkan kalau kita

1:22:01kode pun jadi gampang nyambungnya

1:22:03ke dokumen. Itu pokoknya sih.

1:22:05Cuman kelemahannya ini hanya solusi yang bisa

1:22:07dipakai untuk para developer juga kan.

1:22:09Karena waktu itu kan yang kena kan gak

1:22:11banyak developer. Banyak orang bisnis yang

1:22:13mengambil diri sama git.

1:22:15Saya baru ingat yang horror ini

1:22:17gara-gara denger ada

1:22:19upgrade kecil. Karena ini bener-bener kecil.

1:22:21Jadi ini bener-bener cuma jadar sehari-dua hari.

1:22:23Cuman in that patah cuma weekend aja.

1:22:25Tau-tau senin, konfluence

1:22:27hilang aja dulu.

1:22:31Oke.

1:22:33Saya baru ini juga ada satu kisah

1:22:35yang benar-benar horror.

1:22:37Bentar, ini ada yang cerita juga nih

1:22:39di komentar. Aku pernah salah

1:22:41klik drop data production.

1:22:43Padahal niatnya drop staging.

1:22:45Untuknya ada backup.

1:22:47Nah ini, yang kejadian-kejadian

1:22:49kayak gini tuh

1:22:51klik itu di mana? Di aplikasi

1:22:53desktop kah? Atau di PHP MyAdmin?

1:22:55Kalau zaman dulu PHP MyAdmin.

1:22:57Biasanya sih kayak gini tuh

1:22:59PHP MyAdmin kayak gini ya.

1:23:01Atau

1:23:03sip panel.

1:23:05Atau panel-panel.

1:23:07Biasanya juga sip panel

1:23:09mungkin satu account ya.

1:23:11Hostnya, production sama stagingnya

1:23:13satu account.

1:23:15Beda database gitu.

1:23:17Di database-nya ada di sebelah kiri itu

1:23:19ada dua gitu ya.

1:23:21Ada banyak gitu ya.

1:23:23Ivan mau cerita?

1:23:25Iya, ada beneran horror

1:23:27ini baru inget.

1:23:29Saking horonnya tuh

1:23:31karena terlalu sering

1:23:33kena horror, jadi kadang ya sudahlah

1:23:35jalan aja.

1:23:37Yang penyebabnya

1:23:39bukan saya.

1:23:41Saya adalah orang yang ga risk horror.

1:23:43Tunggu, ini scary movie berarti ya?

1:23:45Horror cuma komedi.

1:23:47Udah jalanin aja.

1:23:49Gimana kejadiannya?

1:23:51Berawal dari update

1:23:55dan itu menggunakan

1:23:57arcing, tau ya?

1:23:59Minus-minus delete.

1:24:01Ini pakai

1:24:07Gatsby ya.

1:24:09Gatsby lagi.

1:24:11Gatsby lagi.

1:24:13Gatsby.

1:24:15Jadi ada

1:24:17change request yang dilakukan

1:24:19oleh tim yang lain. Tim yang di

1:24:21sebelah sana.

1:24:23Di belahan dunia yang berbeda.

1:24:25Tapi bukan company saya.

1:24:27Jadi company-nya si client.

1:24:29Internalnya mereka.

1:24:31Merubah keperubahan.

1:24:33Dan

1:24:35push deploy.

1:24:37Setelah deploy

1:24:39tiba-tiba semuanya 404.

1:24:41Jadi sedikit konteks.

1:24:47Jadi situsnya ini menggunakan static file.

1:24:49Jadi semua situsnya menggunakan static file.

1:24:51Jadi static file itu dipisahkan sama...

1:24:53Ada path.

1:24:55Di belakangnya WordPress.

1:24:57Tetapi

1:24:59di depannya

1:25:01page-nya itu dibuild static file.

1:25:03Nah, si...

1:25:05Ya, betul.

1:25:07Nah, di satu sisi

1:25:09ada aplikasi lain yang menggunakan

1:25:11Gatsby. Yang

1:25:13nge-push

1:25:15nge-push

1:25:17aplikasinya ke folder tertentu.

1:25:19Di path itu.

1:25:21Sama si...

1:25:25Developer yang sebelah sana

1:25:27melakukan perubahan

1:25:29di deploy.yml.

1:25:31Di github action-nya.

1:25:33Somehow

1:25:37dia

1:25:39tidak melakukan set terhadap

1:25:43variable folder

1:25:45yang terakhir. Lupa.

1:25:47Kosong.

1:25:49Akhirnya, ini

1:25:51arsing.min.min.delete ke root folder.

1:25:53Some word, some word.

1:25:57Ke root folder aplikasi

1:25:59yang page yang lain ya.

1:26:01Jadi bukan root folder-nya server ya.

1:26:03Bukan root folder server.

1:26:05Tapi anggap aja /

1:26:07/group

1:26:09/country

1:26:11/...

1:26:13Jadi yang dia targetkan itu adalah yang ke country.

1:26:15Jadi 1 country

1:26:17page-nya itu belong.

1:26:19Dan itu ada 8 market.

1:26:23Ada 8 country yang kena.

1:26:25Dan

1:26:29saya kan santai ya.

1:26:31Itu bukan tugas saya. Maksudnya yang

1:26:33maintain itu, aplikasi itu bukan

1:26:35saya. Bukan tim saya.

1:26:37Tim yang mereka.

1:26:39Tiba-tiba

1:26:41saya langsung di ping dari Slack,

1:26:43di telefon,

1:26:45di emergency call,

1:26:47terus kemudian

1:26:49like,

1:26:51"Ivan, help!"

1:26:53Aduh, itu aja udah serem tuh

1:26:59terima mesej gitu.

1:27:01What? Can you

1:27:03join the call now?

1:27:05Okay?

1:27:07I need a raise.

1:27:09Saya duduk

1:27:11begitu masuk

1:27:13di teams,

1:27:15itu udah kayak

1:27:17udah

1:27:19ada berapa lembar itu ya?

1:27:21Tiga lembar tuh orang.

1:27:23Satu team. Banyak.

1:27:25Ada,

1:27:27anggap aja satu screen itu ada

1:27:2916. Berarti kali 3 sudah

1:27:3130-an orang dalam satu itu.

1:27:33Saya kan santai

1:27:35aja. Kenapa?

1:27:37The page

1:27:39is absconding.

1:27:41404 semua. What?

1:27:43Okay.

1:27:47Saya masih

1:27:49mengapa? Okay.

1:27:51Right now we need to restore everything.

1:27:53Okay.

1:27:55Do we have backup? No.

1:27:57That storage server

1:27:59doesn't have backup. I did tell you

1:28:01long time ago. But you didn't say

1:28:03you don't want it. Maksudnya

1:28:05saya udah bilang,

1:28:07di server storage itu

1:28:09butuh ada backup

1:28:11bekanisem. Tetapi mereka bilang

1:28:13gak ada

1:28:15dana buat itu. Gak bisa.

1:28:17Gak ada. Ceritanya gak ada.

1:28:19Karena semua data yang

1:28:21saya pegang itu kan

1:28:23yang file yang saya punya itu kan

1:28:25sebenarnya datanya ada di WordPress.

1:28:27Di CMS ada. Jadi

1:28:29sebenarnya datanya ada.

1:28:31Tetapi kan, berarti

1:28:33kalau gak bisa backup, berarti gue bilang gak bisa

1:28:35backup, berarti gak bisa

1:28:37auto, gak bisa cepat.

1:28:39Ya, start now.

1:28:41Berarti gue harus, saya harus

1:28:43ngerestore. Saya harus

1:28:45ngerestore itu pages-pages yang

1:28:47ada di CMS nge-rebuild ulang.

1:28:49Dan prosesnya itu

1:28:51saya mulai call dari jam

1:28:53setengah empat pagi dan baru

1:28:55selesai jam 11 malam.

1:28:57Dan sepanjang itu kayak

1:28:5920 jam.

1:29:01Kayak ada senjata di ini ya.

1:29:03Setengah empat sore

1:29:05sampai jam 11 malam.

1:29:07Itu kayak

1:29:09kayak

1:29:1130 orang itu

1:29:13kayak ngetodong pistol. Yang ini sudah

1:29:15belum. Yang itu sudah belum.

1:29:17Masih-masih market protest itu.

1:29:19Ayo cepetan. Ya,

1:29:21mau gimana? Gue gak bisa cepetan. Ini kan gak build

1:29:23satu-satu.

1:29:25Kayak ada Kim Jong Un di belakang gitu ya.

1:29:27Iya, satu market itu bisa

1:29:295000 pages, ada yang 6000

1:29:31pages, yang nge-build satu-satu.

1:29:33Gak pake Gatsby nge-buildnya.

1:29:41Bukan, kalau Gatsby itu kan cuma satu aplikasi

1:29:43doang, satu path doang. Sedangkan

1:29:45di CMS... Oh, yang statik-statiknya.

1:29:47Yang di CMS kan ada

1:29:491000 pages. Anggap aja ada 1000

1:29:51pages ya. Berarti kan

1:29:531000 pages itu kan di-create

1:29:55static file-nya, send,

1:29:57di-batch sih, tetap

1:29:59batch. Tetapi batch-nya itu kan butuh.

1:30:01Butuh waktu.

1:30:03Dan ada 8 market.

1:30:05Satu marketnya bisa 1000, 2000,

1:30:073000 pages.

1:30:09Kalau marketnya besar bisa 5000 pages.

1:30:11Jadi,

1:30:13bisa gak beberapa... Jadi,

1:30:15saya tuh kayak ngelayani

1:30:17masing-masing customer

1:30:19itu. Please, homepage

1:30:21dulu dihidupin.

1:30:23Homepage-nya dulu dinyalain. Ini sudah banyak

1:30:25customer marah-marah. Yaudah.

1:30:27Saking banyaknya, kan

1:30:29kalau ada page tertentu yang mau

1:30:31dihidupin atau dicepetin,

1:30:33saya bisa pakai command line.

1:30:35Nyalain, satu-satu, ketek-ketek...

1:30:37Akhirnya makin lama makin banyak, dan

1:30:39satu-satu gak bisa.

1:30:41Ini kitab tiketnya.

1:30:43Yang mau gue nyalain

1:30:45duluan, tulis di sana. Nanti gue follow up.

1:30:47Kalau sudah selesai, gue cek tangan.

1:30:49Jangan ping gue.

1:30:53Oke, gue lagi kerja. Jangan nge-ping.

1:30:55Tulis aja di situ apa yang lo mau.

1:30:57Bilang aja, makin didistract, makin

1:31:01dipanggil pagi, ini makin

1:31:03gak selesai-selesai.

1:31:05Gue bilang, gue mau makan dulu ya, jam 7 ya?

1:31:0715 menit?

1:31:09Oke, oke.

1:31:11Mau pipis aja permisi.

1:31:15Astaga.

1:31:17Terus jam setengah 11 baru beres semua.

1:31:19Besok,

1:31:21besoknya saya diminta yang bikin

1:31:23ACA.

1:31:25Kok gue bikin ACA?

1:31:27Rute Cause Analysis.

1:31:29Rute Cause Analysis.

1:31:31Postmortem.

1:31:33Postmortem.

1:31:35Di cari-cari,

1:31:37ternyata arsingnya

1:31:39salah. Ini yang bikin

1:31:41siapa? Kok bisa tahu? Ada

1:31:43lognya? Kan ada,

1:31:45kalau, kan ada di kitab,

1:31:47rurikosnya kan ada.

1:31:49Di mana salahnya kan ada.

1:31:51Tapi di gitabnya emang ada

1:31:53arsingnya, gak ada kan?

1:31:55Di gitab action.

1:31:57Di gitab action.

1:31:59Iya.

1:32:01Jadi sebenarnya

1:32:03pace-nya semua gak semua,

1:32:05hancurnya gak semua.

1:32:07Selamatnya tau kenapa.

1:32:09Saya ada selamatnya,

1:32:11ada untungnya di sini.

1:32:13Karena di gitab action saya kasih time out.

1:32:15Oh, jadi

1:32:17gak kuruk.

1:32:19Arsing.

1:32:21Arsing delete-nya karena file-nya terlalu

1:32:23terlalu banyak.

1:32:25Akhirnya

1:32:27gitab action itu time out.

1:32:29Karena time out gak hapus semua.

1:32:31Tetapi banyak juga

1:32:33yang kehapus.

1:32:35Lebih banyak yang kehapus daripada yang tinggal ya?

1:32:37Nggak, nggak. Lebih banyak yang tinggal.

1:32:39Tapi kalau nge-rebuild itu kan,

1:32:41saya gak bisa, kalau nge-re-publish

1:32:43semua pages, gak bisa

1:32:45pick and choose. Kalau sekali

1:32:47button nge-re-publish,

1:32:49ya semuanya di-re-publish.

1:32:51Saya hanya bisa

1:32:53komen lainnya itu nge-re-publish

1:32:55yang satu-satu.

1:32:57Ya.

1:32:59Padahal kata kayak Mas Yogi

1:33:01di sini, Rm in Rf,

1:33:03ya arsing min min delete itu

1:33:05sama aja nasibnya sama Rm in Rf.

1:33:07Rm in Rf itu

1:33:09komen

1:33:11yang paling horror. Temen-temen

1:33:13pada masih pakai yang original

1:33:15di alias, kalau saya pakai

1:33:17alias ya, jadi masuk

1:33:19ke trash.

1:33:21Di lokal ya, di lokal ya.

1:33:23Bukan di production, di production mah.

1:33:25Nggak gitu-gitu.

1:33:27Aliasnya kebalik banget, aliasnya CAT mas.

1:33:29Kat di alias

1:33:31ke Rm, Rm, Rm.

1:33:33Kebalik, kebalik.

1:33:35Jahat banget.

1:33:37Ah jahat banget.

1:33:39Kayaknya ngerjain komputer

1:33:43orang aja sih kayak gitu ya.

1:33:45Iya.

1:33:47Di CAT, tapi

1:33:49dia bikin, atau film apa, tapi

1:33:51Rm in Rm ininya.

1:33:53Di film, sedih banget. Dia trauma

1:33:55loh nanti, dia mau belajar film

1:33:57lagi loh.

1:33:59Gara-gara

1:34:01film jadi rusak laptopnya.

1:34:03Film etec

1:34:05my.conv

1:34:07terus ilang.

1:34:11Ya.

1:34:13Itu cerita kasing.

1:34:15Kayak dulu, apa, dulu prank Windows

1:34:17ngahatus system

1:34:1932.

1:34:21Oh iya itu.

1:34:23Itu jaman brontok

1:34:25kayaknya ada begitu-gituan juga tuh.

1:34:27Iya.

1:34:29Makanya di-proceed.

1:34:31Iya, ngomongin nge-prank

1:34:33saya pernah nge-prank

1:34:35atasan.

1:34:37Wah.

1:34:39Jadi yang horror itu atasan saya.

1:34:41Iya.

1:34:43Jadi sebenernya ngga nge-prank

1:34:45gimana-gimana ya. Disini temen-temen

1:34:47ada yang tau

1:34:49cerita tentang John Titor ga sih?

1:34:51Ngga. Ngga tau ya?

1:34:55Ngga tau. John Titor.

1:34:57Jadi itu ada

1:34:59cerita apa ya?

1:35:01Urban Legend lah ya, Urban Legend.

1:35:03Jadi katanya ada seorang

1:35:05yang namanya John Titor, itu dikirim

1:35:07dari dia naik

1:35:09mesin waktu.

1:35:11Oh kayaknya sama-sama.

1:35:13Ke jaman sekarang.

1:35:15Cuma ada fotonya gitu.

1:35:17Misinya itu dia harus mengambil

1:35:19satu server atau apa gitu disini supaya

1:35:21menyelamatkan dunia gitu lah kira-kira ya.

1:35:23Jadi

1:35:25pada saat itu saya dikasih kerjaan karena

1:35:27waktu di kantor itu bikin aplikasi.

1:35:29Sama ini kayaknya intermittent juga.

1:35:31Kadang 100%

1:35:33database

1:35:35MySQL-nya, server MySQL-nya.

1:35:37Tapi

1:35:39ga tentu gitu. Akhirnya

1:35:41atasan saya, CTO-nya

1:35:43dia bilang, "Tolong dong bikinin monitoring

1:35:45system, kalo udah mau 90%

1:35:47saya di email katanya."

1:35:49Kasih peringatan gitu.

1:35:51Saya bikin lah, selesai scriptnya

1:35:53jalan

1:35:55saya bikin emailnya, tapi emailnya saya

1:35:57bikin itu. "Halo, saya

1:35:59John Titor dari masa depan. Server

1:36:01kamu bentar lagi 100%.

1:36:03Tolong di restart."

1:36:05Gitu kan.

1:36:07Ga lama tiba-tiba

1:36:09dia ke

1:36:11meja saya tanyain,

1:36:13"Kenal John Titor ga?"

1:36:15"Iya."

1:36:17Itu kan. "Dari masa depan?"

1:36:19"Iya." Tadi dia email katanya gitu.

1:36:21"Nih, baca, ngeliatin ga?"

1:36:25Gua dengan

1:36:27berusaha untuk menahan

1:36:29tawa, "Wah, bahaya itu."

1:36:31Pura-pura ga tahu aja.

1:36:33"Hah, beneran?"

1:36:35"Ngga, bukan gue."

1:36:37Akhirnya dia balik lagi ke ruangannya dengan

1:36:39masih

1:36:41itu, masih

1:36:43syok dengan

1:36:45itu. Dan dia ga tau

1:36:47kalo itu gue. Begitu dia

1:36:49ketawa-ketawa. Akhirnya

1:36:51ga tega kan, 30 menit

1:36:53kemudian gue campurin, gue bilang, "Itu gue yang

1:36:55bikin."

1:36:57Ini prom-nya yang diubah ya, Mas?

1:36:59Atau gimana?

1:37:01Email-nya sebenernya email lokal sih.

1:37:03Harusnya dia tau kalo ngeliat header.

1:37:05Tapi kan from-nya kan

1:37:07John Titor, gitu.

1:37:09Kerain-kerain spoofing ini, spoofing prom-nya.

1:37:11Engga. Cuman itu aja.

1:37:13Email-nya from, John Titor.

1:37:15Terus email-nya email

1:37:17kantor,

1:37:19gitu kan. Tapi kan mungkin ga

1:37:21kebaca atau gimana. Terus ya

1:37:23subjeknya ya dibikin

1:37:25se ini mungkin,

1:37:27gitu. Pake bahasa Inggris segala.

1:37:29Dan ternyata dia juga tau

1:37:31cerita itu. Dan percaya jangan jahat.

1:37:33Maksudnya dia langsung

1:37:35panik. Ini siapa yang

1:37:37ngirim?

1:37:39Mas Riza, ininya

1:37:43apa?

1:37:45Sense of joke-nya tinggi juga.

1:37:47Sense of keberanian aja sih, nge-prank-nya

1:37:53ke bos.

1:37:57Kenapa tau sense of humor-nya si bosnya?

1:37:59Bukan masalah sense of humor mas Rizanya.

1:38:01Sense of humor bosnya.

1:38:03Iya sih. Itu kalo dipikir-pikir itu

1:38:07salah tempat ya.

1:38:09Bercandanya terlalu, terlalu

1:38:11ekstrim ya. Tapi kan

1:38:13ya jujur sih

1:38:15gua ga nyangka kalo ternyata dia

1:38:17sepercaya itu.

1:38:19Karena kan dia ngasih

1:38:21kerjaan kan. Kerjaannya adalah memonitor

1:38:23database dan bisa restart otomatis.

1:38:25Harusnya kan tau.

1:38:27Ya udah lah gitu.

1:38:29Jog task-nya udah jelas gitu.

1:38:33Iya cuman ya

1:38:35parodi-parodi aja.

1:38:39Kok percaya banget?

1:38:41Oke. Cukup.

1:38:47Oh ada lagi nih satu.

1:38:49Mas Dade.

1:38:51Kenapa kamu dipecat dari perusahaan

1:38:53web3 ya?

1:38:55Saya membuat

1:38:57bug di smart contract kemungkinan

1:38:59attacker

1:39:01menarik semua likuiditas.

1:39:03Gak ngerti.

1:39:05Gak ngerti saya.

1:39:07Itu kayak blockchain.

1:39:09Oh blockchain gitu ya?

1:39:11Infinite money.

1:39:13Terus ada

1:39:15yang menyerang.

1:39:17Terus?

1:39:19Gak ini kayaknya jog deh.

1:39:21Oh jog itu.

1:39:23Bukan drill ini.

1:39:25Bukan beneran ya.

1:39:27Oke. Baiklah.

1:39:29Cukup.

1:39:31Gimana mas Zain?

1:39:33Saya ingin lagi satu lagi.

1:39:35Bug yang di Cloudflare.

1:39:37Eh.

1:39:39Oh ada lagi.

1:39:41Terakhir.

1:39:43Karena, saya lupa Cloudflare atau mana ya?

1:39:45Saya ingin saya Cloudflare.

1:39:47Jadi dia sempat down karena ada

1:39:49ada

1:39:51use effect.

1:39:53Yang.

1:39:55Use effect? Oh!

1:39:57Ada yang kirimin juga tool.

1:39:59Ya gitu lah.

1:40:01Jadi ini ada use effect,

1:40:03something wrong.

1:40:05Selalu reload, reload,

1:40:07reload, reload.

1:40:09Ada yang guling Cloudflare use effect-nya?

1:40:11Ada sih.

1:40:13Ada, ada, ada. Cloudflare ada. Ya, kejadian itu dia.

1:40:15Ada, ada.

1:40:17Ada juga yang apa, yang kirimin ceritanya

1:40:19juga ada tuh. Gara-gara use effect.

1:40:21Berbahaya juga ya? Use effect-nya.

1:40:23Beran lalu ini. Baru-baru lalu ya.

1:40:25Iya, iya, iya.

1:40:27Ya, kalau di dalam

1:40:29di dalam use effect-nya

1:40:31ada fetch, terus enggak

1:40:33dikasih parameter kedua yang empty ray,

1:40:35ya dia kan ketrigger terus.

1:40:37Terus setiap ketrigger,

1:40:41dia nge-fetch lagi.

1:40:43Ini ya?

1:40:47Blunder.

1:40:49Blunder is effect.

1:40:51Mistakenly included problematic object.

1:40:53Jadi ini ada. Jadi sebenarnya

1:40:55depending on the area ada. Tapi ada object

1:40:57yang problematic. Jadi object-nya

1:40:59ter...

1:41:01Ini ada post-mortem-nya langsung dari cluster-nya.

1:41:03Oh, yang ini bukan?

1:41:05Deep dive into Cloudflare.

1:41:07Ya, menariknya mereka

1:41:09mau terbuka sih. Cluster lumayan

1:41:11terbuka sih.

1:41:13Ya, ada post-mortemnya ya.

1:41:15Ini juga sih.

1:41:17Ya, horror tapi campur comedy gitu.

1:41:19Comedy slapstick kayak orang

1:41:21ke playset kulit pisang gitu loh.

1:41:23Ya, karena ini masalahnya

1:41:27dependency ray, kalau kita punya

1:41:29object di dalamnya, dan object-nya selalu

1:41:31di-recreate, jadi always new object.

1:41:33Iya.

1:41:37Tapi tenang, ada solusinya. Dari minggu lalu

1:41:39kan kita belajar bahwa

1:41:41react sekarang ada compilernya.

1:41:43Oh iya, iya, iya.

1:41:45Bisa di-automasi tuh.

1:41:47Bisa di-cegah.

1:41:49Bisa di-cegah.

1:41:51Benar-benar ada juga tuh.

1:41:55Karena ada compiler, jadi ada satu lagi

1:41:57apa ya? Use effect event atau?

1:41:59Use effect event ya.

1:42:01Yang baru.

1:42:03Kita berbahas kemarin.

1:42:05Baru dibahas kemarin.

1:42:07Oke.

1:42:09Ngomong-ngomong minggu lalu,

1:42:11minggu depan kita bahas apa?

1:42:13Apa ya? Liat dong.

1:42:15Nggak nyambung ya.

1:42:17Dikita.

1:42:19Iya, sama-sama ada unsur minggunya.

1:42:21Minggu depan. Topik minggu depan.

1:42:27Apa tuh

1:42:29RBAC?

1:42:31Ini baru ya?

1:42:33Ini baru ya?

1:42:35Role-based authentication, authorization.

1:42:41Wah kaya salah gini, kaya salah gini.

1:42:43Panjang dia.

1:42:45Ya, berbobot ya kalau ngasih topik.

1:42:47Berbobot, berbobot ya.

1:42:49Ya itu RBAC kan role-based

1:42:51kaya apa?

1:42:53Kalau read, misalnya

1:42:55boleh public.

1:42:57Tapi mau saya apa?

1:42:59Ya layer keamanan lah.

1:43:01Siapa yang layer

1:43:03atau type user apa yang

1:43:05boleh write operation.

1:43:07Iya, ini seriusan nih.

1:43:11Kaya sama,

1:43:13udah jadi blog post ini.

1:43:15Kita tinggal bacain doang.

1:43:17Oh,

1:43:19dicontohin lah Rafael ya.

1:43:21Waktu itu kita minta

1:43:23dia ikut

1:43:25nongol di stream.

1:43:27Gak mau, dia malu-malu.

1:43:31Belum mau, belum mau.

1:43:33Bagus ini.

1:43:35Kemarin juga, waktu request sebelumnya

1:43:37juga begitu.

1:43:39Pake mermaid segala nih, keren banget.

1:43:41Ini mah bukan request ini.

1:43:45Nah ini dia udah punya topik,

1:43:49disuruh tolk aja udah.

1:43:51Bener kan?

1:43:53Apakah ini menggunakan AI?

1:43:55Ya gak apa-apa juga sih.

1:43:57Ya gak apa-apa kalau boleh ngerapihin.

1:43:59Tapi kan apa dia bisa

1:44:01menstruktur kontennya.

1:44:03Rajin sekali Kaisa.

1:44:05Ini disort berdasarkan.

1:44:07Beda buku,

1:44:15beda buku.

1:44:17Buku apa?

1:44:19Getting real.

1:44:21Atau apa?

1:44:23For our world.

1:44:25Testing dengan play.

1:44:27Yang kemarin ya?

1:44:29Apa itu?

1:44:31Shape Up?

1:44:33Belum baca sih Shape Up?

1:44:35Semua bukunya.

1:44:37Harus didundang lagi.

1:44:41Nanti kalau bahas-bahas Basecamp,

1:44:43penarik sih.

1:44:45Iya, Basecamp.

1:44:47Menarik ya.

1:44:49Semua bukunya, seingat saya sudah semua.

1:44:51Semua bukunya.

1:44:53Remote.

1:44:55Remote.

1:44:57Getting real.

1:44:59Shape Up.

1:45:01Shape Up.

1:45:03Yes.

1:45:05Bagus-bagus sih.

1:45:07Getting real sama Shape Up juga

1:45:09menarik sih.

1:45:11Sekaligus dua gitu.

1:45:13Kan satu-satunya belum

1:45:15untuk becah.

1:45:17Saring berhubungan kan?

1:45:19Getting real dulu lah yang tipis.

1:45:21Formulaannya kan getting real ya.

1:45:23Ya, tapi

1:45:25uang tanya bagaimana bagusnya?

1:45:27Coba Mas Zain yang sudah baca.

1:45:29Oh ya, Mas Zain dulu.

1:45:31Getting real dulu sih

1:45:33harusnya.

1:45:35Getting real dulu.

1:45:37Project management ya.

1:45:41Getting real mulai dari ide sampai implementasi.

1:45:47Dan bukunya gratis.

1:45:49Jadi bisa dibaca juga

1:45:51sama temen-temen yang lain.

1:45:53Saya bacanya sebagai audio book.

1:45:55Jadi saya buka

1:45:57di safari.

1:45:59Saya

1:46:01kalau bisa hatam dua buku ini

1:46:03karena

1:46:05saya bacanya sambil nyetir

1:46:07saya buka safari ya.

1:46:09Sambil cuci piring.

1:46:11Saya nyetir waktu itu

1:46:13Njepjabali.

1:46:15Jadi lumayan hatam.

1:46:19Berapa efektif sih

1:46:21audio book masuk gak sih

1:46:23ke WhatsApp? Kalau saya kayaknya

1:46:25harus baca dan harus highlight

1:46:27tergantung orangnya.

1:46:29Kalau gue surface level sih.

1:46:31Otak gue single credit masalahnya.

1:46:35Jadi kadang misalnya

1:46:37jalan atau apa

1:46:39pengennya kan sambil

1:46:41sambil denger podcast ya.

1:46:43Biar masukin lulus kalian.

1:46:45Itu tuh kayak denger

1:46:47samar-samar. Jadi kayak inget

1:46:49jaman sekolah atau kuliah gitu loh

1:46:51guru terangin. Sebenernya ngerti intinya

1:46:53itu tentang apa. Tapi makin lama kayak

1:46:55suaranya tuh makin melayang-layang jauh

1:46:57jadi kayak gak onsen. Tapi

1:46:59kalau sekarang sih denger podcast misalnya

1:47:01podcast tentang AI atau

1:47:03webdave atau apa. Kalau ada poin yang

1:47:05menarik, beneran apa

1:47:07rewind, mundurin detiknya.

1:47:09Berhenti dong, berhenti

1:47:11di pinggir jalan nih, di trotor

1:47:13berhenti dulu. Harus berhenti ngedenger.

1:47:15Kalau mau mas.

1:47:17Gak, gak berhenti.

1:47:19Tapi mau saya dengerin yang fokus

1:47:21baru masuk sepenuhnya. Cuma kalau

1:47:23sambil jalan, sambil aktivitas lainnya

1:47:25kayak denger sekilas. Jadi kayak

1:47:27cuma bisa bilang

1:47:29di podcast X, speaker

1:47:31A dan B tuh ngomongin tentang

1:47:33topik Y gitu.

1:47:35Kayak cuma topik besarnya.

1:47:37Tapi kayak poinnya apa. Terus kan

1:47:39pemahaman macam-macam ya. Ada yang cuma

1:47:41word-nya. Tapi kan sebenernya yang

1:47:43dalam itu kayak why, how.

1:47:45Nah, itu semua gak bisa jelasin

1:47:47kalau cuma dengerin.

1:47:49Tapi sebetulnya

1:47:51kalau... apa?

1:47:53Jangan pake node.js.

1:47:55Otaknya. -Single-threaded ya?

1:47:57-Iya. -Single-threaded ya?

1:47:59-Iya. -Single-threaded ya?

1:48:01Oke, good channel.

1:48:03Good channel.

1:48:05Jadi, pokoknya itu

1:48:07kalau sambil jalan kaki,

1:48:09sambil liat apapun, pokoknya

1:48:11kalau otak pake buat aktivitas apapun

1:48:13ya itu kayak main thread-nya

1:48:15tuh occupied sih.

1:48:17Nah, cuma tetep...

1:48:19gak apa salah biar sekilas,

1:48:21minimal sekilas ada bayangan

1:48:23bahwa ada topik ini minimal

1:48:25ngerti topiknya menarik atau enggak.

1:48:27Tapi kalau pengen paham beneran sama pengen tahu

1:48:29sebetulnya apa sih, kayak beneran harus baca sih.

1:48:31Harus baca apa?

1:48:33Mata, liat

1:48:35layar atau liat, ya

1:48:37biasanya layar. Udah jarang

1:48:39aku fisik.

1:48:41Liat layar, baca, terus kalau mau masuk

1:48:43beneran ya kayak beneran harus nge-highlight

1:48:45terus bikin komen apa

1:48:47dikasih note sendiri

1:48:49di obsidian atau

1:48:51itu lainnya. Kalau mau beneran

1:48:53paham kayaknya satu-satunya cara

1:48:55cuma itu sih kalau gue pribadi.

1:48:57Betul.

1:48:59Salah satu yang missing

1:49:01yang saya kehilangan itu kalau

1:49:03baca atau

1:49:05dengerin buku gitu ya, audio book atau

1:49:07podcast itu, enggak bisa nge-highlight

1:49:09pengen di-highlight, lulus catatan

1:49:11segala macam gitu, sulit

1:49:13gitu. Jadi, kalau

1:49:15harus audio book, harus

1:49:17siapin catatan

1:49:19atau harus ambil

1:49:21ini, highlight menit

1:49:23keberapa.

1:49:25Itu tetap enggak bisa

1:49:27multi-tasking kan, sulit.

1:49:29Saya bukan punya obsidian

1:49:33buat misalnya enggak lagi dengerin buku

1:49:35atau podcast. Kalau udah hal penting

1:49:37saya taruh di

1:49:39menit keberapa yang bahas tentang apa

1:49:41untuk menit lagi. Karena emang susah

1:49:43di balisin.

1:49:45Bisa jadi ide

1:49:47ini tuh, bisa jadi ide

1:49:49aplikasi tuh.

1:49:51Eh, jadi topic

1:49:53juga bagaimana developer

1:49:55mencatat.

1:49:57Mencatat.

1:49:59Ada tools-nya, caranya

1:50:01kan ada metode-metodenya tuh

1:50:03dari buku apa

1:50:05gitu, cara bikin catatan

1:50:07belajar lah, belajar

1:50:09framework atau apa, baca

1:50:11dokumentasi. Terus habis itu

1:50:13gimana cara menyerap dokumentasi itu

1:50:15supaya jadi

1:50:17ya, selain dipake

1:50:19selain dipake langsung. Jadi

1:50:21mungkin ditulis catatan. Jadi, penasaran atau

1:50:23Igor juga membahas ini, buku Getting Real

1:50:25sekaligus ditambahin

1:50:27nanti bumbunya

1:50:29pengen tahu temen-temen itu

1:50:31menyelesaikan

1:50:33tuduh setiap

1:50:35harinya gimana sih, apa teknik, apa yang dipakai.

1:50:37Ada

1:50:39GTD

1:50:41Eat That Frog

1:50:45Macem-macem kan.

1:50:49Jadi

1:50:51pengen tahu sekalian

1:50:53belajar bareng

1:50:55gimana cara menyelesaikan tuduh

1:50:57alat temen-temen.

1:50:59Kan yang lain pakai atronim kayak gitu kan

1:51:01para GTD

1:51:03P-A-R-A

1:51:05G-T-D

1:51:07Ada gak sih yang pakenya

1:51:09YOLO, siapa yang

1:51:11message atau slash atau pecah

1:51:13teriak marah-marah diselesaikan.

1:51:15Mana yang marahnya makin

1:51:17yang marah-marahnya makin galak dan makin

1:51:19makin penting

1:51:21orangnya yang marah-marah

1:51:23dan tingkat kemarahannya

1:51:25makin tinggi itu yang pertama

1:51:27makanya waktu

1:51:29gue lagi ditodong

1:51:31marah-marah gak bisa catat disitu

1:51:33gue minta satu orang lagi yang dari sisi klien

1:51:35lo urutin yang mana

1:51:37yang menurut lo penting

1:51:39gue kerjain satu-satu dari atas

1:51:41sampai bawah

1:51:43gak bisa

1:51:45kiri-kanan

1:51:47gak ada yang jadi

1:51:49gak bisa

1:51:51terus gak ada ini juga kan

1:51:53jadi gak ada dokumentasi

1:51:55kalau gak ada dokumentasi gak bisa jauh

1:51:57ok minggu depan

1:51:59kita bahas tentang

1:52:01Getting Real untuk malam ini

1:52:03sekian dulu

1:52:05terima kasih mas Zain udah diundang

1:52:07ditodong

1:52:09ditodong lebih tepatnya ya

1:52:11bukan diundang ya ditodong

1:52:13sampai ketemu

1:52:15lain kesempatan

1:52:17selamat malam, sampai jumpa lagi

1:52:19bye-bye

1:52:25atau mungkin telah kesekian kali melihat

1:52:27untuk membandingkan kembali dengan lainnya

1:52:29jika Anda mencari tahu mengenai

1:52:31layanan web hosting terbaik

1:52:33kami pastikan Anda berada di tempat yang tepat

1:52:35dengan Domainesia

1:52:37dapatkan pengalaman menggunakan layanan

1:52:39hosting yang lebih baik

1:52:41dengan SSD berperforma tinggi

1:52:43dalam infrastruktur cloud yang telah dioptimalkan

1:52:45untuk kebutuhan personal maupun bisnis

1:52:47teknologi ini memungkinkan Anda

1:52:49memperoleh layanan yang lebih stabil

1:52:51serta proteksi dari korupsi data

1:52:53hosting Domainesia juga telah

1:52:55mendukung Node.js, Python

1:52:57Ruby, Go, PHP, Java

1:52:59serta Binary Linux

1:53:01lebih dari 200.000 pelanggan

1:53:03telah mempercayakan layanan hosting

1:53:05di Domainesia, kepercayaan yang kami

1:53:07jaga dengan garansi Abden 99,9%

1:53:09serta garansi

1:53:11uang kembali 100%

1:53:13buat website Anda lebih

1:53:15mendunia, segera berali web hosting

1:53:17Domainesia

Suka episode ini?

Langganan untuk update episode terbaru setiap Selasa malam!

Langganan Sekarang

Episode Terkait

Komentar