Greater Manchester Hackfest 2016

Background

Pokemon Go has taken Manchester and the world by storm as pokemon trainers strive to be the very best and catch them all. People young and old are getting out of their chairs to walk around town and visit local attractions so they can hatch eggs and pick up poke balls from pokestops.

The Challenge

How can we learn from the success of Pokemon Go and utilise technology to help encourage people in the city to become more active or take an active interest in their community.

Can we encourage families to spend more time together in the parks? visit the museums and green spaces of Manchester? Could this be monetised or incentivised?

Tips

Tips: Look at how charities, businesses and the development community have used Pokemon Go in novel ways already.

Look at other geolocation projects and apps (Geocaching, Zombies Run! etc), what lessons from Pokemon GO can we apply to these ideas to make something new!

Prizes are Cinema tickets for 2 for each member of the winning team

Glug Manchester

As a designer, I’m well aware of Manchester's vibrant creative scene. I've been aware of Glug for a while and there's a real buzz about the events. In conjunction with The Neighbourhood and The Agency Collective, FARM Digital were proud to launch the first Glug Manchester.

Glug is a series of talks and informal networking. Glug have hosted events in New York, Beijing, Auckland and Stockholm as well as a host of UK cities, where better to launch than in the heart of Manchester's Northern Quarter? Noho was the venue for the launch and we had three fantastic speakers kicking off the first event.

The Talks

After a brief chance to network, the event was introduced by FARM's Rob Edwards. The Glug ethos is simple; celebrate the new, be nice and make friends.

The first talk was Working for Good by Dave Bird. Dave is on a quest, to bring positive creativity to design; Dave outlined his process at the Neighbourhood.

Next was The Dark Side of the Internet by Phil Winstanley. Phil would delve into the dark underworld of the Internet, the so called “Dark Web”. Who operates on the dark web? What’s down there? And who’s protecting us? This area of the internet is a relative mystery to most - but it's fascinating to learn what’s down there, and how Microsoft are taking steps to safeguard against the more nefarious uses.

Finally, Designing for Evil by Barry Briggs. Not all UX strives to improve customer experience, so what happens when UX is used for evil? Delving into the darker side of user experience. Barry talked about how UX is used to mislead, confuse and manipulate users.

Notworking or Networking

The event ended with a “notworking” session. An opportunity to meet fellow creatives and discuss the talks. With a slice of the free pizza and an open bar conversation flowed and it was a great opportunity to meet colleagues in the industry.

Glug Manchester was a great success and looks set to be a regular fixture of the Manchester creative scene, and we look forward to seeing you at the next event. For more info visit: http://www.meetup.com/GlugManchester/

Bitbucket Pipelines

We're heavy users of the Atlassian product suite at FARM, and that includes their powerful but obtuse CI system, Bamboo. Our workflow consists of an automated pipeline from BitBucket, to Bamboo running on a custom AWS EC2 image (which we have blogged about before), to our in-house dashboard system, called Wallboard.

While we're happy with this system, Bamboo at times has felt slightly cumbersome. It's hyper-configurable (sometimes at the expense of usability), and it carries obvious technical debt from it's days as an on-premise, "old IT" system which hasn't been well addressed by it's move to the cloud. Still, it was a pleasant surprise to hear about the launch of BitBucket Pipelines, which brings the CI process into BitBucket directly, and uses Docker rather than EC2. It feels like a more modern solution.

Screenshot of Bitucket Pipelines

The configuration file is simple enough; for our purposes we just needed to specify the container we needed, and then run an existing make tests script from the repository (which handled dependencies and the build steps already):

# You can use a Docker image from Docker Hub or your own container
# registry for your build environment.
image: python:2.7.11

pipelines:
  default:
    - step:
        script: # Modify the commands below to build your repository.
          - make test

Obviously this is about as simple as this configuration file can get, though based on the documentation, we could easily replicate the contents of our Makefile in the configuration YML.

Speed of execution is generally good. It appears that the build and test process kicked off as soon as the commit is complete, unlike Bamboo where sometimes we had to wait for an agent to come available, or for an EC2 instance to spin up. In general, our entire build pipeline (which is common across all our Django projects) of checkout, install dependencies, migrate database, and run tests was executing in around 3 minutes. This is considerably faster than with Bamboo, and could be further improved by, for example, removing the pip wheel compliation.

Merging CI/CD with the source control service makes sense. The pipelines run for each branch and pull request (and in parallel, which is helpful for busy repositories). Pipelines does everything it needs to do, and little more, which is common in most of the best tools we use. There are a few features which I'd like to see added, though as this is an early stage beta product I'm inclined to be quite forgiving:

  • Parsing of test output. With Bamboo we liked the parsing of XUnit XML files to give specific insight into which tests failed. However, Pipelines gives direct visibility of the console output, so this may be something we can live without.
  • Hipchat integration. I'm sure this is coming soon.

There is a lot to like about Pipelines. It's promising for organisations which are using the Atlassian suite of tools, and I respect their desire to launch this into beta at an early stage. The current 'lightweight' CI offerings are very focused on Github integration (eg. TravisCI), so having another comparable player in this space is an exciting development. We're looking forward to more.

Django with Elastic Beanstalk

Over the last week or so, I have explored the process of getting a Django project deployed to Amazon Elastic Beanstalk. The initial deployment of the project is fairly simple:

$ eb init
$ eb create --database -k {key-name}

Those two commands, coupled with some s3 static/media settings can get your Django project up and running fairly quickly. In this article I will be running though some of the issues I have faced so far and how those issues have been resolved.

Accessing the instance and executing Django commands

Fairly early on in the development of the project I needed to access the instance to run a manual django migration. Usually I would just SSH into our server, source the env and execute the command. On Amazon we’re doing the same thing, but there are a few more steps to go through.

