AWS Summit 2014, London. Impressed.

Amazon Web Services Logo

Having been to the Google equivalent a few weeks ago, I went to the 2014 AWS Summit in London today. Around 2,000 of us managed to steer around the RMT tube strike and overall, very impressed.

AWS have a “Windows Desktop as a Service” offering arriving real soon now, giving you both a Windows Server 2008 R2 server plus client software (for Windows, Mac, iOS and Android) for circa $30/month/user. That increases to between $50-$70/user/month with Windows and Office in place. I can see major opportunities for them at that pricing, not least as they appear to have solved the issues around high performance graphics being driven remotely, and have also got things like keypads available on the tablet implementations of the client. You can side load apps into the mix either directly or using Active Directory.

So, I will shortly have the ability to run up a PC and do a 30 trial of the current Windows-only Tableau Desktop Professional for around £20 – so I can at last finish off the story telling end piece of my 12 year long weight/nutrition analysis, without having to buy a Windows PC. Just need to be able to through trend lines through a few different filtered scatter plots now (something I couldn’t do with Google Fusion Tables).

There are also several traditional Licensed Software providers offering server implementations of their product as instances you only pay for when active, and with no long term commits. Jaspersoft and Tableau Server being two such examples (there are many more). Amazon are also offering assistance to other software providers to provide more products under this basis, including helping to drive free 30 day trials.

Much else to be very impressed by, and the differences between themselves, Digital Ocean and Google Cloud Services are fairly stand-out – to me at least. I think i’d know what i’d do to fire up Enterprise volumes for either of AWS or Google, but the things i’d do are very different based on what i’ve now learnt.

The most populous stand appears to be that of Splunk, who were one of my 3-4 “bets for the future” when I was at Computacenter. Talking to them, it now looks like IT Security is now their biggest application area, followed by e-commerce infrastructure flows and lastly by their traditional log file (and associated performance) analysis business. The product now appears to have plugins for virtually piece of data centre, storage and network device vendor log file, and relationships in place with all the key large brand vendors – and of course links into AWS infrastructure as well now.

I didn’t win a Kindle HDX, or the iPhone 5S Telecity were raffling, nor either of the two drones. But learnt a lot, and will be applying the learnings over the next few weeks.

Help available to keep malicious users away from your good work

Picture of a Stack of Tins of Spam Meat

One thing that still routinely shocks me is the shear quantity of malicious activity that goes on behind the scenes of any web site i’ve put up. When we were building Internet Vulnerability Testing Services at BT, around 7 new exploits or attack vectors were emerging every 24 hours. Fortunately, for those of us who use Open Source software, the protections have usually been inherent in the good design of the code, and most (OpenSSL heartbleed excepted) have had no real impact with good planning. All starting with closing off ports, and restricting access to some key ones from only known fixed IP addresses (that’s the first thing I did when I first provisioned our servers in Digital Ocean Amsterdam – just surprised they don’t give a template for you to work from – fortunately I keep my own default rules to apply immediately).

With WordPress, it’s required an investment in a number of plugins to stem the tide. Basic ones like Comment Control, that  can lock down pages, posts, images and attachments from having comments added to them (by default, spammers paradise). Where you do allow comments, you install the WordPress provided Akismet, which at least classifies 99% of the SPAM attempts and sticks them in the spam folder straight away. For me, I choose to moderate any comment from someone i’ve not approved content from before, and am totally ruthless with any attempt at social engineering; the latter because if they post something successfully with approval a couple of times, their later comment spam with unwanted links get onto the web site immediately until I later notice and take them down. I prefer to never let them get to that stage in the first place.

I’ve been setting up a web site in our network for my daughter in law to allow her to blog abound Mental Health issues for Children, including ADHD, Aspergers and related afflictions. For that, I installed BuddyPress to give her user community a discussion forum, and went to bed knowing I hadn’t even put her domain name up – it was just another set of deep links into my WordPress network at the time.

By the morning, 4 user registrations, 3 of them with spoof addresses. Duly removed, and the ability to register usernames then turned off completely while I fix things. I’m going into install WP-FB-Connect to allow Facebook users to work on the site based on their Facebook login credentials, and to install WangGuard to stop the “Splogger” bots. That is free for us for the volume of usage we expect (and the commercial dimensions of the site – namely non-profit and charitable), and appears to do a great job  sharing data on who and where these attempts come from. Just got to check that turning these on doesn’t throw up a request to login if users touch any of the other sites in the WordPress network we run on our servers, whose user communities don’t need to logon at any time, at all.

