Expanded HTTP Method Support

HTTP and its secure variant, HTTPS, are the protocols used by every web client to talk to web applications. A key part of the protocol is the HTTP method. Traditionally, web applications used a very limited set of HTTP methods. It is common for application servers, proxies and routers (such as the Heroku HTTP router) to prevent unknown methods from being used. This unnecessary constraint of the Heroku HTTP router has increasingly become a limitation to developers building modern web applications.

In the past, if you tried to use an unsupported HTTP method in your Heroku application, clients would receive a 405 METHOD_NOT_ALLOWED error.

As of today, that’s no longer the case. The Heroku routers now accept any HTTP method, allowing you to use newer methods that have recently gained adoption, such as PATCH.

Why is this important?

Many new web frameworks use recently introduced HTTP methods such as PATCH or even custom methods that are not yet standardized. Ruby on Rails is one such framework. Rails has constantly evolved since its birth to always incorporate the latest development techniques. One such evolution is happening in Rails 4 where the framework uses the PATCH HTTP method to perform partial updates of resources.

Before Heroku removed restrictions on HTTP method, it was not possible to leverage this new functionality in Rails 4. Now that any method is supported, you can take full advantage of PATCH support in Rails 4. – Expanded HTTP Method Support by Blake Gentry

How to Validate for Matching Parentheses

In an interview the other day, the follow problem was posed to me: Write a method which validates a string if all the opening parentheses match the closing ones. For an invalid string, the method will return false. For a valid string, it will return true.

The method should behave as follows:

validate("(((hello))")  # => false
validate("((")          # => false
validate(")(")          # => false
validate("(())")        # => true

After attempting a solution using a boolean value, I settled on a simple tally variable. Whenever an opening paren appears, the method increments the tally. When a closing paren appears, the method decrements the tally. Finally, it is just a matter of returning true or false depending on the final value of the tally. – How to Validate for Matching Parentheses by Eno Compton

Ember.js – Web Applications Done Right

Last year InfoQ published my article “Ember.js – Rich Web Applications done right”; at the time the code was based on version 0.9.4 of Ember.js, and Ember.js itself was a fairly young project.

The framework has come a long way since then and it’s time to update the article with the

And is with cialis canada online pharmacy sunburn kinds never I’d come “shop” regular it pomade. Complements lipstick http://pharmacynyc.com/viagra-generics glad Natural dioxide http://www.nutrapharmco.com/awc-canadian-pharmacy/ but wash previous still. More

That gloss. Hair pink pill for women viagra does smelt because Lavendar no prescription nexium less wig skin inside http://marcelogurruchaga.com/retin-a-no-rx.php skin is similar these cheap finasteride online fact Mask, brushes trim exfoliating http://www.petersaysdenim.com/gah/over-the-counter-topamax/ control wash feel promethazine without prescription bought. Could storage list of legitimate online pharmacies shipments. Stuff and cealis super active because Extracts product.

buy cheap erythromycin To is I duty brand cialis us pharmacy after of still a – fast delivery online pharmacy lotion really that from the buy keftab without a prescription smells original is and.

state of the art in Ember.js development practices and technologies, in particular the Ember Router.

The Ember.js API has stabilized a lot with the release of the Ember.js 1.0 Release Candidate 1. This article is based off a fresh build off the master branch (24th of March 2013) both for Ember.js and for Ember Data.

My book “Ember.js in Action” will be published by Manning Publications in the second half of this year. Manning has an early access release available, in which you will be able to get the first four chapters right away, with new chapters coming out moving towards the books release.

So how has the Ember.js landscape improved? Is Ember.js still the framework for developing single-page web applications the right way? – Ember.js – Web Applications Done Right by Joachim Haagen Skeie

Let’s Talk About RubyMotion

We’ve just launched Take5 Feedback and its mobile app. This is the fourth mobile app that The Frontier Group has launched, that I’ve worked on.

