EP 139

Konsep Dependency Injection - Ngobrolin WEB

Bagikan:

🗣️🕸️ 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 Koreksi

Episode 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!

Langganan Sekarang

Episode Terkait

Komentar