Halo, Dovi di sini đź‘‹

Tutorial AI, Tech Review, dan Tips Productivity untuk Developer Indonesia. Belajar AI Agent, automation, dan tools terbaru.

Cara Monetize Blog dengan AdSense (Step-by-Step)

Jadi tahun lalu, aku mulai nulis blog tech. Tulisannya banyak, traffic lumayan, tapi… gak ada uang masuk. Blogger yang baik harusnya bisa monetize, kan? Setelah riset dan trial and error selama 6 bulan, aku berhasil approve AdSense dan mulai earn dari blog. Gak banyak sih — $150/bulan — tapi untuk side project yang cuma nulis di waktu luang, lumayan juga. Dan yang paling penting: aku belajar banyak soal SEO, content strategy, dan monetization. Di guide ini, aku bakal share semua yang aku tau. ...

30 Mei 2026 Â· 8 menit Â· Dovi

Setup Linux Server dari Nol untuk Web App

Jadi ceritanya, aku baru beli VPS murah ($5/bulan) dari DigitalOcean. Fresh Ubuntu server, kosong melompong. Gak ada Nginx, gak ada SSL, gak ada security setup. Banyak yang gak tau cara setup server dari nol. Padahal gak serumit yang dibayangin. Di tutorial ini, aku bakal jelasin step-by-step dari fresh server sampai production-ready. Yang bakal kamu dapet di akhir tutorial: Server aman dari serangan Nginx reverse proxy SSL gratis dari Let’s Encrypt Auto-renew SSL UFW firewall Basic monitoring Prerequisites VPS dengan Ubuntu 22.04/24.04 (DigitalOcean, Vultr, AWS, dll) Domain name yang sudah pointing ke IP server Terminal/SSH client Step 1: SSH ke Server Kalau baru beli VPS, biasanya kamu dikasih root password via email. ...

3 Mei 2026 Â· 7 menit Â· Dovi

Cara Pakai Postman untuk API Testing (Lengkap)

Dulu kalau mau test API, aku buka terminal, ketik curl panjang lebar, copy-paste token auth, ganti parameter satu-satu, dan kalau lupa syntax curl? Google lagi. Capek. Terus temen nge-rekomendasiin Postman. Awalnya gak tertarik — “Gue lebih suka terminal, lebih hacker.” Tapi pas coba… wah, ternyata jauh lebih productive. Collections, environments, automated tests — semua ada. Sekarang, sebelum push code, aku SELALU test di Postman dulu. Dan aku bakal share semua yang aku tau soal Postman di tutorial ini. ...

22 April 2026 Â· 8 menit Â· Dovi

Belajar TypeScript dari Nol

Ceritanya begini: dulu aku skeptis banget sama TypeScript. “Buat apa nambahin types? JavaScript udah cukup kok.” Lalu aku join project yang pakai JavaScript murni, 200+ files, gak ada type checking. Ada bug yang bikin production down: user ID yang seharusnya number, ternyata string. Dan gak ketauan sampai user complaint. Sejak itu aku gak pernah balik ke JavaScript tanpa TypeScript. Trust me, TypeScript itu investasi waktu yang ROI-nya gede banget. TypeScript Itu Apa? TypeScript = JavaScript + Type System ...

16 April 2026 Â· 9 menit Â· Dovi

Cara Setup CI/CD dengan GitHub Actions (Gratis)

Dulu aku masih manual-deploy. Push code ke GitHub, SSH ke server, pull, restart. Setiap kali. Tiap update kecil aja, 10 menit habis buat proses deploy. Teman aku bilang: “Lu belum pakai CI/CD?” — aku langsung malu. Setelah setup GitHub Actions, sekarang tinggal push ke main branch dan… beres. Tests jalan otomatis, deploy otomatis, notifikasi kalau gagal. Gak pernah balik ke manual lagi. CI/CD Itu Apa? CI (Continuous Integration): Setiap push code, otomatis run tests dan build. Kalau ada error, langsung ketauan. CD (Continuous Deployment/Delivery): Kalau tests pass, otomatis deploy ke server/staging/production. GitHub Actions jadi pilihan utama karena: ...

9 April 2026 Â· 8 menit Â· Dovi

Cara Bikin Portfolio Website dalam 1 Hari (Next.js + Tailwind)

Portfolio website itu kartu nama digital kamu. Dulu aku bikin portfolio pakai WordPress — loading lambat, design terbatas, dan gak fleksibel. Sekarang pakai Next.js + Tailwind, portfolio loading < 1 detik dan design-nya exactly yang aku mau. Di tutorial ini aku bakal jelasin cara bikin portfolio profesional dalam 1 hari, dari setup sampai deploy. Kenapa Next.js + Tailwind? Next.js: Static site generation (loading super cepat) Built-in SEO optimization Image optimization otomatis API routes kalau butuh backend Deploy mudah ke Vercel Tailwind CSS: ...

16 Maret 2026 Â· 7 menit Â· Dovi

