Category: Technology

Technical Writings; Information and Communication Technology Posts

Why you shouldn’t be too concerned about a lack of Blockchain talent in your organisation.

The hype around Blockchain has hit fever pitch over the past 18 months, with the current trend in articles focusing on whether your business has the requisite talent to take advantage of this new technology.  I’m sure there are many guys out there sitting down to work out if they are behind the curve, and if Blockchain really is something they need to be ahead of their competitors on or not.

My advice is this; Blockchain is a relatively new technology, but it’s also not something that should hit your developers from completely left-field.  If they’re already aware of basic cryptography, I’d argue that most ‘lead developers’ can get up and running (with the level of expertise required as a ‘user’ of a system – within hours).  On the Ethereum stack, lots of good effort has been put into creating a developer toolkit that allows anyone with a little bit of experience to get up to speed and playing around with the code.

Of course, what’s becoming far more apparent is that knowing how to functionally code shouldn’t be the only prerequisite to how or who should be let loose on developing functionality.  With Blockchain and it’s associated technologies, one of the new properties of the systems being developed by your enthusiastic amateurs will be ‘immutability’ – basically an inability to delete.  If you think that you can stand up a project by passing it over to the tech team, then you really should be considering your future.

Blockchain technology is likely to be incredibly disruptive, and may also inadvertently cause completely new paradigms of ‘ethical issue’ with online, or digitised products.  In order to leverage the advantages of the immutable properties of Blockchain will have to be a better understanding of behavioural economics.  Fundamentally, Blockchain is not a technology solution, but an economic one, enabled by technology.  If you’re not prepared to invest the time to understand that further, then you probably shouldn’t be experimenting in this space.

Finally, there’s also the issue of on-chain and off-chain data stores, the related encryption, and the very legislation being passed by governments today which could undermine the security profile of any application attached to a Blockchain.  I’d urge any developer, manager, designer or product owner to really consider any attempt at obfuscation on the Blockchain is likely to be temporary; and unless the same level of diligence is given to Blockchain applications as has been given to applications such as GnuPG, OpenSSL, and other encryption libraries, then they should be considered fundamentally insecure.

It’s why I’m proud that all the work that I’ve done on Blockchain so far, both personally and professionally, has ended up being published under an Open Source Licence – and why the future of Blockchain should continue to be done out in the open.  From a talent perspective, the opportunity to get your development teams to collaborate in the open with these guys is a good first step.


Nick Timothy’s Resignation Letter

Having read through Nick Timothy’s resignation letter [read it here], this really stood out to me:

because modern campaigning techniques require ever-narrower targeting of specific voters, and we were not talking to the people who decided to vote for Labour.

This implies modern campaigning is about winning, about getting power, about putting your party ahead of the country.

When we look at the millions spent on campaigns, these are no longer used to broadly inform on policy, but have a very simple target in mind – to swing a vote; potentially even on just a single issue.  Now that we have this capability, is it ethically or morally right to fight an election with such a narrow strategy in mind; or should the manifesto have a more prominent place, making sure that all votes are ensured of a fuller context to their decision, rather than gamified with single issue targeting?

General Election 2017

I thought long and hard as to whether to publish this piece about the recent general election in Britain.  The purpose?  Potentially for something for me to read back on to understand my frame of mind this week, but also to set a benchmark for what is likely to become a tumultuous few years for those living in the British Isles.

It’s been frustrating to be waking up on the day after an election and feeling upset at the result.  That’s the way I’ve felt for the past few elections.  This time was different.  I hadn’t cast my vote for the winner, but I finally felt as though the opposition in the UK had finally found a voice against an ever right-leaning Conservative agenda.  The irony is not lost on the fact that in order to hold onto her fragile leadership, Theresa May is now looking to form a coalition with a DUP that many would consider more extreme than UKIP.  UKIP were the bumbling fools, with a single policy that is now irrelevant.  The DUP are no bumbling fools.

Let’s go back to before the election.  Jeremy Corbyn hasn’t been a strong opposition before he began this election campaign.  His party has been fracturing, and he is not a ‘statesman’ – or wasn’t seen as one before this campaign.  A campaign fought not on demonising a person (which he could easily have done), but on criticising the implications of past policy decisions is exactly the type of politics that I want to support.  Let’s stop attacking people on who their appearance, and instead focus on the content of their endeavours.

I admire his comments Nuclear disarmament; what’s the point in agreeing to fire second; at this point the game is up and we’ve already failed.

