Blog

Introducing Square ERP Version 10.0.0: From Invoicing to a Complete Business Management Platform

At Grey Square, we have always believed that business software should evolve alongside the businesses that use it.

A few months ago, we released GSQ Invoicing System Version 8.0.0, introducing significant capabilities including ZIMRA fiscalisation integration, inventory control, improved multicurrency support, cash sales, cashup management, and other improvements designed to help Zimbabwean SMEs manage their day-to-day operations more effectively.

Since then, we have continued developing the platform based on the needs and feedback of our clients and users.

Today, we are excited to announce Square ERP Version 10.0.0 — a major evolution of the platform that goes beyond invoicing to provide a more comprehensive solution for managing business operations, customers, finances, stores, procurement, assets, and more.

With this evolution, the system is now known as Square ERP, reflecting its expanded capabilities and broader role in business management.

From Invoicing System to ERP

The transition to Square ERP represents an important milestone for Grey Square.

What began as an invoicing-focused platform has grown into an integrated business management system designed to bring different areas of an organisation together.

Square ERP is now organised into dedicated packages covering:

  • CRM – Manage clients, prospects, engagements, and customer relationships
  • Operations – Manage orders, projects, teams, deadlines, and operational activities
  • Finance – Manage invoices, payments, financial information, and financial reporting
  • Stores & Procurement – Manage products, inventory, suppliers, and procurement activities
  • Assets – Manage business assets and equipment
  • Reports – Gain insights into business performance through dedicated reports
  • Backup & Restore – Protect business information with convenient backup and restoration capabilities

This structure provides businesses with a more unified way of managing their operations while reducing the need to rely on disconnected systems.

Major Features in Version 10.0.0

1. Clients and Prospects Module

One of the major additions in Version 10.0.0 is the new Clients and Prospects module.

Businesses can now maintain more comprehensive customer information, manage prospects, and gain a better view of their relationships with clients.

Client records have also been enhanced to provide easier access to contact information and previous engagements.

2. Assets and Equipment Module

Version 10.0.0 introduces a dedicated Assets and Equipment module for managing business assets.

Businesses can now keep track of their equipment and other assets within the same platform used to manage their customers, operations, finances, and stores.

This provides a centralised view of important resources owned or used by the organisation.

3. Improved Customer Engagement

Square ERP now provides businesses with additional tools for communicating with their clients.

From a client’s profile, users can access features for:

  • Viewing client contact information
  • Viewing previous orders and engagements
  • Contacting clients through WhatsApp
  • Contacting clients through email

These improvements make it easier for businesses to move from simply storing customer information to actively managing customer relationships.

4. Improved Teams and Department Management

Version 10.0.0 introduces improved management of departments and teams.

Users can now belong to designated departments, while administrators can:

  • Create and manage departments or teams
  • Change department or team names
  • View people belonging to a team
  • Select people to assign to a department or team

This provides greater organisational structure and helps businesses control access and responsibilities according to their internal teams.

5. More Powerful Order Management

Order and project management has received significant improvements in Version 10.0.0.

Orders can now have:

  • An assigned team
  • A designated project lead
  • An order-specific due date or deadline
  • Order notes
  • Configurable order details
  • Financial summaries
  • Associated invoices
  • Configurable project-dependent statuses

Businesses can also configure additional information for specific types of orders, including:

  • Type of event
  • Scope
  • Venue
  • Theme
  • Guest count
  • Colour palette

This is particularly useful for businesses that manage projects or events where each order can have different requirements.

6. Tabular and Calendar Views

Orders can now be viewed using two different perspectives:

Tabular View provides a structured list of orders and their information.

Calendar View provides a calendar-based representation of orders, starting from the current month and continuing into subsequent months.

This gives teams greater flexibility when planning workloads, deadlines, and upcoming engagements.

7. Better Invoice Management Within Orders

Version 10.0.0 also strengthens the relationship between orders and invoices.

Users can now:

  • View invoices associated with an order
  • Create additional invoices even when an order already has invoices
  • Create an invoice for an order without initially having order items

These improvements provide greater flexibility for businesses whose billing requirements change throughout the lifecycle of an order or project.

8. Order Financial Summaries

Each order can now provide a financial summary, giving users a clearer view of the financial position of individual engagements.

This helps businesses understand the financial performance of orders without having to rely solely on overall financial reports.

9. Supplier Selection for Products

Product management has also been improved with the ability to associate or select suppliers from the supplier list for a particular product.

This strengthens the connection between products, stores, and procurement activities and provides businesses with better supplier information when managing stock.

10. New Revenue and Order Reports

Version 10.0.0 introduces additional reporting capabilities, including new:

  • Revenue reports
  • Order reports

These reports provide businesses with greater visibility into their performance and activities, supporting better decision-making and planning.

Built Around the Needs of Growing Businesses

Square ERP is designed around a simple idea: businesses should not have to manage every part of their organisation using disconnected systems.

