WordPress & WooCommerce
Plugin architecture below the theme: order and product data, HPOS, and hooks other developers build on.
2015 โ now ยท still shipping
I'm a senior full-stack engineer and co-founder of Pigment Dev, eleven years and a few hundred projects in. I build across the whole stack, from the code to the database to the server underneath, and I don't disappear once it ships.
// verified-figures
Software on thousands of sites, downloaded more than 207,000+ times, still shipping this week. Every figure is counted.
Counted on 30 Sept 2026 from WordPress.org, GitHub and addons.mozilla.org. Downloads are 195,000+ from WordPress.org plus 11,000+ GitHub release assets. Repositories are 56 own and 27 forks across three accounts. Projects: 400+ client projects delivered since 2015, counted by hand from my project archive on Google Drive, which keeps every project year by year. Each project is counted once; repeat orders of the same build, small fixes and support tasks are left out.
// what-i-do
Ten areas, from the plugin layer down to the server it runs on. Most projects touch three or four of them at once.
Plugin architecture below the theme: order and product data, HPOS, and hooks other developers build on.
Node, Express, React and PostgreSQL. Applications small enough to reason about and cheap enough to host.
cPanel, HestiaCP, LiteSpeed, Nginx, Redis and OPcache. Migrations that do not lose a request.
Tracing a slow site across code, database, cache, PHP and server until the real cause turns up.
Native Swift and SwiftUI apps: TunnelGuard for per-domain VPN split tunnelling, Slipnet, a DNS-tunnel VPN client, and BDM, a multi-segment download manager with Chrome, Firefox and Safari extensions.
The same Swift and SwiftUI toolchain, pointed at iPhone and iPad.
Desktop apps in AutoIt for things Windows never shipped: a bulk folder icon changer, a Persian numpad switcher, a show-desktop replacement for Windows 11 and a number-format fix for Windows 10.
Firefox, Chrome and Safari extensions, published and maintained since 2017.
Telegram bots, Google Apps Script and Cloudflare Workers, where a small edge service beats a server.
Payment gateways, SMS and OTP flows, marketplace APIs and spreadsheet-driven catalogues.
// work
WordPress plugins, macOS apps and one PHP file that will not die. Every figure below comes from WordPress.org or GitHub.
WordPress plugin
5K+ installs4.8/5 from 34v2.2.6since 2020
HTML and PDF invoices, packing slips, shipping labels and inventory reports for WooCommerce.
Published by Pepro Dev; I lead its development and maintenance.
macOS app
v2.7.0March 2026GPL-3.0macOS 13+
Exclude specific domains from your VPN tunnel on macOS, without a kernel extension.
Developer tool
17 starsv3.8.2one PHP file
Pulls a file straight from a URL onto your server, with progress and a self-destruct switch.
WordPress plugin
v1.5.4Sep 2025Maintenance
WordPress and WooCommerce notifications into Telegram channels, groups, bots or private chats.
WordPress plugin
90+ installsv3.2.0
Verifies a mobile number or email by one-time code before a submission is saved.
macOS app
SwiftSwiftUI
A native GUI for the SlipNet DNS-tunneling client, with a resolver scanner and a system SOCKS toggle.
// release-record
Newest first. The tagged, dated record starts in 2020, when the plugins went onto WordPress.org. Open a year to see what shipped.
Ultimate Invoice was first published in 2020. It has tagged releases on the record in 2020, 2022, 2024, 2025 and 2026, four of them this year.
// problems-i-get-called-for
Three real ones, with what actually changed. None of these were a plugin setting.
100/100 โ 15/100account CPU, in one day
A download store with 30 million unique visitors a month was returning 503s most of every business day, its hosting account pinned at 100/100 CPU. Loading the opcode cache that had never been enabled brought it to about 15/100 within minutes; the rest of the day went to 21% of traffic hitting an unindexed LIKE search across 757,000 rows, and a counter plugin bypassing the page cache on every view.
12 sites, 1 VPSone repeatable checklist
Twelve production sites moved from cPanel to HestiaCP on a single VPS, including a Node and pm2 application and an SSO service, all by one written checklist: Redis with per-site cache prefixes, off-provider backups and Worker-based uptime monitoring, the same steps for every site.
54ms cached TTFBon a store synced from Sheets
A Google Apps Script and WooCommerce REST sync made the sheet the source of truth, so nobody re-types products. Then I profiled the stack, not the pages: a security suite cost 330ms per request and multi-currency recalculated the cart on every view. With LiteSpeed cache set up properly, Redis object caching, and Action Scheduler and transients cleared down, cached pages answer in 54ms.
// stack
59 things I actually work in, sized by how much of the work they carry. Filter by layer, hover or focus anything to see where I use it, or switch to the table to read every note at once.
// hover or focus an item to see where I use it
// how-i-use-ai
I use AI constantly and trust it with nothing. It writes the first pass of boilerplate, test fixtures, translation files and changelog notes, and it is genuinely good at all four. Then I read every line, because a plugin on thousands of sites cannot afford a hook name that does not exist.
Where it earns its keep is the unglamorous middle: turning a support thread into a reproducible case, drafting the migration script I will rewrite anyway, reading a stack trace faster than I can. Where it does not is the part the job is actually made of, which is deciding what to build, saying no to the rest, and still being there in a year when it needs maintaining.
Generated code goes through the same review as a contributor pull request. Most of it changes before it ships.
The spec comes before the prompt for the same reason it comes before the code.
No model touches a build, a signing key or a WordPress.org SVN commit.
// open-source
I love open source, but most of my work is paid and exclusive, four to five times what I publish, and it stays with the clients who own it. The public share grows every year as the agencies grow and free time opens up, and I'm still maintaining code I shipped six years ago. The numbers below are the public ones.
1{
2 "public_repositories": 83,
3 "own": 56, "forks": 27, "accounts": 3,
4 "followers": 92,
5 "most_starred": "upload-url-to-server", "stars": 17,
6 "wordpress_plugins": 10, "active_installs": "6,300+",
7 "downloads": "207,000+",
8 "firefox_addons": 5, "since": 2017, "average_rating": 4.6,
9 "releases": 113,
10 "contributions_last_year": 2744,
11 "label": "BlackSwan Development, since 2015"
12}
He is responsive, detail-oriented, whip smart, and a pleasure to work with. I recommend him without reservation for any technical needs your business might have.
// how-i-work
The order is real: spec precedes code, documentation precedes release, maintenance follows both.
Most projects that go wrong went wrong where nobody wrote down what done meant. I would rather lose a week on scope than a month building the wrong thing.
A release with no changelog, no hook reference and no upgrade note is unfinished.
Launch is the cheap part. I am still shipping releases for a plugin I published in 2020.
UTC+3:30 overlaps Europe, the Gulf, and the first half of the North American day. Nobody should have to be awake at the same time as me to know where things stand.
// worked-with
Clients and teams since 2017, with what the work was. Some of it is under NDA and is not shown.
// ventures
| Name | Role | Years | Status |
|---|---|---|---|
| Pigment Dev | Co-founder and lead developer | 2025 to now | ActiveMost of my time |
| Pigment Agency | Head of development, Istanbul, remote | Nov 2022 to now | Active |
| Pepro Dev | Co-founder | 2020 to now | ActiveFree plugins on WordPress.org and Pro plugins for sale |
| BlackSwan Development | Founder | 2015 to now | ActiveOpen-source label |
| Iran WP Academy | Founder | 2020 | Archive |
// whether-this-is-a-fit
// working-together
If you have something that fits, tell me about it and I will tell you honestly whether I am the right person.