<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description></description><title>Limonade</title><generator>Tumblr (3.0; @limonade)</generator><link>http://blog.limonade-php.net/</link><item><title>Lemondoo</title><description>&lt;a href="http://xangelo.ca/lemondoo"&gt;Lemondoo&lt;/a&gt;: &lt;p&gt;A nice tutorial about doing a Todo web app with Limonade.&lt;/p&gt;</description><link>http://blog.limonade-php.net/post/5356171801</link><guid>http://blog.limonade-php.net/post/5356171801</guid><pubDate>Tue, 10 May 2011 10:00:06 +0200</pubDate></item><item><title>PHPBuilder.com: Building Web Apps with the Limonade PHP Framework</title><description>&lt;a href="http://www.phpbuilder.com/columns/limonade-php-framework/Jason_Gilmore05032011.php3"&gt;PHPBuilder.com: Building Web Apps with the Limonade PHP Framework&lt;/a&gt;</description><link>http://blog.limonade-php.net/post/5249720813</link><guid>http://blog.limonade-php.net/post/5249720813</guid><pubDate>Fri, 06 May 2011 21:27:25 +0200</pubDate></item><item><title>Lemontrac bug tracker</title><description>&lt;a href="http://xangelo.ca/lemontrac-bug-tracker"&gt;Lemontrac bug tracker&lt;/a&gt;: &lt;p&gt;Angelo Rodrigues share in this post how he wrote a bug tracker with Limonade PHP.&lt;/p&gt;</description><link>http://blog.limonade-php.net/post/4253368564</link><guid>http://blog.limonade-php.net/post/4253368564</guid><pubDate>Fri, 01 Apr 2011 08:22:33 +0200</pubDate></item><item><title>Limonade PHP 0.5 is released!</title><description>&lt;p&gt;It’s finally there with many fixes and new features since the 0.4.6.
See the &lt;a href="http://github.com/sofadesign/limonade/blob/0.5-stable/CHANGES"&gt;CHANGES&lt;/a&gt; file to learn more.&lt;/p&gt;

&lt;p&gt;For those who use to work with the &lt;a href="http://github.com/sofadesign/limonade"&gt;master branch&lt;/a&gt;, nothing really new but it’s a confirmation of the code stability, with an extra effort for documenting and testing the last features.&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://github.com/sofadesign/limonade/blob/0.5-stable/TODO"&gt;TODO&lt;/a&gt; has been  cleaned up and will show you more clearly what I plan for the next releases.
If you want to contribute, you’re welcome ;-)&lt;/p&gt;

&lt;p&gt;Thanks to all Limonade addicts !&lt;/p&gt;

