State of the Unicorn (from Sep to Dec 2015)

Super proud of my husband for getting the job he wanted at the University of Warwick! Congratulations!!!

The previous state of the union post.

I wanted to do more, of these but have I? This is just a post reminding me of various bits I’ve done these past 6 months.

Digital Strategy

  • Unify our custom development endeavors
    • Leading the unification of previous dev work into a team accessible resource
  • Staff training in GIT
  • Staff training in Gitlab
  • Staff training in Gitlab CI
  • Researched, Created and maintaining standards for our dev team to work with (simple stuff docs and processes)
  • Started our “disaster docs” if someone is hit by a bus / wins the lottery
  • Identified need for QA resource
    • Got the QA resource!
  • Roadmap
    • Asked for and took Action to start a “Technology Enhanced Learning Operational Roadmap” aimed at engaging team members with future considerations
    • Actioned the Roadmap meetings and discussions
    • Lead the Roadmap meetings (ongoing)

Human Resourcing

  • Completed the Line Manager Hiring training
  • Completed the Line Manager Ethics and Diversity training
  • Sat on the interview panel for 3 WMG roles
  • Spoke my mind clearly to Head of interview panel
  • Invited to help write job specs for 2 roles
  • Invited to help create job interview tasks

Representation of WMG

  • Invited to the MyDay CollabCo User group to represent WMG & UoW

Agile & Project Management

  • Improved on the Agile workflow I introduced to work better inside the University environment
  • Project problems solver – became the goto person for digital projects going “haywire” and turning them into achieving projects
  • Had our first Agile vs. Culture issue, got knocked, learnt and then spoke with the relevant people to be less knocked next time
  • Ran “Introducing Agile” for more staff again
  • Agile coached 2 Product Owners on their projects and any fails / issues they were experiencing
  • Ran multiple, “introducing Agile courses”

Actual Production

  • Lobbied and received Continuos Integration access from Central IT
  • Setup Gitlab CI to build, test and deploy on master push
  • Changed development method to BDD (Behaviour Driven Development) with Behat
  • Created local, feature, pre-production and production flow
  • Built a Transaction and BDD testing process
  • Built re-usable modules for
    • Continuous Deployment
    • Google Analytics
    • Environment Banner to identify app servers
    • Basic User Role ACL control
    • HTML Helper templating
    • HTML / CSS workflow
    • Model Repository Modules
    • Pulling live DB to local DB for testing
    • Clearing DB automatically
  • Improved my Laravel 5 understanding


  • Maintenance on Biddr (my custom reverse bidding web app)
  • Launch and Maintenance of critical Supervisor & Project matching tool for 1000 users
  • Parachuted in to sort 3 broken projects
    • Applied Trello Story Points
    • Started the team talking again (humour and leadership)
    • Created strategy to bring the external developer more “internal”
      • Skype
      • Daily scrums
      • Internal account from IT
      • VPN access
      • Added to our Gitlab central repo
    • Applied Weekly sprints
  • PM Elective Selector
  • PM MyTime
  • PM Visits
  • Maintenance on Gradr


I’m moving towards more Project Management, so training in that and more experience.

Maybe become a line manager


Agile Release Management Training.

Just a note of my training this afternoon.

We looked at Epics and Adventures and how they sit in the overall weekly Scrum planning, Backlog Grooming and Release planning.

We looked at Roles and Responsibilities within a FULL company setup, past and further than just the Scrum team.

I was told about a new role in an Agile software team which is solely to do with Documentation!

We looked at the challenges of change management and “Culture eats process for Breakfast” so people management is very important with change.

From this I have created our own Agile Project Initiation Document (to only approve high value projects), a Roles table for every project (who is what) and a Responsibility table (who does what)

Speed up your Behat testing workflow

So I’m really enjoying Behat and BDD so thought I’d share a cool tip which has sped up my writing test workflow using @tags.

When you need to keep re-running one of your tests you can use tags to make sure you’re only running one thing rather than a whole suite or the whole .feature file.

Basically, in the test you’re working on, add a tag @now

Scenario: Student who has requested an Interview can Apply
When I follow "View"
Then so and so

Now run your test like so,

behat --tags now

It will only ever run that tagged test, so you’re not running loads of others and waiting around. Sometimes, it “feels” even faster to run,

behat --tags now -f progress

I know this may seem pretty simple, but I’m learning here and found this really useful.

An intro to using Trello

More and more University staff here are using Trello for sharing ideas and collaborating on projects.

So I’ve made a super quick intro video which I’d like to share on using Trello for Tracking bugs.

WMG IT - Using Trello
WMG IT – Using Trello

Please remember that Trello is a cloud service and we must abode by the University’s Cloud Usage Rules,

Changing the storage path in Laravel 5

So changing the Storage path in Laravel 5 is apparently more difficult than it possibly should be.

Here’s how I solved it with @stauffermatt ‘s tutorial to start but appended to make sure the storage path is stored in Config per. server rather than hardcoded into your Git stored php files.

  1. First follow Matt Stauffer’s tutorial, and add an application override

# File /app/Application
<!--?php namespace App;

