Thank you..

These are my two baby daughters. They were born on 26th January at 1.38 pm and 1.39 pm, and they are incredible. I love my wife and my babies more than anything else in the world. I had no idea that love like this even existed. My two baby daughters are quite literally miracles and I shall explain why.

Rolling back the clock a few years I had been through a rough time. I was going through a divorce and I wasn’t really myself. When I was young I aspired to be a family man, so going through a divorce having achieved none of this was quite devastating. I wanted to have babies and a wife and to provide for my family and now it all seemed so far away. This aspiration almost seems like a dirty word these days, if men and women are not fully focused on their careers there is something wrong. With falling fertility in the western world we seem to be pushing ourselves in this direction too.

Whilst I was going through this bad period, I volunteered for the Scouts. They helped keep me level headed during some hard times and I learned a great deal about leadership. If you ever want to learn how to lead this is the place to do it.  Kids are some of the hardest groups to lead so if you win here you can win anywhere.

Eventually my work took me further and further into London and so it became harder and harder to attend Scouts on Monday nights. I think these are the first people I would like to thank. If wasn’t for the Scouts taking me in and helping me to reflect I don’t think I would have easily got through that period, so thank you, you guys are truly amazing.

As I moved further into London I got closer and closer to my work colleagues. We were working on an incredibly difficult project ‘Customer Due Diligence’ and we had to work extremely long hours and under huge amounts of pressure. It felt like we were a small elite hit squad like the SaS (I don’t mean to do them a disservice, I’m sure they go through far more challenging things than us IT bods), but it had all the elements of camaraderie and companionship like a band of brothers. Those were the very best of days.  That team was incredibly special and we achieved some incredible things getting the first release of CDD into production in what was essentially 3 months. So to you guys, I want to thank you.

As we moved through to the second release of CDD things got interesting again, we basically got a brand new team. New managers, new people it became a really huge team. Everyone on that team was fantastic to work with, we all went through the best of times (Pizza Friday!) and the worst of times. I made some fantastic new friends on that team, long term friends I will know forever. I took on greater responsibilities and really started to develop skills I will use for a lifetime.

I also managed to travel to places I never would have been to before, Hong Kong, Buffalo, India, China and Vancouver. In all these places I made more friends, everybody I met along the way I want to thank you. You guys, in each and every country made me feel incredibly welcome. It’s made me feel very much like the world is my home.

I met my future wife in Buffalo whilst I was there on business, she was the person that stood out the most for me in the whole of Buffalo. She is wonderful, kind, caring, the sweetest person I know and I love her American accent, it reminds me of sweetness and candy.

When I first met her, I knew she was the one for me. I’ve always made a habit of making sure every person I’ve been on a date with knows what I’m all about very early on, and so I’ve always told people I’m a family man and I wanted to have a family. What is the point of really pursuing something if you disagree on this fundamental issue? So when she told me that was off the cards for her (due to a medical condition) I’ll admit that I was sad. I figured that we could probably still work around that problem. I didn’t want to give up on her that easily, I knew she was the one for me.

After we dated for a while, it came as a huge shock that she was pregnant with identical twins – a true miracle. My life was turned upside down. I panicked a lot, how on earth was I going to make this work? She lived in the USA and I lived in the UK. I was genuinely scared that we wouldn’t be able to make this work and I would miss the birth of my beautiful baby daughters.

The first thing I had to do was tell my boss. I asked if they might make it possible for me to move to the USA, at least for the time being. They seemed to think this would not be a problem. I could work from Buffalo. The understanding and supporting nature of my boss and the senior managers I work with is outstanding. They have been incredible. I am so thankful and lucky to have people like that in my life. If it wasn’t for them I may well have missed the birth of my daughters.

As my life progresses it seems as though people don’t believe me. To have managed to have these miracle babies, and have such understanding people around me that they let me work from the USA, there is something fishy in my story.  I can assure you there is not.

I genuinely feel lucky and in a world that seems to be losing its trust and kindness a little bit and becoming scared and protective.  I want to strike out against that and repay the trust and kindness I’ve received. So thank you to everybody in my life, and to those of you who have been on this journey with me.  I am truly thankful, grateful and humbled. You are very special people.

David

 

 

My first Ethereum contract

I managed to mine a fair amount of ether (Ethereum blockchain currency) on the Ethereum testnet, having done this it was time to start experimenting with contracts.

I pulled up the ballot contract at https://ethereum.github.io/browser-solidity/#version=soljson-v0.4.10+commit.f0d539ae.js and gave it a first stab. The idea of this contract is to create a ballot (a secret vote).