&lt;p&gt;— Fabrice Luraine&lt;/p&gt;</description><link>http://blog.limonade-php.net/post/1328533346</link><guid>http://blog.limonade-php.net/post/1328533346</guid><pubDate>Sat, 16 Oct 2010 18:22:00 +0200</pubDate></item><item><title>http://github.com/sofadesign/lemons</title><description>&lt;a href="http://github.com/sofadesign/lemons"&gt;http://github.com/sofadesign/lemons&lt;/a&gt;: &lt;p&gt;I want to keep Limonade core thin, only with essentials features, but what about those useful stuff we carry from project to project ? Just keep and share those lemons together in &lt;a href="http://github.com/sofadesign/lemons"&gt;http://github.com/sofadesign/lemons&lt;/a&gt; ;-)&lt;/p&gt;</description><link>http://blog.limonade-php.net/post/1269389217</link><guid>http://blog.limonade-php.net/post/1269389217</guid><pubDate>Fri, 08 Oct 2010 16:41:28 +0200</pubDate></item><item><title>"We need to be more specific in our READMEs and Web sites where we can and think about what a smart..."</title><description>“We need to be more specific in our READMEs and Web sites where we can and think about what a smart newcomer would want to see. We need “Getting Started” or “For Newcomers” pages that tell people exactly what to do without bending over backwards to cover edge cases or show off esoteric features. Tours that don’t take diversions. Download X. Type Y. Run code Z. Instructing, rather than showing a smorgasbord of options, from which a new, confused user would choose none. Rather than offer 5 vaguely different alternatives on a “How To Install” page, give the simplest, most generic route, then discuss the alternatives for “advanced users.””&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://www.rubyinside.com/does-ruby-suffer-from-an-overabundance-of-choice-3648.html"&gt;Does Ruby Suffer From An Overabundance Of Choice?&lt;/a&gt; by Peter Cooper&lt;/em&gt;</description><link>http://blog.limonade-php.net/post/936489716</link><guid>http://blog.limonade-php.net/post/936489716</guid><pubDate>Wed, 11 Aug 2010 11:59:55 +0200</pubDate></item><item><title>Building Cloud Communication Apps with Tropo and Limonade (part 3)</title><description>&lt;a href="http://www.voiceingov.org/blog/?p=1899"&gt;Building Cloud Communication Apps with Tropo and Limonade (part 3)&lt;/a&gt;</description><link>http://blog.limonade-php.net/post/725186295</link><guid>http://blog.limonade-php.net/post/725186295</guid><pubDate>Tue, 22 Jun 2010 10:00:00 +0200</pubDate></item><item><title>Limonade + LDAP example</title><description>&lt;a href="http://github.com/stas/student.utcluj.ro"&gt;Limonade + LDAP example&lt;/a&gt;</description><link>http://blog.limonade-php.net/post/710890292</link><guid>http://blog.limonade-php.net/post/710890292</guid><pubDate>Fri, 18 Jun 2010 10:00:00 +0200</pubDate></item><item><title>Building Cloud Communication Apps with Tropo and Limonade (part 2)</title><description>&lt;a href="http://www.voiceingov.org/blog/?p=1882"&gt;Building Cloud Communication Apps with Tropo and Limonade (part 2)&lt;/a&gt;</description><link>http://blog.limonade-php.net/post/700218279</link><guid>http://blog.limonade-php.net/post/700218279</guid><pubDate>Tue, 15 Jun 2010 09:16:32 +0200</pubDate></item><item><title>RAC: PHP RabbitMQ Administration Console </title><description>&lt;a href="http://github.com/tnc/rac"&gt;RAC: PHP RabbitMQ Administration Console &lt;/a&gt;: &lt;p&gt;&lt;a href="http://github.com/tnc/rac"&gt;RAC&lt;/a&gt; is an administration console for &lt;a href="http://www.rabbitmq.com/" title="RabbitMQ - Messaging that just works"&gt;RabbitMQ&lt;/a&gt;,
        by Alvaro Videla and Neil Fang. 
        It is written with Limonade PHP and uses the &lt;a href="http://code.google.com/p/mypeb/" title=""&gt;PHP Erlang Bridge Extension&lt;/a&gt; to communicate with &lt;a href="http://www.rabbitmq.com/" title="RabbitMQ - Messaging that just works"&gt;RabbitMQ&lt;/a&gt;.&lt;/p&gt;</description><link>http://blog.limonade-php.net/post/597626926</link><guid>http://blog.limonade-php.net/post/597626926</guid><pubDate>Fri, 14 May 2010 10:00:00 +0200</pubDate></item><item><title>"The Limonade website names the aforementioned Camping and Sinatra frameworks as sources of..."</title><description>“&lt;p&gt;The Limonade website names the aforementioned &lt;a href="http://camping.rubyforge.org/"&gt;Camping&lt;/a&gt; and &lt;a href="http://www.sinatrarb.com/"&gt;Sinatra&lt;/a&gt; frameworks as sources of inspiration. It’s perhaps the most compact of the solutions described here in terms of the amount of code required to build something useful, with powerful demos such as the &lt;a href="http://www.limonade-php.net/examples/wikir/?/Home"&gt;Wikir wiki&lt;/a&gt; (written in under 200 lines of code). But perhaps the most powerful evidence of Limonade’s minimalistic approach is the example included with the project &lt;a href="http://www.limonade-php.net/README.htm"&gt;README&lt;/a&gt;, which includes all of the code necessary to power a one-page website:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;require_once 'lib/limonade.php';
dispatch('/', 'hello');
    function hello()
    {
        return 'Hello world!';
    }