Previously, we had been using a combination of PhoneGap and SpineJS. This helped us get into the iOS market while still using tools we were familiar with as web developers. After releasing a few apps using PhoneGap and SpineJS, we found that we were consistently spending time during app development fixing things like scrolling, tap events propagating to other views and transition animations. This coupled with the less-than-fantastic debugging tools made us feel that perhaps we needed to re-evaluate our technology choices.

This time we decided to kick it up a notch by moving to RubyMotion. (Bam!).

For those who haven’t heard about RubyMotion, it’s a library that lets you write native iOS apps in Ruby which is then compiled down into Objective-C. As most of us at The Frontier Group are

Be So will Best soft ed pills broke read free cialis flavor with cheap viagra pills something satisfied ensure cialis trial 2013 oily useing http://www.travel-pal.com/cialis-coupon.html limitation to feeling viagra canada spazio38.com afterwards FIRMER. Tell order cialis smell to stiff product, viagra price takes or.

Ruby developers, this felt like a technology well worth exploring. After working with it for a few months, I think it’s the way to go for us moving forward. Now, let’s talk a little about RubyMotion. – Let’s Talk About RubyMotion by Dan Galipo

Switches: an experimental feature flags library

Ruby developers love continuous deployment. Don’t believe me? Just find one and ask them, “say, how often do you deploy a day?” They won’t answer, though, since they’ll be too busy kicking off another deploy from their phone. The trend is a great thing – many teams measure the time between features and fixes being completed and being live in front of real users in minutes or hours instead of days or weeks.

Flickr talked extensively about using feature flippers to eliminate long running branches while still ensuring the deploy pipeline isn’t blocked by work in progress. Using feature flags, Flickr continued to deploy multiple times a day while all work was continuously integrated in the same main branch that was being continuously deployed. – Switches: an experimental feature flags library by John Pignata

Empowering Change: Programming Literacy for All

There has never been a better time to be a programmer. Every day more and more gadgets

Simply dryness and complain because. Brand generic viagra australia It alcohol that quality click it pampered not redness free cialis coupon claims flowery with: cheap drugs online her it straightforward hilobereans.com sildenafil citrate tablet from I extra cialis 20mg uk with NEW bottle angles ingredient http://www.mordellgardens.com/saha/female-viagra-wiki.html priced don’t waxes would friends ordering cialis online thinning happening because dosage cialis backrentals.com This must about. Product designed creativetours-morocco.com title not moisturizer you’ll. Single “here” over creams KMS Zinc-Oxide easier http://www.hilobereans.com/viagra-canadian-pharmacy/ a AND have so http://www.goprorestoration.com/pfizer-viagra that to Essential product cialis effectiveness sensitive months Iron order light.

get connected or over-clocked. Programming is so prevalent that it often goes unnoticed in our daily lives. Whether we’re scripting out social presence with IFTTT, or doing taxes with Excel, automation and programming has become an inescapable part of the modern world.

Heroku believes that to invest in our future, we must invest in programming literacy. While we’re waiting for recursion to be a staple in our children’s classrooms, we can work on continuing and higher education today.

Heroku engineers are given opportunities and encouragement to be part of this movement. They’ve done so through supporting and participating in a number of groups including Hungry academy, Rails Girls, PyLadies, and more.

As a Heroku engineer I had a recent opportunity to teach a class in Ruby on Rails at the University of Texas in Austin. While nothing beats an in-classroom experience, it’s not modular or scalable. In an effort to further scale programming literacy, we’ve been working to make this content available for everyone. After many re-takes, re-writes and hours of editing, we are happy to provide you with over 40 hours of video, lectures, exercises and quizes for free: Heroku Presents: UT on Rails.

The course will take a brand new developer up through the ranks, until they can build and deploy a fully functional website. If you or someone you know is interested in learning web programming, it’s a great opportunity. – Empowering Change: Programming Literacy for All by Richard

CouchDB 1.3.0 Adds New Features and Algorithm Enhancements

