RSS feed for blog Linkin Skype Mail Me Twitter

Stickfight

FileZilla Download Issue Special Charaters

FileZilla Download Issue Special Charaters

FileZilla Download Issue Special Charaters

https://www.synology.com/en-uk/knowledgebase/DSM/help/DSM/AdminCenter/file_winmacnfs_win

FileZilla Download Issue Special Charaters

FileZilla is one of the best FTP clients ever, however while they’re perfect everybody else isn’t

What this means is that if an FTP site isn’t configured correctly then trying to download files that have special characters or accents in them using the FileZilla client will fail, the FileZilla team don’t want to support it because they’re doing the correct thing standards wise (UTF-8 settings on the server) and it’s other people’s failings that are causing the problem but other clients DO support this kind of behaviour eg. firefox which is a shame…

This means that we do need to find a way around the problem with FileZilla, the first sign that something has gone wrong will be in your failed downloads tab

A quick glance at the file usually shows you that there is a special character or accent in it, in this case a “À”


FileZillaIssue01

To get round this I found easiest way is merely to select all of the items that have failed right click and export them


FileZillaIssue02

This will give you an XML file, open it up and look for the “File” sections and then find and replace the special charaters in the “localFile” section to a none special charater, save the file then import it into fileZilla (file —> Import), you will find that it will download all missing files.

It would be nice if there was an automated version of this but as far as I can tell the FileZilla guys are sticking to standards. :(

<File>
    <LocalFile>/mnt/Slow/DownLoads/Anime/Series/Ongoing/Kirakira Precure A La Mode/[anon] KiraKira Precure À La Mode - 47 [1280x720].mkv</LocalFile>
    <RemoteFile>[anon] KiraKira Precure À La Mode - 47 [1280x720].mkv</RemoteFile>
    <RemotePath>1 0 5 Anime 6 Series 7 Ongoing 26 Kirakira Precure A La Mode</RemotePath>
    <Download>1</Download>
    <Size>571273852</Size>
    <ErrorCount>1</ErrorCount>
    <DataType>1</DataType>
</File>

Christopher Odd - YouTube Channel Review

Christopher Odd

This is a social review post done when I should be doing technical posts but I REALLY enjoy this YouTube channel and as this particular YouTuber is moving to running his channel full time it seemed like a good opportunity to do a review.

The channel is called @ChristopherOdd and it’s a ‘let’s play’ channel or ‘long play’ as I used to know them, in which someone plays full video games while narrating what they are doing, there are hundreds of them out there so what differentiates this one from others?

  1. Christopher Odds voice: His voice is far more like an audio book narrator than a gamer, he doesn’t get hysterical, he doesn’t make you wince, he doesn’t get over excited in a fake way (though he suffers baddly from jump scares in horror games) it’s a pleasant dulcet tone to listen too, as someone that listens to a huge number of audio books I’ve come to really appreciate the quality of a narrator and as far as I’m concerned Christopher Odd is the best narrator for games that I have currently met on any platform.

  2. Mental speed: I don’t know his age and I haven’t looked into it (it feels a bit stalkerish to start looking at peoples age and things like that) but he’s about my mental speed, he solves problems at about the speed I do, I don’t want to jump up and down and yell for him to do things faster or slower, he just thinks at a nice pace and I feel after he has completed the game that I have seen all of that game and that it is as complete a play through as I would make.

  3. Being correct without being too correct: Christopher is constantly correcting himself while he’s playing, you can see from one video to another that he is learning and changing his opinions as things grow and change, Cultural slips are corrected, things said in the heat of the moment are amended instantly and this is at a time when his popularity is at about 300000 YouTube followers when a lot of YouTubers think they can get away with saying offensive things without any backlash. It makes you think he is a good person in real life.

These and the choices of the games he plays result in a channel I can watch all day, a rarity in this day and age :)

