We’re Hiring!

New Bamboo Web Development

Bamboo blog. Our thoughts on web technology.

Writing a Server Sent Events server in Go

by Ismael Celis

The stream

I took the opportunity of our last New Bamboo Hack Day to write a Server Sent Events server in Go. The idea was to allow third parties to subscribe to a pre-existing, internal events stream for an e-commerce platform. I also needed to authenticate this service via access tokens so only authorised users or programs can access it.

I based my implementation largely on this example, and my own finalised production code is here. In this article I'll take you through some of the code to illustrate how elegantly can Go model network concurrency. The patterns described below can be adapted to other problems where a server needs to keep open network connections and broadcast messages to all or some of them. This includes Websockets, chat servers, message brokers and others.


Agile by name, but not by nature

by Lee Machin

Agile is dead! Long live agility! A very befitting eulogy to the spirit of Agile, I'm sure, but also an unnecessary one. I think it picks the wrong battle.

The whole premise of Dave's argument (and every supporter of it) is one of semantics. You are not Agile, you merely exhibit agility. You, as an authentic practitioner, are the verb to the snake oil salesman's noun.

The beef is that Agile has been twisted in such a way that it's a label for what you are, and not who you are, and at that point the choice to disown or change the name is utterly futile. You're not solving anything, you're just buying time.


Streaming downloads proxy service with Node.js

by Ismael Celis


I recently had to refactor functionality where a user could export historical data as CSV files. The original implementation, part of a bigger Rails app, would schedule a background job to generate potentially big CSV files and send them to the user as email attachments.

The original design

This worked for a few years, but as the data grew it became problematic because it required loads of resources just to load data and generate files in memory, email deliverability was inconsistent, it wasn't as flexible as required by users and it made the codebase more bloated and brittle than necessary.


flexboxes + media queries = awesome layouts

by Lee Machin

A calendar-like thing in its infancy, based on the examples provided

Flexboxes, a very recent addition to the CSS standard, allow you to leave the responsibility of arranging your layout to the browser. They have the additional benefit of simplifying your markup (no more wrapper elements), and reducing the dependency on JavaScript to arrange your UI independent of the ordering of the DOM.


Hosting GirlsInTech: How (not) to run a business with agile, 6 March

by Oscar Barlow

Ever get the feeling that no two people mean the same thing when they say they're 'agile'? We're hosting a GirlsInTech meetup on the evening of 6 March where Laurie will shine some light on this, then Andrea from Zeebox will describe her experience implementing agile in her organisation. Tickets are here - more details below:

As part of the Girls in Tech Kickstart Series, we’re proud to partner with New Bamboo, one of London’s leading development agencies, to present an evening of looking under the hood of agile.

From startups to Apple, successful tech businesses always claim to do agile. But what do they really mean? And how can you use agile to ship products, break into new markets and grow your business?

The evening will open with Laurie Young, Head of Operations at New Bamboo, who will give a whistle-stop history of how people have tried to get things done, and his observations that there are at least three different things people mean when they’re agile. With over seven years of driving commercial and development projects, Laurie has seen the gamut: chaos, command and control, and empowerment; he can help you identify what phase your organisation is in.

Andrea Nagel, Product Manager at one of the UK’s leading startups, Zeebox will then share her experience of managing and developing a product in real life. Zeebox has recently adopted a more agile approach to development, so Andrea will share their secrets of how you can practically and quickly implement agile ideas.

Andrea and Laurie will be on hand afterwards to help you improve your processes. And, in true Girls in Tech style, there’ll be plenty of opportunity to meet one another afterwards.

Doors open from 7pm, talks start at 7:30pm on 6th March. To sign up click here.


But where does the buck stop?

by Sam Whiting

I hear it said quite regularly when a hierarchical culture meets a more open, autonomous one: "The problem with agile/Scrum/[take your pick] is, where does the buck stop?"

The unspoken thinking underlying the complaint is this, I think. Traditional, hierarchical organisations have some of the greatest impact in the world - pick any national government or multinational corporation if you want an example to illustrate this point. Their success depends on certain features of their organisational structure, like the way responsibility, credit and blame are allocated - namely, at the level of the individual. Any new 'method' must conform to hierarchical standards of responsibility, credit and blame.


Let me set the scene for ya, kid

by Lee Machin

It was 2013, some time mid-November. Chair in front of desk; laptop screen open. Low brightness. Hurts my eyes when the screen's too lit up like that. Text editor running full screen, some sort of distraction-free mode or something. The cursor blinked in the top left corner, waiting in unwavering anticipation for something -- didn't matter what -- like an expectant puppy. Minutes became hours, and the cursor blinked just as it did before. Never got tired or bored; it had the patience of a saint.


Come see Laurie speak at NLB Innovate "How to Innovate: Company Culture"

by Oscar Barlow

Do you ever get the feeling that no two people mean the same thing when they say "Oh yeah, we do agile"? Or perhaps you sympathise with those pleading us return to Pure Agile, like the Manifesto authors intended.

At 6pm on Wednesday evening, Laurie is presenting a whistlestop history of how people have approached getting things done, from Henry Ford to modern software companies, and how there are at least three different things people mean when they say they’re agile - which has obvious rammifications on company culture.


Refinements under the knife

by Lee Machin

Surgeon Simulator 2013, courtesy of Edge Online

Refinements, made official in Ruby 2.1, are a way of 'monkey patching' objects without exposing those changes to other parts of the code. You would use them like this:

 1 module RefinedString
 3   refine String do
 4     def to_thing
 5       # ...
 6     end
 7   end
 9 end
11 class ThingWithRefinedString
13   using RefinedString
15 end

Like most developers, I find the opportunity to abstract a language feature is often irresistible, and is a great way to learn about how something actually works. The question of whether or not the result is usable or useful is often irrelevant.


Codebar is here tonight again!

by Oscar Barlow

A bit last minute - Codebar will be here at New Bamboo tonight (Wednesday 29 January), from 6:30pm.

Our address is: New Bamboo, 3rd Floor, Griffin Court, 15 Long Lane, London EC1A 9PN. Here's a map.

Nearest tube stop is the Barbican, or St Paul's is only a 10-minute walk away. When you arrive at Griffin Court, ring the buzzer and someone will let you in.


See all posts