Unfortunately, progress was rather slowed down over the weekend by a reviewer from Kenya who published a list of best 10 add-ins to BuddyPress, #1 of which was a Social Network login product that could authenticate with Facebook or Twitter. Lots of “Great Article, thanks” replies. In reality, it didn’t work with BuddyPress at all! Duly posted back to warn others, if indeed he lets that news of his incompetence in that instance back to his readers.

As it is, a lot of WordPress Plugins (there are circa 157 of them to do social site authentication alone) are of variable quality. I tend to judge them by the number of support requests received that have been resolved quickly in the previous few weeks – one nice feature of the plugin listings provided. I also have formal support contracts in with Cyberchimps (for some of their themes) and with WPMU Dev (for some of their excellent Multisite add-ons).

That aside, we now have the network running with all the right tools and things seem to be working reliably. I’ve just added all the page hooks for Google Analytics and Bing Web Tools to feed from, and all is okay at this stage. The only thing i’d like to invest in is something to watch all the various log files on the server and to give me notifications if anything awry is happening (like MySQL claiming an inability to connect to the WordPress database, or Apache spawning multiple instances and running out of memory – something I had in the early days when the Google bot was touching specific web pages, since fixed).

Just a shame that there are still so many malicious link spammers out there; they waste 30 minutes of my day every day just clearing their useless gunk out. But thank god that Google are now penalising these very effectively; long may that continue, and hopefully the realisation of the error of their ways will lead to being a more useful member of the worldwide community going forward.

The precise art of a low margin business

Amazon Book Warehouse

I found this great article that explains Amazons pricing strategy eloquently. It’s also the first time i’ve heard that Apple rotate their stock faster than Amazon do, which is an amazing feat for a manufacturing company. Meanwhile, it doesn’t mention Microsoft, but if you try to insert the characteristics of their business model into the picture presented, you can see why Amazon, Google and Apple have them in a head lock and are emptying the room of oxygen needed to grow. Enjoy:

http://www.eugenewei.com/blog/2012/11/28/amazon-and-margins

At long last: Thorough journalism meets MH370

The Mystery of Malaysia Airways Flight 370 Book Artwork

A long time ago, Microsoft turned up at several ISPs doors with a distribution of their latest browser, Internet Explorer 6. Around a week later, CDs of a completely customised version of Demon’s trial experience landed on over 180,000 customers desks. The speed at which every team executed was phenomenal (even leading to complaints from BT that we must have been given an unfair advantage; we hadn’t). A key part of this execution being the web team then led by Sylvia Spruck Wrigley.

Since the time we both worked there, she’s learnt to fly, runs her “Fear of Landing” blog and has written another book (Why Planes Crash: 2001) that catalogued several air accidents.

It looks like she’s just repeated the same scale of feat as the one she pulled off at Demon, writing a book about Malaysia Airlines Flight 370, the whole book written in 4 weeks. I know she was interviewed by Russian Television about MH370 long before she’d written the book, given some of her excellent work pulling together some of the threads of the investigation. As she recounted on her Facebook feed:

So, yes, I wrote a book in a month. To be fair, I became obsessed with it the month before, so a lot of the research was already done. I wrote like CRAZY. I also kept spreadsheets to track *everything* so that I would be able to share stats. Here you go:

Idea conceived: 1st of April
First word written: 2nd of April
First draft done: 19th of April
Book launched: 27th of April
Spreadsheets created for random tracking: 12
Days where I wondered if I was crazy: 26
Total words: 46,173
Words per day high score: 6,095
Max words per hour: 820
Most played song on iTunes: Red Lights
Best arbitrary reward for hitting wordcount goals: Wonka Nerds imported from US
Packets of Nerds eaten: 6
Gym visits: 4
Pounds gained: 6
Vows to go to gym every single day if I can just get this goddamn book done: 37
Days that my loving boyfriend left town because I was unbearable to live with: 10
Naps taken: 30
Baths needed: 27
Baths taken: 4
Victory dances around the living room when I achieved a round number on my wordcount: 7
Conversations dominated by MH370: all of them

I’ve forwarded this news (of the book that is!) to various people in the USA who have been left practically crawling up the wall with the many hours of otherwise content-free coverage of MH370 on CNN. I hope this will provide them with some much needed escape from that monotony!

So, to leave you with the summary:

In this age of constant surveillance, it shouldn’t be possible to lose a Boeing 777 carrying 239 passengers. It’s inconceivable that the aircraft flew for seven hours without anyone noticing that it was up there, completely off track. Yet, that’s exactly what happened. Sylvia Wrigley, pilot and aviation expert, explores the possibilities in the pages of The Mystery of Malaysia Airlines Flight 370. Wrigley is a pilot and aviation writer who has been obsessing about aviation safety for ten years.

