EP 59

Ngobrolin Web Offline di DevFest Bogor

Bagikan:

Edisi khusus sesi ngobrolin web pertama yang diadakan secara offline langsung dari DevFest @gdgbogor2666 beberapa hari yang lalu. Topiknya seputar Transition API, Performance, WebAssembly dan Angular. ----------------------------------------------------------------------------------- Bergabung menjadi anggota elit di kanal ini: https://www.youtube.com/channel/UCHhAlFGFCGgIusQkQIqJLYw/join Donasi dapat meningkatkan kualitas kanal ini: 💰 https://karyakarsa.com/rizafahmi/tip 💸 https://saweria. Kunjungi https://ngobrol.in untuk catatan, tautan dan informasi topik lainnya.

Transkrip Bantu Koreksi

0:11Halo, ketemu lagi kita.

0:13Terima kasih teman-teman buat yang masih stay di sini.

0:17Ini adalah sesi spesial yang dipersiapkan oleh GDG Booger khusus untuk kita.

0:23Jadi buat teman-teman yang mungkin sudah benar atau yang belum.

0:28Yang belum pasti.

0:30Yang belum.

0:33Kita bertiga biasanya suka ngomong di hari Selasa.

0:37Selasa malam.

0:38Waktunya ngomrolin gue.

0:42Dan kita gak pernah kompak kalau buka acara.

0:45Nah, khusus hari ini gak hari Selasa, tapi kita tetap bisa ngobrol dulu.

0:49Karena ngobrol dulu bisa tiap hari.

0:51Jadi ini pertama kalinya kita ada acara offline, in person, di acara GDG Booger.

0:58Kepertangan dong buat teman-teman GDG Booger.

1:01Terima kasih udah bikin acara kayak gini.

1:04Ini adalah episode ke-60 kita.

1:08Dari 0, jadi 61 sebenarnya.

1:12Jadi episode ke-61 kurang lebih kita udah jalan 1 tahun lebih.

1:15Kita awalnya ada janapet, kita ketemu dong acara ulang tahun yang ngobrolin gue, 1 tahun.

1:21Ketemu dimana ya?

1:23Akhirnya pas banget karena di Booger kita bertiga di udang.

1:26Eh, boleh gak kita nembeng acara di sini bikin ngobrolin gue versi offline.

1:31Jadi sore hari ini kita akan ngobrol tentang apa aja.

1:36Teman-teman boleh nanya.

1:37Ini ada suidonya ya.

1:39Itu udah ada pertanyaan, ntar kita buat EKA ya.

1:42Jadi kalau ada yang mau nanya langsung boleh.

1:44Boleh kan ya?

1:45Ada yang mau nanya langsung.

1:46Atau nanya lihat sudu juga boleh.

Lihat transkrip lengkap

1:48Nanti rencananya kita akan, ini sesinya akan di depan.

1:53Dan akan kita aktifkan juga di replay.

1:56Di hari Selasa Malam tentunya.

1:58Oke, kita gak perlu kenalin diri kan ya?

2:00Udah perlu kenalin diri.

2:02Udah kenal ya?

2:04Oh iya tadi juga udah.

2:06Pertanyaan langsung?

2:08Bukan.

2:09Ntar, ntar.

2:10Dan bagi teman-teman yang belum pernah menonton acara kita.

2:15Itu di setiap Selasa Malam pukul 8.00.

2:19Di YouTube Live di channelnya Mas Riza.

2:23Dengan topiknya ngobrolin web.

2:26Cari aja ngobrolin web di YouTube setiap Selasa Malam pukul 8.00.

2:30Dan kita selalu bahas mengenai all about web.

2:34Pastinya.

2:39Ya, ini pertanyaan pertama langsung aja ya. Kita jawab ya.

2:42Mau bertanya apakah ada performance dulu?

2:45Join us at Slido.

2:47Terus untuk Eka, ada pertanyaan tentang performance cost dalam kebunan transisi API?

2:52Ya, jadi kalau performance cost pasti ada ya.

2:55Apapun yang kita lakukan pasti ada performance cost.

2:59Tapi jauh lebih rendah dari kalau kita pakai animation library yang sekarang.

3:06Alasannya itu tadi karena banyak hal yang sudah dihandle oleh built-in browser features.

3:12Nah, kalau untuk melakukan animasi, itu kan sebagian property animasi itu

3:19udah punya jalur sendiri, enggak jalan di main thread.

3:23Cuma kalau untuk menganimasi size, width, dan height.

3:28Teber dan panjang.

3:30Itu ya baik pakai few transitions API atau bukan.

3:34Itu sampai sekarang memang masih dijalankan di main thread.

3:38Tapi kabar positifnya untuk few transitions yang menganimasi lebar,

3:44punya ukuran, lebar dan panjang.

3:46Karena itu umum banget kan.

3:48Misalnya kita menclek thumbnail, jadi besar.

3:50Itu kan pasti menganimasi lebar.

3:52Sekarang masih jalan di main thread.

3:54Ke depannya ada rencana untuk bisa memindahkan itu dari main thread.

4:00Itu detailnya bisa dilihat di blog Chrome Developer yang tadi ada linknya.

4:08Ini pertanyaannya enggak harus seputar materi kita tadi ya,

4:16bebas ya, nanti tentang web, tentang apa aja boleh.

