
Farhan Munim
Farhan Munim is a seasoned analyst and developer based in London, UK.

Farhan Munim is a seasoned analyst and developer based in London, UK.
More than seventy short chapters that give you the vocabulary and mental models engineers use when they talk about servers, networks, pipelines and architecture. Each one takes two or three minutes and links back to things you already run.
From zero to multiple live websites on Hetzner Cloud, with Cloudflare DNS, WordPress, CloudPanel, and Coolify. Written for someone who has never touched a server before.
Umami running on a Hetzner VPS through Coolify, tracking three sites, with five years of Google Analytics history rebuilt inside it – and everything I’d do differently.
Somewhere along the way, “Finance Analyst” stopped describing a specific role and started describing almost every role in finance. As someone who’s spent years working under variations of that title, I think we’ve got it wrong.
Quick Docker commands I use to reclaim disk space on my VPS by removing unused images, containers, and build cache while keeping project volumes intact.
If you’ve tried using PERSONAL.XLSB in Excel, you may have noticed it doesn’t always load as expected. Quick Access Toolbar buttons appear, but they don’t do anything. This can happen for various reasons – Excel might silently skip loading the workbook, or it might conflict with settings.
I wanted a simple, reliable way to back up everything on my Coolify server – config, projects, Docker volumes, WordPress files – to my Synology NAS every night. No exposed ports. No external services. Just a secure, private connection.
If you’re running WordPress through Coolify and need direct access to your files, SFTP is the simplest way to get in.
You want to store sensitive keys (like Turnstile site + secret keys) in environment variables, then expose them inside WordPress as constants — without hardcoding anything in your repo.
If you’re running WordPress on Coolify (with Traefik as the reverse proxy), you may hit upload or memory limits when importing content or uploading large files. The fix is to append a few php_value directives to your .htaccess file using the built-in Coolify terminal.
A fresh WordPress install works – but it’s not clean, not optimised, and definitely not secure.
If your WordPress posts import fine but media doesn’t, Cloudflare might be blocking it without telling you.
Every now and then, I need to know whether a machine actually has internet access before doing anything else. Usually that’s before calling an API, syncing data, or pulling something external that would otherwise just… hang. There are a few ways to approach this, but I tend to keep it very simple.
It’s been a minute since my last post, so I wanted to check in and share what’s been happening behind the scenes. The past few months have been some of the busiest of my life – but all for good reason.
Add a clean developer-style grid behind your layout using pure CSS. Learn how to use body::before with gradients for a responsive, minimal background.
Feeling watched online? Here’s why a VPN has gone from “useful” to essential in the UK – and which ones I actually trust.
When building a blog layout in WordPress with Bricks Builder, you might want to show the latest post as a featured post and then list all other posts below it. The challenge is excluding the most recent post from the second query while keeping filters and pagination intact. This guide shows the simplest way to handle this using two queries.
Randomly got an “Error No postId provided!” error in Bricks? Here’s a workaround!
Here are the queries required to list your Bricks post loop items, grouped by category!
Serve only the assets you need on each page, slash load times, and boost core web vitals with a compact conditional-enqueue pattern any theme can adopt.
A WordPress child theme is more than just a place to write custom CSS. With a well-structured blueprint theme, you can automate site settings, disable comments, clean the admin UI, and more. Here’s how I use a blueprint child theme to streamline every new build.
My WordPress hosting renewal was coming up, so I did what most people would do – I searched for the best value hosting options. Time and time again, one name kept surfacing: Hostinger.
If you’re serious about WordPress security and especially if you’re running client sites, there’s a tool I’ve recently added to my stack that deserves your attention: the Cloudflare WAF Rules v3 from Web Agency Hero.
Here’s how I got my ROG button to launch Armoury Crate as it’s supposed to and also get the system controls working!
Want to ensure a clicked Bricks (nestable) tab is still “clicked” (active) on page refresh? Here’s my simple JS solution!
Learn how to access your HikVision NVR directly through your browser using HikVision’s recommended method and also an alternative.
Here’s how I integrated Uptime Robot API with WordPress to automate website uptime monitoring, achieve unlimited data retention, and display statuses effortlessly.
Struggling with ACCA Strategic Business Leader (SBL) exam prep? Meet ACCA SBL Mentor GPT—a tailored tool designed to guide you through complex concepts, case studies, and exam techniques. Simplify your study journey today!
Want your website’s text to look perfect on any screen? This guide will show you how to use my CSS-only fluid typography generator. Just copy and paste the code, tweak a few values, and you’re good to go!
Since posting the last video on YouTube, I have received over 50 messages about creating a video for a minimal theme toggle for the site. Well here’s the video!
Yes, really! For my first YouTube video, I decided to rebuild the Dusk Framer Portfolio Template by Mateusz Nieckarz . Check it out here:
Setting up a custom domain email with iCloud+ and Cloudflare is a straightforward process. Follow these steps to get started…
Most other devices require you to press one of the function key at a certain time or even disable some options, fortunately the X13 is extremely easy to get into the boot menu.
Here’s a quick snippet to list all WordPress post categories and the number of posts within the categories.
Looking to enhance your WordPress login, registration, and password recovery pages with Cloudflare’s Turnstile CAPTCHA to combat spam? Here’s a straightforward way to do it using a simple code snippet!
Accidentally deleted or moved your Windows Screenshots folder and now can’t automatically save screenshots? Here’s a great fix!
Want to manually back up your LocalWP blueprints? Here’s where to find it on Windows!
Here’s a quick guide on how to make sure you can send and receive emails from your new custom email address created with Siteground and Cloudflare domain.
Noticed you cannot see light grey colours in Windows all of a sudden? Here are 2 fixes for you to try!
Want to disable automatic WordPress core, plugin, and theme updates to make sure your website doesn’t break after a new update? Here’s how!
I came across this really cool expanding button menu on scroll on the Assemble site and thought I’d try to re-create it with Bricks…here it is!
Want to easily add unique (human) post view counts somewhere in your blog without using any plugins? Also want it to start at a specific number? Well look no further!
Have you wanted to output the value of a post’s custom field from the back-end into the front-end, such as an an SVG code or a URL? Here’s how!
This is an excellent CSS only solution when used alongside Brick’s pagination element with AJAX. This means that the selected view style remains the same even when flicking through the pagination.
Need to return the most recent field entry of a form submission for a specific field and for the current logged-in user? Here’s the code!
Writing a function which depends on the count of a Bricks Builder form submission? Here’s how to get the count thanks to Jenn Lee from the Bricks team!
Have Cloudflare Turnstile enabled on your site but want to bypass the actual authorisation process whilst you’re still developing?
Have you recently installed WordPress and tried to create a new page only to be greeted by “Publishing failed. The response is not a valid JSON response”? Here’s how to fix it!
Wondered how to organise your CSS easily and other custom code without using a paid code editor plugin or any plugin at all? Well, here’s a great, free way you can!
If you’re like me and don’t use many of the wp-admin menu links or simply want to have your most used links in 1 place, you can use this post to learn how to do just that without any extra plugins or “hacks”.
Many users like myself have ran into the never-ending “Downloading WordPress” screen in LocalWP. As of Version 8.2.1+6583, there is still no official fix for this but I after testing everything listed in the Community page and what I could think of, I found something that works!
If you need a way to check the current page type to set some conditional functionality (such as using Bricks Builder Conditions), here’s a useful snippet!
Tried to use a Bricks filter with which has Conditions applied to it but showing up as “undefined”? Here’s a fix as of 1.9.6.1.
Here are my Bricks Builder settings for fresh installs.
Want to increase the file upload size or execution times? Here’s an easy way!
Want to easily increase the WordPress memory limit? Here’s the proper way to do it.
Did you get a “the link you followed has expired” error after trying to upload theme in WordPress? Here’s what caused my issue and how I fixed it!
Notice Balloon.css tooltips only render when logged into WordPress, but not anytime else? Here’s a workaround!
Want to output all tags of a post except for a specific tag? Use this snippet to do just that!
Have you ever come across a website where the year in the copyright disclaimer has elapsed? Well that won’t happen to you!