As businesses grow, they need more than invoices.

They need to manage customers and prospects, coordinate teams, manage orders and projects, track inventory, work with suppliers, manage finances, monitor assets, and understand their performance.

Square ERP brings these capabilities together in one platform.

More Than an Upgrade

Version 10.0.0 is therefore more than a collection of new features.

It represents a significant step in the evolution of the platform — from an invoicing system into a broader Enterprise Resource Planning (ERP) solution.

The introduction of dedicated CRM, Operations, Finance, Stores & Procurement, and Assets packages, together with reporting and backup/restore capabilities, provides a foundation for continued growth and development of the platform.

And this is only the beginning.

We will continue listening to our clients, learning from how businesses use the system, and improving Square ERP to make it more practical, reliable, and valuable for organisations in Zimbabwe and beyond.

Thank You

We would like to end this update by thanking our clients, partners, and users for their continued support and feedback.

Your feedback has played an important role in shaping the development of Square ERP, and we look forward to continuing this journey together.

For more information, to request a demonstration, or to learn more about Square ERP, contact us:

Email: info@greysquare.co.zw
Call/WhatsApp: +263 774 756 502

Posted in Blog, News, Square ERP

Dzinaishe Mpini

Top 5 AI Assistants We Have Bookmarked for Everyday Tasks

Artificial Intelligence is no longer a futuristic concept. It is a part of our everyday workflow. At Grey Square (Private) Limited, we use AI assistants every day to write documents, brainstorm ideas, generate code, analyse data, create marketing content, and solve technical problems.

After spending countless hours working with different AI platforms, these are the five AI assistants we have bookmarked and keep coming back to.

1. OpenAI’s ChatGPT

https://chatgpt.com

If we had to recommend just one AI assistant to anyone getting started, it would be ChatGPT.

It simply gets us.

Whether we are writing proposals, fixing code, creating training material, generating business ideas, or planning projects, ChatGPT consistently delivers. It has become an essential member of our team.

Our recommendation is that you subscribe to the Plus plan for just USD $5 per month (where available). It is one of the best productivity investments you can make. The time you save more than pays for itself.

If you are looking for an AI assistant that feels like having an experienced colleague available 24/7, this is the one.

2. Google’s Gemini

https://gemini.google.com/app

Google has built an impressive AI assistant with Gemini.

It excels at research, summarising information, brainstorming ideas, and integrates beautifully with Google’s ecosystem. If your organisation already relies on Gmail, Google Drive, Docs, Sheets, or Workspace, Gemini fits naturally into your daily workflow.

Besides… we just love Google products. They have been powering much of the internet for decades, and Gemini is another great addition to their growing suite of productivity tools.

3. Anthropic’s Claude

https://claude.ai/new

Claude is incredibly powerful. It is especially good at analysing long documents, explaining complex topics, reviewing contracts, and producing thoughtful, well-structured writing. Many professionals consider it one of the best AI assistants for serious knowledge work.

Its just not our number one because we can not justify the USD $20/month subscription right now. If pricing ever becomes more accessible, Claude could easily climb higher on our list.

4. Meta AI

https://meta.ai

One reason we genuinely enjoy Meta AI is its accessibility. In Zimbabwe, many people already have WhatsApp bundles, which means they can interact with Meta AI without needing to buy additional internet data for another website or app.

Imagine chatting and settling an argument like: “Is Zimbabwe a member of the Commonwealth?”, and getting an instant answer directly within an app you already use every day (with others). That convenience makes Meta AI an excellent companion for quick questions, everyday learning, and general knowledge.

5. DeepSeek

https://chat.deepseek.com

DeepSeek deserves a place on our list because it offers remarkable value. One thing we have noticed is that it takes a long time before it gets tired of you (even when you are paying it nothing). For developers, students, researchers, and curious minds who spend hours asking follow-up questions, DeepSeek continues to deliver without making you feel like you’re constantly hitting limits.

It is indeed a fantastic alternative to keep bookmarked alongside the other major AI assistants.


AI Is More Than Just Asking Questions

The real power of AI is not simply chatting with it. It is learning how to ask better questions, automate repetitive work, improve communication, analyse information, and make faster decisions. That is where organisations gain a real competitive advantage.

At Grey Square (Private) Limited, we provide practical AI and technology training for organisations, schools, universities, government departments, and businesses.

Our workshops are designed to help your teams:

  • Use AI safely and responsibly.
  • Increase workplace productivity.
  • Write better reports, emails, and proposals.
  • Automate repetitive tasks.
  • Improve research and decision-making.
  • Learn prompt engineering techniques that deliver better results.
  • Integrate AI into everyday business processes.

Whether you’re introducing AI for the first time or looking to help your staff work smarter, we. would be delighted to take your organisation through these tools with hands-on, practical training.

The future of work is AI-assisted. Let us help your team get there.

Posted in Blog, Opinion

