Thursday, 7 November 2019

What I Learned Shipping My First Commercial Project


Introduction to Decoupage Dreams

My grandma is a master of crafting. For the past ten years she’s created thousands of cards, extravagant, minimalist, and vintage among other themes, even profiting along the way by selling her products at low-scale to local stores. Last year she decided to massively expand operations into a full business called Decoupage Dreams, which in addition to cards/stationery would sell a full venue decoration service, targeted primarily at weddings but also corporate events.

"Based in Lancashire UK, Decoupage Dreams provides bespoke wedding stationery and venue dressing services in our local community and beyond."

For the past year she’s been building up the business, gaining her first customers, building up a huge inventory/warehouse of products as well as professional development, going to networking conferences and teaming up with business partners.

Seven months ago I started helping out by attending ‘wedding fayres’ with her, something I never even knew existed. Businesses from all across the local area travel to these fayres, setting up booths to show off their wares to prospective clients to-be-wed, namely the bride. As well as attending some networking events, I also did a couple of photography projects some of which was published in a magazine advert, namely Morecambe’s Local Choice.

Around two months ago I started to have ideas about improving the business’ online presence. My grandma’s not tech savvy, so the Decoupage Dreams’s web/social media otulets have suffered quite a bit. With approval, I set about updating social media profiles as well as registering for tools like Google My Business - which gained us a prominent card when somebody in the local area Google’s for us. This helped bring people to the site after they’d seen our work at wedding fayres.

I also started working on a full-scale redesign of the website in the background - the current version was a WordPress installation severely lacking in content. I aimed to change that.

Ship (Something Reasonable) Fairly Quickly

Within an hour I had a basic skeleton app running, with continuous deployment on commit to repo. Within a day I’d designed a reasonable single-page website which contained all the information from the old version (not a lot) and by the end of that day the DNS servers pointing to the new version and the old infrastructure being turned down.

One interesting thing to note was that I used Google Sheets as backing store for form submissions - inquiries are sent there, and email notifications are fanned out from there, allowing action to be taken on new leads. Since we were already G Suite customers, this meant I could avoid paying extra for a database just host a stateless web server.

Here's the script I built:

Measure And Iterate

With any reasonably critical project, it’s important to not break things. It’s also important to gain insight into your audience and their use of your site. Setting up client-side instrumentation allowed me to measure metrics such as page views, time on site and bounce rate. I knew what the old website’s conversion rate was going at (anemic by any standard) so used that as a baseline comparison. I also had regular performance measurement using Lighthouse, an open-source tool for improving the quality of web pages.

Since it’s summer and wedding season is coming (usually around June to September) I wanted whatever was out there to be beautiful and functional, even if not fully featured with lots of content. It might not be the best, but it’s better than an under construction page.

Lighthouse allows me to measure page quality across four dimensions: performance, SEO, accessibility and ‘best practices’. Making this tool part of my regular testing/CI cycle meant I could avoid shipping a worse version of the site - even though the chances of a degraded experience really affecting the business, I wanted to keep pride in my work and not deploy garbage to the open web.

Set Your Goals

Ideally, every page on your site should have one goal in mind:

Landing Pages shouldn’t just generate leads, but "qualified" leads. People who are actually going to turn into customers. Now I’m no expert in managing this, but I think I’ve done a decent alternative here, by asking potential customers what their budget is, allowing my grandma to decide if it’s worthwhile following up on.

View the final page at

Your Homepage should be designed to get people to the information on your business that they need as quickly as possible. Chances are any visits to the home page will be a response to non-internet-based advertising so you have to be careful not to leak visitors here.

My response to this was to put the three primary business verticals occasions, weddings and corporate events front and centre in three cards. Since direct visits may also indicate general interest in our company, a secondary goal for the homepage was to give easy access to contact us.

The primary CTA was a large button labelled "Make An Inquiry".

