Stream

Hybrid Radio

I am developing an internet enabled FM radio for my 3rd year Electronics project.

What does that mean?

Well, you take the standard FM radio and and connect it to the internet, this allows the radio to get extra content for the user including text and images. It also allows it to push information back to radio stations and other web services.

I will be implementing a new technology called RadioDNS.

RadioDNS is open technology that lets broadcast radio and the internet work together: enhancing the listener experience, and making radio better.

This new technology is based on the DNS system that holds the internet up, allowing you to resolve URIs pointing to online content to support radio listening.

By the end of the project, I want to create a usable product that will have some form of user input(s) and of course visual and audio outputs. It will try and be as portable as possible making use of Wi-Fi and/or 3G connectivity, while maintaining main functionalities even when offline.

We have 3 lectures next week to give us final details on how the projects run and then I have free reign over what I do then.

20 years of Glasses - A Sample

This is a sample of the numerous pairs of glasses I have been through in 20 years. They are, what I can tell, in chronological order, oldest at back to most recent at front. They have been accumulating in my house. I took them to the opticians today for recycling, they were very grateful.

Timeline of Glasses

Firefox Aurora Web Inspector

I downloaded the pre-beta version of Firefox, named Firefox Aurora. I started experimenting with it and it seemed alright but did not support the range input type which was sad, but then I right-clicked and opened up the web inspector and saw this:

WOW! - Very cool.

The 3D view of the page structure allows you to pan around and zoom using WebGL. More details are on the Mozilla Development Blog.

Happy Birthday from Google

It was my birthday the other day, yey, Happy Birthday to me and I had a nice surprise from Google.

Google Homepage

I thought it was for a famous birthday but on clicking the logo, it took me to my Google+ page! Nice touch, thank you.

Android Read Log Permission

When reading this post about the Facebook SDK writing a line to your Android phone's log file, I was interested to see what other applications wrote sensitive data to the log.

The log is available to any application that has the READ LOG permission. This permission is marked dangerous but users are confronted with this message:

Allows the app to read from the system's various log files. This allows it to discover general information about what you are doing with the tablet, potentially including personal or private information.

From what I have seen, that word "potentially" needs to be changed to "most definitely".

On my Samsung Galaxy S2, I found that all my texts and emails were written to the log file in plain text. I even wrote a proof of concept application to read my emails.

I see no good reason as to why applications would need to write any private data to the log. The permission is there in the first place for easy debugging which makes sense, but just writing whole emails and texts to the log makes no sense. When I receive a text, a notification is written to the notification bar which includes the text contents, including the name of the contact - this whole string, for some reason, is written to the log file. Likewise whenever I open an email in the Gmail application, the whole content of the email is written to the log file.

I did try and reach out to Google and Samsung about this issue, but after a couple of weeks have not heard anything back.

Google do not seem to be following their own advice that states:

Application developers should be careful writing to on-device logs. In Android, logs are a shared resource, and are available to an application with the READ_LOGS permission. Even though the phone log data is temporary and erased on reboot, inappropriate logging of user information could inadvertently leak user data to other applications.

Over The Air

Last week, Ali and I attended the 2012 Over The Air, a mobile applications themed hackday. It was held at Bletchley Park, home to the National Museum of Computing, among other things.

There was an extremely packed schedule comprising of talks on a whole manner of subjects relating to the mobile web. I managed to attend the talks on QR codes, WebRTC, Facebook Graph API, O2 Labs and the keynotes.

I would have loved to have seen more, however, we had a hack to build.

Ali had an mbed and a GPS/GPRS module that he had used for his solo project. We decided to use the mbed platform as they were at the event with Vodaphone 3G dongles. We created Dude, Where's My Car?

The mbed device, connected via the 3G dongle, sends GPS co-ordinates to the server every few seconds. These appear in the timeline on the website. You can then create a trip by selecting start and stop positions which is then shared with your friends on Facebook using the open graph API. We made actions of going on a trip which had properties including the trip name and geo-location data.

Ali also had a OBD (On Board Diagnostics) interface that connects to a car. Through this device, the mbed could get a number of parameters from the car such as speed, throttle, rpm, engine temperature etc. This data was added to the server along with the GPS and pased through to Facebook wihin the open graph metadata. It was then used to generate averages, minimums and maximums for the car data. All this then appears on your Facebook timeline looking like the example below.

Facebook Timeline Post

We demo-ed our hack to the judges and audience and ended up winning both the Facebook Open Graph Challenge and the Embedded Hardware Hack Challenge. They loved how we took the real-world action of driving and sharing that with your friends.

The Spoonheads are in my Wi-Fi

Wi-Fi

As seen in last nights Dr Who Episode, a mysterious Wi-Fi hotspot has appeared with an SSID of "┓┏ 凵 =╱⊿┌┬┐"

HTML Microdata - Event Markup

For the 2013 Central Hall Musical Society's production of West Side Story, I was invited to design and make the website to allow registration, cast audition bookings and ticket sales. I used the Foundation CSS and JavaScript framework along with a jazzy font from Google called Alfa Slab One.

There were 2 main things I added in differently to this site compared to the 2 I had previously developed for the Central Hall Society. The first one was from a design perspective, and the the second was microdata.

CSS3 Transformation Animation

For the teams pictures, I added in a CSS3 transform that titled their heads at an angle, where on hover the angle changed giving a slight spin appearance. This was done with a few CSS declarations.

figure img{
  -webkit-transform: rotate(353deg);
  -webkit-transition: all 1s ease;
  -ms-transform: rotate(353deg);
  -ms-transition: all 1s ease;
  -o-transform: rotate(353deg);
  -o-transition: all 1s ease;
  -moz-transform: rotate(353deg);
  -moz-transition: all 1s ease;
  transform: rotate(353deg);
  transition: all 1s ease;
}

