.01

ABOUT

Hendrik Prinsloo

BIO

DevOps engineer who has mastered the ability of assisting family and friends with anything remotely related to his field. Now also assumes the role of toaster mechanic, technical sales advisor, forgotten-password specialist, and let-me-google-that-for-you expert.

His career started in 2013 as a software developer at an insurance service solutions provider. His team was responsible for the development of critical business systems in an environment focused on efficiency, accuracy, and compliance.

In 2014 he relocated to Cape Town and joined a company specialising in the application of technology to empower people; as opposed to making people redundant. At the verge of augmented intelligence their goal was to develop a product that could capture any level of complexity and have the flexibility of being applicable in all industries.


1991-06-23
0.1.0 Initial commit

Born in Gauteng, South Africa

2010-01-01
1.0.0 BSc IT

University of Pretoria

2013-06-01
1.1.0 Junior Developer

Started professional career at CLC

2014-07-01
1.2.0 Intermediate Developer

Started at CLEVVA

2016-02-01
1.3.0 Senior Developer

Promoted at CLEVVA

2018-04-01
3.0.0 Lead DevOps Engineer

Responsible for CI/CD, infrastructure, product design & execution

CAREER

Objective

Aspire to play a positive part in the augmented intelligence revolution, becoming a regular contributor in the open source community and cultivating a trustworthy online footprint.

Maintain a hands-on role in the development environment and stay up-to-date with the latest trends in the industry by regularly experiment with new technologies and methodologies.

At the end of my career I would like to be considered an expert in my field with in-depth knowledge of all aspects in and around the SDLC framework.

PERSONAL AND PROFESSIONAL

Roadmap

GIT STATS

Total git activity

Repos: 14
Commits: 3105
Lines Added: 12056936
Lines Removed: 5597868
GitHub Profile
.02

RESUME

CAREER HISTORY
  • 2014
    CURRENT
    WESTERN CAPE, SOUTH AFRICA

    LEAD DEVOPS ENGINEER

    CLEVVA

    CLEVVA is a technology business that has specialised in the art and science of Intelligence Augmentation. It was founded in 2011, based on a shared vision to develop a technology platform that could enable any company to effectively capture and scale their sales, support, system, process and technical expertise. Consider it Artificial Intelligence for People.

    Responsibilities

    Propose solution for continuous delivery, build the infrastructure for CD/CD, train the development teams for the needed skill around configuration management, automation of build, test, deploy and configuration of the servers.

    Design and execute DevOps setup for project/ product development teams.

    Build infrastructure for auto provisioning of development environment, QA, Staging environment and continuous deployment

    clevva.com
  • 2013
    2014
    GAUTENG, SOUTH AFRICA

    JUNIOR DEVELOPER

    CLC

    CLC has flourished since its establishment in 1998 and is considered to be a leader in service delivery, innovative product development and in assisting brokers / UMA's / Administrators and Underwriters to be more efficient. Today, Customer Loyalty Consultants services over 400 000 clients and is considered to be one of the most reputable financial service providers in the insurance industry.

    Responsibilities

    Development of critical business systems in an environment focused on efficiency, accuracy, and compliance. The company provided a corporate structure and professional environment for development. The position demanded thorough knowledge of the insurance industry and strong analytical skills.

    www.customerloyalty.co.za
EDUCATION
  • 2010
    2013
    GAUTENG, SOUTH AFRICA

    BSC IT - SOFTWARE DEVELOPMENT

    UNIVERSITY OF PRETORIA

    In line with the latest trends in the Information Technology industry, the BSc IT degree offers a selection of Information Technology application environments (referred to as an elective group of the degree), of which a student has to choose one. The degree enables graduates to design and develop systems applied within a particular discipline, but also equips them with adequate domain knowledge within the discipline to be able to do consulting work.

    www.up.ac.za
  • 2005
    2009
    GAUTENG, SOUTH AFRICA

    MATRIC

    H/S KEMPTON PARK

    Subjects: Mathematics, Afrikaans, English, Life Orientation, Information Technology, Engineering Graphics and Design, Physical Science

    www.kempies.co.za
