Alex Forey on working with networked devices

Alex Forey is one of 10 nominees for Emerging Talent of the Year in the 2014 net Awards. He's a full stack developer with a large body of work that includes commercial sites, Little Printer publications and projects that make use of other hardware such as Raspberry Pi and Arduino. He's currently focusing on the Internet of Things; building interesting things with connected physical devices, such as smart alarm clocks and thermostats. We quizzed him to find out more.

Tell us about your main areas of competency.

I’m proficient in a large range of areas - everything you need to create and run a website - HTML, CSS (SASS), JavaScript (jQuery), PHP, Ruby, Rails, Sinatra, sysadmin and devops using Amazon AWS and DigitalOcean.

Are you currently working or studying?

I’m currently studying for my GCSEs, but I’m also working on and off for Firefly Solutions as well as doing freelance video and web work.

Give us a summary of your web work so far.

I started by creating my own website,, around two years ago - that was my first significant project. It is written in HTML and SASS, some jQuery and is responsive.

My next major project was Markpond, a social bookmarking website. It allows you to save things you find from around the web that interest you, and keep an archive for when you want to get back to those things later. It can even save an offline copy of all your bookmarks (re-hosting them on Markpond) in case the original goes offline: e.g. the original and the offline copy (note the difference in URLs and how all the images have been saved as well). As well as this, it has engines running in the background that can import your bookmarks automatically from Pocket or Instapaper when you’ve finished reading them. It is written in Ruby on Rails and hosted on a Mac Mini in my bedroom. It uses Apache and Passenger for hosting, as well as a host of other technologies such as MySQL, Solr (for full text searching) and ImageMagick. Additionally, it has Safari and Chrome extensions, for easy saving of bookmarks, which are both open source. Markpond is also responsive for mobile devices.

Last summer I wrote the Outdoor Advertising Directory, as seen on my portfolio. I was hired by Sam Stuttard to create a website for his startup, which is based in Glasgow. The site is a database of photos of outdoor advertisements on bus stops, billboards, and more - and is designed so that companies can find out what their competitors are doing. Each advert belongs to a category according to its medium, agency, city, and medium. Customers can sign up for a plan according to their needs (£100 per month for one city, £200 per month for two cities, etc.) and access the adverts. Because of this, the site has a username/password system with payment/signup/password reset emails. It also has an admin interface where the owners can log in to add adverts for the customers to view.

The Outdoor Advertising Directory

I designed the site using Bootstrap, SASS and JavaScript, created the backend using Ruby, Rails, PostgreSQL, and got it on the internet using Amazon EC2, S3 and Unicorn. The site was turned around from concept to reality in less than two months, and it included integration with Stripe for payment processing as well as SVG-only graphics for sharp rendering on Retina and other HiDPI screens. I also set up the servers to communicate over HTTPS with an SSL certificate, to ensure the customers' data was secure when passing through the tubes of the internet. The Outdoor Advertising Directory was recently sold on to a new owner, and is unfortunately currently down as they move it to their new owners and hosting.

I’ve also made five Little Printer publications:

  • On This Day - which takes a data stream from Wikipedia, formats it and presents it every day. It is currently has over 400 subscribers, and is one of the most popular publications on their platform. It’s written in PHP.
  • Firefly Tasks - which allows you to get a daily print-out of your homework set through your Firefly Learning platform. It works with Firefly’s APIs and pulls either tasks set today or tasks set tomorrow depending on your preference. Written in Ruby on Rails.
  • Little Commits - a publication that gives you a physical receipt every time you or someone else pushes to one of your repositories on GitHub. It works with a database, and emails you a special code which you put as a post-commit service in your GitHub repository. Written in Ruby on Rails.
  • No Context - a publication that gives you a random top submission from Reddit’s /r/nocontext subreddit. Written inSinatra.
  • Little Markpond - a companion publication to Markpond, which gives you two random bookmarks per day from your catalog. Written in Ruby on Rails.

The No Context Little Printer publication

My work for Firefly solutions varies according to what they need doing. I made them a Little Printer publication as a proof of concept during 2013, as well as helping out on some of their client projects. I’ve also worked on an internal project which takes subsets of their contacts from their Highrise system and displays them on a Google Map according to certain sets of criteria - for instance ones that signed up in the last three years, or ones who have signed up for training days. It was written in HTML, CSS with a heavy use of JavaScript for the Google Maps APIs. The backend was written in Ruby and Sinatra with a MySQL database to store caches. I had to rewrite some of the interface between Ruby and Highrise to suit my needs, as it didn’t support companies with custom fields and was buggy and out of date.

At what age did you start learning to code, and how did your interest in the web get started?

I started coding at around the age of twelve, when I realised that no matter how much I messed up it would never damage my computer permanently. I started with HTML, as we’d been taught a bit of it during Year 5 at school. From there I learnt CSS because I felt it was the next logical progression, and when I found out what was possible with those two my interest expanded into learning about more internet technologies.

I first learnt to make web "applications" from phpAcademy, when they released their Image Upload Website series, which has since been removed. I made my first Little Printer publication in PHP, and when I met the wonderful people at BERG they suggested that I learn Ruby, because it was easier and more intuitive to make complicated web apps in, and so I did. I started with Railscasts and built it up from there.

What was the first thing you built?

The very first thing I built was the original, which way back in 2011 looked like this. I’d heard a lot about responsive web design, and this was my first stab at it - notice what happens to the navigation when you resize the width of the browser. I’d also just learnt about sprites, and so I used them as much as possible.

What are you working on now?

Currently I’m turning my attention more to connected physical things, and am in the planning stages of a network of devices in your house that are smart and react to you in real time - for instance an alarm clock that changes when you wake up depending on how long it’ll take you to get to work/school that day, and a bot that reads your Foursquare check-in history to figure out when you’re out of the house/country and acts on your thermostat etc accordingly.

For these I’m primarily using various flavours of Arduinos, as well as BERGCloud’s devshield.

Are there any people whose work has been especially inspirational to you?

Without the work that Clearleft did on my school’s website back in 2008, I would never have been aware of responsive web design, and so my work wouldn’t be up to the standard that it is today. Without BERG’s guidance I’d still be slaving over PHP functions and wasting time instead of developing as fast as I can with Ruby.

Vote in the net Awards!

Celebrating the best in web design and development, the 15th net Awards is open for public voting until 24 March. With a record breaking number of nominations this year, it's set to be the biggest and best yet. Have your say by casting your votes here.