Dzinaishe Mpini

Critical WordPress Security Update (CVE-2026-63030)

WordPress, the world’s most popular Content Management System (CMS), has recently disclosed a critical security vulnerability that affects certain versions of the software. Millions of websites worldwide rely on WordPress, making security updates especially important whenever a serious vulnerability is discovered. You probably also run WordPress.

What is the vulnerability?

The identity of the vulnerability on the Common Vulnerabilities and Exposures (CVE) program is CVE-2026-63030. It is a critical WordPress Core vulnerability that is part of the exploit chain commonly referred to as wp2shell. On its own, it is a REST API batch endpoint route confusion vulnerability, but when chained with CVE-2026-60137 (an SQL injection flaw), it can lead to unauthenticated Remote Code Execution (RCE) on vulnerable WordPress installations.

Think of your website as a house with locked doors that only you should be able to open.

This newly disclosed vulnerability is like discovering that one of those doors has a hidden weakness. While most people would never notice it, a cybercriminal who knows about it could potentially use that weakness to gain unauthorized access to your website.

If exploited, attackers could take control of a vulnerable website, install malicious software, steal information, or use the website for other harmful activities.

The good news is that the WordPress team has already released security updates that fix this issue. Keeping your website up to date is the best way to stay protected.

If you would like to learn more about the technical details of this vulnerability, you can view the official CVE record here:

https://www.cve.org/CVERecord?id=CVE-2026-63030

What should you do?

1. Check your WordPress version

Log in to your WordPress administrator dashboard and navigate to:

Dashboard → Updates

This page will show the version of WordPress currently installed on your website.

2. Update immediately if your site is affected

If your website is running any of the following versions:

  • WordPress 6.9.0 through 6.9.4
  • WordPress 7.0.0 through 7.0.1

You should update immediately to:

  • WordPress 6.9.5, or preferably
  • WordPress 7.0.2

We highly recommend updating to WordPress 7.0.2 to ensure your website is protected with the latest security fixes and improvements.

Best practices to keep your website secure

Keeping WordPress updated is only one part of maintaining a secure website. We also recommend the following best practices:

  • Enable automatic updates for WordPress Core so future security releases are installed automatically.
  • Verify that updates completed successfully after they run by checking your WordPress dashboard.
  • Enable automatic updates for plugins and themes. Many website compromises occur through outdated plugins and themes, so keeping them updated significantly improves your website’s security.

Need help?

If you’re unsure whether your website is affected or need assistance updating your WordPress installation, our support team is here to help.

Email: info@greysquare.co.zw

WhatsApp: https://wa.me/263778046215

Call:

  • +263 778 046 215
  • +263 774 756 502
  • +263 771 622 539
Posted in Blog, News

Dzinaishe Mpini

GSQ Invoicing System Version 8.0.0 Released

At Grey Square, innovation never stops. Following the successful release of Version 5.1.0, which introduced online payments through Pesepay, our team has continued working tirelessly behind the scenes to build an even more powerful and business-friendly platform for Zimbabwean enterprises.

Today, we are proud to officially announce the release of GSQ Invoicing System Version 8.0.0. This is a major upgrade focused on improving operational efficiency, financial management, inventory tracking, and compliance for small and medium enterprises (SMEs).

Major Features Introduced in Version 8.0.0

1. ZIMRA Fiscalisation Integration

To support compliance with Zimbabwe’s regulatory requirements, we have integrated our ZIMRA fiscalisation service directly into the system, helping businesses streamline tax invoice processing and fiscal compliance.

2. Inventory Control Module

One of the most requested features is finally here. The new inventory control module provides businesses with better stock management, tracking, and inventory oversight to reduce losses and improve operational efficiency.

3. Improved Multicurrency Support

In response to the evolving Zimbabwean business environment, Version 8.0.0 now supports multicurrency transactions, allowing businesses to operate more flexibly and serve customers more effectively. We always had multicurrency support but prices were set manually for the different currencies. Now its just one price in base currency and the forex rates takes care of the rest of the task.

4. Cash Sale Module

Businesses can now process and manage cash sales directly within the system, making day-to-day retail and over-the-counter transactions faster and easier.

5. Cashup Module

The newly introduced cashup module helps businesses reconcile daily transactions efficiently, improving accountability and simplifying end-of-day balancing procedures.

6. Metadata Support for Main Modules

We have added metadata support across key modules to improve organization, tracking, filtering, and reporting capabilities within the system.

8. Support Ticket Board Viewing

Teams can now conveniently view and manage support tickets using board-style layouts that improve visibility and workflow management.

Minor Improvements

In addition to the major updates, several quality-of-life improvements have also been introduced:

  • Quick access shortcuts to the dashboard
  • Improved handling and clarification of tax rate configurations
  • General performance and usability enhancements across the platform

Built for Zimbabwean SMEs