Other
.03

PORTFOLIO

PUBLISHED PROJECTS
22 Jul 2018

Docker – Bitbucket Pipelines Ubuntu

CLEVVA

Bitbucket Pipelines Docker image based on Ubuntu.
Source

Docker

Docker – Bitbucket Pipelines Ubuntu

Docker
About The Publication

Bitbucket Pipelines Docker image based on Ubuntu.

Packages installed

  • Node.js 8.11
  • NPM 5.6
  • Perl 5.22
  • PHP 7.0.30
    • bcmath, bz2, cgi, cli, common, curl, dev, enchant, fpm, gd, gmp, imap, interbase, intl, json, ldap, mbstring, mcrypt, mysql, odbc, opcache, pgsql, phpdbg, pspell, readline, recode, sqlite3, sybase, tidy, xmlrpc, xsl, zip
  • PHPUnit 5.7.27
  • Python 2.7
  • Ruby 2.3
  • Sencha CMD 6.5.3.6
  • Composer 1.6.5,
  • Other
    • apt-transport-https, bzip2, ca-certificates, clean-css-cli, curl, gettext, git, imagemagick, memcached, mysql-client, openjdk-7-jre, openssh-client, perl, python, python3, rsync, ruby, software-properties-common, subversion, unzip, uglify-js, wget, zip

Example - Build the image locally

git clone git@github.com:HendrikPrinsZA/bitbucket-pipelines-ubuntu.git && cd bitbucket-pipelines-ubuntu
docker build . --tag local-bitbucket-pipelines-ubuntu
docker run -it --volume=/var/www/html/project:/project --workdir="/project" --entrypoint=/bin/bash local-bitbucket-pipelines-ubuntu

Example - Remote image

docker run -it --volume=/var/www/html/project:/project --workdir="/project" --entrypoint=/bin/bash hendrikprinsza/bitbucket-pipelines-ubuntu

Example - Bitbucket Pipelines

pipelines:
  default:
    - step:
        image: hendrikprinsza/bitbucket-pipelines-ubuntu
        script:
          - phpunit --version
          - mysql -h127.0.0.1 -uroot -ppassword123 -e "SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';"
        services:
          - mysql

definitions:
  services:
    mysql:
      image: mysql:5.6
      environment:
        MYSQL_DATABASE: test_database
        MYSQL_ROOT_PASSWORD: password123
01 Jun 2016

Zest Restaurant

ZEST RESTAURANT

Website for a local restaurant in Gordon's Bay.

Zest Restaurant

WordPress

Zest Restaurant

WordPress
About The Publication

Zest Restaurant Screenshot

13 Sep 2017

Docker – Bitbucket Pipelines Debian

CLEVVA

Bitbucket Pipelines Docker image based on Debian Jessie.
Source

Docker

Docker – Bitbucket Pipelines Debian

Docker
About The Publication

Bitbucket Pipelines Docker image based on Debian Jessie.

Please note that it does not include the mysql server, as you should be using pipeline's mysql service. However, it does include the mysql client.

Packages installed

  • Node.js 4.x LTS
  • Perl 5.20
  • PHP 5.6
  • PHPUnit 5.7
  • Python 2.7
  • Ruby 2.1
  • Sencha CMD 6.5
  • Composer, Gulp, Webpack, Mocha, Grunt, Codeception, Yarn latest
  • apt-transport-https, bzip2, ca-certificates, clean-css-cli, curl, gettext, git, imagemagick, memcached, mysql-client, openjdk-7-jre, openssh-client, perl, php-gettext, php5-apcu, php5-cli, php5-curl, php5-gd, php5-geoip, php5-imagick, php5-intl, php5-json, php5-mcrypt, php5-memcached, php5-mysqlnd, php5-sqlite, php5-xdebug, php5-xhprof, php5-xmlrpc, python, python3, rsync, ruby, software-properties-common, subversion, unzip, uglify-js, wget, zip

