This month brought Christmas to UVD. Along with the merry vibes came migrating from SHA-1 to SHA-2, making the finishing touches to and deploying a new project, another Sprinter user story and of course the Christmas party.
Multiple user functionality is coming soon to Sprinter. This was particularly challenging as we had little knowledge about how it would work before with OAuth, but through some discovery with the FOSUserBundle and Symfony ACLs (Access Control Lists) we achieved it. Writing Behat tests to manage Refresh and Access Tokens with OAuth was another interesting hurdle we overcame.
Having my first proper full QA session with one of our clients was really useful for me. It gave me a better idea of what they wanted and how they preferred data to be presented. For example, the date was in the standard 2014-12-03 (YYYY-MM-DD) but our client preferred it to be presented in 03-12-2014 (DD-MM-YYYY).
We did a transition from SHA-1 to SHA-2 in order to tighten the security of one of our projects on Google Chrome. Unfortunately we were supplied with a SHA-1 Root certificate which still flagged up as insecure in Chrome, after some more discovery, we found out that Root certificates should not be included in the server’s CA bundle as it’s present within any operating system’s trusted certificate store. This was also really interesting as I learnt how this worked with the AWS load balancer.
Our Christmas party was pretty cool. We went to The Art of the Brick Lego exhibition which had a lot of impressive artwork made entirely out of Lego. Following this, we had a warming Christmas dinner at Bouchon Fourchette and then onto a nearby pub for beers!
There’s been a few new things month. We’ve had Vote for Policies choose us to create their new website ahead of the 2015 elections, SLA agreements with various clients which has involved keeping up with the latest security vulnerability announcements and recognising if our services are vulnerable, and learning about OAuth2 to implement in our Sprinter project planning tool!
Vote for Policies are a very interesting client for me, being someone who doesn’t really follow the media coverage or do much reading on politics, as their aim is to help you choose a political party to vote for based on which policies you agree with.
Being in charge of carrying out weekly security checks on our clients’ servers to check for vulnerabilities has been highly educational for me. I read up on all of the risks that could affect our services; first by versions and then by whether or not we use the technology affected and what the appropriate solutions are.
Sprinter has finally made it’s way to our first release! I’ve had a few complex challenges which I managed to solve by adding more layers to the application to decouple functionality away from other classes. OAuth2 has been one of the most interesting things I’ve learnt through this project so far and I’ll certainly be reusing it when I make other APIs that require authentication and different front-ends.
We’ve also been holding sprint reviews on Friday afternoons where we discuss how we solved different challenges during the week and the other ways we could have resolved them. Next month I’ll be involved in my first code kata, which I’m really looking forward to.
I’ve started trying to mimic the development workflow we use here in my own personal projects with Jenkins, Capistrano, Rake and git flow to improve my workflow overall.
I can’t believe I’m a quarter of the way through this placement already! There were some unexpected challenges this month, most notably finding old client data in the old local server that used to be used for most of UVD’s projects and using Ruby for the first time.
One of our older clients were having some trouble with their website where most of their attachments had gone missing after a long period where their website wasn’t updated. They were using EllisLab’s ExpressionEngine as a CMS which I’d never had any exposure to before, however after a few hours of finding my way through and figuring out how the CMS worked, I found that the problem was that a plugin was missing, re-installing this solved the problem.
Our project planning tool, Sprinter, is well on the way now.
I’ve ran into some quite complex logic that I’m getting into the habit of refactoring out into smaller simpler methods, so that my code is a lot more readable and manageable. I have Chris and Eddy pointing out wherever things could be made simpler in our code review sessions which is really helpful! We’ve now got Sprinter on our testing server where we found a few bugs, so I’m working my way through fixing those.
I’ve been introduced to Semantic Versioning and gitflow which are both great workflows to get into whilst developing so you don’t end up with a dependency lock-up. I was also given some tasks to write in Ruby for Rake. This involved SensioLab’s PHP Coding Standards Fixer, Security Checker which are both useful tools for checking if your code is PSR compliant and if any bundles you use in your Symfony project have known security risks. I’ve written a blog about we’re keeping to PSR1 and PSR2 PHP coding standards at UVD which you can read here.
There’s been a lot of new things I’ve been exposed to this month, and I’m looking forward to learning even more throughout the rest of this year!
This month has been a lot more challenging than my first month. Last year’s placement, Dardan, went back to uni after the first two weeks, and I have taken over a few on-going client responsibilities that I didn’t know a lot about, so I worked closely with him to pick up as much as I could.
My first client challenge was for Havells Sylvania and gave me the chance to practice the BDD techniques that I learned last month. I had to implement a mechanism that would notify us when there was an error in their mailing service so we’d be able to identify when/if those problems occur. I implemented this using Guzzle (a HTTP client written in PHP) which was recommended to me by Eddy.
James and I are now working on the Symfony project that I started last month that I named ‘Sprinter’, which has stuck! We’ve split the project in two; I’m writing a RESTful API as the backend for his frontend driven by AngularJS. Our slick workflow means we’re working on the same user story at the same time using our own BDD tools (Behat and phpSpec for me, CucumberJS for James), then integrating both parts so that we know what we have written works together. I’ve never written a RESTful API before, so it’s been interesting learning about that and I still need to learn more about CORS (Cross-Origin Resource Sharing) to add some security to this.
We’ve also moved to this cool new office space called The Hatch right next to Brick Lane!
I’ve also started reading about, and begun using better practices in Version Control Systems (in our case GIT). Right now I don’t commit as much as I should so I end up with huge commits which don’t allow for flexible changes, but in a few months I hope to be a lot better. This is one of my Learning Objectives for my coursework this year.
My first month has gone by really quickly. On my first day I was greeted by a rowing machine in the middle of the office which I soon found out was being used for a project involving British Rowing.
I was put onto CodeAcademy’s PHP course to refresh my memory of PHP syntax and functionality. I’d only ever used CodeIgniter as a PHP framework before and hadn’t dived into the world of Composer (a dependency manager) or using a more mature framework such a Symfony.
Over the next couple of weeks I was tasked with various Code Katas, which are small programming exercises that you complete and refactor in order to become better at solving problems. These have included a roman numeral generator and a Mars Rover simulator in Symfony. The existing intern, Dardan, has worked closely with me on these Katas, reviewing my code, giving me advice on what to improve on and pointing me in the right direction when I got stuck! After Dardan was happy with my code, Eddy and Chris had a final review and then gave me even more suggestions to refactor and improve what I’d written.
I was taken through how projects are ran, and have been tasked with some quality assurance testing on a website for a cakery called Ooh Lou Lou, which is one of the projects UVD are currently working on. I also joined in on a Planning Poker session that was held to plan an upcoming sprint for our client Havells Sylvania.
I’ve learnt a lot over the past few weeks, the most notable being test & behaviour driven development (TDD and BDD) using phpspec and Behat, which I’d never implemented before.
I’ve just been given an interesting Symfony project to put into practice everything I’ve learnt so far. It’ll be used as a complete tool to log and monitor deployed user stories in project sprints so that we can accurately record velocity. This is a project that we’d eventually like to open up for other agencies to use, so having this as a personal project for me is really exciting.
As well as the work I’ve been given and everything I’ve learned, we have free beer on Fridays and the occasional outing to one of the many pubs in Shoreditch, so I am looking forward to the next 11 months here!