EP 33

Ngobrolin Google IO Lebih Dalam - Ngobrolin WEB ep34

Bagikan:

Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. Topik, tautan dan pertanyaan menarik bisa dilayangkan ke https://bit.ly/ngobrolinweb Kunjungi https://ngobrol.in untuk catatan, tautan dan informasi topik lainnya.

Transkrip Bantu Koreksi

0:09[menggantung]

0:12Halo, halo, halo, selamat malam.

0:17Halo, selamat malam, selamat hari selasa.

0:21Selamat hari selasa, karena hari selasa waktunya...

0:25Waktunya, ngobrolin web.

0:28Ya.

0:30Semuanya lagi, seperti biasa, dari grup yang tidak pernah kompak ini.

0:36Triwebweb.

0:38Triwebweb.

0:40Triwebweb.

0:44Selamat malam.

0:46Kita butuh kayaknya biar asik.

0:48Kan kalau kita punya meja itu,

0:50kakinya nggak boleh tiga, harus empat, biar stabil.

0:54Kita kan bukan meja.

0:56Lipat kan tiga?

0:58Oh iya.

1:00Larutan, Cok, kaki tiga.

1:02Oh iya juga ya.

1:06Gak apa-apa, banyakin aja.

1:08Empat boleh, berlima juga boleh, kan ada kaki lima.

1:12Simpang lima ya ada.

1:14Simpang lima.

1:16Malam hari ini, kembali lagi bersama kita bertiga.

1:18Ada saya Riza, ada Irfan, dan juga ada Eka.

1:22Kita tiga dari sekian banyak GDE di Indonesia,

1:26dan kita hanya tiga dari tiga GDE web ini.

1:32Tiga gimana sih?

1:34Masih tiga belum nambah.

1:36Tahu yang di bidang lain banyak.

Lihat transkrip lengkap

1:38Ada yang cloud, ada yang Android, ada apa lagi ya Flutter?

1:40Ada nggak sih?

1:42Flutter ada, Firebase ada, Machine Learning.

1:46Ada nggak sih, Machine Learning?

1:48Ada ya?

1:50Ada.

1:52Machine Learning sempat ada, tapi udah pindah aja.

1:56Masa nya nggak di Indonesia lagi.

2:00Iya.

2:02Flutter juga pindah.

2:06Iya, Flutter.

2:08Cloud juga pindah negara.

2:10Ada yang pindah.

2:12Nyindir Mas Imre.

2:16Tapi nanti pulang lagi.

2:18Terus tiba-tiba nongol tadi komennya.

2:20Oh iya benar.

2:22Bukan, Mas Danang yang ngabis.

2:28Kalau kita nyengkut Mas Danang biasanya biar nonton.

2:30Iya.

2:32Siapa lagi ya?

2:34Kita sambil nunggu sambil cek sound juga.

2:38Takut terjadi hal-hal yang tidak dinginkan.

2:40Jadi kalau misalkan ada masalah dengan visual ataupun dengan audio,

2:44tolong kita di info.

2:46Ada disini sudah hadir Audi.

2:48Ada Mas Audi.

2:50Rajin banget tuh komennya gini pas 8.00.

2:54Ini dia pakai Kron.

2:58Tepat sekali jam 8.

3:00Tadi tadi telat ya.

3:02Telat mencet live-nya.

3:04Ada lagi tuh.

3:06Ada Rahul.

3:08Ada Abdul Malik.

3:10Halo-halo semuanya.

3:12Selamat malam.

3:14Jadi hari ini kita lanjut lagi.

3:16Kita kemarin sudah overview secara umum.

3:18Dari sebesar di Google I/O kita ngomongin apa.

3:20Yang adalah AI.

3:22AI, AI, dan AI.

3:24Iya, ada hari juga.

3:26Dari depo, mantap.

3:28Terus malam ini kita akan coba cari satu topik yang menarik.

3:36Dari bidang web khususnya.

3:38Kalau yang episode lalu kan yang general secara umum.

3:42Tidak, web juga sih.

3:44Ada web, ada cloud, ada AI.

3:48Oh iya, sebagiannya.

3:50Ada itu apa namanya? Tailwind.

3:52Iya, project Tailwind.

3:54Tailwind yang bukan CSS.

3:58Tailwind yang bukan CSS.

4:00Aduh, itu gimana ya kabarnya ya?

4:04Sayang banget.

4:06Tailwind, dia nggak trademark kali ya?

4:10Kan kita pahas minggu lalu.

4:12Jangan-jangan, mungkin yang di trademark Tailwind Labs

4:14atau apa Tailwind CSS.

4:16Nah Tailwindnya doang nggak dipatenin kali.

4:20Bisa jadi.

4:22Anyway, malam hari ini kita akan coba

4:24dari kita bertiga coba pick satu topik

4:26yang menurut kita menarik.

4:28Terus kita akan bahas.

4:30Teman-teman juga kalau ada topik-topik yang menurut teman-teman menarik

4:32boleh ya di komen juga.

4:34Siapa tahu kita bisa belajar bareng-bareng juga.

4:36Oke, kita mulai dari mana nih?

4:38Siapa duluan ayo.

4:40Punya siapa?

4:42Siapa duluan, betul.

4:44Punya siapa.

4:46Kalau gue juga bisa.

4:48Karena simple.

4:50Simple-simple gimana gitu.

4:52Simple tapi penting ini.

4:54Simple pasti semua web developer

4:56pasti pernah kena.

4:58Atau akan kena kebutuhan ini.

5:00Jadi gue share screen aja kali ya.

5:02Boleh.

5:04Karena kalau kita disuruh bikin dari awal kan malas ya.

5:06Jadi dari awal kan mendingan pakai yang udah ada aja.

5:08Apalagi bisa pakai biometrik gitu.

5:10Wah, itu

5:12apa namanya.

5:14Developer experience-nya meningkat sekali ya.

5:16Jadi top pertama ini

5:18tentang password

5:20authentication ya.

5:22Gue suka entire screen aja deh

5:24biar gampang hidupnya.

5:26Udah.

5:28Udah bisa liat kan ya.

5:30Masukin dulu.

5:32Belum.

5:34Masukin lagi.

5:36Lebih kecil kemarin apa sekarang?

5:38Kayaknya stream pertama juga

5:40sentiment sama Mas Riz.

5:42Lanjut lah.

5:44Oke.

5:46Sudah

5:48masuk kan ya?

5:50Oke, jadi

5:52minggu lalu sempat ya kita

5:54bahas mengenai apa itu

5:56web authentication API

5:58atau disingkatnya web

6:00autent. Oh ya, dan sebelumnya

6:02apa authentication kan dulu kita punya

6:04episode khusus ya. Jadi kalau pengen

6:06buat yang bingung kenapa banyak

6:08kita sering nyebut-nyebut kata

6:10authentication out itu apa?

6:12Nah, bisa revisit episode itu tuh.

6:14Ya, lanjut.

6:16Oke, jadi

6:18kebayang gak sih ya?

6:20Sekarang dunia

6:22sekarang itu apa-apa perlu password?

6:24Apa-apa perlu password kan? Jadi misalnya

6:26kita mau order pizza

6:28aja atau mau

6:30yang ada

6:32aplikasi webnya gitu ya.

6:34Jadi sebentar-sebentar kita disuruh bikin password.

6:36Jadi passwordnya kalau dibikin

6:38sama semua

6:40salah juga ya, karena

6:421-2-3-4

6:44kayak password saya

6:46gitu ya, event 1-2-3-4 gitu ya.

6:48Banyak di mana-mana gitu ya.

6:50Di WordPress lah, di

6:52PHD lah, di mana.

6:54Jadi bahkan

6:56kalau misalnya teman-teman cek

6:58have I been pound gitu ya.

7:00Have I been pound

7:02password gitu.

7:04Mungkin password teman-teman

7:06yang paling sering teman-teman

7:08pakai itu mungkin, saya coba ya

7:10event 1-2-3-4.

7:12Yes, sudah

7:14dipakai 5200 kali.

7:16Masihnya kebanyak gitu ya

7:18event 1-2-3-4.

7:20Nah,

7:22terus kalau misalnya kita

7:24pakai password yang

7:26berbeda-beda, kita generate berbeda-beda

7:28adalah yang bilang tipsnya

7:30pakai

7:32konsep, pakai konsep dulu

7:34pattern gitu, kalau misalnya website-nya apa

7:36passwordnya tinggal diubah dikit-dikit gitu.

7:38Nggak fair ya rasanya

7:42kalau mengingat semua, terus katanya

7:44kenapa nggak pakai password manager aja?

7:46Iya sih, password manager, tapi

7:48password manager kayak

7:50one password,

7:52last pass,

7:54apa tuh yang kalau BitGuardian

7:56yang open source ya.

7:58Bisa

8:00jadi ya, namun

8:02tetap aja kita harus extra effort

8:04setiap website punya password.

8:06Kebayang nggak sih

8:08kalau misalnya dunia tanpa password.

8:10Bisa nggak sih? Passwordless.

8:12Passwordless, kalau mau login ya

8:14login aja gitu, pakai biometris

8:16kan sekarang sudah bisa biometris.

8:18Akunku juga, akunmu,

8:20akunku juga.

8:22Jadi unik.

8:24Bahkan bisa jadi

8:26kita bikin passwordnya itu

8:28passwordless itu per device, tetapi

8:30bisa connect ke account kita yang sama.

8:32Bisa, gitu ya. Nanti bisa

8:34dihubungkan seperti itu contohnya.

8:36Mungkin

8:40bagi temen-temen yang masih kurang

8:42merasa secure

8:44kalau tanpa password, bisa jadi

8:46passwordless ini adalah second authentication.

8:48Misalnya

8:50banyakan ya, kayak

8:52di aplikasi mobile rata-rata ya,

8:54kalau aplikasi bank itu, kita

8:56diminta untuk, pertama

8:58kitanya

9:00login

9:02atau create account, pakai email dan

9:04username, endpoint kah,

9:06OTP kah, dan

9:08kemudian kita login

9:10dan set up password, tetapi

9:12login selanjutnya kita diminta, maukah

9:14aktifkan biometrik, ya kan?

9:16Hal yang sama sudah bisa kita

9:18lakukan di web.

9:20Juga sama seperti itu, jadi

9:22setelah accountnya dibuat, kita

9:24bisa aktifkan

9:26biometrik

9:28atau passwordless login itu

9:30untuk account kita.

9:32Jadi, si

9:34user kita untuk login

9:36selanjutnya, itu nggak perlu

9:38ingat-ingat passwordnya lagi, tinggal pakai biometriknya

9:40dia, antara face

9:42detection, retina

9:44detection, si fingerprint,

9:46kalau di Mac itu

9:48iOS dia ada fingerprint,

9:50kalau di Android dia bisa fingerprint di

9:52layar, kalau di

9:54iPhone, apa,

9:56not just iPhone, iOS lah ya,

9:58itu bisa pakai

10:00face, kalau punya

10:02jantangan, keren-keren bisa

10:04pakai, autentik bisa pakai jantangan,

10:06kalau punya YubiKey,

10:08juga bisa pakai YubiKey.

10:10Jadi, bermacam-macam, dan itu

10:12sudah bisa, ada layer yang

10:14bisa diaktifkan melalui web

10:16authentication API ini. Jadi

10:18web authentication API ini sudah bisa menstandarisasi

