<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en-US">
  <title>Piece of Cake Software - Home</title>
  <id>tag:pocsw.com,2008:mephisto/</id>
  <generator version="0.7.3" uri="http://mephistoblog.com">Mephisto Noh-Varr</generator>
  
  <link href="http://pocsw.com/" rel="alternate" type="text/html" />
  <updated>2007-06-27T02:43:43Z</updated>
  <link rel="self" href="http://feeds.feedburner.com/pocsw/feed" type="application/atom+xml" /><feedburner:browserFriendly></feedburner:browserFriendly><entry xml:base="http://pocsw.com/">
    <author>
      <name>admin</name>
    </author>
    <id>tag:pocsw.com,2007-06-27:13</id>
    <published>2007-06-27T02:39:00Z</published>
    <updated>2007-06-27T02:43:43Z</updated>
    <category term="Projects" />
    <category term="Ruby on Rails" />
    <link href="http://pocsw.com/2007/6/27/blogblogs" rel="alternate" type="text/html" />
    <title>BlogBlogs</title>
<content type="html">
            &lt;p&gt;&lt;a href="http://blogblogs.com.br"&gt;&lt;img src="http://assets1.blogblogs.com.br/public/bb/images/promo/bb_logo_lime_on_black.jpg" alt="BlogBlogs" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At the begin &lt;a href="http://blogblogs.com.br"&gt;BlogBlogs&lt;/a&gt; was my way to learn &lt;a href="http://rubyonrails.org"&gt;Ruby on Rails&lt;/a&gt;, but immediately it became a real website and a few months later a brand new &lt;strong&gt;Web 2.0&lt;/strong&gt; startup company. It is a &lt;strong&gt;blog indexing, searching and ranking&lt;/strong&gt; website with an embedded &lt;strong&gt;social network of bloggers and readers&lt;/strong&gt; for the Brazilian (and portuguese speaking) blogosphere.&lt;/p&gt;

&lt;p&gt;The site was launched in June, 2006 as a prototype, but was in February, 2007 with the release of a new version of the site that it entered the mainstream. It jumped from a few thousand visits per day to &lt;strong&gt;around 150,000 visits daily&lt;/strong&gt; as of today. In the last months it ranked as &lt;a href="http://technorati.com/blogs/blogblogs.com.br"&gt;Top 500 in the Technorati&lt;/a&gt; ranking, &lt;a href="http://www.alexa.com/data/details/traffic_details?site0=blogblogs.com.br&amp;amp;site1=&amp;amp;site2=&amp;amp;site3=&amp;amp;site4=&amp;amp;y=r&amp;amp;z=1&amp;amp;h=300&amp;amp;w=610&amp;amp;range=6m&amp;amp;size=Medium&amp;amp;url=blogblogs.com.br"&gt;Top 10,000 in the Alexa.com&lt;/a&gt; ranking and is in the &lt;strong&gt;Top 250 in traffic in Brazil&lt;/strong&gt; and &lt;strong&gt;Top 500 in Portugal&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Its a self funded entrepreneurship sustained by &lt;a href="http://google.com/adsense"&gt;AdSense&lt;/a&gt; ads and it is &lt;strong&gt;100% developed in Rails&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://blogblogs.com.br"&gt;BlogBlogs&lt;/a&gt; also provides several tools for bloggers to enhance their sites such as the &lt;a href="http://blogblogs.com.br/weblog/perma/atencao-usuarios-do-widget-ultimos-leitores"&gt;Last Visitors Widget&lt;/a&gt; present on sidebar at the right of this page. It shows the last &lt;strong&gt;BlogBlogs&lt;/strong&gt; users who visited this site and its very popular in among the Brazilian bloggers.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://pocsw.com/">
    <author>
      <name>admin</name>
    </author>
    <id>tag:pocsw.com,2007-06-26:12</id>
    <published>2007-06-26T20:20:00Z</published>
    <updated>2007-06-26T20:21:32Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://pocsw.com/2007/6/26/new-version-of-the-textmate-pocsw-bundle-released" rel="alternate" type="text/html" />
    <title>New Version of the TextMate PoCSw Bundle Released!</title>