Understand every aspect of the mystery

  • Flying with Malaysia Airlines
  • MH370 Disappears
  • Popular Theories
  • A Deep Sea Search
  • The Aftermath

You can buy your copy of the book (as I have) from several places via Sylvia’s own link here.

 

Supporting Child and Adolescent Mental Health Services

Child & Adolescent Mental Health Services Poster

I’ve been setting up a WordPress site with an associated BuddyPress Forum on my Digital Ocean Linux Server during the gaps today (we have our 2 year old granddaughter staying with us this weekend). This for my daughter in law Gill, who is doing some work with Mental Health Charity MIND, and potentially with CAMHS (Child & Adolescent Mental Health Services). This to provide a much needed information and shared experience resource for Medical Professionals, Parents, Teachers and Children. The latter both the afflicted, and siblings plus others they have regular contact with.

As a former special needs teacher, she finds there’s a massive gap in training and that from speaking to medical students, she’s found they learn barely anything about mental health. She’s keen to close that off and to also give online support to all concerned wherever and whenever it’s needed.

I’m just working around a few nuances on how one particular WordPress theme queues up a newspaper style layout on the front page, and to put in some of the preventative measures to arrest the usual torrent of user & comment spam that afflicts sites like this. Once done, she becomes mission control.

Really looking forward to the result when it goes live, her other commitments permitting!

 

What do IT Vendors/Distributors/Resellers want?

What do you want? Poster

Off the top of my head, what are the expectations of the various folks along the flow of vendor to end user of a typical IT Product or Service? I’m sure i’ve probably missed some nuances, and if so, what is missing?

Vendors

  • Provide Product and/or Services for Resale
  • Accountable for Demand Creation
  • Minimise costs at scale by compensating channels for:
    • Customer Sales Coverage and Regular Engagement of each
    • Deal Pipeline, and associated activity to increase:
      • Number of Customers
      • Range of Vendor Products/Services Sold
      • Customer Purchase Frequency
      • Product/Service Mix in line with Vendor objectives
    • Investment in skills in Vendor Products/Services
    • Associated Technical/Industry Skills useful to close vendor sales
    • Activity to ensure continued Customer Success and Service Renewals
    • Engagement in Multivendor components to round out offering
  • Establish clear objectives for Direct/Channel engagements
    • Direct Sales have place in Demand Creation, esp emerging technologies
    • Direct Sales working with Channel Partner Resources heavily encouraged
    • Direct Sales Fulfilment a no-no unless clear guidelines upfront, well understood by all
    • Avoid unnecessary channel conflict; actively discourage sharing results of reseller end user engagement history unless presence/relationship/history of third party reseller with end user decision makers (not just purchasing!) is compelling and equitable

Distributors

  • Map vendor single contracts/support terms to thousands of downstream resellers
  • Ensure the spirit and letter of Vendor trading/marketing terms are delivered downstream
  • Break Bulk (physical logistics, purchase, storage, delivery, rotation, returns)
  • Offer Credit to resellers (mindful that typically <25% of trading debt in insurable)
  • Centralised Configuration, Quotation and associated Tech Support used by resellers
  • Interface into Vendor Deal Registration Process, assist vendor forecasting
  • Assistance to vendor in provision of Accreditation Training

Resellers

  • Have Fun, Deliver Good Value to Customers, Make Predictable Profit, Survive
  • Financial Return for time invested in Customer Relationships, Staff knowledge, Skills Accreditations, own Services and institutional/process knowledge
  • Trading terms in place with vendor(s) represented and/or distributor(s) of same
  • Manage own Deal Pipeline, and associated activity to increase one or more of:
    • Number of Customers
    • Range of Vendor Products/Services Sold
    • Customer Purchase Frequency
    • Product/Service Mix in line with Vendor objectives
    • Margins
  • Assistance as needed from Vendor and/or Distributor staff
  • No financial surprises

So, what have I missed?

I do remember, in my relative youth, that as a vendor we used to work out what our own staffing needs were based on the amount of B2B revenue we wanted to achieve in each of catalogue/web sales, direct sales, VARs and through IT Distribution. If you plug in the revenue needs at the top, it gives the number of sales staff needed, then the number of support resources for every n folks at the layer before – and then the total advertising/promotion needed in each channel. It looked exactly like this:

1991 Channel Mix Ready Reckoner

Looking back at this and comparing to today, the whole IT Industry has gotten radically more efficient as time has gone by. That said, I good ready reckoner is to map in the structure/numbers of whoever you feel are the industry leader(s) in your market today, do an analogue of the channel mix they use, and see how that pans out. It will give you a basis from which to assess the sizes and productivity of your own resources – as a vendor at least!

