RSS feed for blog Linkin Skype Mail Me Twitter

Stickfight

Blog Category: linkedin

Engage 2016

Where to start….

I should have done a proper blog after IBM Connect 2016, but its been so busy I did not make time, however a number of the points here that were just supposition at Connect have now been turned into facts.

Engage the Event

Theo Heselmans who for all intents and purposes IS Engage, managed to do the impossible and top last years conference, firmly establishing Engage as the best event after Connect, with a huge array of varied content and no subject taboo, all that is required is that the content is GOOD!!, there were a number of times when I really would have liked to be in two places at the same time and that has not happened at a conference in ages.

The venue was the crazy Evoluon in Eindhoven which seemed custom built for such event (if they could get a grip on the wifi)

In a cheeky moment Theo did a backpack give away (because Connect did not this year for the first time)

Back Pack

LDC Via

We went live with LDC Via one year ago at the last Engage so it holds a special place for us, in that year a lot has happened and we have delivered tons more, but we got a lot more attention this year and found that we even have some competition, in this last year we have become established in peoples minds and people realise we offer a great product, all 4 of us were there and did not seem to have a quiet second, as always the speed sponsoring was exhausting and Julian did a great job on the 30 second new speed sponsoring to the whole conference, Matt White was bogged down with cold but still fought his way through the conference and drove us both there and back while at the same time giving his flipping cold to the rest of us.

This years give away “Colin” did sterling work and won the unofficial “best conference give-away” from a number of sources.

Colin


We tried a different tack with the sponsor session, showing how many ways you could integrate LDC Via into different frameworks (slide deck below)


LDC Via building a new app from Mark Myers


IBM and Champions

Well bugger me… Inhi Cho Suh really impressed us all, from the little we saw of her at Connect (she was only introduced to the community right at the end of the conference) we guessed that she might not only be sane but sane and HUMAN and it turned out that she was!!, far more than we had all dared to hope, no “two tassel talk”1, she had fresh new ideas and had already started acting on them (such as moving Connect to San Francisco in 2017), we had a proper round table event where she dealt well with the hysterical gibbering we blasted her with and left us feeling that it might actually be possible to finally turn things around and start IBM ICS again (somebody pinch me)

On that note being a champion meant something at Engage and made me really think that I must buck my ideas up and start delivering far more.

The Community

Sadly I was doing another round of late night work while I was there so missed out on the parties and such (hence no photos), but judging from the state of my fellow LDC Via colleagues, the events and evenings were great fun and even members who were no longer in the IBM world turned up to revive past glories.

I got happy gifts from friends, Carl Tyler played mule for the amazing vegan mayonnaise that I cant get in Europe, and Rene Winkelmeyer got me the most amazing energy drink

Engage Food

Gabriella Davis got me this totally apt t-shirt (which has since been pinched by my wife)

Tshirt

Me

The session I luckily got accepted for was with Paul Mooney and was on Salesforce, a relatively new skill set for me and we were standing room only (mainly due to Paul), but people liked it and we were asked lots of good questions.

Saleforce For Domino Dogs from Mark Myers



Other than that, it was mayhem, I had terrible client overflow and was running around all over the place stressing every second, but frankly I would not change it for the world. roll on next year.


  1. “two tassel talk” : This is the long stream of corporate platitudes (sort of the corporate version of what politicians say) that you get off senior managers that are just marking time in their current role before they hope to be promoted away. 

LDCVia Webinar

As we ramp up for Connect 2016, we decided to do a quick introduction to LDC Via. this means that if you see something you want to ask questions about or a feature that is a must have we can sit down over a drink at Connect and see if we can solve them.

So come join us and listen to Matts dulcet tones (as well as Julian)


ldcvia-webinar.png

Current Android Software 2015

This is more an aide memoire than anything else (in case of a phone rebuild), but it is the list of essential software I have on my phone at the end of 2015


Audio/Media

DI Radio

Audible

Google Play Music (so much better than Spotify for play lists and radio)

Dog Catcher (for podcasts)

MX Player

Music Folder Player Full (the only decent player for displaying audio as it is laid out in the filesystem)

BBC Iplayer Radio


Productivity

Clockwork Tomato (The Best timer for the Pomodoro Technique)

Power Nap

Freshbooks

