Author Archives: Victoria

My review of Sync The City 2016

My Sync The City team

Sync the City is a collaboration between Sync Norwich – a regular tech meetup in the city – and the

My Sync The City team

My Sync The City team

University of East Anglia. In 2016 it took place from Thursday 17 to Saturday 19 November at Norwich’s King Centre.  Sync the City is a hackathon and tech start-up conference. The objective is to work in a team to create a tech start-up company in just 54 hours.

I took part in SyncTheCity for the first time in 2016. It also took place in 2014 and 2015, but this is the first year that I felt brave enough to take part! I actually paid for my ticket several months in advance so that I couldn’t chicken out at the last moment! I really enjoyed it and I’m glad I went. I thought I would write a review of the whole weekend.

Whilst registering on the Thursday evening, we were given our name badges, a wristband (red for developers, yellow for business people and blue for designers) and a tiddlywink.

Attendees wanting to pitch a business idea then presented a one minute talk to the rest of the Sync The City participants (an audience of roughly 200-300 people).  You didn’t have to pitch an idea in order to attend, and attendees could pitch more than one idea if they wished to do so.  After the first round of pitches, the judges thought there wasn’t enough ideas so they gave the audience a second chance to see if anybody else wanted to pitch, which yielded many more start-up ideas.

There were 29 pitches in total.  The most notable ones were an AI-powered shopping list, a platform for socially-responsible businesses to make donations, autonomous tracking & scheduling for trucks, a fact-checker for news stories shared on social media, a safe collaboration tool and AI chatbot for bullied children, a student sign-in system for university lectures, and – most unusually – a service to re-use hair-cuttings from hairdressers and turn them into sustainable clothing.

However, only 12 pitches could be taken further and so the voting started on which ideas would be successful! This is where the tiddlywink came into play – you simply placed your token in the cup of one of the pitchers and those with enough votes then continued on to the next stage.

Once the 12 successful pitches had been announced, all attendees then approached the pitcher whose team they wanted to join.

I was lucky enough to get into the team that I wanted; in fact I was the first person to approach the pitcher. James Harding’s initial idea was to build a crowdsourced local news website using Drupal.  This particularly appealed to me as I work in the news publishing industry and have experience of building news and magazine websites using content management systems (although I didn’t have specific experience with Drupal, I have significant experience with WordPress and Polopoly, the latter of which I use as part of my job).  I introduced myself and my skills to the James and he was very happy to have me as part of his team.  Over the next few minutes, other Sync The City participants approached our table wanting to join our team.  We ended up with 6 developers, 1 designer and 1 business person, who became our project manager.

On the Thursday evening we were also introduced to our mentors – the mentor for our team was Ermine Amies from Sandler Training.  I had met Ermine before at other SyncNorwich and SyncDevelopHER events and found her very inspiring. Her advice during the Sync The City event was invaluable, ensuring that we investigated which markets to focus on, and where exactly the revenue would be coming from.

As mentioned earlier, we were originally going to build a crowdsourced local news website. However, a couple of hours later, after further discussion and debate amongst our team, we decided to change (pivot) our idea to a crowdsourced local events listings and blog website, as we felt the initial idea was too broad in scope.

Our team hard at work

Our team hard at work

We then split off into sub-teams based on our skillsets – one group hit the streets of Norwich and carried out some market research into how people get information on what’s going on in the city and how they discover events.  Another group (which included myself) carried out competitor analysis into existing local events listings websites to find out what features and functionality they offer, and came up with ideas on how we could differentiate our own offering.  The final sub-team carried out some initial research into the technology stack that we could use for the new site.

During our competitor analysis we found that other local websites such as Outline Online already offered similar functionality, so the whole team got together the following morning to discuss the next steps. We then decided to build an AI events chatbot instead of a website – this was the final pivot of our start-up idea.

On the Friday I attended one of the start-up conference sessions which were included as part of the event – it was a session about user interfaces and user experience design. When I got back to my desk, I carried out technical research into website scraping methods and building a simple website scraper in Python and PHP, and I also learnt how a simple chatbot is built in Python.  These areas were both new to me, so it was an interesting day although we built the final product in PHP, using Ubisend for the chatbot service.

On the Saturday I worked with a group of business experts to create a business plan canvas. I helped with the preparation for the final pitch – I watched one of the rehearsals and came up with ideas for improvements (along with the mentors/judges who were helping out), and I also came up with a plan for moving customers from the freemium plan to the premium plan. In addition to this, I carried out market research (including interviewing students on other tables asking how they find out about events and whether they’d be willing to pay for an events chatbot service), graphic design (I designed branded promotional

The promotional stickers I designed

The promotional stickers I designed

stickers to go on packs of sweets to be given out to the audience at the grand final). Later in the day I played the role of a social media manager, setting up and running the official Twitter account for HublLocalPlanet.

