Catatan
Blog
Catatan tentang frontend, SEO, AI, analitik, dan membangun produk nyata.
37 artikel
DeepSeek menaikkan harga — saya menemukan V4 Flash yang sama lebih murah dari tarif lamanya
Pada 17 Agustus, pengeluaran saya untuk DeepSeek API tiba-tiba menjadi sekitar lima kali lipat dari biasanya. Setelah itu saya menemukan dan menguji provider lain yang menjalankan checkpoint DeepSeek-V4-Flash-0731 yang sama dengan harga sekitar 45% lebih murah daripada tarif lama DeepSeek.
Cara saya mengubah WebP animasi, GIF, dan APNG menjadi H.264 MP4 tanpa merusak bingkai atau pewaktuannya
Alur produksi saya merekonstruksi bingkai lengkap yang benar-benar dilihat pengguna, mempertahankan waktu sumber, memilih satu CFR untuk setiap MP4 akhir, menghitung bidang bersama terkecil tanpa memperbesar, mengodekan segmen H.264 yang kompatibel, menggabungkannya tanpa pengodean dengan kehilangan data kedua, dan memvalidasi baik berkas maupun pengirimannya melalui HTTP. Dalam satu proses yang diukur, 217 WebP animasi dengan total 1,49 GB menjadi satu H.264 MP4 berukuran 78,49 MB.
Dulu saya memberi peringatan untuk semuanya: mengubah gangguan error browser menjadi pemantauan produksi yang berguna
Sistem pelaporan frontend awal saya memperlakukan pemblokiran iklan, kegagalan GTM, AbortError, Script error yang minim informasi, dan kegagalan chunk Next.js yang nyata sebagai hal yang sama. Saya membangun ulang pemantauan berdasarkan kepemilikan, dampak pengguna, kualitas bukti, korelasi kejadian, dan pemulihan.
Mengapa Tab Next.js Lama Rusak Setelah Deployment: HTML Usang, Chunk Hilang, dan Ketidakselarasan Versi
Setelah sebuah deployment, pemantauan produksi saya merekam kegagalan memuat chunk Next.js milik aplikasi sendiri. Log itu membuktikan kegagalannya, bukan penyebabnya. Artikel ini memakai insiden tersebut untuk membahas tab lama, HTML usang, aset /_next/static yang hilang, ketidakselarasan versi, retensi, deploymentId, urutan rollout, pemantauan, dan pemulihan terkontrol.
Satu tik yang merusak CFR saya: mengapa 5580 bukan 5625 dan 3751 bukan 3750
Validator saya berulang kali menolak MP4 16 fps karena satu paket berdurasi 5580 tik, bukan 5625. Belakangan ia menemukan 3751 tik ketika 24 fps seharusnya tepat 3750. Dua kegagalan ini memaksa saya memisahkan penentuan waktu sumber, kuantisasi CFR, basis waktu MP4, PTS/DTS, multiplexing, dan validasi pada tingkat paket.
Bagaimana Saya Memangkas Video Produksi dari ~280 MB menjadi ~50 MB dengan H.264
Satu video nyata dari sistem produksi turun dari sekitar 280 MB menjadi sekitar 50 MB setelah konfigurasi H.264 dibangun ulang dengan CRF 28, x264 veryslow, batas resolusi kelas 720p, laju bingkai yang benar-benar berguna, dan tuntutan dekoder yang wajar. Pada tahap sebelumnya, contoh yang sama sudah turun dari sekitar 350 menjadi 238 MB, dan pemeriksaan pustaka lama menunjukkan bahwa H.264 dengan laju beberapa megabit per detik memang umum.
Saya membangun Gitae untuk mendiagnosis gangguan website lebih dalam dari sekadar “up atau down”
Saya membangun Gitae untuk menjawab pertanyaan praktis: apakah website benar-benar tidak tersedia, atau masalahnya hanya lokal? Tool ini menggabungkan pengecekan VDS eksternal dari Moscow dan Helsinki dengan DNS, HTTPS/TLS, port, routing, IP, hosting, dan sinyal CMS, dengan memperlakukan setiap hasil sebagai petunjuk, bukan bukti mutlak.
Mengapa TypeScript bekerja sangat baik dengan Codex untuk software production
Untuk pekerjaan production, TypeScript memberi Codex sesuatu yang tidak bisa digantikan prompt bagus: kontrak yang dapat diverifikasi mesin, feedback compiler yang cepat, dan jalur yang lebih aman untuk refactor besar.
Saya Membuat Jurfi.com: Studio Browser untuk Draf Hukum yang Terstruktur
Saya membuat Jurfi.com untuk mengubah formulir dan template menjadi draf kerja hukum yang terstruktur di browser, menyimpan draf secara lokal, dan menjadikan peninjauan bagian yang jelas dari proses—tanpa mengklaim bahwa perangkat lunak dapat menggantikan pengacara.
Pendapatan SaaS Pertama Saya: Apa yang Sebenarnya Dibuktikan oleh Satu Pembayaran
Pembayaran pertama dari produk SaaS yang saya bangun sendiri nilainya kecil, tetapi mengubah kualitas bukti yang saya miliki. Inilah yang bisa divalidasi oleh satu transaksi, yang belum bisa dibuktikannya, dan mengapa pengulangan lebih penting daripada milestone itu sendiri.
Bagaimana Saya Menggunakan Codex untuk Meninjau 15 Proyek Tanpa Melepas Kontrol Manual
Meninjau 15 proyek software dulu berarti tenggelam dalam pengecekan berulang. Codex membantu saya memeriksa bug, test, SEO, terjemahan, lokalisasi, dan konsistensi jauh lebih cepat, tetapi setiap temuan AI tetap saya anggap sebagai petunjuk, bukan keputusan, dan setiap perubahan harus saya verifikasi sendiri.
Mengapa Saya Memakai 3–5% Terakhir Limit Codex di ChatGPT Plus untuk Tugas Engineering Besar — Pembaruan: pada musim panas 2026 cara ini berhenti bekerja
Pembaruan: pada musim panas 2026 workflow ini tidak lagi andal bagi saya. Pengukur 5 jam menghilang dari akun saya, hanya limit mingguan yang terlihat, dan tugas panjang bisa berhenti ketika limit mingguan habis.
Saya Menerbitkan 10.000 Artikel SEO dengan AI, Lalu Situs Saya Berakhir dengan Nol Halaman di Indeks Google
Publikasi massal dengan AI awalnya terlihat seperti jalan pintas: Google merayapi seluruh 10.000 URL artikel yang dibuat, tetapi hanya sekitar 1.000 halaman yang benar-benar terindeks, muncul di Search, dan menghasilkan trafik nyata. Setelah itu halaman-halaman tersebut ikut menghilang hingga seluruh situs mencapai nol halaman terindeks. Pengalaman ini mengubah cara saya memandang AI, SEO, terjemahan, dan kontrol editorial.
Lima Tahun dengan MacBook M1 8/256GB: Kenapa Saya Belum Menggantinya
Saya membeli MacBook M1 versi dasar dengan memori 8GB dan SSD 256GB seharga sekitar 1.000 dolar, lalu memakainya sekitar 15 jam per hari untuk pengembangan software, pekerjaan media, menulis, belajar, dan side project. Lima tahun kemudian, batasannya jelas terlihat, tetapi saya mempertimbangkan upgrade karena workload saya berkembang—bukan karena mesinnya sudah tidak berguna.
Saya menerjemahkan blog ke 20 bahasa dengan ChatGPT — lalu mulai mendapat traffic pencarian dari seluruh dunia
AI mengubah ekonomi publikasi multibahasa bagi saya. Dari blog satu bahasa, saya beralih ke artikel dalam hingga 20 bahasa, sehingga setiap versi lokal menjadi pintu masuk baru dari pencarian organik.
Saya Meluncurkan QRViz sebagai Generator QR Statis Gratis — dan Mengandalkan SEO untuk Distribusi
QRViz adalah generator kode QR statis berbasis browser, bukan platform kampanye. Saya meluncurkan qrviz.com sebagai generator kode QR gratis tanpa anggaran iklan, akuisisi berbayar, atau funnel monetisasi. Saya sepenuhnya mengandalkan SEO, sehingga distribusi menjadi ketidakpastian terbesar dari peluncuran ini.
Mengapa Mendapatkan Pelanggan Terasa Lebih Sulit daripada Membangun SaaS
Pelajaran langsung dari membangun SaaS: engineering memberi saya feedback yang jelas dan bisa diperiksa, sementara distribusi, positioning, messaging, dan retention membutuhkan loop yang berbeda dan jauh lebih sulit diprediksi.
Saya Membangun Produk SaaS Sendirian. Saat Pembayaran Aktif, Pekerjaannya Berubah
Saya membangun produk ini sendirian pada malam hari, akhir pekan, dan hari libur. Begitu pembayaran aktif, bug, onboarding, moderasi, retensi, dan kepercayaan bukan lagi masalah untuk nanti, melainkan bagian dari mengoperasikan produk nyata.
I Got 550 Views from One Image, Voiceover, and Subtitles: What Three Shorts Tests Actually Taught Me
A simple YouTube Short built from one static image, a voiceover, and subtitles reached 550 views. After three early tests, the useful lesson was not a proven formula, but a repeatable way to experiment without confusing a promising signal with proof.
Saya melihat hampir 6.000 lamaran pada satu lowongan Frontend di Moskow. Apa artinya — dan apa yang tidak bisa disimpulkan — tentang pasar TI Rusia
Pada akhir 2023, recruiter mengatakan kepada saya bahwa 300–500 pelamar per lowongan sudah tergolong banyak. Pada 20 Januari 2026, saya melihat posisi Frontend level menengah di Moskow mendekati 6.000 lamaran hanya dalam beberapa jam. Ini adalah pembacaan saya tentang sinyal yang benar-benar diberikan angka itu, batas kesimpulannya, dan cara saya menilainya sekarang sebagai kandidat.
Bagaimana DeepSeek mengubah workflow Node.js saya: 4.000+ commit dalam enam bulan
Grafik GitHub saya pada 2025 berubah dari nyaris kosong menjadi lebih dari 4.000 commit pada paruh kedua tahun itu. Artikel ini membahas bagaimana AI coding mengubah workflow side project Node.js saya, kapan ia menghemat waktu, kapan ia salah, dan mengapa verifikasi tetap lebih penting daripada kecepatan menghasilkan kode.
My First TikTok at 28: What a Vertical Product Demo Taught Me About Traffic
At 28, I posted my first TikTok and cross-posted the same product demo to Reels and Shorts. The useful lesson was not the view count: it was how much a 9:16 frame changes a desktop interface, and how to measure short-form traffic without confusing reach with acquisition.
Saya Membeli Domain Berusia 25 Tahun: 1.000+ Request per Hari Masuk ke URL Mati
Setelah meluncurkan situs pada domain yang pertama kali terdaftar pada 2000, saya melihat lebih dari 1.000 request harian ke URL lama dan lebih dari 900 error di Yandex Webmaster dalam semalam. Ini yang benar-benar bisa saya buktikan, alasan saya memakai 410 secara terarah, dan cara saya mengaudit domain lama sekarang.
Yandex sudah mengindeks 12.500 halaman, tetapi trafik dari Rusia nyaris nol: masalah Cloudflare yang saya lewatkan
Yandex sudah mengindeks 12.500 halaman, tetapi trafik dari Rusia nyaris nol. Saya mempersempit masalah ke jalur jaringan, mematikan proxy Cloudflare, memindahkan cache, kompresi, dan perlindungan dasar ke Nginx di VDS saya, lalu memulihkan aksesibilitas.
Situs Next.js statis saya menerima ribuan vulnerability scan per hari. Nginx nyaris tidak terpengaruh
Log saya penuh probe yang mencari WordPress, backdoor PHP, .env, dan .git/config. Pada setup Next.js statis + Nginx saya, sebagian besar berakhir sebagai miss murah dan 404, sementara beban CPU tetap sama selama pengamatan. Inilah arti sebenarnya bagi keamanan situs statis—beserta batas kesimpulannya.
Yandex Mengirim Trafik ke Situs Baru Saya Saat Google Nyaris Tidak Bergerak
Pada proyek baru yang sama, Google hanya menghasilkan sekitar 300 klik dalam periode panjang, sementara Yandex Webmaster menunjukkan kenaikan jelas, termasuk +500% klik. Yang penting adalah memisahkan apa yang benar-benar dibuktikan data dari apa yang masih berupa dugaan.
Yandex Mengindeks 4.278 Halaman Next.js Saya dalam Semalam — Apa yang Sebenarnya Terbukti
Yandex tiba-tiba mengindeks 4.278 halaman saya yang dibuat secara statis dengan Next.js. Itu adalah pencapaian teknis yang nyata, tetapi bukan bukti ranking atau traffic. Berikut hal yang benar-benar bisa disimpulkan tentang SSG dan programmatic SEO — dan hal yang tidak bisa.
Bulan Pertama Saya Belajar SEO: 632 Pengunjung Organik dan Pemeriksaan Trafik Bot
Saya memakai side project pribadi untuk mempersiapkan inisiatif SEO yang lebih besar di tempat kerja. Setelah sebulan ada 632 pengunjung organik, tetapi satu hari dengan 83 pengunjung menunjukkan betapa mudahnya trafik mencurigakan dan artefak analytics mengubah cara kita membaca hasil.
Saya Hampir Mengabaikan Yandex Webmaster. Dua Minggu Kemudian Trafiknya Lebih Besar daripada Google
Saya membuat side project Next.js untuk berlatih sebelum proyek kerja yang sangat bergantung pada SEO. Dalam dua minggu pertama saya mencatat 58 pengunjung dari Google dan 200 dari Yandex, lalu belajar memisahkan traffic, indexing, dan diagnostics.
Yandex Metrica vs Google Analytics: Mengapa Setelah Seminggu Saya Lebih Memilih Metrica
Saya menjalankan Google Analytics dan Yandex Metrica secara bersamaan selama satu minggu di proyek baru. Metrica lebih sering saya gunakan terutama karena Webvisor dan session replay, tetapi itu adalah kesimpulan tentang workflow saya, bukan bukti bahwa satu platform lebih baik untuk semua orang.
Yandex merayapi blog saya tanpa /en. Redirect 308 mencegah URL berakhir sebagai 404
Setelah menambahkan sekitar 3.000 halaman /en/blog/... ke sitemap, saya melihat Yandex mencoba jalur pasangannya di /blog/.... Redirect 308 yang sudah ada mencegah request tersebut berakhir di 404. Pelajaran utamanya bukan bahwa Yandex “merusak” sitemap saya, melainkan seberapa besar ketahanan yang bisa diberikan oleh lapisan redirect yang rapi.
Dua situs baru melonjak di Google, lalu trafik turun sekitar 10× dalam beberapa hari
Dalam dua peluncuran berturut-turut, impresi Google langsung melonjak lalu trafik turun kira-kira sepuluh kali hanya beberapa hari kemudian. Polanya nyata; saya tidak bisa membuktikan bahwa penyebabnya adalah “Google honeymoon”.
2.000 halaman hilang dari pencarian Yandex dalam semalam. Ini yang sebenarnya bisa saya simpulkan
Di Yandex Webmaster saya melihat 2.000 dari sekitar 8.000 halaman tidak lagi ikut dalam pencarian. Penurunan 25% memang mencolok, tetapi pelajaran terpenting adalah tidak menyamakan perubahan status pencarian yang terlihat dengan penyebab yang sudah terbukti.
Saya Mengajukan Lebih dari 10 Pertanyaan di MoscowJS 66 dan Memenangkan Dua Hadiah
Di MoscowJS 66 saya mengajukan lebih dari 10 pertanyaan saat talk tentang bot Telegram, LangChain.js, arsitektur site builder, dan pengujian tipe TypeScript. Dua pertanyaan dipilih sebagai yang terbaik dan saya pulang membawa dua hadiah.
Yang Saya Bawa Pulang dari PiterJS #79: Monolit Legacy, FrontOps, Performa Web, dan Pertanyaan yang Lebih Baik
PiterJS #79 di St. Petersburg berfokus pada pemeliharaan sistem yang sudah ada: monolit legacy, FrontOps, dan metrik performa web. Saya pulang membawa catatan praktis, dua hadiah dari sesi Q&A, dan pengingat bahwa meetup offline paling bernilai ketika kita benar-benar ikut terlibat.
I Launched a Next.js Blog in 21 Languages. Here’s What 439 Google Impressions Actually Told Me
In its first week, my 21-language Next.js blog recorded 439 Google impressions and 5 clicks. Later, 436 of 471 pages were indexed. The useful lesson was learning to separate visibility, indexing, and actual search performance.
MoscowJS 65 setelah enam tahun bersama JavaScript: mengapa saya masih datang ke meetup lokal
Pada 5 Juni 2025 saya menghadiri MoscowJS 65 di T Bank. Empat talk membahas AI dari sudut berbeda, tetapi kesimpulan utama saya lebih sederhana: meetup lokal masih memberi sesuatu yang tidak sepenuhnya bisa digantikan oleh dokumentasi dan rekaman.