Wunderlist

Timely


Communication

Slack (a truly amazing team chat)

Skype

Twitter (The stock version is actually the best)

Facebook (Unfortunately)

Go To Meeting

IBM Verse


System

Dropsync

File Explorer

1 Password

Disk Usage

Swiftkey


Games (I tend to not play games on my phone as I have a Nvidia Shield Tablet)

mahjong

Chess

Sorcery 1 (or any choose your own adventure game)

Gemini rue


Misc

National Rail Enquiries

Speedtest.net

Sworkit pro

Moovit (best for London bus times)

Priority Pass

Plus mobile banking and mobile ISP provider’s app.

Salesforce read mode hide-when hack

It seems the need for hacks has not gone away with the move to cloud, but you do have to be more careful, as I have already found out Salesforce can break your custom code at will.

So that being true one of the things that SalesForce does not seem to have that every other framework does is a simple an powerful “hide when”, IMHO this feature should be present in every line button and object on every page and most platforms do,

It is the most requested feature for customisation that I have come across, and this is the hack that I use for read mode documents or forms (which strangely is where the request is most often made) (and yes it is a hack)

We are going to just stuff some JavaScript into a apex page, you can see an example of it below

<apex:page standardController="Case" showHeader="false" sidebar="false">

<script>

myVar = checkforbutton();

function checkforbutton()
{
    if (typeof(parent.document.getElementsByName("searchArticles")[0]) != "undefined" )
    {
               if ( parent.document.title.indexOf("Customer Community") != -1) {        
                   parent.document.getElementsByName("searchArticles")[0].style.display = "none"; 
               }
    }
    else
    {
            window.setTimeout("checkforbutton();",100);
    }
} 


</script>

   
</apex:page>


Lets break it down

  1. We have to use “parent.document” to get JavaScript objects as when we use this page SalesForce will embed it inside a Iframe

  2. We have to do a wait loop that keeps looking for the object till it finds it (then stops), because SalesForce adds button objects in after the page loads so they wont be there when it first opens

    if (typeof(parent.document.getElementsByName("searchArticles")[0]) != "undefined" )
    {
            //do stuff
    }
    else
    {
            window.setTimeout("checkforbutton();",100);
    }


  1. When the button is confirmed to be there then we are going to check the page for a condition(s) and if it’s true/false we are going to hide the button/element on the basis of it, in the above example, if we are on the “Customer Community” version of a page, we don’t want to allow the users to search for articles, so we hide the “searchArticles” button, it’s not a security issue, we just don’t want to confuse the user experience by allowing this feature.

So we put this code into a Page

SF Page

This insert that page into the layout Object layout we want it to effect.

SF Page

that would normally give a big white space where the inserted form lives, so we make the page a 1% by 1px block


SFHIDEWHENHACK03.png

And that’s it, just save the layout, the button/”what ever” will hide when the page loads, a hack but a simple reliable hack

Now as always “hide when” is not security, remember to make sure that you don’t leave functions exposed and think this kind of thing covers you.

Classic Domino and multi country dates with Bootstrap

I was doing some fixes on a classic domino web app that uses bootstrap datepicker when an issue was raised. turns out its a bugger to get the jquery datapicker and domino date format to agree with each other for different countires ie mm/dd/yyyy or dd/mm/yyyy or dd.mm.yyyy

you would think that a little bit of JavaScript would solve the problem but there was multiple instances with a variety of browsers where it ended up that what ever domino was doing to calculate the date format was not matching the result of the JavaScript.

So we cheated, we replaced the “format:” parameter in the date picker below:

$('#MYDATE').datepicker({
    format: "mm/dd/yyyy",
    clearBtn: true,
    orientation: "top auto",
    todayHighlight: true,
    autoclose: true,
    weekStart: 1
 });


with some computed text with the following formula:

dat := @Text(@ToTime("01/28/1900");"D0S0") ;
sep := @Middle(dat ;2;1) ;
@If( @Left(dat; 2) = "28" ; "dd" + sep + "mm" + sep + "yyyy" ; "mm" + sep + "dd" + sep + "yyyy")


I find the best way is to put this in the default setting meaning you only have to do it once

$.datepicker.setDefaults({
     dateFormat: '<Computed Value>'
});