At Grey Square, our mission remains clear: to enable a community driven community and entreprise. One of the ways we are doing that is by building practical, reliable, and scalable business solutions tailored to the realities and needs of small and medium enterprises in Zimbabwe as we are doing with the invoicing system.

We understand that SMEs operate in a constantly changing environment that demands flexibility, efficiency, compliance, and affordability. That is why we remain committed to continuously improving the GSQ Invoicing System to match the ever-growing needs of the SME community.

Version 8.0.0 is another major step in that journey, and we are excited about what lies ahead.

We would like to thank all our clients, partners, and users for their continued support and valuable feedback, which continue to shape the future of the platform.

For more information or to request a demo via email info@greysquare.co.zw or call/WhatsApp: 263774756502

Posted in Blog, GSQ Invoicing System, News

Dzinaishe Mpini

A Beginner’s Guide to Using FileZilla FTP Client

Managing files on a remote server is a common task for developers, system administrators, and website owners. One of the most popular tools for this is FileZilla, a free and open-source FTP client that makes file transfers simple and efficient.

In this guide, we’ll walk through how to connect to your server using the credentials you have:

  • FTP Username
  • FTP Server
  • FTP & Explicit FTPS Port
  • FTP Password

1. Download and Install FileZilla

Start by downloading FileZilla Client from its official website and install it on your computer. It is available for Windows, macOS, and Linux.

Once installed, open the application.

2. Understand the FileZilla Interface

When you launch FileZilla, you’ll see:

  • Top section: Quick connect bar
  • Left panel: Your local files (your computer)
  • Right panel: Remote server files
  • Bottom panel: Transfer queue and logs

3. Connect Using Quick Connect (Fast Method)

At the top of the window, you’ll see fields labeled:

  • Host
  • Username
  • Password
  • Port

Fill them in as follows:

  • Host: Your FTP Server (e.g., ftp.example.com)
  • Username: Your FTP Username
  • Password: Your FTP Password
  • Port: Use the provided FTP/FTPS port (commonly 21 for FTP or 21/990 depending on FTPS setup)

Click Quickconnect.

What Happens Next?

  • If the credentials are correct, the right panel will populate with your server files.
  • If there’s an error, check:
    • Username/password correctness
    • Port number
    • Network/firewall issues

4. Connect Using Site Manager (Recommended)

For a more secure and reusable setup:

  1. Click File → Site Manager
  2. Click New Site
  3. Enter the following:
    • Host: Your FTP Server
    • Protocol:
      • Choose FTP
    • Encryption:
      • Select Use explicit FTP over TLS if available (FTPS)
    • Logon Type: Normal
    • User: Your FTP Username
    • Password: Your FTP Password
    • Port: Your FTP/FTPS port
  4. Click Connect

Using Site Manager saves your configuration so you don’t have to enter details every time.

5. Upload Files to the Server

To upload files:

  1. Navigate to your file in the left panel (local computer)
  2. Navigate to the destination folder in the right panel (server)
  3. Drag and drop the file from left → right

Alternatively:

  • Right-click the file → Upload

6. Download Files from the Server

To download:

  1. Locate the file in the right panel
  2. Drag it to the desired location in the left panel

Or:

  • Right-click → Download

7. Manage Files on the Server

You can perform common operations by right-clicking files/folders in the remote panel:

  • Rename
  • Delete
  • Create directories
  • Set file permissions (important for web servers)

8. Troubleshooting Tips

If you encounter issues:

  • Connection timed out
    → Check server address and port
  • Authentication failed
    → Verify username/password
  • TLS/FTPS errors
    → Ensure you selected explicit FTP over TLS
  • Permission denied
    → You may not have rights to write in that directory

9. Best Practices

  • Always use FTPS (explicit TLS) when possible for security
  • Avoid saving passwords on shared computers
  • Organize files into clear folders (e.g., /public_html, /uploads)
  • Regularly back up your server files

Conclusion

FileZilla makes it easy to connect to your server and manage files, even if you’re new to FTP. By simply entering your FTP credentials and using either Quick Connect or Site Manager, you can upload, download, and organize files efficiently.

Once you get comfortable, it becomes an essential tool for web development, server management, and deployment workflows.

Posted in FTP, Web and Email Hosting

Staff Writer

Understanding Web Server Software: The Backbone of the Web

In today’s digital world, every website or web application relies on web server software to deliver content to users. Whether someone is accessing a university portal, an online store, or a weather monitoring system, web servers play a crucial role in ensuring that information is delivered quickly, securely, and reliably.

This article explores what web server software is, why it is important, and highlights three of the most widely used web server platforms: Apache HTTP Server, Nginx, and Microsoft IIS.

What is Web Server Software?

Web server software is a program that handles requests from web browsers and sends back the requested web content using the HTTP or HTTPS protocols.

When a user enters a website address into a browser:

  1. The browser sends a request to the web server.
  2. The server processes the request.
  3. The server returns the requested files such as HTML pages, images, CSS, or JavaScript.
  4. The browser displays the website to the user.