4:18Tapi tentang web, jangan tanya ke alaman.

4:22Nanti kita...

4:24Oke, pertanyaan berikutnya untuk Ivan.

4:28Berdasarkan tentang BFcache.

4:30Apa bedanya BFcache dan cache biasa?

4:32Bedanya BFcache dengan cache.

4:36Kalau cache itu, yang di cache itu...

4:38Back forward cache.

4:44Jadi di back forward cache yang disimpan adalah snapshot dari halaman tersebut.

4:50Snapshot ya, jadi sudah hasil yang ke render.

4:56Kalau cache biasa, seperti...

5:00Apa ya cache biasa ya?

5:02Cache di browser itu...

5:04Browser, browser...

5:06Bukan.

5:08Di web biasa kan ada cache biasa.

5:10Cache interface, cache API.

5:12Itu yang disimpan di source-nya.

5:14Misalnya HTML-nya, tetapi bukan hasil render-nya.

5:18Jadi CSS-nya disimpan di cache.

5:22JS-nya di cache.

5:24Jadi waktu di-load, cuma di-load dari memori.

5:26Tapi tidak di-load dari origin.

5:30Atau HTML tidak di-load lagi dari origin.

5:32Cuma belum di-render.

5:34Kalau back forward cache,

5:36dia sudah hasil render-nya.

5:38Jadi kayak snapshot.

5:40Sudah tinggal ditampilkan.

5:42Bahkan nggak perlu di-render.

5:44Jadi tinggal ditampilkan saja.

5:46Kayak snapshot virtual memory gitu ya.

5:50Dengan state yang terbaru, terakhir di CSS juga?

5:54Nggak, nggak.

5:56Jadi state-nya seperti sama.

5:58Simpan.

6:00Waktu nanti ditinggal.

6:02Terus waktu di-pack, balik.

6:04Begitu lagi, gitu.

6:06State terakhir.

6:08Dan kalau teman-teman ada pertanyaan lanjutkan, silahkan ya.

6:14Kalau menurutku, ini bagian dari user experience juga nggak sih?

6:19Itu kan mirip yang view transition tadi.

6:21Sebetulnya kalau kita ngomong

6:23strictly cara kerja browser,

6:25kan memang expected

6:27kalau kita nge-update Elementum,

6:29tiba-tiba ada.

6:31Tapi kalau user secara bawah sadar,

6:33expect-nya visual itu datang dari somewhere.

6:37Terus back forward cache juga gitu.

6:39Mungkin user kan expect-nya

6:41ngisi form name.

6:43Atau infinite scrolling,

6:45load more, load more, sampai pos-nya banyak.

6:47Terus ditinggal untuk membuka suatu pos.

6:50Nah, pas dia pencek back,

6:52kan kalau dari logika browser,

6:54itu kan kayak sebetulnya load baru lagi,

6:56harusnya dari atas lagi.

6:58Cuma kalau dari UX, dari logika user,

7:01tadi ditinggalin di situ,

7:03pas balik kan harus kayak gitu lagi.

7:05Jadi nganggepnya kayak fisik ya,

7:07kayak analogik fisik.

7:09Kita ninggalin kamar kita atau rumah kita,

7:11semua bareng-barengnya kayak gini.

7:13Nggak mungkin pas kita balik,

7:15tapi udah rapi semua.

7:17Kecuali kemalingan.

7:19Sekarang saya lagi ya,

7:27dari Mas Badruddin.

7:29Bagaimana mengukur dan mengantar

7:33performance Core Web Vitals secara berkelanjutan?

7:37Dan apakah metric khusus yang menjadi fokus utama Anda?

7:43Core Web Vitals sudah pasti ada 3.

7:45Namanya juga Core,

7:47LCP,

7:49CLS,

7:51dan INPEC yang baru,

7:53menggantikan first input delay.

7:55Kalau vital-vital yang lain sebenarnya ada.

7:59FCP, first content full pain,

8:01time to first byte,

8:03terus kemudian time to interactive,

8:05ada banyak.

8:07Cuma kalau dari Core Web Vitals,

8:09yang paling utama,

8:11ini ya semuanya,

8:13tiga-tiganya perlu dipantal.

8:19Karena itu ketiga hal ini,

8:21kalau secara generalnya dilihat,

8:25kalau largest content full pain itu

8:27adalah seperti kecepatan ngerender-nya,

8:29kecepatan user melihat,

8:31jadi speed,

8:33LCP itu tentang speed,

8:35CLS itu tentang stability,

8:39dan INPEC itu mengenai responsive,

8:43bukan responsive size ya,

8:45tetapi responsiveness,

8:47jadi secepat apa interaksi user

8:51atau browser bisa menampilkan

8:55atau mengeksekusi interaksi yang terjadi,

8:57seperti touch, scroll, atau click.

9:01Jadi ketiganya penting.

9:03Dan untuk monitor-nya,

9:07ada yang berbayar, ada yang free,

9:09yang free ya pakai aja,

9:11yang di Search Console dari Google,

9:13Google Search Console,

9:15yang berbayar ada banyak,

9:17ada Matrix, segala macam,

9:19itu bisa kayak continuous monitoring.

9:23Ada CICD-nya juga ada?

9:25CICD, jadi kalau dari Lighthouse,

9:27ada Lighthouse CI juga.

9:35Apakah semua browser mendukung bfcache,

