Friday, 16 February 2018

Book Review - Disruptive Technologies by Paul Armstrong

This is another of my semi-regular book reviews for the British Computer Society: -

This book appealed to me based purely on the title; to me, the word "Disruptive" is a double-edged sword, and is often seen as a threat as much as an opportunity.

In this book, the author takes a similar view, in terms of positioning new and emerging technologies, highlighting the potential risks and benefits of each.

Personally I take issue with the author's perspective on the blockchain, in that he appears to confuse the blockchain with a well-known, and not always in good way, example of it's use, namely Bitcoin.

However, this is a common misconception, so I chose to let it pass.

Apart from the extremely useful introduction to the most recent innovative and disruptive technologies, the author then devotes the remainder of the book to focus upon the methodology of forecasting and technology selection.

He introduces an approach of his own innovation - Technology/Behaviour/Data - TBD - upon which he expands throughout the book, as a tool to support technology selection, adoption and acceptance.

Whilst this was of interest, it wasn't of immediate relevance to me, in my current role. However, I can see the attraction of a clearly defined process, especially with the large number of worked examples of the methodology in practice.

Similarly, as someone who has recently had a patent application filed, this book is immensely useful in the context of innovation and invention.

Therefore, I'd recommend this book to anyone looking to introduce new technologies into a business, whether they are listed in this book, or whether they're yet to be invented.

I'd give this book 9/10, in terms of it's overall value and benefit.

Monday, 12 February 2018

 macOS - Disks and Core Storage

I've spent some of the past fortnight tinkering with a 2014 Mac Mini, which has a 1 TB Fusion drive; this is a combination of a conventional hard disk ( aka spinning rust ) and a smaller amount of solid-state disk (SSD).

As far as I can establish, macOS supports this via a technique called CoreStorage (CS), which has some similarities with other Logical Volume Managers (LVM), in that it creates a Logical Volume Group spanning multiple physical drives.

Long story short, I was trying/struggling to install a brand-new copy of macOS, whether the original as-shipped Yosemite or the latest High Sierra.

In both cases, having booted from a USB key, the installation would get most of the way through and then fail with a myriad of unintelligible exceptions.

For various reasons, I ended up decided that the problem was the Fusion drive, so I dug into a technique to "nuke" it, and then reconfigure it post-installation.

This is what I did: -

List the existing file systems

diskutil cs list

CoreStorage logical volume groups (1 found)
+-- Logical Volume Group 3A8C71B6-15A5-468F-88DC-24247FA4638F
    Name:         Untitled
    Status:       Online
    Size:         1120333979648 B (1.1 TB)
    Free Space:   114688 B (114.7 KB)
    +-< Physical Volume FFC8B753-839E-4AA9-B4D4-B4DB7CA3C91C
    |   ----------------------------------------------------
    |   Index:    0
    |   Disk:     disk0s2
    |   Status:   Online
    |   Size:     120988852224 B (121.0 GB)
    +-< Physical Volume 8FDAF8C0-C858-40EB-A4F4-B0FD929441BC
    |   ----------------------------------------------------
    |   Index:    1
    |   Disk:     disk1s2
    |   Status:   Online
    |   Size:     999345127424 B (999.3 GB)
    +-> Logical Volume Family BEBC81CD-F707-4B71-9DCC-FDE50E08B0D3
        Encryption Type:         None
        +-> Logical Volume A9F2838E-4AB3-4F72-8F40-1282FF9395D7
            Disk:                  disk2
            Status:                Online
            Size (Total):          1114478608384 B (1.1 TB)
            Revertible:            No
            LV Name:               Yosemite
            Volume Name:           Yosemite
            Content Hint:          Apple_HFSX
            LVG Type:              Fusion, Sparse

Delete the CoreStorage Logical Volume Group

( I had, of course, backed up the important stuff BEFORE I did this )

diskutil cs delete 3A8C71B6-15A5-468F-88DC-24247FA4638F

Started CoreStorage operation
Unmounting Logical Volumes
Destroying Logical Volume Group
Erasing disk0s2
Initialized /dev/rdisk0s2 as a 113 GB case-insensitive HFS Plus volume with a 16384k journal
Mounting disk
Erasing disk1s2
Initialized /dev/rdisk1s2 as a 931 GB case-insensitive HFS Plus volume with a 81920k journal
Mounting disk
Finished CoreStorage operation