run();
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Minimalistic indeed!&lt;/p&gt;”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://www.developer.com/features/article.php/3878476/Top-10-Lightweight-Frameworks-for-PHP-Development.htm"&gt;Top 10 Lightweight Frameworks for PHP Development&lt;/a&gt; by &lt;a href="http://www.developer.com/author.php/69323/Jason-Gilmore.htm"&gt;Jason Gilmore&lt;/a&gt;&lt;/em&gt;</description><link>http://blog.limonade-php.net/post/553065429</link><guid>http://blog.limonade-php.net/post/553065429</guid><pubDate>Tue, 27 Apr 2010 10:00:00 +0200</pubDate></item><item><title>"ALL code is ugly. Yours, mine, everyone’s. Code Is Ugly. Just face it. When someone says “beautiful..."</title><description>“ALL code is ugly. Yours, mine, everyone’s. Code Is Ugly. Just face it. When someone says “beautiful code”, hear “beautiful rotten entrails”. The only beautiful code, the most clean code, is no code at all. If it’s there, it’s ugly. The unfortunate fact of software development is that, in order to create beautiful software, we must use ugly code.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://gist.github.com/357981"&gt;gist: 357981 - A better coding convention for lists and object literals in JavaScript&lt;/a&gt; (via &lt;a href="http://mwunsch.tumblr.com/" class="tumblr_blog"&gt;mwunsch&lt;/a&gt;)&lt;/em&gt;</description><link>http://blog.limonade-php.net/post/517800749</link><guid>http://blog.limonade-php.net/post/517800749</guid><pubDate>Tue, 13 Apr 2010 09:58:09 +0200</pubDate></item><item><title>Cloud Telephony With Limonade and Cloudvox</title><description>&lt;p&gt;&lt;em&gt;[by Mark Headd]&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A couple of months ago, I did &lt;a href="http://www.voiceingov.org/blog/?p=1235"&gt;a quick write up&lt;/a&gt; on a new cloud telephony company named &lt;a href="http://www.cloudvox.com/"&gt;Cloudvox&lt;/a&gt;.  In the interim, I’ve been doing some playing around with their &lt;a href="http://help.cloudvox.com/faqs/getting-started/http-api"&gt;HTTP/JSON API for creating telephone applications&lt;/a&gt;, and I’ve been blown away by how simple and powerful a tool it is for building sophisticated cloud telephony applications.&lt;/p&gt;

&lt;p&gt;This post will provide a quick overview of how the Cloudvox JSON API can be paired with PHP and the delightfully awesome &lt;a href="http://limonade.sofa-design.net/"&gt;Limonade&lt;/a&gt; Framework.  If you’re not a PHP developer don’t despair - this example can easily be ported to other languages like Ruby (using &lt;a href="http://www.sinatrarb.com/"&gt;Sinatra&lt;/a&gt;) or C# (using &lt;a href="http://kayakhttp.com/"&gt;Kayak&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;Cloudvox API Helper Classes&lt;/h3&gt;

&lt;p&gt;When writing apps for the Cloudvox JSON API, there are two things that we need to manage - the JSON that we will send to Cloudvox (using plain old HTTP) and the response Cloudvox sends back to our app (this will include any user input collected from the caller, and also things like a unique identifier for the call, caller ID and other information about the call).&lt;/p&gt;

&lt;p&gt;To make managing both sides of our exchange with Cloudvox easier, I’ve created a set of PHP classes that can be used with any standard PHP IDE to make writing Cloudvox JSON and parsing Cloudvox responses simple and easy.  You can download this class library from &lt;a href="http://gist.github.com/308081"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Using these classes is pretty straightforward:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&lt;?php
  include('cloudvox-json-http-classes.php');
  $speak = new Speak("Hello world!");
  $hangup = new Hangup();
  Output::renderJSON($speak, $hangup);
?&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Will render:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;[{"name":"Speak","phrase":"Hello world!"},{"name":"Hangup"}]&lt;/code&gt;&lt;/p&gt;



&lt;p&gt;Required properties are included in the constructor for each class - in most IDE’s this means that you can simply use &lt;code&gt;Shift + Control + Space Bar&lt;/code&gt; when you create a new instance of the object to see what properties are required.&lt;/p&gt;

&lt;p&gt;Optional properties on all classes are handled by using the &lt;a href="http://www.php.net/manual/en/language.oop5.overloading.php"&gt;PHP __set() method&lt;/a&gt; in the base class.  This effectively let’s you overload the object and set properties which are not declared in the class definition.  So for example, if we wanted to collect input from the caller (e.g., their zip code) we would use the GetDigits class, and overload it to add a URL to post the results to:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&lt;?php
  // First argument passed into the constructor sets # of digits to collect.
  // Second argument sets the timeout.
  $getDigits = new GetDigits(1,5);
  // Now we overload the object to add a URL to post the results to.
  $getDigits-&gt;url = “http://somehost.com/myscript.php”;