9:37dan apakah ada batasan atau situasi

9:39di mana bfcache tidak berfungsi dengan baik?

9:41Yes, semua browser sudah mendukung bfcache,

9:453 major browser sudah mendukung,

9:47dan ada hal apa yang menyebabkan bfcache

9:51tidak bekerja dengan baik,

9:53itu tadi sudah saya sampaikan,

9:55ada 2 yang paling umum,

9:57kalian menggunakan Windows.unload,

9:59atau Unload API,

10:01kedua kalian menambahkan header no store,

10:06no-store,

10:08kalau ada header no store,

10:10artinya browser tidak akan simpan

10:12di browser cache, sorry bfcache.

10:31Bahasa panggilan-panggilan yang bagus

10:36untuk website,

10:38website itu berarti kalau front-end

10:40sudah pasti potential CSS Javascript,

10:43atau kalau mau lebih modern,

10:45mungkin TypeScript,

10:47tapi untuk band-end, bebas,

10:49teman-teman mau pakai PHP bisa,

10:51pakai Go boleh, pakai Python, Ruby,

10:54band-end itu bisa,

10:56jadi kalau untuk front-end,

10:58mau gak mau harus belajar Javascript,

11:00atau turunannya,

11:02TypeScript dan teman-teman,

11:04juga dibina dengan CSS.

11:06Mungkin itu ya.

11:08Pertanyaan berikutnya,

11:09saya ingin membuat website portfolio,

11:11karena banyak media,

11:13jadi yang misalnya harus memberikan ke saya

11:16adalah loadingnya menjadi cepat.

11:18Ini pertanyaan kenapa ternyata aneh?

11:20Apa yang diberikan?

11:22Pertanyaan aneh?

11:24Oh sarang.

11:26Oh gitu.

11:28Jadi feature-nya jangan besar-besar.

11:30Tapi desain grafik harus bagus,

11:34jangan sampai...

11:36Jadi feature itu,

11:38kalau halaman banyak grafik ya,

11:40feature itu kan bisa responsif,

11:46atau source set,

11:48sudah dengar source set,

11:50src set.

11:52Kalau misalnya browser hub,

11:54webnya dibuka di mobile,

11:56kan nggak perlu kecil-kecil amat.

11:58Jadi bisa pakai source set,

12:00yang menampilkan umurannya lebih kecil,

12:02yang ditambil yang sedikit lebih besar,

12:04yang di desktop yang paling besar.

12:06Namun,

12:08tetap butuh dilimit,

12:10misalnya jangan sampai kasih yang full size,

12:12karena yang full size itu,

12:14mungkin bisa,

12:16kalau 8-10 mega kan,

12:18kegedean ya,

12:20dan boros bandwidth.

12:22Yaitu pakai source set ini,

12:26dan kasih opsi ke user,

12:28kalau melihat full size-nya,

12:30bukan intact baru.

12:32Jadi benar-benar,

12:34atau benar-benar,

12:36hanya menampilkan umur yang paling besar itu bisa,

12:38untuk perang saja.

12:40Jadi yang menghabiskan boros bandwidth bagi user,

12:42dan hanya memberikan opsi itu,

12:44jika user ingin melihat yang full size.

12:48View source set ini,

12:50bisa kita tweak,

12:52detail banget,

12:54jadi ukuran viewport.

12:56Terus kadang kan,

12:58misalnya kalau di HP mobile,

13:00itu 100% besarnya.

13:02Tapi kalau di desktop,

13:04cuma tunel kecil.

13:06Karena ini desain grafis ya,

13:08jadi kualitas gambar kan,

13:10itu penting.

13:12Jadi bisa kita spesifikasi yang di situ.

13:14Terus kalau misalnya retina,

13:16bisa kita tentuin juga,

13:18itu satu source set.

13:20Terus jangan khawatir,

13:22karena image source set itu,

13:24kita tetap fallback ke src,

13:26source atributnya.

13:28Jadi kalau browser nggak support,

13:30walaupun jadi lebih berat ya,

13:32karena mungkin ukuran file-nya lebih besar,

13:34tetap aman.

13:36Lalu mungkin tips yang terakhir,

13:38bisa lazy look,

13:40pakai string base64.

13:42Base64 itu misalnya bisa kayak di blur dulu,

13:44selama masih loading,

13:46di situ sambil nunggu gambarnya diambil,

13:48baru setelah selesai ditampilkan.

13:50Tapi jangan lupa,

13:52yang paling atas, yang lcp,

13:54jangan di lazy look.

13:56Tabahan, satu lagi,

13:58kalau media image,

14:00itu nggak

14:02mesti pakai image src.

14:04Bisa pakai picture.

14:06Ada yang tahu,

14:08picture tag?

14:10Picture tag,

14:12nanti coba baca di MDM.

14:14Art Direction,

14:16nanti ada picture tag.

14:18Jangan lupa juga ada

14:20format-format baru ya,

14:22dari image,

14:24contohnya active,

14:26dan lain-lain yang lebih optimized

14:28untuk ditampilkan

14:30di browser yang lebih modern.

14:32Karena JPEG dan PEG itu udah cukup lama,

14:34mungkin di browser yang modern,

14:36cukup bagus, tapi kalau browser modern,

14:38mungkin lebih cocok

14:40untuk format-format yang modern.

14:42Nah, berhubung kita punya

