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 “Realtime hacking with JSOxford”

Code Golf at Bath Ruby User Group

Golf: normally, unless it’s of the ‘Crazy’ or ‘Adventure’ variety (is there a difference?), I will stay well away from it. That’s mainly because my arms don’t swing and it involves quite a lot of standing and waiting around outside. However, yesterday evening I played a game of Code Golf.

The game goes like this – there are 9 problems (or ‘holes’ if you will), and you need to write a method to solve each one. The problems are fairly simple (I was reminded of first year programming), but the aim was to solve the problems in the fewest number of characters possible. This meant if you stood any chance of winning, you would have to squash your code into something compact and unreadable.

Continue reading “Code Golf at Bath Ruby User Group”

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 “Bath Hacked 2.1: VoteTub”

YouFeed updates

YouFeed logo

So this happened the other day:

That’s Edwin, the CEO of feedly, saying my YouFeed site is “brilliant”. He wants to integrate the functionality of YouFeed into feedly mini (the Chrome extension). He said that he was considering making feedly mini open source, to allow developers like me to add our own functionality to make feedly better for everybody.

Continue reading “YouFeed updates”

YouFeed (AKA a thing that I made on the Internet)

TL;DR: Easily subscribe to YouTube channels and playlists on Feedly by using YouFeed, a little Web app that I made.

YouFeed screenshot

I think I started coding this Web app around exam time of my final year at uni. I just wanted to make something simple that would be really useful to people, and what’s simpler than taking a string of text and returning a slightly bigger string of text?

That’s what YouFeed does.

The problem

Let’s say you’re using YouTube to subscribe to an artist’s channel. When that YouTuber uploads a new video, a link to that video appears on the YouTube homepage. But we might not want to watch that video right now – instead we might want to watch it next week. A week passes and you’ve forgotten about the video because it’s no longer on your YouTube homepage.

Instead, you might want to subscribe to that artist using Feedly.

Continue reading “YouFeed (AKA a thing that I made on the Internet)”

TDD is still alive (JSOxford Code Retreat)

Last Sunday I went to The Jam Factory in Oxford with 20 other programmers for ‘Code Retreat’ – an event organised by JSOxford as part of their Summer of Hacks.

The aim of the event was to encourage us to code properly through a variety of techniques. We weren’t expected to finish the set tasks, but the code produced during the tasks should be perfect. Emphasis was put on code quality rather than quantity – different than other hack events.

Continue reading “TDD is still alive (JSOxford Code Retreat)”

Raspberry Pi project #3: Beepy

Before you panic, you haven’t missed my writings about any other Raspberry Pi projects. This is project number 3, but it’s the first one I’ve actually written about.

The reasoning for Beepy came when the family were highlighting programmes in the Christmas edition of What’s On TV. We used to set reminders on the TV, but it’s rubbish – they only remind you if the TV is turned on.

Beepy is an alarm daemon that regularly reads a text file with a list of dates, times, numbers and words. For example, if I needed reminding to watch Doctor Who on BBC One on Christmas day at 17:15 (like I need reminding), the text file would have a line like this:

25/12/2012 17:13 1 Doctor Who

The date and time are obvious, and the ‘1’ represents what sound the alarm makes. If that number was 3, there would be 3 beeps in quick succession followed by a pause, then repeated for a minute. The alarm also speaks any text at the end of the line.

The script makes use of 2 other programs for the Raspberry Pi:

  • mpg321 (to play the alarm noise)
  • festival (used for speech)

You also need to make sure the sound drivers are installed. This tutorial helped me.

In order to make it work as a daemon (i.e. running in the background) you have to modify the startup script at /etc/profile. Add the location of Beepy followed by an ‘&’ (There has to be a better way of doing that). You’ll need to edit the file names in Beepy to wherever you’ve stored it, then reboot, plug in a set of speakers and you’re away!

To add an alarm, edit the text file in the same style as the example. Easy peasy.

A Raspberry Pi, hard drive, speakers and a router

My setup is getting more and more spaghettified. There are speakers and a USB hard drive which I’ll get to some other time.

I’m sure this is the worst way of making a daemon, and the quality of my code is probably shocking. But hey, it works.

If you feel the urge to download this hideous creation, you can click here

iThingy app – JumiMouse+

A couple of years ago, I downloaded an app for my iPod called JumiMouse+. I found it because I was looking for a remote desktop app to control my laptop, and although this wasn’t exactly what I was looking for at the time, it turned out it was better than what I wanted.

In order for the app to work, JumiMouse+ requires a server application, JumiController, to be running on your PC. It can sometimes be problematic connecting the iPod to the PC, but this is usually the fault of the firewall or your router. This app works both internally and externally, meaning your iPhone could be in the same room or in China and it will work just the same.

A few months later, JumiTech released an app called JumiTap, later branded JumiRemotes, which is now integrated into JumiMouse+. This allowed the user to create their own remote controls for specific applications, or download user-submitted remotes from JumiTech’s gallery. Essentially, this means you can plug your laptop into your TV and run Windows Media Center using the remote control I made for it. Or you could play VisualBoyAdvance with a Game Boy controller rather than the keyboard. Or you could present a PowerPoint presentation without the need to go and press a button on the laptop after every slide.

Media Center JumiRemote

I’ve spent a fair amount of time designing the three remotes I mentioned above, plus remotes for Spotify and Windows Live Photo Gallery. There will be more in the making when I get some free time!

VisualBoy Advance JumiRemote    PowerPoint JumiRemote

That’s the VisualBoy Advance remote on the left, and the PowerPoint one on the right.

There are so many uses for this app, and best of all, it’s free! (Though to get rid of the ads you should consider buying JumiMouse+) If there is not a remote to suit your needs, it’s not too difficult to make one yourself if you’re technologically minded.

JumiTech have released JumiRemotes for Android, if you’re that way inclined.

If you want to find out more, visit www.jumitech.com or go to my other blog at djjumi.blogspot.com, where I’ve made a semi-useful remote to control the Windows 8 start screen.