Without web server software, websites and web applications would not be accessible over the internet.

Why Web Server Software is Important

Web server software performs several important functions, including:

  • Serving web pages and media files to users.
  • Handling multiple user requests simultaneously.
  • Managing website security, including HTTPS encryption.
  • Connecting web applications to databases and backend systems.
  • Optimizing performance to ensure fast loading of websites.

Because of these responsibilities, choosing the right web server software is critical for performance, scalability, and security.

Popular Web Server Software

1. Apache HTTP Server

Apache HTTP Server is one of the oldest and most widely used web servers on the internet. It is open-source and maintained by the Apache Software Foundation.

Apache is highly flexible and supports many modules that allow developers to extend its functionality.

Key Features

  • Open-source and free to use
  • Highly configurable
  • Supports multiple programming languages such as PHP, Python, and Perl
  • Large community support

Best Use Cases

Apache is commonly used for:

  • Small to medium websites
  • Content management systems like WordPress
  • Traditional LAMP stack environments (Linux, Apache, MySQL, PHP)

Limitations

Although Apache is powerful, it may require more system resources under heavy traffic compared to newer web servers.

Nginx (pronounced “Engine-X”) is a high-performance web server designed to handle a large number of concurrent connections efficiently.

2. Nginx

It uses an event-driven architecture, which allows it to manage thousands of connections using fewer system resources.

Key Features

  • Extremely fast and lightweight
  • Handles high traffic efficiently
  • Can function as a reverse proxy and load balancer
  • Excellent for modern web applications and microservices

Best Use Cases

Nginx is widely used for:

  • High-traffic websites
  • Cloud-based systems
  • APIs and microservices
  • Serving static content

Many large technology companies rely on Nginx due to its scalability and performance.

3. Microsoft IIS (Internet Information Services)

Microsoft IIS is a web server developed by Microsoft and designed primarily for Windows Server environments.

It integrates seamlessly with Microsoft technologies such as ASP.NET and .NET applications.

Key Features

  • Tight integration with Windows Server
  • Graphical management interface
  • Strong support for .NET applications
  • Enterprise-level security and authentication

Best Use Cases

IIS is commonly used in:

  • Enterprise systems
  • Corporate intranets
  • Applications built with ASP.NET or other Microsoft technologies

Limitations

Unlike Apache and Nginx, IIS is not open-source and runs primarily on Windows platforms.

Posted in Knowledgebase, Web and Email Hosting

Dzinaishe Mpini

GSQ Invoicing System Version 5.1.0 Released – Introducing Online Payments with Pesepay

Grey Square is pleased to announce the release of GSQ Invoicing System Version 5.1.0, a new update that introduces one of the most requested features by businesses using the platform — online payment support. With this release, organizations can now enable customers to settle invoices directly online, making the invoicing process faster, more convenient, and more efficient for both businesses and their clients.

The highlight of this update is the integration with Pesepay, a widely used digital payment gateway that allows businesses to securely accept payments online. With this new functionality, invoices generated through the GSQ Invoicing System can now include an option for customers to pay directly from the invoice using Pesepay. This eliminates the need for manual bank transfers or physical payment arrangements, simplifying the entire payment workflow.

Make payment page.

By enabling online payments, businesses can significantly reduce the time it takes to receive payments from customers. Clients are now able to review an invoice and immediately complete payment through a secure online channel. Once the transaction is processed successfully, the payment can be reflected in the system, helping businesses keep their financial records accurate and up to date.

The addition of Pesepay support is the first step toward building a more comprehensive digital payments ecosystem within the GSQ Invoicing System. While Pesepay is the first gateway to be integrated, additional payment gateways will be introduced in upcoming releases to provide businesses with more flexibility and options depending on their operational needs and preferred payment platforms.

This update represents another step forward in transforming the invoicing experience from a purely administrative process into a fully integrated digital transaction workflow. Businesses can now generate invoices, send them to clients, and receive payments — all within a single streamlined system.

Grey Square remains committed to continuously improving the GSQ Invoicing System and introducing features that help businesses operate more efficiently in an increasingly digital economy. With Version 5.1.0, we are excited to see organizations begin to take advantage of online payments and experience the convenience of faster, simpler invoice settlement.

More enhancements are on the way, and we look forward to sharing further improvements in upcoming updates.

Posted in Blog, GSQ Invoicing System

Dzinaishe Mpini

What is Phusion Passenger (in cPanel)

Phusion Passenger, commonly referred to simply as Passenger, is an application server supported by cPanel that enables you to run web applications built with languages beyond traditional PHP. While cPanel is widely known for PHP-based hosting, Passenger extends its capabilities to support frameworks and runtimes such as Ruby, Python, and Node.js.

Passenger operates between your web application and the web server (typically Apache, and in some environments Nginx). It manages application processes, handles incoming requests, and ensures that your app runs smoothly and efficiently. In simple terms, it acts as the engine that keeps your dynamic application running reliably on your hosting environment.


