Lotus And Microservices

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. »

A New Roadmap For Lotus

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 “yet another web framework for Ruby”. Probably, Lotus’ 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. »

2014 Retrospective: A Year Of Lotus

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. »

Introducing Lotus::Validations

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’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. »

Meaningful Exceptions

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. »