<content type="html">
            &lt;p&gt;Hi, I just released a new version of the &lt;a href="http://pocsw.com/2007/6/26/textmate-open-file-from-url-bundle"&gt;TextMate PoCSw Bundle&lt;/a&gt;. You can find it the &lt;a href="http://pocsw.com/projects/textmate-pocsw-bundle"&gt;projects area&lt;/a&gt; and it has lots of enhancements from the first version. Now you can open a file from an URL &lt;strong&gt;selected on the text&lt;/strong&gt;, &lt;strong&gt;from the clipboard&lt;/strong&gt; or &lt;strong&gt;from the user input&lt;/strong&gt; and it has several &lt;strong&gt;error handling&lt;/strong&gt; enhancements.&lt;/p&gt;

&lt;p&gt;Special thanks for &lt;a href="http://blog.circlesixdesign.com"&gt;Brett Terpstra&lt;/a&gt; from the &lt;a href="http://blog.circlesixdesign.com"&gt;Circle Six Design&lt;/a&gt; for his suggestions, code and feedback. Thanks Brett!!!&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://pocsw.com/">
    <author>
      <name>admin</name>
    </author>
    <id>tag:pocsw.com,2007-06-26:9</id>
    <published>2007-06-26T03:41:00Z</published>
    <updated>2007-06-26T03:41:38Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://pocsw.com/2007/6/26/textmate-open-file-from-url-bundle" rel="alternate" type="text/html" />
    <title>TextMate Open File from URL Bundle</title>
<content type="html">
            &lt;p&gt;If you use &lt;a href="http://macromates.com/"&gt;TextMate&lt;/a&gt; you probably love it, but you may find yourself searching for some missing functionalities. Well, today I was trying to solve a support request from my &lt;a href="http://blogblogs.com.br"&gt;blog indexing&lt;/a&gt; site called &lt;a href="http://blogblogs.com.br"&gt;BlogBlogs&lt;/a&gt; and I had to check a blog feed from the web and I like to see code on TextMate, however it doesn't have an &lt;strong&gt;open file from URL&lt;/strong&gt; option on the &lt;strong&gt;File Menu&lt;/strong&gt;. Of course that I could download the feed using the browser or &lt;a href="http://www.gnu.org/software/wget/"&gt;wget&lt;/a&gt;, but I would like to have something very fast and handy for that task inside &lt;strong&gt;TextMate&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Well, a few days ago I started to study how to create &lt;a href="http://macromates.com/textmate/manual/bundles#bundles"&gt;bundles&lt;/a&gt; for &lt;strong&gt;TextMate&lt;/strong&gt; to develop a &lt;a href="http://www.capify.org/"&gt;Capistrano&lt;/a&gt; bundle for it, but it seems to be a little bit more complex than what I was planning. So, I decided to write an easier bundle and create a &lt;a href="http://pocsw.com/textmate-open-file-from-url-bundle"&gt;Open File from URL Bundle for TextMate&lt;/a&gt; as may first publicly available &lt;strong&gt;TextMate Bundle&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I'm going to pack and name all my bundles in the &lt;strong&gt;PoCSw Bundles&lt;/strong&gt; package. You can download the first version with the &lt;a href="http://pocsw.com/textmate-open-file-from-url-bundle"&gt;TextMate Open File from Url Bundle&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://pocsw.com/assets/2007/6/26/PoCSwBundles.zip"&gt;&lt;img src="http://pocsw.com/assets/2007/6/26/tmbundle.gif" alt="Bundle" /&gt; Download the PoCSw TextMate Bundle!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is pretty simple to install and use. To install unzip the file and double-click the bundle icon. It will be installed on your &lt;strong&gt;TextMate&lt;/strong&gt;. To use, open a file and type the &lt;strong&gt;bundle shortcut&lt;/strong&gt;, or go to the &lt;strong&gt;PoCSw Bundles&lt;/strong&gt; item in the &lt;strong&gt;Bundles Menu&lt;/strong&gt; and choose the &lt;strong&gt;Open File from URL&lt;/strong&gt; option. A prompt will be present asking for the &lt;strong&gt;URL&lt;/strong&gt;. Type the URL and click  the &lt;strong&gt;Ok button&lt;/strong&gt;, the content of the URL will be inserted on the current file.&lt;/p&gt;