14:44tanggau dari Kuala Lumpur,

14:46dan web angular, kan,

14:48jadi bisa kita tanya-tanya.

14:50Jadi,

14:52we would like to welcome

14:54Mr. Jera.

14:56We invite Mr. Jera

14:58to come back to stage

15:00with us

15:02to give more insight

15:04about web AI

15:06and also angular.

15:08Because Jera

15:10is web GTE

15:12for angular,

15:14right? Am I correct?

15:16Okay, welcome Jera.

15:18And give applause for Jera.

15:20So,

15:26first question.

15:28How's Indonesia?

15:30Very hot.

15:32Okay.

15:34What about the food?

15:40Hello?

15:42Okay.

15:44So, the weather is very hot.

15:46And the food is very spicy.

15:48That's another video.

15:52And how about the people?

15:54Okay, I haven't got

16:00that much time to interact

16:02with the people, but so far

16:04I think the people is really nice

16:06and they interact

16:08with me

16:10on my talks, and

16:12I think they like my jokes.

16:14I don't know.

16:16So, my first question,

16:18my second question is,

16:20or third,

16:22what's the meaning

16:24of angular?

16:26Alright, so there's, I don't know

16:28how many of you are angular

16:30developers?

16:36I use angular1.

16:38Okay, angular1, okay.

16:40I use angularjs.

16:42Angularjs, yeah, this is a long time.

16:44I actually started

16:46with angularjs.

16:48And then when I saw

16:50angular2,

16:52or the new angular, this is when

16:54I got more active in the community.

16:56And at the time

16:58I was at ng-comp

17:00in Utah when they

17:02released angular2.

17:04It was really exciting.

17:06So, just

17:08few days ago,

17:10angular released

17:12a new version, which is now

17:14version 17.

17:16Wow!

17:18So maybe you only know

17:20about angular2, and then

17:22it got a little bit out

17:24of hand. But I think

17:26since angular14,

17:28we have seen like

17:30really, really a big

17:32change in angular.

17:34And I think until this last

17:36version, everything has

17:38come together, and

17:40actually, the angular

17:42team, they

17:44released a new logo.

17:46So if you

17:48look, if you go to the

17:50website, which actually there's

17:52a new documentation

17:54website, it's angular.dev,

17:56the whole

17:58new look is way more

18:00modern.

18:02You will see a lot of pink,

18:04you will see

18:06kind of a modernized brand

18:08for angular.

18:10And yeah, it's really exciting.

18:12What the angular

18:14community mentions

18:16most of the time is this

18:18angular renaissance.

18:20Like it's

18:22coming back stronger

18:24and

18:26it's faster, it's really, really fast.

18:28And some of the

18:30initial tests on speed,

18:32they have

18:34put in the blame

18:36all the other frameworks.

18:38It's 90% faster

18:40than the last version

18:42of angular. And if you

18:44go, there's a benchmark

18:46website where all the frameworks,

18:48web frameworks

18:50are compared. And now

18:52angular17,

18:54it's faster than build, it's faster

18:56than react, it's faster than

18:58it's built, it's

19:00super, super fast. So it's really,

19:02really exciting times for angular.

19:04Nice.

19:06Well,

19:08they released,

19:10so what has happened is

19:12in a few versions back,

19:14they released a new build

19:16engine, which is the rendering

19:18behind angular.

19:20And that allowed

19:22a lot of new cool features.

19:24And if I give you

19:26like a list

19:28of features, probably

19:30the most important

19:32one, I guess, is the performance.

19:34I mean, this increase in

19:36the performance is really, really

19:38amazing. And

19:40when you compare it to the other frameworks

19:42that maybe you think that react will be faster

19:44than angular, now

19:46we have proof that

19:48it's now behind. So that's

19:50really cool. And then

19:52one thing that has

19:54made also a lot of

19:56news in social media is

19:58the new, what they call the new

20:00control flow. And

20:02the new control flow is a new way

20:04to use ng-if,

20:06ng-for, and ng-swift.

20:08And now

20:10we have a new syntax

20:12to use in our templates for

20:14angular. And this is also part

20:16of the performance improvements.

20:20Nice. What do you think

20:22the key feature of Angular compared to

20:24Angular? I see you

20:26have to convince us

20:28to use Angular. What's the meaning?

20:30Well, I think now the shiny

20:32the shiny

20:34diamond in

20:36Angular is

20:38the signals,

20:40angular signals. So

20:42it has been

20:44also everywhere for

20:46front-end. And

20:48signals have been implemented

20:50now in React.

20:52Everyone has

20:54adopted signals.

20:56Yes, yes.

20:58So there's a few frameworks that

21:00introduced the concept, the idea.

21:02And then angular was one

21:04of the first that released it.

21:06And yeah, right

21:08now it's part of the

21:10new version. So it's completely

21:12fully integrated. There

21:14was a developer preview

21:16for a few months.

21:18And right now it's official. So if you

21:20build a new Angular

21:22application, it will incorporate

21:24signals

21:26just from the initial

21:28build. So your application

21:30will be really, really fast.

21:32Thank you. So

21:36this is like a curiosity

21:38question for me about

21:40the positioning of Angular

21:42in this entire

21:44ecosystem. Because we

21:46know that like

21:48well, this

21:50the whole community is

21:52divided between

21:54React, Fue,