10:20semua authentication

10:22yang menggunakan

10:24either itu pakai

10:26hardware, atau

10:28OS-based.

10:30Nah,

10:32web authentication API ini

10:34dibuat

10:36sudah lama sebenarnya, dan sudah

10:38standar, dan sudah

10:40diadopsi, hampir semua.

10:42Saya sebelum asal

10:44ngomong, sudah semua

10:46browser kecuali Android

10:48yang WebView, ya.

10:50Sudah,

10:52jadi, sudah

10:54yang public key kredensial

10:56ini yang penting ya, jadi dia pakai

10:58response dan public key, ya.

11:00Sudah semua browser, support.

11:02Ya, tentunya.

11:04Apa, tanya, tanya

11:06karena lagi browser support nih,

11:08karena udah berbentuk standar nih ya,

11:10jadi kan, ini apa,

11:12bisa semacam future-proof

11:14kan, kedepannya misalnya,

11:16kan sekarang cuma device iOS nih,

11:18yang punya face recognition misalnya.

11:20Kalau besok Android, misalnya Samsung,

11:22atau siapa lah, Google Pixel,

11:24atau siapapun bikin face recognition,

11:26langsung bisa

11:28nyambung ke sini kan ya, jadi

11:30nggak perlu, apa, karena

11:32udah standar, nggak perlu

11:34bikin kode beda lagi, buat pakai

11:36face recognition khusus Android,

11:38smartwatch, dan lain-lain,

11:40keunggulannya standar itu ya.

11:42Iya. Jadi,

11:44dari aplikasi kita sendiri,

11:46kita hanya cukup pakai web authentication API,

11:48atau library yang

11:50encapsulasi ini,

11:52web auton ini,

11:54jadi bisa pakai,

11:56besok-besok ada UBI key yang jenis baru,

11:58ada Google Titan key,

12:00ada misalnya nanti Microsoft,

12:02whatever, ya.

12:04Tetap menggunakan

12:06authentication standar yang sama.

12:08Oke. Nah,

12:10cara kerjanya dulu deh, sebelum

12:12saya masuk ke metode-nya, karena simple banget.

12:14Cara kerjanya dulu gimana sih?

12:16Ini contohnya ya, ya bisa temen-temen

12:18buka di webauton.io,

12:20jadi, pertama kali,

12:22misalnya saya,

12:24saya sudah

12:26ada tadi, coba EAA,

12:28pakai touch ID, misalnya saya mau

12:30bikin user baru,

12:32ngobrolin web,

12:34saya register,

12:36saya register,

12:38saya ditanya mau pakai

12:40phone atau tablet, built-in sensor,

12:42atau USB security kayak gini.

12:44Saya,

12:46karena nggak pasang, pakai

12:48built-in sensor aja lah ya,

12:50sudah ada di ini,

12:52di laptop,

12:54saya continue,

12:56terus saya, sidik jari,

12:58saya di Mac.

13:00Dan, sudah

13:02selesai, saya sudah

13:04terregister sebagai account di sini.

13:06Nah, saya mau authenticate,

13:08saya tinggal klik, si

13:10browser-nya sudah tahu, oh, lo

13:12udah pernah login, pakai ngobrolin web,

13:14user ini, continue.

13:16Terus, saya

13:18tinggal sidik jari lagi,

13:20test, you are a login.

13:24Jadi, semudah itu,

13:26untuk bisa

13:28register. Nah,

13:30nanti credential-nya bentunya kayak gini, dan

13:32bisa, tentunya, time to live-nya

13:34berapa lama login, itu sudah terserah session

13:36temen-temen ya, intinya,

13:38dari si, dari si web

13:40authent ini, dia

13:42bisa create,

13:44challenge-nya, bahasanya, hashing

13:46challenge-nya itu, kirimkan ke server,

13:48nanti server simpan

13:50public key,

13:52yang sudah di generate,

13:54dan nanti,

13:56ada challenge yang dikirimkan,

13:58dan nanti event selanjutnya,

14:00jelaskan.

14:02Itu cara kerjanya. / Jadi, itu semacam public key ya,

14:04yang credential yang dilayakkan?

14:06Betul. / Private-nya yang

14:08di device yang kita pakai buat?

14:10Ini ID, public key-nya nggak kelihatan.

14:12Private key-nya apa lagi?

14:14Private key-nya udah di sini.

14:16Private key yang di device kan?

14:18Hasil hashing ini,

14:20dan waktu. Nah,

14:22keuntungan selanjutnya,

14:24ini, ada protection

14:26yang untuk phishing, ya,

14:28phishing website.

14:30Jadi, kalau misalnya, tentu,

14:32teman-teman tahu ya,

14:34bukan phishing, phishing.

14:36Phishing. / Phishing.

14:38Jadi,

14:40kenapa bisa jadi pencegah

14:42dari phishing? Karena, untuk bisa

14:44generate, yang tadi, yang proses register

14:46yang saya lakukan tadi, itu

14:48terregistrasi hanya antara

14:50saat generate

14:52public key-nya tadi,

14:54itu ada host-nya,

14:56dan

14:58user ID-nya,

15:00dan biometrik-nya, dan private key-nya.

15:02Bahasanya di hash, dan

15:04dikirimkan ke server.

15:06Oke?

15:08Jadi, kalau misalnya, ada sengaja

15:10yang bikin WebAuthn.EOX misalnya,

15:14terus dikirim ke teman-teman.

15:16Semuanya persis sama.

15:18Terus, teman-teman mencoba login dengan

15:20pakai WebAuthn yang sama,

15:22nggak akan terregister.

15:24Jadi, saat diauthenticate begini,

15:26si browser nggak akan detect ini,

15:28ada EAA dan ngobrolin web, nggak akan detect.

15:30Ngerti ya? / Karena per domain dia?

15:32Karena dia sudah terregister

15:34per domain, betul.

15:36Nggak bisa pindah ke domain lain.

15:38Jadi, kalau misalnya sengaja domain-nya dibuat

15:40mirip-mirip,

15:42nggak akan bisa, karena si browser

15:44tidak akan mendeteksi itu.

15:46Jadi, oh,

15:48saya mesennya teman-teman langsung,

15:50"Oh, kok nggak ada ya akun gue to speaks-nya?"

15:52Oh, ternyata bukan website yang sama.

15:54Itu

15:56keuntungannya

15:58menggunakan WebAuthn.

16:00Lalu,

16:02ini juga,

16:04tentunya karena kita,

16:06password-nya sendiri

16:08tidak ada disimpan di server.

16:10Yang disimpan cuma user ID dan public key.

16:12Untuk generate

16:14challenge-nya nanti.

16:16Jadi, nggak ada password, kan?

16:18Apa yang mau di brute force,

16:20nggak bisa di brute force, gitu.

16:22Kecuali HP kita dijam red.

16:24Eh nggak, tetap nggak bisa.

16:26Kan fingerprint-nya, jari kita

16:28nggak dijam red juga. / Yang bisa itu

16:30zaman dulu itu adalah

16:32si bapaknya tidur, si anaknya

16:34pakai handphone-nya, terus dipempelin

16:36jarinya. Kayak gitu tuh, biasanya.

16:38Bisanya, gitu.

16:40Itu pernah ceritanya seperti itu.

16:42Nah, untuk

16:44menggunakan WebAuthn ini, hanya ada

16:46kedua fungsinya.

16:48Pertama, create.

16:50Dan kedua, get.

16:52That's it. Jadi create itu

16:54akan mengirimkan nanti public key.

16:56Ininya

16:58jangan merasa

17:00terintimidasi

17:02dengan hashing-hashing ini.

17:04Jadi, hanya akan kirimkan

17:06nanti ada challenge ini random.

17:08Random number.

17:10Terus kemudian relay party

17:12ini ada nanti namanya.

17:14Inilah domain-nya nanti yang temen-temen

17:16gunakan. Jadi, ini yang tidak bisa direba.

17:18Terus kemudian

17:20ID ini adalah random.

17:22Jadi, generate aja random ID.

17:24Secara di lokal,

17:26di JavaScript lokal.

17:28Dan kasih tahu itu namanya siapa,

17:30display namanya siapa. Mungkin kalau

17:32nggak perlu bawa email ya. Nggak perlu hashing email,

17:34nggak perlu. ID ini benar-benar

17:36nggak ada berhubungan dengan

17:38user identification.

17:40Jadi, ID dari si

17:42maksudnya

17:44tidak ada hashing dari email,

17:46nggak ada hashing dari password, nggak ada.

17:48Jadi, benar-benar mau generate random juga boleh.

17:50Lalu,

17:52nanti akan kasih tahu jenis

17:54credential-nya bentuknya

17:56public key. Dan nanti ada

17:58kalau untuk algoritmanya, saya

18:00kurang begitu paham kenapa minus digit,

18:02tetapi ini ada list-nya

18:04bentuk algoritma apa yang mau digunakan.

18:06Karena ini harus sesuai dengan apa yang

18:08kita terapkan di server.

18:10Terus,

18:12setelah

18:14ini di-invoke,

18:16create begini, itu akan

18:18menginvoke ini sebenarnya.

18:20Menginvoke

18:22si ini.

18:24That's it. Dia akan menginvoke

18:26ini. Dan begitu saya

18:28masukin

18:30apa namanya,

18:32biometriknya, dia akan generate

18:34yang namanya

18:36hash itu

18:38dan public key, akan

18:40itu yang dikirimkan ke server.

18:42Bisa

18:44nanti

18:46si passwordless.id ini yang bisa

18:48menjelaskan lebih enak.

18:50Jadi, pertama si user,

18:52dia bilang saya mau register

18:54sama si server. Send me

18:56the public key, terus dia request biometrik.

18:58Nanti akan request

19:00yang create tadi,

19:02di-invoke oleh JavaScript,

19:04request biometrik,

19:06terus, dia akan dibuat

19:08key pairnya, private key

19:10sama public key, private keynya

19:12disimpan di browser, dan

19:14send public keynya,

19:16dan si server bilang kasih tahu

19:18sudah terregister.

19:20Seperti itu aja. Lalu,

19:22saat authentication,

19:24dia klik login,

19:26nanti si server,

19:28si server

19:30akan kirimkan challenge, bentuknya

19:32biasanya nonce. Nonce itu

19:34bahasa ini, apa ya, nonce itu.

19:36Nonce.

19:38Apa? Ada artinya apa?

19:42Terjemahannya apa?

19:44Yang cuma bisa dipakai satu kali,

19:46apa itu bahasanya?

19:48Dicari beneran.

19:52Nggak ada, salah.

19:56Rapis.

19:58Definisinya ekstrem.

20:00And once, kan?

20:02And once.

20:04And once, kayaknya ya.

20:08Jadi, cuma

20:10bisa dipakai satu kali,

20:12untuk dipakai,

20:14dan nonce itu yang dipakai untuk challenge,

20:16untuk create, untuk

20:18menginvoke yang namanya

20:20ini, get.

20:22Ini. Nanti akan di,

20:28karena tadi si

20:32RP tadi, relay party-nya

20:34sudah tahu, host-nya,

20:36terus kemudian degenerate ulang,

20:38si challenge-nya itu,

20:40kembali lagi,

20:42challenge-nya itu adalah random,

20:44nanti akan menginvoke yang namanya

20:46si

20:48webaltern