Example - Local

docker run -it --volume=/Applications/MAMP/htdocs/project:/project --workdir="/project" --entrypoint=/bin/bash hendrikprinsza/bitbucket-pipelines-phpunit-mysql

Example - Bitbucket Pipelines

pipelines:
  default:
    - step:
        image: hendrikprinsza/bitbucket-pipelines-phpunit-mysql
        script:
          - phpunit --version
          - mysql -h127.0.0.1 -uroot -ppassword123 -e "SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';"
        services:
          - mysql

definitions:
  services:
    mysql:
      image: mysql:5.6
      environment:
        MYSQL_DATABASE: test_database
        MYSQL_ROOT_PASSWORD: password123
28 May 2011

XML-XL Parser

University of Pretoria

Simple XML parsing tool as part of a university project.
Source
XSLT 483 XSD 104 Markdown 21 DOS_Batch 1

XSLT

XML-XL Parser

XSLT
About The Publication

uni-xml-online-store

Simple XML parsing tool as part of a university project.

The Scenario

You were recently hired by a web development company as the resident XML expert person for their projects. Your superior decided to put you on a job for one of the company's more important clients: an online Blu-ray store specialising in animation movies, called, quite originally: Online Store for Bluray Animations (OSBA). OSBA wants to send product information to their customers in a variety of ways, and they want you to handle it.

Tasks

  1. Transform all XML documents into a single master XML document through XSL
  2. Create schema(s) for your master XML document
  3. Create an HTML newsletter from the OSBA data
  4. Create a plain-text newsletter from the OSBA data
  5. Create a PDF newsletter from the OSBA data
  6. Create a database-ready CSV file from the OSBA data

Technologies

  • XML
  • XSL
  • XSLT
  • XPath
  • XSL-FO
  • DTD
  • XML Schema

Docs

09 Jun 2012

University Lecture Timetable Scheduler

University of Pretoria

Application that generates all possible combinations given a set of modules and groups Delphi 6692 C++ 182 C++ Header 70 Markdown 23 INI 22

Delphi

University Lecture Timetable Scheduler

Delphi
About The Publication

uni-student-lecture-timetable-scheduler

Application that generates all possible combinations given a set of modules and groups

Overview

Application that generates all possible rosters based on the modules a student is enrolled in. Every module can have multiple groups with differt lecture timeslots each day.

Video

Youtube Snipping

Features

  • Select modules and preferences
  • Enter/Edit modules, groups, and lecture times manually
  • Browse through the modules to have a look at each group's timeslots
  • Lock combinations
  • Generate all the possible timetables based on the selected modules
  • Print and/or save to excel
  • Update source files online

Technologies

  • Delphi
  • Advanced string handling to convert the source's storage (html) to a workable format (csv)

Resources

19 Oct 2011

Property Listing Website

University of Pretoria

Simple property listing website developed as part of a university project.
Source
PHP 2067 CSS 982 JavaScript 103 SQL 84 Markdown 11

MySQLRuby

Property Listing Website

MySQLRuby
About The Publication

uni-property-website

Simple property listing website developed as part of a university project.

Overview

Create a website for property listings. The site should have the following functionality: Member registration/updating, information sharing, property registration, ordered selection, non-member functionality, administrator interface, rating system, and a templatised structure.

Technologies:

  • HTML, XML, CSS, JSON
  • Javascript
  • MySQL
  • Ruby Generated Code

Docs

04 Mar 2011

Online e-book Reader

University of Pretoria

Elementary online e-book reader developed as part of a university project.
Source
JavaScript 2922 CSS 423 PHP 193 HTML 105 Markdown 14

PHP

Online e-book Reader

PHP
About The Publication

uni-online-ebook-reader

Elementary online e-book reader developed as part of a university project.

Overview

Construct a web-based e-book reader.

The reader must support EPUB files. The EPUB files should be stored as a static resources. When the user chooses to open read a book, this book should be unpacked on the client side.

