Tag Archives: hackathon

Hackference 2017

Well, it has been almost a year since my previous post here, very much living up to the “occasional blogger” title on my Twitter profile.

I didn’t think there was going to be a Hackference 2017, what with it being ‘the last Hackference’ last year, but here we are.

Annoyingly, I made it to Euston station at 6:44am on the Friday. The train I booked was scheduled for 6:43, and annoyingly left on time, so I had to buy another ticket. £58 poorer than I was hoping to be that day, I got on the next train and still made it to The Studio (the venue for the day) on time.

I’m not going to say much about the talks: they were all really good, inspiring everyone to think differently about programming, design, and to try out some of the new Web technologies.

IMG_1686

Here’s Oxford’s very own Ben Foxall demoing a combination of the Web Audio API, WebGL and Nexmo’s voice API. In short, a visualisation of a phone call between Ben and his mum, happening in real time!

The next day was the hackathon. 24 hours of working on whatever you want, with whomever you want, from midday on Saturday to midday on Sunday. There were a few sponsors who ran challenges to help focus the direction of the hacks, including Microsoft. Microsoft were encouraging the use of their Cognitive Services APIs – a collection of machine learning features making it easy for developers to add image recognition, OCR, speech-to-text etc. to their own applications; and they would award a prize to the team with the best use of their APIs.

What follow are the slides from my presentation at the end.

Slide text: Hi I'm Dan and I made a thingA Slack message from me: "Anyone stuck for ideas? I want to play around with some of the Microsoft image recognition stuff"

Quite early on I was looking for a team to hack with Microsoft’s Cognitive Services, but I might have put people off when I said some of it would be in PHP.

Added to my Slack message: "Mostly in JavaScript, but may involve some PHP later on. Anyone want to pair up?"

Anyway I carried on on my own and ended up creating this site, Is It A Bench?

Screenshot from my hack "Is It A Bench?"

The idea is pretty simple, you can upload a photo to the service and it will tell you if it thinks it’s a photo of a bench, along with the text in any inscriptions.

I imagine there may be a few of you who are wondering:

Slide text: Why?

Well, I’ll tell you.

This is Terence. You may recognise him from the conference on Friday, or from speaking at Hackference last year.

A screenshot of OpenBenches.org, showing a map of the UK

He made this website called Open Benches.

Another screenshot from OpenBenches.org

The idea is you can upload geotagged images of benches with inscriptions and they will appear on a map.

Screenshot of @openbenches Twitter account

As soon as someone uploads these images, the website will instantly post them on Twitter.

That poses a potential problem. The Internet is not a nice place and some people could upload photos that clearly aren’t benches. It would also be easier to enter in the text of inscriptions if there was some way of processing the images with OCR before they are published.

I set about making a content filter. I uploaded a photo to my service which Microsoft’s vision API decided was adult content and described it as “a close up of a tattoo”. I’ll leave it to you to imagine what it was.

"isAdultContent": true, "text": "a close up of a tattoo"

When my site detects inappropriate content, it responds accordingly.

Screenshot of my website. At the bottom is a question "Safe for uploading?" Followed by "Hell no. Get this off my website"

It was around this time when Joe Nash stuck a message on the Slack group looking for people to play Laser Tag. It has been such a long time since I last played it, and I couldn’t resist leaping at the offer.

It was a lot more exercise than I was expecting that weekend. Also I’m terrible at Laser Tag – I was consistently the lowest scorer, but it was such good fun anyway!

When I got back I got started on the text extraction. I spent a good 20 minutes working out why OCR wasn’t working. Turns out I can’t spell OCR.

A POST request to an endpoint with 'orc' instead of 'ocr'

I was pretty much finished with the proof of concept early on, so after some interesting chats with some of the attendees, I even managed to get some sleep!

The next morning was spent making a couple of performance optimisations, prepping the demo and appreciating the fantastic food for lunch. As a last minute idea I tried making a JSON response to work with photos from the Open Benches website. I didn’t finish that bit in time.

I presented a live demo of what I had, and introduced the Open Benches website explaining how I could integrate the functionality.

Screenshot from Is It A Bench. A close-up of a plaque is correctly tagged with 'bench'

Most of the photos that I’d submitted to Open Benches in the past were correctly identified as benches – even the close-ups of plaques which really surprised me.

A correct transcription of the text on the plaque

Sometimes the text was extracted perfectly, even keeping lines and capitalisation…

A less accurate transcription of a slightly-more-difficult-to-read plaque

But sometimes it wasn’t so good!

After my demo, I tweeted about its existence. Terence seemed to love it!

Once everyone had finished their demos, the sponsors left to decide on the winners. While I didn’t win the prize from Microsoft, I did win a Raspberry Pi Zero from the recruitment company Harvey Nash! During the conference, Harvey Nash had the brilliant idea of giving playing cards to the attendees. Two packs were given out and your goal was to find the other attendee with the matching card to win a prize. It was a great icebreaker and I’d love to see that more in the future.

The hackathon had everyone from students to veteran hackers; all of the genders, ethnicities and operating system preferences; and it was wonderful to see everyone simply being excellent each other. (Apparently that’s some sort of reference to Bill and Ted; if only I knew what Bill and Ted was…)

Here’s to the next one!

Advertisements

Hackference 2016, Part 2 – The Hackathon