20:50screen tadi. Lalu,

20:52hasil,

20:54hasil challenge-nya itu,

20:58yang desain pakai private key,

21:00dikirim.

21:02Nanti di-verify

21:04signature, pakai public key yang

21:06sudah kita kirimkan tadi saat register.

21:08Ini.

21:10Kalau match,

21:12berarti, dia,

21:14bentar ya.

21:18Mau ikut live itu? Iya, mau ikut live dia.

21:20Bentar ya.

21:22Nah.

21:24Iya. Jadi, si,

21:26apa namanya?

21:28Si,

21:30setelah public key-nya di-verify,

21:32tentu, si user-nya

21:34tetap authenticate, dan,

21:36selanjutnya,

21:38proses selanjutnya, ya itu, session,

21:40terus kemudian,

21:42redirect,

21:44itu sudah sama seperti tanpa password.

21:46Ya, seperti pakai password, maksudnya.

21:48Seperti pakai password. Ya.

21:50Ada informasi yang disimpan di database nggak, atau di back-end?

21:52Ada. Itu kan tadi yang

21:54ada user ID. User ID, ya.

21:56User ID yang di-generate tadi,

21:58ini kan ada user ID, ya.

22:00Yang unik, ya? Yang unik, ya. Betul.

22:02Jadi, user ID itu yang benar-benar unik,

22:04panjang, ya. Ini,

22:06area 8,

22:08bahkan, nggak berbentuk, ya.

22:10Jadi, nggak berbentuk. Jadi, user ID ini,

22:12kayak UUID gitu ya, modelnya, ya.

22:14Iya, betul. UUID.

22:16Nah, ini disimpan juga di,

22:18sama, dia ada di

22:20si browser juga.

22:22Nah.

22:24Setelah,

22:26apa namanya?

22:28Setelah,

22:30jadi lupakan.

22:32Oke.

22:34Login, play direct, session,

22:36seperti biasa.

22:38Sudah bukan ranahnya WebAuthn lagi.

22:40Nah.

22:42Untuk guide-guide-nya,

22:44ada banyak, ya.

22:46Misalnya, WebAuthn.Guy juga, teman-teman.

22:48Itu tadi yang saya ceritakan,

22:50garis besarnya. Tentunya, masih ada

22:52advanced settings-nya.

22:54Seperti user verification.

22:56Saya juga bahkan, nggak,

22:58nggak paham semuanya. Ini,

23:00bisa dieksplore satu-satu.

23:02Dan,

23:04untuk

23:06menyesuaikan dengan

23:08apa yang ada di server side.

23:10Tentu, butuh ada juga server side.

23:12Nah, untuk mempermudah,

23:14saya, dari si WebAuthn.io-nya sendiri,

23:18itu,

23:20ada beberapa library

23:22yang sudah siap digunakan.

23:24Contohnya, dari

23:26Python, Go, TypeScript,

23:28Ruby, Java, segala macem, sudah ada.

23:30Sayangnya, PHP belum ada, saya nggak tahu.

23:32Jadi,

23:34yang paling saya,

23:36mudah saya mengerti,

23:38saat menggunakannya itu, adalah si

23:40Passwordless.id.

23:42Nah.

23:44Yang ini.

23:46Sama tadi, kalau misalnya kita ke demo-nya tadi,

23:48kalau saya register,

23:50AAA,

23:52Use Roaming Authenticator,

23:54seperti,

23:56phone, USB key, ada jadi

23:58Roaming Authenticator, atau

24:00OSR Authenticator.

24:02Jadi, saya sudah ada AAA, continue,

24:04saya create,

24:06register, ini credential ID

24:08saya, ini public key-nya,

24:10algorithm untuk generate-nya ini.

24:12Si,

24:14nah.

24:16Jadi, kalau saya Authenticator,

24:18saya pakai

24:20yang AAA tadi,

24:22tadaa!

24:24Signature saya ini.

24:26Jadi, si

24:28demo, apa, si library ini

24:30sudah memudah,

24:32sudah nge-wrapping si WebAuthent API

24:34dengan

24:36membuatnya lebih mudah lagi.

24:38API-nya enak ya,

24:40kayak user friendly,

24:42tinggal plug and play.

24:44Dan punya server-side-nya juga.

24:46Kan, tadi kan,

24:48kalau si WebID kan tidak punya server-side-nya,

24:50hanya client-side-nya saja.

24:52Ini bisa denote ya, dijalani denote server,

24:54atau semacamnya.

24:56Jadi, ini klien-nya,

24:58sama,

25:00si challenge-nya ini sama dengan WebAuthent.

25:02Jadi, cuma kayak wrapper saja ya,

25:04membungkus saja, yang dikirimkan

25:06itu ini, ada ID, public key,

25:08dan algorithm, dan

25:10verify untuk server-side-nya, dia sudah siapin.

25:12Jadi,

25:14kalau mau

25:16apa namanya,

25:18kalau mau pakai,

25:20saya lagi dalam,

25:22lagi coba kulik-kulik ini,

25:24saya berarti tinggal pakai.

25:26Selanjutnya, untuk

25:28memudahkan

25:30teman-teman untuk lebih,

25:32ini lagi, ada dari

25:34Google Code Lab, silahkan.

25:36Nanti tolong di-share aja ini.

25:38Bisa untuk setup

25:40satu-satu, untuk

25:42benar-benar, go through one by one,

25:44bagaimana setup WebAuthent

25:46sendiri, pakai WebAuthent.

25:48Sebenarnya, nanti, nanti kalau sudah pakai

25:50apa tadi, passwordless.id kan,

25:52udah nggak perlu, kita nggak perlu manual

25:54bikin ini, tapi ya, seperti biasa

25:56kita rekomendasiin, selalu

25:58harus tahu cara kerjanya, abis itu

26:00ya mau pakai library tambahan ya,

26:02bebas.

26:04Tapi ini client-side-only ya?

26:06Iya, ini client-side-only

26:08untuk sampai dia, ya

26:10sampai dia generate, karena dia

26:12pakai, dia pakai ini,

26:14di, sudah

26:16ada di, dia

26:18sudah siapin live-side-nya, jadi tinggal

26:20kita pakai yang pakai punya kita

26:22gitu. Silahkan

26:24coba, dan

26:26kasih tahu bagaimana hasilnya.

26:28Sebelum menggunakan

26:30library lain, pakailah dulu.

26:32Aslinya, basic-nya.

26:34Kalau sudah mengerti, barulah

26:36pakai library. Vanilla.

26:38Vanilla.

26:40Ini ada pertanyaan dari Robi nih,

26:42apakah teknik ini sudah umum

26:44digunakan seperti JWT?

26:46Seperti apa? JWT.

26:48JWT kan

26:50format ya sebetulnya.

26:52Iya, JWT itu kan format

26:54format untuk

26:56mengirimkan data aja kan sebenarnya.

26:58Kalau flow-nya,

27:00mungkin yang dimaksud flow

27:02semacam oout gitu kali ya, yang

27:04dimana kita menerima,

27:06kita terima akses token

27:08dalam format itu encoding-nya

27:10JWT.

27:12Nggak sih, dia nggak ada hubungan

27:14sama JWT,

27:16atau format seperti ini.

27:18Kalau untuk

27:20karena completely different thing ya,

27:22karena JWT ini kan

27:24mengirimkan data dan

27:26dia tetap ada

27:28yang namanya sign key ya,

27:30yang di sign, ini kan sign flag-nya ya.

27:32Ini mengencode

27:34data apapun, tapi dengan

27:36standar encoding yang sudah

27:38disepakati, ada varian

27:40algorithmanya, terus ada key

27:42itu,

27:44waktunya dan key-nya kan,

27:46untuk dicocokin sama

27:48yang menerima mengkonsumsi.

27:50Kalau menurut

27:52saya, JWT itu untuk

27:54sending encrypted

27:56data

27:58ke server

28:00dan memastikan data itu

28:02valid

28:04dari si pengirim yang

28:06sah, ya udah pasti

28:08valid lah ya, si pengirim yang

28:10sah gitu ya, karena sudah

28:12di sign. Pengirim dan penerima

28:14dari pihak yang expected, karena

28:16apa, sama-sama

28:18tahu, ngecek, diverify

28:20dengan key yang sama.

28:22Public dan private key, jadi private key

28:24nggak pernah, jadi bisa diverified

28:26pakai private key yang ada di server.

28:28Sedangkan kalau WebAutoN, apakah

28:30itu dengan

28:32saya merasa

28:34mirip serupa tapi tak sama ya?

28:38Kalau WebAutoN

28:40semacam antara service dengan device

28:42si user ya, apa

28:44koneksinya lebih ke itu kan,

28:46antara silayanan

28:48dengan device

28:50fisik yang diakses oleh user.

28:52Bukan, karena dia bukan untuk

28:56authentication data, dia

28:58hanya untuk authenticate

29:00user.

29:02Dia tidak mengautenticate data

29:04yang bukan data user.

29:06Apa isi lah maksudnya ya.

29:08Hanya untuk

29:10authenticate login itu, login dan

29:12identifikasi aja.

29:14Untuk keamanan

29:16selanjutnya untuk misalnya

29:18kita buat sebuah web application

29:20loginnya pakai WebAutoN

29:22WebAutoN

29:24tentunya

29:26selanjutnya, temen-temen

29:28kalau misalnya aplikasinya mau kirim

29:30data ke server, tetap harus pakai

29:32kalau memilihnya pakai JWT

29:34formatnya, tetap harus pakai JWT.

29:36Gak ada hubungannya.

29:38Dan

29:40banyak ya, Okta kayak

29:42Outzero itu sudah support WebAutoN.

29:44Sudah pakai.

29:46Tapi belum umum kan,

29:48karena memang masih baru juga kan.

29:50Belum banyak yang pakai juga.

29:52Ya, semoga habis

29:54nonton ngobrolin web jadi

29:56umum di Indonesia.

29:58Karena semua pada nyoba.

30:00Ya, ini

30:02butuh banget. Apalagi

30:04kalau misalkan temen-temen bikin aplikasi

30:06baru, service baru,

30:08bikin produk baru, terus butuh login.

30:10Login yang paling gampang

30:12apa sih sekarang? Kayaknya

30:14kirim ini ya, kode

30:16ada 4 angka lah, atau

30:18pakai magic link.

30:20Ya, jadi

30:22harus buka email, terus

30:24diklik, abis itu kita baru masuk.

30:26Kalau misalkan kita buka di desktop, kita harus buka

30:28emailnya di desktop. Kalau di mobile

30:30kita harus buka email. Mahal lagi, maksudnya

30:32makin banyak. Mungkin kalau untuk pertama

30:34pas create pertama, ok lah,

30:36itu nggak apa-apa. Tapi kalau setiap kali

30:38login, kirim SMS,

30:40tagehannya

30:42lumayan.

30:44Atau sebelum

30:46era itu, mungkin ada

30:48yang tadi oout, pakai

30:50login with Github,

30:52login with Facebook, login with

30:54Google, gitu kan. Cuman

30:56itu datanya ada di masing-masing provider

30:58kan, gitu. Kita nggak pegang datanya.

31:00Nah, kalau yang ini

31:02lebih menyederhanakan

31:04karena, ya

31:06apa, di device kita sudah cukup

31:08canggih, sudah ada alatnya, untuk