On Saturday evening, the event was opened up to the public for the final pitches and the prize-giving.  Two prizes were available – a prize awarded to a team chosen by the judges, and a prize for the People’s Choice, where everyone that had participated as well as the audience got to vote on who they thought had the best idea. Pantry – an intelligent shopping list which can recommend healthy options and tell you when you need to buy milk –  was named the winning idea by the judges and scooped the £3,000 top prize. The £1,000 people’s choice prize, voted for by participants and the audience, was won by bullying advice bot Hector Help. Unfortunately our team didn’t win a prize, however I thought the winners were very deserving.

After the final pitches and the prize-giving, Harry Harold from NeonTribe asked us if we wanted to help out with creating a chatbot for one of their clients.  I couldn’t take part in this as it was during working hours so would have suited a student who has some free time during the week.  However, I was really pleased that someone well-known in the local IT industry thought highly enough of our work that they wanted a person from our team to help them with a project.

Overall, I think the event was great fun and I feel like I learnt a lot about what’s involved in creating a tech startup. It was my first year taking part and I think it has improved my self-confidence.

Our final pitch

Our final pitch

It was a good experience working with team members, mentors, suppliers (eg Ubisend), business experts from other teams and King’s Centre staff.  I had never worked such long hours before! On the Friday, I was there from 8am to 11pm, and Saturday only finished slightly earlier.  It was certainly an experience to remember.

The main things I learnt from the weekend are as follows: how to decide on what technologies are appropriate given the scale and time period in which you have to complete the project, the importance of time keeping and making sure you and your team are on track with your estimates, and good communication between team members is key!

For anyone thinking of taking part in future years, I would say that you don’t have to be a developer to get something out of it – as long as you have an idea of a product, or some knowledge about business or design, you will be a valuable asset to whichever team you join. And you never know, you might just stumble onto something that will change your life.