What JC has done for me is to put the people first in politics.  Since graduating from University, I’ve had to fight my way through an economy restricted by austerity.  Austerity put in place due to the fact that much of my generation’s tax receipts appear to have already been spent.  I don’t want to be sat here in 18 years time explaining to my children why we’re still stuck in austerity.  An economic policy for the term of a parliament doesn’t make sense; Osborne failed spectacularly at keeping his short-term promises.  I can’t go back and suggest that not having austerity would have been any way a better path – but for where we find ourselves today, we seriously need to consider a different approach.

This different approach shouldn’t be built on doing the opposite of austerity – but setting a very clear long-term vision for the country.  Can we put down a marker to say – “This is what we expect our society to look like in 2050” and making decisions to make progress towards that vision.  We also need to draw a line between macro and micro economics.  I’m not well read enough (yet!) on this subject (please suggest books for me to read in the comments) – but I’m anecdotally aware of the impact of viewing micro-economic policies through a macroeconomic lens – and this doesn’t work well.

I also think we need to review our ethical framework for progress.  Theresa May has been working to abolish the Human Rights Act – I think it needs extending.  We have already built technology that is ethically questionable, without any controls or even awareness of the full implications.  The standard technologist experimentation cycle of “build, measure, adapt” is no longer ethically sound when the subject of the experiment is the global population.  It always astounded me, having studied Psychology at University, that the experts’ hands are tied when it comes to experimentation, but an enthusiastic amateur could be more than capable of running far more dangerous experiments with no trained expertise.

At WebSummit last year I attended a panel on the ethics of humanoid robots, and the challenges they face due to the ‘humanoid’ element.  When you look at the mechanism through which you’ve communicated with your loved ones over the past few weeks, what % of that communication has been “humanoid = eg, face to face” versus “digital” – and when you consider your digital interfaces, how simply could the response have been a computer?

For all of this technological advancement, we need a long-term lens through which to review it, so we can make sure that we are continuing to build a society, and not take society for granted. We’ve lived through a period of immense relative stability, and we’re now starting to see the cracks appearing.  People often used the phrase “Standing on the shoulder of giants,” for the great advancements in this world.  What I feel at the moment is that we’re climbing up the giant’s back with pickaxes, damaging the fabric of the thing we’re supposed to be building upon, and breaking the backs of the giants beneath us.

The result of this election has left our government in the balance.  We don’t have a vision for our country, so we don’t know what Brexit looks like.  I’d ask all politicians to get ready to set out that long term vision before the next election is likely to be called so that we can all vote on the type of society we wish to live in.  I hope it’s a society that provides care for others, by investing in the NHS to allow it to continue to develop; a society that looks out for those who cannot helps themselves, and rewards those for helping others.  A society that can attract the very best, but also continues to give back to where the very best have come from.  Where we can develop new ideas, technologies and medicines, but for the benefit of those both within and without our borders; and where national pride isn’t limited to the pride that we feel for ourselves, but the respect and envy we receive from others.

Enjoying Ionic, HTML5 app development

One of the things I’ve always loved doing is creating throwaway apps that solve very simple problems.  Historically these have been to educate me on the ‘art of the possible’, rather than actually produce something workable.  I’d always fall at a hurdle, or find a gap in my learning that would take me off on a tangent – the next gap to try and fill.  It’s been a lifetime of constant learning, challenging myself to fill more and more of the gaps with oodles of potentially useless information.

Ionic Framework

Luckily (or with amazing foresight), lots of this information is now becoming appropriate and useful.

As an example, a few years ago I was working at an organisation who got hit with a DDoS.   The site was down for 36 hours before we got it back up, and I learnt an awful lot then that I thought would be pertinent for my future career.  I discovered low level things about networking that I didn’t think much of learning at the time, yet it’s these small pieces of knowledge that make up the experience I have now.

I remember discovering Ionic around 2013 and following its creator, Max Lynch, on twitter.  We exchanged a few platitudes and he helped me out with a couple of early gotchas.  It was a great introduction to a community, and another advocate of my preconception that HTML5 would be ‘good enough’ for native apps – It wasn’t long after the HTML5 LinkedIn post that blasted the idea that HTML5 was the future.

I’d also been working on an app for the Oxford & Cambridge boat race.  I was adamant that using the accelerometer functionality in Cordova, it was possible to mimic a rowing motion and use your phone like a wii-mote.  I prototyped a very simple solution and touted it round a few app development companies.  They mostly laughed and suggested that I specified either iOS/Android, or double my costs.  I then took it to the excelled team at Inviqa, who despite not having long started their app development journey at the time, agreed that I’d seen the potential and were able to complete the project under the budget that we’d originally ballparked.

HTML5 FC 1 – 0 Native FC