31:10mengidentifikasi bahwa kita benar-benar

31:12user itu. Betul user

31:14yang enak sih.

31:16Ya, mungkin di combine ya, bisa

31:18tergantung kebutuhannya. Mungkin

31:20oout buat create account,

31:22terus habis itu bisa di combine web

31:24outen pas login selanjutnya, kan.

31:26Pas login, ya. Betul.

31:28Kalau misalkan produknya

31:30di web nih kan,

31:32di web udah pakai web outen,

31:34terus produknya berkembang,

31:36ada aplikasi mobile, itu

31:38gimana tuh?

31:40Di native ada kan ya?

31:44Di native kan sudah ada untuk

31:46outen authentication ini sudah ada.

31:48Kayak yang saya katakan tadi,

31:52misalnya bisa juga kita buat

31:54registration-nya itu

31:56per device juga bisa, dan satu account.

32:00Itu juga bisa.

32:02Jadi, tinggal kita maininnya

32:04di data, ibaratnya

32:06relation antara user dan

32:08outen ID nya tadi, kan bisa banyak.

32:12Jadi, mau itu

32:14danti dari device yang Android,

32:16ya sama, bisa

32:18pakai outennya si

32:20jalur authenticationnya si Android

32:22dan standardnya itu,

32:24kalau di web,

32:26juga punya standardnya itu, sama.

32:28Jadi, tetap masukin satu account-nya sama.

32:30Itu kan tinggal sisi server ya.

32:32Tidak

32:34tergantung sama web outen

32:36rpi.

32:38Jadi, scope-nya hanya

32:40sampai generate public key dan ID,

32:42waktu register, dia tinggal

32:44katakan, ini public key-nya

32:46saya, ini ID-nya saya. That's it.

32:48Simpanlah.

32:50Oke.

32:54Untuk topik

32:56web outen,

32:58sudah cukup dulu.

33:00Nanti kita bisa lanjut lagi diskusi, kalau

33:02teman-teman punya pertanyaan, boleh

33:04silakan langsung di kolom chat ya.

33:06Berikutnya, kita akan bahas tentang

33:08topik kedua, yaitu

33:10WebAssembly.

33:12WebAssembly ini kan,

33:14kemarin kita sudah sempat bahas juga sedikit.

33:16Yang menarik

33:18adalah mereka menyebut bahwa, ini

33:20WebAssembly versi berikutnya adalah versi 2.

33:22Karena sebelumnya itu

33:24sebutannya versi 1 ya. Kita juga nggak tahu nih.

33:26Yang kita bahas minggu lalu ya.

33:28Iya, hampir sama kayak

33:30CSS3,

33:32HTML5 itu kayaknya batasannya

33:34seberapa sih, gitu. Kita kayak nggak,

33:36agak ngeblur kan. Beda sama versi.

33:38Tom 90-an kali itu.

33:40Siapa yang pernah bikin,

33:42pernah nulis CSS2, coba.

33:44Ada yang pernah HTML3, HTML3?

33:46Kan bingung kan. HTML3 itu

33:48seberapa? HTML4 sih, kayak lupa-lupa

33:50ingat. Itu jamannya Flash, kayaknya.

33:52Masih.

33:54Jadi,

33:56ada beberapa hal yang baru, makanya

33:58mereka menyebut ini versi yang

34:00major version lah, gitu ya.

34:02Kira-kira. Kan,

34:04di WebAssembly ini agak-agak

34:06tenggelam ya. Sempat nge-hype,

34:08terus tiba-tiba hilang. Ini kabarnya

34:10kok hilang, gitu.

34:12Kayak nggak ada

34:14kelanjutannya. Padahal,

34:16adopsinya yang

34:18nggak bisa dibilang banyak. Adopsinya major.

34:20Major sih sebenarnya.

34:22Nggak banyak, tapi

34:24signifikan. Kayak misalnya, apalah Sigma,

34:26gitu. Teknologi yang dipake banyak orang, terus

34:28Adobe Cloud kan hampir semua

34:30pakai Wasm ya, kalau nggak salah.

34:32Terus, apa lagi ya? Nggak tahu pokoknya, apa,

34:34itu breakthrough banget dalam

34:36CS. Counter-Strike.

34:38Counter-Strike yang ramai. Oh, ya ampun.

34:40Counter-Strike

34:42ada webnya, gitu.

34:44Ada yang bukan yang CS2 ya. Webwrapper.

34:46Yang lama.

34:48Counter-Strike yang bukan yang pertama. Kayak, itu kan breakthrough

34:50dalam hal teknologi web ya, tapi

34:52dari, ya, otomatis dari kuantitas

34:54nggak bisa terlalu banyak lah.

34:56Seberapa banyak orang yang punya

34:58produk sekompleks

35:00itu? Ya, jadi

35:02salah satu yang breakthrough juga, misalkan

35:04contohnya tadi ya, Photoshop.

35:06Tiba-tiba dia ada yang cloud.

35:08Coba bayangin kalau teman-teman berada di perusahaan

35:10itu harus bersaing dengan Sigma

35:12yang akhirnya dibeli juga sih sama

35:14Adobe kan. Tapi katakanlah

35:16dia nggak beli, gitu. Dia nggak beli.

35:18Dia mau bikin yang online seperti Sigma.

35:20Harus rewrite. Harus tulis

35:22ulang dengan JavaScript.

35:24Kan susahnya setengah mati.

35:26Auto-cat juga sama.

35:28Ada codebase yang sudah cukup besar.

35:30Yang legacy, yang udah nggak bisa diapa-apain.

35:32Terus ini kita mau ke web, tapi

35:34nggak bisa, gitu.

35:36Web assembly-nya adalah salah satu jawabannya.

35:38Jadi, salah satu contoh suksesnya ya.

35:40Itu auto-cat.

35:42Mereka sekarang udah bisa di web.

35:44Photoshop juga sudah bisa di web.

35:46Google Earth, kalau dulu

35:48hanya ada desktop, sekarang sudah bisa diakses

35:50di browser juga.

35:52Jadi itu

35:54breakthrough-nya lumayan, tapi

35:56kabarnya memang tidak se-

35:58wah, framework atau library

36:00yang lagi

36:02hype, gitu ya. Jadi

36:04highlight-nya apa? Highlight-nya adalah

36:06kalau versi satu

36:08yang dulu, kenapa yang dulu itu

36:10kayaknya perkembangannya gitu-gitu aja?

36:12Ternyata, setelah saya

36:14nonton videonya, saya baru tahu ternyata

36:16versi satu itu, mereka

36:18belum terlalu

36:20mendukung bahasa-bahasa

36:22yang garbage collected.

36:24Yang ada garbage collected-nya.

36:26Makanya, bahasa yang

36:28harus digunakan adalah bahasa yang

36:30tidak menggunakan garbage collected.

36:32Intinya C, C++,

36:34RAS, bahkan goleng aja itu

36:36ada garbage collected-nya.

36:38Di versi kedua ini,

36:40mereka sudah mendukung namanya

36:42web assembly GC.

36:44Nah, gara-gara ada

36:46si

36:48garbage collector,

36:50fitur garbage collector

36:52ini. Jadi, ada membuka

36:54peluang bahasa-bahasa lain

36:56juga berkembang sama halnya

36:58seperti RAS, C++, dan lain-lain

37:00di ranah web assembly.

37:02Ini ada contoh beberapa

37:04library yang

37:06jadi highlight-nya. Jadi, ada

37:08SQLite yang sudah bisa dibawa ke ranah web assembly.

37:10Baru tahu, SQLite atau pakai

37:12web assembly ya? Web assembly-based?

37:14Enggak. Sebelumnya kan dia

37:16back-end kan. Ya,

37:18executable biasalah pakai C atau C++.

37:20Nah, ini ada port-nya.

37:22Dan itu

37:24apa namanya?

37:26Official. Jadi, di website

37:28SQLite itu mendukung web assembly.

37:30Jadi, kita bisa punya

37:32apa? Yang kayak waktu itu kita sempat

37:34ngomong kan? Di browser kita ada

37:36SQLite. Ada

37:38WordPress juga. Benar.

37:40WordPress dibuat Wasm dan jalannya

37:42pakai SQLite instead of

37:44MySQL.

37:46Jadi, nggak perlu back-end.

37:48Kita di klien aja

37:50udah bisa

37:52database yang

37:54istilahnya

37:56fiturnya udah cukup mumpuni

37:58dibandingkan

38:00database RDBMS

38:02lain. SQLite, walaupun

38:04kecil, tapi udah cukup mumpuni. Kemudian

38:06ada FFmpeg. FFmpeg ini

38:08adalah

38:10ini tools

38:12yang sangat powerful yang

38:14hanya jalan di CLI.

38:16Linux ya, terutama ya.

38:18Jadi, ini adalah CLI tools.

38:20Kalau misalkan kita mau convert

38:22dari

38:24apa? Dari format apapun ke format

38:26apapun, dia bisa. Bahkan katanya

38:28saya belum nyoba sih, kabarnya

38:30dia bahkan bisa mendeteksi

38:32kalau misalkan kita mau edit video nih.

38:34Ada video yang ada

38:36silent-nya. Itu bisa di

38:38potongan.

38:40Karena dia mengakses

38:42low-level itu banget ya.

38:44Mengakses dari low-level yang beneran stream

38:46kalau misalnya

38:48audio-video itu kan

38:50ada format pieces-nya sendiri.

38:52Ada stream-nya. Nah, dia beneran

38:54bisa mengakses semua stream itu.

38:56FFmpeg ini

38:58kayak, tau gak sih,

39:00tools yang serba bisa

39:02untuk video. Betul.

39:04Video, audio, dan

39:06gambar juga. Karena saya

39:08pernah terbantu sekali.

39:10Tau gak saya yang pernah buat

39:12coin detection untuk

39:14pakai AI, machine learning.

39:16Jadi, untuk

39:18mengumpulkan data

39:20coin itu,

39:22saya kan gak bisa foto satu-satu, capek

39:24banget ya, fotoin satu-satu.

39:26Jadi, saya rekam pakai video

39:28dari berbagai macam

39:30angle, terus saya rekam juga

39:32dari background-nya

39:34beda, gitu ya. Nanti pakai

39:36FFmpeg ini saya bisa minta

39:38di-slicing gitu, jadi

39:40jadi...

39:42ya, eksport saya minta

39:44per frame, dan

39:46misalnya saya minta per

39:4810 frame, skip per 10

39:50atau 20 frame, dan dia

39:52eksport jadi JPEG.

39:54Nah, dari itu

39:56saya tinggal kategorize dan

39:58training machine learning saya.

40:00Terbantu.

40:02Terbantu. Jadi, FFmpeg ini

40:04hanya berjalan di backend. Jadi, kalau

40:06dulu kita bikin client-nya

40:08mungkin upload, misalkan kita mau

40:10bikin aplikasi untuk convert dari

40:12MP4 ke GIF, misalkan, atau

40:14ke AFIF, misalkan.

40:16Kayaknya streaming pakai ini juga ya?

40:18Ya, kayaknya. Streaming juga bisa. FFmpeg juga bisa

40:20live streaming.

40:22Ya, saya pakai

40:24Plex, ya. Jadi,

40:26di server-nya, kalau misalnya

40:28ukuran video-nya

40:304K, tetapi device

40:32saya mau nontonnya 1080,

40:34dia...