Blockchain: the ultimate and positive chaotic disruption

Light Bulb Lit Up

The future is here. It’s just not evenly distributed yet“. Those were the words of Tim O’Reilly, owner of O’Reilly, producer of many of the definitive books on software systems and associated conferences. His company’s Radar blog is also noteworthy for it’s excellent peeks into the future of high technology related products and services. One subject seems to pass it by, and I can’t help think the implications are much more significant than people really comprehend yet; that of the technology that sits behind Bitcoin (Bitcoin itself is but a small part of it).

The mechanics of Bitcoin are described in the original Satoshi Nakamoto paper here. Alternatively, an earlier introductory blog post from me.

The main truly disruptive innovation with much wider utility is that of a Blockchain. A public record that is stored across many hundreds or thousands of machines, in hundreds of different legal jurisdictions, but together forming a definitive record of activity without any central control. A sort of ledger that lives in the worlds commons, and operable in a way that ensures a single digital object cannot be “double spent”; only transferred between entities.

Much of the economic activity in the world is currently served by institutions who possess “choke points” through which activity is carried and who charge (in some way) at the gate. If I want to send cash to someone, I typically pay commission or transaction charges to a number of institutions to do so. There are many areas that could be unleashed when transaction costs tend to zero and the record of some activity is stored in a publicly accessible entity without any central control:

  • Proof of Existence. One of the innovations of GIT (the Source Code Control System written by Linux author Linus Torvalds) is that every individual document/file is recorded in it’s database as a “hash”. When any piece of Digital material is passed through this piece of maths, the hash is a 8 byte “signature” that is effectively unique (the change of two random documents having the same hash is circa 1 in 83 million). So, you can immediately see, with very little comparison work, whether two documents are exactly the same or different. Manuel Araoz, a 25-year-old developer in Argentina, uses a blockchain to prove authoritatively that you had a specific document in your possession on a specific date, without having to publicly publish it’s content. The fact that electronic signatures can be part of the document being held (and hashed with the rest of its surrounding content) means that you have a distributed contract “system of record”.
  • Namecoin. The current Domain Name System (DNS) is effectively the web’s telephone directory that translates memorable names (like www.bbc.co.uk) into the Internet Protocol Address(es) at which that web site resides (in this instance, 173.194.115.96 and 10 others). However, the central repositories where this information is stored can be systemically blocked or willingly corrupted by owners of the various choke points, or the governments under whom they operate from a legal jurisdiction perspective. Namecoin is an attempt to mirror the DNS in a widely distributed blockchain, with domain names ending “.bit”, and hence operationally difficult to corrupt or censor. Although I have no useful application for it at this stage, I have already registered “ianwaring.bit” to reserve my presence there.
  • Music Distribution. Following a Kickstarter type model, would you like to buy shares in a specific musicians new song? That way, you’d see a return on your investment if it proved popular and you managed to help promote it widely to a bigger audience. Piracy in reverse! The Blockchain protocol does have the ability to run such Assurance Contracts (ie: this project is funded only if pledges of a specific value are achieved by a certain date, or annulled if the target is not met by then), so there are similar precedents for Venture Capital, or even what has to date been tax funded Government projects for the public good. I sometimes wonder how HS2 would do if the UK Government ran the whole thing as a Kickstarter project, and see if the beneficiaries were willing to put money where their political mouths are!
  • Voting. One of the ultimate choke points where MPs act as a proxy for the voters in a geographic area they represent for a multi-year term. The act of multi-year elections is probably an edge case; it’d be more radical if I could choose when I want my MP to act as my proxy and when I wish to register my share of the decision making process personally instead. I somewhat doubt that folks currently in Westminster would wish to put their constituents in control of their own interests, despite how refreshing and re-engaged we’d feel as a result.
  • Vendor Relationship Management. This is the ultimate result of Doc Searl’s work on VRM, where we ask commercial entities to bid for our business. Given the low or zero transaction cost, you could delegate a lot of the associated work to software agents if the product or service was a commodity. Like a Taxi or self-driving car, as given in this excellent 25 minute talk by Mike Hearn, an ex-Google employee (it is a great talk to listen to – not least the effect when some of the actors in transactions are machines themselves, complete with their own bank accounts and long term trade related decision making). Even Yelp, TripAdvisor or Social Media recommendations would be more plausible if subjected to the authoritative “someone I can trust” standards that the underlying technology can provide.

I’d thoroughly recommend this article on Business Insider, which does a great job of highlighting some of the possibilities.