How cPanel Uses Passenger

Within cPanel, Passenger is integrated through the Application Manager. This feature allows users to register, deploy, and manage web applications such as Ruby on Rails projects, Django or Flask (Python) applications, and Node.js apps.

Passenger functions as a process manager, meaning it starts and maintains your application processes automatically. It works alongside Apache (and sometimes Nginx) to serve dynamic content just like a regular website. Through the cPanel interface — or even via API access — you can deploy new applications, restart them, stop them, or update their configurations without needing deep server-level commands.

This setup is particularly beneficial on VPS or Dedicated hosting environments where you have greater control over server resources. While some shared hosting accounts support Passenger, they may impose limitations depending on the hosting provider.


What It Does for You

Passenger significantly expands what you can achieve within a cPanel hosting environment.

1. Enables Running Apps Beyond PHP

Although cPanel is traditionally optimized for PHP websites, Passenger allows you to host modern applications developed using frameworks like Ruby on Rails, Node.js, and Python WSGI frameworks such as Django and Flask. Instead of manually configuring separate services, Passenger integrates these applications directly under Apache so they behave like standard websites and respond seamlessly to visitor requests.

2. Enables Managing Application Environments

Passenger also provides control over your application’s runtime environment. Through the Application Manager, you can configure environment variables, define whether the application runs in development or production mode, and specify the base URL and application path. Passenger uses these settings to correctly initialize and execute your application, ensuring that it runs according to your deployment needs.

Posted in CPanel, Knowledgebase

Dzinaishe Mpini

Lack of Testing: A Contributing Factor to Poor Software Craftsmanship in Zimbabwe

Part 1 – Ranting

One of the growing concerns in Zimbabwe’s digital ecosystem is the poor craftsmanship visible in many software and web products. This observation is not meant as an attack on developers. Zimbabwe, actually has talented, resourceful, and hardworking developers. The problem really is how systems are built and sustained. We have many digital products in our environment, but they are not designed to last. The reason why we always go back to pen and paper even on the pettiest processes such as managing queues or recording a transaction.

Evidence of the Poor Craftsmanship

I probably have attacked someone here. Their company, their work, their career. It would really be unfair to not explicitly specify what I refer to as poor craftsmanship. If you still do not resonate with me, let me give you familiar symptoms across both public and private sectors.

On websites, pages break on mobile screens. The fonts and spacing are inconsistent. Forms submit without proper validation. Error messages are vague and unhelpful. What do you mean “Something went wrong”? What should I do about that “something” that went wrong. Many sites load slowly. No one pays attention to the POTRAZ reports which touch on broadband quality. They contain broken links, and fail basic accessibility standards. My worst symptom is seeing a “Lorel ipsum delo” text on a company website.

On the software side, many systems resemble final-year projects deployed into production. Credentials are hardcoded. Security and standards are treated as optional extras rather than foundational requirements. There is no separation between development, testing, and production environments. Logging and monitoring are absent. Backups are manual or nonexistent. Database changes are performed directly on live systems.

What we are seeing is not engineering in the true sense. Much of it is survival coding. Most systems are developed to run today, with little thought for tomorrow. Systems are being built without safety nets. There is no testing discipline, little documentation, unclear ownership, and no shared standards. When things break, teams improvise. When developers leave, systems become untouchable. Over time, technical debt compounds until the system collapses under its own weight.

Testing is the Fault Line Between “It Works” and “It’s Engineered”

At the centre of this problem lies one neglected practice of testing. Testing is the fault line between software that merely works and software that is well-engineered. The absence of testing quietly explains most of the craftsmanship problems we see.

In mature software cultures, testing is not an afterthought added just before deployment. It is a core engineering activity. Testing is used as a design tool, a way to force clarity, a safety net for change, and a continuous measure of system health. It enables teams to improve systems confidently instead of fearing them.

Locally, however, testing is often misunderstood. It is reduced to clicking around before delivery, letting users “try it”, or fixing bugs only after complaints arise. This is not testing. It is risk transfer, where engineering responsibility is pushed onto users.

Who Should Read the Whole Article?

Testing is often framed as a purely technical concern, but this framing is misleading. This conversation should really be on a roundtable of developers and decision makers (including the non technical ones). Managers and decision makers approve timelines, allocate budgets, and shape delivery culture. When testing is deprioritised, it is rarely because developers do not care, it is because deadlines and constraints make testing feel optional or an unauthorised area.

In reality, testing decisions are actually design and management decisions not development decisions. Without managerial understanding and support, testing will always lose to short-term delivery pressure.

Enough ranting, let’s understand real testing.

Part 2 – Understanding the Concept of Testing in the Development Processes

At its core, testing is the systematic process of verifying that a system behaves as intended and remains trustworthy as it evolves. It asks uncomfortable but necessary questions: Does this behave correctly? What happens when it fails? Does it still work after change? Can someone else maintain it?