But even if he is a joy to listen too, why would I want to watch a video of someone playing computer games? for me there are two reasons

  1. He plays a series of games that I would never play!! I do not want to play Dark Souls, all the Dark Souls series are massively frustrating to play and that’s not something I am interesting in experiencing but I am fascinated with their worlds and want to learn about them 1.

  2. He plays most of his games based on their story and that story is often better than a lot of TV series. To me watching him play is it enjoyable as a series, in fact more so because I can predict most elements of a TV story line (As can most people) but when watching a game there will be surprise elements based purely on his game play over and above the story, the same cannot be said of TV.

All this has meant that I am now a Patron supporter of his channel and treat the news of him going full time with great delight, his channel is by far the one I watch the most and at the current quality I see no reason to change that in the future. :)


  1. After watching the play through I now feel invested in the game and From Software actually get money out of me when they normally wouldn’t as I have bought Dark Souls books and merchandise. 

Copying NSF files to the cloud

This is an old tip that I never thought I would use again but has come back to life with the advent of the cloud:

Scenario:

We are migrating multiple servers from onsite to the cloud, the bandwidth of this copy means that it won’t happen within 24 hours and it definitely won’t happen within the maintenance window we have, normally with Lotus Notes migrations from one server to another this wouldn’t be an issue as Domino replication has been a model of stability and ease of use for well over 10 years HOWEVER there are tons and I do mean tons of complex replication settings in this clients setup a lot of them unknown or unremembered to the client, so they have found that using replication means they will miss some of these and after having a look at them I tend to agree so file copy it is..

NSF files tend to be a bit bulky and zip up really rather well so zipping them up before moving them over them makes sense but we don’t want to do one large zip, because 1) The target file system doesn’t have a lot of extra space on it, and 2) The actual copy will take several days so we want to do it one chunk at a time

First let’s get a list of all of the NSF’s files we want to copy over, this will have a double advantage of giving us an indication of numbers and size etc as well as giving us something that we can actually work through so that we can do one group at a time,

dir *.nsf /s /b>f:\filelist.txt


Once we have the list then the following little script popped in a batch file and with WinRAR installed on the system will give you an exact mimic of your notes folder structure but with each NSF zipped up and in the correct place

@ECHO OFF
setlocal enableextensions

for /F "tokens=*" %%A in (filelist.txt) do (
    FOR %%i IN ("%%A") DO (
        md D:\NSFZIP%%~pi
        "C:\Program Files (x86)\WinRAR\RAR.exe" a -r -dh f:\NotesZIP%%~pi%%~ni.rar %%A
    )
)


You can then copy them over in whatever method you prefer and unzip as suits you, this method may seem a little Noddy but this is the third time I’ve used it and every time the notes movement has been the easiest part of a migration.

Missing A Conference

Over the last few weeks my social media stream has been filled with pictures and memories of times gone by for Lotusphere/Connect, these memories have been more than a little bit painful as they were all great times, a meeting time for great friends as well as for a community spirit that I’ve never met in any other technology, not Salesforce, nor Java, node or MongoDB,

This community still does exist even though it has shrunk over the last couple of years, however there is hope that with the recent changes and the hopeful reinvigoration by IBM/HCL as well as the constant work of such core community leaders of Gabriella Davis that it will return and maybe even grow, having basically opted out of the community for the last year or so through a mixture of client demands and ever-increasing work load, I am now reminded by these pictures and memories how important such a community is and not just to work and to business but to friendship and general sanity,

Long live the yellow bubble!!!


Missing a Conference 04

—^ My First Lotusphere, young fresh-faced and not fat


Missing a Conference 03

—^ Presenting for the first time at Lotusphere


Missing a Conference 01

—^ On the Piss with good friends


Missing a Conference 02

—^ The famous “all bloggers” photo

Salesforce: Same Code Different Triggers

In Salesforce the same bit of code can be triggered a lot of different ways and with calls to third parties there are different rules for the different ways of calling stuff.

For example take this bit of code, in it we are just passing a contact ID and it is going to go and talk to a third party web service, inside the “setUpRequest” it’s going to update the third party with the details of the Salesforce Contact and in return recive some bits and bobs from the third party to update the Saleforce side. Basic syncing between two parties

public class BlogFramework {

