Do you remember when you were at school or university and you had some work to do that wouldn't be graded? You probably weren't very motivated to do it and maybe you didn't even bother (tut tut, shame on you). Compare that relaxed style of working to pre-exam revision or the frenzied typing of your dissertation, I bet there is a noticeable difference.
If you have a deadline and a third party to hold you accountable and review your work (in most cases the client), whether you like it or not you are far more likely to complete that task. Quite often I have a desire to learn something new but lack the time and/or drive to actually get on with it! Occasionally i'll bite the bullet and take on a project requiring skills I either don't possess or need to strengthen. By taking on a project I can't slack, take forever or give up when things get difficult.
If, like me, you want to learn a new skill but keep putting it off having a deadline can be a great way of learning.
I used this method of learning for a recent (and ongoing) project I have started for Quadra's very own Ping Ho and her parents, who run Jersey's longest running Chinese takeaway, Kowloon.
Kowloon, has been running for 35 years and i'm pretty sure they still use the same process for taking and fulfilling orders today as they did then! Until recently they didn't have a website or any kind of ordering system other than a pen and a note pad. The project started as a learning exercise for Ping to gain some HTML and CSS skills and soon morphed into a bigger project which included a simple website combined with a 'simple' (if only) ordering system and some SEO work thrown in for good measure.
The project is very close to being finished and hopefully, by the time this post is published, the first phase of the customer facing website should be live and accessible at http://www.kowloonjersey.com*. The second phase is to allow customers to order and pay online.
*Disclaimer: I am a developer not a designer! I i'll be the first to admit that the site design is at best 'amateurish' and we'll be looking to re-skin the site soon. Using an iterative design process means user feedback will play an essential role in creating a beautiful and usable system (also this project has started to drag on so for the sake of my sanity, I needed it to be live)!
Part of the ordering system build has involved the use of an 'Internet of Things' printer which sits in the kitchen and prints off new orders as they are placed. This was the main element of the project which required some major learning on my part. There was also a degree of learning for me in the set up of a number of Google services for the benefits of SEO.
So, what did I learn and how did I do it?
Despite having a decent working knowledge of Linux from my day to day use of it when working with web servers, I only really know what I need to know and wouldn't say I was an expert. Despite having a few of them in the office this was the first time I had ever used a Raspberry Pi for anything! The thermal receipt printer kit I had purchased from Adafruit (via UK distributor ModMyPi) uses a Raspberry Pi with a mini USB wireless dongle to connect the printer to the internet and become part of the 'Internet of Things'.
Some notable things I learnt when setting the Pi up includes the origin of the name 'Occidentalis' (the software I installed on the Pi), it comes from the Latin name for raspberry, 'Rubus Occidentalis'1, I also learnt how to configure a few essential system settings using the raspi-config tool. Perhaps the most interesting thing I learnt was how to configure the Pi to connect to a specific wireless network without using a GUI.
I also had to learn a little about the Pi itself and all of it's components, peripheral ports and layout. Finally I had a crash course in soldering as a number of the components of the printer kit such as the power supply input, push button and printer data cables needed to be soldered to the Pi. The above image shows what you get in the box which then needs to be assembled.
The Pi provides instructions to the Printer using a programming language called 'Python' (a very commonly used language when working with Raspberry Pi's and where the 'Pi' in its name comes from).2 Having never written a single line of Python before, this was a little daunting but, as I have highlighted, this learning method is tough and I had no choice but to get stuck in.
I looked through the example code which Adafruit provides with the printer and read all the comments and documentation in the code. This all made sense to me (at a high level at least) but getting the gist and actually writing scripts yourself are very different. I went in search of some resources to teach myself Python and found http://learnpython.org/ (if ever there was a domain that does what it says on the tin, this is it.) It offers interactive tutorials and you learn by doing, give it a go and you'll be writing simple Python within a few minutes.
I have worked through the 'Basic' sections of the tutorials so far and have made a start on my scripts. Eventually the printer will...
- Make requests to my simple web service, using HTTP Basic authentication, and retrieve data about newly placed orders which are yet to be printed
- Pass some information back to the web service once the order has been printed to mark it as such (so it does not get printed again and again)
- Store the last 'batch' of orders to be printed so they can be re-printed when the push button on the case is tapped (for use when printing errors occur)
- Print a summary of all orders which have been printed (i.e. a tally of orders and the total takings) just before the printer shuts down
I am still working on this element of the project and will be returning to complete the 'advanced' topics and finish off my scripts once the customer facing elements of the project have been finalised and are live.
I have a pretty good handle on what can be beneficial for SEO in terms of what designers and web developers like myself can do but I had limited experience with setting up and managing Google's SEO tools to increase visibility.
For this project I have learnt about the benefits of the following Google tools and how to set them up and configure them optimally:
- Google Search Console (Previously Google Web Master Tools) - This service ensures Google is indexing (or not indexing) the relevant sections of your site and can prevent potential pitfalls which may cause your page rankings to suffer like duplicate content, markup errors, lack of a sitemap or robots.txt files etc
- Google My Business (and Google+) - Very useful for local search optimisation, this tool is the current iteration of what was Google Places and it allows you to have your business listed on Google Maps. It also lets you provide useful information to potential customers which they can see in the SERP's for your site, and entice them into visiting, such as location, opening times and customer reviews. You can identify your business type and the areas in which you operate so that Google can target the appropriate audiences for you. This ties in with the Google Knowledge Graph and Structured Data, both of which allow you to customise what is presented to the customer in your SERP's and Knowledge Graph Card's (the business 'card' shown on the right hand side of search results when the business closely matches the query).
- Google Tag Manager (and Google Analytics) - I have worked with GTM and GA a number of times before, but it is always good to refresh my memory. Currently I have only set up Tag Manager to send a page view event to my Universal Analytics account on each page load but I will be looking into tracking some key user interactions on the site in order to identify potential improvements to the UI and UX. I'll also decide on which features customers use most and therefore where my next development efforts would be best focused.
If you are someone who never seems to be able to make the time to learn something new, or you put the 'pro' in procrastination and need a reason to finish what you started, then jumping in at the deep end could be a great way to better commit to your goals.
Start small and pre-warn your 'client' that you will be working outside your comfort zone, you don't want to get in a situation where you have promised something way outside of your ability and are unable to deliver, especially if the client believes you are already proficient in this area.
This technique is a sure fire way to gain new skills within a set time frame, it might mean some late nights and stress, but it will be worth it when you see the finished product!
Thanks & References
A quick shout out to:
- Phillip Burgess for the excellent and comprehensive set up tutorial for the Pi & Printer Kit
- My good friend James Du Heaume. A post-grad of 'Industrial Design' at Brunel University, London who, in exchange for a chicken wrap and a Jägerbomb spent an afternoon helping me solder the Pi and Printer and assemble the casing
- Quadra's very own Digital Marketing Analyst and general go to SEO guy Callum Alexandre for some pointers and guidance on my Google Search Console set up
1 Adafruit - https://learn.adafruit.com/adafruit-raspberry-pi-lesson-1-preparing-and-sd-card-for-your-raspberry-pi/downloading-an-image
2 Eben Upton (Raspberry Pi founder) - http://www.techspot.com/article/531-eben-upton-interview/