Simple, worked fine with a wide variety of date formats and kept everything in sync with what ever format Domino ended up picking.

C3 charts on Saleforce Winter16

As @devinthecloud points out in his Blog post Salesforce Winter 16 wrecked C3 charts on the pages he and I had developed. he found the removal of <apex:form> fixed the issue on his pages, but on my page the charts were still broken, so instead of this:


Salesforce-C3-Charts-01.png

You get this


Salesforce-C3-Charts-02.png

I stripped the page down to a bare minimum that you can use to recreate the issue, see below,

<apex:page docType="html-5.0" 
           applyBodyTag="false"
           showHeader="true"
           readOnly="true"
           sidebar="false">
<html lang="en">
  <head>
      <!-- Static Resources for CSS -->
        <link href="https://cdnjs.cloudflare.com/ajax/libs/c3/0.4.10/c3.min.css" rel="stylesheet"/>
    </head>
    

    <body>
      <div id="chart"></div>

      <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.6/d3.min.js" charset="utf-8"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/c3/0.4.10/c3.min.js" />
      <script>
        var chart = c3.generate({
          data: {
            columns: [
  //            ["setosa", 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.3, 0.2, 0.2, 0.1, 0.2, 0.2, 0.1, 0.1, 0.2, 0.4, 0.4, 0.3, 0.3, 0.3, 0.2, 0.4, 0.2, 0.5, 0.2, 0.2, 0.4, 0.2, 0.2, 0.2, 0.2, 0.4, 0.1, 0.2, 0.2, 0.2, 0.2, 0.1, 0.2, 0.2, 0.3, 0.3, 0.2, 0.6, 0.4, 0.3, 0.2, 0.2, 0.2, 0.2],
              ["versicolor", 1.4, 1.5, 1.5, 1.3, 1.5, 1.3, 1.6, 1.0, 1.3, 1.4, 1.0, 1.5, 1.0, 1.4, 1.3, 1.4, 1.5, 1.0, 1.5, 1.1, 1.8, 1.3, 1.5, 1.2, 1.3, 1.4, 1.4, 1.7, 1.5, 1.0, 1.1, 1.0, 1.2, 1.6, 1.5, 1.6, 1.5, 1.3, 1.3, 1.3, 1.2, 1.4, 1.2, 1.0, 1.3, 1.2, 1.3, 1.3, 1.1, 1.3],
              ["virginica", 2.5, 1.9, 2.1, 1.8, 2.2, 2.1, 1.7, 1.8, 1.8, 2.5, 2.0, 1.9, 2.1, 2.0, 2.4, 2.3, 1.8, 2.2, 2.3, 1.5, 2.3, 2.0, 2.0, 1.8, 2.1, 1.8, 1.8, 1.8, 2.1, 1.6, 1.9, 2.0, 2.2, 1.5, 1.4, 2.3, 2.4, 1.8, 1.8, 2.1, 2.4, 2.3, 1.9, 2.3, 2.5, 2.3, 1.9, 2.0, 2.3, 1.8],
              ["setosa", 30],
  //            ["versicolor", 40],
  //            ["virginica", 50],
            ],
            type : 'pie',
            onmouseover: function (d, i) { console.log("onmouseover", d, i, this); },
            onmouseout: function (d, i) { console.log("onmouseout", d, i, this); },
            onclick: function (d, i) { console.log("onclick", d, i, this); },
          },
          axis: {
            x: {
              label: 'Sepal.Width'
            },
            y: {
              label: 'Petal.Width'
            }
          }
        });

        setTimeout(function () {
          chart.load({
            columns: [
              ["setosa", 130],
            ]
          });
        }, 1000);

        setTimeout(function () {
          chart.unload({
            ids: 'virginica'
          });
        }, 2000);

      </script>
    </body>
</html>
</apex:page>


This let me narrow it down to the Salesforce header.

when you set showHeader=”true” it breaks

if you set showHeader=”false” it starts working

As this is obviously and provably down to a change in winter 16 I can raise it with Salesforce and get a fix.

…….. Wrong!

I quote

“At times, Client Side JS conflict with SFDC header JS will collide with already defined functions with the same name.”

“the behaviour of JavaScript is inconsistent with Salesforce components.”

and

“as we don’t support JavaScript”