&lt;p&gt;If you have any doubt, just left a comment here. I may take time to respond, but you can be sure I will. &lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://pocsw.com/">
    <author>
      <name>admin</name>
    </author>
    <id>tag:pocsw.com,2007-05-21:4</id>
    <published>2007-05-21T19:13:00Z</published>
    <updated>2007-05-21T19:25:16Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://pocsw.com/2007/5/21/serving-action-cache-with-the-proper-content-type-in-rails" rel="alternate" type="text/html" />
    <title>Serving Action Cache With The Proper Content-Type In Rails</title>
<content type="html">
            &lt;p&gt;Everybody knows that &lt;a href="http://rubyonrails.com"&gt;Rails&lt;/a&gt; provides 3 types of &lt;a href="http://ap.rubyonrails.com/classes/ActionController/Caching.html"&gt;caching&lt;/a&gt; mechanisms. &lt;strong&gt;Page&lt;/strong&gt; cache, &lt;strong&gt;action&lt;/strong&gt; cache and &lt;strong&gt;fragment&lt;/strong&gt; cache. However, by default, Rails serves the cached content as &lt;strong&gt;text/html&lt;/strong&gt; and that may be an issue for those who wants to cache different types of contents, such as standard HTML for its web pages and XML for its feeds or REST responses.&lt;/p&gt;

&lt;p&gt;I faced that issue in the last weeks while trying to improve the performance of my website called &lt;a href="http://blogblogs.com.br"&gt;BlogBlogs&lt;/a&gt; (a Brazilian / Portuguese speaking blogs indexing and searching - please visit). The problem was to enhance the speed of the feed of the &lt;a href="http://blogblogs.com.br/weblog/"&gt;Official BlogBlogs Weblog&lt;/a&gt; and also the speed on the responses for the &lt;a href="http://blogblogs.com.br/developers/"&gt;BlogBlogs public REST API&lt;/a&gt;. In both situations I need to server cached XML with the proper content type (you know, the builder and XML handling is really slow in Rails and also on majority other platforms).&lt;/p&gt;

&lt;h2&gt;Choosing the right type of cache&lt;/h2&gt;

&lt;p&gt;The first step was to choose between &lt;strong&gt;page&lt;/strong&gt;, &lt;strong&gt;action&lt;/strong&gt; or &lt;strong&gt;fragment&lt;/strong&gt; cache.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ap.rubyonrails.com/classes/ActionController/Caching/Pages.html"&gt;Page cache&lt;/a&gt; is the &lt;a href="http://scottstuff.net/blog/articles/2005/09/28/rails-caching-presentation"&gt;fastest but less scalable&lt;/a&gt; Rails caching solution. Rails never touches the cached content, so to serve the right content type I'll have to use some of the workarounds available with routes and rewrites (what is dependent of the webserver). Then I dismissed page action towards an 100% Rails based solution.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ap.rubyonrails.com/classes/ActionController/Caching/Fragments.html"&gt;Fragment cache&lt;/a&gt; whas not an option for builder templates (.rxml). As far as I know it can only be used for HTLM templates (.rhtml). Then fragment cache was also dismissed since I need to generate XML output.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ap.rubyonrails.com/classes/ActionController/Caching/Actions.html"&gt;Action cache&lt;/a&gt; was the last option and it worked for me. With fragment cache I was able to cache content generated by an XML template (.rxml) and also to control the cache handling in order to achieve the desired result: &lt;strong&gt;cached xml content served with the proper content-type&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;The problem&lt;/h2&gt;

&lt;p&gt;First step is to have the action that generates the XML cached, so the controller will be like this:&lt;/p&gt;

&lt;pre&gt;&lt;code class="ruby"&gt;class WeblogController

  caches_action :feed

  def feed
    @items = Item.find :all
  end

