Open Friday Hacks of March, 2013

by Luis Cipriani

Every first Friday of each month at Abril Mídia Digital is Open Friday, a day the teams have to turn ideas into real projects, to study and practice new technologies, to hack internal products and to integrate with other teams. It’s a day without restrictions of scope, anyone can do anything, but all knowledge must be shared with co-workers or people outside the company.

Open Friday happens since 2010 and we had several projects that nowadays are used in production, or got open sourced code, or was presented in conferences. By far, we are having a very good experience with the results from these days.

From now on we hope to share each month the results from it. The Monday mourning right after the Open Friday, the teams gather in a room to share the created initiatives. So let’s share some of the 21 projects done in February, 1st, that were presented today for all teams:

  • will.js: a framework to create web components and asset on-demand loading;
  • ralio: a command line interface for Rally management software;
  • Generic API: a generic resource domain to temporarily fulfill some very specific Platform requirements;
  • A recommendation system for IBA;
  • Fosformol: A Scrum Retrospective organizer;
  • Several performance tunnings or benchmarks (Lua + nginx);
  • Hot Engine: A Rails engine to mount another engines on the fly;
  • A POC of a responsive design interface for vejasp.abril.com.br
  • A parser for Semantic Search;
  • A mobile app to ease project management with Rally;
  • A POC for image search with Lire;
  • Improvements in Ruby course slides.


Above is a picture of the today’s lighting talks.

You can see that some projects already are available as an open source project, so fell free to contribute. If you are interested in any other project that wasn’t shared with public code, please leave your comment and we can start a conversation with the project owner.

Stay tuned to this blog to see next month’s projects.


Spreading the knowledge with our experiences with REST

by Luis Cipriani

For three years we have been developing what we believe is the Content Management System that could fit the enormous list of requirements Abril Mídia need to fulfill to achieve goals such as creating value from the content produced by the publishing houses; speeding up the process of online publishing and enabling a fast adoption of user interaction solutions in our Internet products.

This high diversity of requirements (coming from more than 60 publishing houses) has a relevant impact in the complexity of the systems architecture. We had previous experiences showing that any monolithic or short-term solutions were not a good idea, the only plausible solution would be to change the mindset to a long-term solution and dive in a process to find a more adequate solution.

We came up with a solution that rely a lot on REST principles and constraints, started the implementation and continually reviewed the solution strategy.

In August, 2012, we gave a talk at QConSP conference, in Sao Paulo, to share the implemented solution and lessons learned. Furthermore, the talk present a complete review of the REST constraints and how we applied it; and I believe that study cases presentations are the best to learn complex or common misunderstood concepts in conferences.

The talk had a very good feedback from the conference attendants, the room became smaller for the crowd attending the session and since a lot of people weren’t able to view the talk, the conference organizers asked us to do another session, later in the same day. And that session was filmed by the folks at InfoQ Brazil (sorry English readers/listeners, but this one is in Portuguese).

Shame on me to take a long time to write a post about it here, but the good news are that Luiz Rocha and I sent a chapter proposal (now in English, and with more details about the solution) to the next REST book (REST: Advanced Research Topics and Practical Applications), published by Springer. At the moment I am writing this post, the proposed chapter is conditionally accepted (we just need to fix some simple review points). \o/ The estimated date of publishing is Summer 2013.

Follow us for updates and posts showing more and more how we do our stuff at Abril and please, share your comments.


Explaining Semantic Web

by Luis Cipriani

Few weeks ago I gave an introduction to Semantic Web at the Sao Paulo Ruby User Group (GURU, in portuguese). Since Semantic Web is a very broader term that entail tons of technologies and tools, I decided to focus more on explaining the single main reason that make companies apply it in their projects:

Data Integration

We, as software engineers and product managers, face a lot of problems, specially in big companies, when we need to integrate data coming from several sources. Anytime I needed to do this, I realize that I kept rumbling to myself: “Why we don’t have only one universal metadata for our data? How we let this happen?”

The big triumph provided by the Semantic Web set of technologies, specifications and tools is to enable you, as owner of highly variable data and metadata, to organize it in a way that you can find any information and derive knowledge as easily as a SQL-like query. This is possible because we start to represent the data in the simplest way possible: a triple (subject -> predicate -> object).