Understanding Testing Through Levels

Testing operates at 4 different levels, each addressing different risks. The levels in their order are unit testing, integration testing, system testing and acceptance testing. The table below explains each level, when to perform and why it’s important.

Testing LevelWhat is It?When to Perform?Why It’s Important?
1. Unit TestingTesting of individual functions or components in isolation. During development of individual componentsCatch logic errors early; verify individual functions work as intended
2. Integration TestingExamines how components work together, revealing mismatches and data flow issuesAfter unit testing, when modules are combinedEnsure components work together; detect interface mismatches and data flow issues
3. System TestingEvaluates the complete, integrated system from end to end. After all components are integratedValidate end-to-end behavior; ensure the complete system works as a whole
4. Acceptance TestingDetermines whether the system meets business and user expectationsJust before deployment, after system testingConfirm system meets business requirements and user expectations

Testing Approaches and What They Reveal

Testing can also be classified by how much knowledge the tester has of the system. There are 3 classifications of approaches that can then come up; white-box testing, black-box testing and grey-box testing. White, black and grey already clicks some sense into your brain.

  • White-box testing assumes full knowledge of the internal code and logic.
  • Black-box testing focuses purely on observable behaviour without regard for implementation.
  • Grey-box testing sits in between, using partial knowledge such as architecture or data flow.

Again, all the 3 approaches are necessary. None replaces the others.

Types of Testing

We also have different types of testing. These types are concerned with verifying the engineering quality, correctness, and robustness of a system or product. This topic is a common source of confusion, as there is often a mix of engineering testing (software testing) with business testing (product testing).

Types of Software Testing

Here’s a clear definition of types of testing, broken down for clarity and relevance in software engineering.

  • Functional Testing: Ensures that the software performs its intended functions according to specifications. Focuses on what the system does, not how it does it.
    Example: Checking that a login form correctly authenticates users.
  • Regression Testing: Verifies that recent changes or fixes do not break existing functionality.
    Example: After adding a new feature, testing old features like payment processing still work.
  • Performance Testing: Measures how the system performs under load or stress, including response time, scalability, and stability.
    Example: Checking how many concurrent users a website can handle before slowing down.
  • Security Testing: Identifies vulnerabilities and ensures the system protects data and resists attacks.
    Example: Testing for SQL injection, weak passwords, or unauthorized access.
  • Usability Testing: Evaluates how easy and intuitive the system is for end-users.
    Example: Ensuring navigation is clear and forms are easy to fill on both mobile and desktop.
  • Compatibility Testing: Checks whether the system works across different environments, devices, browsers, or operating systems.
    Example: Verifying a web app works on Chrome, Firefox, and mobile devices.

Types of Product Testing

These types focus on the value, adoption, or user experience of the product rather than code correctness.

  • Concept Testing: Evaluates an idea or feature before development to see if it resonates with users.
    Example: Surveying users about a new feature like “dark mode” before building it.
  • Market Testing: Launching a product or feature to a small segment of the market to gather feedback and assess adoption.
    Example: Releasing a beta version to 100 users to measure engagement.
  • A/B Testing (Split Testing): Comparing two versions of a product or feature to determine which performs better.
    Example: Testing two different landing page designs to see which drives more sign-ups.

The Testing Process: How Testing Is Actually Conducted

Testing is not magic. It is a disciplined, systematic process that ensures software works as intended and can be maintained safely. When done properly, testing protects both engineering integrity and user experience. The process generally follows five key stages.

Stage 1 – Define Test Objectives and Requirements

The first step is to clearly define what is being tested. This includes identifying the risks that matter most, the expected behaviour of the system, and what constitutes unacceptable failure. Without clarity at this stage, testing becomes random and ineffective. Defining objectives ensures that time and resources are focused on the areas that matter most, and it provides a clear baseline for success or failure.

Stage 2 – Test Planning and Strategy

Once objectives are clear, the next step is planning how the testing will be done. This involves deciding what will be tested, at which levels (unit, integration, system, or acceptance), who will perform the tests, and which tools or frameworks will be used. Planning is critical because it establishes a structured approach and ensures accountability. Management involvement here is important to allocate resources, define timelines, and support the enforcement of standards.

Stage 3 – Designing Test Cases and Test Scenarios

Designing tests is the step where clarity meets execution. It is important to distinguish between test cases and test scenarios.

  • Test cases are specific: they define precise inputs, actions, and expected outcomes.
  • Test scenarios are broader: they represent real-world user journeys or workflows that the system must handle.

Confusing the two can lead to shallow testing, leaving critical paths untested. Thoughtful design ensures that tests are meaningful, repeatable, and cover both functional and edge-case scenarios.

Stage 4 – Test Execution

