This is where I document how things actually work
I am Ruhani Rabin.
I have been building software, websites, infrastructure, and digital products for close to three decades.
Rabin.blog is where I keep the technical side of that journey.
It is not really my professional website, and it is not meant to be a polished publication about one narrow subject. It is closer to a long-running technical journal - things I build, problems I solve, tools I test, systems I change, and occasionally things I break badly enough that they are worth documenting.
Some articles start as proper guides.
Others start because something stopped working at 1 AM, and I do not want to solve the same problem twice.
$ whoami
▗▄▄▄ ▗▄▄▄▄ ▄▄▄▖
▜███▙ ▜███▙ ▟███▛
▜███▙ ▜███▙▟███▛
▜███▙ ▜██████▛
▟█████████████████▙ ▜████▛ ▟▙
▟███████████████████▙ ▜███▙ ▟██▙
▄▄▄▄▖ ▜███▙ ▟███▛
▟███▛ ▜██▛ ▟███▛
▟███▛ ▜▛ ▟███▛
▟███████████▛ ▟██████████▙
▜██████████▛ ▟███████████▛
▟███▛ ▟▙ ▟███▛
▟███▛ ▟██▙ ▟███▛
▟███▛ ▜███▙ ▝▀▀▀▀
▜██▛ ▜███▙ ▜██████████████████▛
▜▛ ▟████▙ ▜████████████████▛
▟██████▙ ▜███▙
▟███▛▜███▙ ▜███▙
▟███▛ ▜███▙ ▜███▙
▝▀▀▀ ▀▀▀▀▘ ▀▀▀▘Name Ruhani Rabin
Based in Kuala Lumpur, Malaysia 🇲🇾
Experience Technology since the 1990s
Web Since the early web
WordPress Since 2005/2006
Linux Daily driver
Current OS NixOS
Editor VS Code + Obsidian
Notes Markdown
Kernel Linux 6.18.54
Shell zsh 5.9.1
Terminal ghostty 1.3.1My work has moved through software development, networking, web applications, infrastructure, product development, eCommerce, payments, SaaS, media, WordPress, automation, AI, and product leadership.
The titles changed over the years.
The part I enjoyed never changed much:
Understanding how systems work and figuring out how to make them work better.
What I work with today
My setup changes regularly because experimenting with tools is part of the point.
desktop:
primary_os: NixOS
other:
- Windows
- CatchyOS, Fedora
- and other Linux distributions
publishing:
- Hugo
- Astro
- Quartz
- WordPress
- Markdown
- Git
infrastructure:
- Proxmox
- Docker
- Nginx
- Cloudflare
- Tailscale
network:
- Technitium
- Reverse proxies (NPM)
- VLANs
- Self-hosted services
automation:
- Bash
- PowerShell
- Python
- APIs
- workflow automation
- AI-assisted tooling
notes:
- Obsidian
- Markdown
- Git
- SilverbulletThis is not supposed to be an exhaustive technology stack.
It is more of a snapshot.
Six months from now, something in that list will probably be gone.
That is usually how I learn.
How I got here
flowchart TD
A["💾 1990s<br/>Software · Databases · Networks"]
B["🌐 2000s<br/>Web · PHP · WordPress"]
C["📱 2010s<br/>Products · SaaS · Mobile"]
D["🧠 2020s<br/>Linux · Self-hosting · AI"]
A --> B --> C --> D
1990s - Software before “the web” was the job
I started with programming, databases, networking, and software systems.
My academic background was originally physics and mathematics, followed by computer programming and computer studies.
Early work involved things like FoxPro, Cobol, network administration, databases, and engineering software.
At one point I built software for civil engineering and bridge design. That was Delphi, Object Pascal. Later on, PowerBuilder and Oracle.
This was well before everything became a browser tab.
What I learned during that period still affects how I approach technology today:
understand the system before adding more things to it.
2000s - The web took over
By the early 2000s, most of my work had shifted toward web applications.
PHP, ASP.net, Coldfusion, databases, JavaScript, servers, deployment systems, APIs, CMS platforms, eCommerce, and increasingly larger web projects became normal work.
I started working with WordPress around 2005/2006.
At the time, WordPress was considerably smaller and simpler than the platform it became later.
I contributed plugins, built sites, maintained servers, worked with agencies and enterprise clients, and watched WordPress grow from blogging software into an application platform and eventually an enormous commercial ecosystem.
Somehow, I am still using it.
2010s - Technology became product
Eventually I stopped spending most of my time directly writing software and started spending more of it deciding what software should be built.
That took me through:
- Mobile products
- Digital payments
- eCommerce
- SaaS platforms
- Cloud services
- Consumer products
- Large product teams
- International engineering teams
- Product strategy
- UX strategy
- Analytics with intelligence
- Automation
I have worked as a technology architect, product director, SVP of product development, chief product officer, and senior general manager overseeing digital products.
The technology mattered.
Note
But I increasingly realized that most difficult technology problems are not really technology problems.
They are usually problems involving decisions, assumptions, complexity, users, or priorities.
That eventually became a large part of how I approach product work today.
2020s - Back to systems
Oddly enough, after years of managing increasingly large products and teams, I found myself becoming interested in infrastructure and systems again.
Linux became my primary desktop environment.
I built out my homelab.
I started self-hosting more services.
I moved more of my writing into Markdown and Git.
I experimented with static publishing.
I rebuilt websites.
I automated repetitive work.
And, naturally, AI entered almost every part of the technical landscape.
The tools are different from the 1990s.
The underlying curiosity is roughly the same.
Why Rabin.blog exists
My main website is RuhaniRabin.com.
That is where I write more sophisticated articles about product strategy, UX, SaaS, WordPress, AI, automation, retention, and the work I do with product teams.
Rabin.blog serves a different purpose.
This is my technical journal.
I write here when I discover something useful enough that I want to preserve it.
That usually means things like:
- Linux configuration and troubleshooting
- NixOS
- WordPress
- Web architecture
- Static site generators
- Self-hosting
- Proxmox and Docker
- Networking
- Automation
- Development tools
- Publishing workflows
- AI tools
- Scripts
- Hardware
- Strange bugs with strangely simple fixes
I am not trying to turn every post into a definitive guide.
Sometimes the useful answer is simply:
This broke. Here is why. Here is what fixed it.
That is enough.
My publishing setup
The site itself is part of the experiment. This site have gone through 5 major platform changes since 2017.
Rabin.blog currently uses a fairly simple publishing workflow:
flowchart TD
A["📝 Obsidian"] --> B["📄 Markdown"]
B --> C["🌿 Git"]
C --> D["⚙️ Hugo"]
D --> E["⚡ Cloudflare"]
E --> F["🌐 Rabin.blog"]
I write locally in Markdown.
The source stays readable without the publishing system.
Git keeps the history.
Hugo turns it into the website.
And Cloudflare delivers it to you.
The build normally takes seconds.
I like this because the content remains mine in the least interesting technical format possible: plain text files.
No database export is required to understand my own writing.
There is also a digital garden
I maintain a separate digital garden at mind.ruhanirabin.com.
That site is even less formal.
I use it for:
- fixes
- notes
- snippets
- questions
- decisions
- project notes
- technical observations
- things I am still figuring out
The rough relationship looks something like this:
flowchart TD
A["🧠 mind.ruhanirabin.com<br/>Raw notes · fixes · experiments"]
B["🛠️ Rabin.blog<br/>Technical guides · lessons learned"]
C["🎯 RuhaniRabin.com<br/>Product · UX · AI · strategic thinking"]
A -->|Developed into| B
B -->|Broader insight becomes| C
Not everything moves through that entire path.
Most things should not.
But it gives me a useful mental model for where something belongs.
What I believe about technology
After enough years working with technology, I have become fairly skeptical of solutions that begin with the tool.
I generally prefer:
simple systems over clever systems
portable data over proprietary formats
open standards over unnecessary lock-in
boring technology that works over fashionable technology that creates work
automation where repetition exists
AI where it removes real friction
and
fewer moving parts whenever possible
I also believe understanding why something works is more valuable than memorizing the command that makes it work.
Which is partly why this blog exists.
WordPress is still here
Despite using Hugo, Astro, Quartz, Markdown, Git, and static hosting extensively, I have not abandoned WordPress.
Quite the opposite.
I have worked with WordPress for around two decades, contributed to plugins, worked with enterprise installations, helped organize WordPress events, and watched the ecosystem evolve through several generations.
My main website still uses WordPress.
Just not in the traditional way.
Today, WordPress runs as the detached content backend for RuhaniRabin.com, while Astro builds the public frontend from its REST API.
That setup probably explains my relationship with technology reasonably well.
I rarely care whether something belongs to one technology camp or another.
I care whether the architecture makes sense.
What you will find here
There is no rigid editorial calendar.
There is no requirement that every article fit a content marketing funnel.
If I spend several hours solving something that should have taken fifteen minutes, there is a reasonable chance it will become a post.
You will mostly find writing around:
- Linux and NixOS
- WordPress
- Astro and Hugo
- self-hosting and homelabs
- Proxmox
- Docker
- networking
- automation
- AI-assisted workflows
- development tools
- open-source software
- publishing systems
- practical technology decisions
Some posts are detailed.
Some are short.
Some will age badly because technology does that.
Where possible, I update them.
The professional side
Technology is only one part of my work.
My professional focus today is primarily around product leadership, UX, retention, SaaS, WordPress products, AI, and automation.
I work with founders and product teams on questions like:
- What should we build?
- What should we stop building?
- Where are users getting stuck?
- Why is the product becoming unnecessarily complicated?
- Which UX problems are actually product problems?
- Where does AI genuinely help?
- What can be automated without creating another mess?
For that side of my work, visit:
One last thing
I have been online long enough to know that websites change, platforms disappear, companies get acquired, APIs get shut down, and perfectly good software eventually gets “improved” into something considerably worse.
So I try to keep the important parts simple.
Write in Markdown.
Keep the source.
Use Git.
Own the domain.
Back things up.
And document the weird fixes.
That has worked surprisingly well so far.