Case Studies and Career Highlights
Here I am just holding a magnifying glass on a few career moments.
Symantec - Project Athena (2018).
Without a doubt my favourite career moment and a huge success which rippled all over symantec worldwide. Champagne was even opened to celebrate this - pictures below!
Project Athena was a huge integration project that Symantec performed to integrate the recently puchased Blue Coat Systems into their existing infrastructure. I was called on from my position in Business to oversee the IT integration regarding the move to the new Salesforce instance, ensuring that everything functioned as intended, and flew to Silicon Valley for several weeks to oversee all of this.
It is important to understand the company hierarchy here. Although a part of business, my team - Licensing - was very tech heavy and we looked after our own code, keeping it away from external IT departments and all close to us. Licensing was always a part of Business and not IT due to our close ties with what the business required.
The initial requirement was to spec out all the points that our systems reached into the systems run by IT - largely Salesforce as the ultimate source of truth. During the actual release I sat with IT to do smoke testing and ensure everything ran smoothly.
One example of what we had to check was that we used to send out cold standby units so in the event of an issue with an appliance the customer could just swap out an old unit for a new one. The cold standby had its own serial number and was not immediately licensable so we implemented a feature where all the active components from the faulty appliance could be transferred to a cold standby and the serial numbers would swap over. This had to happen in our systems but also be mirrored in the salesforce database. As Symantecs salesforce worked in a completely different way we had new code to sync between them. We had to test this firstly in the test environment - this was a complete environment with a duplicate salesforce, duplicate licensing servers, duplicate subscription download servers, etc. This also had to be smoke tested at release time so I had to sync with the Salesforce team and the subscription download team for example.
I also had to write documentation to be given out to customer services so our staff would know how to assist customers in the event of any issues going forward. License swap was one part of a large collection of services that we provided. Our seven servers included a validation server which appliances would call to hourly to ensure they were allowed to be running, There were various services for issuing SSL certificates as all our authentication from appliances used these certificates as part of a wider trust package. Load balancers fronted all our servers, themselves run by another team so we had to sync up with that team as well.
Specifically I sat with IT throughout the whole time which took place over several weeks with one core release weekend at head office. It was hard work but great times were had and due to how closely we were working, lifetime friends were made who I am still in touch with many years later. We even cracked open a bottle of champagne upon successful completion - yes that's me opening it!

Master of celebrations!

And a huge celebration after weeks of little sleep and a very intense weekend!
A lot of meals out were had with core members of the teams:






