With a delay of two months after their first official release I have now added my newest projects, libsgfc++ and SgfcKit, to the list of software projects.
libsgfc++ (GitHub project page) is a cross-platform C++ wrapper library around SGFC, the SGF Syntax Checker & Converter. SGFC is a command line utility written in C that reads and writes SGF (Smart Game Format) files. By wrapping SGFC’s functionality, libsgfc++ transforms the command line utility into a reusable software library that makes the functionality available in the form of an object-oriented API.
SgfcKit (GitHub project page) is an Objective-C wrapper library around libsgfc++, making the combined libsgfc++ / SGFC functionality available to Objective-C clients.
In a recent code review at my workplace I found a piece of C# code that contained something along this line:
string foo = "bar";
string substring = foo.Substring(3);
Clearly index position 3 is beyond the end of the string, so I thought I had found a bug and was about to flag the code. Then it occurred to me: Why had the unit tests not failed during the gated checkin build?
This post is about my (successful) attempt to migrate my Bugzilla installation from MySQL/MariaDB to PostgreSQL.
Always two there are, no more no less. A master release and a bugfix release.
Alas, it seems to have become almost a rule that, shortly after I publish a master release of Little Go on the App Store, some issue is found and I have to follow up with a bugfix release. So here I present to you version 1.5.1 of Little Go which was published on the App Store last Sunday night and which contains the fix for a bug that affected users on older devices with iOS 9.x and below.
The annoying thing is that this time the problem was a piece of code that I had added in 1.5.0 to make UI testing work. In other words, my effort to increase the software quality had exactly the reverse effect. At least the bug was easy to find and fix, just a property (accessibilityFrameInContainerSpace) that was introduced in iOS 10 and which I had forgotten to protect with an appropriate @available guard.
Here's the usual link to the GitHub release page.
Little Go 1.5.0 has been published earlier today on the App Store. Version 1.5.0 is the first feature release since 1.2.0, almost 4 years ago.
The new version contains only a single feature: A new board setup mode in which you can place black or white stones in any order and combination to set up the initial board before you begin to play moves. This feature is a continuation of the work begun in version 1.4.0, where I added support for loading and saving .sgf files that contain stone and/or player setup nodes.
Also important in this version: I started to write automated UI tests. The main work was finding out how the UI testing API works and laying the groundwork for future tests (e.g. how to test the three different layouts, how to interact with the board to place a stone, etc.). Originally I had intended to automate all tests described in the manual testing script (file
TESTING), but then I realized how much work this meant and I became completely paralyzed. Several weeks of stasis finally convinced me that the task of fully automating all UI tests would have to be broken down and completed with "baby steps" if the project ever was to see another release. So that's why in this version of Little Go there is less-than-might-be-expected UI testing.
That's all, folks. If you want you can finish by reading the App Store update notes or the GitHub release page.