<- Part 1: the conference
On Saturday, once everyone had got a good night’s ‘sleep’ (our hotel was just next to a loud club which only got quiet after 3am), we walked over to the Impact Hub.

Before I get started, I’m using the word ‘hack’ in the non-malicious form. Tabloids use the word ‘hacker’ to describe someone with malicious intent who steals data or takes down websites (for example, this article in the Mirror). We use it to describe someone who thinks the best way of learning is by doing. A hackathon is just a group of sleep-deprived developers playing with something new.

The event itself was free – paid for completely by the wonderful sponsors.

Before the hackathon started, not many people knew what they wanted to make (including me). Luckily the sponsors got a chance to inspire us with their products and announce their prizes. There was a variety of companies attending, each with some cracking prizes for the teams making best use of their services.

Continue reading

Trntxt Autumn Update

I’ve made a couple of updates to trntxt since July.

One of the things I noticed during my user tests was that people typed ‘bristol’ when they wanted information about Bristol Temple Meads, Bristol’s main station. Unfortunately ‘bristol’ is a closer match to the smaller Bristol Parkway station because it comes above Temple Meads alphabetically. Before August, there wasn’t a way to get the user to correct their search, but trntxt now has search suggestions!

The feature was implemented while being moderately inebriated by a single bottle of Henry Weston’s at the Meanbee hack night in Bath.

Now if you go to http://trntxt.uk/bathspa/bristol it will ask you if you meant Bristol Temple Meads instead of Bristol Parkway.

Just don’t ask for ‘London’.

20151002_205404000_iOS

The other new thing is journey times. Trntxt now shows you how long each journey takes, so you can identify the faster trains more easily. The number is calculated with preference to the estimated timings, so if a train is delayed, the time will adjust accordingly.

20151002_210611000_iOS

Next logical step – sort by arrival time instead 😉

I’m also looking to make trntxt’s suggestions cleverer. I’ve started collecting data about the devices that use the site and the inputs people give. I’m hoping to expand that to also collect and store data from the National Rail Enquiries API. Don’t worry, the information collected is not personally identifiable (unless your user agent string is “HI MY NAME IS DAN”).

Hopefully, after some more practice with MongoDB I’ll be able to draw conclusions predicting the stations people mean based on their input. For example if someone types /bristol/london, they probably mean London Paddington, whereas /southampton/london should take the user to London Waterloo instead.

JSOxford NodeBots Day

“The problem with hardware is that there is no version control” – Marcus Noble

JSOxford’s NodeBots day marks one year since I first used JavaScript (ish). At last year’s event I took an Arduino and used the johnny-five library to control it using Node. It was fun to make, but wasn’t really that impressive.

This time round, JSOxford had a bunch of Espruino Pico boards and plenty of hardware to hack around with, including continuous servos and wheels.

Continue reading

Realtime hacking with JSOxford

Yesterday I went to a hack day run by JSOxford. The theme was ‘realtime’, i.e. using Web technologies to update a site automatically from a data source.

Since I had no experience with realtime technologies before I came, I didn’t want to make anything too ambitious! I just wanted to learn the basics so that I could make something useful in the future.

Continue reading

Bath Hacked guest blog

I wrote about my hackathon experience on the Bath Hacked website, but I thought I’d copy it over to this blog too.

What did you make?

We created a website that aims to help people decide who to vote for in the next general election. It visualises the results of past elections and gives unbiased information about the candidates standing for the next election.

Which data sources/tools did you use?

Our main data source was the BANES website, which contained all the data for the past election results. We also looked at the websites of the candidates for next year’s election.

What were the challenges?

One of the main challenges was collecting the data. Chris spent many hours trawling through the many pages of the council website to collect the data and put it into a spreadsheet, which was then uploaded to the data store.

What would you do to improve your project further?

Currently we only have past election data for 2011 in the Bath Constituency. We would like to add data for North East Somerset and for other years to help users discover trends.

We were also intrigued with the problem of tactical voting. We’d like to create an opinion poll to collect information on how people would like to vote if they didn’t feel the need to vote tactically. Perhaps this will be able to influence people’s decisions.

Where can we find it?

VoteTub isn’t online right now, but we plan on continuing development of the website. This blog post will be updated and we’ll tweet a lot when we bring it live.

Team

Bath Hacked 2.1: VoteTub

Photo taken by Jon Poole (I think). More photos here.

This weekend I took part in my first ever weekend-long ‘hackathon‘, where a bunch of developers group together to create solutions to make Bath better. The event took place at the Bath Guild. We were encouraged to take publicy available data about the city and turn it into a resource that members of the public could actually make sense of.

I formed a team with two other hackathon newbies, Christopher and Cliff. Christopher wasn’t a coder but had an idea for a project, Cliff had experience as a front-end developer, and I was a recent graduate with almost no experience building a thing from scratch.

Christopher’s idea was to build a website that would help people decide who to vote for in future elections. It would list the candidates with links to various forms of social media, and give unbiased policy information. It would also look into the past, providing results of previous local elections, and also the future. An idea was to try to tackle tactical voting. The site would ask visitors who they were going to vote for, then who they would ideally like to see in power. It would then show them the summary of what other people replied. We thought it would be interesting to see if this data would affect people’s decisions.

Continue reading