Archives
All the articles I've archived.
-
4 Root Causes Hiding Behind One Airflow Error
6 min read airflowA debugging session that started with one Airflow error and uncovered four cascading failures across Docker images, Kubernetes caching, namespace boundaries, and Python string iteration.
-
Chasing a Transitive Dependency Vulnerability
3 min read securityHow a vulnerability in fast-xml-parser affected my blog through @astrojs/rss, and why transitive dependencies are quietly terrifying.
-
Managing DNS as Code with DNSControl
9 min read dnsHow I stopped editing DNS records in web UIs and started versioning them in Git. Includes fixing Porkbun provider quirks and handling ACME challenges.
-
Building Almanac Games: Scraping PSN with Duct Tape and Playwright
4 min read devI wanted to show my PlayStation trophies on my blog. It took a Python scraper, Cloudflare cookie theft, and way too many regex fixes.
-
Redesigning my blog, part 5: what I learned
5 min read astroThe last post in this series. What worked, what got immediately deleted, and what I'd do differently.
-
Redesigning my blog, part 4: the small stuff
6 min read astroDropdown navigation, a categorized tech stack, file organization, and auto-publishing. The polishing work nobody notices but everyone feels.
-
Redesigning my blog, part 3: from stock theme to terminal blueprint
6 min read astroThe big visual overhaul. New fonts, new colors, terminal hero, data pipeline cards, two-rail layout, and all the bugs that came with it.
-
Redesigning my blog, part 2: the blogroll
5 min read astroI built a terminal-styled blogroll with ASCII art, pulsing RSS indicators, and OPML export. Blogrolls are back.
-
Redesigning my blog, part 1: the audit
4 min read astroBefore changing anything visual, I spent time auditing my AstroPaper blog for security, SEO, accessibility, and performance issues. Here's what I found.
-
Why I Left Zola's Simplicity for Astro's Power
4 min read astroI moved from Hugo to Zola for simplicity. Then I moved to Astro for flexibility. Here's why I traded a Rust binary for a Node_modules folder.
-
The Art of Yak Shaving
1 min read homelabI tried to change a font. Three hours later I was reading Linux kernel docs.
-
Own Nothing and Be Happy? I'll Pass.
1 min read homelabWhy I run a homelab and hoard my own data instead of trusting the cloud.
-
Over-Engineering a Clap Button, Again
4 min read astroThe clap button worked, but KV had a race condition. I migrated the backend to Cloudflare D1 for atomic writes and hashed IPs.
-
Auto-Publishing Scheduled Posts with GitHub Actions
8 min read astroMy Astro blog already supports scheduled posts, but I still had to push to master to actually publish them. Here's how I fixed that with a cron job and a tiny Node script.
-
The Lazy Sysadmin's Guide to Docker Maintenance
2 min read dockerHow I sleep soundly while my server updates itself. A guide to Watchtower and Telegram notifications.
-
You Can't Stack Overflow a Deadlift
3 min read lifestyleI recently started going to the gym. Being a beginner again after years of being a 'Senior' Engineer was a humbling reality check.
-
Why I Moved My AI Brain to a Homelab
4 min read homelabFrom a monthly VPS bill to a powerful local server. Why I migrated my AI assistant (OpenClaw) to my homelab.
-
Bringing Interactivity to a Static Blog: The Clap Button
4 min read astroStatic sites are fast but lonely. I added a Medium-style Clap button using Astro, Preact, and Cloudflare Workers to fix that.
-
Why "Dumb" Agents Are Winning: The Case for Shell-First AI
5 min read ai-agentsSmart agents are great, but simple ones actually ship code. Why tools like Pi and OpenClaw beat complex LSP-based assistants.
-
The Reality of AI Pair Programming: It's Not Magic, It's Management
2 min read ai-agentsVibe coding is dangerous. AI isn't a senior engineer replacement, it's a junior that needs a manager. Here's what I learned migrating my home server with an AI agent.
-
Reducing OpenClaw Heartbeat Token Usage
4 min read openclawRunning an AI agent 24/7 sounds cool until you see the token bill. Here's how to cut your heartbeat costs.
-
Adding a Links Section to My Blog
3 min read AstroI built a links section to share interesting things I find around the web, with my own commentary.
-
Pair Programming with a Lobster: My Week with Clawdbot
3 min read aiIt’s weird, it lives in my server, and it runs 100 laps when it makes a mistake. Here is what it's like to code with an autonomous agent.
-
Automating My Blog Workflow with Bun
7 min read bunHow I killed the friction of writing by building a custom CLI generator for Astro using Bun.
-
Unlocking Frontier Power: How to Run Amp Using CLIProxyAPI Without Spending Credits
7 min read AMPThe landscape of AI coding agents is shifting faster than most developers can keep up with.
-
Migrating from Hugo to Zola
4 min read HugoYet another migration post, this time from Hugo to Zola.
-
Several Cool Things You Can Do with F-Strings in Python
3 min read PythonF-strings are a powerful and easy-to-use way to format strings in Python.
-
Upgrade Major PostgreSQL version on Docker
3 min read PostgreSQLEasily upgrade PostgreSQL in docker, without losing data
-
2023
1 min read New YearHello, 2023!
-
Hey there
2 min read LifeHey there... Long time no see.
-
What happened to self-hosted blogs?
2 min read RantPlatforms such as Medium have made the majority of original self-hosted blogs a matter of the past. Personally, for the whole blogging community, I believe that is terrible.
-
Your Own Python Calendar
1 min read PythonThe Python calendar module defines the Calendar class. This is used for various date calculations as well as TextCalendar and HTMLCalendar classes with their local subclasses, used for rendering pre-formatted output.
-
Get the Most of Floats
1 min read PythonFloats also have several additional methods useful in various scenarios
-
Format text paragraphs with textwrap
1 min read PythonPython's textwrap module is useful for rearranging text, e.g. wrapping and filling lines.
-
Unicode Character Database at Your Hand
1 min read PythonPython's self-explanatory module called unicodedata provides the user with access to the Unicode Character Database and implicitly every character's properties.
-
Functional Particularities of Python
3 min read PythonParadigms of functional programming as applied to Python
-
Debug Bad Commit with Binary Search
2 min read GitThe git bisect tool helps to identify the commit that introduced a bug.
-
Number Extensions in Javascript
2 min read JavascriptNumber benefits from several changes in ES6, providing several new methods, saving us from writing our own potentially error-prone implementations.
-
New Blog, New Domain
1 min read rant
-
CSS Grid on Production
2 min read CSSCSS Grid which allows far greater control than we've ever had before
-
New interesting data structures in Python 3
5 min read Pythontake a look at some data structures that Python 3 offers, but that are not available in Python 2
-
Keyword argument demystify
3 min read PythonThere’s a lot of baffling among Python programmers on what exactly 'keyword arguments' are
-
Looping techniques in Python
1 min read PythonPython has multiple techniques for looping over data structures
-
Enhance your tuples
1 min read PythonStandard Python `tuple`s are lightweight sequences of immutable objects, yet their implementation may prove inconvenient in some scenarios
-
Get more with collections!
1 min read PythonIn addition to Python's built-in data structures (such as `tuple`s, `dict`s, and `list`s), a library module called `collections` provides data structures with additional features, some of which are specializations of the built-in ones
-
There is more to copying
1 min read PythonAn assignment only creates a binding (an association) between a name and a target (object of some type). A copy is sometimes necessary so you can change the value of one object without changing the other (when two names are pointing to the same object)
-
Implementing weak references in Python
1 min read PythonNormal Python references to objects increment the object's reference count thus preventing it from being garbage collected
-
Translating Scanner tokens into primitive types
1 min read JavaTranslating Scanner tokens into primitive types
-
Listing a file system's root directories
1 min read JavaListing a file system's root directories
-
The Console class
1 min read JavaThe Console class
-
Next, Function or Method ?
1 min read PythonNext, Function or Method ?
-
Generator Expressions
2 min read PythonGenerator Expressions
-
Yield Keyword
1 min read PythonYield Keyword
-
How to Build Nginx with Google Pagespeed Support
4 min read NginxHow to Build Nginx with Google Pagespeed Support
-
What are Generators?
1 min read PythonWhat are Generators?
-
Using an interface as a parameter
1 min read JavaUsing an interface as a parameter
-
Using bounded type parameters in generic methods
1 min read JavaUsing bounded type parameters in generic methods
-
Using the Deprecated annotation
1 min read JavaUsing the Deprecated annotation
-
Diamond Operator in Java
1 min read JavaDiamond Operator in Java
-
Lambda Functions in Python
5 min read PythonLambda Functions in Python
-
Altering format string output by changing a format specifier's argument_index
1 min read JavaAltering format string output by changing a format specifier's argument_index
-
Add Autocorrect to Git
1 min read GitAdd Autocorrect to Git
-
Future of Interface in Java 9
4 min read JavaInterface in Java 9
-
More about Interface in Java 8
4 min read JavaInterface in Java 8
-
Spring Boot in a Single File
5 min read JavaSpring Boot in a Single File
-
Manage Your JVM Environment with SDKMAN
3 min read JavaSDKMAN or SDK Manager for JVM
-
Updating interfaces by using default methods
1 min read JavaUpdating interfaces by using default methods
-
Converting Stacktrace to String
1 min read JavaConverting Stacktrace to String
-
Synchronized Statement in Java
1 min read JavaUsing synchronized statements
-
Function in Python are First-Class Object
9 min read PythonPython’s functions are first-class objects
-
Django 1.11 Release Note a Reading
1 min read DjangoDjango 1.11 Release Note a Reading
-
Skip Yaourt Prompts on Arch Linux
1 min read YaourtSkipping Pain in The Ass Yaourt Prompts
-
One Hell Named JSON
1 min read JSONJson with a single quote
-
Using Google URL Shortener with Your Domain! For Free!!
5 min read URLUsing Google URL Shortener with Your Domain! For Free!!
-
Lightning Intro To Go
14 min read GoLightning Intro To Go
-
Do Schemaless Databases Really Exist?
5 min read SchemalessThere’s no such thing as a schemaless database
-
JS & Dom - Tips & Tricks #3
2 min read Javascript -
JS & Dom - Tips & Tricks #2
2 min read Javascript -
JS & Dom - Tips & Tricks #1
2 min read Javascript
-
Queue in Python - Part 3
1 min read PythonQueue in Python
-
Queue in Python - Part 2
1 min read PythonQueue in Python
-
Queue in Python - Part 1
1 min read PythonQueue in Python
-
Fix Java Unsupported major.minor version 52.0 on Ubuntu
2 min read JavaFix Java Unsupported major.minor version 52.0 on Ubuntu
-
Enable Spark Context on Your Ipython Notebook
1 min read SparkEnable Spark Context on Your Ipython Notebook
-
Fix GDM Service Can't be Enabled on Arch Linux
1 min read Service -
Remove Entry from Known Host
1 min read Linux
-
Installing or Upgrading PostgreSQL 9.4 on Ubuntu 14.04
1 min read Linux
-
Fix Locale Settings Error On Ubuntu Server 14.04
1 min read Linux
-
EAFP Coding Style in Python
1 min read Python -
Installing Varnish with nginx on Ubuntu 14.04
3 min read Linux -
Disabling Apport Error Reporting on Ubuntu
2 min read Linux
-
Do Git Pull When Git Push Failed
1 min read Git
-
Essentials Javascripts Link
1 min read Javascript -
PostgreSQL 9.4 failed to start on Manjaro
1 min read Linux
-
MariaDB error failed to start, errno 12
2 min read Linux -
Vagrant's hosted Django can't be accessed
1 min read Vagrant
-
Minifying Your JavaScript with Uglify
2 min read Javascript -
HTTPS Everywhere!
3 min read Web
-
Using Git Like A Boss
3 min read Git -
Terbaru di Wordpress 3.8
2 min read PHP -
Fitur baru di PHP 5.6
4 min read PHP -
Hal yang tidak kamu ketahui tentang mongodb
3 min read Database -
Push Notifications untuk Setiap Error di Laravel
1 min read PHP -
Terbaru di Wordpress 3.7
3 min read PHP -
Kompresi CSS menggunakan Python
2 min read CSS -
Bundled Javascript di Yii Framework
2 min read PHP -
Menggunakan Hashing API untuk Hash Password di PHP 5.5
4 min read others