The first step is simple, SSH into the instance via:

$ eb ssh

Next, you’ll need to navigate to the current deployment of the project:

$ cd /opt/python/current/app

Then, sourcing the correct environment is a 2 command process:

$ source /opt/python/run/venv/bin/activate
$ source /opt/python/current/env

From there you are ready to run your manage.py commands:

$ src/manage.py migrate

Connecting to the RDS instance

Deploying the project in the way I outlined above will create an RDS instance for the project. There a couple of steps needed to access this database as it only allows the EB instance to connect to it by default.

Firstly, you’ll need to find out which RDS instance you are going to be accessing. To do this, navigate to your project environment in the EB section of the AWS console. Once there, navigate to the configuration tab, and locate the RDS section:

In this section, the bit we want to note is the first part of the endpoint (aavf8pq1n1fwwe).

Navigate to the RDS section of the console and find the instance with the name corresponding to the characters we noted above. Click the instance, go into the second tab (details) and click on the second security group in the list.

In this window you should be able to edit the inbound rules for the RDS instance. If you edit this, you can add a MYSQL/Aurora connection with your IP as the source, which will allow you to connect to the database.

Once you have added that inbound rule, the following command will grant you access to the DB (using the user credentials you used to set up the initial database):

$ mysql -h [full-instance-endpoint] -P 3306 -u [instance-user] -p

Configuring the instance to allow Django filer to upload properly One of the first problems I noticed with Django Filer after deploying the project was that jpeg uploads did not work. After doing some research I found that the problem was that the default installation of the EB instance does not have the software required to decode jpeg images. To remedy this, in our 01-django_eb.config file I added the following:

packages:
    yum:
        libjpeg-turbo-devel: []
        libpng-devel: []
        freetype-devel: []

These packages will be installed as the instance is deployed and will allow the instance to manipulate jpeg images, png images and fonts respectively.

My Story

After weeks of searching, I have got the best job I could have wished for. From this week, I'm now a UX/Quality Engineer at FARM Digital. I have got the job that I've always wanted (it's crazy how I got it but I'll get to that later on); I have to thank everyone at FARM for making me feel super welcome.

A few years ago one of my university lecturers said something that makes sense now: "there are jobs out there for you that haven't even been identified yet but you will be the next generation to do them, for sure". At first when he said that I didn't really understand what other jobs could possibly come around, instead of sticking with traditional roles such as 'web developer' or something like that.

My degree was good, don't get me wrong but I thought I could only be a web developer.I loved coding in my first year but I couldn't ever commit myself to learning it in-depth. After trying to learning more skills by following tutorials, and going to some events, it became a sort of 'information overload'; I didn't know where to start or begin. After doing all these things I felt stressed and frustrated that I wasn't going to be able to get anything out of this for the long term.

For me, I found that I was stuck somewhere in the middle for my first two years at uni I found I was trying to force myself to be a web designer using Team Treehouse or Codeacademy just so I didn't do the degree for three years and have nothing to show. I mean if you’re a web development graduate, you're expected to code 24/7, Right? I found the more I tried, the more I realized that the web-dev role wouldn't be for me, as you have to be passionate for it. That left me worrying for final year, I guess this is were the change came.

The 'change' started over the summer before final year I got an internship covering project management and mixing with the web design/graphics team. After I realised web design wasn't for me I found a passion for designing (though, I didn't know how if I could make a career out of it). I was lucky to do a UX unit and from there on my career prospects seemed positive, I found my 'niche' in the market? I didn't have to code but I could design, perfect?

Fast forward to the end of the year I got 76% for my UX unit so I knew it was something I could defiantly do. I started doing work in my own time using sketch, and reading blogs on what to do and further my studies. After rebuilding my portfolio and personal skills I started to apply to some jobs.

Here’s where things got crazy!

I was sitting in my room at midnight getting ready for this 'Glug' event in the next few days - I decided to put a message into this app called 'Meetup' which helped organize the event for invites etc. Just a message asking if anyone has any UX or testing related jobs going as I'm about to graduate. I didn't expect much from it because I thought people would find me a bit cheeky doing that. Even-though I had tried applying every other way to get a job and hoped this would work.

Well...it actually did work.

Not too long after, Jon, the Technical Director at FARM messaged me on Twitter, and things took off from there. I was able to come in the office meet the team again, I did a UX review and Q/A test to get a feel for the job. After completing them and once they were reviewed everything, I was offered the job! The role wasn't even offered on their site, but they said that if someone had the skills they would want them in the team.

I guess I could say, I made my own luck?

I was super shocked, everything I had worried about had finally been solved. I was offered a role I really was passionate about. Calling myself a "UX/Quality Engineer", is something I can be very proud to say and be apart of company like FARM.

Anyone reading this, who is looking for a new career or graduating: Get yourself out there! Its very easy, people in the industry really want to know about you if you have talent. Make the most use of your free time blog twice a month, go to the free events in Manchester (there are tons) and start some side projects. You never know what may come your way. I never expected a role like this would happen to me, but it has. You can do it!

Key points to getting yourself out there:

  • Tweet every day about relevant tech trends.
  • Download 'Meetup' app and go to events.
  • Get some business cards from VistaPrint.
  • Blog every month about your progress or projects (tech trends, personal projects, your opinions on a blog post)
  • Create a portfolio and constantly update it.
  • Network with people from industry just tweet them or speak to them at events.
  • Read industry blogs, and know the trends.
  • Message people at their work and build that network
  • Before going to any event message the speakers so they know you before you arrive.

Orginal Post: https://kamaalkwblog.wordpress.com/2016/05/09/how-i-landed-my-first-job-as-a-uxquality-engineer/