List the new file systems

diskutil list

/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Untitled                121.0 GB   disk0s2

/dev/disk1 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk1
   1:                        EFI EFI                     209.7 MB   disk1s1
   2:                  Apple_HFS Untitled                999.3 GB   disk1s2

/dev/disk3 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk3
   1:                        EFI EFI                     209.7 MB   disk3s1
   2:                  Apple_HFS SuperDuper              499.2 GB   disk3s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk3s3

/dev/disk4 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *7.8 GB     disk4
   1:                        EFI EFI                     209.7 MB   disk4s1
   2:                  Apple_HFS Install OS X Yosemite   7.5 GB     disk4s2

Once I'd successfully installed macOS High Sierra onto the spinny disk ( /dev/disk1 ), I joined them back together again: -

Create new CoreStorage Logical Volume Group spanning both disks

diskutil cs create DaveHay disk0 disk1

Started CoreStorage operation
Unmounting disk0
Repartitioning disk0
Unmounting disk
Creating the partition map
Rediscovering disk0
Adding disk0s2 to Logical Volume Group
Unmounting disk1
Repartitioning disk1
Unmounting disk
Creating the partition map
Rediscovering disk1
Adding disk1s2 to Logical Volume Group
Creating Core Storage Logical Volume Group
Switching disk0s2 to Core Storage
Switching disk1s2 to Core Storage
Waiting for Logical Volume Group to appear
Discovered new Logical Volume Group "05899854-9FA2-4EF5-87F8-83BDAB96A1FE"
Core Storage LVG UUID: 05899854-9FA2-4EF5-87F8-83BDAB96A1FE
Finished CoreStorage operation

List the new file systems

diskutil cs list

CoreStorage logical volume groups (1 found)
+-- Logical Volume Group 05899854-9FA2-4EF5-87F8-83BDAB96A1FE
    Name:         DaveHay
    Status:       Online
    Size:         1120849764352 B (1.1 TB)
    Free Space:   1114994507776 B (1.1 TB)
    +-< Physical Volume 82119759-D8A4-449D-95A0-0B362DD72F5D
    |   ----------------------------------------------------
    |   Index:    0
    |   Disk:     disk0s2
    |   Status:   Online
    |   Size:     120988852224 B (121.0 GB)
    +-< Physical Volume E4FB1715-3F1E-4B23-8E05-211129D75A96
        Index:    1
        Disk:     disk1s2
        Status:   Online
        Size:     999860912128 B (999.9 GB)

Success !

IBM Design Thinking and Agile - Some more light reading

A friend was asking me about playbacks, stakeholder involvement and the replanning of sprints.

So I directed him to this: -

Agile delivery ( GOV.UK )

Agile tools and techniques ( GOV.UK ) 

and this: -

IBM Design Thinking


Something to read …..

Thursday, 25 January 2018

Football Simulation Engine - written in Node.js

One of my team has put this together, using Node.js: -


This module was designed to allow the simulation of football (soccer) matches between two teams. It consists of three functions that

• Initiate a match
• complete an iteration / movement
• switch team sides / start second half

He rocks :-)

Wednesday, 24 January 2018

IBM Business Process Manager Interactive Installation and Configuration Guide

I was writing to a colleague about planning for an IBM BPM installation, and thought to recommend that he review this: -

This guide takes you through the steps for installing and configuring IBM Business Process Manager (IBM BPM).

If you are migrating business data and applications from a previous version, use the Interactive Migration Guide instead of this guide. The Interactive Migration Guide generates instructions for a complete migration, including installing and configuring the product.

The Interactive Installation and Configuration Guide works best in supported versions of Google Chrome, Microsoft Internet Explorer, and Mozilla Firefox on Windows. In most instances, the generated output is restricted to supported installation scenarios. However, it might be possible to generate an unsupported set of instructions. For information about supported installation scenarios, go to the IBM Support Portal or use the installation roadmaps.

The Interactive Installation and Configuration Guide uses installation and configuration rules and considerations that are described in other topics. Each of those topics is accessible to screen readers, but the Interactive Installation and Configuration Guide itself is not fully accessible. For fully accessible information, use the installation topics as an alternative to using the Interactive Installation and Configuration Guide.