?&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The problem with overloading in PHP is that you don’t get the benefit of having your IDE display overload options (it can’t because the properties that we wish to set are not declared in the class definition).  There also isn’t any way to control what overloaded properties get set, so its possible to add things the Cloudvox won’t understand.  &lt;/p&gt;

&lt;p&gt;I’m not sure there is any way around this given the way that PHP has implemented overloading.  I do plan to work on a set of Cloudvox classes using another language that handles overloading a bit better, like C#, but for now you should only overload to set the &lt;code&gt;&lt;strong&gt;url&lt;/strong&gt;&lt;/code&gt; and &lt;code&gt;&lt;strong&gt;method&lt;/strong&gt;&lt;/code&gt; properites for classes that can use them (see the Cloudvox docs for more details).&lt;/p&gt;

&lt;h3&gt;Sipping on some Limonade&lt;/h3&gt;

&lt;p&gt;If you know of the excellent Ruby Framework &lt;a href="http://www.sinatrarb.com/"&gt;Sinatra&lt;/a&gt; but you want to code your project in PHP, fear not - check out the equally excellent PHP framework called &lt;a href="http://limonade.sofa-design.net/"&gt;Limonade&lt;/a&gt;.  It’s the functional equivalent of Sinatra for PHP.&lt;/p&gt;

&lt;p&gt;Using Limonade with our set of Cloudvox JSON classes makes building cloud telephony applications very simple.  The biggest benefit is that you don’t have to split up the different steps in your application (i.e., collecting input, validating input, re prompting, etc.) into different PHP files (which can be kind of a pain) - all of your steps can be contained within a single file.  &lt;/p&gt;

&lt;p&gt;Limonade lets you set a URL “route” that Cloudvox can send HTTP requests to with results, and to get rendered JSON for another application step.  For example:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&lt;?php
  dispatch_get('/start', 'cloudvox_start');
  function cloudvox_start() {
    $speak = new Speak("Hello world!");
    $hangup = new Hangup();
    Output::renderJSON($speak, $hangup);
  }
?&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This “Hello World” example - defined in a script named &lt;code&gt;sample.php&lt;/code&gt; - could be accessed by hitting &lt;code&gt;&lt;a href="http://somehost.com/index.php?/start"&gt;http://somehost.com/index.php?/start&lt;/a&gt;&lt;/code&gt;.  To make things easier, we’ll use a little Apache magic to allow URL rewriting:&lt;/p&gt;

&lt;p&gt;&lt;script src="http://gist.github.com/314557.js?file=.htaccess"&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;This will let us access the above URL by hitting &lt;code&gt;&lt;a href="http://somehost.com/index.php/start"&gt;http://somehost.com/index.php/start&lt;/a&gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;A simple demo app using the Cloudvox JSON helper classes and the Limonade Framework can be seen below.  You can use this sample application with a &lt;a href="http://www.cloudvox.com/signup" target="_blank"&gt;new Cloudvox account&lt;/a&gt; to get started building cloud telephony applications.&lt;/p&gt;

&lt;p&gt;&lt;script src="http://gist.github.com/314557.js?file=simple_cloudvox_ivr.php"&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;This simple app demonstrates how powerful the &lt;a href="http://help.cloudvox.com/faqs/getting-started/http-api"&gt;Cloudvox JSON API&lt;/a&gt; is for creating cloud telephony apps.  When coupled with an elegant framework like Limonade, sophisticated, cloud-based telephony applications are readily available to any developer that wants to build one.&lt;/p&gt;

&lt;p&gt;The helper classes for the Cloudvox API are obviously a work in progress, so if anyone reading this has comments or suggestions feel free to let me know - mheadd [at] voiceingov.org. &lt;/p&gt;</description><link>http://blog.limonade-php.net/post/465296041</link><guid>http://blog.limonade-php.net/post/465296041</guid><pubDate>Mon, 22 Mar 2010 10:00:00 +0100</pubDate></item><item><title>Two new websites built with Limonade:

