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.
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.
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.
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.
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:
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.
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.
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.
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.
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.