Codebar - Jan 2016

On January 12th we hosted our second codebar event. For those that don't know... codebar is a non-profit initiative that facilitates the growth of a diverse tech community by running regular programming workshops. People can register as students or coaches and learn something new with the help of volunteer coaches.…

Read this article

graze formatter

Yesterday we open-sourced a new library, graze/formatter. It's a pattern we've used extensively in our web application for more than a year now, and it's no coincidence that we started implementing it during our migration to the twig templating engine. Previously we passed our legacy templating engine our active…

Read this article

Silex Routing and Trailing Slashes

Silex treats a route like /profile/1 as a different resource to /profile/1/, nothing wrong with that. However, when using controller providers, root level routes for that controller are mounted with a trailing slash, which leads to potentially undesired behaviour. For example: class ProfileControllerProvider implements ControllerProviderInterface { public function connect(…

Read this article

Python as a PHP Developer

The majority of the code I’ve written in my 3 and a half years of professional software development has been PHP. Recently I built my first Python web application for a REST JSON API. I thought I’d share my first experience of Python from the perspective of someone…

Read this article

We'll see you at Silicon Milkroundabout

We're looking forward to Silicon Milkroundabout next weekend. We'll be there on Sunday 15th November at the Old Truman Brewery in Shoreditch, London. We're hiring for PHP developers, front end developers and data analysts to work on our custom built logistics and manufacturing systems, our data warehouse, our customer service…

Read this article

composer, alternative repositories and numeric branch names

Sometimes with composer you'll want to point to a repository other than packagist. At graze, a common use of this is to include a private project in an application. Composer facilitates this through the "repositories" directive - "repositories": [ { "type": "vcs", "url": "https://github.com/graze/top-secret-private-package.git" } ] Including top-secret-private-package at…

Read this article

PHP London Meetup

We were delighted to be able to sponsor last night's PHP London meetup. There were free drinks and snacks-a-plenty, plus an excellent talk from Sam Burns on 'Choosing and Using a REST Framework'. REST APIs are increasingly important as the development community moves towards SOA and externalising services, and choosing…

Read this article

Easily create slideshow presentations from markdown with remark.js

Remark.js is a web based slideshow with some great features that is comparable to powerpoint or google slides except you can write your presentations entirely in markdown. You can see a demo of remark.js in action here and when checking it out, be sure to press p to…

Read this article

Codebar photos

Last week we hosted a codebar event at graze HQ. codebar is a non-profit initiative that facilitates the growth of a diverse tech community by running regular programming workshops. codebar brings together people who want to learn how to code (students) and developers who love coding (coaches), so we thought…

Read this article

Codebar – Naming Things

We recently hosted a Codebar event after work at the graze HQ. The lightning talk was focused on the difficult task of Naming Things. @samparkinson_ 's slides from W. London codebar at @grazedotcom are now online: http://t.co/voSyJNnzh4— codebar (@codebar) July 17, 2015…

Read this article

You've got to have standards

Browsers are the most hostile software development environment imaginable. -- Douglas Crockford Front end web development can be painful. The pain is mostly caused by the almost infinite number of combinations of software and hardware. We don't have a locked down ecosystem like you have when building a device specific…

Read this article

More important than Nasa...

... according to the ghost.org homepage…

Read this article

Silicon on Thames

Looks like the secret is out... The Evening Standard Why tech titans eBay and PayPal are trading Old Street for the leafy joy of Richmond You would be forgiven for thinking that the closest thing to an internet hit emanating from the leafy south-west London suburb of Richmond upon Thames…

Read this article

Sharing controller logic with traits in PHP

There have been a few times I have come across a situation where I need to share some logic between controllers but it hasn't been as clear cut as abstracting that logic out into a library. I've been pondering the best way to tackle this problem and would like to…

Read this article

Flexi-time – using a flexbox grid to solve common website layout problems

It's a common problem in responsive web development that making elements the same height at all viewport sizes is quite fiddly to do, especially when your elements are dynamically generated. As you clever people know, flexbox solves this problem perfectly by introducing the property of align-items: stretch. Flexbox also solves…

Read this article

User testing

At graze we understand the value of allowing our customers to control and personalise their relationship with us. Perhaps the best example of this is the way we allow our customers to customise their boxes by rating our snacks. This gives us not only the ability to give the user…

Read this article

Unit testing static calls without refactoring the world in PHP

Imagine you have a situation like this in some legacy code: class Bar { public static function doSomethingElse() { return 'Bar Bar Black Sheep'; } } class Foo { public function doSomething() { return Bar::doSomethingElse(); } } Foo is calling the static function on Bar and that method is also used by 50 other classes in the…

Read this article

counting electric sheep

Mulled wine, log fires, Christmas carols... nothing can say "Merry Christmas!" quite like a box forming machine. And we have several heavily modified versions - thanks engineering team, season's greetings. They suck up bits of cardboard and spit out the graze boxes we know and love. How many boxes do…

Read this article

Our approach to unobtrusive javascript

Unobtrusive JavaScript is a way of writing JavaScript so that if for any reason your JavaScript is not working correctly your web page should still perform its core function. There's nothing new about this concept and we certainly didn't invent it but the web team at graze has been working…

Read this article

How to get yourself a job at Silicon Milkroundabout

A recruiter’s tips With Silicon Milkroundabout (SMR) approaching, Hannah Manku, an experienced recruiter here at graze, describes what it is that recruiters remember at networking events and why … “Networking gets you to meet real people, rather than speaking through a screen or looking at a piece of paper...” Razel…

Read this article