Konsep Dependency Injection - Ngobrolin WEB
🗣️🕸️ Selasa malam waktunya #ngobrolinWEB! Malam ini waktunya ngulik fundamental membahas konsep Dependency Injection. Ayo bergabung bersama Ivan dan Eka di sesi malam nanti. 🔔 Yuk mari ramaikan! Dimulai pukul 20:00WIB ya... 🏷 Gunakan kode NGOBROLINWEBDN dan dapatkan DISKON 10% Untuk Pembelian Web Hosting DomaiNesia: Beli Web Hosting DomaiNesia disini: https://my.domainesia.com/ref.php?u=25754 🎁 DISKON 50% Cloud VPS Turbo dengan Kode Promo: NGOBROLINVPSDN Beli Web Hosting DomaiNesia dis Kunjungi https://ngobrol.in untuk catatan, tautan dan informasi topik lainnya.
Ringkasan Episode
Bantu KoreksiEpisode ini membahas konsep Dependency Injection (DI), sebuah design pattern fundamental dalam software development. Para host menjelaskan apa itu Dependency Injection dengan contoh praktis menggunakan JavaScript, membandingkan kode tanpa DI dan dengan DI untuk menunjukkan perbedaan dan manfaatnya. Diskusi mencakup konsep terkait seperti Inversion of Control dan prinsip SOLID (khususnya Dependency Inversion). Contoh yang digunakan adalah analogi mobil dan mesin (engine), di mana dengan DI, kelas Car tidak perlu membuat instance Engine sendiri di constructor, melainkan menerima engine sebagai parameter yang di-inject dari luar. Episode ini juga disponsori oleh DomaiNesia dengan promo code untuk cloud VPS.
Poin-poin Utama
- •Dependency Injection adalah teknik di mana dependencies di-inject dari luar, bukan dibuat di dalam class/function
- •Tanpa DI: constructor membuat instance dependency sendiri (new Engine()), dengan DI: engine diterima sebagai parameter
- •DI merupakan implementasi dari prinsip Inversion of Control dan Dependency Inversion (bagian dari SOLID)
- •Manfaat DI: kode lebih fleksibel, mudah di-test (bisa inject mock), dan loosely coupled
- •Artikel referensi dari Smashing Magazine (2020) menjelaskan DI dalam perspektif web development
- •Konsep DI relevan untuk interview dan penting dipahami untuk arsitektur aplikasi yang baik
- •Kolaborasi dengan DomaiNesia: promo code NGOBROLINVPSDN untuk diskon 50% cloud VPS
Transkrip Bantu Koreksi
0:00[Musik]
0:07Dapatkan hanya di Domestika
0:09[Musik]
0:15[Music]
0:18[Musik]
0:23Lagi-lagi nih
0:24Sebab lagu, sebab lagu
0:27[Musik]
0:30Orang pun datang dan akan kembali
0:33Iya, itu ya
0:35Apa ayo
0:36Bukan
0:37Tamiya itu ya bukan
0:39Bukan
0:41Tadinya gue kira itu Dasion Kuro bukan
0:44Itu Dragon Ball
0:45Bukan Dasion Kuro
0:46Itu jadul sekali
0:49Dragon Ball
0:51Yang bikin Tamiya meninggal ya, baru meninggal ya
0:55Yang Kuro jadi naik lagi ya
0:58Masa?
0:59Tapi ada komunitasnya loh
1:02Ada
1:03Kan kalau Tamiya itu kan ada anime yang baru kan
1:07Kalau Yung Kuro kan jamannya kita
1:09Jamannya
1:11Jamannya yang lebih muda ada lagi kan
1:13Ada anime yang baru lagi kan
1:16Harusnya ada ya, itu kan Evergreen
1:19Bukan, ada Tamiya juga
1:21Bukan, Tamiya juga
1:24Tapi beda film, eh beda anime
1:27Halo-halo semuanya
1:29Kita jadi tebak-tebakan umur ya
1:32Gimana kabarnya teman-teman di Youtube sama di LinkedIn
1:38Dengan sehat malam hari ini
1:40Sehat-sehatnya semua
1:42Aman-aman ya
1:43Timnass lagi main loh, yang under 20
1:45Ah Timnass lagi main, oh iya benar
1:47Kan benar kan
1:49Selasa malam, waktunya Timnass main
1:53Pertanikan internasional jatuhannya Selasa Rabu, gimana lagi
1:57Iya, sering bertabrakan
2:00Semoga menang
2:02Kita sering yoga sih, setahun paling cuma berapa kali
2:05Iya, ada alasannya loh itu kenapa Selasa Rabu
2:09Karena mereka sabtu minggu main
2:12Ya, weekend kan tiga
2:14Iya
2:15Ah gelap banget, apanya gelap?
2:18Masa depan
2:20Siapa yang gelap?
2:21Masa depan
2:23Indonesia, Indonesia gelap
2:25Maset ya Adi Wirawan, halo-halo
2:29Ivan pake baju gelap, Eka pake baju gelap, saya pake baju terang
2:33Indonesia
2:35Bagus juga pake baju nih
2:37Bisa ke hidden sama
2:39Nggak kelihatan ya
2:41Iya, kayak nggak pake baju gitu
2:43Tinggal
2:44Apa aja yang gelap, boleh info dong
2:47Kalau teman-teman yang nonton ada kejanggalan
2:51Baik itu sound ataupun visual, boleh info ya
2:55Gelapnya apa nih?
2:56Oke maksudnya backlight deh
2:58Nah seriusnya backlight, soalnya lampunya kan di belakang loh
3:01Lampunya di belakang jadi apa
3:03Nah dari depan tuh kayak
3:05Kurang terang gitu
3:07Masa sih, emang sengaja itu efek, mau diterangin gitu
3:11Nah ini terang
3:13Mendingan gini
3:15Ini mah over contrast, over brightness
3:18Makanya mendingan tadi kan
3:20Nggak tahu deh yang gue butuh visual
3:22Gini ya
3:23Sense visualnya nggak bagus
3:25Ini satu-satunya
3:26Mau di info ya, Mas Setia dia atau teman-teman yang lain
3:29Kalau ada kejanggalan dengan visual dan juga audio kita
3:35Kemarin itu sempat ada yang komen
3:38Kasih masukan suara kita itu
3:41Ya audio nya itu nggak apa ya, nggak standar levelnya
3:47Jadi kadang ada yang terlalu besar, ada yang kecil
3:51Iya karena kan kita live
3:54Karena kita kan sunyai keputian ya
3:55Enggak, iya karena live kan
3:56Distimulate nggak ada ya
3:58Nggak ada kayaknya
3:59Ada, ada, distimulate itu ada
4:01Cuma saya tuh kalau misalnya diajarin
4:05Di setting nya itu, di input volume nya itu dibikin 75%
4:09Distimulate juga 75%
4:12Tapi kan persen masing-masing tergantung sama
4:17Masing-masing antar satu speaker sama speaker lain
4:19Tergantung kita ngomongnya keras atau nggak
4:21Dan mic nya juga
4:22Ya input outputnya gimana
4:23Sama, beda-beda
4:25Mic nya seberapa senti dari ya
4:27Nah itu
4:28Ya iya kan, nah intinya adalah
4:30Harusnya stream nya ada setting buat normalize
4:32Output pas udah di mix kan
4:35Tapi kan nggak di mix karena live
4:39Ya kan tetep aja audio output nya satu
4:41Maksudnya dibeli pelayarnya, stream yard nya kan
4:44Iya sih, iya sih
4:45Harus dari stream yard nya ya
4:47Kalau normal nya kalau rekaman
4:49Itu kita normalize di audio editor itu kan bisa ya
4:53Ya hasil audio nya bisa
4:55Di hubung ini live jadi kita nggak bisa kontrol
4:59Di stream yard kan berarti ada suatu entah apa
5:02Funksionalitas yang menggabungin input dari kita semua ini kan
5:06Iya
5:07Nah itu
5:08Kalau podcastnya Om Dedy yang di
5:12Close the door itu gimana caranya
5:14Apa karena offline mereka masuk ke
5:16Nah itu kan langsung, onsite
5:18Itu kan live juga mereka
5:20Oh kalau onsite mah enak
5:22Satu mixer lah dicolok mixer aja semua
5:25Rekaman ya?
5:26Enggak, nggak online
5:28Itu rekaman satu
5:29Kedua di tempat yang sama
5:31Nggak, bukan online seperti ini
5:32Di tempat yang sama mereka mic nya
5:34Dicolok atau dikoneksikan ke satu mixer
5:38Yang ketiga
5:40Barang nya itu mahal semua
5:43Beda, barang nya itu kualitas semua
5:47Khusus professional podcaster
5:50Iya professional
5:51Tapi nggak sih yang paling deciding sih
5:53Apa semua orangnya di satu tempat
5:55Itu yang
5:56Iya itu yang paling berpengaruh
5:58Mixer yang kecil pun kayak bearinger
6:01Yang ala-ala itu ya masih bisa lah
6:03Intinya di normalize di satu tempat
6:05Baru di stream
6:07Betul
6:08Kalau rekaman aja itu masih bisa di akalin
6:11Tapi kalau udah live udah
6:13Kita menyerahkan kepada yang punya platform
6:16Dan hal ini stream ya
6:18Nah ngomongin platform
6:21Ya kalau teman-teman mau bikin platform
6:23Mau bikin service
6:25Teman-teman bisa cobain service nya Domenecia
6:31Pengen nunjuk ke kaos nya
6:33Mas Risa Domenecia
6:35Domenecia
6:37Ya jadi kita masih dapat kesempatan
6:43Bekerja sama kolaborasi dengan Domenecia
6:46Dan Domenecia memberikan diskon 50%
6:49Untuk pembelian baru untuk cloud CPS Turbo
6:53Ya
6:55Itu berarti VM ya
6:57Virtual Machine
6:59Server lah ya
7:01Server virtual
7:03VPS
7:05Jadi kalau ada project yang ada docker nya gitu
7:07Bisa langsung ditaro disitu ya
7:09Bisa deploy disitu
7:11Kan yang paling murah
7:13Setelah di promo jadi 80 ribu itu 1 giga
7:16Nah itu project itu source code
7:19Berapa project bisa dimuatin
7:21Lumayan ya
7:23Kalau mau self hosting
7:255 US Dollar ya
7:275 US Dollar
7:29Lumayan
7:31Lumayan untuk apa
7:33Yang kena tarif ya
7:35Perang harga kan ini ya
7:37Ada politik-politiknya Amerika Serikat kan
7:39Apakah berpengaruh kepada
7:43Penyedia jasa cloud ya
7:45Penyedia jasa komputasi awan
7:47Apa enggak, enggak saya enggak tahu ya
7:49Kayaknya beberapa kali saya sempat dapet email
7:51Ada perubahan harga, perubahan harga
7:54Tapi enggak tahu service mana yang
7:56Streamyard ini yang perubahan harganya
7:58Extreme
8:00Nah ini parah sih
8:02Streamyard parah
8:04Jadi mungkin bisa jadi solusi juga
8:06Buat teman-teman yang mau cari
8:08Apa
8:10Service hosting atau
8:12VPS
8:14Makin lama, makin hal-hal
8:16Necessity, makin mahal
8:18Iya
8:20Kalau itu inflasi
8:22Contohnya Google
8:24Google Storage
8:26Google One itu naik
8:28Harganya
8:30Beras juga naik
8:32Harganya
8:34Iya
8:36Itu yang saya berpikirkan
8:38Kemarin itu sempat ada kan
8:40Google
8:42Kalau pakai account student
8:44Atau universitas kampus
8:46Itu kan bisa dapat
8:48Gratis
8:50Gemini
8:52Sama dapat gratis storage kan
8:54Selama
8:56Tahun setengah atau berapa gitu ya
8:58Pokoknya selama jangka waktu tertentu
9:00Nah yang saya penasaran
9:02Adalah kalau saya
9:04Pakai, maksudnya saya beli
9:06Dan dapat gratis itu satu setengah
9:08Tahun
9:10Abis itu setelah
9:12Storage-nya saya isi dengan
9:14Foto-foto dengan
9:16File dan lain-lain di backup disana
9:18Terus abis itu gratisnya
9:20Selesai
9:22Terus mau dipindahin ke mana itu
9:24Apa
9:26File-file itu
9:28Berarti harus bayar dong, maksa kita untuk bayar ya
9:30Menjebak
9:32Menjebak kita untuk bayar
9:34Kalau sudah habis maksudnya storage-nya
9:36Iya, eh bukan
9:38Mungkin ada grace periodnya
9:40Kan kita
9:42Tidak ada nih, satu setengah tahun gratis
9:44Terus abis itu kan kita masukin
9:46File-nya kan, terus abis itu
9:48Gratisnya hilang kan
9:50Storage-nya kan mengecil
9:52Iya
9:54Sebenarnya itunya enggak ini
9:56File-nya enggak hilang
9:58Cuma enggak bisa nambah
10:00Oh enggak bisa nambah
10:02Iya
10:04Tapi kalau it only, berarti bisa nambah ya
10:06Enak juga
10:10Yang enggak terlalu kejam lah ya
10:12Yang enggak terlalu kejam lah ya
10:14Ya mungkin grace period lah
10:16Disimpenin berapa tahun
10:18Berapa bulan, berapa tahun
10:20Kalau bisa dihapus
10:22Tapi sekarang ya, kalau polisi sekarang
10:26Jangan terlalu dependensi
10:28Sama Google
10:30Sama Apple
10:32Nah
10:34Ngomong-ngomong soal dependensi
10:36Hari ini kita topiknya
10:38Dependensi injection
10:40Ini dulu
10:42Orang-orang pada nungguin
10:46Pake kan, bingung kan
10:48Jadi kalau teman-teman tertarik ya
10:50Mau cobain VPS-nya Dominicia
10:52Saya dapat, kemarin dapat akses
10:54Bayar sendiri lagi
10:56Padahal mau dibayarin
10:58Mau dibayarin
11:00Malah saya bayar sendiri loh
11:02Kenapa enggak tanya dulu
11:06Jadi bisa pake promo code
11:08Ngobrolin VPSDN
11:10Ngobrolin Virtual Private Server
11:12Dominicia ya
11:14Biar
11:16Dominicia
11:18Pihak Dominicia tahu bahwa
11:20Teman-teman nyobain gara-gara dengerin
11:22Ngobrolin web ya
11:24Emang dapat discount juga
11:26Buat kerjasamanya
11:30Oke, ngomongin dependensi
11:32Ketergantungan
11:34Baru-baru malam ini
11:36Untuk web hosting
11:38Web hosting ada
11:40Tapi sebelumnya
11:42Edisi sebelumnya
11:44Masih berapa ya
11:46Ngobrolin DN ya
11:48Kalau nggak salah ya
11:50Di episode berapa ya
11:52Yang kita mulai berubah
11:54Ngobrolin web DN
11:56Ngobrolin web DN
11:58Nggak tahu, cobain aja
12:00Promo code-nya
12:04Ngobrolin web DN
12:06Silahkan dicoba, Mas Fiko
12:10Untuk share hosting ya
12:12Share hostingnya juga udah modern ya
12:14Ternyata ya, bisa pake binary aja
12:16Dimasukin udah bisa jalan
12:18Jadi bisa segala
12:20Platform atau bahasa
12:22Oke
12:24Malam hari ini kita
12:26Akan diskusi tentang
12:28Salah satu
12:30Topik yang
12:32Basis ya
12:34Ini dulu siapa sih yang nyaranin
12:36Di GitHub kita?
12:38Saya
12:40Oh bagus dia ada yang ngerti satu orang
12:42Gua nggak ngerti
12:44Baru kelar kerja
12:46Tiba-tiba
12:48Didakan langsung tanya Jemenay
12:50Apa itu dependensi injection
12:52Nggak ngerti sih sebenarnya
12:54Jadi waktu cerita latar belakangnya itu
12:56Waktu lagi
12:58Sesi
13:00Live coding
13:02Di Senen Malem
13:04Terus lagi bikin unit testing
13:06Tiba-tiba
13:08Saya masukin, misalkan vats-nya kan
13:10Saya mau
13:12Testing tapi
13:14Mau di-mock, tapi mok-nya manual
13:16Mokingnya manual, nggak pake library
13:18Akhirnya
13:20Vats-nya itu saya jadikan
13:22Parameter di satu fungsi
13:24Oh
13:26Itu vats falsy
13:28Bukan
13:30Ya, nanti dicontohin deh
13:32Jadi dimasukin ke
13:34Parameter, tujuannya adalah
13:36Ketika di script testing
13:38Itu
13:40Saya bisa masukin mock vats
13:42Saya bikin sendiri lah tuh mock vats-nya
13:44Kalau di real code-nya
13:46Saya bisa pake vats yang biasa
13:48Nah itu adalah contoh
13:50Dependensi injection
13:52Setelah dipikir-pikir
13:54Ini dependensi injection nggak ya
13:56Akhirnya cari-cari, oh ternyata itu
13:58Jadi dari situ
14:00Sebenarnya saya yakin
14:02Teman-teman juga mungkin
14:04Pernah menggunakan
14:06Trick seperti ini, tapi
14:08Nggak tahu istilahnya aja
14:10Begitu
14:12Jadi kita mulai dari
14:14Ini ya, dari
14:16Definisi umumnya ya
14:18Definisi umum
14:20Loh, mana?
14:22Sharescan dulu
14:24Nah ini baru gelap ya
14:26Nah
14:30Sudah kelihatan?
14:32Sudah
14:34Oke, jadi
14:36Dependensi injection itu adalah
14:38Teknik pemograman
14:40Yang
14:42Bagaimana caranya
14:44Supaya sebuah objek
14:46Atau sebuah fungsi
14:48Yang dibutuhkan, yang digunakan
14:50Di dalam fungsi atau di objek
14:52Tersebut
14:54Diinjek, dimasukin
14:56Disertakan
14:58Ke dalam fungsi atau
15:00Ke klust tersebut
15:02Ini kayaknya masih
15:04Masih ngawang ya
15:06Tadi, bentar
15:08Aim to separate
15:10Atas tujuannya
15:12Seperate the concern
15:14Seperation of concern
15:16Seperation of concern
15:18Seperation of concern
15:20Pada saat
15:22Constructing objek ini
15:24Membuat objek dan menggunakan
15:26Dependensi injection
15:28Kayaknya cuma untuk OOP deh
15:30Enggak sih
15:32Nah tadi gue tanya Jimenai itu
15:34Ternyata
15:36Itu kayak terpisah dari OOP
15:38Sama functional
15:40Justru
15:42Kayaknya kaitannya lebih kuat ke functional
15:44Karena ada higher order function
15:46Ini lebih kayak mirip ya
15:48Funksional gak sih
15:50Itu tadi yang misalnya testing
15:52Kan itu function yang emang dipisah-pisah
15:54Buat mock testing
15:56Ada function nya sendiri, itu dipas sebagai
15:58Argumen
16:00Iya functional, karena
16:02Kayak higher order function lah
16:04Kurang lebih kan, mirip-mirip ya
16:06Oke, kita run through dulu aja ya
16:08Kalau di static type language
16:10Itu kita bisa
16:12Pakai interface, jadi kita
16:14Definisikan
16:16Parameternya itu
16:18Ada interface apa
16:20Pasti
16:22Pernah dong
16:24Parameter ada interfacenya
16:26Pernah dong, kita definisikan type nya adalah
16:28Interface ini
16:30Ini umum kan ya
16:32Lanjut lagi ya
16:36Kelebihannya
16:38Keuntungannya
16:40Bisa tadi ya
16:42Decrease coupling
16:44Interaction of concern
16:46Antara kelas dengan dependency
16:48Terus juga
16:50Aplikasinya bisa lebih
16:52Reusable, testable
16:54Dan maintainable
16:56Flexibility
16:58Sama reduce boilerplate code
17:00Dan terakhir
17:02Injection allow concurrent development
17:04Kalau ini saya gak tau ya, cuma ini
17:06Contoh-contoh aja
17:08Jadi kalau mau lihat diagramnya
17:10Mas Riza
17:12Diagram yang pertama
17:14Bisa jelasin banget
17:16Coba di zoom
17:20Gimana zoomnya
17:22Orang zoom ya
17:24Nah
17:26Jadi kalau dari diagram ini
17:28Ada service
17:30Ada enum
17:32Enum lah ya
17:34Itu scope nya
17:36Enumerator untuk type datanya
17:40Ada service
17:42Terus turun
17:44Ada container provider
17:46Turun dikit
17:48Ini java banget ya
17:56Terlalu rumit ya
17:58Ada contoh kodenya sebenernya
18:02Di bawah
18:10Nih, tapi ini java ya
18:12Ini OOP ya
18:14Jadi ini tanpa dependency injection
18:16Kita bikin
18:18Sebuah client
18:20Ada service
18:22Sebagai
18:24Service sebagai apa ya
18:26Variable lah gitu ya
18:28Itu variable nya baru dimunculin
18:30Kalau lagi initialize in the constructor
18:32Jadi kalau misalnya kita manggil new client gitu
18:34Maksudnya terus dalam kurung
18:36Entah gimana lah di passing si service nya
18:38Dari yang memanggil client
18:40Dari yang meng-instantiate
18:42Suatu client object itu berarti ya
18:44Betul
18:46Dengan injection
18:48Dimasukin sebagai
18:50Constructor sebagai parameter
18:52Atau argument
18:54Sehingga kita tidak perlu
18:56Memanggil new service
18:58Service nya bisa lain-lain kan
19:00Tergantung yang mana
19:02Bukan, service nya bisa lain-lain, bisa di-inject
19:04Diisi dengan apa kan
19:06Yang manggil new client itu
19:08Berarti yang menentukan
19:10Service nya apa kan
19:12Kayak contoh mock fetch tadi
19:14Kan itu berarti fetch ala-ala
19:16Bukan fetch beneran ya udah si
19:18Si yang menjalankan terima aja
19:20Udah apa yang dikasih
19:22Jadi yang manggil
19:24Kalau saya mau kasih contoh
19:26Kayaknya bisa juga gini
19:28Jadi contohnya kita bikin
19:30API
19:32Sorry kita bikin
19:34Code untuk bisa
19:36Nge-update data kita
19:38Di Git
19:40Nah, Git
19:42Service ya, Git service itu
19:44Ada dua, bisa GitLab
19:46Atau bisa GitHub
19:48Kita cuma satu
19:50Client nya satu
19:52Tetapi berdasarkan setting
19:54Yang dipakai dari UI kita
19:56Oke, ternyata kalau repo A
19:58Dia hostingnya di GitLab
20:00Repo B di
20:02GitHub, namun secara
20:04Client wrapper nya kita
20:06Ya cuma satu, satu aja yang kita panggil
20:08Service nya
20:10Bisa beda, bisa berganti-ganti
20:12Sesuai sama yang kita
20:14Setting, konfigur
20:16Dan bisa dimesarkan injection
20:18Jadi bisa konfigurasinya, oh
20:20Kita lagi di repo B, ya berarti pakai
20:22Service nya dari si GitHub
20:24Nah supaya
20:26Bisa si
20:28Client kita tadi, class Client
20:30Kita, mengerti
20:32Dan bisa mengambil
20:34Menanggil function yang sama
20:36Maka, class service kita
20:38Itu harus implement
20:40Interface
20:42Yang sama
20:44Ya, ya betul
20:46Jadi interface ya
20:48Interface itu kan cuma kayak definition function
20:50Misalnya fetch, push
20:52Pull
20:54Kayak blueprint ya
20:58Kayak property nya atau method nya
21:00Atau apalah yang bisa dipanggilkan
21:02Di dalamnya
21:04Jadi kalau misalnya Mas Riza balik ke
21:06Kode tadi, jadi si
21:08Client itu
21:10Kan dia oke di definition oleh
21:12Service GitHub
21:14Tetapi kan this service ini kan
21:16Satu, di dalam body nya dia kan
21:18This service fetch, this service pull
21:20Cuma pull nya
21:22Mechanism nya harus pakai API yang mana
21:24Ya, disembunyikan
21:26Itu
21:28Itu yang tentukan
21:30Di luar client class itu kan
21:32Si class client
21:34Tau nya, gue hanya mau panggil pull
21:36Nanti, si service ini lah
21:38Yang menentukan
21:40Apa namanya, logic
21:42Ataupun
21:44API endpoint yang mana, itu si service
21:46Yang urusannya
21:48Wait, kalau gitu
21:50Bentar, masih contoh yang mirip
21:52Ini, paralelnya, coba buka deh
21:54Berarti, Vercell AI SDK
21:56Itu termasuk
21:58Pola dependency injection
22:00Atau bukan
22:02Jadi intinya
22:04Kalau TLDR nya
22:06Ini satu SDK
22:08Berbasis TypeScript atau Java Strip
22:10Untuk pakai berbagai LLM
22:12Provider dan model, nah itu liat contohnya
22:14Jadi, apa package nya namanya
22:16AI, Generate Text
22:18Nah, Generate Text itu kan
22:20Ya kayak contoh Gitrapple
22:22Event tadi, nah Generate Text itu kan
22:24Bisa pakai Gemini, Gemini
22:26Bisa pakai Flash 2.5 Pro
22:28Bisa
22:30Bisa pakai Google
22:32Maksudnya, Google ada Gemini Flash, Gemini Pro
22:34XAI
22:36Ada macem-macem, nah itu kan
22:38Wait, Generate Text
22:40Ini kan pure functional ya, ini functional banget
22:42Karena emang Java Strip SDK
22:44Tapi kan, ini yang dipassing
22:46Yang dimasukin
22:48Model titik 2, XAI
22:50Provider-nya dalam kurung
22:52Drop 3 Beta
22:54Coba klik yang
22:56Bukan OpenAI
22:58Tab OpenAI deh
23:00Nah, pakai Generate Text
23:02Oh iya, iya benar-benar
23:04Ini ya
23:06Bukan bagian parameter ini ya
23:08Tapi si Generate Text itu
23:10Ini nya
23:12Di dalam
23:14Perutnya si Generate Text
23:16Dia cuma manggil model, panggil apa
23:18Itu, panggil function yang sama
23:20Pasti panggil function yang sama
23:22Iya
23:46Cuma ini ya udah
23:48Bikin semacam raper
23:50Sebentar
23:52Berarti, bedanya
23:54Dependency Injection
23:56Sama adapter pattern
23:58Apa? Ini kayaknya adapter
24:00Nggak tau ya, ini asal nebak aja ya
24:02Sebetulnya, gue belum terlalu paham
24:06Dependency Injection apa
24:08Cuma kalau pakai
24:10Contohnya event tadi
24:12Ya ini harusnya Dependency Injection
24:14Kalau contoh event tadi
24:16Emang betul Dependency Injection
24:18Kalau gomopolitically correct
24:22Ya adapter itu bagian dari
24:24Dependency Injection
24:26Bisa jadi
24:28Karena Dependency Injection itu kan
24:30Paradigm, bukan
24:32Teknik
24:34Kalau adapter berarti
24:36Piece, apa?
24:38Kayak pieces-nya ya
24:40Kalau adapter
24:42Itu pattern ya
24:44Polanya ya
24:46Nah kita liat yang ini
24:48Kayaknya lebih
24:50Lebih jelas dari
24:52Smashing magazine
24:54Kalau smashing ya pasti diterangin
24:56Dalam perspektif web dev
24:58Ini tuh waktu nulis
25:00Sekarang udah berapa ya?
25:02Tahun berapa? 2020
25:045 tahun yang lalu
25:065 tahun ya
25:08Bukannya dia baru nulis 28 menit
25:10Yang lalu
25:12Ya ya
25:1428 menit read
25:16Konsep Dependency Injection
25:24Intinya
25:26Sangat simple menurut anak 18 tahun
25:2818 tahun ya ampun
25:30Theoretical concept of inversion of control
25:38Dependency inversion of the solid principle
25:40Dan lain-lain ya, banyak digunakan
25:42Di tempat itu, oke
25:44Ya
25:46Dia bilang lagi simple, lagi simple ya
25:48Oke, kita contohnya aja
25:50Ini JavaScript ya
25:52Ini JavaScript
25:54Tanpa Dependency Injection
25:56Mirip kayak tadi kan sebenernya ya
25:58Jadi kita punya
26:00Something gitu di luar sana
26:02Namanya engine katakanlah, terus kita punya
26:04Mobil, kelas mobil
26:06Suatu mobil bisa menerima
26:08Macam-macam jenis mesin kan
26:10Tergantung yang bikin kita mau membuat mobil
26:12Yang create new car object
26:14Nah, kalau ya sama sih
26:18Contohnya sama ini ya, kurang lebih ya
26:20Jadi ketika yang tanpa
26:22Dependency Injection, konstruktornya itu
26:24Yang memanggil, yang menginisiasi
26:26Engine, initiate new engine gitu ya
26:28Sedangkan
26:30Dengan Dependency Injection
26:32Karena engine nya dimasukin sebagai parameter
26:34Dia gak perlu new-new lagi
26:36Langsung disini aja, didefinisikan bahwa
26:38Dia sekarang pakai engine ini
26:40Sesuai sama ketika kita menggunakan
26:42Atau ketika kita
26:44Menginisialisasi si car ini
26:46Mau pakai engine yang mana, ya kan
26:48Oh, berarti bentar
26:50Syarat disebut Dependency Injection
26:52Adalah yang dimasukin, yang dipassing
26:54Sebagai argument
26:56Sudah harus berupa object ya
26:58Gak boleh berupa kelas yang
27:00Diinstantiate lagi, gak boleh bikinnya
27:02Di dalam sini kan
27:04Harus jadi
27:06Mereka langsung bisa dipakai
27:08Atau dipanggil
27:10Harus terima sebagai machine, bukan
27:12Machine itu seperti apa, terus bikin lagi
27:14Machine baru, itu kan kalau contoh atas
27:16Kayak gitu tuh, cuma dikasih tau
27:18Machine itu seperti apa ini kan
27:20Nah, terus dia bikin sendiri
27:22Nah, itu contoh yang bukan
27:24Dependency Injection, tapi kalau contoh yang
27:26Kedua, yang dibawah, udah beneran
27:28Machine nya jadi, langsung
27:30Dipakai
27:32Machine object
27:34Ya, begitulah
27:38Nah, bedanya apa
27:40Kalau
27:42Yang pertama adalah
27:44Kita inisiasi
27:46Engine di dalam
27:48Object car
27:50Sedangkan yang kedua
27:52Engine nya kita passing
27:54Sebagai parameter
27:56Sudah berupa
27:58Object engine
28:00Ya, sudah berupa
28:02Object engine
28:04Dependency Injection, ada istilah
28:06Singleton dan Factory
28:08Wah, saya baru tahu juga itu
28:10Factory kayak functional programming ya jadinya
28:14Factory
28:16Enggak ya, OOP ya
28:18Ada di rektoring guru kan
28:20Factory
28:22Factory method
28:24Factory method, betul-betul
28:26Betul-betul
28:28Yang mana ya
28:32Creational ya kalau salah ya, Factory method
28:34Bener kan
28:36Ini ya maksudnya ya
28:38Jadi pakai satu
28:42Factory
28:44Method, sorry, satu Factory class
28:46Untuk menginisiasi
28:48Bermacam-macam
28:50Child class
28:52Nanti hasil child class nya itu
28:54Bisa dipakai
28:56Di servisnya
28:58Di servis ya
29:00Pake interface juga mirip-mirip ya
29:02Truck, ship itu
29:04Masalahnya di dunia Javascript
29:08Maksudnya dunia yang lebih deket sama Javascript
29:10Ada juga nih Factory pattern
29:12Coba buka link yang di private
29:14Itu emang
29:16Apa, jadinya
29:18Kalau di OOP kan
29:20Kayak bikin object baru
29:22Dengan suatu karakteristik
29:24Itu kan harus pakai new kan
29:26New something lah
29:28Nah kalau ini Factory function, ini create user
29:30Jadi bukan
29:32Manggil new user
29:34Dalam kurung blablabla, tapi create user
29:36Pertama kali kita mau ini nih di artikelnya
29:40Can see dots
29:42Tapi ya mungkin ini juga kayak apa ya
29:44Kayak flexi
29:46Kayak fungsi biasa sebenarnya
29:48Maksudnya, pattern Factory itu
29:50Bisa diterjemahkan
29:52Kayak di dunia yang
29:54Kayak di refactoring Guru tadi
29:56Yang kayak gitu tadi lah
29:58OOP banget
30:00Kalau ini kan
30:02Di dunia Javascript diterjemahkan
30:04Dengan mindset yang dengan perspektif
30:06Atau workflow yang functional
30:08Nah itu kan function kan user one
30:10Sama dengan create user
30:12Tapi kalau misalnya mau pakai clock kan
30:14User one sama dengan new
30:16User dalam kurung
30:18Objectnya ini
30:20Ya kalau singleton benar
30:22Singleton itu objeknya dibuat sekali
30:24Terus dipakai rame-rame
30:26Gak pakai new, new nya cuma sekali ya
30:28Kalau objek, kalau Factory itu objek
30:30Dibuat, dibuat baru terus ya
30:32Ya betul sih, ini masih memenuhi
30:34Apa kriteria factory
30:36Yang objeknya bikin baru
30:38Teruskan itu
30:40Ya lanjut
30:42Real world example
30:44Nah ini ada contoh
30:46Oh itu cuma penjelasan kode
30:48Contoh kode atas
30:50Intinya udah ngerti kan ya
30:52Temen-temen ya, bedanya itu
30:54Yang satu diinjek atau engga
30:56Tadi kalian yang pertanya mas Riza
30:58Apa bedanya dependency injection
31:00Dengan adapter pattern
31:02Yes
31:04Saya nanya
31:06Sama
31:08Abang chat GPT
31:10Oh chat GPT
31:12Mau di share
31:14Boleh
31:16Biar ngerti sama-sama kita
31:18Share screen
31:20Coba
31:22Cara share
31:24Sambil share screen kita
31:26Cek score dulu
31:28Masih 0-0
31:30Oke
31:32Saya nanya dependency injection
31:34Sama
31:36Adapter pattern
31:38Cuma dia kasih
31:40Masih kurang gede ya
31:42Orang-orang
31:44Dia jawabnya dalam
31:46Python, jadi saya minta
31:48Ke javascript biar gampang di ngerti
31:50Oke, kalo
31:52Dependency injection itu kan contohnya gini
31:54Kita ada classnya
31:56Kita ada notifier
31:58Dan
32:00Ada
32:02Bisa pakai email service
32:04Tapi juga bisa pakai
32:06SMS
32:08Nanti kalo misalnya, tapi
32:10Ininya satu kan
32:12Notifier
32:14Dan di dalamnya ada email service
32:16Suatu saat kita mau
32:18SMS service
32:20Atau mungkin mau push service ke
32:22Kafka
32:24Contohnya
32:26Tujuannya
32:28Supaya
32:30Ya masing-masing service ini punya
32:32Jadi urusannya
32:34Urusan SMTP ya ke email service
32:36SMS ya beda lagi gatewaynya
32:38Mau push service ke Kafka yang lain
32:40Ya beda lagi gatewaynya
32:42Apanya
32:44Pola pikirnya, jadi itulah maksudnya
32:46Dicouple itu, tujuannya
32:48Ini dependency injection ya
32:50Iya
32:52Itu
32:54Rapper sebenarnya
32:56Memrap sebuah income incompatible
32:58Object untuk supaya
33:00Jadi compatible
33:02Jadi contohnya ada legacy class
33:04Old printer
33:06Terus kita ada printer adapter
33:08Kayak polyfill dong ya
33:10Nah
33:12Gak juga, beda polyfill
33:14Polifill itu kan
33:16Kayak if
33:18Kondisional, kalo itu gak ada
33:20Dibikinin
33:22Iya, kan biar compatible
33:24Bisa jadi ya
33:26Yang kayak misalkan
33:28Nanti mau ke Shanghai kan
33:30Udah bawa colokan yang mana nih
33:32Yang kepala 3 apa kepala 2
33:34Udah ada adapter kan, ujung-ujungnya listrik kan
33:36Oh iya iya iya
33:38Bener gak, itu adapter kan
33:40Bener bener, iya sih itu adapter
33:42Nah print receive
33:44Kita ada adapted printer
33:46Jadi dari class ini
33:48Dia
33:50Menginisiasi
33:52Old printer tadi
33:54Dibungkus yang tadi yang tidak compatible
33:56Dibiarin aja
33:58Legacy ya
34:00Tapi kita bisa panggil
34:02Di tempat kita yang baru
34:04Nah
34:06Anggap legacy ini adalah
34:08Bukan
34:10Kita punya source code-nya lagi
34:12Kita gak punya source code-nya
34:14Mungkin dia window.apa gitu
34:16Yang sudah dari old code
34:18Gak punya source-nya lagi
34:20Dia hanya tinggal bisa manggil hasilnya
34:22Tapi kita mau panggil di tempat kita yang baru
34:24Kita bungkus aja
34:30Ini sedikit sama
34:32Cuma beda tujuan
34:34Beda tujuan ya
34:36Ini summary-nya
34:38Fokusnya
34:40Siapa yang create dependency-nya
34:42Kalau si adapter
34:44Gimana caranya
34:46Bikin compatible gitu ya
34:48Coba tanyain versi AISDK deh
34:50Maksudnya kasih contoh code-nya
34:52Sama jelasin singkat aja
34:54Coba
34:56Mana sih tadi contoh
34:58Contohnya di private
35:00Nah
35:02Udah itu aja
35:04Itu halaman pertama kok
35:06Nah copy aja
35:08Apakah ini termasuk
35:10Dependency injection ya
35:12Is this dependency injection
35:16Or adapter pattern
35:18Or not
35:20Perlu dijelasin deh
35:24Kasih satu lagi deh
35:26Kasih satu lagi modelnya yang lain
35:28Modelnya yang OpenAI
35:30Atau Anthropic
35:32Jadi ada dua ini
35:34Apa ini? Expert?
35:54Gak dijelasin
35:56Ada itunya
35:58rules-nya
36:00Gak dijelasin dia bisa ngerti sendiri ya
36:02Kenapa kita menganggap itu
36:04Dependency injection
36:06Terus
36:08Ya dia ngerti
36:10Ternyata
36:12Mantap
36:14Pinter ya
36:16Ini pro atau gratis?
36:18Gratis
36:20Pro gratis
36:22Ada promptingnya ya
36:24Berarti sistem instruksinya
36:26Yang
36:28Ya saya pasang ini
36:30Sistem instruksinya kan
36:32Pasang MSC GPT
36:34Bisa yang gratis emang
36:36Bisa
36:38Cuma rajin-rajinnya
36:40Sama kok
36:42Gemini sama
36:44Gemini yang run n ya
36:46Gemini.google.com sama chat GPT
36:48Itu fungsinya mirip-mirip
36:50To adapter kan
36:52Coba liat katas-katas
36:54Katas
36:56The code uses dependency injection
36:58And relies on
37:00Adapter pattern
37:02Katas-katas yang itu
37:04Yang table
37:06Yang table
37:08Nah yang gue tunjukin tadi kan
37:10Expert verdict
37:12Nah itu
37:14XAI and Google is
37:16Abstract difference
37:18Ini adalah adapter yang
37:20XAI sama Google itu adapter
37:22Tapi generate text nya
37:24Dependency injection
37:26Berarti versi AISDK nya
37:28Maksudnya si AI package
37:30Dependency nya
37:32Oh iya
37:34Generate text nya iya
37:36Adaptor nya
37:38Dalam package terpisah
37:40Kalau kita perhatiin tadi kodenya
37:42Walaupun dua-duanya buatan
37:44Versi juga ya
37:46Kelihatan nya ada unofficial sih
37:48Makanya emang dipisah
37:50Maksudnya kenapa itu dipublish
37:52Sebagai package terpisah yaudah
37:54Itu salah satu jawabannya
37:56Jadi dua-dua
38:00Ini nya si model nya itu adapter
38:02Si generate text nya
38:04Dependency injection
38:06Yes
38:08Oke
38:10Dan oh dan orang
38:12Tadi kalau kita liat
38:14Tep-tep nya
38:16Paling kanan kan ada custom
38:18Ada antropik, ada Google, ada XAI
38:20Ada custom emang itu dibuka
38:22Siapapun
38:24Bihak lain bisa mempublish
38:26Adapter
38:28Itu istilahnya bukan adapter sih
38:30Maksudnya bisa mempublish package
38:32Yang berfungsi sebagai adapter berarti
38:34Tapi kalau untuk yang si dependency injection
38:36Itu cara kerja si
38:38AI package nya yang punya generate text
38:40Punya apalah generate image dan lain-lain
38:42Yes
38:44Interesting
38:46Ini kalau
38:48Yang saya
38:50Waktu itu
38:52Mempertanyakan pada saat itu kan
38:54Awalnya gak gini
38:56Jadi ini codenya
38:58Ini fungsi untuk
39:00Ngirimin data ke gemini
39:02Terus dapat respon
39:04Standar lah ya
39:06Jadi pada saat awal
39:08Ini saya gak pakai ini
39:10Mesej saja
39:12Sedangkan
39:14Pada saat
39:16Di dalam saya manggilnya
39:18Request
39:20Request.os
39:22Atau fetch dan lain-lain ya
39:24Tapi pada saat
39:26Saya mau bikin testing
39:28Mana testing
39:30Kan mau di mocking
39:34Gimana cara mocking nya
39:36Kalau gak pakai library
39:38Yang saya lakukan adalah
39:40Memalsu
39:42Meniru
39:44Meniru ya
39:46Artinya 2 gitu
39:48Kalau ngecek apa? Mocking ya
39:50Iya artinya 2
39:52Ya kayak bahasa Indonesia
39:54Ada tahu sama tahu
39:56Iya
39:58Jadi
40:00Akhirnya
40:02Saya bikin variable baru
40:04Atau parameter baru
40:06Untuk menerima sebuah
40:08Funksi
40:10Atau objek atau apapun ini
40:12Supaya bisa saya tipu
40:14Jadi gak, dia gak akan
40:16Connect ke gemini API
40:18Supaya gak
40:20Rate limit kan
40:22Jadi saya bikin aja disini
40:24Fungsi
40:26Fungsi apa
40:28Modul mocking
40:30Dengan ada
40:32Fungsi namanya pos
40:34Saya lakukan sama seperti yang tadi
40:36Di main tadi
40:38Disini
40:40Nah itu
40:42Di test nya dia pakai mocking kan
40:44HttpClient.Post
40:46Jadi HttpClient nya bisa kita pakai apa aja
40:48Kalau di JavaScript ya bisa pakai
40:50Fetch, bisa pakai Axios
40:52Fetch, Axios
40:54Bisa pakai XML, Http
40:56Bisa gak ya
40:58Bedanya kalau LXL ini kan
41:00Nggak ada tipe data ya disini ya
41:02HttpClient itu enaknya
41:04Disitu
41:06Tapi kalau kalian sudah menggunakan TypeScript
41:08Atau menggunakan
41:10PHP kan
41:12Masih bisa lose ya
41:14Kalau C#
41:16Atau yang strict
41:18Language yang strict data type ya
41:20Jadi kan kalau sudah ada data type
41:22Disitu
41:24Di HttpClient itu
41:26Harus didefinisikan data type nya
41:28Yang dua tipe
41:30Data ini
41:32Bisa compatible
41:34Jadi kayak wrapper
41:36Atau interface
41:38Interface ya sebutannya
41:40Interface
41:42Biasanya pakai A, I depannya
41:44I besar
41:46Fungsional ya, jadi ini fungsional
41:48Tadi kan kita contohnya kelas
41:50Kalau ini yang lebih ke fungsion
41:52Tadi pada saatnya saya menggunakan mock
41:54Rec kan
41:56Pada saat di kode benerannya
41:58Saya kasih default parameternya adalah
42:00Rec
42:02Kenapa?
42:04Kode yang sebelum ini gimana?
42:06Bisa dimundurin
42:08Bukan
42:10Kan ada commit yang sebelumnya nggak ada
42:12Oh iya
42:14Bisa sih
42:16Jadi kan pada saat
42:18Manggil kan pakai mock rec
42:20Kalau yang di aslinya
42:22Yang benerannya
42:24Saya pakai ini aja
42:26Sama
42:28Tapi ini rec, ini adalah
42:30Dependensi benerannya
42:32Ya, kalau kita
42:34Mau pakai bisa rec.
42:36Post ya
42:38Jadi rec ini ada
42:40Fungsi namanya post
42:42Jadi ini disertakan
42:44Ke dalam parameter
42:46Sebuah fungsi, fungsinya yang ini
42:48Mau lihat ininya
42:50Mau lihat
42:52Commitnya
42:54Bingung
42:56Gak
42:58Gak
43:00Oh
43:02Ada ENV nya nggak?
43:04Ada ENV nya nggak disini
43:06Ada ENV nya
43:08Ada example
43:10Kau udah ada
43:12Mas Liza
43:14Mas Liza sempet panik
43:16Mas Liza sempet panik
43:24Oke, eh kok kesini?
43:26Ntar, ntar, ntar, ngelihat commit ya
43:28Commitnya sebelum
43:30Sebelumnya ini
43:32Pakai, mana dia?
43:34Ini, langsung message aja
43:36Jadi didalamnya langsung rec
43:38Sama dengan rec request new
43:40Rec request blablabla
43:42Sampai rec.post
43:44Kayak gini, kurang lebih ya
43:46Ini, ini, ya gini
43:48Rec.post
43:50Begitu
43:52Sudah
43:54Di refactor
43:56Gantinya adalah
44:00Saya tambahkan 1 parameter
44:02HttpClient
44:04Jadi, tidak lagi rec.post
44:06Tapi HttpClient apapun
44:08Kalau nanti sandanya
44:10Di masa depan saya mau ganti, nggak mau pake rec
44:12Mau pake yang lain, ya tinggal
44:14Ganti bagian ini aja
44:16Rec nya diganti, udah
44:18Sama dependency
44:20Di apa?
44:22Library nya diganti, di install
44:24NPM install something yang lain
44:26Gitu lah, kira-kira
44:28Pola kayak gini
44:30Kalau di webdev
44:32Salah satu yang paling umum, logger kali ya
44:34Pada umumnya kan
44:36Kita logger cuma instantiate
44:38Sekali kan, misalnya pakai Pino
44:40Atau semacamnya
44:42New logger nya sekali
44:44Tapi, maksudnya di selalu
44:46Ke function lain, atau ke halaman
44:48Halaman lain
44:50Logger nya itu udah dipas sebagai objek
44:52Oh, logger nya mau apa aja
44:56Bisa ya, mau pakai
44:58Jadi di dalam misalnya
45:00Error atau warning, cuma
45:02Logger, langsung dipanggil aja
45:04Logger dalam kurung apa
45:06Kalau
45:08Lebih, ini lagi
45:10Karena konsep dependency injection
45:12Udah lama banget kan
45:14Contohnya driver aja
45:16Driver USB
45:18Driver printer
45:20Itu, misalnya gini
45:26Kita ada command menuju printer
45:28Printer nya bisa
45:30Epson, bisa Canon, bisa yang lain-lain
45:32Tapi, si driver itu kan
45:34Ada driver bawaannya
45:36Untuk bisa bicara
45:38Ke operating system
45:40Yang generic ya
45:42Operating system taunya print
45:44Hanya print command
45:46Print command itu
45:50Dia mengirimkan datanya sesuai dengan
45:52Universal cara mereka
45:54Mengirim data, nanti si driver lah
45:56Menenjemahkan menjadi
45:58Bahasa di printer nya mereka
46:00Karena masing-masing printer punya
46:02Standard masing-masing
46:04Bisa monitor
46:06Keyboard, mouse
46:08Itu interface nya sama ya
46:12Betul
46:14Semaja ada universal serial bus
46:16Atau USB, semua interface nya sama
46:18Tapi belakangnya
46:22Cara berkomunikasi nya bisa berbeda-beda
46:24Ngomong-ngomong soal gitu, maksudnya
46:38MCP itu juga sebenernya mengikuti
46:40Itu juga ya, tapi bukan dependensi
46:42Model context protocol
46:44Supaya punya
46:48Si AI kan dulu kan
46:52Kalau si
46:54Sejarahnya sedikit
46:56AI yang pertama kali bisa
46:58Functional calling
47:00Open AI
47:04Bisa functional calling
47:06Jadi kita bisa tanya
47:08What is the weather today?
47:10Kalau yang belum tahu function calling itu istilah lainnya
47:14Tool calling
47:16Sama aja istilah yang sama
47:20Kalau sekarang jaman ya
47:22Agent
47:24Kalau tahun lalu
47:26Cepet banget ya
47:28Kalau tahun lalu kan function calling ya
47:30Kita tanya sekali
47:32What is the weather in Bekasi?
47:36Ada function khusus
47:38Get weather itu ya kan
47:42Ada prosesnya sendiri dia
47:44Membaca variable
47:46Misalnya
47:48Key, weather service
47:50Terus ada objeknya yang kita tanyakan
47:52Mata uang
47:56Nilai tukar
47:58Currency ya
48:00Lalu kan
48:02Karena masing-masing AI itu
48:04Jemenai
48:06Ikut-ikutan, antropik, ikut-ikutan
48:08Punya standar masing-masing
48:10Jadi function calling itu
48:12Jadi susah
48:14Baru si antropik
48:16Introduce
48:18Model context protocol
48:20Dimana
48:22Meseragamkan
48:24Si
48:26AI ini cara berkomunikasi
48:28Sebenernya itu kayak
48:30Standard sih ya
48:32Standard cara berkomunikasi untuk
48:34Ke service yang lain
48:36Sehingga si service-service yang lain
48:38Kayak Figma
48:40Atau Github
48:42Atau apapun lah ya
48:44Bisa membuat
48:46Function-function-function yang mereka siapin
48:48Terus dikasih
48:50Itu toolsnya di expose kan
48:52Berarti function-functionnya itu
48:54Di expose ke
48:56MCP service itu
48:58Betul, jadilah sebuah MCP service
49:00Dimana service itu
49:02Bisa ada ini loh
49:04Service nya Github itu
49:06AI itu bisa manggil A, B, C
49:08B, E, F, G, F
49:10Jadi waktu kita sambungkan MCP server
49:12Kita ke si
49:14AI kita yang
49:18Kita pakai AI client
49:20AI client yang kita pakai
49:22Dia bisa connect tuh
49:24Ke Github, dia baca oh ini service yang ada
49:26Terus balik dan dia bisa
49:28Oke kalau mau fetch
49:30Bati manggil
49:32Function fetch yang disana
49:34Lalu kalau misalnya mau create PR
49:36Bati panggil create PR disana
49:38Argumennya apa
49:40Nanti dia isi argumennya
49:42Bisa create PR
49:44Sehingga terjadi yang namanya
49:46Kalau itu di chaining
49:48Prosesnya di chaining-chaining-chaining
49:50Jadilah yang namanya agent
49:52Yaitu kan berarti si
49:54AI client kita
49:56Di konteks ini kan berarti AI coding assistant
49:58Kan dia internally juga sudah
50:00Punya tools kan dia bisa
50:02Membaca isi file project
50:04Kita ya bisa baca
50:06Dan bisa menulis kan bisa edit
50:08Bisa ubah bisa jalanin
50:10Terminal command berarti kan
50:12Misalnya kita bikin perintah
50:14Apalah benerin kode ini lalu
50:16Langsung buatin pull request nya
50:18Nah dia kan berarti punya tools internal
50:20Dia jalanin tools internal
50:22Yang emang udah available dia tahu
50:24Maksudnya si
50:26LLM-nya berarti tahu kan
50:28Oh berarti harus edit file ini-ini-ini
50:30Harus dibetulin, harus diubah kodenya
50:32Jadi ini-ini, terus bisa jalanin
50:34Terminal command kan
50:36Git add file itu
50:38Git commit
50:40Sekian, terus dia bisa
50:42Bikin summary-nya
50:44Nah terus kalau dia udah di-connect
50:46Ke MCP server kayak yang
50:48Ivan jelasin tadi berarti kan
50:50Si AI client-nya tahu bahwa
50:52Terus tools lain nih selain tools internal
50:54Yang dia punya kan berarti
50:56Bisa bikin pull request dan lain-lain
50:58Berarti yang
51:00Di expose adalah
51:02List of tools
51:04Terus apa
51:06Yang tools itu lakukan sama
51:08Kemampuan untuk memanggil menjalankan
51:10Tools itu ya
51:12Dari si AI client yang connect ke
51:14MCP server
51:16Iya, kurang lebih kayak gitu sih
51:18Betul
51:20Kenapa nggak
51:22Dia nggak pake RSCPA aja
51:24Pake JSON gitu
51:26Kenapa harus bikin protokol baru
51:28Nggak tahu
51:32Sulit kali ya
51:36Karena masing-masing provider punya
51:40Apa, cara manggil tools-nya lain-lain
51:42Mungkin ya, agak ribet
51:44Nggak tahu kenapanya
51:46Kapan-kapan kita connect
51:48Dan siapalah Yohan atau Esther
51:50Yang ngerti beginian
51:52Kita seling tanya maka nggak ada yang tahu
51:54Maksudnya kalau udah kenapanya ya
51:56Kan kita paham
51:58Itu kan ada level of understanding
52:00Kita pertama harus tahu what itu apa
52:02Terus kayak
52:04How does it work, cara kerjanya
52:06Kita ngertilah tipis-tipis yang kayak tadi
52:08Udah kita bisa pakai
52:10Tapi kalau kayak why gitu
52:12Kan itu ada 2 alternatif
52:14Kenapa nggak ini, kenapa ini, kelebihan apa
52:16Kan butuh
52:18Mahaman yang lebih mendalam lagi
52:20Iya
52:22Wah, abu lucu ketemu
52:24Eka ya
52:26Mas sempetnya apa, kenapa
52:28Siapa disini aja
52:30Sibuk ya, sibuk
52:32Eka masih
52:34Terus loh
52:36Nah, ini
52:38Pada pakai
52:40Semacam apa
52:44AI yang di terminal nggak sih
52:46Ivan kayaknya pakai ini ya
52:50Pakai warp ya
52:52Terminal warp itu mereka mau
52:54Pivot kan ya
52:56Ke arah AI agentik ya
52:58AI terminal apa
53:00AI CLI
53:02Tapi ya kalau mau pakai sebagai terminal
53:04Relatif biasa nggak terlalu itu
53:06Nggak terlalu pakai, jadi saya pakai
53:08Si warp ini
53:10Murni hanya terminal biasa
53:12Saya sukanya kenapa
53:14Biarah
53:16Nggak sih
53:18Saya suka warp itu cuma satu
53:20Karena
53:22Text-nya bisa diselek ya
53:24Enak banget
53:26Enak banget UX-nya
53:28Enak banget
53:30That's it
53:32Comment-nya jadi text box
53:34Jadi bisa dipindah-pindah, bisa diselek
53:36Terus gampang bisa copy command, copy output
53:38Wah, enak banget UX-nya
53:40Saya nggak pakai warp
53:42Gara-gara
53:44Mau pakai terminal kok harus login
53:46Nggak mau ah
53:48Ini bisa risiko
53:50Ketergantungan juga sih
53:52Balik ke konteks dependensi tadi
53:54Tapi ya udahlah
53:56Tiba-tiba
53:58Free tiernya dihapus
54:00Ya udah pindah ke
54:02Yang lain, oh my CSH
54:04Plus Gemini CLI
54:06Kulanya
54:08Saya pakai tools
54:10Saya tidak setia tools
54:12Jadi dependensinya itu
54:14Tidak terlalu tinggi terhadap tools
54:16Oh, harus pakai dependensi injection
54:18Saya setia
54:20Setia harga
54:22Kalau free, lanjut
54:24Iya
54:26Warp sampai sekarang masih free
54:28Kalau misalnya bayar, gue nggak mau sih subscribe
54:30Maksudnya kalau free-nya dihapus ya
54:32Oh ya, ada dua alasan
54:34Kenapa saya tidak menggunakan warp
54:36Pertama karena login
54:38Yang kedua karena nggak support TMAX
54:40Karena saya pengguna TMAX, jadi nggak bisa
54:42Apa sih bedanya sih
54:44Hampir sekarang nggak ngerti
54:46TMAX, bedanya
54:48Iya
54:50TMAX itu kayak
54:52Terminal-dalam terminal
54:54Terminal-dalam terminal
54:56Contohnya
55:04Kalau dulu
55:06Pernah ngalamin
55:08Kita mau deploy
55:10Aplikasi SSH ke server
55:12Terus kan itu
55:14Running process kan, nggak di background
55:16Kalau kita mau keluar dari
55:18Server SSH gimana
55:20Kalau kita disconnect kan server-nya mati
55:22Karena kan process-nya running
55:24Pernah nggak
55:26Jalanin dalam screen
55:28Screen, ya itu
55:30TMAX itu adalah screen yang
55:32Modern
55:34Oh gitu, berarti TMAX itu
55:38Screen yang mau jalan
55:40Iya
55:42Saya masih pengguna
55:44Screen all the way
56:02Kayak image magic itu lho
56:04Command line magic itu
56:06Buat nge-cropping gambar kan
56:08Command-nya ribet ya
56:10Dulu harus
56:12Googling image magic
56:14Kalau cropped di kiri, cropped di kanan
56:16Proportional
56:18Atau kita mau cropped dengan aspek
56:20Rasio tertentu dari tengah
56:22Kan cape itu command-nya
56:24Sekarang ketik pakai natural language
56:26Crop 400x300
56:28Width-nya 100%
56:30Dari tengah
56:32Udah dikasih command image magic-nya
56:34Yang gitu-gitulah
56:36Pokoknya sekarang jadi nggak perlu
56:38Ngapalin command line
56:40Command lagi
56:42Iya, pakai bahasa manusia
56:44Bisa ya
56:46Enak ya
56:48Demo TMAX
56:50Ini TMAX kan
56:52Kalau mau
56:54Ke screen sebelumnya
56:56Previous gitu
56:58Bisa kesini
57:00Previous, next
57:02Kalau mau split
57:04Mau ganti posisi
57:06Bisa, mau split kiri ke kanan
57:08Bisa, kalau disini pakai Vim
57:10Vim di kiri, di kanan
57:12Tes misalkan
57:14Enak kan
57:16Work tab juga sudah bisa
57:18Bisa pakai tab, bisa pakai split juga
57:20Bisa kan tiba-tiba
57:22Ketutup, terus buka lagi
57:24Masih ada
57:28Balik lagi
57:30Mau fokus
57:34Zoom
57:36Kalau mau balik lagi tinggal ke kanan
57:38Jadi lebih
57:42Lebih seru
57:46Jadi terminal di dalam terminal
57:48Kita bisa buka terminal di
57:50Layar ini, nggak perlu pakai tab
57:52Kalau pakai tab ya bisa
57:54Tapi
57:56Tergantung orang
57:58Kembali lagi
58:00Apalagi kalau pakai Vim
58:02Lebih cocok kan
58:04Kalau pengguna Vim lebih cocok
58:06Sama aja
58:08Kayak pengguna VS Code
58:10Pake terminalnya di VS Code
58:12Atau terminal tersendiri
58:14Ada yang
58:16Pake terminal sendiri, suka pakai
58:18Terminal sendiri sudah terbiasa kan
58:20Ada yang
58:22Bahkan mau
58:24Apa generate project baru pun
58:26Buka VS Code dulu, buka terminal
58:28Laravel generate something
58:30Artisan generate something, abis itu dia
58:32Code titik disitu
58:34Baru kebuka lagi VS Code nya yang baru
58:36Ada, kan yang kayak gitu juga ada
58:38Tapi generate nya ini folder beda
58:42Folder baru
58:44Iya, misalkan pakai kursor
58:46Jadi
58:48Mana kursornya
58:52Anggaplah ya
58:54Ini ya
58:56Terminal
58:58Terus saya bikin
59:00Folder baru
59:02New project
59:04Terus cd
59:06New project
59:08Terus abis itu npm init
59:10Terus abis itu
59:12Baru kursor
59:14Titik
59:16Buka baru lagi, ada yang kayak gitu
59:18Karena dia udah hidupnya
59:20Di VS Code
59:22Jadi terminalnya pun terminal VS Code semua
59:24Pakainya
59:26Anyway
59:28Masih-masih orang aja
59:30Pulau gaduh
59:32Soundboard dong
59:36Apa soundboard nya
59:38Soundboard nya
59:40Ya wakwaw lah
59:42Satu lagi bentar, warp yang underrated
59:48Itu comment historinya
59:50Ada semua
59:52Jadi kalau tadi itu bahas kayak apa
59:54Laravel create project
59:56Atau apapun ya
59:58Oh historinya, iya
1:00:00Kita sering bikin
1:00:02Kita pernah bikin
1:00:04Pnpm create, astro
1:00:06Sama ada flag-flag nya itu
1:00:08Flag nya, template nya apa, typespeed nya
1:00:10Strik atau enggak, ya ada lain-lain
1:00:12Atau Laravel atau apapun
1:00:14Itu udah ada semua, jadi cuma ketik
1:00:16Pnpm create, langsung
1:00:18Keluar ke atas, panah-panah aja
1:00:20Maksudnya dibikin
1:00:22Di folder nya lain, yaudah ganti aja folder nya
1:00:24Di VS juga kayak gitu kan
1:00:28Oh ya
1:00:30Iya
1:00:32VS Shell atau ZSH
1:00:34Kayaknya udah begitu deh yang sekarang
1:00:36Sebelumnya pakai ZSH
1:00:38ZSH tuh belum
1:00:40Nggak tau, nggak muncul
1:00:44Nggak kan gini kan, contohnya misalkan
1:00:46Saya biasa pakai mix phx
1:00:48phx.new
1:00:50gitu kan, terus panah atas
1:00:52panah atas, panah atas, gitu kan
1:00:54Ini udah default
1:00:56phish
1:00:58Atau
1:01:02npm create
1:01:04Gitu kan
1:01:06Sama kan
1:01:08Sama
1:01:10Kalau apa
1:01:12Komen di suatu project nih
1:01:14Kita udah di holder project
1:01:16Npm atau pnpm
1:01:18Atau apalah package manager yang dipakai
1:01:20Spasi, tab, itu udah
1:01:22Baca package JSON kita
1:01:24Komennya apa aja
1:01:26Oh, iya iya iya, ngerti-ngerti
1:01:30Nggak perlu npm run lagi ya
1:01:32Ya, apa
1:01:34Tetep diketik, tapi kayak
1:01:36Kan misalnya kadang ada project yang
1:01:38Kadang ada yang misalnya
1:01:40Komennya prod, kadang ada yang komennya build
1:01:42Itu autocompletenya
1:01:44Udah otomatis baca
1:01:46Dari package JSON kita
1:01:48Terus kalau git checkout
1:01:50Gco lah, pakai
1:01:52Singkatan Gco
1:01:54Tinggal tab, daftar branch
1:01:56Yang ada disitu, langsung muncul
1:01:58Nggak usah ntik
1:02:00Jadi kayak salesnya warp
1:02:02Yang dibayar kaga
1:02:04Pakai warpnya juga gratisan
1:02:08Kayaknya kita udah melenceng kemana-mana
1:02:10Ini kayaknya kita perlu
1:02:12Bahas tentang
1:02:14Kita perlu bahas tentang automation tools
1:02:16Atau tools buat developer
1:02:18Terminal, editor
1:02:20Apa lagi ya, banyak ya
1:02:22Voting aja lah biar rakyat menentukan
1:02:24Kita kan demokratis
1:02:26Iya, kita mau bahas apa
1:02:28Buat minggu depan
1:02:30Stack, stack atau tools
1:02:32Stack dan tools apa ya
1:02:34Bukan, stack yang kita pakai itu ngapain
1:02:36Stack dan tools
1:02:38Oke
1:02:40Bahas apa nih
1:02:42Stack dan tools sehari-hari ya
1:02:44Stack dan tools sehari-hari ya
1:02:46Tapi kalau ini serunya
1:02:48Yang widget, yang nonton kudu banyak
1:02:50Biar ada bahan ya
1:02:52Biar maksudnya pada
1:02:54Ngetik juga pakai apa
1:02:56Kalau kita bertiga pamer stack
1:02:58Selain garing, cepet turun
1:03:00Stack dan tools
1:03:04Yang digunakan
1:03:06Sehari-hari
1:03:08Oke
1:03:10Waduh cilaka halftime
1:03:120-1 kita
1:03:14Menang
1:03:16Iya bilang cilakaman 0-1
1:03:18Iya kalah
1:03:20Oke
1:03:24Topik buat minggu depan
1:03:26Ada ide, ada ide
1:03:28Kita ngambil apa minggu depan, minggu depan tanggal
1:03:30Kita harus rekaman juga loh
1:03:32Iya harus rekaman
1:03:34Iya nanti dipikir nanti
1:03:36Minggu depan
1:03:38Tanggal 5 Agustus
1:03:40Masih available kan
1:03:42Masih
1:03:44Masih
1:03:46Defennya bagus Vietnam, kirain lagi bahas
1:03:48Defensive CSS
1:03:50Kalau dilihat dari stats
1:03:54Emang iya sih kita posesinya
1:03:56Lebih tinggi, posesinya
1:03:58Lebih tinggi, otomatis posesinya lebih tinggi ya
1:04:00Terus kayaknya shots on targetnya lebih banyak
1:04:02Tau-tau kalah, nolsa
1:04:04Dokumentasi
1:04:06Dokumentasi boleh?
1:04:08Belum
1:04:10Dokumentasi
1:04:12Kita voting nih ya
1:04:14Bikin voting dulu ya
1:04:16Jangan terlalu
1:04:18Ditator ya, ditatornya sekali-sekali
1:04:20Aja
1:04:22Kemarin udah diktator, sekarang kita demokrasi
1:04:24Demokrasi
1:04:26Poling
1:04:28Topik
1:04:30Minggu depan
1:04:32Alat
1:04:34Dokumentasi
1:04:36Ini kayaknya udah berapa kali nih
1:04:38Kalah melulu
1:04:40Terus dokumentasi gak laku
1:04:42Apa lagi ya
1:04:44Ini ada apa sih, lucu
1:04:46Fanmade game pake react dan note
1:04:48Fanmade game pake react dan note
1:04:50Fanmade game pake react dan note
1:04:52Oh iya
1:04:54Ada yang nge-post
1:04:56Mas
1:04:58Reifu
1:05:00Game Yu-Gi-Oh
1:05:02Game multiplayer
1:05:06Dan tidak harus pake .net
1:05:08Maksudnya
1:05:10Kita coba liat ya
1:05:12C#
1:05:16Oh maksudnya
1:05:18Kita gak perlu install .net gitu ya
1:05:20Offline
1:05:24Ini siapa yang bikin
1:05:26Yu-Gi-Oh master
1:05:28Siapa ini Yu-Gi-Oh master
1:05:30Bukan orang Indonesia pasti ya
1:05:32Pasti, mungkin ya
1:05:34Sama apa nih
1:05:40Beda framework LitoJS
1:05:42Oh
1:05:44Kalau beda framework itu
1:05:46Jadi ada
1:05:48Iya
1:05:50Ada, ya maksudnya kenal
1:05:52Di twitter sama yang bikin
1:05:54Penasaran dia kenapa alasannya
1:05:56Bikin framework gitu
1:05:58Cuman kan harus ngajakin orangnya
1:06:00Nah itu harus
1:06:02Ya
1:06:04Ini agak sulit
1:06:06Kita pakai
1:06:08Apa
1:06:10CSS unit
1:06:12Atau mau beda framework
1:06:14Tan start
1:06:16Tan stack
1:06:18Star
1:06:20Udah ya
1:06:22Yang start
1:06:24Yang ten stack udah
1:06:26Ten stack universe ya
1:06:28Ten stack universe
1:06:30Ten stack universe kita udah pernah
1:06:32Kalau web framework
1:06:34Ten stack start
1:06:36Nah ini
1:06:38Beda framework
1:06:40Ten stack start
1:06:42Kalau saya tidak berhasil
1:06:44Meyakinkan Mas Indah untuk gabung ya
1:06:46Oh ya
1:06:48Kalau berhasil kita bahas yang
1:06:50Lito tadi ya
1:06:52Kenasaran saya kenapa
1:06:54Beliau mau bikin framework sendiri
1:06:56Tapi seru kan
1:06:58Iya maksudnya
1:07:00Ada framework buatan orang Indonesia
1:07:02Iya ini kayaknya yang
1:07:04Dia bikin dari
1:07:06Basenya itu deh
1:07:08Alicia kayaknya
1:07:10Kayaknya ya
1:07:12Kita lihat saja
1:07:14Oh bikin ORM sendiri
1:07:16Tapi masih coming soon
1:07:18Wah seru
1:07:20Siapa tau bisa dispill sedikit
1:07:22Kalau bersedia
1:07:24Jadi pimpang kamu
1:07:26Kita lihat BUN
1:07:28Listen
1:07:30BUN
1:07:36Oh enggak
1:07:38Kira ini pakai Alicia enggak ya
1:07:40Berarti ya
1:07:44Ada JS Lito
1:07:46Ini kayak dari light gitu kali ya
1:07:48Light atau Lito
1:07:50Maksudnya lightweight mungkin
1:07:52Nah ini desaran
1:07:54Container CSS dan if else
1:07:56Semuanya fitur-fitur CSS baru
1:07:58Oh iya
1:08:00Sudah
1:08:02View transition udah bagus belum sih
1:08:04Sudah bisa
1:08:06View transition yang level 1
1:08:08Yang same page udah masuk
1:08:10Interop jadi cerah lah masa depannya
1:08:12Kalo yang level 2
1:08:14Cross document
1:08:16Masih baru chrome doang
1:08:18Yang lain belum
1:08:20Tapi sudah bisa chrome nya udah bisa
1:08:22Bisa
1:08:24Oh maulah itu kita belajar itu
1:08:26Container CSS
1:08:28Bentar pertanyaannya apa tadi
1:08:32Maksudnya prakteknya
1:08:34Cara penggunaannya
1:08:36Tapi didemokan gitu
1:08:38Nggak cuma teorinya doang
1:08:40Kan kayaknya dulu container CSS
1:08:42Sudah pernah dibahas sekilas ya
1:08:44Ini ngomongin container apa
1:08:48Ngomongin transition sih
1:08:50View transition sih
1:08:52Sorry
1:08:54Sebelumnya bahas
1:08:56Nggak tadi
1:08:58Nggak tadi Usul bahas
1:09:00Fitur CSS baru tahun ini
1:09:02Terus abis itu
1:09:04Ikut tanya soal view transition
1:09:06Terus ya udah abis itu
1:09:08Di bahas view transition
1:09:10Tapi terserah sih
1:09:12Nah biar tambah bingung
1:09:14Ini ada topik nyempil nih
1:09:16Testing dengan playwright
1:09:18Kayaknya selalu
1:09:20Didefer terus dari tahun lalu
1:09:22Kita udah lama nggak bahas
1:09:24BHVR stack itu apa
1:09:26BHVR
1:09:28Gak tau sisanya
1:09:30Virtual reality
1:09:32View
1:09:34View
1:09:36Remix
1:09:38Remix
1:09:42Jadi gimana tadi yang nyempil
1:09:44Playwright
1:09:46Habis ini ya
1:09:48Wah 50-50
1:09:50Yah imbang nih
1:09:5850-50
1:10:00Satu lagi dong
1:10:04Eh
1:10:06Jadi tiebreaker
1:10:08Tiebreaker
1:10:10Loh lempar coin
1:10:12Demo biar
1:10:14Kebayang masak UI
1:10:16Tidak display demo
1:10:18Masa UI nggak display demo
1:10:20Demo biar kebayang
1:10:22Masa UI nggak display demo
1:10:24Oh iya
1:10:26Masa UI nggak display demo
1:10:32Kalau AI kalimatnya nggak jelas
1:10:34Nanti hasilnya juga ngeko
1:10:36Itu bahaya
1:10:38Iya kayak container
1:10:40Terus apa view transition
1:10:42Terus juga udah bisa
1:10:44If else gitu kan sebenarnya
1:10:46Banyak ya, tapi kan kita selama ini
1:10:48Kan ngeliat-liat contoh demo
1:10:50Sama teorinya kan
1:10:52Kalau ada
1:10:54Kita belum punya sih ya
1:10:56Kayak website khusus buat demo
1:10:58Mendemokan semua
1:11:00Apa namanya
1:11:02Fitur-fitur terbaru
1:11:04Dari CSS atau Javascript
1:11:06Atau browser dan lain-lain ya
1:11:08Nanti kita undang mas itu gimana
1:11:12Yang
1:11:14Nerdedev
1:11:16Diundang lagi
1:11:18Diundang lagi
1:11:20Udah susah
1:11:22Sekarang
1:11:24Udah nggak tahu emailnya
1:11:26Nggak tahu emailnya
1:11:30Ya ditunggu
1:11:32Ditunggu aja
1:11:34Paling beberapa saat lagi
1:11:36Dia di rekrut sama siapa
1:11:38Pasti jadi CSS Evangelist lagi
1:11:40Kali di rekrut Microsoft misalnya
1:11:42Atau Shopify atau apa
1:11:44Kenapa dia nggak masuk ke Microsoft ya
1:11:46Microsoft juga abis lay off kemarin kan
1:11:52Iya
1:11:54Belum dia kerja di mana-mana ya
1:11:56Nerdedev ya
1:11:58Nggak tahu
1:12:00Belum ada info lagi sih
1:12:02Nggak go public kali ya
1:12:04Bisa jadi konsultan atau apa
1:12:06Yang kapasitasnya tapi individu
1:12:08Nggak masuk big company
1:12:10Udah
1:12:12Pollingnya
1:12:1470% menang
1:12:16Framework
1:12:18Senang ya beda-beda frameworknya
1:12:20Karena seru
1:12:22Pokoknya
1:12:24Kita beda framework antara dua ya
1:12:26Frameworknya ya
1:12:28Kalau bisa lito kita bahas lito
1:12:30Kalau nggak kita bahas 10 stack
1:12:32Oke
1:12:34Cukup-cukup
1:12:36Oh iya
1:12:38Yang di Jakarta
1:12:40Dan sekitarnya hari Sabtu
1:12:42Jangan lupa datang nonton Ivan
1:12:44Kita rame-rame mendukung Ivan
1:12:46Sama Warad ya
1:12:48Oh Warad datang ya
1:12:50Warad datang
1:12:52Di bandara O-I
1:12:56O-I
1:12:58Nanti Ivan mau demo
1:13:02O-I mau demo E-I
1:13:06A-I
1:13:08O-I demo A-I
1:13:10Keren ya
1:13:12Jadi tag lagi
1:13:14O-I demo A-I
1:13:16Oh itu jadi judul aja
1:13:18Judul stack pertama gitu ya
1:13:20O-I demo I
1:13:22What we make so sweet
1:13:26Oke
1:13:28Oke
1:13:30Cukup ya
1:13:32Kalau gitu kita ketemu lagi minggu depan
1:13:34Biar lebih konsen ya
1:13:36Mendukung Indonesia
1:13:38Mudah-mudahan Indonesia bisa mengejar ketertinggalan
1:13:40Jadi kita udah dulu
1:13:42Terima kasih buat semuanya
1:13:44Kita ketemu lagi minggu depan
1:13:46Dengan topik yang berbeda
1:13:48Udah itu dia
1:13:50Udah bukan penyanyi kecil lagi
1:13:52Messi
1:13:54Itu yang
1:13:56Penontonnya gak ada yang tahu semua
1:13:58Yakin gue
1:14:00Yang 90 belum lahir
1:14:02Gue masih
1:14:04Masih kebayang lagunya gitu
1:14:06Ciluk gue
1:14:08Ivan langsung disconnect dia
1:14:10Gue gak tahu
1:14:12Gue sebelum banget
1:14:14Annoying makinnya
1:14:16Nah dulu ya
1:14:18Ada-ada yang ngomong
1:14:20Sekarang kan kalo gak suka tinggal ganti aja ya
1:14:22Youtube channel gak suka
1:14:24Atau Netflix atau apa tinggal ganti
1:14:26Belum gak bisa
1:14:28Belum misalnya RCTI nayangin acara
1:14:30Lagu anak-anak yang lagunya gak suka
1:14:32Yang gak ada yang lain
1:14:34Oke
1:14:36Sampai ketemu
1:14:38Minggu depan bye
1:14:40Bye
1:14:46Yang kalian melihat untuk membandingkan kembali dengan lainnya?
1:14:48Jika Anda mencari tahu
1:14:50Mengenai layanan web hosting terbaik
1:14:52Kami pastikan Anda berada di tempat yang tepat
1:14:54Dengan Dominesia
1:14:56Dapatkan pengalaman
1:14:58Menggunakan layanan hosting yang lebih baik
1:15:00Dengan SSD berperforma tinggi
1:15:02Dalam infrastruktur cloud yang telah dioptimalkan
1:15:04Untuk kebutuhan personal maupun bisnis
1:15:06Teknologi ini
1:15:08Memungkinkan Anda memperoleh layanan
1:15:10Yang lebih stabil serta proteksi dari korupsi data
1:15:12Hosting Dominesia
1:15:14Juga telah mendukung Node.js
1:15:16Python, Ruby, Go, PHP
1:15:18Java, serta binary Linux
1:15:20Lebih dari 200.000 pelanggan
1:15:22Telah mempercayakan layanan hosting
1:15:24Di Dominesia
1:15:26Kepercayaan yang kami jaga
1:15:28Dengan garansi uptime 99.9%
1:15:30Serta garansi uang kembali 100%
1:15:32Buat website Anda lebih mendingin
1:15:34Segera berat
Suka episode ini?
Langganan untuk update episode terbaru setiap Selasa malam!
Episode Terkait
26 Agu 2025
Fundamental JavaScript - Ngobrolin WEB
🗣️🕸️ Selasa malam waktunya #ngobrolinWEB! Malam ini kita akan membahas tentang berbagai topik fundamental JavaScript. ...
27 Jan 2026
Agentic Coding Tools - Ngobrolin WEB
🗣️🕸️ Selasa malam waktunya #NgobrolinWEB! Malam ini kita akan berbagi bagaimana Eka dan Ivan menggunakan AI Agentic C...
20 Jan 2026
Agentic AI - Ngobrolin WEB
🗣️🕸️ Selasa malam waktunya #NgobrolinWEB! Bareng Eka dan Ivan kita akan membahas tentang Agentic UI. Apa itu agent, a...