Apparently a pretty versatile template system. Now, I've used a couple in various different projects: Erb in my Rails, Jade in my feeble attempt at Node.js. But the situation I always find myself in is that often times, the templating markup usually clutters the main markup. Take this for example: <% @projects.each do |project| %> <%= project.name %> <%= project.due_date %> <% end %> There's _more_ template than there is actual markup! Not to mention, mixing <% %> with the html traditional < /> is **really** confusing to the eyes. This led me to something I thought about today... In the .NET world, you will often find something like: String.format("The answer is {0} miles", 123) This is a fairly flexible way of handling dynamic, potentially runtime string interpolation. Instead of passing '123' as a parameter we could call on an object. p = new Pedometer(); print(String.format("The distance from here to San Diego is {0}", p.from("53703").to("92101"))); I really like the flexibility of this, but why do the arguments even have to be positional. If you're scoping these formatted strings to an object, couldn't you just access attributes of an object directly in the string? Consider this: user = { name: "Nick Radford", email: "[email protected]", location: "Madison, Wi" }; str = "Welcome {name}, thank you for signing up with your email,"; str += "{email}. We noticed you're in {location}.\n"; str += " Click /here/ to see some great deals!"; Then by extending the String class, we could call: str.evaluate(user); to produce the following output: "Welcome Nick Radford, thank you for signing up with your email, [email protected]. We noticed you're in Madison, Wi. Click /here/ to see some great deals!" I like this way of marking up my text so much, that I'm using it in something I'm developing for work.