A Hack At The Hacknight

A few of my work chums wanted to put on a hacknight but initially it didn’t sound too exciting because there wasn’t any end goal to it. You just played around for a few hours and the went home when you eventually got tired & hungry.

This year I’ve been an attendee at the simpleweb hacknights and they’ve been great fun. There’s live music, complimentary food (which is delicious) and even prizes to be won at the end of the night!

Inspired I wanted to try and make our hacknights as fun as theirs. So I hatched a plan and sat down with a few senior members of staff to discuss.

The format

We sent out a doodle poll asking staff to vote on what API tickled their fancy the most. Staff had a choice of these 5 API’s:

The poll was a close one with facial recognition beating the NASA api’s by just a single vote.

Participants were encouraged to form teams of no bigger than 5. On the night we ended up with 3 teams – 4 people in each – each a good mix of disciplines from designer to developer.

There was only one rule; teams must use the chosen API in some form and after that they have free reign to do what they liked.

We decided to start the night after work at about 5:30pm and finish at around 8pm (although we didn’t start until about 6pm).

A developer in a red t-shirt points at a diagram while others watch

At the end of the evening we would all gather round and demo our work. To judge we handed out cards to each team to score each other out of 10 on the following:

In the end if there was a tie break we would decide the winning team. We would announce it in our weekly highlights email.

Snags

It wasn’t all smooth sailing though, we definitely made a few boo boos on the night.

Our biggest issue was finding out about 20 minutes before the night was due to start that the facial recognition API we had chosen wasn’t actually free.

Facepalm Meme

This meant we had to scramble to find a new API which was free and offered similar features. Note to self always thoroughly test the API!

The hacks

The teams still managed to create some awesome hacks through the night.

Animal Team

A wall with wireframe sketches on it The A(nimal) Team hadn’t had time to prepare for the night, despite this they still created a prototype of an animal likeness application which accepted a photo and gave you stats on your age, gender and then showed you what animal you resembled most. I thought this was really neat and achievable hack given the time frame.

They scaffolded out their app using javascript to interface with the API so were able to create a working prototype very quickly.

Hacknight Dream Team

Two developers working on their hacks Hacknight Dream Team, (cocky names aside) had an interesting idea to plot a users happiness over time by judging their smile. It would then draw a ‘happiness chart’ and show how your happiness changes throughout the day comparing you to the rest of the world.

Unfortunately they didn’t manage to make a working prototype however they showed us an example of the API they were working on.

They used Sails.js which is a node.js mvc framework alongside with MongoDB a JSON Datastore to track the users happiness over time.

Face-a-rater

This team’s plan was to ask users to make their best taylor face. For the uninitiated this is the taylor face.

A black tie dressed man wincing at a sparkler

They would then be scored on their likeness with 100% being freakishly identical. A leaderboard would see how your facial impression stacked up with the other users.

Their app used the Ionic hybrid application framework which lets you create rich mobile applications using web tech.

Unfortunately they didn’t manage to make a working prototype but they did manage to create a PSD mockup in time for the demo.

Conclusion

Overall the night was a success and I’m really grateful to everyone that made an effort to come along. It was awesome to see not just developers but designers also coming and working together to hack on something.

A group of people gathered around a laptop

The night gave me an appreciation for just how much work organisers put into making these kinds of events happen.

I look forward to the next one!

Dotfiles 2

Dotfiles are a fantastic way to centralize your configuration files for various tools and utilities. Examples of these include Git, Vim and Shells such as Bash, Zsh and Fish.

I have been using holmon’s dotfiles for a while and it has been really good. It comes some nice tweaks and a bootstrap script which symlinks everything with the suffix ‘.symlink’.

But I wanted to have a go at making my own from scratch, also I wanted to add homebrew and casks into an install script so it installed everything for me.

I took inspiration from webpro’s installation & update scripts and created two of my own:

Install assumes a clean OSX install, setting some OSX defaults, installing all the apps and tools I use finishing with symlinking my configuration files.

Update is a convenience script which updates homebrew, npm, and ruby packages as well as a few other chores. I usually fire this off in the morning while I make a cup of coffee, when I come back I know everything is up to date which is nice :)

brew.sh, npm.sh and gem.sh

I use npm and ruby gems to install any official packages (eg Sass/Bower) and homebrew for tools and apps such as Git and Google Chrome. These files just have a list like the one below which I can add to whenever. It also checks to see if it’s installed it before which is kind of a poor mans idempotent but it works!

packages=(
    brew-cask
    fish
    git
    mysql
    node
    php56
    composer
)

apps=(
    alfred
    atom
    google-chrome
)

Atom Editor

I’ve recently started using Atom again and stumbled across their package manager APM. This allows you to install packages from the command line, and even includes an option to read a list of packages to install from a text file. This was brilliant because it meant I could just tell atom to grab the latest plugins and themes.

Git

In my original dotfiles I had a prompt which asked me to put in my git name and email. While this is cool it was a bit of a pain to be asked this every time I ran install so I sought inspiration from symfony and created a secrets file.

#!/usr/bin/env fish

# git config --global user.name ""
# git config --global user.email ""

I also learned you could also include other git config files in your global config and the same for the excludes file. This meant I didn’t have to symlink my git config and could simply link to it (a win for simplicity!). My non dotfiles git config actually looks quite minimal:

[include]
	path = /Users/rob/.dotfiles/git/.gitconfig
[core]
	excludesfile = /Users/rob/.dotfiles/git/.gitignore

Of course none of this worked first time, it never does! In fact it didn’t even work flawlessly the second time but such is the joy of coding! I learned a lot doing this and definitely pleased I did it. Before it took me up to a day to set up my mac with all my apps ect but with this it took me just over an hour.

If you’d like to learn more about dotfiles please check out the wiki page which has loads of links on the subject. Also you can check out my dotfiles on Github

Thanks for reading

Short Films

I love short animated cartoons, it’s astonishing to see how much detail the animators can cram into a 5 minute sequence. My favourite type includes a bit of warm cheeky humour with bright colours that make the film appear vibrant and fun.

Here is a selection of favourites on vimeo, each one I like for differing reasons but they are all ace. I hope you enjoy!

Play Video

Play Video

Play Video

Play Video

Play Video

Play Video

Play Video