1 for each service. If we need to scale beyond one per service, I plan on doing sharing across varnishes based on url so we don't have to propagate bans.
More than likely, the business is unhappy with the terms of the recruiter's agreement. These guys will do all sorts of things with contractors like add a 30% commission on top of your hourly fee and bake in a clause entitling the recuiter to a bonus equal to 20% of your salary if the company decides to hire you full time.
You will probably not be offered this position any way except through the recruiter.
My advice is to continue your search, and only work with embedded recruiters who are paid hourly or salary for their services. These recruiters will have corporate email addresses matching the companies they represent.
The strange thing is that this recruiter has already placed other people at this company (according to the hiring manager). Maybe the terms did change, or the quality of those candidates turned out to be sub-par.
I have started working with a corporate recruiter at another firm, and so far it's been a much better experience.
Furthering our wanderings down this off-topic thread, I agree with you completely, but every time I point it out, I get accused of being a "pedant". I've implemented several truly restful APIs, and they've always worked beautifully, but they're internal or private. I tell others about it, and the immense advantages, but they see every other HTTP-RPC API out there and copy that instead.
Why is it that there's no examples of a truly restful web service in practice? The only one I can think of offhand is Sun Cloud's API, which is pretty dead. Its hard to espouse the virtues of a truly restful API when there aren't any examples to point at.
Edit: The downvotes would seem to just further my point...
If you say you've written some very RESTful APIs internally, perhaps writing an article about the things you've specifically done from most APIs that makes yours RESTful and advantageous vs. a less RESTful API.
Be sure to read the first comment. I've sorta given up blogging about it, because I'm tired of fighting it. I am working on a side project, though, which exposes an actual Restful API, so maybe once I can use it as an example, I'll be able to blog more.
I would like to learn how to do REST "right", and (for me) it's easier to learn by playing with a working example that deals with "real world" issues as opposed to abstract snippets that only show how APIs get used.
Any further insights/examples/pointers would be greatly appreciated.
I've been using CouchDB in a personal project for 6 months or so and it's been my first real exposure to an actual RESTful interface and I have to say that the experience has been pretty pleasant. I started working through the examples using curl in the CouchDB - The Definitive Guide and then moved on to building code to interface with it:
Subbu Allamaraju (ex-Yahoo, now eBay) has been the one proponent of REST that I believe speaks the most sense.
He understands that most "RESTful" APIs out there leave HATEOS as an afterthought, but he doesn't believe there is such a thing as a 100% RESTful API - you match the architectural style to the context of the problem you are trying to solve.
Saw Subbu speak at RestFest on Saturday. His talk seemed to promote REST as a set of constraints which produces a set of benefits. He argues that choosing a subset of constraints to achieve a subset of benefits is perfectly valid.
I would add that you must first have a deep understanding of the constraints and their associated benefits in order to make those types of informed decisions about your system's architecture. In my experience, the constraints are so orthogonal that a great number of the benefits of a system created using the REST architectural style only become evident in the overlap as the constraints empower each other.
Combining these constraints can elicit new benefits.
I hadn't looked at theirs before, but yeah, its a lot better than most. AFAICT, still doesn't have a single point of entry, but the response documents do have links to other resources, rather than IDs.
I'm saying if I wrote a "REST API" and everyone understood what that means, what would it matter whether or not it checks every box laid out by the originator of the term.
That makes it an effective form of communication, but not correct.
If I talk to someone who's not computer-savvy and they describe a workflow as "I put the USB in the CPU and then drag all my files onto my screen" (verbatim quote) I can figure out what they mean and work with them, but they clearly don't understand the concepts.
"There is no "correct" separate from usefulness in communication."
I think you may have misunderstood your source. Subjective truth is only half of the equation. The other half is testing rational models against experience. If you understand the constraints of REST, you understand that it has implications not met by the API in question and thus claims to be something which it clearly is not.
Just because I tell you I'm a duck doesn't mean I'm a duck.
I think Roy Fielding and the other strict REST proponents need to do a better job of explaining why we laymen should follow the rules so closely. I have read a lot of Roy's work, and those of other proponents', and I still don't see a lot of value in staying so strictly to the 'word' of REST.
Much could be helped by 'the experts' just showing us rational laymen the cost-benefit analysis. Show me how things will fall apart over time, some data would be helpful. And let me see some case studies.
Currently, my non-REST "REST" interfaces seem to be working pretty well. And, when they don't work, I go and fix them. Seems easy enough, but obviously I'm naive.
The reference is to Alice Through the Looking Glass by Lewis Carrol. It is a sad day when you can no longer expect an educated english speaker to have read the good Reverend's inspired nonsense.
That's a valid criticism of APIs that think "it's not SOAP, so it must be REST", but this is close enough to REST that it seems pedantry to claim it isn't.
So all apologies to Roy Fielding, but through success, he has lost control of his terminology. This is what people mean by REST today.
That reminds me of what happened to "Object Oriented". First, Alan Kay coined the term, having something like Smaltalk in head (emphasis on messages, and a strong dislike of unchecked side effects like setters and the assignment statement). Then the term was subverted, and we got C++ and Java (emphasis on classes, and a near-total disregard for the problems of pervasive side effects[1]).
My point is, we should be careful before we corrupt a term. Doing so corrupts our perception of the concept itself. And if it turns out the corrupt concept is less help than the pure one, too late : it's already popular.
You do know that PHP has built-in min and max functions, right?
And array_map.
And array_walk.
And array_filter.
And array_reduce.
And array_slice.
And array_unique.
And array_search.
And range.
And empty.
And is_object.
And is_array.
All of the array_* functions, as their names suggest, only apply to arrays. Underscore methods work on arrays or any Traversable (Iterator or IteratorAggregate) object. It's nice to have.