Ah it’s nice to see that young Internet companies have the same grasp of customer service as the traditional IT companies and thus it falls back on consultants to fix, in this case with an Iframe, I’m not a fan of Iframes normally but as Salesforce use them themselves there is precedent

And so we now split our single page into 2 pages, an inner content and an outer Iframe wrapper

First we take out the existing page (it was called “chart_test”), rename it to “chart_test_inner” and set showHeader=”false”

Then we put in a Iframe wrapper with the old name and a bit of CSS to make it size properly then point it to the inner content

<apex:page docType="html-5.0" 
           applyBodyTag="false"
           showHeader="true"
           readOnly="true"
           sidebar="false">
<html lang="en">
  <head>
  
  <style>
  .fluidMedia {
    position: relative;
    padding-bottom: 56.25%; /* proportion value to aspect ratio 16:9 (9 / 16 = 0.5625 or 56.25%) */
    padding-top: 30px;
    height: 0;
    overflow: hidden;
  }

    .fluidMedia iframe {
        position: absolute;
        top: 0; 
        left: 0;
        width: 100%;
        height: 100%;
    }
      </style>
  
  </head>
    
    <body>
    
    <div class="fluidMedia">
        <iframe src="../apex/chart_test_inner" frameborder="0" > </iframe>
    </div>
       
    </body>
</html>
</apex:page>


And now instead of a broken


We have a working


Hooray!!!

Updating Statamic on AWS

For this blog I use Statamic, a very nice website CMS bassed on Markdown and using flat files which makes it perfect for the way I work in that I can link a Drop box account to the cheap AWS server I use for hosting and then edit blogs via mobile on a wide variety of machines with just a test editor.

Anyway the site has been rock solid for ages (5500+ hours) when I suddenly realised I wanted to upgraded the Statamic version to take advantage of some new features, that’s an easy job, you just replace a couple of directories in the httpd WWW directory, but I got a couple of errors and realised that I had an old version of PHP53 on the server and I had not patched it for a while (wince). also it had been so long since I had even logged on to the box that I could not remember what to do, so this is just an aide-memoire for those in the same situation

as I’m on Linux you need to make sure your AWS pem is secure sooo

sudo chmod 644 serverkey.pem


Then connect to the box with SSH

ssh -i serverkey.pem ec2-user@XXX.XXX.XXX.XXX


Now first things first, lets do a full update

sudo yum update


Once that is done, we have to remove http and php to update them all (yes you will get an outage)

sudo yum remove php httpd php-cli php-xml php-common httpd-tools


This will uninstall the server its self (but not your website), lets install the new version

sudo yum install php55 php55-pdo php55-gd 


If you notice I added “php55-gd” to the install as you will need this for some of the new Statamic features such as the file and gallery features. Quick start the server before anyone notices

sudo service httpd start
 


You will find that the site seems to work fine, but as soon as you attempt to go to a individual blog you will find it gives you a 404, this is because the htaccess files in Statamic are being ignored so you will have to go back and tell httpd to not ignore them. so you need to edit the httpd.conf file

So first lets go to the httpd config directory

[ec2-user@ip-XX-XXX-XX-XXX /]$ cd etc/httpd/conf
 


And edit the httpd.conf file ( a good cheat sheet to vi is Here )

sudo vi httpd.conf


change the instances of “AllowOverride None” to “AllowOverride All”

once that is saved you just restart httpd

sudo service httpd restart


And you should be all done.

Icon UK 2015

A very hectic Icon UK has just passed in a blur, leaving a hangover and a sense of satisfaction.

Tim Clark put on great display aided by a number of brave souls, with great content and facilities (ignoring the on site WIFI) and amazing after event social times.

As always the IBM community put on its best and came out with a wide variety of vendors and attendees (most of them long time friends that I get to see far too infrequently) all very positive and with fresh new ideas.

But for me the highlight of the conference was the arrival of IBM Marketing’s Penny Hill and the IBM champion manager Amanda Bauman , marketings absence has been a long bug bear and to finally meet someone and be able to offer help to and get help in return was wonderful ( so Penny or Amanda if you are reading this, I was serious about just yelling if there was anything I could do to help and I suspect that applies for a lot of the community.) I also must not forget the none marketing branches of IBM who also came out, took criticism and came back with excellent answers, well done all round.

