Monads explained by a imperative programmer - with examples
A monad is any type construct that follows a specific pattern; it works in the same way as other design patterns. The .NET ApplicationContext is a singleton in the same way that Array is a Monad. Something being a monad does not define its purpose; in the same way that a class can implement many interfaces, a monadic type can also conform to many patterns to increase its usefulness.
Circuit Breakers and Application Resilience
For most people circuit breakers are a concept that belongs in the world of electricity. They are usually a box of fuses under the stairs that prevents the tangle of extension cords from turning into an unexpected open fireplace behind the TV. But the concept of a circuit breaker is something that we can apply to software and software services.
falcor-postman
At OpenTable, we have an engineering culture that empowers us to research, experiment and learn.
OpenComponents - microservices in the front-end world
Many engineers work every day on opentable.com from our offices located in Europe, America, and Asia, pushing changes to production multiple times a day. Usually, this is very hard to achieve, in fact it took years for us to get to this point. I described in a previous article how we dismantled our monolith in favour of a Microsites architecture. Since the publication of that blog post we have been working on something I believe to be quite unique, called OpenComponents.
Dismantling the monolith - Microsites at Opentable
A couple of years ago we started to break-up the code-base behind our consumer site opentable.com, to smaller units of code, in order to improve our productivity. New teams were created with the goal of splitting up the logic that was powering the back-end and then bring to life new small services. Then, we started working on what we call Microsites.
Hobknob v2.0: A new dimension
Sometimes there is the requirement for more granularity when toggling a feature switch. Version 2.0 of Hobknob hopes to address this with feature categories.
Hobknob v1.0: Now with authorization
We are pleased to announce the version 1.0 release of Hobknob, our open-source feature toggle management system. With it comes a few additions and several improvements.
Introducing Hobknob: Feature toggling with etcd
The ability to dynamically turn features on/off in software without the need to redeploy code is extremely beneficial. Whether you are trialing a new feature or using branch by abstraction to avoid creating feature branches, the use of feature toggles can aid continuous delivery and provide a mechanism to reduce mean time to resolution when an issue occurs.
Acceptance Now
When is acceptance-only testing a good idea, and how can its problems be overcome?
Look ma, no unit tests!
At OpenTable we strive to deliver change as quickly and correctly as possible. To do this effectively we are always looking for new tools and methods that allow us, the developers, to respond quickly and accurately to changing requirements and environments.
When to performance test in production
In my last post about performance testing I wrote about how we decided to do it in production as the ultimate test of success. Performance testing in production is enough to make some operations guys have a panic attack and a few odd looks were dished my way when I raised it on behalf of the team.
Linking to your app in Windows 8
In an effort to raise the visibility of our excellent Windows 8 app we have recently connected www.opentable.com to the Windows Store. This was simply a case of adding two lines of meta data to our site. Or it should have been – there were several gotchas along the way that are worth sharing.
Counting in ElasticSearch
Counting is the religion of this generation it is its hope and its salvation. Gertrude Stein
Grunt + Vagrant = Acceptance Test Heaven
My continued love affair with Grunt reached a new high the other day, when I combined Vagrant with my Grunt deployment tasks and test runners.
Grunt your deployments too
We've been using Grunt as a build tool for our nodejs apps, and it's brilliant. It lints, it configures, it minifies, it tests and it packages.