40:36untuk convert.

40:38On the fly.

40:40Kalau proses yang seperti itu,

40:42biasanya ada client-server

40:44sistemnya. Jadi, di client, mungkin kita bikin

40:46upload file, misalkan file MP4

40:48ke AFIF, gitu kan.

40:50MP4-nya kita upload, kemudian data

40:52MP4-nya itu dikirim ke server.

40:54Di server, diproses, di konversi,

40:56jadi AFIF, atau jadi GIF,

40:58atau jadi apa, habis itu,

41:00hasilnya, output-nya akan dikembalikan

41:02ke client. Itu

41:04proses yang dulu dilakukan dengan

41:06FFmpeg yang ada di back-end.

41:08Dengan ada nyawa

41:10WebAssembly, FFmpeg-nya ada di browser.

41:12Jadi, nggak perlu ke server lagi.

41:14Langsung aja di...

41:16di konversi di...

41:18di saat itu juga, gitu. Jadi, itu

41:20luar biasa

41:22cepat dan efisien,

41:24nggak perlu perjalanan

41:26ke server atau ke mana, gitu.

41:28Jadi, teman-teman bisa gunakan, ya.

41:30Kalau teman-teman nggak ngerti, ini FFmpeg

41:32nggak perlu compile dari

41:34misalkan C atau C++.

41:36Tinggal pakai.

41:38Tinggal di-load dengan menggunakan

41:40JavaScript. Bisa menggunakan FFmpeg.

41:42Wasm ini.

41:44Jadi, bisa langsung convert video

41:46tanpa mengirimkan ke server, ya.

41:48Atau slicing

41:50sampling.

41:52Kan, kemarin itu ada heboh

41:54yang Prime Video, kan.

41:56AWS Prime Video yang katanya

41:58dia dari serverless

42:00terus pindah ke monolitik gara-gara

42:02apa? Gara-gara

42:04tagihan bengkak itu, karena FFmpegnya jalan

42:06di serverless dia taro. Server.

42:08Itu nggak boleh.

42:10Harusnya. Karena processnya panjang.

42:12Jadi, dagihannya pasti

42:14gede, gitu. Jadi,

42:16dengan adanya ini, ya udah di client aja.

42:18Nggak perlu pakai server. Kok AWS Prime Video

42:20tetap perlu bayar bill ke AWS, ya?

42:22Itu kan sama-sama.

42:24Satu group. Eh, nggak tahu ya

42:26belakang gimana.

42:28Itu urusan mereka lah.

42:30Berikutnya, TensorFlow.js.

42:32Tadi Ivan juga udah sempat bahas, ya.

42:34TensorFlow.js ini

42:36sebelumnya berjalan di...

42:38Ya...

42:40Jalannya di mana ya?

42:42Itu dulu pakai apa sih?

42:44Ya, di browser. Pakai apa? Pakai thread.

42:46Pakai browser, thread.

42:48Ya, antara Node.js atau di browser, ya.

42:50Salah satu, ya. Nah,

42:52sekarang udah bisa di

42:54WebAssembly aja. Jadi, bisa

42:56mengakses GPU, apalagi udah ada

42:58WebGPU kan.

43:00Itu akan jadi lebih keren lagi.

43:02OpenCV juga mirip, ya.

43:04Ini tadinya hanya bisa di backend.

43:06Harusnya sekarang hampir sama seperti

43:08FFmpeg, sudah bisa

43:10di frontend juga.

43:12OpenCV ini adalah

43:14salah satu library Python untuk

43:16mendeteksi

43:18sesuatu di video, ya.

43:20Nombor objek, gitu ya.

43:22Nah, yang

43:24menurut saya menarik juga ini adalah

43:26Cocos. Cocos ini adalah game engine

43:28yang...

43:30Ya, game library lah.

43:32Kalau kita mau buat game, kalau kita bikin dari awal kan

43:34itu susah ya. Jadi, ada framework-nya

43:36gitu ya. Ini sekarang sudah bisa

43:38dipublish ke web

43:40melalui Wasm.

43:42Tinggal nunggu Unity bikin Wasm.

43:44Ya, Unity juga udah ada. Demo-demonya udah ada.

43:46Unity, terus apa?

43:48Yang satu lagi yang itu

43:50yang...

43:52Musuhnya? Unreal?

43:54Unreal juga sudah mulai.

43:56Sudah mulai.

43:58Jadi, kita bikin game,

44:00bisa di deploy, bisa dipublish

44:02ke mobile mungkin

44:04atau ke desktop, dan juga bisa

44:06ke web. Jadi, hanya berbekal

44:08web browser, dia bisa

44:10langsung dijalankan.

44:12Ya, tentunya...

44:14Ini tuh ada hubungannya sama itu ya, yang kemarin kita

44:16bahas web GPU.

44:18Ada juga?

44:20Terus bisa mengakses.

44:22Itu kan yang kita bahas kemarin,

44:24frame rate segala macem,

44:26nggak kena limit yang standard

44:28rendering dom dari browser thread.

44:30Cuma, berarti bisa kayak gambarnya

44:32animasinya lebih

44:34canggih lagi.

44:36Dia bisa mengakses hal-hal yang low-level.

44:38Jadi, lebih powerful.

44:40Ini

44:42beberapa

44:44library yang menarik.

44:46Nah, yang tadi saya sebutkan

44:48"Gairbase Collector".

44:50Ini proposalnya.

44:52Jadi, sekarang

44:54web assembly ini sudah mencapai

44:56versi MVP, ke level MVP.

44:58Untuk "Gairbase Collector"

45:02language.

45:04Kalau dulu

45:06bisa, tapi

45:08tidak optimal. Sekarang

45:10sudah lebih optimal. Jadi,

45:12bahasa-bahasa yang baru, yang

45:14"Gairbase Collector" itu

45:16muncul. Contohnya, Swift. Sekarang

45:18sudah bisa web assembly.

45:20Oh, Swift bisa jalan di browser.

45:22Baru tahu. Yes.

45:24Sudah ada website-nya juga. Tools-nya

45:26juga sudah lengkap. Jadi, teman-teman yang

45:28punya kemampuan untuk bahasa

45:30pembahaman Swift, sekarang bisa

45:32di compile

45:34ke web assembly. Salah satu

45:36contohnya adalah tools yang

45:38namanya "Good Notes". Ini awalnya

45:40hanya tersedia di IOS.

45:42Sekarang

45:44sudah bisa di Windows, dan juga

45:46sudah akan ada

45:48di web juga. Ini

45:50aplikasi klasik ini dari iPhone, iPad

45:52awal. Ini "Good Notes" sudah ada. Gila.

45:54Sudah belasan tahun. Pakai apa?

45:56Pakai pensil gitu ya.

45:58Pertama kali punya

46:00iPad yang... iPad pertama yang

46:02ada kameranya. iPad 2.

46:04Ada "Good Notes".

46:06Apa? Sampai beli "Good Notes".

46:08Hmm, "Good Notes". Ya.

46:10Ini mereka...

46:12Jadi, mereka mau develop yang Windows, akhirnya mereka

46:14memutuskan untuk pakai yang versi web saja.

46:16Jadi, bisa lebih...

46:18bisa tercapailah semua tujuan

46:20mereka, baik di IOS, Android, ataupun

46:22di desktop

46:24atau di mana, semuanya bisa...

46:26selama ada browser, aman.

46:28Jadi, ini cukup promising ya.

46:30Itu baru

46:32di sisi Swift ya.

46:34Ada dua lagi.

46:36Yang pertama, Dart

46:38juga bisa. Sekarang

46:40mulai bisa ke WebAssembly

46:42dan juga satu lagi, Kotlin.

46:44Nah.

46:46Jadi, bahasa-bahasa yang dynamic

46:48dan garbage collected sudah mulai masuk

46:50dan sudah mulai didukung secara penuh.

46:52PHP.

46:54PHP. PHP bisa.

46:56Sudah bisa kan? Sebenarnya dari versi satu

46:58sudah. Cuman garbage collectornya yang

47:00belum kan. Ada itu PHP

47:02Wasm? Ada, ada, ada. Benar.

47:04Kotlin. Nah, yang Kotlin

47:06saya tunjukin ini deh.

47:08Infonya.

47:10Nah, kalau sebelumnya kan

47:16Kotlin itu

47:18punya yang namanya KMM ya.

47:20Kotlin Multi Platform

47:22M-nya apa?

47:24Modular. Modul.

47:26KMP kali.

47:28Ya, pokoknya Multi Platform

47:30yang bisa ke IOS kan.

47:32Sempat dibahas juga waktu kita

47:34ngobrol sama timnya GDI

47:36Android kan sama SIDIC dan

47:38teman-teman. Jadi,

47:40sekarang ini dibawa lagi

47:42lebih lanjut ke ranah web.

47:44Jadi, Kotlin sekarang sudah bisa

47:46menggunakan

47:48kita bisa menggunakan bahasa

47:50pembangunan Kotlin untuk

47:52dikompilasi ke WebAssembly

47:54dan bisa dieksekusi di web.

47:56Bahkan. Apa kabar?

47:58Flutter dengan begini ceritanya.

48:00Itu, Dart lagi

48:02dibangun, lagi dibangun.

48:04Jadi, kita bisa menggunakan UI

48:06tools yang sama, yaitu

48:08Jetpack Compose yang bisa digunakan di Android.

48:10Oh, bisa pakai Jetpack Compose ya?

48:12Jadi seru ya.

48:14Jadi, mungkin codebase-nya bisa

48:16bisa di-share lebih banyak lagi.

48:18Bukan hanya dari

48:20back-end, tapi dari UI-nya juga.

48:22Jadi, bisa seamless.

48:24Ujung-ujungnya

48:26angle-nya bisa seamless

48:28antara web atau native itu bisa

48:30nggak kelihatan lagi kali ya.

48:32Kayaknya besok-besok perlu featuring

48:34timnya Sidik dan

48:36temen-temen dia.

48:38Kayaknya mesti kita ngobrol lagi nih.

48:40Perkembangan terbaru.

48:42Benar.

48:44Kita bisa ngangkat

48:46topik ini ya.

48:48Ada contohnya demo-nya di videonya,

48:50nanti temen-temen coba liat aja

48:52di videonya, itu ada yang

48:54dari JetBrains

48:56mendemokan dengan

48:58codebase-nya hampir 100%.

49:00Ya, nggak sampai 100%. Mungkin

49:0290 sekian persen sama

49:04dia bisa deploy ke

49:06browser yang tadinya

49:08Android App.

49:10Itu kata Mas Fordita, M-nya mobile.

49:12Kodlin Multiplatform Mobile.

49:14Maaf ya,

49:16maklum kita bukan Android.

49:18Jadi, kita nggak tahu.

49:20M-nya maaf.

49:22Kodlin Multiplatform.

49:24Maaf, kita belum tahu. Kita baru tahu.

49:26Iya,

49:28kalau Jetpack

49:30udah bisa dipakai di iOS, bisa.

49:32Yang pakai KMM tadi, kalau nggak salah.

49:34Benar nggak?

49:36Di koreksi kalau salahnya.

49:38Nah, sekarang udah bisa di web lagi.

49:40Jadi, semakin

49:42seru.

49:44Kalau temen-temen yang tadinya

49:46"Wah, pengen bikin web", tapi

49:48bahasnya terbatas. Biasanya Java,