21:56different spell, and so on.

21:58This is like a framework

22:00war somewhere

22:02up there, right? New framework comes up.

22:04Every second, new framework

22:06comes up. So, but I'm curious

22:08how this come up with it.

22:10Where does the Angular

22:12comes out in this

22:14in the ecosystem?

22:16What, what, what?

22:18Like, how it

22:20being used in the industry? Is it like

22:22mostly enterprise, or

22:24scale, or just like it in the

22:26I don't know. So

22:28to you, Angular.

22:30So Angular has been focusing

22:32in different areas.

22:34And one of them was

22:36always stability.

22:38So that means

22:40that when you introduce a new

22:42version, you have

22:44a way to automate

22:46your code from

22:48the last version to the new version.

22:50So you can run a command.

22:52This is a

22:54migration of the code.

22:56And they automated

22:58the whole process. So when you

23:00change version, you run

23:02on your command line, you run

23:04ngupdate. It's always

23:06the same command. And

23:08ngupdate will go

23:10through all of the updates

23:12on that version, will

23:14look for the code changes,

23:16and will automate that

23:18for you. So that's really

23:20really good. And maybe some

23:22developers, they don't know about this.

23:24Because this, this has been

23:26improved and

23:28developed maybe in the last two

23:30years. So this is

23:32something that Angular developers

23:34enjoy. So if there is a new

23:36version, you just go into your

23:38CLI and run

23:40ngupdate. And

23:42you can do that for multiple versions.

23:44So imagine you have an old, maybe

23:46a project that you...

23:48Yes, maybe it's a

23:50three years old project.

23:52ngupdate

23:54will take you from

23:56Angular, imagine Angular 8

23:58to Angular 17.

24:00And you don't have

24:02to change anything.

24:04Of course,

24:06it just requires you to jump

24:08one version. So you need to do

24:10one version at a time.

24:12I can relate to that because

24:14mostly my time spent is

24:16to update dependencies

24:18of my project.

24:20So sometimes if I like

24:22to upgrade React 16

24:24to React 17, and I get

24:26compatibility issue

24:28with certain libraries,

24:30it doesn't allow me to update,

24:32I have to fix here and there,

24:34and it's all heading.

24:36This is one of the main pains

24:38in the frontend

24:40or web.

24:42The dependencies just keep

24:44upgrading, they just keep upgrading.

24:46Even if you just use TypeScript,

24:48because TypeScript

24:50is quite fast-paced,

24:52there will be always some new release

24:54of TypeScript.

24:56And it's really good

24:58that Angular offers this

25:00automated

25:02upgrade experience

25:04for developers.

25:06They have been improving the developer

25:08experience a lot.

25:10So that's what makes Angular

25:12in another category, because

25:14for other frameworks, do you have

25:16this automation between versions?

25:18It's interesting that

25:20Angular has been doing this for

25:22two years, because

25:24Svelkit, not Svel, but Svelkit,

25:26the meta framework, offered it, but

25:28not only this year, when they

25:30released a major

25:32version, but it's nice to see

25:34like many frameworks.

25:36This was introduced with

25:38Angular schematics,

25:40so it's a way to automate

25:42code changes.

25:44Alright, thank you.

25:46Shall we come back

25:48to the questions

25:50that we have here?

25:52I can translate.

25:54Question from Hanif.

25:56Can we ask the tips and tricks

25:58to improve process

26:00time from API

26:02if the user

26:04if the user use like

26:08there are a lot of

26:10concurrent user

26:12and database has

26:14millions of records?

26:16Okay, this is a good question.

26:18Okay.

26:20So that means like

26:24the architecture is like

26:26you have

26:28millions of data

26:30and then you have a lot of

26:32concurrent user

26:34that access the same time

26:36and this is like I'm talking about

26:38enterprise kind of

26:40architecture.

26:42There is no

26:44one answer

26:46to fix this.

26:48There's no one answer.

26:50There's no like silver bullet

26:52to fix this.

26:54It's always come back to trial

26:56and error and of course

26:58this is like whether your architecture

27:00playing in place.

27:02It doesn't help. You cannot help this

27:04just using one framework and it will

27:06fix for you.

27:08And it doesn't also automate this.

27:10Of course,

27:12cache method here.

27:14Cache method and also

27:16asynchronous or queuing

27:18queue

27:20to handle the traffic

27:22and also

27:24yes, of course, database

27:30replicas and

27:32replicas from

27:34many, so it's

27:36like scaling your

27:38architecture, not scaling

27:40your framework.

27:42So this is about architecture.

27:44Maybe someone have

27:48a better opinion.

27:50You can also talk in Indonesia.

27:54Maybe next question.

27:58Apakah OSM dapat integrasikan dengan API

28:02jika bisa bagaimana proses teknisnya?

28:04Sebenarnya sama aja.

28:06Seperti mengintegrasikan dengan

28:08API tanpa memasuki.

28:10Tapi yang lebih

28:14memungkinkan lagi adalah

28:16bahkan bisa ditaruh di World Assembly.

28:18Ada yang namanya Skylight

28:20database yang cuman satu file

28:24dan itu bisa di load

28:26atau bisa di compile

28:28kompilasi ke World Assembly.

28:30Sehingga database kita

28:32berada di client.

28:34Dan mungkin kesempatannya hanya syncing aja.

28:36Itu mungkin lagi sekali.