Functionality:

  • Display EPUB files
  • Enable users to upload files
  • Customizable display
  • Allow users to bookmark pages

Technologies:

  • HTML/CSS
  • JavaScript/AJAX/JSON/JQuery
  • JQuery library - JSZip
20 Oct 2011

Link Sharing Website

University of Pretoria

Simple link sharing website developed as part of a university project.
Source
PHP 1907 CSS 982 SQL 120 JavaScript 103 Markdown 14

MySQLPHP

Link Sharing Website

MySQLPHP
About The Publication

uni-link-sharing-website

Simple link sharing website developed as part of a university project.

Overview

For this project you will create a link sharing website. People can create user profiles on this website and share links with their friends. The friends are managed through the website.

Technologies:

  • HTML 5
  • Javascript
  • JQuery
  • PHP
  • CSS
  • MySQL
  • AJAX and JSON

Docs

17 Sep 2012

C# Labs Management Application

University of Pretoria

Simple C# application to manage devices of a mobile lab
Source
C# 32533 XSD 2696 MSBuild 457 SQL 100 Markdown 27

C#MsSQL

C# Labs Management Application

C#MsSQL
About The Publication

uni-csharp-blackberry-labs-management

Simple c# application to manage devices of a mobile lab

Overview

The Department of Informatics, in collaboration with E-skills and BlackBerry Academic has recently opened a new lab at the university. The aim of the lab is to assist upcoming and existing developers in developing quality apps for the BlackBerry platform. The BlackBerry Apps lab requires your help to develop a system to manage: people who have access to the lab, events run by the lab and sign out of testing devices.

Technologies

  • Visual Studio C#
  • Microsoft SQL Server
  • Crystal Reports

Programming Techniques

  • OOP
  • Customizable Reports
  • Data Structures
  • Input Validation

System Requirements:

  • Microsoft Visual Studio
  • Microsoft SQL Server Management Studio

Installation Instructions A (With Crystal Reports)

  1. Install crystal reports
  2. Run the sql "BBLABS"
  3. Run the sql "BBLABSFullInserts"
  4. Login info: Username: "Admin" Pasw: "Admin"

Installation Instructions B (Without Crystal Reports)

  1. Run the sql "BBLABS"
  2. Run the sql "BBLABSFullInserts"
  3. Login info: Username: "Admin" Pasw: "Admin"

Docs

29 Oct 2010

C++ Fantasy Chess Game

University of Pretoria

Console based fantasy chess game C++ 2372 C++ Header 394 Markdown 14 makefile 13

C++

C++ Fantasy Chess Game

C++
About The Publication

uni-cplusplus-fantasy-chess

Console based fantasy chess game

Overview

You will have to create a chess-like strategy game which can be played by two human opponents. The game is played on a 9X9 board consisting of squares in which the pieces can move around. The objective of the game is to kill off your opponent's King piece. This is accomplished by moving your friendly pieces around on the board until you are able to move one of them onto a square containing the enemy King (or cast a damaging spell on the King).

Video

Youtube Snipping

Technologies

  • C++
  • Enterprise Architect (Diagrams)

Programming Techniques

  • OOP
  • Design Patterns

Docs

30 Oct 2011

C++ Expression Logic Application

University of Pretoria

Circuit Diagram Editor that allows the user to design, test and consequently simulate logic circuits. C++ 1363 C++ Header 303 Markdown 20 makefile 13

C++

C++ Expression Logic Application

C++
About The Publication

uni-cplusplus-boolean-logic

Console based C++ expression logic application

Overview

Your task is to design and implement a Circuit Diagram Editor that will allow the user to design, test and consequently simulate logic circuits.