49:50biasanya Kotlin. Sekarang mungkin sudah

49:52bisa lah dengan menggunakan.

49:54Tapi Java, Kotlin juga bisa

49:56bikin web.

49:58Back-end,

50:00front-end-nya nggak bisa tetap.

50:02Tetap harusnya fast-read.

50:04Oke, topik

50:06Wasm,

50:08sampai di situ. Berikutnya yang

50:10tidak kalah seru.

50:12Baseline. Apa ini Baseline?

50:14Baseline. Nah, ini nih.

50:16Ini hal yang di-announce

50:18pas I/O kemarin.

50:20Nah, ini kalau menurut aku sih

50:22ngelanjutin trend

50:24atau kecenderungan menarik.

50:26Di dua tahun I/O,

50:28dua tahun terakhir.

50:30Jadi, dua sampai tiga tahun terakhir.

50:32Kayak tahun lalu.

50:34Tahun lalu dan tahun sebelumnya

50:36itu kan yang di-announce, yang major itu

50:38Interop. Jadi,

50:40ini hal-hal yang sebetulnya.

50:42Kita pernah punya episode

50:44tentang Interop juga. Jadi, kalau temen-temen

50:46yang belum tahu, belum

50:48hamiliar, ya cari sendiri.

50:50Nah, ini hal-hal yang bukan

50:52web API-nya sendiri. Jadi,

50:54kalau tadi yang kita bahas tuh, ada Wasm,

50:56ada web auto, itu kan

50:58web API. Makin lama,

51:00makin canggih. Oke lah.

51:02Cuma, apa,

51:04gimana biar

51:06mudah diadopsi untuk semua. Karena

51:08browser kan, walaupun I/O itu

51:10hajatannya Google,

51:12browser kan bukan cuma Google Chrome

51:14doang. Realistis lah kita sebagai developer

51:16kan, pengen

51:18situs kita bisa diakses

51:20orang sebanyak mungkin,

51:22termasuk yang pakai browser lain.

51:24Nah, ini kecenderungan menarik bahwa

51:262-3 tahun terakhir nih I/O

51:28banyak nge-present

51:30proyek-proyek yang merupakan

51:32kerjasama multi-fender, multi-stakeholder.

51:34Nah, kalau dulu sebelumnya kan

51:36Interop, jadi intinya

51:38kayak pada

51:40men-survey developer,

51:42apa sih, feature atau

51:44API apa aja sih yang kalian

51:46bermasalah, pengen

51:48di-streamline dan pengen

51:50di-fix untuk semua browser.

51:52Nah, Interop tuh isinya proyek itu semua.

51:54Kalau baseline, yang baru

51:56di-announce ini, itu

51:58mempermudah developer

52:00untuk mengadopsi

52:02web API yang

52:04kita sering mikir,

52:06ini web API baru atau nggak ya?

52:08Supportnya udah bagus atau

52:10belum ya? Nah kan, nggak semua

52:12developer seseluruh itu

52:14harus membuka kena-use dulu,

52:16nge-check, nge-scrolling semua

52:18browser-nya udah support atau

52:20belum. Kalau misalnya

52:22masih terlalu baru juga kan nggak semua

52:24user kita rajin nge-update versi browser

52:26kan? Nah, si baseline ini

52:28intinya

52:30merupakan

52:32kayak penanda, feature

52:34yang sudah diadopsi di

52:36dua versi browser terakhir.

52:38Kalau nggak salah, dua versi major.

52:40Certifikasi.

52:42Major ya, kalau nggak salah.

52:44Dua versi major terakhir.

52:46Oh nggak, minor, minor.

52:48Minor version dari

52:50eh, major

52:52sorry, major.

52:54Misalnya kalau Chrome ya

52:56112

52:58sama

53:00112-113 misalnya.

53:02Jadi, ini dengan

53:04mudah, kita bisa lihat nih

53:06di MDN misalnya, udah ada

53:08logo baseline. Nah, kita

53:10kan nggak harus nge-scroll. Biasanya kan

53:12sampai bawah tuh, harus nge-scroll sampai

53:14browser compatibility, kita

53:16cek satu-satu udah support

53:18sejakapan, dan yang terbaru

53:20sekarang browser-nya apa, udah nggak perlu

53:22gitu lagi. Jadi, kalau misalnya kita

53:24lihat tanda ini, itu udah

53:26support semua major browser di

53:28dua versi terbaru.

53:30Nah, ini

53:32mempermudah banget buat kita

53:34nge-adopsi

53:36web API baru sih.

53:38Kayak kalau contoh yang umum,

53:40itu coba scroll ke paling bawah.

53:42Ini bahasanya

53:44WebDX, developer

53:46experience. Developer experience.

53:48So, baseline features you can use today.

53:50Coba deh. Ini kan?

53:52Bukan. Paling bawah. Nah,

53:54iya, iya. Nah,

53:56scroll ke bawah dikit.

53:58Scroll ke bawah. Nah,

54:04nah, ini dialog element. Coba deh

54:06kalau misalnya kita tanya ke, kita

54:08yang paling random web developer

54:10kalian udah pakai element dialog

54:12atau belum? Pasti sebagian besar

54:14kemungkinan

54:16entah baru tahu, atau udah tahu.

54:18Cuma, ya maksudnya kan, kayak,

54:20Mas siapa itu? Adam Erjeles.

54:22Kan udah pernah bikin UI challenge

54:24pakai dialog element ini, dan

54:26hasilnya ren, bagus, dan kita nggak usah

54:28install third-party library. Keunggulannya

54:30banyak lah, udah jelas. Aksesibilitas

54:32juga jauh lebih bagus, karena kita

54:34nggak harus, karena itu built-in ya, udah

54:36dikasih dari browser, kita nggak

54:38harus mikir fokus-fokus

54:40atau apa lah, karena itu udah jadi

54:42feature browser. Tapi kan kita

54:44mungkin in real life, kalau mau

54:46pakai itu, alah, jangan-jangan

54:48Safari belum support.

54:50Suusun lah. Suusunnya pasti

54:52sama iOS, sama Apple.

54:54Nah, cuma, iya, itu

54:56contoh aja, tapi... Nggak ada yang suusun sama

54:58Opera Mini gitu?

55:00Kalau Opera Mini mah, nggak bisa

55:02buka apa-apa, udah.

55:04Itu biar user-nya yang introspeksi

55:06sendiri sih, kalau masih

55:08pakai opera Mini.

55:10Nah, ini dengan

55:12waistline ini, kita bisa, oh,

55:14kita bisa sadar, oh, ternyata support-nya udah

55:16oke juga ya. Kita bisa

55:18ya, lumayan pede buat pakai

55:20tanpa terlalu banyak effort.

55:22Terus, kayak misalnya ke bawah lagi dikit,

55:24di CSS juga ada contohnya.

55:26Yang aku pun baru tahu beneran

55:28ini, gara-gara ini, ke bawah.

55:30Transform.

55:32Iya.

55:34Kalau viewport unit sih sebetulnya

55:36udah di-announce justru di I/O

55:38tahun lalu. Cuma, ya itu

55:40lagi-lagi kan kita belum tahu

55:42support-nya udah bagus atau belum.

55:44Yang CSS atas dikit?

55:46Hah? Di atas?

55:48Ini? Fokus?

55:50Mana ya? Transform ada nggak sih?

55:52Tadi transform di bawah.

55:54Ini ini, individual CSS

55:56transform property, bukan?

55:58Nah, itu ini. Oh, iya.

56:02Individual CSS transform.

56:04Jadi, kalau

56:06selama ini kan kita transform dulu.

56:08Apa? Property-nya transform

56:10titik 2, translate,

56:12rotate, segala macem kan, harus

56:14digabung dalam satu property ya.

56:16Nah, ternyata

56:18sekarang itu bisa dipisah.

56:20Bisa translate sendiri,

56:22rotate sendiri, scale sendiri.

56:24Dan ini berguna banget contohnya misalnya

56:26animasi ya.

56:28Apa? Before dan after.

56:30Kita kan cuma pengen ngeganti

56:32translate-nya doang, misalnya. Cuma

56:34mau naikin, misalnya mau apa?

56:36Transition.

56:38Terus, misalnya kita pakai CSS

56:40in.js juga lebih gampang lagi

56:42ngeganti value masing-masing.

56:44Nah, dengan

56:46baseline ini, kita jadi tahu bahwa

56:48oh, ternyata support-nya udah lumayan juga.

56:50Jadi udah cukup aman.

56:52Ya, itu contoh-contohnya.

56:54Baseline ini liatnya di MDN

56:56aja atau kita bisa access

56:58API-nya, atau gimana,

57:00atau bisa di-connect ke IntelliSense,

57:02atau gimana, gitu nggak sih?

57:04Nah, ini kan masih baru nih. Jadi, emang

57:06baseline ini kan project

57:08kayak community, ada community-nya

57:10sendiri. Apa tadi namanya?

57:12WebDX community, atau apa-apanya?

57:14Under W3.

57:16Jadi, ini apa?

57:18Biasalah kayak working group

57:20di bawah W3.

57:22Itu kan ada pihak Google,

57:24Apple, dan lain-lain. Jadi,

57:26kalau yang

57:28konkretnya di web.dev,

57:30misalnya bakal ada

57:32artikel tentang API,

57:34web API tertentu. Jadi, bakal

57:36ada logo baseline-nya. Terus,

57:38di MDN juga

57:40akan ada atau udah ada? Gak tahu.

57:42Coba deh cari aja artikel MDN grid.

57:44Contohnya di MDN.

57:46Tapi, si baseline ini

57:48merupakan bagian dari

57:50project lain yang lebih besar.

57:52Oh, udah ada? Nah,

57:54itu. Dia jadi kayak embed ya.

57:56Jadi, yang penulisnya

57:58gak perlu update manual nih.

58:00Kalau udah support,

58:02masuk-masuk lagi,

58:04terus update ini kayaknya jadi

58:06report juga ya, bisa outdated juga.

58:08Kalau ini kan jadi embed.

58:10Kalau itu aman sih.

58:12Dan,

58:14katanya sih bakal

58:16dibuat widget-nya. Jadi, kayak

58:18nanti ke depannya bakal ada,

58:20di talk-nya ada tuh, di video yang

58:22kita cari aja dari 50-an

58:24video IO kemarin.

58:26Videonya Mbak Mariko,

58:28kalau gak salah. Itu yang mengubah baseline.

58:30Ke depannya bakal ada

58:32widget, literally widget

58:34kalau kita pengen

58:36menunjukkan atau

58:38menggunakan ini.

58:40Kita mau ngecek misalnya

58:42suatu feature udah di support atau belum,

58:44bakal ada widget-nya.

58:46Gokil sih ini, kalau misalnya

58:48nanti bisa connect ke

58:50NPM

58:52atau extension

58:54kayak IntelliSense gitu ya.

58:56Kayak, dulu kan kita

58:58suka pakai browser list.

59:00Jadi, kalau browser list itu

59:02kan untuk mesin ya.

59:04Nah, kalau ini untuk developer.

59:06Jadi, menarik sih. Dan itu

59:08emang ideally, ke depannya, gimana

59:10caranya mungkin bisa di-connect ya.

59:12Kalau browser list itu kan lebih ke

59:14bundler, ke library.

59:16Misalnya kita menspesifikasikan