This was by far my greatest achievement and although I haven't focussed on technical detail here, my name was suddenly known in every office worldwide. Its an experience which was hard work but is very fondly remembered.
Symantec gets purchased by Broadcom - here we go again!
One thing that changed after we were purchased by Broadcom is that they wanted to sell our services in a very different way. Rather than selling single appliances they wanted to sell bundles of products including appliances and software. This changed how the appliance validation worked dramatically. Serial numbers always used to be unique, however Broadcom introduced a bundles system where a serial number could contain a whole number of appliances and subscriptions, and they were monitored by metrics such as number of cores over the total system rather than per appliance. Rather than buying 4 appliances the end user might purchase 64 cores to be used over an unspecified number of appliances. Validation previously worked on a token based authentication system where appliances would swap secure tokens with us so we would know they were who they said they were. If we got more calls hourly than expected we'd know they'd been duplicated and could shut them off, now this was not the case. I implemented a new system based on unique appliance identifiers instead and had to work with the appliance software teams to implement this. The new validation would read data sent by the appliances themselves regarding how many cores they had and these could be aggregated over various periods of time. We could then push warning messages to the appliances if they had gone over or were coming close. I implemented thresholds whereby appliances could go over a percentage of what they had purchased allowing them time to track down and turn off older appliances. I had to implement reporting both internally and to the customer for how many cores they had running together with their IP addresses and unique identifiers.
This created a number of issues - all of our internal reporting had to be re-written. SQL queries which were previously fairly simple suddenly became multi-tier stacked sub-queries which I was tasked with writing.
This was one of my last jobs with Broadcom in May 2025.
Delerium Music - Building an e-commerce site and ERP solution from scratch!
This is where my career started. The company had been selling online via a downloadable zipped text file which customers could download and email in orders to us. This went live in 1994 before my time. In 1997 when I joined nobody knew anything about selling online and I was the one who originally identified the issue. I wrote a basic shopping cart application in Perl - again using text files - and demonstrated it to the owner who wanted me to take it further. Over the next ten years this grew to a fully fledged e-commerce system providing a search system, cross-categorisation of product into over 100 genres of music, pre-order system, wishlist, all written by myself from scratch. Of course we needed easy ways to flag product for special promotion in places such as the front page etc. The postage calculator was extremely powerful. It dealt with taking orders of various different types of product including items in stock, pre-orders, out of stock and due in on X date etc, and would calculate costs for multiple packages based on dates product was due in allowing customers to split orders up how they liked. Many customers were happy to wait for product to come in before an entire order was shipped to minimise postage which could get very expensive with heavy vinyl releases. Others wanted things sent as they came and were happy to pay whatever the shipping charges were. We were very specialist and tailored to customer demand back then.
Over the years this grew into an enormous system. It was integrated with the in house MS access database which I later inherited, which was able to automatically create order screens from text file data which could be imported together with producing printable invoices and managing stock control. Other areas of this database included producing royalty statements for artists on the label. It was an entire ERP system and shopping cart solution in one managing everything from customer data to automatically ordering product from suppliers when shipping targets were realised.
Somewhat in contrast to what people expect, I built and ran this entire system on my own - even down to creating the logo in photoshop - other than back and forth with management all the code was mine and from scratch. It was a huge success and the web site was even reviewed in Record Collector magazine over a 4 page article they thought it was so good! We were regularly featured in the press - the Guardian were also big fans. It was a very cutting edge web site. The categorisation of music product into defined niche genres was also my idea - one that no other company had done at the time - but everybody copied!
Also in contrast to what people expect, I was able to keep this going as a contract and work in other places. For a major e-commerce site - we were directly competing with the likes of Amazon for example, who even reached out to us on many occasions trying to get us to list our product on their site (to which we said NO every time!) - to be created by one person who isn't even full time, well this was a sign of the times. It was easy back then. Of course after this I'd work for companies producing far less technicality with a lot more people - front end team, back end team, designer, etc. It was a feat for which I retain a great sense of achievement.
GoHentry - Hiring a team and moving a banking appliation in-house
In 2013 I became technical team leader for GoHenry, tasked with hiring a team and pulling all the web development in-house from a third party software house.
This was my first time hiring people directly. Initially the front end was handed to me to work on and allow me to become familiar with how all the tech worked. The third party was on hand to answer questions as I wished and went down to their offices for a coujple of days while they explained the architecture to me.
Once I had gained good understanding of the systems, the next thing to do was write out some technical questions covering the sort of things we needed, and get advertising. My no.1 technical question - the first one I asked - had the greatest impact. I thought this was quite a simple question - 'How do you validate an email address'. I swiftly became amazed at the number of people who could not provide a satisfactory answer to this, or even take a stab at it. I would have thought that the terms 'regular expression' or 'pattern matching' might have figured in a response. Even some kind of vague stab such as 'it needs to have an @ sign in it' would have been good. I was quite taken aback by this. Thankfully in time we did find the right people but after a lot of searching! I found an expert PHP Zend1.1 guy who was hired immediately and a great front end programmer too, and with myself spanning the two everything was pulled in house over the next few months. I saw the company go from a few hundred customers up to 100,000 over the course of the next year. From then they have gone from strength to strength and it's been a pleasure to watch them grow. Unfortunately the commute times (up to 2.5hours each way every day) became unfeasible for me long term and would have meant relocation for myself and pack of dogs into London which I was not able to do at the time, but this was a fantastic and memorable experience.
Interesting quirks: Using javascript to run a banking front end provided a unique set of challenges. 0.1+0.2 does NOT equal 0.3 in Jasvascript as I knew! I wrote a custom libary of functions and made sure that everything was passed through these functions for validation. One interesting bug came from a drop down list of months where 08 got turned into Octal, making us wonder why nobody who signed up was born in August! A move to Typescript happened shortly after.
Gonzo Multimedia - A 'fuzzy' search function
This was a web site I built when working for Paragon Digital. They wanted their search functionality to be vastly improved so user input errors could be taken into account..
After some research I implemented something far more complicated than I'd done before using the Jaro-Winkler function. As this needed to query a database this function was implemented as a stored procedure in MySQL which could be called from the PHP back end. Essentially it provided a 'match distance' so fuzzy matches could be taken into account and hopefully deal with spelling errors in user input, which it did. Using some extra PHP code I was able to provide exact results, followed by close results. Even this wasn't so simple. If there were no results with the exact string I would default to the fuzzy matches straight away. This I'm pleased to say cleared up all the issues. I have not looked back at this code in a long time, but I did store it on github here: https://github.com/matt-platts/jaro-winkler-search-functions