<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Blogs on Luca Guidi</title>
    <link>https://lucaguidi.com/blog/</link>
    <description>Recent content in Blogs on Luca Guidi</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-US</language>
    <copyright>Copyright Luca Guidi</copyright>
    <lastBuildDate>Tue, 10 Oct 2017 00:00:00 +0000</lastBuildDate>
    
	<atom:link href="https://lucaguidi.com/blog/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Introducing hanami-cli</title>
      <link>https://lucaguidi.com/2017/10/10/introducing-hanami-cli/</link>
      <pubDate>Tue, 10 Oct 2017 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2017/10/10/introducing-hanami-cli/</guid>
      <description>Introducing hanami-cli: a general purpose Command Line Interface (CLI) for Ruby. Learn why Hanami replaced thor in favor of hanami-cli and how to use it to build a CLI application in 5 minutes.
Why not thor? For long time we used thor 🔨 to build the Command Line Interface (CLI) of Hanami. But as the time passed, we needed more control on the internals of our implementation.
The Hanami 🌸 command line needs two crucial features: subcommands and extendibility.</description>
    </item>
    
    <item>
      <title>How To Test Ruby CLI: Console</title>
      <link>https://lucaguidi.com/2017/02/08/how-to-test-ruby-cli-console/</link>
      <pubDate>Wed, 08 Feb 2017 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2017/02/08/how-to-test-ruby-cli-console/</guid>
      <description>One of the most interesting challenges I met during Hanami development is to write isolated integration tests. The framework ships with an extensive Command Line Interface (CLI) to generate (or destroy) code, start the server, open a Ruby (or a database) console, create/drop the database, run the migrations, precompile assets, and print informations.
Console Hanami console is an interactive REPL based on IRB, which is useful to interact with the objects defined in a project.</description>
    </item>
    
    <item>
      <title>How To Test Ruby CLI: Code Generators</title>
      <link>https://lucaguidi.com/2017/02/01/how-to-test-ruby-cli-code-generators/</link>
      <pubDate>Wed, 01 Feb 2017 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2017/02/01/how-to-test-ruby-cli-code-generators/</guid>
      <description>One of the most interesting challenges I met during Hanami development is to write isolated integration tests. The framework ships with an extensive Command Line Interface (CLI) to generate (or destroy) code, start the server, open a Ruby (or a database) console, create/drop the database, run the migrations, precompile assets, and print informations.
Code Generators Code generators is a helpful feature that allows to generate code files. The main purpose is to speedup the development process.</description>
    </item>
    
    <item>
      <title>How To Test Ruby CLI: The Setup</title>
      <link>https://lucaguidi.com/2017/01/20/how-to-test-ruby-cli-the-setup/</link>
      <pubDate>Fri, 20 Jan 2017 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2017/01/20/how-to-test-ruby-cli-the-setup/</guid>
      <description>One of the most interesting challenges I met during Hanami development is to write isolated integration tests. The framework ships with an extensive Command Line Interface (CLI) to generate (or destroy) code, start the server, open a Ruby (or a database) console, create/drop the database, run the migrations, precompile assets, and print informations.
Full Isolation As I want to have integration tests to use CLI commands for real, the test suite is free of mocks/stubs.</description>
    </item>
    
    <item>
      <title>Lessons Learned In Open Source: The Motivations</title>
      <link>https://lucaguidi.com/2017/01/17/lessons-learned-in-open-source-the-motivations/</link>
      <pubDate>Tue, 17 Jan 2017 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2017/01/17/lessons-learned-in-open-source-the-motivations/</guid>
      <description>It was a rainy Wednesday. That 5th of Oct 2011, I was driving to work, stuck in the traffic, while the radio announced it: Steve Jobs was died.
I was shocked. For me and more than one generation, he was the iconic leader, whom fame and success went beyond his tech career.
&amp;ldquo;Can I achieve the same?&amp;rdquo; I thought.
Since that day, we self-proclaimed visionaries, we tried to emulate his attitude.</description>
    </item>
    
    <item>
      <title>Isolate Global State</title>
      <link>https://lucaguidi.com/2016/12/27/isolate-global-state/</link>
      <pubDate>Tue, 27 Dec 2016 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2016/12/27/isolate-global-state/</guid>
      <description>Using global state in software programs, is handy for development, but evil to maintain.
