Pinuno Academy
Blog & Resources
Practical guides and insights on PHP, WSO2, Zoho and ICT in Ghana, written by the practitioners who teach and build with these technologies.
fail2ban Said 218 Bans. It Had Blocked Nothing
fail2ban logged 218 bans and blocked nobody. An actionless jail, a reload that said OK, a dead allow rule and a blind log watch, and the checks that work.
Four Ways a Captcha Validated Nothing: reCAPTCHA Enterprise in Yii2
A threshold no score could cross, a skip the client controlled, an unchecked action and a check that failed open: four ways our captcha passed every bot.
A Cron Job That Fired 8,073 Times and Never Ran
Four ways scheduled jobs in our product stopped running without an error: a step that killed the rest, unread failures, a host move and an unwritable log.
A Green Deploy Still Serving the Previous Release
Why PHP can serve the old release for two minutes after a symlink deploy, why reloading the wrong process changed nothing, and how to prove the switch.
Source Only on One Desktop: Recovering an Integration from a Local Branch
An integration ran in production while its source sat on one laptop. How to rebase it onto master, prove its scope and match it to the deployed CAR.
1 Is Not 1.0: XPath Arithmetic in Synapse, and Doing Without the Script Mediator
Why a Synapse counter holds 1.0 instead of 1, how to fix it at the assignment with native mediators, and when a Script mediator is still worth it.
One Flag to Publish: Gating a Document's Banner, noindex and Sitemap Entry Together
Gate a draft page's banner, noindex tag and sitemap entry on one setting, and read every sentence first: the switch publishes all of it at once.
When the Script Mediator Error Is Not a Script Error: JSON Responses Too Large to Build
A WSO2 EI Script mediator error that was really a JSON response too large to build, three theories ruled out, and the fix: partition the request.
A Keyword Crawl Proves Presence, Never Absence: Lessons from Two Content Audits
A keyword sweep reported three missing topics that were all there, and missed three live claims hidden in meta tags, JSON-LD and a chatbot prompt.
Ghana Is Talking to Microsoft About AI Skills. Here Is What It Means for You
A working group, an MoU for 100,000 TVET facilitators and talks at the UN. What has been agreed, who it reaches first, and where you can start now.
Fails Somewhere Else, Part 2: Silent Runtime Traps in WSO2 EI
Expressions that evaluate wrongly, consumers waiting on nothing and APIs that answer 202 while writing nothing: WSO2 EI runtime traps that fail silently.
Search Console Housekeeping on a Yii2 Site: Trailing Slashes, /index and One Stray Robots Line
Duplicate canonicals, a sitemap listing /index, a robots.txt error on every host: clearing Search Console noise on a Yii2 site in one afternoon.
One Apostrophe, One Thousand Rows: How an Escaping Fix Exposed a String-Built INSERT
An apostrophe in a surname lost whole batches of rows: how removing a wrong escaping step exposed a string-built SQL INSERT, and the workaround.
DMARC p=reject Without SPF: Why Forwarding a Business Mailbox to Gmail Fails
Reading a business mailbox in the Gmail app is easy. Forwarding it to Gmail loses mail both ways under DMARC p=reject. Use IMAP instead.
Fails Somewhere Else, Part 1: Silent Build and Deployment Traps in WSO2 EI
A green build, a healthy dashboard and a deployed CApp can still hide a missing artefact. The WSO2 EI build and deployment traps that fail silently.
Switching Icon Fonts Saves Nothing: Where the Bytes in an Icon Set Actually Go
Font Awesome to Bootstrap Icons is roughly a wash. The saving is in shipping only the glyphs you use as SVG, or in dropping a whole font file.
Exactly Twice: Scheduled Tasks, Hot Deployment and Clustered WSO2 EI Nodes
A load that came out at exactly twice its size: how hot-deploying a scheduled task to a WSO2 EI cluster made both nodes run it, and the deployment check.
Your Page Weight Numbers Are Probably Wrong: Decoded Bytes, Transfer Bytes and the Cache
An audit reported a homepage three times heavier than what crossed the wire. How to measure transfer, not decoded, bytes, and what was worth fixing.
ICT Now Drives Ghana's Growth. Here Is How to Train for It
Information and Communication grew 30.9% year on year and accounted for 41.5% of all growth in the Ghanaian economy in Q2 2026. Three years of double-digit growth is a trend you can plan a career…
Diagnosing JVM Memory Leaks in WSO2 Enterprise Integrator
The full diagnostic funnel from an OOM crash to the single misconfigured mediator behind it, written as a repeatable method for Synapse-based runtimes.
Heap Analysis Without Leaving the Browser: Eclipse MAT on GitHub Codespaces
A multi-gigabyte heap dump will not open on a working laptop. The full workflow for running Eclipse Memory Analyzer headless in a GitHub Codespace (resize, upload, install, Leak Suspects report)…
The Aggregate That Did Nothing: Anatomy of a WSO2 EI Memory Leak
A WSO2 Enterprise Integrator cluster kept restarting and the GC logs said the heap was too small. The heap dump said otherwise: an <aggregate> mediator that had been accumulating XML in memory for…
The Real Cost of Getting a Website Built in Ghana in 2026
Websites in Ghana are quoted at everything from GHS 500 to GHS 50,000. This article explains what drives the price, what each tier actually delivers, the red flags to watch for, and the questions to…
Zoho Flow vs Zoho Deluge: When to Use Each One
Zoho Flow and Zoho Deluge both automate work in the Zoho suite, but they are designed for very different jobs. This article explains when to use each one, and when to use them together.
Building Maintainable Software in Ghana: The Case for Formal Development Practices
A significant proportion of custom software built in Ghana becomes unmaintainable within two years of delivery. This paper diagnoses the root cause…
What Is Digital Transformation and What Does It Mean for Ghana's Economy?
Digital transformation is more than buying software. It is a fundamental shift in how organisations create value. This article examines where Ghana stands, what the skills bottleneck means for the…
The ICT Skills Gap in Ghana: A 2026 Assessment and Training Roadmap
Ghana's ICT sector is growing faster than its capacity to produce qualified professionals. This paper assesses the skills gap across software development, enterprise integration, business…
Cybersecurity Basics Every Ghanaian Business Owner Should Know
Mobile money fraud, phishing, and WhatsApp takeovers are growing threats for Ghanaian businesses. This practical guide covers the most common attacks and the specific steps every business owner can…
ICT Career Paths in Ghana: Which Technical Track Should You Choose?
Breaking down the four main ICT career tracks in Ghana (PHP development, WSO2 integration, Zoho business applications, and ICT foundation) with honest information about the work, the pay, and how…
Zoho CRM vs. Spreadsheets: Why Ghana's SMEs Need to Make the Switch
Most Ghanaian SMEs still manage customer data in spreadsheets. This article makes the case for switching to Zoho CRM, covering the hidden costs of spreadsheets, what CRM automation looks like in…
Mobile Money Integration Patterns for Web Applications: A Technical Reference
A technical reference for integrating Mobile Money payments into web applications, covering the six core patterns that separate reliable MoMo integrations from fragile ones: pre-commit records…
What We Learned Integrating Hubtel MoMo Payments into a PHP Application
Real lessons from integrating Hubtel MoMo payments into a PHP web application: webhook reliability, idempotency, phone number normalisation, and how to handle failures gracefully so customers can…
Building Your First API with WSO2 API Manager 4.6
A step-by-step guide to creating, securing, rate-limiting, and publishing your first REST API using WSO2 API Manager 4.6, from the Publisher Portal through to a live subscribed endpoint.
Enterprise Integration in West Africa: A Framework for WSO2 Adoption
This white paper examines the enterprise integration landscape in West Africa, identifies the key barriers to API-led connectivity in Ghana's financial and public sectors, and proposes a WSO2-based…
PHP 8.3 in Production: What to Know Before You Upgrade
PHP 8.3 brings typed class constants, json_validate(), and cleaner readonly property handling. This guide walks through the key changes and a practical checklist for upgrading your production…
Why We Built Our Student Portal on Yii2 Instead of Laravel
We chose Yii2 over Laravel for the Pinuno Academy student portal. This is the reasoning behind that decision: where Yii2 wins, where Laravel has the edge, and the real lesson about framework choice…
Content Type
Recent Articles
fail2ban Said 218 Bans. It Had Blocked Nothing
11 Oct 2026
Four Ways a Captcha Validated Nothing: reCAPTCHA Enterprise in Yii2
11 Oct 2026
A Cron Job That Fired 8,073 Times and Never Ran
11 Oct 2026
A Green Deploy Still Serving the Previous Release
11 Oct 2026
Source Only on One Desktop: Recovering an Integration from a Local Branch
07 Oct 2026
Ready to learn?
From PHP to WSO2 - our structured courses turn these topics into practical, job-ready skills.
Browse CoursesOne Million Coders graduate?
Turn entry-level skills into a hireable, certified tech profile.
How to get hired after the One Million Coders Programme →Following the Ghana and Microsoft AI news?
What it means for your skills, and where to start now.
AI and digital skills in Ghana: your next step →