This is a really good way to generate a nice printable ( or, better still, PDFable ) set of instructions.

Thanks IBM

Tuesday, 23 January 2018

IBM Integration Bus - Integration Toolkit on Red Hat Enterprise Linux

This is another of my various tinkering exercises ….

I'm attempting to get the IBM Integration Bus (IIB) 9 Toolkit working on my Mac, against a VM running Red hat Enterprise Linux 7.4.

I'm actually tunnelling X11 via SSH ( via ssh -y wasadmin@hostname )

When I attempt to start the Toolkit: -


I see this: -


 progressRectString:  2,489,646,12
 messageRectString: 12,443,444,15
Unhandled exception
Type=Segmentation error vmState=0x00040000
J9Generic_Signal_Number=00000004 Signal_Number=0000000b Error_Value=00000000 Signal_Code=00000080
Handler1=F6B5EACA Handler2=F6B0F017 InaccessibleAddress=00000000
EDI=F750FCA4 ESI=F750FB64 EAX=F7510BF0 EBX=ADA45000
EIP=AD958FAE ES=002B DS=002B ESP=F750FA28
EFlags=00010286 CS=0023 SS=002B EBP=F751000C
Target=2_60_20120809_118929 (Linux 3.10.0-693.11.6.el7.x86_64)
CPU=x86 (1 logical CPUs) (0x1e7da8000 RAM)
----------- Stack Backtrace -----------
(0xF6B005B0 [])
(0xF6B0FFC2 [])
(0xF6B002A1 [])
(0xF6B00395 [])
(0xF6AFFEA4 [])
(0xF6B0FFC2 [])
(0xF6AFFE13 [])
(0xF6B5DEF5 [])
(0xF6B0FFC2 [])
(0xF6B5E1FE [])
(0xF6B5EB18 [])
(0xF6B0F1E5 [])
__kernel_rt_sigreturn+0x0 (0xF7784410)
(0x00023280 [<unknown>+0x0])
JVMDUMP039I Processing dump event "gpf", detail "" at 2018/01/23 15:49:57 - please wait.
JVMDUMP032I JVM requested System dump using '/opt/ibm/IntegrationToolkit90/core.20180123.154957.90680.0001.dmp' in response to an event
JVMPORT030W /proc/sys/kernel/core_pattern setting "|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e %P %I %h" specifies that the core dump is to be piped to an external program.  Attempting to rename either core or core.90725.

JVMDUMP010I System dump written to /opt/ibm/IntegrationToolkit90/core.20180123.154957.90680.0001.dmp
JVMDUMP032I JVM requested Java dump using '/opt/ibm/IntegrationToolkit90/javacore.20180123.154957.90680.0002.txt' in response to an event
JVMDUMP010I Java dump written to /opt/ibm/IntegrationToolkit90/javacore.20180123.154957.90680.0002.txt
JVMDUMP032I JVM requested Snap dump using '/opt/ibm/IntegrationToolkit90/Snap.20180123.154957.90680.0003.trc' in response to an event
JVMDUMP010I Snap dump written to /opt/ibm/IntegrationToolkit90/Snap.20180123.154957.90680.0003.trc
JVMDUMP013I Processed dump event "gpf", detail "".

Appreciating that this is almost certainly an unsupported configuration, I was able to solve the problem, using this as inspiration: -

which said, in part: -


"adwaita-gtk2-theme" (32 and 64 bit) and "adwaita-gtk3-theme" 64 bit libraries were missing.

Resolving the problem

Install the missing libraries "adwaita-gtk2-theme" (32 and 64 bit) and "adwaita-gtk3-theme" 64 bit. Please contact RedHat to obtain the missing libraries.

I installed the missing RPM: -

/usr/bin/yum --noplugins install -y adwaita-gtk2-theme

  adwaita-gtk2-theme.x86_64 0:3.22.2-1.el7                                                                                                                                                               


Removed temporary configuration

and now we're good to go.

For the record, I'd previously installed these two RPMs: -

as required by IBM Installation Manager, installing the Toolkit.

IBM BPM 8.6 - Upgrading to CF2017.12

In December, IBM released an update to IBM Business Process Manager 8.6, specifically the Cumulative Fix 2017-12, aka CF2017.12.