It can easily become source of bugs that are triggered by edge cases which are hard to track down.
Let&amp;rsquo;s see why, and how we can mitigate the problem.
An Example Of The Problem For instance, in Hanami code base we need to test how the framework configures itself according to certain env variables.
We used to test like this:</description>
    </item>
    
    <item>
      <title>The Penguin That Can&#39;t Fly</title>
      <link>https://lucaguidi.com/2016/06/07/the-penguin-that-cant-fly/</link>
      <pubDate>Tue, 07 Jun 2016 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2016/06/07/the-penguin-that-cant-fly/</guid>
      <description>A short story about OOP, interfaces and soft typing Today is the day at the headquarters of Spectacular Foo Ltd. The rising firm of the indie gaming scene is going to release its next blockbuster title: Banal Birds.
The year is 2019, Ruby 3 is three times faster and has soft typing, what a crazy coincidence that solves everything! It was a nostalgic decision but, you, as the lead developer decided to use Ruby for this project.</description>
    </item>
    
    <item>
      <title>25,000&#43; Req/s for Rack JSON API with MRuby</title>
      <link>https://lucaguidi.com/2015/12/09/25000-requests-per-second-for-rack-json-api-with-mruby/</link>
      <pubDate>Wed, 09 Dec 2015 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2015/12/09/25000-requests-per-second-for-rack-json-api-with-mruby/</guid>
      <description>Last month I gave the closing keynote at RubyDay 2015 by talking about Lotus and the future of Ruby.
For the attendees, the most surprising part of my speech was about MRuby. It’s a minimal version of Ruby, that can be embedded in any system that supports C.
I think that this technology can play a key role for Ruby in the next years. The simplicity of the language can be used within complex systems.</description>
    </item>
    
    <item>
      <title>JSON API Apps With Lotus</title>
      <link>https://lucaguidi.com/2015/11/24/json-api-apps-with-lotus/</link>
      <pubDate>Tue, 24 Nov 2015 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2015/11/24/json-api-apps-with-lotus/</guid>
      <description>Do you need a fast and lightweight JSON API app? It must be powerful, flexible, quick to develop and easy to deploy?
There is a simple solution for all these requirements: to use Lotus gems to build it.
Lotus is well known for full stack web applications (via lotusrb), but all the gems of this toolkit can be used as standalone components in existing Ruby applications.
It this case we will compose together the router and the actions to create a JSON API app that returns informations for books.</description>
    </item>
    
    <item>
      <title>Effective TDD With Ruby: Tmux Setup</title>
      <link>https://lucaguidi.com/2015/11/17/effective-tdd-with-ruby-tmux-setup/</link>
      <pubDate>Tue, 17 Nov 2015 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2015/11/17/effective-tdd-with-ruby-tmux-setup/</guid>
      <description>Do you find Test Driven Development (TDD) good in theory but hard to practice? Do you think it requires too much discipline and you don’t have time? Or, are you just struggling to get your workflow streamlined? Fighting to glue your tools together?
Well, you can improve a lot, by borrowing some tricks from me. I’ve practiced TDD with Ruby for many years now, and built an entire web framework only with these techniques.</description>
    </item>
    
    <item>
      <title>Effective TDD With Ruby: Vim Setup</title>
      <link>https://lucaguidi.com/2015/10/27/effective-tdd-with-ruby-vim-setup/</link>
      <pubDate>Tue, 27 Oct 2015 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2015/10/27/effective-tdd-with-ruby-vim-setup/</guid>
      <description>Do you find Test Driven Development (TDD) good in theory but hard to practice? Do you think it requires too much discipline and you don’t have time? Or, are you just struggling to get your workflow streamlined? Fighting to glue your tools together?