I’m a big fan of the floating action button pattern from material design, so I also added a FAB in the bottom right for easy access to phone us. This button only shows up in the daytime.


  • Message match for your landing pages: If your users click on an ad then the landing page must be a continuation of that experience.
  • Have one goal per page and write a strong call to action to achieve that.
  • Photography is key. It draws attention, showcases your products and is what makes a website truly beautiful.
  • Performance is no joke - your users will thank you by becoming customers. Poor performance means they’ll never become customers.
  • Know F-pattern for desktop readers and put your CTA in it. On mobile - stick to single column layouts. Don’t be afraid to make your buttons big and bright to draw attention.
  • Serverless is incredibly useful if you want a zero maintenance/scale to zero product. I might regret my words in a few years if something breaks - but hopefully it doesn’t all fall over.

Monday, 1 July 2019

Medium: A Failed Experiment

Medium has failed.

Back when Ev Williams, co-founder of Twitter, announced the project, he defined the company’s mission along the lines of these three goals:

  1. Medium lets you focus on your words
  2. Medium is collaborative
  3. Medium helps you find your audience
A recent article by The New York Times discussed what happened with Evernote, another Silicon Valley unicorn which has struggled to find footing. Evernote is wildly successful by some metrics, with nearly 225 million users and over 8 billion notes working on its platform. Evernote has had a wild ride since it was founded nearly 15 years ago, with four CEOs, rounds of layoffs and offices shuttering. It’s a tool that many use, solves a real problem, but does not monetise into a billion dollar company, but would run well as 'just' a multi-million dollar company.

By accepting venture capital, Medium has exposed itself to the same type of pressures that Evernote faced - a huge IPO/exit. Like Evernote, Medium is relatively successful, with over 7.5 million posts written in 2016, yet after trying many different business models, clearly it’s been struggling to monetise.

After realising they couldn’t indefinitely burn VC cash, they decided to forgo their original commitment to being advertiser-free and got into ad business to help creators monetise, however they quickly ditched the idea calling the digital ad system "broken". After pivoting to subscription memberships, hopefully they’re more stable now, however I do have my doubts that subscriptions can scale to the level of exit they need. Time will tell.

Because of this, user experience across Medium has demonstrably suffered, with pop-ups and banner ads pushing users to purchase a subscription, something Google frowns upon on mobile.

Maybe Medium is a more sustainable business now - I hope so, it has done many things right and deserves success. But one thing is sure, the UX is getting worse by the day, more content is getting paywalled, and they’ve shown over and over they’re willing to sacrifice the principles they were founded upon to monetise.

So I do have my doubts.

Sunday, 23 June 2019

Keep An Idea Bin

Like most people I have way too many ideas: things I want to learn, stuff I want to do or programming ideas & concepts to implement. One of my principles is that I always iterate on everything in my life - things are not perfect, but working on them little by little is progress.

Ideas are very much the same - and they’re fleeting. Many times I had ideas which I regretted never writing down, and I’m sure you’ve all had this too. So that’s what I did. For the last three years, I’ve written down and categorised every single useful idea I’ve had on Google Keep, i.e. the 'idea bin'.

By coming back to these thoughts daily, I can work on the good ones and chuck away (i.e. archive, never delete) the others.

A few rules for this system:

  • When I think of something new, I write it down immediately
  • I try not to think too much about the taxonomy of the thought - I’ll just write down some free-form text - everything can be cleaned up later anyway
  • Neutral: I write down the good or bad ideas as both have value - this way, both good and bad thoughts can be studied
  • Archive, never delete
  • For a brand new thought, I’ll completely avoid researching it until I’m confident I’ve reached the bound of my own creativity - I’ve found that by Googling an idea, you lock yourself into the model of what you find - it's far easier to be mentally creative without seeing somebody else’s rendition
  • Whenever I have some spare time such as walking home, I’ll make good use of otherwise ‘dead time’ and iterate, refine & categorise my notes

In many ways doing this has brought some semblance of order to my life. I tend to be quite disorderly in many ways, but doing this has at least given me back control over the chaos of my own thoughts, which ultimately, is progress.

Saturday, 22 June 2019

I Got A Software Engineering Apprenticeship @ Google (London)

What are Apprenticeships?