Tasks

  • A menu that provides options for basic file handling, moving and erasing, rotating/flipping of circuit widgets or selection of widgets in the current logic circuit view.
  • Control widgets for input, output and logic gates
  • Each input or output connector associated with a widget can be assigned a label. Connectors with no labels are referred to as anonymous connectors. The labels of the connector represents a signal variable that can either be high or low.
  • Controls to run simulations for the circuits for particular inputs.
  • The system should provide the user with different views of the circuits. (Boolean algebra, Tabular, Tree-based)

Video

Youtube Snipping

Technologies

  • C++
  • Enterprise Architect (Diagrams)

Programming Techniques

  • OOP
  • Design Patterns

Docs

14 Mar 2016

MySQL Database Cron Manager (Windows/Unix)

CLEVVA

Bash tool to import/export MySQL databases (Windows/Unix)
Source
Bash 782 Markdown 97 PHP 30

BashMySQL

MySQL Database Cron Manager (Windows/Unix)

BashMySQL
About The Publication
09 May 2011

School Exam Scheduler

Personal

Application that deals with the planning of school exam schedules Delphi 6763 Markdown 21

Delphi

School Exam Scheduler

Delphi
About The Publication

me-school-exam-timetable-scheduler

Application that deals with the planning of school exam schedules

Overview

Covers the main aspects of setting up an exam schedule: Tests, Venues, Supervisors.

Video

Youtube Snipping

Features

  • Test scheduling
  • Venue allocation
  • Supervisor allocation
  • Reporting

Technologies

  • Delphi

Shortfalls

  • Text storage instead of database
  • Some bugs

Resources

05 Mar 2014

Simple PHPExcel Adapter

CLC

This class provides you a simpler interface to communicate with the PHPExcel class. It allows faster report creation. Reads easily.
Source
PHP 297 Markdown 8

PHP

Simple PHPExcel Adapter

PHP
About The Publication

me-phpexceladapter

Simple interface for the PHPExcel class

Overview

PHPExcel is a set of classes for the PHP programming language, which allow you to write to and read from different spreadsheet file formats, like Excel (BIFF) .xls, Excel 2007 (OfficeOpenXML) .xlsx, CSV, Libre/OpenOffice Calc .ods, Gnumeric, PDF, HTML, ... This project is built around Microsoft's OpenXML standard and PHP.

This class provides you a simpler interface to communicate with the PHPExcel class. It allows faster report creation. Reads easily.

Technologies

23 Apr 2016

Web Server Configurator

CLEVVA

Web Server Configuration Application
Source
JavaScript 52821 CSS 10412 PHP 8303 Sass 2964 LESS 1534 HTML 688 INI 571 JSON 482 Markdown 360 Ruby 11

Ember JSMySQLPHPServerSlim Framework

Web Server Configurator

Ember JSMySQLPHPServerSlim Framework
About The Publication

me-server-console

Web Server Console Application

Overview

Some applications require specific modules/configurations in order to run successfully. This application allows you to inspect the current configuration of the web server and determine if those standards are met.

Installation

Simply dump the files in this repo on your web server.

cd /var/www/html
git clone https://github.com/HendrikPrinsZA/me-server-console.git

Configuration

Specify the requirements and preferred configurations

Technologies

Default configuration