There are many challenges ahead. Some regulatory (I hope Politicians and our Public Servants do act in our long term best interests, without being victim of the lobbying of interests rendered on the wrong side of , or distorted out of shape, by a drive for our mutual good). Some technology (things like Bitcoin will need improvements to bring down the current 10 minute delay to provide definitive authentication, and to handle an increase in Blockchain size to handle the transaction volumes currently seen by Mastercard and Visa networks). But the potential applications are dizzying both in number and of disruptive impact to everyone.

As Fred Wilson, notable VC, said recently: Let’s go back and revisit the big innovations on the commercial Internet over the past twenty years. TCP/IP, HTTP, The Browser, Search, Social, Mobile, Blockchains. Each one of those innovations drove an investment cycle. Our 2004 fund was built during social. Our 2008 fund was built during social and the emergence of mobile. Our 2012 fund was built during the mobile downturn. And our 2014 fund will be built during the blockchain cycle. I am looking forward to it.

Bitcoin (which I described in greater detail here) was only the start. The main challenge now is one of identity, and protecting it from interlopers. You have to keep your private key insanely private (even to the extent of keeping it off Internet connected machines), as that is your definitive personal identifier that someone else could use to masquerade as the real you everywhere online. At least until something can check your own physiology (it is really you), and your state of mind (you haven’t been sectioned, frail nor threatened), prior to any transaction being authenticated. Or is that what the Apple iWatch will be all about?

Indie Web Fragmention support added here

Highlighted Pen Marks in Book

I saw an excellent article on Fragmentions on Medium, written by Kevin Marks. One of the big gotchas with telling someone to go look for information on a web page is that the paragraph you want to point at is often a far distance down – so the user has to go scanning the page to find the text you reference.

Kevin proposed adding two hashes to the end of a web page URL, where you could park words to look for in the text of the page. So, for example, if I wanted to send someone to the paragraph in my recent blog post about Police Statistics where I mentioned “crimes solved”, i’d cite a URL of:

http://www.ianwaring.com/2014/04/20/so-how-do-policing-statistics-work/##crimes+solved

and off it would go to that page, scroll down to that text and highlight the location where it resides. Job done. Fortunately, he mentioned this on an Indie Web IRC channel, and Jonathan Neal duly coded it up in short order. One implementation as a Chrome Extension, so you added support for this structure to any web site you visit using Chrome. The other implementation was for a single web site, so that anyone on any browser – without any special extension added – nevertheless could get the same effect immediately. You can download this off Github here.

I’ve implemented the web based Javascript version to work all across ianwaring.com. A few examples:

http://www.ianwaring.com/2014/03/13/the-art-of-decoy-pricing/##arbitrary+coherence

http://www.ianwaring.com/2014/02/28/enterprise-it-meets-the-hall-of-marbles/##million+marbles

http://www.ianwaring.com/2014/04/17/dear-water-cooler-if-this-person-talks-please-listen-in-for-me/##Marc+Andreessen

You get the idea. It works even without the final slash character before the ## – that is just a feature of the default URLs on my blog. You can do this for any URL on my blog – so feel free to refer away!


Footnote: I’ve implemented this as a custom child theme on my WordPress network site, leaving the fragmention.js file in the parent themes Javascript subdirectory, then adding the loading code and associated CSS into a copy of the header.php file in the child theme directory, just above the call to wp_head(). I avoid calling in the Javascript if the page being rendered is an Admin/Dashboard related page:

Fragmention Code in header.php

File style.css in the child theme directory just inherits the style.css content from the parent theme:

Code in style.css in WP Child Theme

Things should get easier as there are already at least two WordPress plugins queued up for approval to do all this automagically for any WordPress site (cited here). In the meantime, my handcoded version seems to work okay. Enjoy!

Simple words often work better than neat adverts

Love at First Website Advert

An example advert from the time I led the Marketing Services Team at Demon Internet. It was a dumb sounding advert, but it pulled response like crazy. Some of the responses we received back in the mail (asking for trial CDs) contained nice poems, so it appeared to strike a healthy connection.

When we first entertained bids for a new agency, we had super looking, consistent, nicely branded advert samples from one company, and these tongue in cheek worded ones from another. Cliff Stanford (owner of Demon Internet) liked the worded ones, while I thought he was nuts – but he agreed to do some tests to see who was correct. He was absolutely right; the worded ads pulled much more effectively. Lesson learnt!

The Valentines Day Advert was done in a rush a week before, and Les Hewitt (media buyer extraordinaire) got it in most target newspapers near the back. Once in, he phoned them hourly to twist their arm relentlessly, getting it shifted page by page towards the front. The advert made it to the dating page on Valentines Day in the Times I believe, where we got fantastic response levels.