    public Static Void UpdateContactFromExternalWebService(String contactID) {
                Http h = new Http();
                HttpRequest request = setUpRequest(contactID);
                HttpResponse response = h.send(request);
    }           

}


we want this thing to happen at two different times:

  1. When a user manually updates a contact and then just saves it: we want the sync to happen instantly so the user can see immediately what’s happened and what’s been updated.
  2. On schedule: The content might not be updated in Salesforce at all, all changes might happen in the third party but the details still have to be kept up to date for reports and views etc.

So this bit of code has to be callable both from a Schedule and from a save Trigger

let’s take the save trigger first, as it is now it won’t work, you will get the error “Callout from triggers are currently not supported.” error if you try, normally you would just pop the annotation “@Future(callout=true)”1 at the top of this function and that would solve that but as you will see later on we can’t do that so what we’re going to do is have a little wrapper function that has the @future annotation and from that it’s going to call are real function.

@Future(callout=true)
public Static Void UpdateContactFromExternalWebServiceTrigger(String contactID) {
        BlogFramework.UpdateContactFromExternalWebService(contactID);
}   


we can then put that wrapper functions in our contact save trigger and everything will work perfectly

trigger ContactTriggerAllEvents on Contact (
    before insert,
    before update,
    //before delete,
    after insert,
    after update
    //after delete,
    //after undelete
    ) 
    {
        for(Contact cnt:Trigger.new)
        {
            BlogFramework.UpdateContactFromExternalWebServiceTrigger(cnt.ID); 
        }        
    }


Next comes calling it from a schedule, if we had put the @future annotation on the actual function this would fail because you cannot call a future function from a scheduled action but we dont have that issue now, what you DO have to do is bolt-on the “Database.AllowsCallouts” to your batch object as seen below

global class UpdateFromAzpiral implements Database.Batchable<sObject>, Database.AllowsCallouts{

    // Get all the contacts
    global Database.QueryLocator start(Database.BatchableContext BC){
        return Database.getQueryLocator([SELECT Id FROM Contact]);
    }

    // The executeBatch method is called for each chunk of objects returned from the start function.
    global void execute(Database.BatchableContext BC, List<Contact> scope){
      for(Contact c : scope){
         BlogFramework.UpdateContactFromExternalWebService(c.ID);
      } 
    }

    //The finish method is called at the end of a sharing recalculation.
    global void finish(Database.BatchableContext BC){
    }

}


Now your batch object will be allowed to do callouts.

Putting all these bits together means you can have a single function that calls out to third parties that can be triggered from either a Schedule or an ordinary Trigger.


  1. The “@Future(callout=true)” annotation basically means that the salesforce code does not stop and wait before doing other things this means that calls to third parties does not slow down the salesforce UI. 

A Year in Review 2017


Year In Review 2017

So here comes the year in review blog post

I think it’s fair to say that I’ve never had a year that’s been so head down teeth gritted

Most of what would be considered the fluff or interesting things that you do in a year has been missing entirely, no conferences, no training courses, no anything other than client work. that is not to say I haven’t done new things, each week, each month seems filled with new technology, new things to code, new things to learn but it’s all been work that has to be delivered, work that has to be produced on time.

This resulted in the company itself doing well and thanks to that I’m in a better position then I think I’ve ever been before, a state that is all for the good because what with Brexit happening soon, UK companies now face an uncertain future so using the next two years to prepare for that is something that is going to be really important

Looking forward to the coming year it looks as if I have finally reached a point in my career progression where I do not have a major on-site client, all of my work can be done remotely which is a goal I’ve been aiming for some time but it’s still a little bit stunning to finally reach it, it will mean I need even more focus in how I work and that will give me a couple of extra blog posts as I formalise the way I behave on a day to day basis but I finally have the flexibility I’ve been after.

It’s always good to look back in the year and try and update your CV, what are you an expert in? what can you sell yourself as? what you are aiming for going forward? To be frank, knowing technology by rote plays less and less a part of what I provide my clients (both LDC and None LDC).