figure img:hover {
  -webkit-transform: rotate(355deg);
  -ms-transform: rotate(355deg);
  -o-transform: rotate(355deg);
  -moz-transform: rotate(355deg);
  transform: rotate(355deg);
}
HTML Microdata

After writing up the markup and adding the CSS to match the design, I looked at exposing the event data to search engines via microdata.

By adding directly to the existing HTML markup, I was able to identify the event type, the performer, the location and the date.

<section class="row" itemprop="event" itemscope itemtype="http://schema.org/TheaterEvent">
<header class="eight columns">
<h6><span itemprop="performer">The <span itemprop="location">University of York</span> Central Hall Musical Society</span> presents</h6>
<h1 itemprop="name" style="text-transform:uppercase">West Side Story</h1>
</header>
<article class="four columns">
<h2>Week 5, Spring Term</h2>
<h5 itemprop="startDate" content="2013-02-07">Thursday 7th</h5>
<h5>Friday 8th</h5>
<h5 itemprop="endDate" content="2013-02-09">Saturday 9th</h5>
<h4>February 2013</h4>
</article>
</section>

When the search engine robots index the page, they should be able to pull out the data and use this to provide more relevant results. Google provide a tool to test the end result.

Search result as it appears in Google with event date and location

It was very interesting to see all the types of different things you can markup and expose data for, a list is on the schema.org site.

Train: Bristol to Cogan

Similar to my Bus: York to Leeds post back in 2010, I thought I would do a similar analysis for my commute for the last couple of years.

I took this journey twice each working day for 2 years before moving to Cardiff. I wondered how many miles and hours I have spent on the trains.

The Map

Distances

Distance per Journey37.3 miles
Distance per Day74.6 miles
Total Distance74.6 miles x 5 days x 90 weeks = 33,570 miles

Cost

Cost per Ticket£12
Total Cost£12 x 5 days x 90 weeks = £5,400
Petrol Costs33,570mi x 35mpg x 134p = £5842.87

Taking the train has cost 92% of what it would have cost for fuel alone if I had used a car

Time

Time per Journey85 minutes
Total Time85 mins x twice a day x 5 days x 90 weeks = 53.125 days

Final percentage for you: the time I have spent on the train is equivalent to 7.27% of the 2 whole years!

Getting Involved in Open Source Projects

Earlier this month, my first patch to an open source project was accepted. It was a thrill. In all these years of using open source libraries and software, I have never once given back to the community. I have made my own work open source under the MIT licence and have it hosted on the popular GitHub. I can't wait until my next pull request/submitted patch.

So how did it come around? Well I was reading the documentation on HBase at work, trying to work out whether I could get a description of a table. I found as I was scrolling through the docs that the font size was growing ever bigger.

Like a good citizen I fired up the Apache Jira and created my ticket feeling very proud of myself. It is not the first issue I have raised on an open source project. I am too eager to fire off an issue for someone else to solve. This time however, the project lead thanked me for my bug report but then asked if I had a patch. I thought to myself, who me? You trust me to dive into your project and change the code??

Well of course, that is what open source projects are all about - letting other people contribute, not just free stuff! So I thought, ye I can take a look at this closer and see what the problem is causing the font to get bigger.

I found that some javadocs in the class had some unclosed <code> tags. I looked around at other issues on the project to see how one even would submit a patch. I could see that some resolved ones had the code attached to the ticket itself. I thought this was a bit strange at first, why would you attach the code to the ticket? Surely the source control system would be suited to do this in some form of way.

Anyway, after some googling, I found how I could create the .patch file from the git command line:

git diff > mypatch.patch

I submitted the patch and the project lead thanked me and after some e-mails from a robot that does the automated tests, code qulity checks and build, the ticket was marked as resolved and now the online documentation is fixed!

It gave me a small sense of pride and am looking forward on creating my next patch. I may even try and find one that is more technically challenging.

The Big Five Restaurant Website

One of the first websites I made and the first one I was paid for, for The Big Five Restaurant which was opened in Llandrindod Wells

jekyllandhydeyork.co.uk

A website for the University of York's Central Hall Musical

Music Wall

An application that plays and displays your Facebook Friends music likes on a giant wall

Location

See where I am and where I have been. On interesting journeys, I track my location using the Google Latitude.

Friend Map

A map of the world showing you the hometowns of all your Facebook Friends

Drop

A file sharing service using HTML 5 'drag and drop' and the File API

On Radio

What is currently playing on BBC Radio 1, 1Xtra, 2 or 6music? With show and artist information along with pictures and audio.

On The Run

Made by Andy Mitchell and myself for LeedsHack, you can enter an amount of money you have and it will tell you all the nice places you can go with BMI

Foebook

People are mean to each other. Friends on Facebook are sometimes not that friendly - here is a live stream of those times.

API

I provide an API that let's you easily use my data in your applications.

Artist Search

Find an artist, get some information, listen to some music. Simples.

SMS Statistics

Some colourful real-time graphs showing when who and what kind of texts I send and receive thanks to the #blue service from O2

Stream

A real time stream of online activities such as tweets, status updates, uploading photos, listening to music, geo-location, forks on github and iPlayer views to name but a few.

GMJ Handmade Jewellery

My sister makes jewellery and I was interested in doing some more jQuery stuff. Put the two together and here is a mini-site that shows off some of her work and some CSS3, HTML5 and jQuery stuff of mine.

Cleversounds

Register your bluetooth MAC address and link up your favourite artists via Facebook and LastFM and your favourite music will play in the bars and restaurants you go to. Made at Music Hackday London 2010.

DJ

Information, photos and track-listings for past musical events. I am available to hire as the DJ at your next event.