We ran quite a few variations of the theme in over 40 different publications:

Thick as two short planks advert

piece at cake advert

We also tried cross-track and a 40-sheet poster treatment of the piece@cake advert, but had a bit of a mishap on the approach to Wembley Stadium the evening when the Spice Girls were giving a concert. Hence thousands of young fans, being driven in by their parents to see the concert were greeted with:

Piece @ Cake Advert, dropped E

We had them paste the ‘e’ panel back on the next day.

Average cost to land a £10/month paying customer was £30, around 1/6 that of competitive ISPs at the time (this was 1998-9). We tested everything, and knew what the landed cost of a customer was for every ad we placed. Even knew which ones gave us high response and then heavy churn 3 months later (waves hello to the Sun and Mirror). The most effective medium one of my folks tried gave us acquisition costs of £4 per landed customer, but many odd ball complaints. But that’s another story, and described near the end of an older post here.

Class work, well executed and full of personality. In my humble opinion, of course.

 

Programming and my own sordid past

Austin Maestro LCP5

Someone asked me what sort of stuff i’ve programmed down my history. I don’t think i’ve ever documented it in one place, so i’m going the attempt a short summary here. I even saw that car while it was still in R&D at British Leyland! There are lots of other smaller hacks, but to give a flavour of the more sizable efforts. The end result is why I keep technically adept, even though most roles I have these days are more managerial in nature, where the main asset attainable is to be able to suss BS from a long distance.

Things like Excel, 1-2-3, Tableau Desktop Professional and latterly Google Fusion Tables are all IanW staples these days, but i’ve not counted these as real programming tools. Nor have I counted use of SQL commands to extract data from database tables directly from MySQL, or within Microsoft SQL Server Reporting Services (SSRS), which i’ve also picked up along the way. Ditto for the JavaScript based UI in front of MongoDB.

Outside of these, the projects have been as follows:

JOSS Language Interpreter (A Level Project: PAL-III Assembler). This was my tutors University project, a simple language consisting of onto 5 commands. Wrote the syntax checker and associated interpreter. Didn’t even have a “run” command; you just did a J 0 (Jump to Line Zero) to set it in motion.

Magic Square Solver (Focal-8). Managed to work out how to build a 4×4 magic square where every row, column, diagonals and centre four squares all added up to the same number. You could tap any number and it would work out the numbers for you and print it out.

Paper Tape Spooler (Basic Plus on RSTS/E). My first job at Digital (as trainee programmer) was running off the paper tape diagnostics my division shipped out with custom-built hardware options. At the time, paper tape was the universal data transfer medium for PDP-8 and PDP-11 computers. My code spooled multiple copies out, restarting from the beginning of the current copy automatically if the drive ran out of paper tape mid-way through. My code permitted the operator to input a message, which was printed out in 8×7 dot letter shapes using the 8 hole punch at the front of each tape – so the field service engineer could readily know what was on the tape.

Wirewrap Optimiser (Fortran-11 on RSX-11M). At the time my division of DEC was building custom circuit boards for customers to use on their PDP-8 and PDP-11 computers, extensive use was made of wire-wrapped backplanes into which the boards plugged into the associated OmniBus, UniBus or Q-Bus electronics. The Wirewrap program was adapted from a piece of public domain code to tell the operator (holding a wirewrap gun) which pins on a backplane to wire together and in what sequence. This was to nominally minimise the number of connections needed, and to make the end result as maintainable as possible (to avoid having too many layers of wires to unpick if a mistake was made during the build).

Budgeting Suite (Basic Plus on RSTS/E). Before we knew of this thing called a Spreadsheet (it was a year after Visicalc had first appeared on the Apple ][), I coded up a budget model for my division of DEC in Basic Plus. It was used to model the business as it migrated from doing individual custom hardware and software projects into one where we looked to routinely resell what we’d engineered to other customers. Used extensively by the Divisional board director that year to produce his budget.

Diagnostics (Far too many to mention, predominantly Macro-11 with the occasional piece of PAL-III PDP-8 Assembler, standalone code or adapted to run under DEC-X/11). After two years of pushing bits to device registers, and ensuring other bits changed in sync, it became a bit routine and I needed to get out. I needed to talk to customers … which I did on my next assignment, and then escaped to Digital Bristol.

