<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title>Fishrod Interactive</title>
    <link>http://www.fishrod.co.uk</link>
    <description>Fishrod Interactive Feed</description>
    <language>en-us</language>
    <generator>Symphony (build 2.2.1)</generator>
    <atom:link href="http://www.fishrod.co.uk/rss/" rel="self" type="application/rss+xml"/>
    <item>
      <title>Improving Local Development with Virtualisation</title>
      <link>http://www.fishrod.co.uk/blog/improving-local-development-with-virtualisation/</link>
      <pubDate>Tue, 01 Jan 2013 15:43 +0000</pubDate>
      <guid>http://www.fishrod.co.uk/blog/improving-local-development-with-virtualisation/</guid>
      <description>History
Over the years we have moved away from the standard PHP websites that require nothing more than a LAMP stack (Linux, Apache, MySQL and PHP). We now build web applications that have specific requirements. For instance our recent projects with British Sky Broadcasting required FFMPEG and ImageMagick to run. We bagan to encounter problems with developers running different development environments and versions of programs that our applications depended on. We toyed with PHPRack, and found it to be invaluable with ensuring that the environment that developers worked in are consistant. This brought about several questions... Why are we installing things like FFMPEG and ImageMagick on our local machines? What happens when another project requires a different version of a dependancy? Why are we wasting half a day setting up local environments?
VirtualBox
For us the solution was quite obvious. We usually offer our clients two levels of hosting.

VPS
Dedicated

The solution lied within Virtualisation (VPS). With virtualisation we can set up bespoke environments within minutes and clone them so that they can be used on other similar projects by all developers. We can ensure that the application is self contained within it's environment. What's more, we can also ensure that the environment that developers work within to test their code is exactly the same or similar to what's on the production environment. The process of creating and distributing development environments through VirtualBox was the best option for us. It meant that there were no big licence fees as VirtualBox is free and open source.
This solution works perfectly for us. For every project there is a wiki and for every project wiki there is a VirtualBox image for developers to download.
We wanted to make the process of downloading and setting up Virtual Machines slicker and faster, ideally we wanted to use a single command to download and set everything up. The solution came in the form of Vagrant. Vagrant allows you to set up a virtual machine in VirtualBox, package it, and create configuration files that make setting up port forwarding and running scripts on the virtual machine as part of the setup process a doddle. Not only this, but vagrant will allow you to create configuration files as part of your project, so it's simply a case of running "vagrant up" once you have checked out your project to setup the development environment.</description>
    </item>
    <item>
      <title>We are recruiting!</title>
      <link>http://www.fishrod.co.uk/blog/we-are-recruiting/</link>
      <pubDate>Wed, 23 Nov 2011 11:01 +0000</pubDate>
      <guid>http://www.fishrod.co.uk/blog/we-are-recruiting/</guid>
      <description>Fishrod Interactive are looking to expand their technical team and are currently recruiting junior developers to join us on both a permanent and contract basis.As a junior developer you are required to assist the Tech Lead on Installation, Web and Mobile projects. These essential skills are required to fulfil this role:

A great understanding of XHTML (4 &amp;amp; 5) and CSS (2 &amp;amp; 3)
A basic understanding of Linux, Apache, MySQL and PHP (LAMP)
Knowledge of JavaScript or a language related to ECMAScript such as ActionScript
The ability to refractor and optimise your code
The ability to work independantly

And the following are desirable skills:

A basic understanding of Objective-C or a subset of Objective-C such as C/C++
Understanding of the MVC design pattern
Knowledge of the Zend Framework
A basic understanding of TDD principles and how to Unit Test in PHP, JavaScript and Objective-C

If you are interested in this role please get in touch at hello@fishrod-interactive.co.ukNO AGENCIES</description>
    </item>
    <item>
      <title>Steve Jobs Tribute</title>
      <link>http://www.fishrod.co.uk/blog/steve-jobs-tribute/</link>
      <pubDate>Thu, 06 Oct 2011 16:54 +0000</pubDate>
      <guid>http://www.fishrod.co.uk/blog/steve-jobs-tribute/</guid>
      <description>I haven’t looked back since, and 5 years later our office is littered with sexy aluminium iMac’s, Mac Pro’s, Mac Book Pro’s, iPad’s and iPhone’s. We chose Apple not because of its status or it’s cult following, but because everything just works! Using mac you soon find yourself working to those same principles, that everything you create should be a pleasure for the end user, should evoke emotion and inspire people to create themselves. Some might call it micro management or being anal retentive but boy did Steve Jobs make sure that every product produced by Apple was awe inspiring and beautiful. Steve Jobs brought the word beautiful to technology, and that alone is a pretty epic achievement! Steve Jobs, you’ll be missed; you have inspired a generation of geeks and made a lot of regular people fall in love with their gadgets. I hope Apple continue to follow in your footsteps.