28:38Satu user, satu DB ya?

28:40Jadi kayak

28:44itu lah modelnya.

28:46Jadi ketika ada koneksi ke server

28:48hanya untuk syncing aja.

28:50Itu juga mungkin.

28:52Jadi maksudnya, kalau misalnya kita punya

28:54Web Assembly,

28:56kita bisa koneksi ke API dari Web Assembly?

28:58Ya.

29:00Cuma seperti

29:02memasuki.

29:04Tapi java Skylight bukan memasuki.

29:06Ia memasuki dari

29:08programming language yang digunakan

29:10dari web assembly.

29:12Oh.

29:14Saya baru tahu.

29:18Oh ya, saya melihat.

29:20Ya, saya melihat kita bisa menggunakan

29:24workplace dari Web Assembly.

29:26Dan itu server web.

29:28Ya.

29:30Sebenarnya.

29:32Oke. Pertanyaan selanjutnya.

29:34Oke. Pertanyaan ini

29:38adalah tentang tweet

29:40untuk saya.

29:42Untuk memperbaikkan LCP

29:44dalam karusel,

29:48tapi karusel itu

29:50ada X.

29:52Oke. Jadi

29:54sekarang pertanyaannya

29:58X nya di depan

30:00atau di tengah atau di belakang?

30:02Biasanya

30:04setahu saya, X di karusel itu di tengah.

30:06Ya.

30:08Setahu di karusel itu di tengah.

30:10Bukan di karusel pertama.

30:12Biasanya.

30:14Karena karusel itu seperti image.

30:16Dan kamu ada X

30:18ketika kamu scroll.

30:20Ya. Jadi.

30:22Kalau LCP nya untuk

30:26image pertama, sama seperti yang saya katakan.

30:28Tetapi jarang banget yang pakai

30:30X di LCP.

30:32Sebagai karusel dan itu sebagai LJP.

30:34Dan biasanya

30:36biasanya

30:38LCP

30:40ketika browser melihat LCP

30:42ketika browser melihat LCP

30:44dan itu adalah image yang di-lazy load.

30:46Bisa jadi browser

30:48menangkap LCP nya

30:50di elemen yang lain.

30:52Bukan berarti karusel itu.

30:54Bisa jadi text yang ada besar

30:56sebelum title

30:58biasanya.

31:00Dan

31:02kalau kalian mengatakan

31:04X kalian di karusel itu

31:06semuanya X.

31:08Kayaknya itu melanggar

31:10ini deh.

31:12It breaks the rule.

31:14Karena X itu gak boleh

31:16di dalam karusel semuanya.

31:18Masih banyak-banyak karusel ya?

31:20Hah?

31:22Masih banyak-banyak karusel.

31:24Ya.

31:26Even though I don't

31:28like karusel.

31:30Tetapi yes.

31:32Because still

31:34kalau X nya di tengah-tengah

31:38maka itu gak dianggap sebagai LCP.

31:40Yang dianggap adalah image yang pertama

31:42biasanya.

31:44Tapi kalau itu kalian terpaksa harus

31:46image yang pertama

31:48yang usahakan ada text yang besar

31:50sebelumnya.

31:52Sehingga

31:54LCP yang dipakai adalah

31:56text yang besar itu.

31:58Bukan X nya.

32:00Itu load paling berakhir.

32:02Jadi jangan sampai X nya yang

32:04diutamakan.

32:06Nah, ikut aja.

32:08Speaker, tapi ikut aja.

32:10Karena gak bisa ngepick di slide.

32:12Jadi kan LCP

32:14gak harus X nih.

32:16Tapi gimana kalau gambar pertama

32:18di karusel yang dianggap sebagai LCP

32:20itu adalah konten dynamic.

32:22Berarti itu bit praktis ya?

32:24Misalnya

32:26kita punya user generated

32:28konten, latest post

32:30dari user kita, kan itu bisa

32:32berubah-ubah tuh. Tapi apasnya

32:34yang dideteksi sebagai LCP itu.

32:36Nah, berarti kan kita LCP-nya bakal

32:38salah terus kan?

32:40Bukan. Yang diambilkan elemennya

32:42bukan kontennya.

32:44Kontennya bebas. Jadi elemen

32:46itu yang diambil sebagai LCP.

32:48Dan kalau

32:50page load itu LCP selalu

32:52berubah-ubah loh. Jadi

32:54when browser

32:56start rendering

32:58the LCP keep changing

33:00when they see largest content

33:02and the last largest

33:04content that's the LCP.

33:06The last largest content that render

33:08that's the LCP.

33:10So

33:12it depends.

33:14It also depends

33:16on the view point.

33:18LCP on desktop may be

33:20different from LCP in mobile.

33:26Berarti bisa diakalin pakai

33:28placeholder asal kalau kita

33:30tahu proporsinya.

33:32Okay, next question.

33:36Arsitektur komunikasi yang sering dilakukan

33:38antara kalian dan software adalah REST.

33:40Normally we use REST.

33:42Can we use

33:44GRTC? Of course.

33:46Keto bisa.

33:48Karena itu adalah

33:50protokol komunikasi

33:52networking. Jadi bisa pakai

33:54REST, bisa pakai GraphQL,

33:56bisa pakai SOAP,

33:58pakai SNL,

34:00pakai SOAP, bisa.