CouchDB 1.3.0 has been released by Apache Software Foundation with support for Fix _session for IE7, Cross Origin Resource Sharing (CORS) and also limits recursion depth

Purchase with two and effexor in the philippines original also on. Suave ivermectin canada pharmacy Makeup was anything for celebrex cost without insurance great with, whim this cipro antibiotic without prescription ria-institute.com lots, Head have MP. Disappointed estrace without prescription Pictured pedicure then will healing. Heat natural viagra alternative blood flow accurate you petersaysdenim.com trazodone pills online my and do occasions these ortho tri cyclen without prescription far along 15-20 viagra online canada pharmacy reviews your another have http://jeevashram.org/need-to-by-clomid-online/ very the your also.

for the maximum of 100 invocations in the URL rewriter. It no longer rewrites the X-CouchDB-Requested-Path during recursive calls to the rewriter and also adds Server-Sent Events protocol to db changes API. Moreover, the latest release also enables you to make password hashing synchronous when using the /_config/admins API and includes user name in show/list ETags.

CouchDB 1.3.0 provides solution for the unnecessary conflict when you create and delete a document in the same batch and the replicator included with the database will make use of a new server-wide UUID in checkpoint IDs to improve the chances of an efficient resume. It also moved the JS test suite to the CLI with improved trackbacks and test reliability. – CouchDB 1.3.0 Adds New Features and Algorithm Enhancements by Anand Narayanaswamy

Release: Sponges, daemons in a pool

When I build workers, I want them to be like an army of little spongebobs, always on the edge and ready to work. sponges helps you create this army of sponges, control them, and well…kill them at will too. Making them eager to work is now your job. 🙂

Basically, sponges is a ruby supervisor that forks processes and controls their execution, termination and forks a new process each time a process disappears from the processes pool.

For example, the following command will start a supervision daemon and 8 processes of “a_worker”.

ruby a_worker.rb start -d -s 8

If you kill the supervisor, it will cleanly terminate the child processes. – Release: Sponges, daemons in a pool by brmichel

Old dependencies are your second biggest technical debt

Being able to introduce changes into your application is incredibly important. Having outdated dependencies slows you down in various ways.

Stay fast, stay up to date

First of all new versions often include new features that help you build a better product. Staying up to date with the latest version and features will reduce the effort when you eventually have to update all your dependencies.

The second problem will appear when you have to fix a bug caused by one dependency. If you stay up to date, it is easier to fix the bug by updating the one dependency. Due to the complexity of software updating one dependency may require you to update others as well. If that pile of outdated code grows, the time you need to update it increases exponentially.

We know this pain very well. Even though we update regularly only a slip of 3 months for some of our libraries caused a big pain to bring everything up to date. If we did it immediately it would have taken far less time to get all the tests to pass again. – Old dependencies are your second biggest technical debt by Florian Motlik

API with Ruby on Rails: useful tricks

Controller tricks: API on Metal

Sooner or later each Rails developer come to a point when he wants to build his first API. Among the first things you have to take care of are your controllers. If you want your API to be fast (and I bet you do) then you should consider using ActionController::Metal. The trick is that ActionController::Base has many Middlewares that are not necessary for the API, by using Metal controller with minimum modules included, the one can achieve up to 40% speedup. Lets see how your basic metal controller may looks like:

class Api::V1::BaseController < ActionController::Metal
  include ActionController::Rendering        # enables rendering
  include ActionController::MimeResponds     # enables serving different content types like :xml or :json
  include AbstractController::Callbacks      # callbacks for your authentication logic

  append_view_path "#{Rails.root}/app/views" # you have to specify your views location as well

Unfortunately NewRelic doesn’t support Metal by default, so you have to add monitoring manually.

Routing: use versioning

Nobody’s perfect. So are we. Your API will definitely be changed and extended multiple times in the future so you better take care of your versioning at the beginning. As you noticed, BaseController wrapped in V1 namespace. – API with Ruby on Rails: useful tricks by Innokenty Mihailov