Jake Hall

Software Developer and Infrastructure Guy.
Always looking for ways to improve everything. Views are my own!

Read this first

Instant Slack Feedback

How do you get instant feedback from your colleagues on Slack? Perhaps it’s just a simple question, where shall we go for lunch? Or when shall we organise an event for.

There are a few poll Slack Apps available on the directory, but I wanted to see how easy or otherwise it would be to use the Slack API, to build my own our team. Slack also recently released Message Buttons and these new message attachments seemed like the perfect way to user responses to a poll.

Turns out you can easily put something together over the course of a day.


So what’s in a Slack App? You currently can have incoming webhooks for specific channels, this allows you to post messages from an external server into that channel using the specific hook URL you’re given.

You can also have commands, these are things like /poll or /invite jake. Slack will send you a HTTPS POST command with the command and the

Continue reading →


Importance of Networking

I love talking to new people. Finding out what they do, where they do it, what they find interesting and the two most important things - if there’s anything in there that I can take away to improve my life or projects with or vice versa (if I can help them with anything).

Regularly I draw on my network in order to help others achieve their goals. Most recently I was presented with the most ambitious goal I had yet to take.

Canadian Flag

One of my closest friends and colleagues at work would like to move to Canada within our company. It’s well known that it’s hard enough to move ones base office, but to move a base office to one that’s located in a different continent?

A quick flick through my network presented me with a very senior HR manager, who may just be able to help. One quick email later, and we’ve been asked for a CV and a preferred location in Canada.


One other such example is

Continue reading →


Encouraging big business to adopt development best practice

Myself and a colleague at work have managed it.

Well we are on the first step of a long road to adoption but I’m pretty happy so far! We’ve managed to persuade our part of business to pilot a Gerrit & Jenkins Continuous Integration environment. The director of this section has already said he will mandating it once we prove that it’s battle ready.

This means that all projects within our section will have to give us a good reason why they cannot:

  • move from SVN to GIT.
  • implement mandatory peer-code reviews.
  • use an AOSP style Verified+1 flag from Jenkins, thus changeset cannot be merged if it cannot be built.

Or they will be force to take up best practice (it’s best for a reason right!).

So the next steps are to set up our first project on the system, it’s a very distributed project with developers from three countries involved - which makes the peer-code reviewing even more

Continue reading →


Mondo Event Webhook - Transaction.Created

I’m one of the lucky few to have a Mondo Card. At the time of writing it’s in open BETA, so anyone can apply but the waiting list is huge (80k+ last time I looked) and only 11k cards are in circulation.

Mondo

I’m not going to go into detail about why Mondo is so great (it’s widely documented…) - but what I will do is delve into one of the components of their API. Yes a sorta-bank* with an API - I’m so excited to see what they (and other developers) can do with it! Mondo are maintaining an awesome-mondo github listing - check it out for inspiration.

For me - one of the most powerful parts of their API is the webhook feature. Head over to developers.getmondo.co.uk and you can register your own webhook to receive events.

At the moment the only event is the transaction.created event documented.

I’ve thrown together a quick PHP script that accepts the JSON POST value, parses this data, then

Continue reading →


Today is International Backup Awareness Day

Of course, that’s the joke. Everyday is International Backup Awareness Day. You should go and check your backups now. It’s OK - I can wait… I should probably go and check mine too.


You have backups right? As I mentioned in a previous post Zero to development of an idea, I have a little dev box that I love to use for my little side projects. Now there’s no point in setting up a separate backup strategy for each of these as they are all so small it would be infeasible to maintain.

Instead I go for a multi-faceted approach.

  1. Use Git repositories to store the code in BitBucket. That way they’re on my development workstation and on a cloud host (and one would hope they backup).
  2. Use Amazon Web Services - Simple Storage Service to save my entire /var/www/html directory to a bucket for safe keeping.

Here’s how I make it work:

   s3cmd sync -r /var/www/html/ s3://bucketname/backupwww/

Continue reading →


Zero to development of an idea

One of the places I have identified as a blocker to me starting on a project is the bootstrapping of a project.

Laravel Code

By this I mean going from ‘I’ve got an idea’ stage to writing the first line of code and getting it uploaded to a web server with a database connection set-up. (Most of my personal side projects are web based!)

I’ve found the faster I can get an idea off the ground, the more likely I am to continue it. So what have I done to reduce the bootstrap time?

Most of my projects end up getting hosted on my FlorxLabs server, it has wildcard subdomain DNS setup, with a simple Apache rewrite.

<VirtualHost *:80>   
    ServerName chaos.florxlabs.com:80
    VirtualDocumentRoot /var/www/html/%2.0/%1.0/
</VirtualHost>

So if I would like a project under the URL project.florxlabs.com, I simply create the folder /var/www/html/florxlabs/project and I’m ready to go. No more config

Continue reading →


cPanel .Trash Emails

So it turns out that cPanel keeps emails in the Trash forever.
Disk Usage
I was woken up at 8am this morning to find my cPanel server had died due to running out of disk space. Rookie error! I have processes in place to prevent this from happening like automatically clearing the backups once they have been safely offloaded to S3. However for some reason this hadn’t happened last night and the disk space was 100%. It was resolved pretty quickly and no harm was done, I reran the backups and all was well.

I decided to do a quick audit of the server to see if there was anything obviously taking up an abnormal amount of space. A logs directory from an CodeIgniter application was one source (full of irrelevant warnings). Another source were the .Trash folders in each Mail directory.

I had assumed that like Gmail it would delete after 30 days but no. So I did a quick search and came a cross Tom Yates

Continue reading →