end&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;That makes &lt;code&gt;WeblogController#feed&lt;/code&gt; to be cached. So, at the first time the action is called Rails will generate the content using the template &lt;code&gt;feed.rxml&lt;/code&gt;, the content will be delivered to the browser with the proper content-type and a copy of it will be cached in your cache directory. Usually (using the standard Rails cache storage) the cache file will be something like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/webapp/tmp/cache/0.0.0.0.3000/weblog/feed.cache
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The next time the action is cached, Rails will check for the existence of the cached fragment, load it and deliver it to the browser, however with the content-type &lt;code&gt;text/html&lt;/code&gt; and thats exactly the behavior we want to void. We need that the cached content be delivered to the browser as &lt;code&gt;text/xml&lt;/code&gt; or &lt;code&gt;application/xml&lt;/code&gt; (or something like that). &lt;/p&gt;

&lt;h2&gt;Understanding action cache&lt;/h2&gt;

&lt;p&gt;Now I'll try to explain how the action cache works with my limited knowledge on Rails internals (I have not studied the code, and I can tell some wrong stuff). Once we define that the action feed is to be cached, Rails will mix-in the necessary cache code in the controller. Also this cache code works as a filter, being executed around the method (action) code. The cache code will check for the fragment, creating it (based on the action code) or reloading an existing fragment and delivering it to the browser. The glitch is that for existing fragments the content is delivered with the &lt;code&gt;text/html&lt;/code&gt; content-type which may be incorrect for some situations.&lt;/p&gt;

&lt;p&gt;That's all we need to know about action cache in order to understand the solution for the problem. But we need to know a little bit of &lt;a href="http://rubyonrails.org/api/classes/ActionController/Filters/ClassMethods.html"&gt;filters&lt;/a&gt;. Rails filters are executed in the order they are created.  That said, one of characteristics of action cache is the ability to have some filters being executed before the actual cache code is executed. This allow us to deal with things like authentication and is also a key aspect in our solution. In order to have a filter being executed in an action with cache, the filter declaration needs to be placed before the &lt;code&gt;caches_action&lt;/code&gt; declaration.&lt;/p&gt;

&lt;h2&gt;The solution&lt;/h2&gt;

&lt;p&gt;The solution is pretty simple. We'll create a filter which will checks for the existence of the action cache fragment and if the fragment exists the filter will load it, set the header for the proper content-type and then will deliver the fragment content. That is it, what we did was to prevent the Rails cache code to be executed when the fragment exits and then run our own code which makes the right thing. Now our controller looks like this:&lt;/p&gt;

&lt;pre&gt;&lt;code class="ruby"&gt;class WeblogController

  # Our filter call...
  before_filter :cache_as_xml

  # Rails action cache call...
  caches_action :feed

  # Our action
  def feed
    @items = Item.find :all
  end

  private

  # Our filter code...
  def cache_as_xml

    # Building the fragment name...
    # I do not know a better way to do that. Please let me know if you know.
    fragment_name = request.env[&amp;quot;HTTP_HOST&amp;quot;].gsub(&amp;quot;:&amp;quot;,&amp;quot;.&amp;quot;) + request.env[&amp;quot;REQUEST_URI&amp;quot;]
    fragment_name = fragment_name.last == &amp;quot;/&amp;quot; ? fragment_name.chomp(&amp;quot;/&amp;quot;) : fragment_name

    # Reading the fragment cache (if exists, or nil if not)...
    fragment = read_fragment( fragment_name )

    if !fragment.nil?
      # Setting the content-type header to the proper content-type (in this case text/html, but it can be anything)...
      @headers[&amp;quot;Content-Type&amp;quot;] = &amp;quot;text/xml;&amp;quot;

      # Delivers the content
      render  :text =&amp;gt; fragment

      # Void any further processing (do not forget this)
      return false

    end     

  end

end&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now, when you call the action and there is a cached content, the fragment content will be delivered to the browser using the content-type defined in the filter.&lt;/p&gt;

&lt;p&gt;That's it.&lt;/p&gt;

&lt;h2&gt;Does it worth ?&lt;/h2&gt;