Well, you can improve a lot, by borrowing some tricks from me. I’ve practiced TDD with Ruby for many years now, and built an entire web framework only with these techniques.</description>
    </item>
    
    <item>
      <title>Effective TDD With Ruby: Time &amp; Flow</title>
      <link>https://lucaguidi.com/2015/10/20/effective-tdd-with-ruby-time--flow/</link>
      <pubDate>Tue, 20 Oct 2015 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2015/10/20/effective-tdd-with-ruby-time--flow/</guid>
      <description>Do you find Test Driven Development (TDD) good in theory but hard to practice? Do you think it requires too much discipline and you don’t have time? Or, are you just struggling to get your workflow streamlined? Fighting to glue your tools together?
Well, you can improve a lot, by borrowing some tricks from me. I’ve practiced TDD with Ruby for many years now, and built an entire web framework only with these techniques.</description>
    </item>
    
    <item>
      <title>Effective Remote Working</title>
      <link>https://lucaguidi.com/2015/10/13/effective-remote-working/</link>
      <pubDate>Tue, 13 Oct 2015 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2015/10/13/effective-remote-working/</guid>
      <description>Going remote is an appealing lifestyle, but without a guidance we can easily get lost. What’s the right balance between professional and personal life? How to make sure that you’ll finish your tasks by the end of the day?
You can get it right without too much effort. It’s just a matter of forming the right habits.
I work as a remote software engineer for three years now. During this time, I was successfully employed at Litmus first and then at Codeship.</description>
    </item>
    
    <item>
      <title>Lotus And Microservices</title>
      <link>https://lucaguidi.com/2015/05/05/lotus-and-microservices/</link>
      <pubDate>Tue, 05 May 2015 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2015/05/05/lotus-and-microservices/</guid>
      <description>The monolith is good (at the beginning) The easiest and convenient way to build a complex system is to use message passing. When all the components live in the same process, engineer’s life is easier.
