Continuous Integration for PHP Extensions

(Co-written with Alan Seiden)

CI/CDContinuous Integration (CI) ensures that every time a developer commits changes to a version control system such as Git, the code is automatically built and subjected to automated tests.

CI has been invaluable to us. As maintainers of PHP’s PDO_IBM and ibm_db2 extensions, we use CI to ensure high quality across platforms.

Platforms supported by PHP’s extensions for Db2 include IBM i, Unix/Linux, and Windows. While our focus is IBM i, we must ensure compatibility with the others. Reliance on manual testing would introduce the risk of broken builds or subtle bugs. Automation is a must.

In this post, we explain how we use CI principles when building and testing PHP’s Db2 extensions.

Read more

Visual Studio Code for IBM i: A Resource Guide

Code for IBM iJust over a year ago, a group of developers led by Liam Allan presented the IBM i community with a new, free IDE—an IBM i extension to the popular Visual Studio Code.

VS Code for IBM i offers an alternative to RDi, the heavy-duty, fee-based graphical IDE for IBM i, and SEU, the native greenscreen IDE. It’s faster than RDi and easier to learn than either RDi or SEU. It supports development in RPGLE, COBOL, JavaScript, PHP, Python, Node.js and other languages. For these reasons, Code for IBM i is a great solution for:

Read more

How to Choose a PHP API Framework

APIAlan and I provide mentoring in API strategy for a software company who asked us whether they should use a PHP framework and, if so, which one would be best. They also wondered whether to invest in a commercial API gateway.

My thoughts on APIs and frameworks struck Alan as useful for any language and platform. Alan encouraged me to document my “philosophy of frameworks” here for anyone planning to develop web apps or APIs.

Read more

New IBM i extension for PHP

PHP on IBM iOne of the open source components we’ve built at Seiden Group is a new extension to enhance PHP’s integration with IBM i.

Although most business requirements are met by the existing ibm_db2 and PDO_ODBC extensions plus the PHP Toolkit, the new php-ibmi makes it easier to accomplish several (formerly) difficult or impossible tasks—especially for tool vendors, and when troubleshooting.

We’ve built six functions thus far, with the possibility of more in the future. Let us know what you think.

Read more

Update: Code for IBM i Language Tools

Code for IBM iCode for IBM i and its RPGLE language tools have come a long way! I am excited to share some of the language tools improvements with you today. They are absolutely worth talking about. Language tools are what makes writing code fun and exciting, and we can be better developers with them.

Read more

Porting a Cross-Platform C++ Application to Mac

An article about building C++ software for macOS might seem out of the ordinary for Seiden Group, a company that focuses on IBM i, but we have a good reason: we’ve been enhancing open source tools for PHP and Python. One of these is KCachegrind, an open source visualization tool that integrates with PHP’s Xdebug’s powerful application profiler and Python’s cprofile.

While KCachegrind and its cousin QCachegrind are easily available for Linux, only very outdated builds were available for Windows, and none at all for macOS. To rectify the situation, we’ve been making enhancements; providing QCachegrind builds for the community; and documenting how to use QCachegrind with Xdebug.

We’ve learned how to build cross-platform applications that work well on a Mac. This article documents many of the challenges we faced and solutions we found.

Read more

RPGLE Linting and Content Assist with VS Code for IBM i

vscode-rpgle extensionA great IDE contains features that increase your coding speed and accuracy so you can focus on your program’s logic. One of my favorite productivity enhancers, content assist, has been bundled in Visual Studio Code for IBM i since its inception. Content assist gives you autocomplete options for code as you write it, reducing syntax errors.

Today we’re announcing a new killer productivity tool for Code for IBM i—a built-in linter!

Read more

Managing Multiple Program Versions with Update-Alternatives

parallel versionsAfter installing Python 3.9 side-by-side with Python 3.6, one of our friends observed, “I noticed that the newer version, Python 3.9, became the default on my IBM i system. How does the default version get set?” I thought this was a good time to explain how IBM uses the update-alternatives program to set the default version of Python and other open source software packages.

Read more

Troubleshooting “already been bootstrapped” Message on IBM i

Setting up the open source environment on IBM i from Access Client Solutions (ACS) is usually easy, but sometimes you can run into problems. The most common error is when ACS claims that the environment is already set up (“bootstrapped”), when in fact it isn’t. Confusing!

Read more

VS Code for IBM i — Tips and Extras

Visual Studio Code 1.35 iconVisual Studio Code is a widely used IDE in the non-IBM i world. Recently we released Code for IBM i, a freely available extension for VS Code that supports RPGLE and COBOL development for IBM i. You can read about the basics of Code for IBM i and about code coverage functionality in my previous posts.

Today I’m going to cover three additional tips for using Code for IBM i. Of course, for any of this to work, you need to install Code for IBM i.

Read more