{
    "configuration": {
        "version": "2.08.01"
    },

    "requirements": [
        {
            "type": "base",
            "required": true,
            "display": {
                "logo": "php-logo.png",
                "title": "PHP",
                "description": "",
                "additionalLines": []
            },
            "refresh": { "url": "checkifphpexists.php", "data": {} },
            "values": { "server": "", "minimum": "ON", "recommended": "" },
            "actions": [],
            "initialChecksFailedInformation": [
                "It is essential that PHP is installed and configured correctly for this application to run. Check your server's configuration before you continue."
            ]
        },
        {
            "type": "base",
            "required": true,
            "display": {
                "logo": "apache-logo.png",
                "title": "Apache Module - mod_rewrite",
                "description": "Provides a rule-based rewriting engine to rewrite requested URLs on the fly",
                "additionalLines": []
            },
            "refresh": { "url": "mod_rewrite_test/", "data": {} },
            "values": { "server": "", "minimum": "ON", "recommended": "" },
            "actions": [],
            "initialChecksFailedInformation": [
                "It is essential that mod_rewrite is enabled and configured correctly for this application to run. Check your server's configuration before you continue."
            ]
        },
        {
            "type": "base",
            "required": true,
            "display": {
                "logo": "authentication-logo.png",
                "title": "Authentication - Setup",
                "description": "This application requires password protection to protect against unauthorized access",
                "additionalLines": []
            },
            "refresh": { "url": "api/authentication/permission", "data": {} },
            "values": { "server": "", "minimum": "Read and write", "recommended": "" },
            "actions": [],
            "initialChecksFailedInformation": [
                "Ensure the application has read and write permission of the config directory."
            ]
        },

        {
            "type": "core",
            "required": true,
            "display": {
                "logo": "php-logo.png",
                "title": "PHP Version",
                "description": "",
                "additionalLines": []
            },
            "refresh": { "url": "api/php", "data": {} },
            "values": { "server": "", "minimum": "5.4", "recommended": "5.6" },
            "actions": [
                {
                    "type": "open",
                    "title": "Download PHP ini",
                    "endpoint": "/action/phpini"
                },
                {
                    "type": "open",
                    "title": "Download PHP Info Page",
                    "endpoint": "/action/phpinfo"
                },
                {
                    "type": "open",
                    "title": "Download PHP Error Log",
                    "endpoint": "/action/phperror"
                }
            ]
        }
        ,{
            "type": "core",
            "required": true,
            "display": {
                "logo": "ioncube-logo.png",
                "title": "ionCube",
                "description": "",
                "additionalLines": []
            },
            "refresh": { "url": "api/ioncube", "data": {} },
            "values": { "server": "", "minimum": "5.0", "recommended": "" },
            "actions": [
                {
                    "type": "open",
                    "title": "Download & Install ionCube Loader",
                    "endpoint": "https://www.ioncube.com/loaders.php"
                }
            ],
            "initialChecksFailedInformation": [
                "The ionCube loader is marked as an essential requirement to run the application. You can skip and continue as this application does not require it."
            ]
        },
        {
            "type": "core",
            "required": true,
            "display": {
                "logo": "ioncube-logo.png",
                "title": "MySQL Version",
                "description": "",
                "additionalLines": []
            },
            "refresh": { "url": "api/mysql", "data": {} },
            "values": { "server": "", "minimum": "5.0", "recommended": "" },
            "actions": [
                {
                    "type": "open",
                    "title": "Download & Install ionCube Loader",
                    "endpoint": "https://www.ioncube.com/loaders.php"
                }
            ],
            "initialChecksFailedInformation": [
                "The ionCube loader is marked as an essential requirement to run the application. You can skip and continue as this application does not require it."
            ]
        }

       ,{
            "type": "phpExtension",
            "required": true,
            "display": {
                "logo": "php-logo.png",
                "title": "PHP - xml",
                "description": "Provides fast, non-cached, forward-only access to xml data under PHP 5",
                "additionalLines": [
                    "<a href='http://gistpages.com/posts/php_fatal_error_class_domdocument_not_found' target='_blank'>Install php-xml</a>"
                ]
            },
            "refresh": { "url": "api/configuration", "data": {"function": "extension_loaded", "parameter": "xml"} },
            "values": { "server": "", "minimum": "ON", "recommended": "" },
            "actions": []
        }

       ,{
            "type": "phpExtension",
            "required": true,
            "display": {
                "logo": "php-logo.png",
                "title": "PHP - pdo",
                "description": "The PHP Data Objects (PDO) extension defines a lightweight, consistent interface for accessing databases in PHP.",
                "additionalLines": [
                    "<a href='http://php.net/manual/en/pdo.installation.php' target='_blank'>Installing PDO</a>"
                ]
            },
            "refresh": { "url": "api/configuration", "data": {"function": "extension_loaded", "parameter": "pdo"} },
            "values": { "server": "", "minimum": "ON", "recommended": "" },
            "actions": []
        }

       ,{
            "type": "phpExtension",
            "required": true,
            "display": {
                "logo": "php-logo.png",
                "title": "PHP - dom",
                "description": "The DOM extension allows you to operate on XML documents through the DOM API with PHP 5.",
                "additionalLines": []
            },
            "refresh": { "url": "api/configuration", "data": {"function": "extension_loaded", "parameter": "dom"} },
            "values": { "server": "", "minimum": "ON", "recommended": "" },
            "actions": []
        }

       ,{
            "type": "phpExtension",
            "required": true,
            "display": {
                "logo": "php-logo.png",
                "title": "PHP - curl",
                "description": "Allows to connect and communicate to many different types of servers with many different types of protocols.",
                "additionalLines": []
            },
            "refresh": { "url": "api/configuration", "data": {"function": "extension_loaded", "parameter": "curl"} },
            "values": { "server": "", "minimum": "ON", "recommended": "" },
            "actions": []
        }

       ,{
            "type": "phpExtension",
            "required": true,
            "display": {
                "logo": "php-logo.png",
                "title": "PHP - fileinfo",
                "description": "The functions in this module try to guess the content type and encoding of a file by looking for certain magic byte sequences at specific positions within the file.",
                "additionalLines": []
            },
            "refresh": { "url": "api/configuration", "data": {"function": "extension_loaded", "parameter": "fileinfo"} },
            "values": { "server": "", "minimum": "ON", "recommended": "" },
            "actions": []
        }

       ,{
            "type": "phpExtension",
            "required": true,
            "display": {
                "logo": "php-mysql-logo.png",
                "title": "PHP - mysql",
                "description": "PHP offers several MySQL drivers and plugins for accessing and handling MySQL.",
                "additionalLines": []
            },
            "refresh": { "url": "api/configuration", "data": {"function": "extension_loaded", "parameter": "mysql"} },
            "values": { "server": "", "minimum": "ON", "recommended": "" },
            "actions": []
        }

        ,{
            "type": "phpExtension",
            "required": true,
            "display": {
                "logo": "php-logo.png",
                "title": "PHP - MB Strings Module",
                "description": "MB Strings Module is a non-default extension. This means it is not enabled by default. You must explicitly enable the module with the configure option.",
                "additionalLines": []
            },
            "refresh": { "url": "api/configuration", "data": {"function": "function_exists", "parameter": "mb_strlen"} },
            "values": { "server": "", "minimum": "ON", "recommended": "" },
            "actions": [
                {
                    "type": "open",
                    "title": "PHP Installation - mbstring",
                    "endpoint": "http://php.net/manual/en/mbstring.installation.php"
                }
            ]
        },
        {
            "type": "phpExtension",
            "required": true,
            "display": {
                "logo": "php-logo.png",
                "title": "PHP - ZipArchive",
                "description": "",
                "additionalLines": []
            },
            "refresh": { "url": "api/configuration", "data": {"function": "class_exists", "parameter": "ZipArchive"} },
            "values": { "server": "", "minimum": "ON", "recommended": "" },
            "actions": []
        }
        ,{
            "type": "phpExtension",
            "required": true,
            "display": {
                "logo": "php-logo.png",
                "title": "PHP Opcode Caching",
                "description": "OpCode Caches are a performance enhancing extension for PHP. They do this by injecting themselves into the execution life-cycle of PHP and caching the results of the compilation phase for later reuse. It is not uncommon to see a 3x performance increase just by enabling an OpCode cache.",
                "additionalLines": []
            },
            "refresh": { "url": "api/configuration", "data": {"function": "ini_get", "parameter": "opcache.enable"} },
            "values": { "server": "", "minimum": "0", "recommended": "" },
            "actions": [
                {
                    "type": "open",
                    "title": "Everything You Need To Know About OpCode Caches",
                    "endpoint": "https://support.cloud.engineyard.com/hc/en-us/articles/205411888-PHP-Performance-I-Everything-You-Need-to-Know-About-OpCode-Caches"
                }
            ]
        }

       ,{
            "type": "phpVariable",
            "required": true,
            "display": {
                "logo": "php-logo.png",
                "title": "PHP Variable - display_errors",
                "description": "This determines whether errors should be printed to the screen as part of the output or if they should be hidden from the user.",
                "additionalLines": []
            },
            "refresh": { "url": "api/configuration", "data": {"function": "get_cfg_var", "parameter": "display_errors"} },
            "values": { "server": "", "minimum": "OFF", "recommended": "" },
            "actions": []
        }

       ,{
            "type": "phpVariable",
            "required": true,
            "display": {
                "logo": "php-mysql-logo.png",
                "title": "PHP & MySQL Timezones",
                "description": "PHP & MySQL should be configured to have the same timezones",
                "additionalLines": []
            },
            "refresh": { "url": "api/phptimevsmysqltime", "data": {} },
            "values": { "server": "", "minimum": "MATCHING", "recommended": "" },
            "actions": [
                {
                    "type": "open",
                    "title": "Setting the Timezone for PHP in the php.ini file",
                    "endpoint": "http://www.inmotionhosting.com/support/website/php/setting-the-timezone-for-php-in-the-phpini-file"
                },
                {
                    "type": "open",
                    "title": "Server System Variables - sysvar_time_zone",
                    "endpoint": "http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_time_zone"
                }
            ],
            "initialChecksFailedInformation": [
                "It is critical that PHP and MySQL are both configured to use the same timezone. You can skip and confirm the connection details in the settings."
            ]
        }

        ,{
            "type": "base",
            "required": true,
            "display": {
                "logo": "php-logo.png",
                "title": "PHP",
                "description": "",
                "additionalLines": []
            },
            "refresh": { "url": "checkifphpexists.php", "data": {} },
            "values": { "server": "", "minimum": "ON", "recommended": "" },
            "actions": [],
            "initialChecksFailedInformation": [
                "It is essential that PHP is installed and configured correctly for this application to run. Check your server's configuration before you continue."
            ]
        }

    ]
}
.04