For example:

  • Abril_Engineering_blog  >  is_owned_by  >  Abril
  • Abril_Engineering_blog  >  is_hosted_by  >  Tumblr
  • Luis_Cipriani  >  work_at  >  Abril

By establishing relationships with all your data based on a controlled and known metadata (better known as ontology), you create the most flexible format for representing a data, and from this point, you can derive anything the quality of your data would allow.

At Abril we have a perfect environment to use this strategy for data integration, since we produce a lot of content that we are able to extract structure, such as, people, events, venues, articles, user comments, etc. Some projects are on their way and others are about to start. We hope to be talking about it sooner.

Meanwhile, check the presentation slides below, it has more detail about the technologies and cases:


Learning with Tech Cine

by Luis Cipriani

As software developers, we are always looking for new technologies and teaching ourselves on the latest techniques and ways to improve the quality or productivity of our work. Thanks to the Internet and the contributions of millions, it’s very easy to find good sources of content freely available, or even greater content at viable prices.

But sometimes we do this by ourselves and often we don’t have time or people to discuss what we learned, to evaluate how we can apply the technique in a practical way. 

Given this, we decided to spread the knowledge in our office, and the result is Tech Cine!

Every Thursday morning, we join all the developers together in the middle of the office to watch a tech video (no more than 50 minutes) and then we reserve 15 to 30 minutes after the video to discuss:

  • the main/relevant points of interest
  • if the technique worth the investment
  • if we have similar cases inside company
  • how could we apply that technology in our projects

The first 2 Tech Cines discussions were very productive, with a good participation of developers. We started with the episode 1 of Clean Code video series and the second was a video from 2012 Strata Conference in Santa Clara. 

Another thing that we did that proved to be interesting is that since we can’t send every developer to international conferences, we bought the whole video collection at the conference website, and now everybody can have access to the conference rich content! \o/


HBase: Introduction to column oriented databases

by Luis Cipriani

Tech Talk at 22nd GURU (Sao Paulo/Brazil Ruby User Group). February 25th, 2012

Big Data is getting more attention each day, followed by new storage paradigms. This presentation shows a fast intro to HBase, a column oriented database used by Facebook and other big players to store and extract knowledge of high volumes of data.

This year we expect to tell much more about HBase, since we are using it in a project that’s about to be deployed in production. As soon as we got some nice results we will talk about here. Keep tuned.


Case CMS Abril - Systems of systems and (almost) chaotic architecture

by Luis Cipriani

This post is only to revisit an old presentation given by David Sobrinho (a former solutions architect) at QCon Sao Paulo in 2010. This presentation is relevant because explain the philosophy and architectural patterns used to implement our CMS.

When accepting that organization are wide, complex and organic systems, we must to adapt ourselves to this reality. How to build a enterprise system that adapts fast to requirements changes and necessity conflicts constrained by this paradigm?

Some of the theories researched to create the final solution involves Complex Systems theory, emergence versus BDUF, Systems of systems and Rest architectural style and how these concepts are helping Abril to build the platform that supports the publishing of more than 100 websites/online products, offering more than 300 millions of requests/month.

Unfortunately, this presentation is not translated to English. Let us know if you want to know more about that.


Tracking real time user behavior in websites Homes with Ruby, Sinatra, Heroku, Redis

by Luis Cipriani

Tech talk at 21o. Guru (Sao Paulo/Brazil Ruby User Group). January 28th, 2012

This presentation shows how, in less than 1 month, the Brazilian publishing company Abril build a system to track user visiting in realtime to help publishers decide what would be the best content to atract more users to websites. This system uses ruby, sinatra, heroku and redis.


Fearless HTTP requests abuse

by Luis Cipriani

Tech talk at 20o. Guru (Sao Paulo/Brazil Ruby User Group). November 26th, 2011

In REST architectures, there is always concerns about the high volume os HTTP requests, that can increase the load on servers. However, this issue could be easily solved if the system implement a good HTTP cache strategy. This talk will show in a simple way how works the underestimated HTTP cache protocol.