Gavin Williams - Technical Director
 
I awoke this morning to news of the death of Apple’s Steve Jobs, a man who has had a massive, if indirect, affect on my life. Ten years ago a relative returned from New York with a device that completely blew my 12-year-old self away. That device was the original iPod, and as a kid who until then was used to lugging around a Walkman and a stack of CD’s the thought of having access to that much music so easily was incredible. Several years later and I had one of my own, which served as a gateway into a range of Apple products.  Apple continues to be an integral part of my daily life, making my use technology easier and more enjoyable for work and leisure. My experience with Apple is by no means exclusive, and this can largely be attributed to one man. Much has been made of the company’s staggering growth over the last decade to great financial success. However, to simply acknowledge Steve Jobs’ legacy as an increase in profit would not do his vision or impact on the tech industry, and indeed wider popular culture justice. Under his watch Apple completely changed the consumer electronics landscape and the way we all consume media. The world lost a true creative genius today, whose influence will be sorely missed far beyond the confines Apple.
Ben Sanchez - Brand Manager 
 
 
 </description>
    </item>
    <item>
      <title>Future of Mobile</title>
      <link>http://www.fishrod.co.uk/blog/future-of-mobile/</link>
      <pubDate>Mon, 19 Sep 2011 16:30 +0000</pubDate>
      <guid>http://www.fishrod.co.uk/blog/future-of-mobile/</guid>
      <description>The beauty of this game engine is that anything created can by played on the majority of web browsers, including iOS, and we’ve been addicted to his Biolab Disaster game since seeing him demo it.
X.Commerce also gave a couple of talks throughout the day and got us all thinking about how the future of technology will be powered through buying and selling. Their platform brings together merchants and developers in an attempt to provide better end to end retail experiences; utilising the existing technologies of Paypal, Ebay and Magneto. Another company dealing with money represented at the conference was Dwolla. CEO Ben Milne explained that Dwolla is an entirely new system for making payments, selling itself on its simplicity and lack of charges for merchants or sellers compared to those that can be incurred when using traditional card services. Dwolla has also launched a proximity based mobile app which could transform the way we make payments offline as well. Although this service is currently unavailable outside of the US it promises to be the next big thing in sending and receiving money.
A common theme throughout the day was HTML5 and how it can be utilised in app development. We were shown PhoneGap and how easy it is to quickly and effectively make a cross platform app, alongside a very nifty tool that removes the need to debug on the device itself. HTML5 is moving on in leaps and bounds, and the debate as to whether it is 'better' that developing applications natively continues to be a hot topic. We've brought a lot of ideas back from Future of Mobile and are excited about implementing them.</description>
    </item>
    <item>
      <title>London Launch Party</title>
      <link>http://www.fishrod.co.uk/blog/london-launch-party/</link>
      <pubDate>Thu, 15 Sep 2011 10:26 +0000</pubDate>
      <guid>http://www.fishrod.co.uk/blog/london-launch-party/</guid>
      <description>This gave us a chance to meet some of our new neighbours in the offices, as well as showcase some of our work. Our new location places Fishrod in the thick of the UK’s development community as we continue to build our portfolio of clients and work.</description>
    </item>
    <item>
      <title>24 Hour iPhone App</title>
      <link>http://www.fishrod.co.uk/blog/24-hour-iphone-app/</link>
      <pubDate>Wed, 03 Aug 2011 23:40 +0000</pubDate>
      <guid>http://www.fishrod.co.uk/blog/24-hour-iphone-app/</guid>
      <description>We're a big fan of 20% days, as they allow developers to relax and focus on learning new concepts and ideas that they may not necessarily explore on client projects. The beauty of this is the fact that work produced on these days will often be fed back into pitches and solutions for clients.
One of the challenges we found with taking on work placement students has been finding the time to both teach them new concepts but to also have them work on client work. We introduced 20% days as a way to allow them to explore new interests such as iOS development or Node.JS and gave them the tools and the knowledge to produce a simple project. This also gave us time to find out what they really wanted to learn and develop.
When given a simple concept it’s always easy to deviate from it and add exciting features, this is called scope creep. This is understandable, however we found that by teaching them the concept of iterative design and development, they could put these extra features aside for a later release and focus on the task at hand using the available time. This meant that they could really focus on producing a polished app both in design and development that they could be proud of.
Our other big challenge was teaching them how to code in a completely different language. We experimented with various learning techniques such as leaving them to learn independently as a team and jumping in only when we were asked for help. We also devised a laptop test, where we would teach our students how to code using a simple project with a laptop until it had 5 minutes of battery left. We would then tell the students that they had 5 minutes to finish the app before the laptop’s battery ran out. This freaked our students out but it put them in a pressured situation where they really had to think for them selves and use the knowledge we had given to them.
The end result of this is a simple, yet polished iOS app made within 24 hours by work placement students who had previously no knowledge of iOS Development or iOS Design. Make sure you download it now from the App Store.

