I have completed the Google Cloud Platform Fundamentals: Core Infrastructure certification!

This month I have begun my cloud computing journey by completing the Google Cloud Platform Fundamentals: Core Infrastructure certification to give myself an introduction to important concepts, terminology and processes for working with Google Cloud Platform.

This course involved the computing and storage services available in Google Cloud Platform, including Google App Engine, Google Compute Engine, Google Kubernetes Engine, Google Cloud Storage, Google Cloud SQL, and BigQuery. As well as important resource and policy management tools, such as the Google Cloud Resource Manager hierarchy and Google Cloud Identity and Access Management.



I have achieved 100% on my dissertation!

I feel incredibly proud to announce that my dissertation/final year project for my BSc (Hons) Computer Science has been awarded 100/100 marks (subject to exam board confirmation), with feedback from academics including “the best L3 project and report of all my years as an academic”, “a highly impressive piece of work that exceeds any reasonable expectations for an undergraduate project”, “an excellent undergraduate piece of work, that could conceivably be developed further to institute real impact” and “by far the most comprehensive and insightful review in the domain of interest comparable to a doctoral dissertation literature review.“

My project entitled “Using Artificial Intelligence and Machine Learning to improve the Glycaemic Control of Insulin Dependent Type 1 Diabetics” involved demonstrating 5 different techniques and methods of artificial intelligence and machine learning that could be used to support a Type 1 Diabetic patient in managing their condition. This was presented to the patient through an API built in Node.js, Express and MongoDB and a mobile application built in Ionic 3.

Overall, this project was an incredible opportunity, and the challenges that it posed really pushed me to achieve my best work and I’m incredible proud of the final outcome and grade!

Officially certified as a Microsoft Technology Associate in HTML5 Application Development Fundamentals!

Pleased to say a few weeks ago I undertook the exam and achieved my Microsoft  Technology Associate certification in HTML5 Web Application Development.

This certification taught and tested the following skills:

  • Understanding the platform fundamentals
    • Packaging and the runtime environment: app package, app container, credentials/permission sets, host process, leverage existing HTML5 skills and content for slate/tablet applications
  • Managing the state of an application
    • Managing session state, app state and persist state information; understanding states of an application; understanding the differences between local and session storage
  • Debugging and testing a HTML5-based, touch-enabled application
    • Touch gestures; understanding which gestures you test on a device
  • Choosing and configuring HTML5 tags to display text content
  • Choosing and configuring HTML5 tags to display graphics
    • When, why and how to use Canvas; when, why and how to use scalable vector graphics (SVG)
  • Choosing and configuring HTML5 tags to play media
    • Video and audio tags
  • Choosing and configuring HTML5 tags to organise content and forms
    • Tables, lists, sections; semantic HTML
  • Choosing and configuring HTML5 tags for input and validation
  • Understanding the core CSS concepts
    • Separating presentation from content (create content with HTML and style content with CSS); managing content flow (inline versus block flow); managing positioning of individual elements( float versus absolute positioning); managing content overflow (scrolling, visible and hidden); basic CSS styling
  • Arranging UI content by using CSS
    • Using flexible box and grid layouts to establish content alignment, direction and orientation; proportional scaling and use of “free scale” for elements within a flexible box or grid; ordering and arranging content; concepts for using flex box for simple layouts and grid for complex layouts; grid content properties for rows and columns; using application templates
  • Managing the flow of text content by using CSS
    • Regions and using regions to flow text content between multiple sections (content source, content container, dynamic flow, flow-into, flow-from, msRegionUpdate, msRegionOverflow, msGetRegionContent); columns and hyphenation and using these CSS settings to optimise the readability of text; using “positioned floats” to create text flow around a floating object
  • Managing the graphical interface by using CSS
    • Graphics effects (rounded edges, shadows, transparency, background gradients, typography and Web Open Font Format); two-dimensional (2-D) and three-dimensional (3-D) transformations (translate, scale, rotate, skew and 3-D perspective transitions and animations); SVG filter effects; Canvas
  • Managing and maintaining JavaScript
    • Creating and using functions; jQuery and other third-party libraries
  • Updating the UI by using JavaScript
    • Locating/accessing elements; listening and responding to events; showing and hiding elements; updating the content of elements; adding elements
  • Coding animations by using JavaScript
    • Using animation; manipulating the canvas; working with images, shapes and other graphics
  • Accessing data by using JavaScript
    • Sending and receiving data; transmitting complex objects and parsing; loading and saving files; App Cache; datatypes; forms; cookies; localStorage
  • Responding to the touch interface
    • Gestures, how to capture and respond to gestures
  • Code additional HTML5 APIs
    • GeoLocation, Web Workers, WebSocket; File API
  • Accessing device and operating system resources
    • In- memory resources, such as contact lists and calendar; hardware capabilities, such as GPS, accelerometer and camera

