Category Archives: Open source

2014 in review: my IT-related achievements this year

As we’re rapidly approaching the end of the year, I thought it would be good to take the opportunity to review some of my IT-related achievements during 2014.  Overall it’s been a great year and I feel like I’ve learnt a lot, both inside and outside of work.  There were a lot of “firsts” for me this year, too.

1) At the end of February, I attended a tech conference for the first time – NorDevCon (the annual Norfolk Developers Conference).  I enjoyed it and I’ve already booked my ticket for next year’s conference!
2) Also in late February, I began taking my first MOOC (Massive Open Online Course – via FutureLearn, in this case). The course involved learning to develop an Android mobile game using Java.  I found this interesting as I’d always wanted to learn to develop a mobile app. I’ve since completed several other MOOCs throughout the course of the year, many of them through FutureLearn, such as Creative Coding, Getting a Grip on Mathematical Symbolism and Web Science.
3) In March I had my first article published in the Norfolk Tech Journal: A review of the NorDevCon pre-conference special. I’ve contributed several more articles since then – please see the Articles section of this site.
4) Also in March, I created my own GitHub account to share the code from my programming projects.  I have added the code for all my open source personal projects dating back to 2004.
5) In April I published my first app on the Google Play Store and Amazon App Store – this was the game I developed as part of the FutureLearn course mentioned above.  Springy Dot, which is a simple ball and paddle game, can be installed via Google Play Store or Amazon App Store and the source code is available at
6) In June I relaunched my personal portfolio website with a fresh new design and more up-to-date content.  It is also the first time I’ve used a responsive layout for my personal site.
7) At the same time, I also thought it would be a great opportunity to start a tech blog on my portfolio website (you’re reading it now!)
8) Also in June, I successfully rooted my Samsung Galaxy S4, so I have superuser privileges on Android.  I also learnt about custom launchers.
9) Again in June, I successfully relaunched the Norwich IVC social club website using the Agoria content management system.
10) In August I began studying the Linux Foundation course on edX.  Although I’ve been using Linux for several years (I first started off with Ubuntu about 5 years ago, although I’ve since switched to Linux Mint), I wanted to learn more terminal commands and fill in gaps in my knowledge. I completed the course in November and received my certificate shortly afterwards.
11) In September, I began regularly attending the Norfolk Tech Lunches organised by NorDev and SyncNorwich, and I’m now more confident when meeting new people within the industry.
12) Later in September I contributed to the IT department’s Think Tank sessions at work, focussing mainly on personal development and training opportunities.  I ensured I was well prepared for the sessions and spoke up on the issues I felt strongly about.
13) In October I was selected to deliver a talk at the IT department’s quarterly briefing session in front of all my colleagues (40 – 50 people), to present the Think Tank findings (focussing on personal development & training as this is a subject I’m passionate about).  I received positive feedback from my colleagues about my presentation.  Following my talk, the senior management team has set up a corporate subscription to the Pluralsight training website for the Web Development team.  I’ve already begun using Pluralsight to take a course on Apache Solr.
14) In November I successfully installed and configured Arch Linux on Virtual Box.  This was mostly as a learning exercise, as I still prefer to use Linux Mint as my main operating system on my home PC.
15) In late November I contributed my first pull request on GitHub, and I successfully took part in the 24PullRequests contest in December (see my previous blog post for a review of this).
16) Throughout the year I continued to attend NorDev, SyncNorwich and SyncDevelopHER regularly.  I also attended my first Hot Source event in October, about NFC, BLE and contactless marketing.
17) During the course of the year I beta-tested various Android apps, most notably Findery and Voice Polls. It was useful to learn more about the app development process, and also meant I had an opportunity to try out the apps before they were released to the general public!
18) I’ve been supporting various open source organisations including the Linux Foundation, Free Software Foundation, Linux Mint, Mozilla Foundation and Wikipedia (Wikimedia Foundation).  As I appreciate the work of all these organisations I thought it would be good to give back.

So, it’s been an action-packed year for me! I hope 2015 will be just as good.  I’ve written a list of my goals for the coming year:

1) Become an expert in Apache Solr (as used at work).  I’ve already taken steps towards this by studying the Apache Solr course on Pluralsight.
2) Create some new open source responsive web templates (my current ones are several years old and all non-responsive).  It’s mostly a matter of finding some time to work on them.
3) Complete some courses at (I have a 3-month subscription to this).
4) Learn Python/Ruby scripting
5) Possibly learn about writing kernel modules
6) I’m still hoping to be promoted to a non-junior Java Developer role at work.  Becoming an expert in Apache Solr should help towards this.

So, that just leaves me to wish all my readers a Happy New Year for 2015! 🙂

The 24 Pull Requests challenge – getting started contributing to open source projects

Throughout December I’ve been taking part in the 24 Pull Requests challenge.  The idea is to submit 24 pull requests to open source projects on GitHub during Advent, ie, in the first 24 days of December.