59:18browser yang masih hidup.

59:20Bukan Opera Mini, maaf ya

59:22Opera Mini.

59:24Ini bisa juga

59:26di-connectin kayak ke

59:28stylelin atau

59:30islin. Suatu saat nanti bisa

59:32di-connectin atau IntelliSense.

59:34Bisa ketahuan

59:36kalau kita lagi typing, oke,

59:38ternyata

59:40API yang kita pakai

59:42gak sesuai sama browser config-nya kita.

59:44Bisa juga, kan?

59:46Misalnya mungkin

59:48kayak tadi tuh

59:50ada JavaScript kan buat

59:52deep copy. Dulu kita harus

59:54men-stringify, kita copy

59:56string-nya, kita parse balik.

59:58Nah, sekarang udah gak perlu itu.

1:00:00Karena tadi udah ada structured clone

1:00:02kan, ada di artikel yang tadi.

1:00:04Nah, jadi kalau kita

1:00:06kita ngetik

1:00:08stringify terus parse, mungkin bisa

1:00:10jadi ada, apa tuh, garis merahnya,

1:00:12squiggly line, islin. Kalau kita hover

1:00:14misalnya, kamu bisa pakai

1:00:16structured clone. Kedepannya mungkin gitu,

1:00:18walaupun sekarang belum ada.

1:00:20Nah,

1:00:22itu kalau senang beneran, lho.

1:00:24Lihat tuh komen.

1:00:26Halo.

1:00:28Nah, coba buka.

1:00:34Ada gak tempat buat fitur baru, katanya.

1:00:36Kata Dama ada.

1:00:38Kalau fitur baru,

1:00:40fitur baru mah itu.

1:00:42Bukan kesini.

1:00:44Masih-masih gak ada itu ya.

1:00:46CSS ya, berarti. CSS

1:00:48Working Group lah, itunya.

1:00:50Bikin issue ya, kalau gak salah.

1:00:52Kalau kita mau vote fitur baru.

1:00:54Cuma kan, kalau ini

1:00:56untuk men-certificasi fitur

1:00:58yang udah ada, mana yang udah

1:01:00di-support secara luas.

1:01:02Ini bentuknya widget kayak di

1:01:04Lighthouse gitu? Enggak ya kayaknya.

1:01:06Lighthouse kan dia cuma kayak score doang, kan?

1:01:08Kalau ini sih kayaknya

1:01:10di developer client ya.

1:01:12Kalau Lighthouse kan

1:01:14udah dari perspektif user lah, ibaratnya.

1:01:16Dari perspektif website

1:01:18yang udah jadi apapun itu kodenya.

1:01:20Kalau ini mungkin ya

1:01:22untuk developer lebih ke

1:01:24proses development-nya.

1:01:26Coba buka feature set deh.

1:01:28Linggang feature set.

1:01:30Nah, ya itu.

1:01:32Jadi si baseline ini

1:01:34sebetulnya adalah bagian

1:01:36dari project yang lebih besar.

1:01:38Yaitu feature set ini.

1:01:40Jadi, ya itu

1:01:42penjelasannya. Baca sendiri.

1:01:44Intinya sih,

1:01:46dulu kan, ya dulu tuh maksudnya

1:01:48mungkin 10 tahun terakhir lah ya.

1:01:50Banyak feature web API

1:01:52yang misalnya di-support di Chrome,

1:01:54Chromium, di-support di

1:01:56Musila,

1:01:58Firefox,

1:02:00di-support di WebKit.

1:02:02Tapi mungkin behavior-nya suka

1:02:04agak lain-lain.

1:02:06Atau mungkin ada subset-nya.

1:02:08Misalnya ada tambahan

1:02:10misalnya grid.

1:02:12Ada subgrid yang cuma ada di Firefox.

1:02:14Nah, terus apa?

1:02:16Makanya ada project interop

1:02:18untuk men-streamline-kan itu semua.

1:02:20Nah, kedepannya ini

1:02:22kayak mau lebih dirapihin aja.

1:02:24Lebih dibuat, lebih ter-organized.

1:02:26Jadi, ada kesepakatan

1:02:28bahwa feature ini, suatu

1:02:30feature tertentu yang di-support

1:02:32itu apa saja. Nah, coba

1:02:34buka repo-nya deh tadi.

1:02:36Wah, ini ada npm-nya ya berarti ya.

1:02:38Kita bisa pakai di sisi

1:02:40coding-nya ya. Jadi kita bisa import.

1:02:42Terus kita lihat statusnya di situ ya.

1:02:44Kita bisa check

1:02:46datanya.

1:02:48Wow, menarik sekali.

1:02:50Ada contohnya

1:02:52di repo-nya tuh.

1:02:54Atas.

1:02:56Atas.

1:02:58Atas lagi.

1:03:00Atas lagi.

1:03:02Atas file-nya.

1:03:04Feature,

1:03:06kayaknya feature group definitions ya.

1:03:08Nah, coba tuh.

1:03:10Nah, tuh, misalnya

1:03:12si sgrid tadi gak?

1:03:14Sgrid deh.

1:03:16Nah, itu juga misalnya

1:03:18BigInt. Tadi kan

1:03:20ada JavaScript, ada property-property-nya.

1:03:22Nah, itu grid, coba.

1:03:24Jadi, ini format-nya YAML.

1:03:26Jadi, karena ini di RANA

1:03:28standard dan spesifikasi,

1:03:30ini belum masuk ke teknis.

1:03:32Implementasi teknisnya sih

1:03:34terserah masing-masing browser.

1:03:36Cuma ini sekedar

1:03:38dokumentasi kesepakatan

1:03:40teknologi CSS Grid

1:03:42itu

1:03:44property-property-nya

1:03:46property atau feature-nya apa aja

1:03:48sudah dia nge-paceline atau bukan.

1:03:50Nah, itu ada detail-nya.

1:03:52Jadi, ini kayaknya

1:03:56untuk si

1:03:58developer-nya si browser juga sih.

1:04:00Jadi, kayak, oke, kita udah

1:04:02punya standard.

1:04:04Dan ini adalah sertifikat.

1:04:06Jadi, kalau kita udah lulus tes, akan dapat

1:04:08sertifikat itu.

1:04:10Sama ada

1:04:12kesepakatan aja sih

1:04:14kalau kita pengen bikin feature ini.

1:04:16Maksudnya, para vendor browser

1:04:18mengimplementasikan feature ini,

1:04:20ekspektasinya tuh seperti ini.

1:04:22Kayak gitu.

1:04:24Terus spek-nya tuh kan, nih, kalau misalnya JavaScript,

1:04:26spek-nya ya dari website

1:04:28PC39 kan tuh.

1:04:30Terus ada field can I use.

1:04:32Jadi, apa, mungkin ini kan

1:04:34buat CIC di pipeline-nya mereka ya

1:04:36buat auto

1:04:38update can I use.

1:04:40Nah, terus feature-nya apa aja.

1:04:42Tadi kan CSS, ada formatnya CSS

1:04:44.properties.blabla.

1:04:46Ini JavaScript, build-ins,

1:04:48operator, statement.

1:04:50Jadi, ini memudahkan

1:04:52programatik apa ya, apapun lah

1:04:54nanti kita mau bikin tools atau

1:04:56apapun, tinggal konsum ini

1:04:58aja. Bisa jadi, kalau

1:05:00ini sih kebayangnya kayak linter ya.

1:05:02Jadi, mungkin ada

1:05:04team lead yang implementasi

1:05:06ini, dia membatasi kalau

1:05:08harus sesuai

1:05:10dengan baseline. Kalau ada

1:05:12library yang digunakan tapi tidak

1:05:14atau ada feature yang

1:05:16digunakan tapi belum

1:05:18masih di bawah baseline, maka

1:05:20linter-nya akan kasih

1:05:22dong jangan pakai ini.

1:05:24Atau ya warning lah, gimana

1:05:26caranya cari polyfill

1:05:28ya kan, tetap.

1:05:30Kalau di web

1:05:32developer lane, ya cari polyfill

1:05:34atau tips buat progressive enhancement

1:05:36misalnya kita harus apalah if

1:05:38navigator.

1:05:40Minimal if lah,

1:05:42kondisional, kalau misalnya nggak support, jangan

1:05:44dijalaniin.

1:05:46Ada fallback-nya seperti PWA

1:05:48dan lain-lain ya. Jadi, kalau misalkan

1:05:50dia didukung, ya jalanin.

1:05:52Kalau nggak didukung, ya cari solusi

1:05:54alternatifnya.

1:05:56Nah, kalau ini kayak border image kan,

1:05:58border buat, apa sih, kayak

1:06:00gradient sama background image apa ya?

1:06:02Ya, biar ada gradasi ya.

1:06:04Border-nya.

1:06:06Bisa dilihat sendiri.

1:06:12Nggak bisa abis ya.

1:06:14Banyak ya.

1:06:20Nah, cuma baseline ini,

1:06:22browser list yang tadi kita bahaskan.

1:06:24Kalau yang

1:06:26pernah pakai Create React App pasti

1:06:28pertama kali lihat ini deh.

1:06:30Di package JSON-nya kan pasti ada

1:06:32ini. Sama kalau misalnya

1:06:34npm install, browser list-nya

1:06:36outdated, minta update.

1:06:38Iya.

1:06:40Jadi, di

1:06:42browser list ini dikasih tahu, saya pingin

1:06:44mendukung IE

1:06:46edge ke atas.

1:06:48IE yang selain edge

1:06:50nggak mau gitu.

1:06:52Jadi, bisa kayak gitu ya.

1:06:54Atau node versi 16

1:06:56atau yang lebih baru.

1:06:58Ternyata last two

1:07:00versions itu hal yang

1:07:02udah cukup umum karena default-nya

1:07:04browser list pun itu

1:07:06last two versions.

1:07:08Di sini temen-temen ada yang tahu

1:07:12versi browser-nya, versi berapa

1:07:14sekarang? Kayaknya udah nggak up.

1:07:16Nggak ngikutin versi berapa.

1:07:18Satu, satu, tiga.

1:07:20Cuma sekarang kan browser rata-rata

1:07:24minimal kalau browser yang

1:07:26di laptop ya, kalau dia

1:07:28nggak up-to-date kan muncul itu sendiri

1:07:30muncul button-nya buat

1:07:32update. Bahkan

1:07:34dia update sendiri, dan begitu kita

1:07:36misalnya sat down,

1:07:38biasanya sudah selesai, itu udah

1:07:40automatis update.

1:07:42Kalau gue matiin sih, gue matiin auto-update.

1:07:44Cuma jadi muncul itu

1:07:46tombol buat update.

1:07:48Ada notifikasinya ya.

1:07:50Karena kan by default,

1:07:54otomatis kan.

1:07:56Jadi kita nggak perlu update-update,

1:07:58update-update gitu,

1:08:00dia udah otomatis meng-update dirinya

1:08:02sendiri. Kecuali kalau ada

1:08:04error sesuatu terjadi

1:08:06yang aneh-aneh ya, mungkin error.

1:08:08Cuma kalau HP

1:08:10nggak sih, nggak

1:08:12auto-update kan, nggak ada.

1:08:14Android, Android.

1:08:16Android bisa dinyalain

1:08:18otomatis juga. Bisa sih dinyalain.

1:08:20Cuma males.