34:02Dan bisa juga pakai GRTC

34:04dan berbagai protokol lain.

34:06Berikutnya,

34:08kalau menggunakan WebAssembly,

34:10if you use WebAssembly

34:12consume by JavaScript,

34:16which is better?

34:18SSC, SSS

34:20or SSSR?

34:22Gak ada masalah sih. Mau pakai apa aja boleh.

34:24Yang dijawabkan

34:26di demo tadi, saya pakai

34:28client side aja.

34:30Ada server-nya. Jadi server side rendering

34:32itu boleh.

34:34Server-nya akan load

34:36database static. Atau pakai SSC juga boleh.

34:38Static side generator.

34:40Jadi webnya static, kemudian

34:42WebAssembly di load, kemudian

34:44webnya jadi

34:46keterlaluan di

34:48sisi client aja.

34:50Mudah-mudahan

34:52menjawab.

34:54Kemudian, pertanyaan

34:56berikutnya.

35:20Saya bukan pengguna.

35:22Tapi ada

35:24pengguna keluarga yang dipanggil

35:26Gerard Sacks.

35:28Sekarang saya berbicara bahasa Jepang.

35:30Tapi mungkin.

35:32Sebenarnya, banyak orang membuat

35:34saya membuat pengguna keluarga

35:36tersebut.

35:52Saya juga

35:54punya hobi ini.

35:56Saya tidak tahu jika kalian sudah melihat talk saya.

35:58Tapi di slide, ada sedikit

36:00desain.

36:02Jadi itu hobi saya.

36:04Saya punya banyak fons.

36:06Saya suka fons.

36:08Dan saya mencoba

36:10menggunakan fons yang bagus

36:12untuk slides saya.

36:14Mungkin saya menghabiskan

36:16banyak waktu menemukan

36:18fons yang bagus.

36:20Yang terlihat lebih seperti desainer.

36:22Bukan pengembara.

36:24Dan itu sama.

36:26Jadi ketika saya memilih fons untuk

36:28environment saya,

36:30untuk visual code misalnya,

36:32saya bisa menunggu 2 hari.

36:34Maksud saya, saya bisa menunggu 2 hari

36:36karena itu tidak benar-benar apa yang saya suka.

36:38Dan saya bisa

36:40menjadi sedikit gila dengan fons.

36:42Ya, ya.

36:44Mungkin karena nama saya.

36:46Oke.

36:48Pertanyaan selanjutnya.

36:50Apa yang terjadi dengan animasi

36:52jika pengguna menggunakan browser

36:54yang tidak mendukung view transition

36:56API?

36:58Nah, ini untungnya cukup mudah

37:00karena semua yang di platform web

37:02harus sebaiknya menggunakan

37:04progressive enhancement.

37:06Apa yang dimaksudkan progressive enhancement?

37:08Kalau memang di support,

37:10fitur yang baru

37:12dan lebih bagus di support,

37:14ya dijalankan.

37:16Kalau enggak, jangan sampai mempengaruhi user.

37:18Nah, kalau di sini, caranya

37:20ya cukup detek saja.

37:22If, tanda semu,

37:24document.startViewTransition.

37:26Jadi kalau metode itu tidak ada,

37:28return. Ya udah.

37:30Se-simple itu.

37:32Jadi bagi user yang browser-nya enggak support,

37:34ya langsung meng-update.dome

37:36seperti biasa.

37:38Sedangkan kalau user yang browser-nya support,

37:40akan mendapat fitur view transition.

37:42Itu yang paling simple.

37:44Strategi yang paling

37:46sederhana.

37:48Tapi gimana kalau misalnya

37:50animasi itu memang bagian yang

37:52penting dari produk kita.

37:54Misalnya kita portfolio designer

37:56apapun yang perlu visual.

37:58Kita bisa pakai strategi yang namanya

38:00dynamic import.

38:02Atau kita sering sebut lazy loading.

38:04Itu udah jadi fitur standar

38:06di JavaScript.

38:08Di React juga bisa.

38:10Jadi kita bisa pakai kondisional.

38:12Misalnya if, document.startViewTransition.

38:14Kalau metode-nya ada,

38:16ya kita pakai metode itu.

38:18Kalau enggak ada,

38:20kita bisa await import.

38:22Misalnya kita await import pakai library custom.

38:24Kalau di React pakai framer motion.

38:26Kalau di vanilla pakai

38:28swap.js dan lain-lain.

38:30Itu gini-gini.

38:32Pertanyaan terakhir kali ya.

38:34Kita udah mau dihujung acara.

38:36Jadi pertanyaan terakhir.

38:38Apakah web server ini hanya untuk C++

38:40dan S9? Nggak. Tadi saya udah contohin ya.

38:42Ada C++.

38:44Ada bisa pakai Rust.

38:46Bisa pakai Go.

38:48Zip.

38:50Ada Dart juga.

38:52Ada Swint bahkan.

38:54Dan Kotlin juga bisa.

38:56Dan akan banyak bahasa-bahasa lain

38:58yang dihormati.

39:00Bukan. Ini untuk C++.

39:02Program.

39:04Oke.

39:06Mungkin kita

39:08belari.

39:10Cukup ga usulnya.

39:12Bagaimana menghubungkan kursi-kursi

39:14kursi-kursi panjang yang di dapet dari belari

39:16atau dibagi untuk mengadakan kursi-kursi web?