Event photos courtesy of Tim Stephenson Photography.

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 https://github.com/JavaDevVictoria/Springy-Dot-Android-Game
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 Treehouse.com (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 FutureLearn.com, 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.

References:

http://rt.com/news/154168-brazil-internet-freedom-law-conference/

http://www.theguardian.com/technology/2014/mar/12/online-magna-carta-berners-lee-web

Review: Norfolk Developers – BDD Workshop with Seb Rose

On Tuesday 21st October I attended the Behaviour Driven Development (BDD) Workshop facilitated by Seb Rose at the King’s Centre in Norwich.   Although I have some experience of Agile development techniques, I came to the workshop with no previous knowledge of BDD.  I chose to attend the day-long course as part of my continuous personal development objectives for 2014, as I was interested in gaining an understanding of BDD and seeing if it’s something that can be implemented in my team’s day-to-day work.

Introductions and objectives for the workshop

For the first activity of the day, in order to find out about each other, each of us interviewed the person sitting next to us (asking name, job title/company, previous experience with Agile & BDD, and goals for the day) and fed this back to the rest of the attendees.  Seb then outlined the objectives for the workshop:

  • understanding what BDD is
  • practising and identifying examples
  • building consensus about when to use these techniques within your team.
People's goals for the course

People’s goals for the course

History and aims of BDD

Seb then talked about the history and reasoning behind BDD.  The Agile software development manifesto was created in 2001 and BDD was devised soon afterwards. It is designed to address the weaknesses of existing development methodologies such as the waterfall method. Depending upon which academic study you read, the failure rate of large systems projects is reported as being between 50%-80%.

The main advantages of BDD are that you get continuous feedback from your customers, and you have predefined criteria for the success of a project.  Getting continuous feedback is crucial since the cost of changing your requirements increases dramatically as the project progresses.

BDD builds upon test driven development (TDD).  In TDD, you work from the outside-in, use examples to clarify requirements and develop and use a ubiquitous language (ie a language without ambiguity).  In BDD, you also focus on value, discover examples collaboratively, and create living documentation.

Seb explained the problem domain and solution domain in software development.  Stakeholders, customers, users, business analysts and project managers are focused on the problem domain.  Programmers and testers (including tech leaders and solutions architects) are focused on the solution domain.  BDD is key towards getting these two groups of people to communicate across the divide.

Deliberate discovery

For the second interactive task of the day, we split into several groups where some of the members were regular users of Twitter and others were non-users (or not so regular users).  The idea was to talk about how Twitter works and the less experienced users could ask questions of the more regular users.  In BDD, this type of process is known as “deliberate discovery”.

Everyone in the group learnt something, including the experienced Twitter users. For example, in my particular group we discussed why the maximum length of a tweet is 140 characters.  I knew that the character limit for SMS messages was historically 160 characters (although modern smartphones concatenate longer messages seamlessly), but although I am a regular Twitter user I wasn’t sure why the tweet character limit was 20 characters shorter.  It turns out the reason is that Twitter usernames can be up to 15 characters long, and 5 additional characters are reserved for the “RT @” at the beginning of an old-style retweet. So this ensures that a tweet could fit comfortably within the SMS character limit.

The “3 Amigos”

In BDD, deliberate discovery takes place during a “3 Amigos” workshop.  This consists of a product owner, a developer and a tester, although it is permissible to invite more than 3 participants to the meeting – for example you could also have a user experience expert and a facilitator.  As long as there is at least one representative of each of the aforementioned groups, that is fine. Thus, it involves bringing together people with different views and asking them to discuss user stories, acceptance criteria and examples.  Everyone has to participate in the discussion and challenge the current understanding of the project requirements.

A user story describes what a user does or needs to do as part of their job role.  Acceptance criteria are the high-level rules and requirements for a project or product.  Examples are intended to illustrate the rules and to explore the acceptance criteria.  The advantages of concrete examples are that they help to clarify misunderstandings, identifying one example helps us to see others, and they also help us to explore the scope of a project.  Furthermore, examples are ripe candidates for creating automated tests.

User Stories

User Stories

Seb recommends using colour-coded cards during the 3 Amigos workshop:

  • Yellow for user stories
  • Blue for acceptance criteria
  • Green for examples
  • Red for open questions

Rules vs Examples

Before breaking for lunch, Seb set us a task which involved splitting into teams to play a “Rules vs Examples” game (also known as the passwords game).  The scenario was that we were working for a bank, and each team had to devise 3 rules for users to create a password.  For example, one rule could be that the password must be at least 8 characters long.  Then we had to write down 3 sample passwords on a card – 2 of them were valid according to the criteria, and 1 was invalid.  Then we passed the card to the team on the neighbouring table (letting them know which passwords were valid and invalid) and they had to try and reverse engineer the rules using a process of deduction.  Then once the rules had been deduced, they had to create a new password that meets the criteria.

The task was very difficult as we were relying on the examples alone.  The purpose of the exercise was to demonstrate that we need both rules and examples when defining project requirements.

PasswordsGame

Instructions for the passwords game

A 3 Amigos workshop in action

In the afternoon, we all split into groups of 4 or 5 to participate in a sample 3 Amigos workshop.  We were all given the scenario of working for a startup building a Twitter clone called Squeaker, and each group was given a separate feature to discuss.  My team’s task was to brainstorm the features related to following users.  Our fundamental user story was “As a user, I want to be able to follow a user”.  The acceptance criteria for this story was being able to successfully follow a user after searching for their username, and one of the examples was that when you search for a user named Fred (assuming this is a unique username), you will then be successfully following him.

This particular group discussion became much deeper than I originally anticipated.  One user story and acceptance criterion would lead to another – for example, we ended up discussing what should happen if a user is on the website and their internet/3G connection drops out just as they click on the Follow button – should an error message be displayed, and should the follow request automatically be resubmitted once the internet connection returns?  For some of the more open questions, you may need to ask someone else in the business for clarification and come back to it later.

Colour-coded cards used during the 3 Amigos workshop

Colour-coded cards used during the 3 Amigos workshop

Discussing how BDD could fit into your team

In the final task of the day, Seb asked us to split into groups depending on what company we work for, and discuss how BDD could fit into our day-to-day work.  There were large numbers of people from both Aviva and Proxama, who split into their own groups.  The remainder of us (which included me, as I was the only attendee from Archant) formed an “independent” group where we agreed by consensus who (eg, developers, business analysts, testers etc) should do each part of the BDD process and the timescales for these processes.

Our proposed implementation of BDD

Our proposed implementation of BDD

Final thoughts

In summary, I found the course very interesting and I have plenty of new knowledge to take back to my department.  I liked that the workshop was very interactive and I had the chance to speak to people from a variety of companies and backgrounds.  I found the last task of the day (working out how BDD can fit into your team) quite difficult as it seemed to be aimed more at project managers/business analysts than developers.  Overall, I feel that I now have a much clearer understanding of BDD and how it can be put into practice.

My most visited sites for Wednesday 8th October 2014

I’m currently doing the Web Science online course at FutureLearn.com.  I’m in the first week, and one of the tasks asks us to analyse our recent browser history to find out what sites we visit most frequently.  I often delete my browsing history and cache, so I only have the data for today, but it’s still interesting nevertheless.

So here’s my top 11 most visited sites for today:

  1. edx.org
  2. google.com
  3. live.com
  4. linuxmint.com
  5. meetup.com
  6. firstgroup.com
  7. facebook.com
  8. futurelearn.com
  9. edp24.co.uk
  10. twitter.com
  11. amazonaws.comfsu.edu

This demonstrates that at the moment I’m regularly visiting a mixture of MOOC (online course) sites, search engines, social networking sites, bus timetable sites, techie sites and local news sites.  This is on my home computer – the sites I visit on my work computer will be very different (mostly related to web development and the sites I’m currently building).

The History Visualiser website provided via the Future Learn course also enabled you to generate pie charts showing your most frequently visited sites. Below is mine – it’s interesting that I visit more .com sites than .uk ones:

My most visited sites - 8th October 2014

My most visited sites – 8th October 2014

My new portfolio site is live!

For the past couple of months I’ve been giving my online portfolio a refresh, and I also intend to update my blog a lot more than I did in the past.  I’m now using a responsive WordPress theme, with my own daffodils image in the header.

I have been inspired to start blogging again by seeing other local techies’ blogs, and also because I think it would be good to share my ideas and opinions on IT.

My main interests are Java, server-side development, client-side development, the Polopoly content management system and the Norwich tech scene.

I’ll be posting more over the coming days.

Thanks for reading and I hope you like the new site!