What I’m good at is learning new1 things, in adapting and providing clients with what they want when they want, the stuff that I’ve been hired to do going forward this year and stuff that I’ve been doing for the last 8 months at least hasn’t really been solely technologically orientated no one has said “oh are you an expert in x” they have just hired me to solve a problem, to make an issue go away, how that is done has been irrelevant or has already been set in stone by corporate decision.

However, I wouldn’t be me unless I still loved new technology and rolled in it like freshly cut grass.

  1. Javascript frameworks: Javascript is still the internet darling it has been for the last couple of years, but the frameworks come so fast that I now just poke my nose in each one that passes to see if it does anything groundbreaking or if it genuinely replaces one I am currently using.

  2. Networks and encryption: This has been an odd one to go back to and get up to date with, so many of the solutions I have had to provide this year have not been code related, or rather code has not been the best way to solve the problem, hardware and network performance issues don’t just go away with platform as a service if anything they get more complex as they are not as transparent.

  3. Salesforce offshoots: Salesforce continues to keep buying things and integrating them into their ecosystem so things like AMPScript have become commonplace.

But there have been losses and this year I lost my IBM champion status, there was the brief pang of “Bugger”, but writing this I can’t say I disagree with the decision, I did no conferences this year2, and thus no speaking gigs, this blog was very quiet on the IBM front, and all the stuff I did for IBM was behind the scenes at client sites and a Champion really does have to be seen …. C’est la vie

2018

What do I think I will be doing in 2018?

  1. Practical Cloud - The cloud has changed so many things and made them better, but in some ways we have gone backwards and there is a lot of work in such regressions, for example, inter-machine network speed that had reached really rather fast rates on internal networks has suddenly tanked when it is measured between existing onside stuff and new cloud services.

  2. Hard Decisions - Over the last year, I have seen a growing trend of business actually having the budget and gritting their teeth over modernizing apps that have been around for 10+ years.

  3. Security - Even things that have been trusted for years have failed in the last 12 months, and while there are lots of security people around that will load up your network and apps with new standards and firewalls, there does not seem to be anyone that is willing to fix the trashed performance when the heavy boots of the security forces have been in and done their work.

I suspect quite a lot of my year will be spent using both new and old tech to get things working again after someone has enacted the latest company edict……. :)


  1. And by “New” I just mean new to me. 

  2. LotusSphere/IBM Connect/IBM Think was in direct conflict with a client delivery, I’m not travelling to the US unless I have to for personal reasons so that cuts out the regional US conferences, UKICON was cancelled and I screwed up my passport for Engage 

Remote Desktop while away

In a few weeks I pop off on my first holiday for 2 years, for this trip I really do not want to take my laptop, this would seem odd as the darn things have been practically glued to me for the last 20 Years, but:

  1. Time to learn to take a break
  2. As a Member of LDCVia I need to learn to know when to share the work, and how to hand over.1
  3. Errr… welll… There are now countries that were once thought to be friendly, that have now shown a distressing habit of being hostile at their borders and now want to take your clients private data away and look at it for “Reasons” and I figured this would be a great dry run for having to travel to such a country again.

But I’m not insane, nor can I leave my clients, sooo I needed to retain access in some way so that I can support as and when it is needed. someone sort of cloud desktop that I can reach from a cheap laptop or tablet seemed like an obvious answer.

Requirements

  1. It must be able to run a form of VMWARE as each of my clients has to their own separate VM machine(s) with separate security.
  2. It must support Android (large and small screen) and Linux as clients.
  3. Must not cost a bleeding fortune.

Contenders

AMAZON Workspaces: This looked a perfect fit to start with and I use AWS for lots of other services including this blog, but the setup was a right faff was slow and cumbersome and then I realised that it would not allow VMWARE or any virtualisation, undaunted I though I would at least check out the performance, only discover that despite stating “just connects from anything” it only meant large android screens (not my phone) and not from Linux at All.. so in the bin it went.(shame really)

VMWARE Remote Console: Wince!!..I have to own to a bit of paranoia here my self, direct access to the Clients VM’s is just too much of a risk from external, it just stops there. sorry VMWARE, I tried to mentally run through the conversation explaining my actions to clients, and none of them went well.