With test cases and scenarios ready, the next stage is execution. Tests can be run manually or automated depending on the system and resources available. They should be executed consistently and under controlled conditions to ensure reliable results. This is the stage where assumptions about how the system behaves meet reality. Careful execution uncovers bugs early and provides evidence for improvements.

Stage 5 – Capturing and Documenting Tests

Finally, documenting the results of testing is essential. If a test is not recorded, it effectively does not exist. Documentation preserves knowledge, provides accountability, and allows others—developers, future testers, or managers—to understand what was tested, what failed, and what risks remain. Documentation can take the form of written reports, visual dashboards, or verbal communication, but the key is clarity and completeness.


Testing is a structured process that transforms assumptions into evidence. Skipping any stage—objectives, planning, design, execution, or documentation—weakens the safety net and increases the risk of fragile, low-quality software.

Documenting Test Results

Testing is only valuable if its results are captured and communicated clearly. Unrecorded tests or buried results are effectively invisible, and invisible testing does not improve software quality or influence decision-making.

Documenting test results serves multiple purposes: it preserves knowledge, provides accountability, and allows other team members to understand what was tested, what worked, and what risks remain. Documentation can take several forms:

  • Written reports: These include defect logs, test coverage summaries, and assessments of remaining risks. They create a permanent record of what was discovered during testing.
  • Visual representations: Charts, dashboards, and graphs can help stakeholders quickly grasp the system’s health, highlight trends, and prioritise fixes.
  • Verbal communication: Sharing test results in stand-ups, review meetings, or demos ensures that the findings are understood and acted upon in a collaborative context.

Ultimately, for testing to have impact, it must be visible and actionable. Clear documentation ensures that testing outcomes inform decisions, guide improvements, and strengthen the overall quality of the product.

A Closing Thought

If we want better software, we must first build better foundations. Testing is one of those foundations. Ignore it, and craftsmanship will continue to suffer. Invest in it, and quality will begin to compound. The choice is not technical. It is cultural.

If you prefer to know more technical stuff on testing  we recommend you take a look at 

  1. Testing tools and equipment 
  2. Designing test cases 
Posted in Blog, Knowledgebase, Opinion, Software Engineering

Dzinaishe Mpini

Updating Your Live Flask Application on cPanel

This guide provides a structured workflow for deploying updates to an existing Python Flask application hosted via cPanel and Phusion Passenger. If you are starting a fresh deployment see the “Deployment from Scratch” article.

1. Prepare Your Local Environment

Before uploading, ensure your dependency list is accurate. If you have added new libraries during development, regenerate your requirements.txt.

  • Command: Open your terminal in your project root and run: pipreqs . --force
    • This ensures only the packages actually used in your code are listed, preventing version conflicts.

2. Upload Updated Files

You need to replace the old code on the server with your new version.

  • Via File Manager: Navigate to your Application Root folder (e.g., /home/username/myapp) and upload your updated .py files, templates/, and static/ folders.
  • Via FTP/SFTP: Use a client like FileZilla to connect to your server and overwrite the files in the application root directory.
  • Important: Always ensure you overwrite your entry file (usually app.py or main.py).

3. Synchronise Dependencies

If your update includes new libraries (e.g., requests, pandas, or BeautifulSoup), you must install them into the server’s virtual environment.

  1. Upload the new requirements.txt to your Application Root.
  2. In cPanel, open Setup Python App.
  3. Click the Edit (pencil icon) next to your application.
  4. In the Configuration files section, ensure requirements.txt is listed, then click Run Pip Install.

4. Trigger the Application Restart

cPanel/Passenger caches your Python code. Changes will not appear until the application is restarted.

Method A: The GUI (Easiest)

  • In the Setup Python App interface, click the Restart icon (circular arrow) at the top of your application settings.

Method B: The “Touch” Method (Advanced)

  • Using File Manager, create a folder named tmp inside your application root.
  • Inside tmp, create an empty file named restart.txt.
  • Note: If you want to trigger a restart later, simply “edit” and save this file again. Passenger monitors the “last modified” timestamp of this file to trigger a reload.

5. Verify the WSGI Bridge

If your update involved renaming your main file or your Flask instance, you must update the passenger_wsgi.py file.

Ensure the import line matches your new structure:

Python

# Format: from [filename] import [flask_variable] as application
from app import app as application

6. Troubleshooting & Debugging

If your application shows an error or doesn’t reflect changes after a restart:

  • Clear Browser Cache: Perform a “Hard Refresh” (Ctrl + F5 or Cmd + Shift + R) to ensure you aren’t looking at a cached version of the site.
  • Enable Error Display: If you see a generic “Something went wrong” page, enable detailed logs. Open your .htaccess file in public_html and add:
    • ApachePassengerFriendlyErrorPages on
  • Check Port Conflicts: Ensure your code does not contain app.run(). If it does, wrap it in:
    • if __name__ == "__main__": app.run()

Posted in CPanel, Knowledgebase, Web and Email Hosting

Dzinaishe Mpini