&lt;p&gt;Oh yeahh.... the following data is not a real benchmarking, but it shows how far the cache can speedup your application. Those are the Rails log for two consecutive calls to the cached action. In the first one the cache was empty and then the action code is executed to render the output (around &lt;strong&gt;10 seconds&lt;/strong&gt;). The following one is the same request being served with the cached content (around &lt;strong&gt;0.001 second&lt;/strong&gt;). That's &lt;strong&gt;10.000 times faster&lt;/strong&gt;!!!&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Completed in 10.24998 (0 reqs/sec) | Rendering: 10.18748 (99%) | DB: 0.00025 (0%) | 200 OK [http://www.blogblogs.com.br/weblog/feed]
Completed in 0.00099 (1009 reqs/sec) | Rendering: 0.00006 (5%) | DB: 0.00000 (0%) | 200 OK [http://www.blogblogs.com.br/weblog/feed]
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Now, lets expire the cache&lt;/h2&gt;

&lt;p&gt;There are two ways to expire the cache. The hardcore way is to delete the cached files, you can prepare a shell script which will clear the files and then schedule this as a cron job.&lt;/p&gt;

&lt;p&gt;But if you want to have better control of the cache expiring, you should use Rails solutions for that. You can explicitly expire a cache fragment with the &lt;code&gt;expire_fragment()&lt;/code&gt; method. However, if must be aware because Rails create the cache fragments based on the request url, so the same fragment can be under two different paths, such as: &lt;code&gt;/webapp/tmp/cache/blogblogs.com.br/weblog/feed.cache&lt;/code&gt; and &lt;code&gt;/webapp/tmp/cache/www.blogblogs.com.br/weblog/feed.cache&lt;/code&gt;. That said, you must clear both possibilities in you code (inside a sweeper or some other place in you app). You don't need to add the &lt;code&gt;.cache&lt;/code&gt; extension while calling &lt;code&gt;expire_fragment()&lt;/code&gt;. Your code should be like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;expire_fragment("blogblogs.com.br/weblog/feed")
expire_fragment("www.blogblogs.com.br/weblog/feed")
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;To the infinity and beyond...&lt;/h2&gt;

&lt;p&gt;Let's think ahead, Rails could add this kind of functionality to the caching mechanisms. I didn't tried to patch Rails (I'm not too confident to do that), but I wondered on something like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Extend the &lt;code&gt;caches_action&lt;/code&gt; with some options like this&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;caches_action :action, :content_type =&amp;gt; 'text/xml'
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then the cache code will do what we did in our &lt;code&gt;cache_as_xml&lt;/code&gt; filter.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I believe that this kind of things can be easily added to Rails and will solve this issue in an elegant way. I'll forward this post to &lt;a href="http://www.loudthinking.com/about.html"&gt;David Heinemeier&lt;/a&gt;, maybe this can be added to Rails 1.2.&lt;/p&gt;

&lt;h2&gt;More stuff and references ...&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://public.ok2life.com/welcome/index/62.html"&gt;How to cache the output of an XML page in Rails&lt;/a&gt; by &lt;a href="http://public.ok2life.com/profile?u=5"&gt;David&lt;/a&gt; - This is the post where I found the ideas for this solution. Actually the whole solution is there, but with some things that didn't worked out of the box for me and with just a few explanations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://scottstuff.net/blog/articles/2005/09/28/rails-caching-presentation"&gt;Rails caching presentation&lt;/a&gt; by &lt;a href="http://scottstuff.net/blog/pages/about"&gt;Scott Laird&lt;/a&gt; - This is a post and a &lt;a href="http://scottstuff.net/presentations/rails-caching/"&gt;very nice presentation&lt;/a&gt; regarding caching in Rails. It's a must read to understand the differences between the three Rails caching schemes. The presentation is a little bit old, but it is still valid.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://clickablebliss.com/blog/2006/02/17/rails_caching_xml_bad_mime_types/"&gt;Rails + Caching + XML = Bad Mime Types&lt;/a&gt; by &lt;a href="http://clickablebliss.com/"&gt;ClickableBliss&lt;/a&gt; - Nice article about the bad mime type blues in Rails caching.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Please add your comments here and let me know if that helped you somehow or if you found other ways to do that. ;-)&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://pocsw.com/">
    <author>
      <name>admin</name>
    </author>
    <id>tag:pocsw.com,2007-05-20:2</id>
    <published>2007-05-20T04:25:00Z</published>
    <updated>2007-05-20T04:27:48Z</updated>
    <category term="About" />
    <link href="http://pocsw.com/2007/5/20/pt" rel="alternate" type="text/html" />
    <title>Sobre</title>
<content type="html">
            &lt;p&gt;A &lt;strong&gt;Pice of Cake Software&lt;/strong&gt; nasceu num destes devaneios numa das madrugada em que eu estava programando o &lt;a href="http://blogblogs.com.br" title="BlogBlogs"&gt;BlogBlogs&lt;/a&gt;. Pensei, "todo site tem um &lt;strong&gt;powered by&lt;/strong&gt; ou &lt;strong&gt;desenvolvido por&lt;/strong&gt; e o BlogBlogs tambÃ©m deveria ter". EntÃ£o pensei, "o que colocar? Desenvolvido por Manoel Lemos...??.. eca... Powered by Lemos.Net ...??.. eca... jÃ¡ fiz isto um monte de vezes". EntÃ£o, de repente, tive o seguinte pensamento "Como Ã© fÃ¡cil fazer software com &lt;a href="http://rubyonrails.org" title="Ruby on Rails"&gt;Ruby on Rails&lt;/a&gt;..." Eureca!!! Ã‰ra isto mesmo, Ã© fÃ¡cil, Ã© teta, Ã© cafÃ©-com-bolinho, Ã© piece-of-cake... dai veio o &lt;strong&gt;Piece of Cake Software&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;AlÃ©m do fato de que a expressÃ£o &lt;strong&gt;Piece of Cake&lt;/strong&gt; (Ã© um pedaÃ§o de torta) tem muito a ver com Rails, este nome tambÃ©m tem muito a ver com o que acredito sobre desenvolvimento de software. Desenvolvimento deve ser uma atividade gostosa, recompensadora, e fÃ¡cil. Software tem que ser fÃ¡cil e intuitivo. Isto Ã© a filosofia da &lt;strong&gt;Piece of Cake Software&lt;/strong&gt;, a Ãºnica empresa do mundo de apenas 1/4 de homem (por enquanto). Pois Ã©, empresas de um homem sÃ³ existem vÃ¡rias, mas de 1/4 de homem sÃ³ a &lt;strong&gt;Piece of Cake Software&lt;/strong&gt;. Funcionamos da 0h as 6hs da madugrada, ou seja, 1/4 de dia.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://pocsw.com/">
    <author>
      <name>admin</name>
    </author>
    <id>tag:pocsw.com,2007-05-20:1</id>
    <published>2007-05-20T04:22:00Z</published>
    <updated>2007-05-20T04:27:23Z</updated>
    <category term="About" />
    <link href="http://pocsw.com/2007/5/20/en" rel="alternate" type="text/html" />
    <title>About</title>
<content type="html">
            &lt;p&gt;The &lt;strong&gt;Piece of Cake Software&lt;/strong&gt; was born in one of those crazy delusions in the late hours in the night while I was coding the &lt;a href="http://blogblogs.com.br" title="BlogBlogs"&gt;BlogBlogs&lt;/a&gt;. I thought, "every website has the wordings &lt;strong&gt;powered by&lt;/strong&gt; or &lt;strong&gt;developed by&lt;/strong&gt; and the BlogBlogs needs that also". Then I wondered, "what to write? Developed by Manoel Lemos?? argh... Powered by Lemos.Net?? argh... I have done that so many times". Then, suddenly, I had the following thought "How easy is to develop software with &lt;a href="http://rubyonrails.org" title="Ruby on Rails"&gt;Ruby on Rails&lt;/a&gt;..." Eureca!!! That is it, its easy, its fast, its a piece-of-cake... then the &lt;strong&gt;Piece of Cake Software&lt;/strong&gt; was born.&lt;/p&gt;

&lt;p&gt;Beyond the fact that the expression &lt;strong&gt;Piece of Cake&lt;/strong&gt; has everything to Rails, this name also reflects what I believe in terms of software development. Development must be a joyful, rewarding and easy activity. Software must be easy and intuitive. That is the &lt;strong&gt;Piece of Cake Software&lt;/strong&gt; philosophy, the unique company in the world of a quarter-of-man (so far). There are several one-man's band, but a-quarter-man's company, only the &lt;strong&gt;Piece of Cake Software&lt;/strong&gt;. We are opened from midnight to 6AM, a quarter of day.&lt;/p&gt;
          </content>  </entry>
</feed>