Development cycles are shorter, interfaces can change quickly. When deploy time arrives, we will have only one deliverable to push. This is just great.
{% twitter There is an analogy between “message passing” and in person communication.</description>
    </item>
    
    <item>
      <title>A New Roadmap For Lotus</title>
      <link>https://lucaguidi.com/2015/01/01/a-new-roadmap-for-lotus/</link>
      <pubDate>Thu, 01 Jan 2015 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2015/01/01/a-new-roadmap-for-lotus/</guid>
      <description>Last year was great, and 2015 brings new challenges to Lotus.
Learn from mistakes When I released the first version back in June it was a wild, unexpected success. There was an uncommon hype for the initial version of a &amp;ldquo;yet another web framework for Ruby&amp;rdquo;.
Probably, Lotus&amp;rsquo; vision met the needs of a lot of developers in our Community. The demand of a rich, stable ecosystem of libraries and patterns to build applications that are dead simple to build and maintain.</description>
    </item>
    
    <item>
      <title>2014 Retrospective: A Year Of Lotus</title>
      <link>https://lucaguidi.com/2014/12/23/2014-retrospective-a-year-of-lotus/</link>
      <pubDate>Tue, 23 Dec 2014 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2014/12/23/2014-retrospective-a-year-of-lotus/</guid>
      <description>This has been a great year for Lotus.
At the beginning of 2014 I decided to open source this less invasive and simple framework for Rack.
Back in the day, it was just a software stored in my hard drive. An experiment that turned to be a fresh take for web development with Ruby. It had in it the seminal work of what is Lotus today, but it required patience for its blossoming.</description>
    </item>
    
    <item>
      <title>Introducing Lotus::Validations</title>
      <link>https://lucaguidi.com/2014/10/23/introducing-lotusvalidations/</link>
      <pubDate>Thu, 23 Oct 2014 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2014/10/23/introducing-lotusvalidations/</guid>
      <description>Data validation is an important piece in software architecture. It guarantees that the successive layers will operate on correct input. In the existing Ruby frameworks we&amp;rsquo;re used to see this responsibility flatten down into models.
The problem with this approach is that we end to mix a lot of validations for different use cases in a single place. When the application grows in complexity, we add new validations. If often happens that some rules are incompatible with others, then we introduce nasty conditionals to trigger only a subset of them.</description>
    </item>
    
    <item>
      <title>Meaningful Exceptions</title>
      <link>https://lucaguidi.com/2014/09/22/meaningful-exceptions/</link>
      <pubDate>Mon, 22 Sep 2014 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2014/09/22/meaningful-exceptions/</guid>
      <description>Writing detailed API documentation helps to improve software design.
We already know that explaining a concept to someone leads us to a better grasp. This is true for our code too. This translation process to a natural language forces us to think about a method from the outside perspective. We describe the intent, the input, the output and how it reacts under unexpected conditions. Put it in black and white and you will find something to refine.</description>
    </item>
    
    <item>
      <title>Introducing Lotus</title>
      <link>https://lucaguidi.com/2014/06/23/introducing-lotus/</link>
      <pubDate>Mon, 23 Jun 2014 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2014/06/23/introducing-lotus/</guid>
      <description>A year and a half ago I felt frustrated by the state of the art of web development with Ruby. Secretly, in my spare time, I started hacking with new ideas, taking nothing for granted, destroying and starting from scratch several times, until the software was distilled in a beautiful API.
It took me a decade to get here, by following a process of subtraction of what isn&amp;rsquo;t essential. Countless refinements to achieve modularity, to balance elegance with performance, and convenience with solid design.</description>
    </item>
    
    <item>
      <title>Three Things To Know About Composition</title>
      <link>https://lucaguidi.com/2014/06/09/three-things-to-know-about-composition/</link>
      <pubDate>Mon, 09 Jun 2014 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2014/06/09/three-things-to-know-about-composition/</guid>
      <description>A few days ago Aaron Patterson wrote a in interesting article about composition vs inheritance with Ruby.
He says that when inheriting our classes directly from Ruby&amp;rsquo;s core objects such as Array, our public API for that object will become too large and difficult to maintain.
Consider a powerful object like String which has 164 public methods, once our library will be released, we should maintain all that amount of code.</description>
    </item>
    
    <item>
      <title>Rails Is Not Dead</title>
      <link>https://lucaguidi.com/2014/05/19/rails-is-not-dead/</link>
      <pubDate>Mon, 19 May 2014 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2014/05/19/rails-is-not-dead/</guid>
      <description>A few years ago, my lead develop of the time, told me: &amp;ldquo;Beware of the coupling that you&amp;rsquo;re introducing in your models&amp;rdquo;. My answer was: &amp;ldquo;Hey, you don&amp;rsquo;t know what you&amp;rsquo;re talking about, this is ActiveRecord&amp;rdquo;.
I was an unexperienced developer fascinated by the innovation that Rails introduced. After all, my technology was able to get rid of all that configurations, and all that boring stuff from the past.
 - Patterns?</description>
    </item>
    
    <item>
      <title>We Are All Wrong About Software Design</title>
      <link>https://lucaguidi.com/2014/04/28/we-are-all-wrong-about-software-design/</link>
      <pubDate>Mon, 28 Apr 2014 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2014/04/28/we-are-all-wrong-about-software-design/</guid>
      <description>We are all wrong. When it comes to talk about opinions this is the way that things work. Everyone has her or his own beliefs shaped by years of experience in the field, frustrating code, books, successes, etc. How can all these backgrounds fall into a one unified theory? They just can&amp;rsquo;t.
You&amp;rsquo;ve always been told to pick the right tool for the job. But what&amp;rsquo;s the right tool? You decide it, according to your practical knowledge.</description>
    </item>
    
    <item>
      <title>Introducing Lotus::Model</title>
      <link>https://lucaguidi.com/2014/04/23/introducing-lotusmodel/</link>
      <pubDate>Wed, 23 Apr 2014 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2014/04/23/introducing-lotusmodel/</guid>
      <description>Almost all the Ruby frameworks for the Model layer mix up business logic with database details. This kind of architecture leads to god classes, slow build times and to a general bad design. These problems are well known to legacy projects&amp;rsquo;s maintainers.
What if we assign these roles to smaller components that are able to collaborate together? Imagine how life changing would be to work just with objects, without worrying how to persist them.</description>
    </item>
    
    <item>
      <title>Thread Safety With Ruby</title>
      <link>https://lucaguidi.com/2014/03/27/thread-safety-with-ruby/</link>
      <pubDate>Thu, 27 Mar 2014 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2014/03/27/thread-safety-with-ruby/</guid>
      <description>Moore&amp;rsquo;s law is over. Modern computation is exploited by running processes on multiple cores. Ruby has always ignored this trend, and the community didn&amp;rsquo;t put enough attention on this topic.
Ruby&amp;rsquo;s model for concurrency is based on threads. It was typical approach for object oriented languages, designed in the 90s. A thread is sequence of instructions that can be scheduled and executed in the context of a process. Several threads can be running at the same time.</description>
    </item>
    
    <item>
      <title>Introducing Lotus::View</title>
      <link>https://lucaguidi.com/2014/03/23/introducing-lotusview/</link>
      <pubDate>Sun, 23 Mar 2014 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2014/03/23/introducing-lotusview/</guid>
      <description>The missing part of all the Ruby web frameworks is the distinction between views and templates. A view is an object that encapsulates the presentation logic of a page. A template is a file that defines the semantic and visual elements of a page. In order to show a result to an user, a template must be rendered by a view.
Keeping things separated, helps to declutter templates and models from presentation logic.</description>
    </item>
    
    <item>
      <title>Redis Scripting with MRuby</title>
      <link>https://lucaguidi.com/2014/02/26/redis-scripting-with-mruby/</link>
      <pubDate>Wed, 26 Feb 2014 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2014/02/26/redis-scripting-with-mruby/</guid>
      <description>MRuby is a lightweight Ruby. It was created by Matz with the purpose of having an embeddable version of the language. Even if it just reached the version 1.0, the hype around MRuby wasn&amp;rsquo;t high. However, there are already projects that are targeting Nginx, Go, iOS, V8, and even Arduino.
The direct competitor in this huge market is Lua: a lightweight scripting language. Since the version 2.6.0 Redis introduced scripting capabilities with Lua.</description>
    </item>
    
    <item>
      <title>Introducing Lotus::Controller</title>
      <link>https://lucaguidi.com/2014/02/23/introducing-lotuscontroller/</link>
      <pubDate>Sun, 23 Feb 2014 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2014/02/23/introducing-lotuscontroller/</guid>
      <description>Lotus development is going well. The experiment of open source a framework per month is sustainable. I have the time to cleanup the code, write a good documentation and deliver great solutions.
This month, I’m proud to announce Lotus::Controller.
It’s a small but powerful and fast framework. It works standalone or with Lotus::Router and it implements the Rack protocol.
Actions The core of Lotus::Controller are the actions. An action is an HTTP endpoint.</description>
    </item>
    
    <item>
      <title>Building Sinatra with Lotus</title>
      <link>https://lucaguidi.com/2014/01/28/building-sinatra-with-lotus/</link>
      <pubDate>Tue, 28 Jan 2014 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2014/01/28/building-sinatra-with-lotus/</guid>
      <description>The beauty of Lotus is the composition of its frameworks. Each of them is well designed to achieve one and only one goal. The main advantage of this architecture is that delevopers can easily use and reuse those frameworks in countless ways.
Lotus::Router accepts anonymous functions as endpoints. This feature can be used to build Sinatra with it.
Initial setup We need to setup a Gemfile with:
source &amp;#39;https://rubygems.org&amp;#39; gem &amp;#39;lotus-router&amp;#39;  As second step, we create an Hello World application with Lotus::Router (run with rackup application.</description>
    </item>
    
    <item>
      <title>Introducing Lotus::Router</title>
      <link>https://lucaguidi.com/2014/01/23/introducing-lotusrouter/</link>
      <pubDate>Thu, 23 Jan 2014 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2014/01/23/introducing-lotusrouter/</guid>
      <description>For me, the first step in the long path of building a web framework was an HTTP router. By understanding requests coming from an user, it pays back with an immediate gratification: start it, open a browser and see a result.
My hope was to embark on a short journey, and reuse as much as possible existing libraries. But I soon discovered that the biggest problem of Ruby web frameworks is reusability of components.</description>
    </item>
    
    <item>
      <title>Announcing Lotus</title>
      <link>https://lucaguidi.com/2014/01/01/announcing-lotus/</link>
      <pubDate>Wed, 01 Jan 2014 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2014/01/01/announcing-lotus/</guid>
      <description>I&amp;rsquo;m pleased to announce Lotus: the Open Source project I&amp;rsquo;ve conceived, hacked and built during the last year.
Lotus is a full stack web framework for Ruby, built with lightness, performances and testability in mind. It aims to bring back Object Oriented Programming to web development, leveraging on stable APIs, a minimal DSL, and plain objects.
Standalone frameworks It&amp;rsquo;s composed by standalone frameworks (controllers, views, etc..), each one is shipped as an independent gem, in order to remark the separation of concerns.</description>
    </item>
    
    <item>
      <title>On Happiness</title>
      <link>https://lucaguidi.com/2013/12/17/on-happiness/</link>
      <pubDate>Tue, 17 Dec 2013 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2013/12/17/on-happiness/</guid>
      <description>As a naive younger man, I have always been disappointed by how many year resolutions have missed in the past. Mostly because they are a failure by design: the wishful self is delighted to dictate the new agenda of change, where all the lazyness, tiredness, and unforeseen accidents will magically disappear to leave room to a bright, joyful and productive future. This will never happen.
What really works is to plan nothing If you aim to write more, just find the time and do it.</description>
    </item>
    
    <item>
      <title>Introducing Redis Store</title>
      <link>https://lucaguidi.com/2012/06/18/introducing-redis-store/</link>
      <pubDate>Mon, 18 Jun 2012 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2012/06/18/introducing-redis-store/</guid>
      <description>[ I wrote this post for Redis ToGo, you can find the original article here and the related discussion on Hacker News. ]
Redis Store aims to be a toolkit for your Ruby applications, it natively supports sharding, master/slave replication, marshalling, timeouts and namespaces. Plus, it&amp;#8217;s really easy to use with the most popular frameworks, such as Ruby on Rails.
If you love modularity, you will love Redis Store too: under the hood it just activates, at runtime, the best set of low level features requested by the above software layers.</description>
    </item>
    
    <item>
      <title>Lean Rails App Setup</title>
      <link>https://lucaguidi.com/2012/02/27/lean-rails-app-setup/</link>
      <pubDate>Mon, 27 Feb 2012 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2012/02/27/lean-rails-app-setup/</guid>
      <description>I&amp;#8217;m currently working as a consultant for an UN agency (IFAD) and we have a portfolio of ~15 Rails apps, developed in the last four years. The environment is heterogeneous and an half dozen of these projects are interfacing with legacy software and they are legacy themselves. As counterpart, the new apps we are developing are running on the latest bleeding edge technologies (Ruby 1.9.3, Rails 3.2, MongoDB, Redis, WebSockets etc.</description>
    </item>
    
    <item>
      <title>HTML5 Geolocation Testing with Cucumber</title>
      <link>https://lucaguidi.com/2011/02/13/html5-geolocation-testing-with-cucumber/</link>
      <pubDate>Sun, 13 Feb 2011 00:00:00 +0000</pubDate>
      
      <guid>https://lucaguidi.com/2011/02/13/html5-geolocation-testing-with-cucumber/</guid>
      <description>[ I wrote this post for frestyl, you can find the original article here. ]
 Here at frestyl we&#39;re working hard, using cutting edge technologies to promote their wider-scale adoption and to help set the new standards with our direct experience. In the past months our geolocation service has been changed from a somewhat flaky IP lookup to the new HTML5 W3C draft. Our users noticed the difference and they are happier of the new level of precision.</description>
    </item>
    
  </channel>
</rss>