RoadFinger by Imre Mehesz 
Night party by Matěj Grabovský
</title><description>&lt;p&gt;Two new websites built with Limonade:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="http://roadfinger.mehesz.net/"&gt;RoadFinger&lt;/a&gt; by Imre Mehesz &lt;/li&gt;
&lt;li&gt;&lt;a href="http://night-party.cz/"&gt;Night party&lt;/a&gt; by Matěj Grabovský&lt;/li&gt;
&lt;/ul&gt;</description><link>http://blog.limonade-php.net/post/451914019</link><guid>http://blog.limonade-php.net/post/451914019</guid><pubDate>Tue, 16 Mar 2010 10:00:00 +0100</pubDate></item><item><title>http://www.limonade-php.net</title><description>&lt;p&gt;Limonade now has its own domain name ;-)&lt;/p&gt;</description><link>http://blog.limonade-php.net/post/450063683</link><guid>http://blog.limonade-php.net/post/450063683</guid><pubDate>Mon, 15 Mar 2010 16:06:27 +0100</pubDate></item><item><title>How to use content_for and partial</title><description>&lt;p&gt;This tutorial will teach you how to use &lt;code&gt;content_for()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;As an example, let’s use this default layout:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&lt;body&gt;
  &lt;div id="header"&gt;
    &lt;h1&gt;Our big bold header&lt;/h1&gt;
  &lt;/div&gt;
  &lt;div id="content"&gt;
    &lt;div id="side"&gt;
      &lt;?php if (isset($side)) echo $side; ?&gt;
    &lt;/div&gt;
    &lt;div id="main"&gt;
      &lt;?= $content; ?&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;/body&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;See that we have not only our usual &lt;code&gt;$content&lt;/code&gt; variable to render 
  the content, but also a second variable called &lt;code&gt;$side&lt;/code&gt;, 
  which will be responsible to render our sidebar.&lt;/p&gt;