It’s quite a simple interface.

  • We create the contract which assigns the chairperson to the creator of the contract.
  • We also assign the number of different proposals (e.g. 1 – i love ice cream, 2 – i hate ice cream).
  • The chairperson can give the right to vote to a number of participants.
  • A participant can give a delegate the right to vote.
  • We can query the contract to find the wining proposal.

The great thing here is that any change in state (e.g. a vote) is recorded in the block chain, this is a bit like etching something into a diamond, it will not be reversed.

I installed “Mist” https://github.com/ethereum/mist/releases as my chosen Ethereum wallet, you can use this client to deploy Smart Contracts.

I click contracts on the interface and “Deploy Contract”, this brings up the following screen.

Once the contract is deployed it gives us an address, in my case my contracts address was “0x854B7998cde65af2096D5324AA745a34952b7480”.

I then learned that in order to execute code in my contract i need to use geth. There is a useful guide on geth here https://github.com/ethereum/go-ethereum/wiki/JavaScript-Console. Geth gives you a command line way of executing the Ethereum javascript libraries, the primary one being web3. You can of course call the javascript libraries from a browser, there is a large introductory guide here about how to do that https://medium.com/@ConsenSys/a-101-noob-intro-to-programming-smart-contracts-on-ethereum-695d15c1dab4, however, i wanted to try out my deployed Smart Contract quickly.

I was able to use geth to cast a vote using the following commands:

geth --testnet console

From the javascript console i then entered:

> web3.eth.defaultAccount = eth.accounts[0]

> personal.unlockAccount(eth.accounts[0], "password")