The skills learned through completing this certification, built on the skills gained during my year-long industrial placement in web development. Ultimately increasing my interest in web applications development and the development of micro-services and APIs.

Overall, the certification has provided me with a wide range of new skills that I can apply to a range of different applications and platforms, ranging from back-end services to cross-platform mobile apps and progressive web apps.

Find out more about the certification here

My weekend at Lincoln Hack 2018, featuring websockets, pixelated Lancaster Bombers and winning 24 cans of Red Bull

Hackathons are an absolutely brilliant way to improve skills, meet and talk with like-minded individuals and experiment with all the random/quirky/unimaginable/silly tech ideas that you could ever dream of. Whether it’s hacking together various bits of hardware to build something bigger, mashing up APIs with other APIs to create swarms of meaningful data, or simple exploring a brand new technology to create something new and applicable in the real world, you’ll definitely find it at a Hackathon. If someone has an idea, then developers + coffee + no sleep for 24 hours is an equation that will make it possible.

I spent this weekend at Lincoln Hack 2018, a Hackathon run by Digital Lincoln; a local group which brings together a diverse range of people with an interest in digital technology and the online world. I entered the “freestyle” challenge, with the primary requirement being that the hack had to be somehow related to Lincoln.

The idea

My idea for the Hack was to create an interactive game, which could be played across multiple mobile phones that were positioned next to each other in a row. This game would involve holding and releasing a button on a master device to keep some object in the air and avoid hitting the bottom or top of the screen, then once the object has made its way to the end of one phone screen it would then move onto the next phone’s screen, and so forth. My hope was this game could be played across 20+ phones. Easy right…


Lincolnshire has a great RAF heritage, with a high number of the UK’s most prominent RAF bases being located in and around Lincolnshire. With the 617 squadron, famous for being involved in the Dambusters Raid, being formed at RAF Scampton; an RAF base roughly only 5 miles away from where the Hackathon was taking place.

Therefore, I decided to give my game a Dambusters theme. There’d be a little introduction about Lincoln’s 617 squadron, then the object the user would keep in the air would be a Lancaster Bomber, and each mobile phone would be labelled with the name of a location that was on the route in the Dambusters operation. A score would increment to add an edge of competition to the game.


Socket.IO (a popular JavaScript library for building real-time web applications) was something that I’d been wanting to get into for a while, so when it came to choosing a technology I’d use to communicate between the devices, it was the clear winner. This would run off of a Node.js + Express server. I’d style the application up and create my sprite animations of the plane using LESS, and manipulate the DOM with JQuery. I’d also use Nodemon so I wouldn’t have to restart the Node.js server upon every change.


The build went quite well! Socket.IO worked really great, and the pixel-style 8-bit artwork of the application looked good too. Overall I was pleased with what I’d built. I even won 24 cans of red bull, being awarded the “Best use of 4 £1000 iPhones” award! However there were a number of issues, as detailed below.

Snapshot of the game in action


One of the main challenges I faced in building this was how to move each pixel on the screen in such a way that was seamless, transitioned well and could easily be communicated across to other devices via Socket.IO. Initially I implemented this using JavaScript’s setInterval() function which repeatedly increased the x-position and y-position of the object until the interval was cleared. Although this looked good and transitioned well, it could maybe have functioned better, as inter-screen transitions could sometimes be a bit jittery and there were often issues with the collision detection in the game.

Another challenge was born out of the need for the phones to move the object across a portrait screen that was in the real-world actually set as landscape mode, I initially did this through increasing the object’s position from the top of the screen, rather than the left, to appear as moving sideways when presented on a landscape device, again this could have maybe been done better, and maybe ensuring the game was only playable in landscape mode would have made things easier; as every calculation done had to take into consideration that the game would actually be played rotated by 90 degrees.

The most difficult challenge in this Hackathon project was in communicating between server and all the mobile screens in such a way that was quick, efficient and appeared seamless to the player. A number of things had to be taken into consideration in the communications, including emitting the last known x and y positions of the plane from each device back to the server and then back out to the next device along, as well as working out which particular device in the row to move onto. However this was made a bit easier by Socket.IO’s socket.broadcast.to(client_id).emit(); function which allows you to communicate with an individual client (device) via its ID, as well as the socket.broadcast.emit() which allowed me to broadcast a message to all devices connected except for the sender.


Using a new technology such as Socket.IO was quite challenging to begin with, however it quickly became apparent how powerful this technology is. Being able to communicate between devices in real-time is a feature could be implemented across such a wide variety of applications in a huge number of contexts, from real-time chat/messaging web applications to real-time interactive games like this project, there’s such a huge potential of things that can be achieved by using this technology. Socket.IO is definitely a technology that I’ll be building more projects with and looking into in more depth!

