Basic Authentication logout Issues

A quite interesting bit of work I am doing at the moment is building an AngularJS app running on an IBM ISeries, this has presented a whole series of odd little challenges but the one that bit us hard by corporate standards was logout and session expiring, The system and its sessions are on an Apache box sitting on an ISeries, it has turned out that not only was the Apache logout URL not present but that the Apache session expiry did not take effect[1] but even if it had, it would have screwed up the Internal application that most people use to have an Iseries Session via a browser..

So what to do….

I have done a nasty little JavaScript solution but one I think fits the circumstances.

  1. As this is for an AngularJs app, no jquery or such
  2. I did not want this solution to actually be built into the angularjs app, as in a perfect world the underling issues will be fixed and I want it easily ripped out, also I don’t want the code mentioned in each controller etc etc.
  3. The server that the app is running on has no facility to handle log off and does not have session based authentication (or even a login page)

Basic authentication does not really handle log off very well. For everything but Internet explorer you basically have to perform a fake login.

function detectIE() {
    var ua = window.navigator.userAgent;
    console.log('In detectIE');
    var msie = ua.indexOf('MSIE ');
    if (msie > 0) {
        console.log('IE 10 or older');
        // IE 10 or older => return version number, but I just want true
        //return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
        return true;
    var trident = ua.indexOf('Trident/');
    if (trident > 0) {
        console.log('IE 11');
        // IE 11 => return version number, but I just want true
        var rv = ua.indexOf('rv:');
        //return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
        return true;
    var edge = ua.indexOf('Edge/');
    if (edge > 0) {
        console.log('Edge (IE 12+)');
        // Edge (IE 12+) => return version number, but I just want true
        //return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
        return true;
    // other browser
    return false;
function ClearAuthentication(LogOffPage)
    if (!LogOffPage) {
        LogOffPage = location.pathname;
    if (detectIE() == true)
        console.log('In IE');
        // Logoff Internet Explorer
        window.location = LogOffPage;
        console.log('Not IE');
        var xhr = new XMLHttpRequest();'GET', location.pathname);
        xhr.setRequestHeader('Authorization','Basic XXXXXXXXXXXXXXXX');
        xhr.onload = function() {
            if (xhr.status === 200) {
                console.log('did not log you off');
            else {
                console.log('should be logged out')
                window.location = LogOffPage;

Followed by a very iffy 30 min log off timer, that surprising works rather well

var inactivityTime = function () {
    var t;
    window.onload = resetTimer;
    // DOM Events
    document.onmousemove = resetTimer;
    document.onkeypress = resetTimer;
    function logout() {
    function resetTimer() {
        t = setTimeout(logout, 1800000)
        // 30 min till logout
(function() {



1 but even if it had, it would have screwed up the Internal application that most people use to have an Iseries Session via a browser.

New Laptop 2017

So it was time to get a new laptop…

My current one had given sterling service for the last two and a bit years, but there are a couple of broken bits on it, it was starting to make distressing overheating beeping noises and hard drives would often cut out, meaning I had to get a replacement before it gave out completely (and also before its warranty expired as I want it fixed to be my backup machine)

Time to start the hunt, but what are my requirements:

  • At Least 3 storage bay slots: I don’t need optical, but I do need:
    • An OS and home drive.
    • Dedicated drive for client VM’s.
    • Slow big drive for downloads and general none secure storage.
  • Loads of RAM, in this case looking at 64Gig for running multiple VM’s at the same time.
  • 15-inch screen (just the size I am used it)
  • A none cra**y power supply connector[1]This was the main reason that I did not get another laptop from all their new laptops have these rubbish 4 pin power connectors which I have had problems with in the … Continue reading: it needs to be simple and hardy (like a standard barrel plug) or able to cope with being yanked out (like an apple plug)
  • As plain as possible: I think that all electronics should be a plain matte black but I am aware that I’m in the minority in this

So basically a portable server, I have a separate VM for every client I work with (that includes clients of clients when I am subcontracting), I find that it just makes things cleaner, not only does it mean I can adhere to the desktop standards of each client but there is zero chance of leakage of any client details to another client and lastly, sometimes there is a long period between work for a given client and this way I can just archive a VM till its needed again.

Contenders were:

  • One of the high-end machines from they are cheap for their specs and I have had their machines twice before, but I don’t like any of the new models and when the current one had an issue they were very unresponsive when it came to getting it fixed under warranty.
  • The latest high-end Lenovo workstation, 2 laptops ago I got a W510 and the darn thing is still going strong, sometimes I don’t get them if their current spec is not very up to date.
  • Apple Macbook there is no denying the quality of these, and they are used by people whose opinions I put a lot of faith in, but but I just can’t, they don’t run Linux very well, they are very much “we do things awesomely so you must do as we want” and they fecking solder their HDD’s in for goodness sake.
  • Razer Blade Pro a newcomer and the nicest looking machine I think I have ever seen, but just too much money for something that I won’t be using for gaming.

After asking around, the decision was obvious, the P50 series from Lenovo was the only one that matched all the requirements this time round.

I ordered the machine plus various components for it and all had arrived in roughly a week, this time I had splashed out on a docking station as I always buy 2 power supplies anyway and I had drooled over them for years.

Up and Going

I still use Mint Linux (currently version 18.1) as my host OS, and it installed straight away, all standard hardware was detected and function keys worked so that was a nice none event, boot time was 6 seconds cold to login which was a bit jaw-dropping, the docking station worked perfectly with Linux, in fact, nothing went wrong and it was all in all a 10-20 min job, a quick copy over of my existing data and I was done.

Even though the keyboard was one of the new island types, the spacing is the same as the old Thinkpads, so my fingers settled in nicely, an added benefit that I was not expecting is the size and weight reduction, the laptop its self is both lighter and smaller than my current one as is the power brick, nice!

Two changes I did have to make were in the BIOS, Vmware had a little grumble at my 64bit VMs meaning that I had to go into the BIOS and enable “Intel VT-x” as show below

Also when when I was testing using multiple monitors I got a load of terrible screen tearing, even after installing the Nvidia drivers, Linux is know for being a bit poop when it comes to video drivers but in the end it turned out to be the integrated Intel Video, as the dedicated video card is only a 4Gig one, I just turned it on in the BIOS and will live the with slight battery hit (however the quality is so much better that I don’t think I would go back to the Intel one anyway)


Storage seems to be the issue I always have to do the most faffing around with as no laptop producer seems to have the options I want in their customization

In this case my budget would strech to 2 x 1TB M.2. SSD and 1 x 2TB Sata Spindle Drive (basically M.2. replaces mSATA which replaced the old IDE connectors)

Now I did not know that M.2. is just a name for a socket, its not actually a name for the new transport mechanism, it can support mSATA and NVMe, OK, what is the difference, turns out a huge amount, there are hundred of articles and videos on the difference but basically mSATA (the mobile form of SATA) was designed for spindle disks and so is designed around their speed limitation whereas NVMe behaves far more like RAM and so can access SSD’s very very fast

How the feck is this a TB Drive!!!!

fully populated and running like a dream. 🙂


Nothing is perfect, but in this case, I am happy to report that the minor faults I have found are nothing to do with the engineering of the Laptop and everything to do with me being a minor idiot and a little bit of disconnect on Lenovo’s side.

  • Backlit keyboard: Early morning I sit down at the laptop and squint at the keyboard, why is the keyboard not backlit?, <tut>, I have just not turned it on, <moment of squinting at the keyboard> where the feck is the backlight?, quick visit to google, then a shamed visit to the Lenovo order page, a backlit keyboard is an OPTIONAL EXTRA, and like a numpty I had only glanced at the keyboard option to make sure that it was set to the UK, I did not notice that there was a none backlight option, it can be fixed by buying a a replacement keyboard, but seems odd to have an £20 option that has been standard on high end laptops for years set to off.. oh well RTFS
  • Installing SSd’s: as mentioned above I installed my own SSD, but you can’t just install the M.2. stick of gum, you need a plastic adaptor which is not supplied either with the laptop or with the SSD, these are not hard to find and the ones for the P50 look like this

  • Well that is NEARLY true, the adaptor above LOOKS like it is for all SSD (it even has the icons for both types) but if you are installing an NVMe, then you need one with the insulation pad at the back (see below), yes this info is in the detailed technical manual but part sellers do not make it obvious.


Very very happy, I feel I have picked the right laptop for the next couple of years, it has the same tank like build that is the hallmark of Thinkpads, and with features like USB-C and NVMe I don’t think I will find it wanting during its life span, it is also claimed that it has a full day battery which is something I have not had in a laptop EVER but anything more than a couple hours will really make my year.

Now if I can just stop it getting greasy and dirty, and get some good stickers for the lid.


1 This was the main reason that I did not get another laptop from all their new laptops have these rubbish 4 pin power connectors which I have had problems with in the past, I phoned up and asked but the guy said that they were stuck with them for the next round of laptops.

Fitness the long road back Week 1

Got to get fit , GOT TO GET FIT, want to go back to fencing but I would be an embarrassment at the moment, so I have set my self a baseline first


Run 2.4 Miles (3.9 KM) to the Park and back [1]So the passing score for the Army 2 miles run (I have no idea which Army the US one I expect is 19:30 for an old fart like me I have no idea if that is carrying pack or what but its a good start, the … Continue reading : 33:45 Fail

1 x Complete 7 Min Workout : 4 out of 12 Fail


1 x Run 2.4 Miles (3.9 KM) to the Park and back : 31:22 Fail

Complete 7 Min Workout : 5 out of 12 Fail


1 x Run 2.4 Miles (3.9 KM) to the Park and back : FAIL WORKING LATE

Complete 7 Min Workout : FAIL WORKING LATE


1 So the passing score for the Army 2 miles run (I have no idea which Army the US one I expect is 19:30 for an old fart like me I have no idea if that is carrying pack or what but its a good start, the park I will be using for fitness is 1.2 miles away, Sooooo 19.30 which equals 1170 Seconds, Pro-rata that: ( 1170 Seconds / 2 ) * 2.4 = 1404 seconds = 23.24, that will be my baseline the end goal will be the top mark in the old fart chart of 13:36 which Pro-ratas to 16.20 (hahahahahaha)

Modern Web Dev on Iseries

I have recently been merging very old tech (RPG on ISeries) with modern tech (angulaJS 1.6) and it has brought a whole bundle of fun little issues on the ISeries side that I thought I would just note down.

I am NOT an RPG programmer (and never will be), but if you are ever having to deal with REST services (or Web Services) being hand cranked[1]Yes hand cranked, The ISeries is very good at dealing with text formats and handles REST/MarkDown and its developers have had lots of practice at coding to such, this combined with the extreme … Continue reading for you by a Iseries Dev, there are some of the issues that you may hit

  • Truncation: JSON data can quite easily pop the string limit on ISeries, so your Iseries Dev will have to do this “write to file” thing to get round it, if your JSON is over about the 6Meg limit then you are really going to cause some speed issues.
  • Inconsistent data types: Given that the PUT/GET/POST services are all coded separately, you will get field formatting issues especially if changes are made retrospectively, a Field that is a string in the GET may be a numeric on the PUT, you just have to keep a grip on it and try not to go for the easy option of “we will get it working then come back and fix it later”
  • Leading zeros on numerics: If you are passing decimals less that 1 then the Iseries is going to want to send them as “.000” rather than “0.000” thus invalidating the JSON, don’t be tempted to turn these numbers into strings, they CAN be formatted correctly.
  • Character sets: A lot of the activity seems to be UTF-8, and you may get a fair amount of issues revolving extended character sets, if you are getting errors that are simply baffling when you send stuff to the ISeries, check the formatting of the characters that you are sending.
  • Alternating Parameters: You may be used to REST services in the format “NameParmeterName2Parmeter2” well this causes problems apparently, so you have to deal with them in the format “NameName2ParmeterParmeter2”

A lot of RPG Programmers will not have done this kind of programming before, so testing the results will be a pain to them, may I suggest that you get chrome and installed on their machine so they can test and so they can test the results they are getting.


1 Yes hand cranked, The ISeries is very good at dealing with text formats and handles REST/MarkDown and its developers have had lots of practice at coding to such, this combined with the extreme pricing of bolt on features <cough> gouging </cough> mean that its most likely your client will drop the bundle of fun on a developer.

Coming Up For Air

Well that was a hell of a first quarter, a crazy mix of stuff that all HAD to be done, just surfacing on the Easter weekend

so what did I miss:

Connect 2017

First year in what seems forever that I was not pounding off to the US in Jan for the yearly pep conference on all that is IBM, alas a thousand things conspired to stop me this year but mainly just too many client deliverables to take the time off, though it seemed I got on the big screen.

From what I could see from other peoples blogs the conference was a good one, and that we are finally shaking off the older stale parts of what we do and getting on with the new stuff.

what with UKLug/ICON not being on this year looks like my only conference will be Engage, where I will be speaking, this years dodgy session is: “Choose your own adventure: Update/Convert/Replace” at 13:30 on Tuesday in Room C (Gorilla 3).

IBM Champion stuff

Not spent any time in the chat and even missed the yearly swag frenzy (but thanks to Amanda she is going to bring me some stuff over), but I have been doing lots of IBM champion things in that I have been upgrading a variety of IBM tech as well as integrating it with other modern stuff, just not been very visible.


Hmmm I was supposed have got a s**t load of Salesforce qualifications by now, I have had opportunity enough, free training (thanks to bluewave) and what not, but still spend all my time DOING stuff rather than learning stuff, must MUST get a grip on that. also on the radar is docker and the other platform support bits we are looking at for LDC Via


On the plus side I have solved a huge number of client crises in these last few months and made a number of clients very happy, so that is a excellent thing 🙂


Free beer and disreputable company

Due a huge number of unfortunate events LDC Via are not at connect this year (though we will be at other IBM conferences), refusing to give up on the core tenant of such conferences we will be getting pissed and watching the OGS.

Come join us and let us buy you drinks Register Here, it will be upstairs at the Castle pub next to Farringdon tube station (London) On Tuesday 21st from 5:30pm

A Year In Review 2016

Time for the annual year in review blog post! This year has just about everything in it, everything apart from peace and quiet. A huge diversity of work and skill-sets, from Salesforce to Sametime, from AngularJS to admin work on SAML, so much so that my tiny mind is bulging at the seams.

My Salesforce skills have come on leaps and bounds: it is an interesting platform, with a lot of opportunity for the clever hacking I enjoy so much. I must give Bluewave a huge thank you for letting me work with it (Salesforce is very partner-oriented, with little place for true freelancers) and most particularly Barry Hughes, the most patient guru who also lets me sit in on internal training sessions despite having finished my full-time work (with Bluewave’s permission I might add).[1]I was there as a contractor to help take deal with a sudden heavy load, they have now hired permanent staff, but still treat me as part of the team and I’m there if they hit another peak.

For the first time ever, I have a proper office rather than simply relying on client sites or my home workspace: my rented office is at Purple Patch, and it has proved to be just perfect. I can get tons done, and it’s also somewhere to meet, and work, with clients.

LDC Via has had a busy year with booths at multiple conferences and loads of changes and new features based on client feedback and installations. We even launched a whole new offering: KEEP.WORKS.

What skills have I used this year?

Salesforce –> The full range of Salesforce app building, from standard declarative coding to involved, large chunks of Apex and Javascript programming. I also spent loads of time training people on Pardot, working with this very “defined” marketing framework to flex it in a way clients actually want it to function.

JavaScript –> The continuing growth of JavaScript as a primary language for projects showed up a lot this year, in everything from AngularJS to Salesforce Lightning.

Proper Programming –> Java is still my core “serious” language. I’m using it enough to keep things sharp, but it’s not a growth area.

Supplementary stuff –> full on iCal work[2]Including requests to Google and other web email vendors for native buttons and drag-and-drop meetings, etc., etc., search integration with Solr and Nintex for Sharepoint stuck out this year.

IBM –> Sametime, Domino, WebSphere, ISeries and the other staples of the IBM family continue to test my imagination with integration and upgrade work, ensuring everything stays up-to-date and relevant.

Guesses for 2017

Two big items to guess about here:


JavaScript – this will continue to grow for me, driven by multiple things:

  1. LDC Via and its extensive use of node.js.
  2. Salesforce Lightning – the direction in which Salesforce are clearly steering.
  3. For Domino-based web work, a JavaScript framework talking to Domino services turns out to beat XPages hands down every time.
  4. Lots of clients want to “glue” existing systems to third-party APIs.

Salesforce – I’m less sure about this. The model favours a race to the bottom, which is already starting to show. The company is also incredibly partner-oriented which means it’s hard for smaller companies and individuals to find work. I will just have to keep the skills sharp and see what happens.

Work Load

Bugger knows, this year has been busy, but it’s been in fits and starts[3]or even ‘Stits and Farts’, such is the joy of freelancing. I had a couple of quiet spots and a couple of periods of full-on mayhem. For 2017, I’m hoping to avoid the two things that make we want to scream: (1) the sudden cessation of all work, followed by a couple of stunned weeks looking around, and (2) the conversation with someone later on that year who says “I would have asked you, but you always seem so busy…”

OK, that is enough of the fluffy blog posts for a while. Next up: proper tech stuff!


1 I was there as a contractor to help take deal with a sudden heavy load, they have now hired permanent staff, but still treat me as part of the team and I’m there if they hit another peak.
2 Including requests to Google and other web email vendors for native buttons and drag-and-drop meetings, etc., etc.
3 or even ‘Stits and Farts’

New Anime Series Youjo Senki

First Episode(s) Review for: Youjo Senki

I only do these reviews for new anime I like now so take this as a recommendation


Set in an alternative world war I that includes magic and told from the German point of view, a young very Arian blond girl is the commander of an airborne mage platoon, it soon turns out she is a cut above the rest in both ability and viciousness, a cruel calculating horror in the body of a little girl.


Nicely detailed, with a lot of research on what WWI battlefields looked like based on my somewhat limited knowledge ( the reading of Good-Bye to all That and such ) looks a bit like Fullmetal Alchemist

Plot Potential:

This will be the kicker, they could be boring with this or they could go anywhere, to have such an obviously evil hero character is a fairly unique starting point, but as they have already included political bits, the war being at a tipping point and a young soldier who does not know what to make of her Commander which has shades of Platoon in it we might be going somewhere interesting.


Grim powerful music and great war noises

Reminds me of:

If the hero of Strike Witches had been an evil military minded psycho…..


It’s been 2 seasons since I have been surprised at a new anime, they have been very manufactured recently, but this one took me back, its quite obvious that the hero is an utter ba****d and a nut job and should be the bad guy, but I like her, want to see what she is up to and what her ultimate goal is.

Disclaimer: These are mini reviews of anime’s that are fresh out in Japan and are not licensed in the UK, buy them once they have been licensed or at the very least buy the merchandise, remember if the anime makers make a loss, THEY WILL STOP MAKING ANIME!!