I started to look at Citrix then got a grip and thought, “OH COME ON” its just one machine. Just get another machine load your VM’s on it and get a good secure remote client… cue another 30 mins wasted looking at online hosting and then a small local server and more swearing comes from the office as I realise “JUST USE YOUR BLOODY LAPTOP YOU TWIT YOU WON’T HAVE IT WITH YOU”…. fsss.

So it just comes down to a good remote connection software

The 3 that stood out were:

Logmein : From my point of view easy to discount as it does not support Linux guests but would have been discarded anyway as it has a small company feel which you again make it a difficult sell to clients

Team Viewer : Used by many of my clients and supports a lot of nice security features, but a bit on the pricey side.

VNC Connect : I was attracted to this as I use the free version for my Raspberry Pi’s, I also like the VNC standard and it has been security hardened by many a grumpy sys admin and dev over the years, the VNC Connect platform provided by Real VNC ticks all the boxes.

I was actually hard pressed to pick between Team Viewer and VNC Connect, on paper they provided all the features/platforms and security that I could want, but in the end VNC Connect won though partly because of price (its is £422 a year vs £384) but mainly the fact that the android viewer on team studio does not support the use of a mouse via Android.3

Security

OK, lets get the elephant in the room out of the way, how are we handling security.

Well VNC Connect is nicely paranoid about security so to get to my laptop now requires 2 logons both different 12 digit ones (1 to login to VNC Connect and 1 to get to my laptop ) then each VM is encrypted and requests a login appropriate to the OS used, then of course the normal password for each client to connect via VPN/Programs etc etc.

I ran that though potential questions via any of my clients and it came out OK.

Phyisical Setup

I have attempted to do this kind of thing before and obviously used remote software all of my career, and thus have sworn at my fair share of thin clients, phones, and tablets

Requirements

  1. Lighter than just taking my laptop
  2. Resolution of a decent Screen
  3. Good keyboard
  4. Good mouse
  5. Either not a silly price or very reusable.

I looked at Chrome books but frankly all in the price range were poo, Microsoft surface laptops were too expensive and I’m not in the IOS ecosystem, So an Android Tablet it is, that meant a Nexus or Pixel as few of the other vendors keep the security patches up to date, thankfully the Pixel C was on special offer (most likely due to being replace in the next month or so) that meant I could get a good tablet with a great screen and a very pleasant keyboard, paired with the new Logitech tracker ball I had something that was very usable thank you.


RemoteDesktop01.png

Testing

So I did 2 basic tests, performance and usability

Performance: I connected my laptop to a VPN in Japan, then tethered the tablet to my phone, then connected via the remote and sat down to work, it was totally usable , there was that slight lag on the mouse you get on any remoting software but no more than I get when I VPN into any clients network, and that was going to be the real test, using a VM via another VPN while remoting to the host PC, here I have to say I cheated like a devil, as my laptop is in the comms room of the office where it has access to the AWESOME least line we use (and is physically secure), so in fact it was actually faster and more responsive than normal, which was a more than pleasant surprise

Usability: Not bad, not perfect but not bad, it worked as well as any remote program, with a couple of extra qwerks, it does not re-size the client desktop as it is a genuine KVM rather than creating a new session, which is both good and bad and easy to work around, the other qwerk I’m still working on, is that the top and bottom bars for the Real VNC client triggers very easily and they don’t always retract cleanly without an extra click, I would like it if you could allocate a special gesture to the client to stop it working in modal form, the same as VMWARE client, perhaps a 3 finger swipe from the top or something like that

Conclusion

OK, I have been doing dry runs of leaving my laptop in the office and just taking the tablet and mouse home at night then working on that and I have to say I am now comfortable just going to Japan without the laptop, this setup works…. wish me luck.. :p


  1. I get told off about this about once a month. 

  2. They do do a cheaper version but I wanted the higher level encryption. 

  3. But I do have to give the Team viewer client credit for handling screen render better than VNC it would have been nice to get the best of both worlds, and I hope VNC improves on that front. 

Latest Blogs