VT31 Light Pen Driver in Macro-11 on RSX-11M. The VT31 was a bit mapped display and you could address every pixel on it individually. The guy who wrote the diagnostic code (Bob Grindley) managed to get it to draw circles using just increment and decrement instructions – no sign of any trig functions anywhere – which I thought was insanely neat. So neat, I got him to write it up on a flowchart which I still have in my files to this day. That apart, one of our OEM customers needed to fire actions off if someone pressed the pen button when the pen was pointing at a location somewhere on the screen. My RSX-11M driver responded to a $QIO request to feed back the button press event and the screen location it was pointing at when that occured, either directly, or handled as an Asynchronous System Trap (AST in PDP-11 parlance). Did the job, I think used in some aerospace radar related application.

Kongsberg Plotter Driver (Press Steel Fisher, Macro-11 on RSX-11M). Pressed Steel Fisher were the division of British Leyland in Cowley, Oxford who pressed the steel plates that made Austin and Morris branded car bodies. The Kongsberg Plotter drew full size stencils which were used to fabricate the car-size body panels; my code drove the pen on it from customers own code converted to run on a PDP-11. The main fascination personally was being walked through one workshop where a full size body of a yet announced car was sitting their complete. Called at that stage the LCP5, it was released a year later under the name of an Austin Maestro – the mid range big brother to the now largely forgotten Mini Metro.

Spanish Lottery Random Number Generator (De La Rue, Macro-11 on RSX-11M). De La Rue had a secure printing division that printed most of the cheque books used in the UK back in the 1980’s. They were contracted by the Spanish Lottery to provide a random number generator. I’m not sure if this was just to test things or if it was used for the real McCoy, but I was asked to provide one nonetheless. I wrote all the API code and unashamedly stole the well tested random generator code itself from the sources of single user, foreground/background only Operating System RT-11. A worked well, and the customer was happy with the result. I may have passed up the opportunity to become really wealthy in being so professional 🙂

VAX PC-11 Paper Tape Driver (Racal Redac, Thorn EMI Wookey Hole, others, Macro-32 on VAX/VMS). Someone from Educational Services had written a driver for the old PC11 8-hole Paper Tape Reader and Punch as an example driver. Unfortunately, if it ran out of paper tape when outputting the blank header or trailer (you had to leave enough blank tape either end to feed the reader properly), then the whole system crashed. Something of an inconvenience if it was supposed to be doing work for 100’s of other users at the same time. I cleaned up the code, fixed the bug and then added extra code to print a message on the header as i’d done earlier in my career. The result was used in several applications to drive printed circuit board, milling and other manufacturing machines which still used paper tape input at that stage.

Stealth Tester, VAX/VMS Space Invaders (British Aerospace, VAX Fortran on VAX/VMS). Not an official project, but one of our contacts at British Aerospace in Filton requested help fixing a number of bugs in his lunchtime project – to implement space invaders to work on VAX/VMS for any user on an attached VT100 terminal. The team (David Foddy, Bob Haycocks and Maurice Wilden) nearly got outed when pouring over a listing when the branch manager (Peter Shelton) walked into the office unexpectedly, though he left seemingly impressed by his employees working so hard to fix a problem with VAX Fortran “for BAE”. Unfortunately, I was the weak link a few days later; the same manager walked into the Computer Room when I was testing the debugged version, but before they’d added the code to escape quickly if the operator tapped control-C on the keyboard. When he looked over my shoulder after seeing me frantically trying to abort something, he was greeted by the Space Invaders Superleague, complete with the pseudonyms of all the testers onboard. Top of that list being Flash Gordon’s Granny (aka Maurice Wilden) and two belonging to Bob Haycocks (Gloria Stitz and Norma Snockers). Fortunately, he saw the funny side!

VMS TP Monitor Journal Restore (Birds Eye Walls, Macro-32 on VAX/VMS). We won an order to supply 17 VAX computers to Birds Eye Walls, nominally for their “Nixdorf Replacement Project”. The system was a TP Monitor that allowed hundreds of telesales agents to take orders for Birds Eye Frozen Peas, other Frozen goods and Walls Ice Cream from retailers – and play the results into their ERP system. I wrote the code that restored the databases from the database journal in the event of a system malfunction, hence minimising downtime.

VMS TP Monitor Test Suite (Birds Eye Walls, Macro-32 and VAX Cobol on VAX/VMS). Having done the database restore code, I was asked to write some test programs to do regression tests on the system as we developed the TP Monitor. Helped it all ship on time and within budget.

VMS Print Symbiont Job Logger (Birds Eye Walls, Macro-32 on VAX/VMS). One of the big scams on the previous system was the occasional double printing of a customer invoice, which doubled as a pick list for the frozen food delivery drivers. If such a thing happened inadvertently or on purpose, it was important to spot the duplicate printing and ensure the delivery driver only received one copy (otherwise they’d be likely to receive two identical pick lists, take away goods and then be tempted to lose one invoice copy; free goods). I had to modify the VMS Print Symbiont (the system print spooler) to add code to log each invoice or pick list printed – and for subsequent audit by other peoples code.