class Application extends Illuminate/Foundation/Application
     * Get the path to the storage directory.
     * @return string
    public function storagePath()
        return $this->basePath.'/theNewStorage';

  1. Then change your `bootstrap/app.php to…
$app = new AppApplication(
  1. NOW, my extra bit. Create a config/paths.example.php and add it to git. Then duplicate it as, config/paths.php, add that file to your .gitignore and change the path to the server’s storage path.

return [

    // Url to the server's storage file
        // eg, 'storagePath' => "/var/www/storage",
       'storagePath' => base_path()."/storage",

  1. Alter you app/Application.php file to load in the Config Repo with your new config file
<!--?php namespace App;

use Illuminate/Config/Repository as Config;

class Application extends Illuminate/Foundation/Application
     * Get the path to the storage directory.
     * @return string
    public function storagePath()
        $path = config_path(). '/paths.php';
        $items = include $path;

        $config = new Config($items);

        return $config->get('storagePath');

There. Dunnit.

SQLite and multiple renaming or dropColumn ‘s error in laravel 5.0 aritsan migrate


One of my migration scripts in Laravel 5 has 3 dropColumn requests in and 1 rename column. This all works fine with laravel migrations on MySQL and MariaDB, as you would expect.

However once you try to run those same migrations on a mysqlite / sqlite database you may start seeing errors like so

SQLSTATE[HY000]: General error: 1 no such column: XXX (SQL: CREATE TEMPORARY TABLE

Now following up the issue on Github it is related to this, but Taylor doesn’t believe it’s a bug, saying,

I would do them in two separate operations.

 The work around unfortunately is to split EACH drop Column and rename into 1 separate migration file each…

Crazy, but tbh. if that’s the worst bug I come across with Laravel 5, I’ll take it.

State of the union (since starting at Warwick Uni)

A small state of the union post so I don’t forget my journey so far…

The largest change is introducing my Agile experience into many aspects of workflow and to many members of staff.

Agile Training
* I have delivered three separate sets of Agile training
* Once for the Project Management Networking Group
* Once for the WMG IT team
* Once for an individual member of staff

I have introduced some better online tools to support the University’s work
* Trello – The whole IT team use it now to track and collaborate on their work
* Quickcast – The use of screen casting to show staff how to use certain material
* Continuous Integration – GitLab’s CI runner Is now provided by the University following me pushing for access
* Google analytics – To prove that students are using more of their own devices which are Apple based, than the university owned Windows machines
* Twitter Bootstrap must be used across all our custom apps. Our custom built apps from externals had custom CSS wrappers, but now use Twitter bootstrap 3.

Methods of working
* A lot of the Moodle work is “Handle turning”, I have floated the idea of an apprentice, which has led to a summer intern coming in (got ahead of myself, summer interns are always here!)
* IT partners – Following the Agile training, the following ideas of roles and responsibilities of a Product Owner leading and ordering tasks in priorities was taken on for our WMG IT partners
* We use an Agile approach to define what work should be done next. “If it went live tomorrow, what would we need?”

Development Bootstrap
* Deployment
* Folder organistion
* Server registration
* Repository Model
* Interfaces
* Behaviour Driven Development testing
* Unit testing

University Wide
* One of my three University wide ideas has gone onto review stage, using rechargeable mics for presenting will save on batteries and reduce support calls

* Biddr – an online reverse auction. I coached Agile to the staff and also built this learning tool in Laravel 4.
* Gradr – an online app to consolidate marks from multiple modules into one simple dashboard. It provides students a single overview and tutors an overall table of their students marks. I coached the staff in Agile and also built this in Laravel 5.

  • More Project management
  • More Laravel 5 and Elastic Search
  • Improving the University’s IT network (of people, not wires)
  • More training, hopefully in leadership (it’s different here to a small self-owned company!)

Being brave enough to change a process

Today we had to change a large process that wasn’t working.

The State.

A web development being built hasn’t got automated tests written for it and requires an office member to go through and MANUALLY test every item. Basically what Behat or DalekJS should be doing…

Anyway, the tests were all written in 1 document. “When I create a module, it should appear in a student’s list”, “When I select 3 modules, it calculates the student’s points correctly”, etc…

My process to solving a process.

Sometimes improving it can feel a bit daunting, however, as you talk through it with the team, record small sticking points and pains, then the you should start to see a bigger picture.
Always remember, you probably just need an evolution not a total revolution.


  1. Remind the team, that they own this process so they will want to find solutions to save themselves time
  2. Talk through the whole process, record EVERY sticking point
  3. Look through the sticking points for the worst offenders
  4. Think of simple ideas to fix them
  5. Repeat 4 until happy :)
  6. Talk it through with all the team
  7. Go!
  8. Re-look at it again soon!

Our Biggest Problems were…

  • Testing document, who has the latest copy and where?
  • TheTesting document is really fiddly for comments
  • TheTesting document doesn’t really handle versions very well
  • It’s difficult to discuss the comments inside theTesting document
  • What should the developer work on next?

Some solutions…

  • Testing document has been moved to a Shared OneDrive for all the project Team.
  • Re-named testing document “Testing Document v1” to “Testing Document”, losing the version number indicated its “alive” state
  • All Passes are still recorded in the Testing document with the word “Pass”
  • All Fails are recorded int he Testing document as “Fail”, but no comment
  • All Fails with comments are created as tickets in a Trello board with the unique test id and a description of the fail
  • All Fails are re-ordered in the list by the Product Owner to show importance
  • A Trello list was created for the Product Owner to rack up no more than 5 tickets which the need the developer to work on next