So now I’ve had a fair few weeks to recollect, I decided to write this post about how I went for an apprenticeship at Google and got the job. Apprenticeships are relatively new to Google, so the information online was scarce, and I myself am (obviously) inexperienced with this stuff. My goal with this article is to explain what I learned along the way.

First, some context: Last December I was preparing my UCAS application for University. Having spent weeks fussing minutiae of my cover letter, I'd completely lost sight of the bigger picture. I chose my unis, paid the fee, and sent it off thinking I was done with further education until late next year. Looking back, I never properly reflected on my choice. I decided to spend a couple weeks looking at apprenticeships.

Some helpful resources:

Resource URL Apprenticeship Overview Apprenticeship Search
Not Going To Uni

For those who are unaware, or not from the UK, apprenticeships are an alternative to university where a student’s learning is sponsored by a company. As well as working at the company, they spend time at a learning institution. Hopefully under this model, students can gain theoretical and practical skills whereas university does not have the work element. They’re usually balanced around 80% of time for work and 20% of time dedicated to study.

It’s really an individual thing, but I feel that what I really need is practical experience. I know the basics and I want to get out there and make mistakes and learn hands-on.

Long story short, I applied for a place at Amazon, BBC and Google - two companies and one public broadcaster, all of which I’ve heard good things about engineering-wise. Any one of these companies would have provided me the valuable skills & experience I need for the future.

First Contact with Googlers

Fast forward a couple of weeks and I find myself behind a 45 minute phone-screen with a Google Employee from Zurich. Because I could be rejected at any stage, I made the best effort to learn as much as I could from the experience.

Something obvious but useful: The interviewer can’t see what’s in front of you on a phone call. I had sprawling pages of A4 documents on every scrap of data I could gather about Google’s culture, various facts on the software development industry and stories about previous things I’ve done demonstrating the characteristics I felt they were screening for. I can’t express how helpful this was.

The next stage was a technical interview on Hangouts & Docs - the dreaded whiteboard stage. There’s plenty of data out there on Google interviews, but not for apprentices. I made a few assumptions at what they think the limits of my CS knowledge would’ve been and prepared accordingly. When solving problems, I made sure to speak aloud and express my thoughts. The interviewer was friendly, guided me through the process and made time to answer my questions at the end. On the whole, a very positive experience.

Interview Project

An interesting aspect of the application is that I was given a software project to go and complete from a couple of options. You can check out the code on GitHub here:

The Trip To London: On-Site Interview

The on-site interview in London was the best part of the whole journey. I’ve never lived in a city nor have I travelled so far alone so I made sure to make the best of the day by visiting a relative and exploring.
I woke up at 5:00 AM, hopped on a train from Lancaster to London and arrived at Google’s Kings Cross office just in time.

I’d spent the previous few months working on my Grandma’s business, Decoupage Dreams during which I developed many skills that helped with my interview. As well as having to sell my ideas to improve things, I’d also had the opportunity to visit several networking events, further putting me outside of my comfort zone. I believe made the most impact in developing the confidence I needed for the day.

Getting The Offer

The office was awesome, and everything you’d expect from a modern tech company. Although I wasn’t feeling very hungry on the day (thanks to a sizable train breakfast), I did appreciate the offer of food.

So, a few weeks later I got a phone call telling me about the good news. And having had the time to think about it, I couldn't have wanted any alternative option for the future. The opportunity to work in a culture like Google’s, and moving out to London, will undoubtedly give me many life lessons beyond being an engineer.

I’m excited.

Saturday, 15 June 2019

Aannd that's a wrap! My A-Levels are officially over. Time to kick back and relax for a few days. Up next, I'll be working on the website for my Grandma's wedding business. You can check out the current version here. I'm hoping to pick up some new skills on marketing and advertising. I'll also be writing about my experiences in the coming months.

Monday, 13 May 2019

Next week marks the beginning of A-Level exams. Good luck to everybody out there in the same boat!

Saturday, 13 April 2019

For the past few months, I’ve been going through the application process for Google’s Software Development Apprenticeship programme in London, and today I finally heard back: I got in! Very excited to meet my future colleagues towards the end of the year and see what I’ll be working on.