Since then I’ve played with Ionic at each stage of its development.  It helped me establish my understanding of AngularJS, and been probably the exclusive partner to my investigations into Angular2+.  I don’t ply my trade as a developer, but as a technical generalist – and the concepts, documentation and community around Ionic have been superb in offering the support, patterns and scaffolding to help shape the new propositions that I nurture.

It was with fair trepidation that I ended up advocating a relatively straightforward application at my place of work; for internal use only and running on Ionic2.  I’ve had my battles (with myself, not the framework) in deciding on my application structure, but I’ve got there.  I have a wonderfully clean and well organised application that fulfils the role of PoC admirably.  The code is clean and well written enough for me to be comfortable in handing it over to a more established developer.  The file could simply state: “Built using – see the docs!  (Of course the documentation is slightly more comprehensive than that…)

With the advancement of web APIs (see enabling frameworks like cordova to start to get ‘native’ functionality ‘in the browser’ and Ionic’s support for building Progressive Web Apps (PWAs) out of the box, I can see a very bright future for HTML5.  My biggest concern is that whilst competing on functionality may be the sexier opportunity, the HTML5 apps community can design these new APIs with the UX around security built in from the start.

Blockchain; gateway to cryptography?

“What is a blockchain?” is probably one of the most frequent questions I’ve had to answer in the last 12 months.  What makes it more difficult is the answer more often than not has to take into account the varied knowledge and experience of the inquirer.

I’ve got a reasonable background in understanding the cryptography ecosystem from my days at a systems administrator, and having to secure everything from PII through to credit card data.  What I am not though, is a cryptography expert.  It’s a perfect example of  where you can rely on the experiences and expertise of other people in the open source community, rather than mixing your own flawed implementation.

What I’ve realised is that Blockchain is pretty much a gateway to cryptography.  Many people up until now will have used the simple padlock system in the top left of the address bar as their only real exposure to cryptography; but with cyber attacks becoming more and more frequent, the tacit knowledge required for the average user probably needs to improve.

To that end; when people are now asking for me to explain blockchain so they can understand it; I sort of reverse the question.  The ‘distributed ledger’ is a pretty easy concept to explain with an append-only google docs spreadsheet.  Where I think the general knowledge starts to falter is on hashes.  I’m not going to cover it in this article, but looking up what one-way cryptographic hashes are is probably the first element of Blockchain 101.

Once you’ve got a grasp of what a hash is, it’s then worth understanding how to secure them. The simplest answer (in my experience) is to rely on someone with experience to tell you which is the best hashing strategy to use, and get them to cite the source for that decision.  Internet security is rapidly evolving, so the right answer 2 years ago is the wrong answer now, but in starting to understand how the answers are reached, even non-technical participants can start to look for warning signs on outdated cryptographic techniques.

The second thing that I suggest people then look at is the concepts of Merkle trees. You can use both of these principles to either create a daily hash of your accounts spreadsheet file, or a Merkle root of the file as a representation of a semi-manually computed blockchain.  Simply share/publish your calculation at the end of each day so another party has access, and you can begin to understand the trust mechanisms that operate once the system starts to scale up.

Finally, you end up with the genesis block (ironic that genesis is at the end of my explanation) – and understand that everything starts from an agreed ‘state’ – not necessarily 0.  Once these three concepts are covered, you should have a working knowledge of blockchain.  If there’s more you want to know (or disagree with me on) – please let me know in the comments.

HTML5 App development

I’ve always been a fan of the concept of HTML5 app development, mostly due to the fact that I knew little Java/ObjectiveC in order to be able to even begin to do native.

That said, in the past 12 months I’ve been able to help out on an iOS app developed in ObjC & Swift; and then a hackathon where we used some neat networking tricks to create the “Internet of Christmas Jumpers” – more on that in a post later in the year.

One of the frameworks I’ve been following for a while is Ionic, and it doesn’t disappoint.  One of the nicest surprises though has been the IDE functionality built out more recently in VSCode.  The cordova-tools extension to VSCode is absolutely fantastic to play with:

I can click and drag on that phone in the bottom right to mimic accelerometer data.  Of course; to tweak the right values you need to play around with a device in the real world – but it’s a neat ‘accelerator’ to places where you require native functionality integration.

The other thing that’s pleasing me more is the developments of Progressive Web Apps, therefore the ability to run a mobile site and download the page/functionality without having to pass through the stringent requirements of individual app stores.  Most ‘apps’ I write are throwaway ideas, rather than productised moneymaking things – and the ability to run these as PWAs allows me to ignore much of the device integration – and focus on the HTML5 bits.

As browser APIs start to provide more and more in depth functionality; the need to do ‘native’ integration is passed over to the Cordova library for performance, and with the wonderful work of the open source community in keeping this every improving, we can be confident that this will continue to be ‘good enough’ for quite a while.