> var ballot = eth.contract([{"constant":false,"inputs":[{"name":"to","type":"address"}],"name":"delegate","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"winningProposal","outputs":[{"name":"winningProposal","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"voter","type":"address"}],"name":"giveRightToVote","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"proposal","type":"uint8"}],"name":"vote","outputs":[],"payable":false,"type":"function"},{"inputs":[{"name":"_numProposals","type":"uint8"}],"payable":false,"type":"constructor"}]).at('0x854B7998cde65af2096D5324AA745a34951b7480');

> ballot.vote(1);

I had successfully cast my vote!!! Happy voting everyone, lets hope one day this is how all voting is done.

 

 

 

Amazon Dash Doorbell

So i decided to play with these Amazon Dash buttons, the amount of tech you are getting with these buttons makes them incredibly cheap. The package actually contains a microphone (so it can communicate with ultrasonic sound if Bluetooth is unavailable), a Bluetooth module and wi-fi. I managed to pick mine up for about a dollar, not bad!!

I already had a Raspberry PI 2 and an Ardunio, I haven’t really had much time to do anything with these yet but i was determined to get something done with the dash buttons, so i put the Pi to good use.

I started by installing Ubuntu on the Raspberry Pi, I find Raspbian a little limited and i like being in a familiar environment (I’ve always liked Ubuntu, it’s easily the best supported Linux flavor).

The first thing i tried to get the dash buttons working was the code from https://github.com/gpwclark/dash-hack this had some really good ideas in it but i couldn’t get the button working completely, I think it was designed for an older dash button and has not been updated since.

What this does get you to do is install the Scapy Python library which i found very useful later on. There are also a bunch of things in the “init.sh” script which are useful to install. It did take a very long time to get all the bits i needed installed on Ubuntu but i did get there eventually.

With this failing to work I decided to dig out a wireless USB card (TP-Link N150) i had, you can get these from Amazon for $13 so they are not expensive, https://www.amazon.com/gp/product/B002SZEOLG/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1 .

The idea I had was to create a wireless access point, have the dash button connect to it..

Once the access point was set up and running using this guide https://frillip.com/using-your-raspberry-pi-3-as-a-wifi-access-point-with-hostapd/ I had to set up the dash button to connect, the key thing here is to ditch the set up process as you are about to select a product.

Once that was done, i updated my dns configuration to send amazon.com requests from the button to my local machine and I wrote the following script to act as the doorbell:

from scapy.all import *
import time
import threading
import pygame



counter = 0

class DoorBell (threading.Thread):
    def __init__(self,):
        threading.Thread.__init__(self)
    def run (self):

        global counter

        counter2 = counter
        time.sleep(1)
        if(counter2 == counter):
                pygame.mixer.init()
                pygame.mixer.music.load("/home/ubuntu/doorbell-1.wav")
                pygame.mixer.music.play()
                while pygame.mixer.music.get_busy():
                        pygame.time.Clock().tick(10)
                pygame.mixer.music.stop()



def print_summary(pkt):
    global counter
    if IP in pkt:
        ip_src=pkt[IP].src
        ip_dst=pkt[IP].dst
    if TCP in pkt:
        tcp_sport=pkt[TCP].sport
        tcp_dport=pkt[TCP].dport
        print " IP src " + str(ip_src) + " TCP sport " + str(tcp_sport)
        print " IP dst " + str(ip_dst) + " TCP dport " + str(tcp_dport)
        counter=counter+1
        print counter
        try:
                thread = DoorBell()
                thread.daemon=True
        except (KeyboardInterrupt, SystemExit):
                print '\n! Received keyboard interrupt, quitting threads.\n'

sniff(filter = 'dst port 443',prn=print_summary)


Idea for a new kind of car dealership

So I’ve seen a few companies like ZipCar around recently and this got me wondering if something similar could be applied to car dealerships.

I recently brought myself a Honda Accord, which I’m very fond of. It’s an excellent motor, however, one thing that wasn’t so good was the presales experience. I went to West Herr and I spotted a car i wanted – the Honda Accord. I test drove the car and thought it was excellent, so I decided I wanted to buy it. Everything was going swimmingly until i got dragged into a warranty discussion.

I’d checked out the car online and could tell this was a great price for the Accord, however, the warranty was a different story. I was not keen on signing up for something without finding out more about it (online) and doing some research so I pushed back. It seemed to me that I had no good way to appraise the value of this warranty other than from the slick words of the salesmen, this made me nervous.

They continued to discount the warranty giving me the ‘staff discount’. I’ve been through this kind of sales tactic before, I hate it, I cannot understand how this tactic is still working in the modern world. The desperation to sell this warranty made me think these guys are selling snake oil.

Sure enough when I got back I checked out the warranty, I could get a similar warranty for a much smaller price but the general advice was that it wasn’t worth it at all. The Accord has an excellent average price per repair so it was unlikely I would need it. Modern day extended warranties remind me of financial derivative products, it’s impossible to tell the real value. Sure there are some AAA bits in there but it’s mostly C’s and D’s.

So, keen to avoid this type of thing, I thought of a better way. What if we could use technology to drive used car sales instead. Here’s the vision in my head:

  1. You want to sell a car, so you put all the pictures on the website, you drive it to forecourt and check in the keys into a system (no people). The keys get stored in a locker.
  2. Next somebody with an app comes along and checks the keys out.
  3. They get a 1-2 hour test drive with the car. They have to agree to allow the app to keep track of them whilst they have the car. We have their details (credit card etc) any contravention of the rules and we can levy a hefty fine.
  4. The buyer can phone the seller and ask questions about the car.
  5. The sale completes on the app / website.

This has the advantage that you do not have anybody around who can direct you to specific things about a used car (not the person selling the car in a private car sales situation or the salesman).

Most of these sales guys on the forecourt have to get paid, they have an incentive to sell you these products and they get bonuses. This does not put your best interest at heart. This new type of dealership may well still have people about on the forecourt, maybe we add services like cleaning or getting the car checked out (we could do a 50/100 point check for the seller). This then becomes a business that tries to add real value to the seller and the buyer.

We want to make this process better for people, we don’t want to simply pump bad financial derivatives to people and we won’t make incentive’s for them to do so.

Security, the word on everybody’s lips

Last week I went to the txMq CIO round table event in Buffalo. The word on everybody’s lips was security. With the number of attacks recently on government computer systems and the increase in social engineering and ransomware I’m not surprised by this. Many CIO’s expressed their concern that it was not, if, but when they got attacked by some kind of ransom attack that kept them up at night.
The solution to this it seems is to use the old Scouts Mantra of ‘be prepared’. Keeping your data locked up safe and sound in a location hackers cannot get to, and having a number of backup plans for your data will help to curb this kind of problem. Some companies have taken the decision to simply pay up as this often ends up being the cheapest option if thy are caught with their pants down.

The whole conversation reminded me of something that happened to me just the month before. I had turned on two-factor authentication on my iPhone and I could not believe it when weeks later someone from China tried to log into my account. It made me think that being able to use two-factor and being able to see and prevent this attack was paramount to keeping my data secure. Why aren’t all companies doing this now and why is this not turned on by default? I have to say the ease with which this is done on the iPhone helps tremendously in making this pain free and easy. Doing this with Paypal has, in the past, been a different story.

I think this kind of thing is going to be essential in future, we have to get rid of passwords and we have to stop everybody in the world trying to implement their own authentication mechanisms (my two factor Facebook account and the number of companies that use Facebook for login helps me a lot). Companies absolutely must start making making this (two-factor) the default rather than the exception too.

I don’t see security moving fast enough in this direction and i think it’s scary. We need to protect people, companies and things not only from the criminals but from themselves. People have a bad habit of doing bad things with passwords (using the same ones over and over again,  writing them down etc), without using the technology to protect ourselves we are heading for an iceberg.

I read something recently about a scam where people ring up employees in companies and pretend to be senior members of the company. They ask to transfer a large sum of money to a ‘client’. Many companies have actually been caught out by this but they don’t have to be. It would be so easy to implement a system whereby the C-levels supply their finger prints on a phone to authorize the transaction.

We need to move faster in this direction, we need to protect ourselves and we need to ‘be prepared’.

 

 

Why I think the IoT revolution is just getting started.

Samsung have started releasing smart fridges and I think this has huge potential. The ability for fridges to keep track of sell by dates and display those on the front of the fridge could help significantly reduce the amount of food we waste. In the United States, food waste is estimated at between 30-40 percent of the food supply! This is a serious problem but imagine what a smart fridge can do for us here. Lets first look at the journey the food could have taken before if got there.

Amazon recently released a store where you can walk in and simply take stuff away without having to go to a checkout, not even one of those frustrating smart checkouts. “Our checkout-free shopping experience is made possible by the same types of technologies used in self-driving cars: computer vision, sensor fusion, and deep learning. Our Just Walk Out Technology automatically detects when products are taken from or returned to the shelves and keeps track of them in a virtual cart. When you’re done shopping, you can just leave the store. Shortly after, we’ll charge your Amazon account and send you a receipt.”

So at this point your phone knows exactly when you took a product and what you took, it likely also knows the use by date. So from this point we then transfer the product to our fridge. The fridge can then keep track of exactly where the item is in the fridge and when it needs to be used, giving you a read out on the front of the screen so you know exactly what needs to be used and where it is (just in case it’s right at the bottom of the freezer). Since screens are incredibly cheap, we would add this technology to our fridges in a very cost effective way. The continuous alerting of what is about to go out of date could dramatically reduce the amount of food that is wasted.

The fridge could also learn about your shopping habits and warn you against the purchase of things you have previously left unused. It could also provide these usage reports back to supermarkets who might be able to adjust their default quantities in an effort help with food waste reduction and yes it could even automatically order you food that runs out.

This leads me to something i thought would be cool to integrate with washing machines. I recently learned that one of the big washing machine manufacturers added a ‘curry’ program to washing machines in India. For me this does not go far enough. Why can’t washing machines ‘download’ new programs from the Internet? What if, I in the western world would like this ‘curry’ program to wash my clothes with. Maybe washing machines around the world could even experiment with programs and optimize usage, sharing those optimizations with other washing machines? The revolution is coming!

I also like something else Amazon has done here, Amazons Dash Buttons where i just press a button and Amazon orders me a replacement product associated with that button. I like it so much I’ve brought 3 so far. It would be even better if it had enough sensors to just know automatically when i need more. The time i save not going online to buy menial things like dishwasher tablets i can then use for cuddling my beautiful new born daughters or writing blog posts!

Of course there is the question of security if you allow IoT devices to automatically order things for you. I’m ok with this as long as i’m always notified on my phone (I currently have all my cards set up to notify me of all transactions) and i can cancel or back out of any order. Provided companies start offering two factor and device authorization / activation procedures i see this as low risk proposition anyway.

You may ask ‘What do you mean by two-factor?’ well, the thing is, Apple alert me with the exact location and ask me to verify if someone logs into my Apple account. We can do the same thing with IoTs, before completing a purchase or transaction Amazon can alert me and ask me to supply my thumb print. Problem solved.

What does everybody here think of IoT? Are we excited about how smart our houses are getting?

 

Beginning with Ethereum Smart Contracts

I began working out how i could create my first Smart Contract. I’m a Windows user and many of the tools required to do useful things with Ethereum require Mac or Linux. Luckily Windows 10 now has the Windows Subsystem for Linux (WSL) so i started by installing it, more on that here https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/ and here http://www.zdnet.com/article/how-to-run-run-the-native-ubuntu-desktop-on-windows-10/ .

So far i’m incredibly impressed with this. This really makes life so much better for a Windows developer, and erodes some of the advantages of the Mac.

I then started here: https://medium.com/@ConsenSys/a-101-noob-intro-to-programming-smart-contracts-on-ethereum-695d15c1dab4#.ufo5uidw7

Which is very long but has a heap of useful information on it.

I used https://github.com/intellij-solidity/intellij-solidity for solidity syntax highlighting in IntelliJ and i began looking at create more advanced DApps using Truffle https://github.com/trufflesuite/truffle .

My aim here is to create something on Ethereum to allow contract resources to be paid. Example below:

  1. Agree a RATE.
  2. Submit timesheet hours.
  3. Approve timesheet hours.
  4. Payment in ETH is made automatically upon approval.

Wish me luck 🙂

The Mighty Bitcoin

I was pinged just the other day asking if i knew about blockchain. I’ve been excited about blockchain technology and an active user of Bitcoin for some time now. I think it has the potential to completely revolutionize a number of industries and possibly even lead to the downfall of traditional banking.

I often get asked for an explanation of blockchain / Bitcoin (used interchangeably), so here is my stab. Firstly the blockchain is simply a distributed ledger. For those that don’t understand this concept, a ledger is simply how the bank stores your account activity. When you log in to online banking and look at your statement that information is being compiled from the banks ledger. That information is centralized meaning that the bank stores this information locally on it’s servers.

Bitcoin on the other hand stores this information on each and every persons computer or server who care to store it. So this naturally leads to the questions ‘How on earth can you protect that from being tampered with?’ and ‘Why on earth would anybody want to?’.

The answer to the first question is that when someone wants to update the ledger by way of a transaction, Bob sends money to Bill for example, a command is sent across the distributed network. Once enough transactions have taken place across the network each computer participating in the network begins to work on a ‘block’ of transactions and apply a sort of hash code to that block. This is a bit like somebody signing the bottom of a document to verify it’s integrity or a checksum which is used to verify the integrity of a computer file. The unique thing here is that the proof is very difficult to generate but once generated is very easy to verify.

Once any one of the computers in the network has provided a mathematical proof for the block of transactions it is added to a chain of blocks. When other computers verify the proof is correct, they agree and add it to their chain of blocks and this continues ad-infinitum. Typically a transaction is verified when at least 3 participants in the network have validated the proof.

All the computers in the network are checking each others working out and validating each other. This makes the system incredibly reliable and explains why the value of Bitcoin has gone through the stratosphere.

So the question is why would anybody do this? Simple, the reward for committing your computing power is currency. Bitcoin is designed to credit the wallets of participants with cold hard cash partly due to it’s controlled inflation whereby coins are created through this process and partly when transaction fees are paid. Although transaction fees are optional, you get your coins processed much faster if you pay.

What this means is that Bitcoin has become the perfect medium of exchange, the multiparty verification of the ledger and controlled creation of new coins creates a trust system that is unparalleled by the current centralized banking system and far apart from central control. No longer do you have a currency that can be manipulated by the hands of man.

I originally invested in Bitcoin and have profited slightly (not hugely) from it’s success, i recently tried out ordering gift cards with Bitcoin at eGifter. The possibilities here are exciting, i could potentially now get paid and survive using Bitcoins.

Of course people have now started to imagine what other things can we do with blockchain technology that extends beyond currency. One very interesting use of the technology is in voting systems. Imagine we give everybody a single bitcoin equivalent to spend and a ‘wallet’ for each candidate to register a vote. At the end of the voting session we simply look at which candidate got the most ‘bitcoins’ and declare the winner anybody that cares about the integrity of the voting system could be a participant in the verification network.

Another interesting project called Ethereum aims to take this technology and build on it to produce ‘Smart contracts’. This could be part of a legal revolution where expensive legal teams are no longer required, ownership of property could be proved digitally and the mass of paper work that is required reduced to a simple digital interface.

So here is my world changing idea, why not create a bank like this? With a completely open distributed ledger registering all your dollar and sterling transactions across a network initially using the banks mobile app andbut also allow people to download an (open source) app to participate. People won’t need PSD2 open banking APIs because anybody (with the right client) will be able to participate in updating and reading the ledger at the demand of the customer.

The bank would still provide products, mortgages, savings and capital, they would still be responsible for the monetary creation aspect (unlike the automated creation of money that drives Bitcoin).

Most of the latest startup banks are not really moving fast enough away from traditional banking models for my liking, we can do better.

The future looks incredibly bright for blockchain technology and bringing it’s power to the masses will be part of a democratic revolution.