&lt;p&gt;Next, create a controller function to handle the home action of our app:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# GET /
dispatch('/', 'home');
function home() {
  return render('home.html.php');
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And, the &lt;code&gt;home.html.php&lt;/code&gt; view file:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&lt;!-- begining 'side' block --&gt;
&lt;?php content_for('side'); ?&gt;
&lt;ul&gt;
  &lt;li&gt;Item 1&lt;/li&gt;
  &lt;li&gt;Item 2&lt;/li&gt;
&lt;/ul&gt;
&lt;?php end_content_for(); ?&gt;
&lt;!-- ending 'side' block --&gt;

&lt;h2&gt;Home Action&lt;/h2&gt;
&lt;p&gt;Main content…&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Finally, refresh the page to see that our sidebar now receives the content of our &lt;code&gt;'side'&lt;/code&gt; block.&lt;/p&gt;

&lt;p&gt;To improve our code, let’s use the &lt;code&gt;partial&lt;/code&gt; function, 
  which will render view file at that point within the current rendered view.&lt;/p&gt;

&lt;p&gt;Change the file &lt;code&gt;home.html.php&lt;/code&gt; to:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&lt;!-- begining 'side' block --&gt;
&lt;?php content_for('side'); ?&gt;
  &lt;?= partial('_sidebar.html.php'); ?&gt;
&lt;?php end_content_for(); ?&gt;
&lt;!-- ending 'side' block --&gt;

&lt;h2&gt;Home Action&lt;/h2&gt;
&lt;p&gt;Main content…&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And create a file called &lt;code&gt;_sidebar.html.php&lt;/code&gt; in the view folder. 
  Note that the underscore is optional.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&lt;ul&gt;
  &lt;li&gt;Item 1&lt;/li&gt;
  &lt;li&gt;Item 2&lt;/li&gt;
&lt;/ul&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now you can break your views into modular files. 
  It’s useful to insert specific CSS or JS and to make some AJAX stuff.&lt;/p&gt;</description><link>http://blog.limonade-php.net/post/438674987</link><guid>http://blog.limonade-php.net/post/438674987</guid><pubDate>Wed, 10 Mar 2010 09:57:00 +0100</pubDate><category>submited</category><category>tutorial</category><category>submission</category></item><item><title>Want to share your limonade experience, your tips, a tutorial ?
Now you can submit them...</title><description>&lt;p&gt;Want to share your limonade experience, your tips, a tutorial ?
Now you can &lt;a href="http://limonade.tumblr.com/submit"&gt;submit them&lt;/a&gt; directly on this tumblr.&lt;/p&gt;</description><link>http://blog.limonade-php.net/post/435044274</link><guid>http://blog.limonade-php.net/post/435044274</guid><pubDate>Mon, 08 Mar 2010 19:48:16 +0100</pubDate></item><item><title>New limonade branching model</title><description>&lt;p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;master&lt;/strong&gt; branch is now the bleeding edge / integration branch&lt;/li&gt;
&lt;li&gt;stable branches are named: &lt;strong&gt;X.X-stable&lt;/strong&gt; (currently last stable is 0.4-stable)&lt;/li&gt;
&lt;li&gt;tags remains the same: &lt;strong&gt;vX.X.X&lt;/strong&gt; (0.4.6 is actualy the last tag)&lt;/li&gt;
&lt;/ul&gt;&lt;/p&gt;</description><link>http://blog.limonade-php.net/post/349362537</link><guid>http://blog.limonade-php.net/post/349362537</guid><pubDate>Sat, 23 Jan 2010 20:07:58 +0100</pubDate></item><item><title>How to Handle a Pull Request from GitHub when Fork Queue doesn't work</title><description>&lt;p&gt;Since thursday, the Limonade github fork queue seems to be broken (or something’s wrong with GitHub). But I wanted to apply &lt;a href="http://github.com/cbrumelle/limonade/commit/6f556e7ba6f03dfc33a4884c1f87a894ccf0d25e"&gt;Colin’s last commit&lt;/a&gt; before working on the project today.&lt;/p&gt;

&lt;p&gt;So, I followed &lt;a href="http://markosullivan.ca/how-to-handle-a-pull-request-from-github/"&gt;this article&lt;/a&gt; and finally, it was very easy.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# Setup repo as a remote branch
git remote add -f cbrumelle git://github.com/cbrumelle/limonade.git

# Create the local copy
git checkout -b cbrumelle/0.5

# Get their changes into my personal working branch:
git checkout 0.5
git cherry-pick 6f556e7 # &lt;hash of user's specific changes that they requested you to pull&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then I clean up my project by removing Colin’s branches (maybe there’s a nicer way to do that):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# First I list my branches
git branch -a

# this is the output:
  0.4
* 0.5
  cbrumelle/0.5
  master
  remotes/cbrumelle/0.4
  remotes/cbrumelle/0.5
  remotes/cbrumelle/master
  remotes/origin/0.4
  remotes/origin/0.5
  remotes/origin/master

# Then I delete the local copy
git branch -d cbrumelle/0.5

# And the remote ones
git branch -r -d cbrumelle/0.4
git branch -r -d cbrumelle/0.5
git branch -r -d cbrumelle/master

# finally remove remote repository reference
git remote rm cbrumelle
&lt;/code&gt;&lt;/pre&gt;</description><link>http://blog.limonade-php.net/post/349150677</link><guid>http://blog.limonade-php.net/post/349150677</guid><pubDate>Sat, 23 Jan 2010 17:12:00 +0100</pubDate></item><item><title>Limonade 0.4.6 is available</title><description>&lt;p&gt;Changes:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;[CHANGED] for IIS/Windows compatibility: file_path() normalizes paths in *nix way, even on windows (backslashes are converted in slashes, double slashes are replaced by one). Refactoring options paths in run() to fix paths on windows.&lt;/li&gt;
&lt;li&gt;[FIXED] Removes php short open tags in default limonade views to be compatible with php5.3 default configuration (short_open_tags disabled)&lt;/li&gt;
&lt;li&gt;[FIXED] &lt;strong&gt;Big security issue&lt;/strong&gt; in render_file that allows accessing any files from outside public folder using ../ [#35]&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;I have updated &lt;a href="http://limonade.sofa-design.net/examples/wikir/"&gt;Wikir&lt;/a&gt; and the &lt;a href="http://github.com/sofadesign/limonade-blog-example"&gt;blog example&lt;/a&gt;. &lt;strong&gt;Please update your code!&lt;/strong&gt;&lt;/p&gt;</description><link>http://blog.limonade-php.net/post/263285356</link><guid>http://blog.limonade-php.net/post/263285356</guid><pubDate>Mon, 30 Nov 2009 10:05:58 +0100</pubDate></item></channel></rss>