I’ve had my own GitHub account since March this year, where I host all the code for my personal open source projects dating back to 2004! (Previously, I was using SourceForge). For example, my first ever project in 2004 was a blogging script and simple content management system using PHP and MySQL. Until now however, I’d never had the confidence to contribute to anyone else’s projects, even though I was interested in doing so. The main reasons why I’d never contributed to anyone’s projects in the past were that I feared I wouldn’t be good enough to contribute, that it would be too difficult and that it would take up too much of my time to do it justice (especially considering I work full time and have a busy social life).

So when I heard about the 24 Pull Requests challenge via Twitter just a few days before the beginning of December, I checked out the website and decided that this would be my ideal opportunity to get started on contributing to open source projects. Although I was still feeling daunted by the size of the challenge, I decided to sign up straight away as I knew it would be a good opportunity and I had nothing to lose. I knew that in order to succeed at the challenge, I’d need to submit an average of one pull request per day.

In the run-up to December, I tried searching for potential projects on GitHub, and I also consulted the list of recommended projects on the 24 Pull Requests website itself.  I looked in the Issues section of each repository to see if there were any easy bugs I could fix, but I couldn’t find any that I felt confident about solving.  At that point, I was wondering if I’d even manage to submit one pull request throughout the 24 days!

Then I came to the realisation that not every pull request has to be a major change.  Even small fixes and contributing to documentation could count as well.  In fact, I made my first pull request a couple of days before the contest actually started. Although I knew it wouldn’t count towards the 24 pull requests, I thought it would be useful to learn how the process works – like a dry run to build my confidence.  There are 3 main steps involved in submitting a pull request: Fork, commit, pull request. So, my first pull request was an addition to the readme documentation for the 24 Pull Requests project itself.  I wrote instructions on how to install the PostgreSQL database on Linux and Windows (I’m familiar with both operating systems).  The pull request was accepted by Andrew Nesbitt, the organiser of 24 Pull Requests, just a few hours later.  I was so pleased – my first ever pull request had been accepted! It felt like a big milestone for me, and also gave me more confidence for the days ahead. 🙂

One of my favourite pull requests involved adjusting the CSS for a technology blog called dev-human.  I improved the appearance of the logo and header when the site is viewed on mobile devices (it is a responsive website using media queries). Some of my other pull requests were for more minor issues, such as typos, grammar and formatting, and there were also days when I struggled to find any suitable projects, but I’m pleased that I did manage to keep up with completing at least one pull request per day.

I found that some pull requests get merged (accepted into the upstream project) almost straight away, which is a good thing, but others are still languishing unaccepted.  Hopefully it just means that the project maintainers haven’t had a chance to review them yet, or unfortunately it could mean that these particular projects have been abandoned.  Either way, every pull request still counts towards the 24, whether it’s accepted by the project maintainer or not.  None of my pull requests were rejected, so that’s a plus!

By Monday this week – 2 days ahead of the deadline – I had completed 26 pull requests.  You can see my calendar of contributions here. I feel pleased with this, especially considering at the start I was doubting if I’d even manage to submit one!

Overall, I really enjoyed taking part in the challenge, and I now feel much more confident about contributing to open source projects. Hopefully in the New Year I’ll be able to continue contributing to some of the interesting projects I discovered.  The 24 Pull Requests contest has been taking place for the last couple of years and is now an annual event, so if you’re thinking of taking part next year I’d definitely recommend it.

If I ruled the web… (proposing an online constitution)

For the final exercise of the Web Science online course at, we were asked to write a short essay on the subject of “If I ruled the web…”   Below is my contribution:

In recent years, the web come under increasing attack from governments and corporate influence, so I think introducing an online constitution would be a positive way of guaranteeing internet freedom.

My idea is that the constitution would:

  • -Guarantee online privacy. No more indiscriminate mass surveillance. A person should only be monitored if there is a very good reason and if there is a court order.
  • Enshrine net neutrality in law (meaning that Internet service providers must treat all information and users equally).
  • Promote freedom of information.
  • Guarantee freedom of expression.
  • Prohibit “on by default” filters. It should be up to parents to organise filtering if they don’t want their children to be able to access certain websites, not the government or ISPs.
  • Ensure data protection. Data should not be collected without users’ consent, and they should be able to request its deletion at any time.
  • Encourage the usage of open standards and open source technology. Publicly-funded organisations should use open source instead of proprietary technology and this should also be taught in schools.

Members of the public would be encouraged to contribute ideas for how the constitution should function and what should be included. People would be able to vote for ideas they like and to improve upon other citizens’ ideas, to ensure the process is truly collaborative and democratic.

A constitution very similar to this was introduced in Brazil earlier this year. The inventor of the world wide web, Tim Berners-Lee also supports the idea of an online “Magna Carta”. So there could be scope for other countries to introduce a similar constitution.

As for problems, I think the main issue would be convincing politicians to pass a bill which is designed to limit their power.