Please don’t shake it more than 5 times!</description>
    </item>
    <item>
      <title>Automate Everything with Continuous Integration</title>
      <link>http://www.fishrod.co.uk/blog/automate-everything-with-continuous-integration/</link>
      <pubDate>Mon, 06 Jun 2011 13:17 +0000</pubDate>
      <guid>http://www.fishrod.co.uk/blog/automate-everything-with-continuous-integration/</guid>
      <description>The Guts of a Good Continuous Integration Setup
Continuous Integration is most useful when you have several developers on a single project working on the same piece of code, and you need to automatically merge all of their changes as they happen, test and deploy it to some kind of staging environment.
Build Tools (ANT/Phing)
A build tool will allow you to do those very tedious tasks that need to be run before any kind of deployment to a local/staging/production server. It could be anything from running MySQL Delta's to make sure your database is in sync with a production/staging database, to replacing environment variables in your PHP source files. Build tools are most common in languages that need to be compiled, such as Java and Objective-C/C.
From a PHP point of view, you don't need to compile PHP like you have to with a Java or Objective-C based project. A build for PHP will allow you to do things such as:

Minify and optimise your client side assets (CSS/JS/Images) automatically using YUI Compressor or ImageOptim, so you don't have to do it server side
Compile your SASS/LESS CSS based files
Run your PHPUnit, QUnit and QMock tests
Run your Selenium browser based acceptance tests
Deploy everything to a dev/staging environment if all of the above pass with flying colours!

Basically, anything that can be run from the command line, can be run from ANT. We have chosen ANT as our build tool. This is simply because it comes pre-installed with Snow Leopard and Snow Leopard Server and it plays well with Zend Studio. Phing is perfectly adequate and, is in-fact, a much better choice for PHP projects, as it's written in PHP so you can create your own extensions/plugins quite easily.
Testing (Selenium, QUnit, PHPUnit, QMock)
Testing is critical when building large scale applications. Unit testing allows you to test individual blocks of code whilst selenium will allow you to automatically poke and prod at your website in a browser and verify the results to your hearts content. Once you write your tests, you can then execute them when you change your code to ensure that everything still meets the business requirements and expectations.
SCM (SVN/Git/Mercurial and the rest)
SCM is the preferred choice when working on your own or extremely large development teams. SCM allows you to checkout your own copy of a project and commit the changes you make at will. You can work without having to worry about overwriting some one else's files, or more importantly, wait for files to become available for editing.
Having experience with SVN and Git, we've quickly adopted Git's simplicity over SVN's complexity when dealing with things such as submodules, branching, merging and tagging (we'll go in depth with these concepts in another post).
The gist is that an SCM solution allows you to work as a group on a project, and commit your code at will without worrying about overwriting other developers data. It also allows you to keep track of changes, rollback when things go wrong and branch off and merge back when doing experimental stuff with your codebase. It also helps when playing the blame game when things go wrong! More on that next :D
Continuous Integration Server (Bamboo, Hudson and Cruise Control)
At the heart of every continuous integration setup is a continuous integration server. A continuous integration server will constantly monitor commits to your preferred SCM and run what's called a build for every commit that caused a change in code.
Having played with Husdon, Cruise Control and Bamboo; we settled for Bamboo. We made our choice based on:

The number of extensions and plugins that were available for each tool
How easy each new project was to set up
How well they played with our existing tools such as JIRA, Confluence and our LDAP server
Cost of ownership (price)

Although Bamboo is the most expensive (with the others being free), we would spend less man hours setting up new projects using the GUI and far less time integrating it with Git, JIRA, Confluence and our Jabber server (yes Bamboo does talk to us) as it comes with support and easy setup out of the box.
Continuous integration servers will alert you when a build fails. This can either be done via email, or more elaborately, by electrocuting the person who broke the build. Yes that's right, continuous integration servers can point out who broke the build, what tests failed, and what the last commit message and code was and perform whatever you like, automatically to them.
What's the point of it all?
Putting the jokes aside, continuous integration is your first and last line of defence against accidental changes to your codebase that may break your application in production. We have restricted any developers from accessing our FTP servers directly and encourage them to commit early and commit often. This prevents last minute changes to files, and ensures that developers put real thought into their code before they commit it. There's nothing more embarrassing than showing up on the screen of shame for the day!
SCM also allows developers to branch off and add features to projects without affecting anybody else. Once a feature is complete, he/she can re-integrate it into the master branch so that it's ready for the next deployment. We can also safely make changes with the confidence that once it passes through our continuous integration workflow, everything should be working as expected. We can now spend less time manually testing things that should be automated to avoid human error and more time on producing added value to projects for our clients.
</description>
    </item>
  </channel>
</rss>