Cara Buat REST API dengan Node.js dan Express

REST API itu backbone dari hampir semua aplikasi modern. Di tutorial ini aku bakal jelasin cara bikin dari nol. Setup Project mkdir my-api && cd my-api npm init -y npm install express dotenv cors helmet morgan Basic Server const express = require('express'); const app = express(); const PORT = process.env.PORT || 3000; app.use(express.json()); app.get('/', (req, res) => { res.json({ message: 'API is running!' }); }); app.listen(PORT, () => { console.log(`Server running on port ${PORT}`); }); CRUD Operations // GET all app.get('/api/users', (req, res) => { res.json(users); }); // GET single app.get('/api/users/:id', (req, res) => { const user = users.find(u => u.id === parseInt(req.params.id)); if (!user) return res.status(404).json({ error: 'Not found' }); res.json(user); }); // POST create app.post('/api/users', (req, res) => { const newUser = { id: nextId++, ...req.body }; users.push(newUser); res.status(201).json(newUser); }); // PUT update app.put('/api/users/:id', (req, res) => { const index = users.findIndex(u => u.id === parseInt(req.params.id)); if (index === -1) return res.status(404).json({ error: 'Not found' }); users[index] = { ...users[index], ...req.body }; res.json(users[index]); }); // DELETE app.delete('/api/users/:id', (req, res) => { const index = users.findIndex(u => u.id === parseInt(req.params.id)); if (index === -1) return res.status(404).json({ error: 'Not found' }); users.splice(index, 1); res.status(204).send(); }); Best Practices Versioning - /api/v1/users Pagination - ?page=1&limit=10 Error handling Input validation Rate limiting Conclusion Dalam 1 jam, kamu udah punya REST API yang functional. ...

13 Februari 2026 Â· 2 menit Â· Dovi

Belajar Docker untuk Pemula (Tutorial Lengkap)

Docker itu intimidating banget buat pemula. Tapi sebenernya simple kok. Docker Itu Apa? Bayangin kamu punya aplikasi yang jalan di laptop. Tapi pas dipindah ke server, error karena environment beda. Docker solve masalah itu dengan packaging aplikasi + dependencies jadi satu unit. Install Docker Windows/macOS Download Docker Desktop Linux curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER Hello World docker run hello-world Dockerfile FROM node:18-alpine WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD ["node", "index.js"] Build & Run docker build -t my-app . docker run -d -p 3000:3000 my-app Docker Compose version: '3.8' services: app: build: . ports: - "3000:3000" db: image: postgres:15 environment: - POSTGRES_PASSWORD=*** Basic Commands docker ps # List containers docker stop my-container # Stop docker rm my-container # Remove docker logs my-container # Logs Conclusion Docker dalam 15 menit. Practice: Containerize aplikasi kamu sekarang! ...

6 Februari 2026 Â· 1 menit Â· Dovi

Cara Setup VS Code untuk Web Development

VS Code itu editor paling populer di 2025. Di tutorial ini aku bakal share setup yang aku pake. Extensions Wajib ES7+ React Snippets Prettier - Auto-format ESLint - Code linting GitLens - Git supercharged Auto Rename Tag Path Intellisense Thunder Client - REST API client Error Lens - Inline errors indent-rainbow Material Icon Theme Theme Recommendation Light: GitHub Light Default Dark: One Dark Pro Keyboard Shortcuts Ctrl+P - Quick open file Ctrl+Shift+P - Command palette Ctrl+D - Select next occurrence Alt+Up/Down - Move line Ctrl+Shift+K - Delete line Ctrl+/ - Toggle comment Conclusion Setup VS Code yang bener bisa save waktu 30-60 menit per hari. ...

30 Januari 2026 Â· 1 menit Â· Dovi

Belajar Git dalam 30 Menit (Tutorial untuk Pemula)

Git itu intimidating banget buat pemula. Tapi tenang, di tutorial ini aku bakal jelasin Git dari nol. Git Itu Apa? Git itu version control system. Bayangin punya “save point” di game, tapi untuk kode. Install Git Windows Download dari git-scm.com macOS xcode-select --install Linux sudo apt install git Basic Commands git init # Buat repo baru git add . # Add semua ke staging git commit -m "msg" # Commit git status # Check status git log # History git branch # List branches git checkout -b name # New branch git merge name # Merge branch git push # Push ke remote git pull # Pull dari remote Cheat Sheet Command Fungsi git init Buat repo baru git add . Add semua ke staging git commit -m "msg" Commit git status Check status git log History git push Push ke remote git pull Pull dari remote Best Practices Atomic commits - Satu commit = satu fitur/fix Good commit messages - Jelas dan deskriptif Branch per fitur Pull before push .gitignore - Exclude file gak perlu Conclusion Dalam 30 menit, kamu udah belajar basic Git. Practice makes perfect! ...

24 Januari 2026 Â· 1 menit Â· Dovi