I've been trying to understand the HATEOAS constraint myself.
Roy Fielding's blog posts are almost indecipherable to an
ordinary developer like me. I think there's a huge gap in relevant easily accessible information on
understanding it, and how to implement it, what it's benefits are etc.
One of the aspects that I've found particularly confusing is the concept of not having out-of-band
communication and having discoverable APIs.
A REST API should be entered with no prior knowledge beyond the initial URI (bookmark) and set of
standardized media types that are appropriate for the intended audience (i.e., expected to be
understood by any client that might use the API). From that point on, all application state
transitions must be driven by client selection of server-provided choices that are present in
the received representations or implied by the user’s manipulation of those representations.
The transitions may be determined (or limited by) the client’s knowledge of media types and
resource communication mechanisms, both of which may be improved on-the-fly (e.g., code-on-demand).
[Failure here implies that out-of-band information is driving interaction instead of hypertext.]
I'd like to talk about how this limitation on out-of-band information seems both insane and
impractical, maybe impossible. But then I may go on to explore how actually it makes some
form of sense. And how you can use this knowledge to write APIs that are easier to code to,
and whilst not resilient to change in some magical sense, it should allow you to write clients
that are easier to adapt and update.
With the adoption of REST, the proliferation of smartphones and tablets, and the second coming
of JavaScript, exposing our applications as a service is now more important than ever.
Rails or Sinatra make really easy to create a (kinda) RESTful API but, in many occassions,
these APIs are designed without really thinking on the developers that will have to use them.
I want to talk about some of the points that can help making your API more developer-friendly.
Some of the areas I'll cover will be discoverability, authentication, headers, formats, parameters,
documentation and tools.
We usually finish the talks at around 8pm and head over to The Slaughtered Lamb to chat about the talks, or whatever comes to mind, over a beer and a fish-finger sandwich. Sometimes you can't make it to the main event, that's not a problem though, just come along to the pub and you'll be welcomed with open arms. Especially if you get there a bit before 8pm and secure me a table.
Skills Matter prefer that you register your attendance with them if you are coming to the meeting. There's plenty of space so you'll get in if you forget, but it is polite (don't forget MINASWAN), so please do register.
You can also follow this meeting on lanyrd, but be aware this is not a meaningful way to tell Skills Matter you wish to attending. It's just for the lols, innit?
Aanand has some Ruby code to show you. It looks a little strange - in fact, it doesn't even look valid.
Array.run do
x <- ["first", "second"]
y <- ["once", "twice"]
["#{x} cousin #{y} removed"]
end
What does it do, and how does it do it? If you know what a macro is, or a continuation, or a monad, you might be able to guess. If not, don't worry - by the end, you'll probably be as confused as everyone else, including the speaker.
We aim to finish up around about 8pm, but that's not the end of the evening. After the talks we head on over to The Slaughtered Lamb for some light refreshment and informal chat. If you can't make the first part of the meeting, please do feel free to turn up to this second part.
Skills Matter prefer that you register your attendance with them if you are coming to the meeting. There's plenty of space so you'll get in if you forget, but it is polite (don't forget MINASWAN), so please do register.
You can also follow this meeting on lanyrd, but be aware this is not a meaningful way to tell Skills Matter you wish to attending. It's just for the lols, innit?
Paul Battley has written a game engine based on the game of battleships and will be letting us play with it. Before the meeting you should write a player for Paul's game engine and during the meeting we'll pit the players against each other in a tournament. Once the winner is declared we'll look at the player implementations and get their authors to talk about them. In case you win you should be prepared to show off your code and discuss the strategy you implemented.
We should be done sinking each other's battleships by 8pm. Those still on speaking terms will make the short trip to The Slaughtered Lamb, to tell tall tales of maritime success and failure. If you can't make the battle royale that is the main meeting, feel free to turn up to the pub.
Skills Matter prefer that you register your attendance with them if you are coming to the meeting. There's plenty of space so you'll get in if you forget, but it is polite (don't forget MINASWAN), so please do register.
You can also follow this meeting on lanyrd, but be aware this is not a meaningful way to tell Skills Matter you wish to attending. It's just for the lols, innit?
Some of the team (Chris Parsons, Jolyon Pawlyn) behind the newly launched government e-petitions website will talk to us about the issues they had with scaling the site, how they solved them, and how they continue to monitor and improve the service:
A talk about caching, chef, munin, load testing and hosting. As part of its adoption of agile
techniques and its creation of a Skunkworks division, DirectGov asked the Agile Delivery Network
to build a successor website to the Number 10 e-petitions site with a 6 week deadline. The talk
aims to highlight the measures taken to cope with high throughput, what worked and what could be
done differently to avoid headlines like "Government's e-petition website crashes on first day".
The talks should finish by 8pm and after this we continue the evening in The Slaughtered Lamb, a short walk from the talk venue. If you're not interested in the talks, or can't make them for some reason, please do turn up to the pub. The more the merrier!
Skills Matter prefer that you register your attendance with them if you are coming to the meeting. There's plenty of space so you'll get in if you forget, but it is polite (don't forget MINASWAN), so please do register.
You can also follow this meeting on lanyrd, but be aware this is not a meaningful way to tell Skills Matter you wish to attending. It's just for the lols, innit?
In this presentation I want to talk about how configuration management
allowed me – a developer with no access to the live servers and
working with system administrators in a different time zone – to not
only install and configure servers quickly and in a repeatable way but
also let me be confident about the consistency of each and every
machine I deploy to.
Using the example of getting a server ready to run a Rails application
using Puppet (and testing things out with the aid of Vagrant), I will
showcase some patterns that we have developed for managing versions of
Ruby with RVM, the installation of Phusion Passenger and how to deploy
a database.yml when you're not allowed to see live passwords.
Gareth Rushgrove is a sometimes Ruby programmer and occasional sysadmin. He curates the devopsweekly mailing list, lives in Cambridge and writes code for fun and profit.
Most developers spend far too much time managing a development
environment that is different to the one they use for production
applications. Different tools, different underlying libraries and
different bugs. Local virtualisation provides an answer, but
historically it's been time consuming and annoying to setup and
manage. Using configuration management tools like Chef to set things
up, and Vagrant to easily manage the virtual machines
from the command line provides modern developers the best of all
possible worlds.
Cucumber-chef is a library of tools to enable the
emerging discipline of infrastructure as code to practice test driven development. It provides a
testing platform within which cucumber tests can be run which provision
lightweight virtual machines, configure them by applying the appropriate Chef
roles to them, and then run acceptance and integration tests against the environment.
We aim to finish up the talk part of the evening by 8pm. At this point we talk a short walk to The Slaughtered Lamb to round off the evening with wine and song. If you're unable to attend the talks, you're more than welcome to turn up at the pub whenever you can.
Skills Matter prefer that you register your attendance with them if you are coming to the meeting. There's plenty of space so you'll get in if you forget, but it is polite (don't forget MINASWAN), so please do register.
You can also follow this meeting on lanyrd, but be aware this is not a meaningful way to tell Skills Matter you wish to attending. It's just for the lols, innit?
Some of the team behind alphagov, the new prototype for a UK government website will talk about the ruby they've used in delivering the site, and some of the lessons learned.
Extracting value from legacy applications using Ruby #
Jairo Diaz and John Small will be talking to us about the rails application they have developed for a large UK retailer and how they overcame some of the challenges along the way.
After these talks we'll make the short trip from Skills Matter's offices to the more informal surroundings of The Slaughtered Lamb. If you can't make it to the main meeting, you'll find us crowding the bar from around 8pm onwards. The pub part of the meeting is very social and is a perfect opportunity to engage the speakers in more in-depth questions raised by their talks. Or just talk about the latest trending topics on twitter. It's your call.
Skills Matter prefer that you register your attendance with them if you are coming to the meeting. There's plenty of space so you'll get in if you forget, but it is polite (don't forget MINASWAN), so please do register.
You can also follow this meeting on lanyrd, but be aware this is not a meaningful way to tell Skills Matter you wish to attending. It's just for the lols, innit?
The plan for this month's meeting is to have several local rubyists talk about gems that they have written. To let them give their gem a wider audience, and to show off that the LRUG community is a prolific bunch. Confirmed so far:
RolePlay - RolePlay is a simple gem that provides roles for ActiveRecord objects (typically a user model, giving them the role of administrator or moderator. As well as covering RolePlay, Paul will also cover tips for upgrading gems to have Rails 3 compatibility.
As is usual we'll decamp from Skills Matter's offices to The Slaughtered Lamb for a drink or two after the talks. It's only a short walk away so we'll be there from about 8pm onwards. If you can't make the main meeting then feel free to pitch up just for the pub-bit. There's usually some rubyists there until closing time, so you're bound to find someone to talk to no matter what time you make it over.
Skills Matter prefer that you register your attendance with them if you are coming to the meeting. There's plenty of space so you'll get in if you forget, but it is polite (don't forget MINASWAN), so please do register.
You can also follow this meeting on lanyrd, but be aware this is not a meaningful way to tell Skills Matter you wish to attending. It's just for the lols, innit?
Andrew McDonough is going to lead a practical evening called "Ruby Golf". He describes it as follows:
I started my career as a perl programmer. Perl, like
ruby has a lot of 'syntactic sugar' to help developers write concise
code. Perl programmers sometimes play a game known as 'Perl Golf' to
explore the lesser-known features of the language. The aim of 'perl
golf' is to solve a problem using the fewest characters possible.
At this month's meeting Andrew will run a practical evening based
around 'ruby golf', an adaptation of perl golf for ruby developers.
People will be asked to form teams of 4-8 people, and solve nine short
ruby golf 'holes' using as few characters as possible. Each hole will
be defined by a set of RSpec examples describing a single method, and
the teams must write the method to pass all of the examples. At the
end, the solutions will be scored and the winning team will be
announced.
This evening should have something for everyone; beginners can pick up
some language tricks and learn how to write code to pass tests, while
experienced ruby developers will have the opportunity to show off
their skills and compete with their peers.
Note: This is going to be a full evening of practical activity. We'll break up into small groups on the night to go through what Andrew has prepared. You should bring your laptop so you can play along. Don't worry if you don't know anyone, there will be plenty of groups to join in on the night. Also, you should sign up to the mailing list to find out about any further instructions.
After all this golfing we'll make the short trip to The Slaughtered Lamb for our 19th hole. We normally finish up the meetings at around 8pm, and are in the bar by 8:05pm. If you can't make the main meeting (but you really should try, it'll be a great way to flex your ruby muscles and learn about short-cuts you never knew existed) don't feel like you can't come along just for the pub part; you'd be more than welcome.
Skills Matter prefer that you register your attendance with them if you are coming to the meeting. On a few exceptional occasions we've had to turn away people who haven't registered, but this has only been at extremely popular meetings, and has yet to happen at the new venue on Goswell Road. It's better to be safe than sorry though, and it is polite (don't forget MINASWAN), so please do register.
You can also follow this meeting on lanyrd, but be aware this is not a meaningful way to tell Skills Matter you wish to attending. It's just for the lols, innit?
A year ago, I was a committed VPS and dedicated-machine deployer. I thought the cloud
imposed silly restrictions - how dare you take away my shell account! Whaddya mean I
can't save files locally?
Since then, I've had some interesting experiences. I've worked on big cloud-deployed
systems, and certain large traditionally-deployed systems, and I've seen how a lot of
the decisions that you're … encouraged to make when designing an app to run in the
cloud. Most interestingly, I've discovered how those same decisions can make for a
much better app regardless of where it'll end up. In this talk, I'll share those
architectural patterns with you, and show why they work. Hopefully, I'll convince all
of you to build cloud castles – even if you've got your foundation firmly on the
ground.
Note: Ben is talking at SRC but it's not the same talk that he's giving to us, so if you are going to SRC don't miss his talk thinking you'll catch it at LRUG when you get home.
After all this we'll head to The Slaughtered Lamb to while away the rest of the evening in more informal settings. The pub is only a five minute walk from Skills Matter's offices and we'll be there from about 8pm onwards. If you're unable to make it on time for the main meeting then feel free to join us for the pub-bit.
Skills Matter prefer that you register your attendance with them if you are coming to the meeting. On a few exceptional occasions we've had to turn away people who haven't registered, but this has only been at extremely popular meetings, and has yet to happen at the new venue on Goswell Road. It's better to be safe than sorry though, and it is polite (don't forget MINASWAN), so please do register.
You can also follow this meeting on lanyrd, but be aware this is not a meaningful way to tell Skills Matter you wish to attending. It's just for the lols, innit?
James Coglan is going to talk to us about Primer his caching system for rails:
It's no secret that expiring caches is hard. But it's also tedious, error-prone,
and it forces a lot of duplication as your sweeper code is tightly coupled to
how your views work. And caching itself introduces complexity: by caching data,
you're creating multiple ways to compute the same value.
What if we could get rid of all this? I'm going to take a look at Primer, a Rails
extension I've been working on that means you'll never write another cache sweeper.
With a handful of mixins, you can keep writing your views the way you like and
Primer will deal with keeping them snappy. You'll see how you can use ActiveRecord's
reflections to automate a lot of caching work, how to regenerate your views offline
using worker processes, and how to add real-time updates to your pages, all with
code you could write during your coffee break.
Chris Parsons: Lessons learned BDD-ing a command-line utility gem #
Also known as: "end to end is harder than you think". Chris Parsons describes this talk as follows:
In this talk Chris will take us through how he test-drove the development of a
command line utility built as a gem, designed to connect to servers
via SSH and HTTP. We'll discuss the use of Aruba for command line
testing in cucumber, how to deal with external connections, and how to
discover your service interfaces as you build the client.
After all this we'll head to The Slaughtered Lamb to while away the rest of the evening in more informal settings. The pub is only a five minute walk from Skills Matter's offices and we'll be there from about 8pm onwards. If you're unable to make it on time for the main meeting then feel free to join us for the pub-bit.
Skills Matter prefer that you register your attendance with them if you are coming to the meeting. On a few exceptional occasions we've had to turn away people who haven't registered, but this has only been at extremely popular meetings, and has yet to happen at the new venue on Goswell Road. It's better to be safe than sorry though, and it is polite (don't forget MINASWAN), so please do register.
You can also follow this meeting on lanyrd, but be aware this is not a meaningful way to tell Skills Matter you wish to attending. It's just for the lols, innit?
It's February, so this means it's time for our annual lightning talk evening. This means lots of short talks all in one night. Because that's not quite fun enough, we use the 20x20 format for the talks. This means each speaker has 20 slides that auto-transition after 20 seconds, giving them 6 minutes 40 seconds to get their point across. It's a fun format for a talk, as the rigid time constraints mean the speakers have to choose between explaining their opinions in detail (and missing out something else) or stating them as fact. This is especially fun when the opinions are controversial.
The brave 20x20ers for 2011 are (in alphabetical order, on the night the talks will be randomised):
These short talks are bound to raise more questions than they answer and to answer those questions we'll head over to The Slaughtered Lamb. It's only five minutes from Skills Matter's offices and does a killer fish-finger sandwich. The talks will probably finish around 8pm, so if for some reason you aren't able to make it for the talks (but you really should try), head to the pub for about 8pm and you'll find blocking all reasonable access to the bar for about 20-30 minutes. Maybe get there a bit earlier?
Skills Matter ask that you register your attendance with them if you are coming to the meeting. On a few exceptional occasions we've had to turn away people who haven't registered. This has only been at extremely popular meetings and has yet to happen at Goswell Road, but it's better to be safe than sorry though. It is just good manners though (don't forget MINASWAN), so please do register.
You can also follow this meeting on lanyrd, but be aware this is not a meaningful way to tell Skills Matter you wish to attend. It's just for the lols, innit?
Sean O'Halpin couldn't make our December meeting due to illness, but he's fighting fit now and is going to give his talk this month instead. He'll be telling us about some work at the BBC involving twitter:
I'll be talking about how we're using Ruby to process tweets in
realtime to discover inbound links to the BBC Zeitgeist
and how we're reading the Twitter Firehose (about 1000 tweets/sec =
about 90 million a day) and storing the data in Amazon S3.
Matthew Rudy Jacobs: "Building a financial app in ruby and rails, and all the gems I made along the way" #
Matthew has been living it up in Hong Kong for the past year and will be making a brief stop at our humble meeting to explain some of the work he's been doing there in building a financial application. He promises to cover at least some of these things:
At the start of the meetings, and during laptop faffing between talks we leave the floor open for the audience. The idea is that if there's something you want to say to the group (announce you're team is hiring, let people know about a new gem you've written, point out a new conference, ask for help on a personal project, whatever really…) then this is the time to do it. Just keep it short, if it's longer than a minute, maybe you should think about doing a longer talk.
We'll see in the New Year after the meeting with a couple of drinks at The Slaughtered Lamb which is only a five minute walk from Skills Matter's offices. We aim to finish the meeting at around 8pm, so if you can't make the more formal part of the evening head to the pub then and you'll find us nattering over a pint.
Skills Matter prefer that you register your attendance with them if you are coming to the meeting. On a few exceptional occasions we've had to turn away people who haven't registered, but this has only been at extremely popular meetings, and has yet to happen at the new venue on Goswell Road. It's better to be safe than sorry though, and it is polite (don't forget MINASWAN), so please do register.
You can also follow this meeting on lanyrd, but be aware this is not a meaningful way to tell Skills Matter you wish to attending. It's just for the lols, innit?