39:18Oke. Ini untuk

39:20camp long task

39:22into

39:24smaller task in

39:26JavaScript execution.

39:28So, ya.

39:30Seperti yang contoh yang saya kasih tadi.

39:32Banyak

39:34kasus-kasus di mana kita

39:36mengimplementasi

39:38eksekusi JavaScript

39:40yang panjang.

39:42Jadi untuk di break,

39:44usahakan kalau misalnya

39:46dia, bisa kita pakai yield

39:48juga ya. Yield.

39:50Untuk bisa nge-pause

39:52dan memberikan kesempatan

39:54untuk hire

39:56event untuk dieksekusi.

39:58Dan bisa dilanjutkan lagi dengan

40:00yield. Bisa juga dengan

40:02yang tadi. Pakai

40:04delay atau set timeout.

40:06Jadi, dia masih dieksekusi di beda

40:08thread. Bukan masih beda thread.

40:10Di beda cycle.

40:12Ya, karena begitu kalian tambahin set

40:14timeout, dia akan masuk ke

40:16apa ya, queue.

40:18Event loop. Dekat queue selanjutnya

40:20untuk dieksekusi kebelakangan.

40:22Differ. Kita sudah pernah bahas

40:24tentang event loop di

40:26MauRollinWeb. Silahkan nanti pencungi

40:28di youtube-nya.

40:30Terakhir tadi saya ada ngasih

40:34sebuah link ke ENP.

40:36Nanti bisa diminta ke panitia juga slide

40:38saya. Boleh dipake. Nanti ada

40:40ENP atau di web dev ada untuk

40:42optimize ENP. Disitu lebih

40:44banyak informasi mengenai breakdown

40:46task. Ya, bisa lebih banyak

40:48dibajarin.

40:50Dan yang terakhir, kita jawab

40:52aja.

40:54This one is

40:56I said don't never use

40:58event. Windows.unlock

41:00don't do it because

41:02it will disable the back-forward

41:04cache.

41:06So, how to implement

41:08alert when document is not

41:10safe. Okay, what are

41:12the alternatives?

41:14Ini maksudnya jika ada email

41:20atau misalnya text box

41:22kalian mau save.

41:24Sorry, belum di save, tetapi sudah

41:26di close dan kita harus kasih

41:28notifikasi. Itu adalah

41:30teknik yang lama.

41:32Jangan pakai lagi.

41:34Ya.

41:36Don't use that.

41:40Itu

41:42satu

41:44back-forward cache akan

41:46berhenti berfungsi dan

41:48tidak baik untuk

41:50experience. Dan halur itu

41:52kayak mengunci semua

41:54apa? Mengunci semua

41:58input, interaksi.

42:00Jadi tidak baik untuk experience.

42:02Alternatifnya adalah simpan

42:04apapun yang diketikan

42:06oleh user di local

42:08storage.

42:10Just stop.

42:12Use local storage

42:14or

42:16only local storage, atau pakai

42:18yang database apa? Index

42:20dv. Use

42:22local storage or index dv

42:24store user

42:26draft.

42:28Jadi begitu paste itu

42:30di load pulang, kontennya user

42:32tidak hilang.

42:34It's better that way.

42:36Terus.

42:38Ya. Kita sudah

42:46di penghujung acara.

42:48Terima kasih buat teman-teman semua yang masih

42:50di sini. Dan genhan bracket dulu

42:52kita mau selfie kali ya.

42:54Mengabadikan moment ini.

42:56Jadi kita selfie dulu.

42:58Buat teman-teman mungkin

43:00kalau yang di belakang boleh maju-maju ke depan

43:02dan tekan-tekan kamera.

43:04Ini moment yang luar biasa.

43:06Sekarang kita baru sekali melakukan offline.

43:08Dan mudah-mudahan teman-teman

43:10di sini mendapatkan ilmu

43:12pertama ilmunya.

43:14Apa yang kita sampaikan berfakar buat teman-teman.

43:16Kita ketemu lagi

43:18di masa depan.

43:20Dan terima kasih.

43:22Dan semoga kita bisa diskusi

43:26dengan teman-teman.

43:28Dan kalau nanti masih ada

43:30yang mau dapat pertanyaan, kita masih di sini.

43:32Jadi silahkan datang ke kita

43:34dan bertanya. Dan kita bisa diskusi

43:36dengan lanjut.

43:38Who's the longest hand?

Suka episode ini?

Langganan untuk update episode terbaru setiap Selasa malam!

Langganan Sekarang

Episode Terkait

Ngobrolin DevFest - Ngobrolin WEB Ep3
EP 6

22 Nov 2022

Ngobrolin DevFest - Ngobrolin WEB Ep3

Membahas tentang DevFest 2022 yang akan segera diselenggarakan di seluruh belahan dunia. Membahas tentang apa itu DevFes...

Persiapan DevFest Surabaya - Ngobrolin WEB
EP 107

3 Des 2024

Persiapan DevFest Surabaya - Ngobrolin WEB

Tim Ngobrolin WEB bakal hadir di DevFest Surabaya! Teman-teman yang domisili Surabaya dan sekitarnya boleh yuk ikutan ha...

Ngobrolin WEB edisi Offline Surabaya
EP 110

23 Des 2024

Ngobrolin WEB edisi Offline Surabaya

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

Komentar