This is what it included, in part: -

Update to IBM BPM V8.6 CF2017.12 to experience all the highlights, such as these added abilities and improvements:

• Simplify user task authoring with inline user tasks
• Model decision logic in the web IBM Process Designer
• Experience enhanced support of coach views for use in IBM Robotic Process Automation with Automation Anywhere
• Gain more insight into IBM BPM process applications
• Benefit from enhanced process application validation support
• Efficiently manage multiple library items in Process Designer
• Revert library items in Process Designer
• Learn how to use IBM App Connect
• Restrict rights to create and update saved searches by using an action policy

Having downloaded the Cumulative Fix a month or so back, I decided to work through the installation.

The first thing to note is that the CF comes as a .ZIP file, specifically an Installation Manager "Delta" repository.

Compared to the original 8.6 Delta Repo: -

ls -alh /Volumes/DaveHaySSD/Software/BPM86/Fixpacks/

total 9360184
drwxr-xr-x  4 davidhay  staff   136B  5 Jan 15:56 .
drwxr-xr-x  5 davidhay  staff   170B 19 Jan 10:08 ..
-rw-r--r--  1 davidhay  staff   1.9G  5 Jan 09:54
-rw-r--r--  1 davidhay  staff   2.5G 26 Sep 13:25

it's interesting to note that the CF2017.12 Repo is smaller.

In terms of patching BPM, I've gone through the process a number of times now, most recently focusing upon the upgrade from 8.5.5 to 8.5.7 and 8.6.

The very short-hand version of my process follows: -

Starting Position

/opt/ibm/InstallationManager/eclipse/tools/imcl listInstalledPackages

Patch WAS to

/opt/ibm/InstallationManager/eclipse/tools/imcl -input /mnt/ResponseFiles/upgradeWAS85512.rsp -acceptLicense

Updated to in the /opt/ibm/WebSphere/AppServer directory.
WARNING: Your default Java SDK is Java SE 6. After April 2018, service for Java SE 6 can no longer be provided, which could expose your environment to security risks.

To stay current and reduce the risk of security exposures, update to Java SE 8 using one of the following options:
- Install WebSphere Application Server or later with Java SE 8.
- Install the optional IBM WebSphere SDK, Java Technology Edition, Version 8 package to an existing package group that contains WebSphere Application Server Version 8.5.
- Migrate to WebSphere Application Server traditional Version 9.

Alternatively, to use Java SE 7, install the optional IBM WebSphere SDK, Java Technology Edition, Version 7 or 7.1 package to the package group that contains WebSphere Application Server Version 8.5.

Install Java 8

/opt/ibm/InstallationManager/eclipse/tools/imcl -input /mnt/ResponseFiles/installJava8.rsp -acceptLicense

Installed to the /opt/ibm/WebSphere/AppServer directory.

Patch BPM

/opt/ibm/InstallationManager/eclipse/tools/imcl -input upgradeBPM855_to_86_CF201712.rsp -acceptLicense

Updated to in the /opt/ibm/WebSphere/AppServer directory.

Ending Position

/opt/ibm/InstallationManager/eclipse/tools/imcl listInstalledPackages

Note that this ONLY focuses upon the binaries, there's also a need to: -

(a) Upgrade the BPM database schemae to support 8.6
(b) Update the WAS profiles to use Java 8 rather than Java 6 
(c) Synchronise the WAS cell

However, for me, the key thing is that I can upgrade directly from 8.5.5 to 8.6 CF2017.12, rather than having to install the "base" 8.6 CF2017.09 update ( this is how 8.6 was first shipped in September 2017 ).

From this: -

To install this upgrade, you must have Version, Version, Version, Version, Version, Version CF01, Version CF02, Version V8.5.7.0, Version 8.5.7 CF2016.06, Version 8.5.7 CF2016.09, Version 8.5.7 CF2016.12, Version 8.5.7 CF2017.03, Version 8.5.7 2017.06, or Version 8.6 of IBM Business Process Manager Express, IBM Business Process Manager Standard, IBM Business Process Manager Advanced, or IBM Business Process Manager Advanced - Process Server, IBM Business Process Manager Express Server, or IBM Business Process Manager Server installed.