1:08:22Tiba-tiba, kok

1:08:24panas handphone ya, ternyata lagi download ya.

1:08:26Download update maksudnya.

1:08:28Oke.

1:08:32Ada lagi? Yang menarik-menarik?

1:08:34Hmm, gitu dulu.

1:08:36Sudah ya? Udah.

1:08:40Ada lagi kan?

1:08:42DevTools tips.

1:08:44Oh iya.

1:08:46Oh itu cadangan sih, tapi boleh sih.

1:08:48Nah, ini singkat aja sih.

1:08:50Sebenarnya ini video

1:08:52sesuai judulnya sih.

1:08:54Ini kayak macem-macem

1:08:56random tips and tricks untuk menggunakan

1:08:58DevTools. Dan

1:09:00ada hal-hal yang sebetulnya

1:09:02udah lama ada. Cuma

1:09:04nggak tahu, mungkin aku yang kurang

1:09:06update atau jarang

1:09:08lihat update-nya.

1:09:10Biasanya update-nya mbak Jaslin tuh ya,

1:09:12kalau DevTools kan. Jarang ngikutin.

1:09:14Jadi, ternyata

1:09:16ada beberapa feature yang di DevTools

1:09:18yang berguna. Cuma

1:09:20apa, mungkin belum banyak yang tahu.

1:09:22Misalnya, kan

1:09:24di DevTools ada tab source tuh.

1:09:26Kita bisa lihat source code-nya.

1:09:28Tapi biasanya kan, ya

1:09:30bukan biasanya source code yang dimaksudkan

1:09:32pasti yang udah di, apa?

1:09:34Udah dibandling kan tuh, udah webpack, blablabla.

1:09:36Udah di minify, dan lain-lain gitu ya.

1:09:38Nah, ternyata

1:09:40DevTools Chrome itu

1:09:42tuh, ada feature

1:09:44author view, yang dimaksud

1:09:46author view itu, code

1:09:48component source yang kita tulis.

1:09:50Ini kalau di dev environment ya.

1:09:52Jadi, lebih gampang kita lihat

1:09:54per component-nya, beneran code

1:09:56component yang kita tulis.

1:09:58Itu kalau ada mapping-nya kali ya?

1:10:00Ada mapping-nya. Iya, ada. Ada mapping-nya.

1:10:02Itu kan baca source map sebetulnya.

1:10:04Jadi, cuma secara view

1:10:06helpful aja, otomatis udah dikelompokin.

1:10:08Kita bisa, nah, itu tuh

1:10:10kayak di layarnya, tinggal

1:10:12tinggal toggle

1:10:14author view aja.

1:10:16Kita bisa lihat, kita bisa

1:10:18ngebaca kode component-component kita.

1:10:20Terus yang kedua, hal

1:10:22menarik kedua, itu ada

1:10:24ignore list untuk third party

1:10:26scripts. Kan suka ada

1:10:28analytics atau lainnya lah.

1:10:30Nah, itu, nah, terus kan

1:10:32banyak dan kita harus scrolling lama

1:10:34tuh biasanya buat ngeliat source.

1:10:36Itu ternyata bisa di auto ignore.

1:10:38Dan setelah dilihat artikelnya,

1:10:40itu udah dari tahun lalu ada.

1:10:42Jadi, agustus

1:10:442022.

1:10:46Ini ya? Iya.

1:10:48Tuh, mbak Jislin.

1:10:50Nah, intinya ya,

1:10:54kalau misalnya, mungkin temen-temen

1:10:56jarang liat update yang

1:10:58update dev tools, bisa nonton video

1:11:00itu karena ada beberapa ringkasan tools

1:11:02yang cukup berguna.

1:11:04Tau nggak ada

1:11:06dev tools yang untuk

1:11:08overlay core web vital?

1:11:12Overlay?

1:11:14Ya, core web vital. Nggak tahu.

1:11:16Kayak pernah lihat deh.

1:11:18Coba buka,

1:11:22saya buka dev tool.

1:11:28Masuk ke more tools.

1:11:30More tools, ya, more tools.

1:11:34Rendering.

1:11:36Yep.

1:11:40Scroll ke bawah, scroll, ya, scroll.

1:11:42Tuh, centang core web vital.

1:11:46Wow.

1:11:50Kebanyakan feature.

1:11:52Dev tools tuh kebanyakan feature.

1:11:56Kita malah, kita malah jadinya up to date.

1:11:58Jangan ditutup.

1:12:00Oh iya, jangan ditutup ya.

1:12:02Nah, itu berguna sekali

1:12:06kalau saya pakai itu

1:12:08nggak tahu LCP

1:12:10sama, sama

1:12:12apa tuh, layout shift.

1:12:14Jadi, scroll, scroll, scroll.

1:12:16Oh, kalau kita refresh,

1:12:18dia akan update ya.

1:12:20Wow, canggih ya.

1:12:26Sebenarnya buat topik ini di depan, tapi ya.

1:12:28Oh, iya kan kisi-kisi.

1:12:30Ya, bisa, bisa.

1:12:32Ini juga belum kita bahas kan

1:12:36dev tools ini kan.

1:12:38Belum.

1:12:40Kadang, deket-deket lagi bahas yang lain

1:12:42sambil buka dev tools.

1:12:44Cuma belum pernah yang spesifik.

1:12:46Iya, belum pernah spesifik.

1:12:48Oke.

1:12:50Ada lagi?

1:12:52Oh iya, saya mau nunjukin ini nih, bentar.

1:12:54saya mau nunjukin yang WSMB tadi.

1:12:56WSMB tadi,

1:12:58baru ketemu.

1:13:00Nah, ini

1:13:02udah kelihatan kan? Nah, ini adalah

1:13:04contoh

1:13:06aplikasi Android

1:13:08yang dengan codebase hampir sama.

1:13:10Dia bisa bikin yang versi webnya.

1:13:12Ini dari Jetbrain orang. Nah, ini.

1:13:16Tapi dia pakai canvas ini

1:13:18disini, jadi canvas bentuknya.

1:13:20Kelihatan kan kodenya ya?

1:13:22Oh iya, jadi canvas?

1:13:24Iya.

1:13:26Pertanyaan saya adalah

1:13:28aksesibility itu kan canvas?

1:13:30Iya.

1:13:32Kalau frame rate dan lain-lain

1:13:34bagus ya, di atas 100 kan?

1:13:36Aksesibilitynya gimana ya?

1:13:38Aksesibilitynya gimana? Itu pertanyaan

1:13:40juga sih. Karena dia

1:13:42compilenya jadi canvas.

1:13:44Kayaknya Flutter web

1:13:46juga kayak gitu, kayaknya ya?

1:13:48Enggak, Flutter kan jadi dom.

1:13:50Flutter jadi dom ya?

1:13:52Bukan canvas ya?

1:13:54Kelihatanya jadi dom deh,

1:13:56pernah lihat demo gitu.

1:13:58Oh iya, berarti saya yang salah.

1:14:00Oke.

1:14:02Oh ini tadi ya? Sudah habis ya?

1:14:06Tapi kita habis. Terakhir ini ya?

1:14:08Oke.

1:14:10Oke, kalau gitu.

1:14:12Ada komen, kalau minifight,

1:14:14jadi susah bacanya.

1:14:16Kalau minifight jadi susah bacanya.

1:14:18Kalau ada source map,

1:14:20bisa kembali.

1:14:22Jadi kayak di expand lagi.

1:14:24Di Chrome DevTools-nya

1:14:26kelihatannya yang

1:14:28versi belum minifight.

1:14:30Di sini ada nggak?

1:14:32Bahkan bisa didibug.

1:14:34Nanti kita harus belajar, kita harus

1:14:36nanti kita harus demo itu.

1:14:38Kepan-kepan deh episode.

1:14:40How to debug ya.

1:14:42Jangan pakai basalok aja.

1:14:44Termasuk kalau lagi

1:14:46development environment, misalnya kita

1:14:48masih lagi localhost di development,

1:14:50ya itu tadi, pakai kan

1:14:52bisa pakai break points,

1:14:54terus bisa ngeliat source yang

1:14:56source yang tadi author

1:14:58yang kode per komponen

1:15:00yang kita tulis.

1:15:02Betul.

1:15:04Kan console lock nggak cuma lock doang loh.

1:15:06Console tuh nggak cuma lock doang.

1:15:08Console error, console

1:15:10info, console

1:15:12warn.

1:15:16Banyak lah.

1:15:18Tenang aja. Kita bahas satu-satu.

1:15:20Oke.

1:15:22Oke, kalau gitu,

1:15:24kalau sudah, ada lagi mungkin

1:15:26yang mau disampaikan.

1:15:28Kalau nggak ada, mungkin kita tutup.

1:15:30Oh iya, buat yang mau usul topik,

1:15:32kan kita tuh, kita kalau lagi gini

1:15:34suka dapet ide topik random ya.

1:15:36Nah, mungkin teman-teman ada

1:15:38ide topik lainnya

1:15:40yang tiba-tiba kepikiran bisa dikirim

1:15:42ke situ.

1:15:44Ke bit.ly/ngobrolin web.

1:15:46Kita kadang-kadang juga

1:15:48suka keceplosan gitu kan

1:15:50ide apa, tapi habis itu kita lupa.

1:15:52Jadi harus tonton dulu videonya.

1:15:54Oh iya, kita mau bahas ini.

1:15:56Jadi bisa

1:15:58di apa, ya

1:16:00kita butuh bantuannya juga teman-teman

1:16:02tertariknya ke, lagi tertarik ke

1:16:04topik apa, siapa tahu kita juga punya

1:16:06ketarikan yang sama, jadi kita bisa bahas dan

1:16:08kita bisa belajar bareng-bareng.

1:16:10Atau bisa saran bintang tamu siapa?

1:16:12Bintang tamu?

1:16:14Bintang tamu sekalian dikasih kontak persennya ya.

1:16:16Mengajukan diri sendiri juga boleh?

1:16:18Oh iya, tentu boleh.

1:16:20Jadi

1:16:22biar makin seru, biar makin rame

1:16:24acaranya juga bisa bermanfaat buat

1:16:26teman-teman semua untuk update-update

1:16:28seputar dunia teknologi web.

1:16:30Sekian dulu untuk malam

1:16:32hari ini, terima kasih banyak

1:16:34buat semuanya yang sudah mendampingi

1:16:36dari awal sampai akhir.

1:16:38Kita ketemu lagi

1:16:40pada minggu depan hari Selasa jam

1:16:428.00 malam. Sampai jumpa

1:16:44bye-bye

1:16:46sebentar ini

1:16:48closingnya belum?

Suka episode ini?

Langganan untuk update episode terbaru setiap Selasa malam!

Langganan Sekarang

Episode Terkait

Ngobrolin Google IO - Ngobrolin WEB ep33
EP 32

17 Mei 2023

Ngobrolin Google IO - Ngobrolin WEB ep33

Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. ...

WebAI - Ngobrolin WEB
EP 151

25 Nov 2025

WebAI - Ngobrolin WEB

🗣️🕸️ Selasa malam waktunya #ngobrolinWEB! Malam ini membahas AI yang dapat dijalankan di web browser atau istilah kere...

Ngobrolin Monorepo - Ngobrolin WEB
EP 119

18 Mar 2025

Ngobrolin Monorepo - Ngobrolin WEB

Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. ...

Komentar