Tape Cracking Utilities (36 Various Situations, Macro-32 on VAX/VMS). After moving into Presales, the usual case was to be handed some Fortran, Cobol or other code on an 800 or 1600bpi Magnetic Tape to port over and benchmark. I ended up being the district (3 offices) expert on reading all sorts of tapes from IBM, ICL and a myriad of other manufacturers systems I built a suite of analysis tools to help work out the data structures on them, and then other Macro-32 code to read the data and put them in a format usable on VAX/VMS systems. The customer code was normally pretty easy to get running and benchmarks timed after that. The usual party trick was to then put the source code through a tool called “PME”, that took the place of the source code debugger and sampled the PC (Program Counter) 50 times per second as the program ran. Once finished, an associated program output a graph showing where the users software was spending all its time; a quick tweak in a small subroutine amongst a mountain of code, and zap – the program ran even faster. PME was productised by author Bert Beander later on, the code becoming what was then known as VAX Performance and Coverage Analyzer – PCA.

Sales Out Reporting System (Datatrieve on VAX/VMS). When drafted into look after our two industrial distributors, I wrote some code that consolidated all the weekly sales out reporting for our terminals and systems businesses (distributors down to resellers that bought through each) and mapped the sales onto the direct account team looking after each end user account that purchased the goods. They got credit for those sales as though they’d made the sales themselves, so they worked really effectively at opening the doors to the routine high volume but low order value fulfilment channels; the whole chain working together really effectively to maximise sales for the company. That allowed the End User Direct Account Teams to focus on the larger opportunities in their accounts.

Bakery Recipe Costing System (GW-Basic on MS-DOS). My father started his own bakery in Tetbury, Gloucestershire, selling up his house in Reading to buy a large 5-storey building (including shopfront) at 21, Long Street there. He then took out sizable loans to pay for an oven, associated craft bakery equipment and shop fittings. I managed to take a lot of the weight off his shoulders when he was originally seeing lots of spend before any likely income, but projecting all his cashflows in a spreadsheet. I then wrote a large GW-Basic application (the listing was longer than our combined living and dining room floors at the time) to maintain all his recipes, including ingredient costs. He then ran the business with a cash float of circa 6% annual income. If it trended higher, then he banked the excess; if it trended lower, he input the latest ingredient costs into the model, which then recalculated the markups on all his finished goods to raise his shop prices. That code, running on a DEC Rainbow PC, lasted over 20 years – after which I recoded it in Excel.

CoeliacPantry e-Commerce Site (Yolanda Cofectionery, predominantly PHP on Red Hat Linux 7.2). My wife and fathers business making bread and cakes for suffers of Coeliac Disease (allergy to the gluten found in wheat products). I built the whole shebang from scratch, learning Linux from a book, then running on a server in Rackshack (later EV1servers) datacentre in Texas, using Apache, MySQL and PHP. Bought Zend Studio to debug the code, and employed GPG to encode passwords and customer credit card details (latter maintained off the server). Over 300 sales transactions, no chargebacks until we had to close the business due to ill-health of our baker.

Volume/Value Business Line Mapping (Computacenter, VBA for Excel, MS-Windows). My Volume Sales part of the UK Software Business was accountable for all sales of software products invoiced for amount under £100,000, or where the order was for a Microsoft SELECT license; one of my peers (and his team of Business Development Managers) focussed on Microsoft Enterprise Agreements or single orders of £100,000 or more. Simple piece of Visual Basic for Applications (VBA) code that classified a software sale based on these criteria, and attributed it to the correct unit.

MongoDB Test Code (self training: Python on OS/X). I did a complete “MongoDB for Python Developers” course having never before used Python, but got to grips with it pretty quickly (it is a lovely language to learn). All my test code for the various exercises in the 6 week course were written in Python. For me, my main fascination was how MongoDB works by mapping it’s database file into the address space above it’s own code, so that the operating systems own paging mechanism does all the heavy lifting. That’s exactly how we implemented Virtual Files for the TP Monitor for Birds Eye Walls back in 1981-2. With that, i’ve come full circle.

Software Enabled (WordPress Network): My latest hack – the Ubuntu Linux Server running Apache, MySQL, PHP and the WordPress Network that you are reading words from right now. It’s based on Digital Ocean servers in Amsterdam – and part of my learning exercise to implement systems using Public Cloud servers. Part of my current exercise trying to simplify the engagement of AWS, Google Cloud Services and more in Enterprise Accounts, just like we did for DECdirect Software way back when. But that’s for another day.