EVENTS

CONFERENCES
  • 2018
    FEB
    CAPE TOWN, SOUTH AFRICA

    Microsoft Tech Summit Cape Town

    MICROSOFT

    Technical learning event with Microsoft’s top cloud engineers across Azure and Microsoft 365. Whether you’re developing innovative apps or delivering optimized solutions, Microsoft Tech Summit can help evolve your skills, deepen your expertise, and grow your career.

  • 2017
    MAR
    Cape Town, South Africa

    SCALECONF

    AFRICA'S PREMIER RUBY CONFERENCE

    Each year ScaleConf brings international and local experts together to share their experience scaling websites and services using modern technologies and philosophies.

    scaleconf.org
  • 2017
    FEB
    CAPE TOWN, SOUTH AFRICA

    RUBYFUZA

    AFRICA'S PREMIER RUBY CONFERENCE

    Focused on fostering the Ruby programming language and the robust community that has sprung up around it, RubyConf brings together Rubyists both established and new to discuss emerging ideas

    www.rubyfuza.org
  • 2015
    SEPT
    CAPE TOWN, SOUTH AFRICA

    Microsoft Dev Day

    MICROSOFT

    Dev Day brings an experience for you to gain in-depth usable knowledge about building next generation cloud solutions using Microsoft Azure, The new Universal Windows Platform and much, much more. Immerse yourself in sessions and new demos and get face to face time with Microsoft technical experts to ask those tough questions, and connect with your peers.

  • 2015
    OCT
    CAPE TOWN, SOUTH AFRICA

    Developing for Microsoft Azure

    MICROSOFT

    The topics to be covered all focus around the roadmap from Microsoft and developing for our Windows and Cloud platforms.

    Through the day we will focus the discussion around the monetization options from adopting the new platforms from Microsoft.

.05

CONTACT

Get in touch