LDC Via was taken far more seriously by attendees then in previous conferences (well it seemed so to me), with us having the highest turn out of all the vendor sessions, so much so that we ran out of Gin and Pimms (and no we did not tell people before the session that we would be serving drinks) and a good stream of people with serious questions and excellent use case scenarios, leaving use with a ton of leads to follow up and a bunch of new features to go Gold with.

No technical presentations for me this time though I did help with Tim and Femke’s presentation as well as present the Changing technologies with Gab Davis


Chris Harris was taking the good pictures this time around and did a great one of the LDCVia team. The proper serious one will appear on the official LDC Via blog for the event but in the mean time here is one of the silly ones.


UKIcon2015-1.jpg

Quiet Isnt it

Its been a bit quiet on the the old blog with my parents updates wildly out numbering mine, but it has not been quiet in life very much business as usual (if chaos is usual) however bullet points are better than waffle, so lets got for that:

  • LDC Via is going great guns with features and real world solutions coming out of every orifice, uses for the platform have come from clients that we never even dreamed of, from the compliance angle (which meant we had to produce SHA-2 checksum reports for archives) to @MattWhite’s “Lens” UI which give you instant customisation for migrated and synced data.
  • Full Blown freelance work continues to be the roller-coaster ride it always is, you can go from “no work next week…Rats” to calling in the other members of LDC with a “FxxK FxxK FxxK any one got spare capacity to help me with XX?” in the space of 10 mins, it is still a constant search for work but when you are busy its hard to keep up to the social media stuff that brings more work in…and as for technical articles…
  • Technical articles..once the life blood of this blog seem to have dropped by the way side, I have to get back to them… but the problem with that is: one of my clients is true NDA so I can do anything to do with their work, another client for whom I’m doing lovely cutting edge blog fodder has requested that I keep the technical details secret and finally there is LDC Via stuff which I’m hoping to make a living off so don’t want to give away the crown jewels for and even on the stuff we really want to share it should really be one the LDC Via Blog its self (which I will cheat on and cross post)

That’s it really just a wave hello so you know I’m not dead


notepads.jpg

Engage 2015

This post is WAYYYYY late but never mind (I promise no more false starts or Kale pictures)

Each year we tootle off to the Engage/Blug conference knowing full well that @theoheselmans is not going to be able to top last years awesome conference.

Each year we are wrong…. and this year was no exception, so much so that I forgot to take pictures of a number of the important stuff (including the OGS and the Library at the venue)

This time LDC were there as LDC Via and we went live with our first product on the first day of the conference.
Engage2015-4.png

It was great to be a proper sponsor and we had a steady stream of interested people, gave lots of demos and walked away with some good solid leads


Engage2015-1.png
Aren’t we a handsome bunch

We were presenting this year and @benpoole was making a return to the stage


Engage2015-5.png

He did a marvellous job and we got the biggest turn out for the sponsor sessions

(however he captioned the following 2 pictures himself)
Engage2015-2.png

@stickfight “…and then I told @benpoole what a good job he did presenting @ldcvia

@MattWhite “LOL!”


Engage2015-3.png

@stickfight “Are we bringing @benpoole next time?”

@MattWhite “Hmm. Maybe stick to @woowar?”

Frenzied highlight of the conference from a personal point of view was the speed sponsoring where I got to rant madly at the entertained attendees while @MattWhite tried to read my mind to determine which of LDCVia’s feature set he should be demoing at any given second


Engage2015-9.jpg

On none-LDC Via business, a chat with Rene Winkelmeyer gave me a jaw dropping programming tip I simply would have never thought of and the tech sessions were as diverse as they were high quality, I also got to catch up with just about everybody I know as well as meet a bunch of new people.

Vibe wise: Engage was far far more upbeat than the IBM/Domino situation would warrant, but that has always been the case, now that Lotusphere/Connect is gone I rank it as the best conference to go to, and talking with some of my oldest clients who were making their first visit I was not the only one.

Lastly there was Ghent it’s self, a city I have never been to and it looks like I was really missing out, thanks again to @theoheselmans for giving me the chance to see it.


Engage2015-6.png


Engage2015-7.png


Engage2015-8.png

Latest Blogs