Overall, a successful and fun Hackathon, with a nice exposure to yet another interesting and new technology. Many lessons were learnt and many bugs were fixed (and created). If you’re in the technology industry, or just simply looking to get started in it, Hackathons are such a great way of mingling and working with like-minded developers, designers, students, entrepreneurs, hobbyists and tech addicts in an incredibly fun yet productive manner.

Won 24 cans of Red Bull!

How to build an Geolocation Weather Forecast app in React Native in 30 minutes

Part 2 of my “Let’s Build” series of blog posts has arrived, with a new  guide on “How to build an Geolocation Weather Forecast app in React Native in 30 minutes”.


This is a follow up guide to part 1 of the series entitled “How to build an image recognition app in React Native in 30 minutes” which can be found here

Feel free to take a look and any feedback is appreciated! https://dev.to/andrewsmith1996/how-to-build-an-geolocation-weather-forecast-app-in-react-native-in-30-minutes-1kmo

GitHub: https://github.com/andrewsmith1996/geolocationWeatherReactNative

Portfolio: https://andrewsmithdeveloper.com

How to build an image recognition app in React Native in 30 minutes

As part of a new “Let’s Build” series of blog posts, I’ve published a guide on “How to build an image recognition app in React Native in 30 minutes”.

For a few months now I’ve been fascinated by React Native, and having already done some development in the Ionic framework I was excited by how well an app that renders through native components rather than a webview performs.

Feel free to take a look and any feedback is appreciated! https://lnkd.in/dMujXCw

GitHub: https://github.com/andrewsmith1996/Image-Recogition-React-Native

Portfolio: https://andrewsmithdeveloper.com

Presenting an award at the 2018 Lincolnshire Technology & Innovation Awards! (and why you need to leave your comfort zone)

A couple of weeks ago I was asked if I wanted to present an award at the 2018 Lincolnshire Technology & Innovation Awards, an annual event that took place at the Lincolnshire Showground during a jam packed Lincolnshire Tech week that recognised the achievements, contributions and innovations of both new and established technology businesses across Greater Lincolnshire.

Now I’m a firm believer that growth only really happens when you step out of your comfort zone and take opportunities that initially seem daunting and intimidating, so naturally I said yes.

After all, besides potentially embarrassing myself in front of hundreds of the leading tech directors, business owners, developers, designers and creatives in Greater Lincolnshire, what did I have to lose…

Taking on daunting opportunities and stepping outside of your comfort zone is such an valuable and  underrated tool when it comes to personal development and growth. It develops your self-confidence, it broadens your horizons, it gives you new experiences, it allows you to make new mistakes and learn new lessons, and ultimately it is the single greatest catalyst when it comes to your growth as both a person and as an individual.

If we stick to the same old routine, and the same old experiences over and over again then naturally we as humans begin to stagnate. We get used to things, we become good at them, and then we never really grow from there. But if every now and then a curveball comes our way, and we do things we’ve not done before then we really do begin to grow. As humans we’re built to do things, we’re built to grow and better ourselves, and stepping outside of our comfort zone is a sure-fire way to take a step closer to becoming the best version of ourselves .

“But what if I fail?” or “what if I don’t like it?” is the excuse so many people use when it comes to trying new things and new experiences. But so often a shift of perspective from focusing on the negative outcomes of the situation to focusing on the potential positive outcomes is all it takes to realise the significant benefit that comes when trying new things. If you don’t like it, then you can say you’ve tried it, and you’ve learnt not only the context of the situation but you’ve also learnt about yourself, and what you as an individual like and dislike. You don’t lose out from finding out you don’t like something, you only gain as you now know something that you didn’t before. You’ve actually gone and gained a bit of knowledge. 

I don’t know about you, but I’d much rather regret the things that I did, than regret the things that I didn’t do. Don’t pay the price for your fear.

It’s also worth mentioning that as well as the opportunity to present an award, the team I was in were nominated for three awards; Innovation in Education, Digital Innovation, and Software Product of the Year and we were delighted to win the Digital Innovation award for a complex communications system that the business designed and built for one of Lincolnshire’s biggest companies. Over 120 award entries from 60 technology businesses across Lincolnshire were considered, and it was great for the team to be recognised for all their hard work in developing this product and their overall contribution to the tech industry.

It was a great honour to walk on stage and present both the winning award and the highly commended award for the Online Retailer of the Year, in front of a room packed full of Lincolnshire’s tech leaders, champion innovators and top creatives, as well as be present on stage for the presentations of the Digital Campaign of the Year award and the Creative Agency of the Year award.

Standing on stage and seeing the eyes of hundreds of prestigious tech leaders and digital giants staring back at me was definitely an experience I’ll never forget, and one that I’m incredibly grateful for, and one that truly took me out of my comfort zone and thus one that grew me as an individual.

So next time you feel daunted by an opportunity, or have the option to try something new, I ask you to grasp the bull by the horns and step out of that comfort zone, realise the potential growth of the situation and ultimately realise that nothing worth having comes easy.