In 2016 I finished my Computer Science thesis: an automatic summarizer for Brazilian Portuguese news called ConceptRank. The idea was to take LexRank, a classic method that builds a graph of sentences and picks the most “central” ones, and replace its sentence similarity with a concept-based one that should cope better with synonyms and spelling variants. I evaluated it on CSTNews, a corpus of 50 clusters of news articles, with the ROUGE metric. The result: ConceptRank beat LexRank and CSTSumm, a system from the literature.
[Read More]Enhancing your skills with one code exercise a day
One of the characteristics I notice the most when talking about Software Development is the need of constantly being studying, learning and updating yourself. And as having this constant effort of gathering information, last year, I found myself a bit lost in the process. I was tired of reading and doing courses, and was struggling to find a sparkle to code every day again.

Also, I found this pattern in most of my colleagues as we got tired of staying at home only (due to the pandemic). So I started thinking about what could bring me joy in programming again. Then I heard about exercism.io (of course there are many other tools that have the same concept, but I had a good time with Exercism).
[Read More]Using VCR to Mock Your Requests
In the past months, I’ve been working with a lot of external API requests. Since I’m part of the Marley Spoon’s logistics team, our challenge is to make sure our requests are done in time and everything is delivered in good shape.
Part of this task, as a software developer, is making sure the code I write is well tested, and does what it is supposed to do. Our software has many integrations with our logistics partners. When integrating with their systems, we don’t want to hit external APIs with real requests every time we run our tests. This not only generates unnecessary requests that can cause problems with API rate limits and other unwanted side-effects. It also makes them run slower. To avoid that, we pretend to make real requests and there is a tool that helps “faking” these calls: by recording real data from a real network request, we are able to stub a third party’s web service response. The saved data is called a “cassette tape” and the name of the tool I refer to is VCR.
[Read More]Open Source Quarantine
It’s quarantine time, and we might be tired of staying at home, not going out to live our lives. But we can turn it into something productive that might help other developers in the future. Since we have this free time, it would be awesome to give back (or just to start giving back) to tools that we appreciate and are free.
There are a lot of blog posts that already cover on how to contribute to open source, so I’ll not rewrite what they say. They are ages better than I am on explaining that, so my work here will basically summarize where to look and where to start.
[Read More]Setting up tests for Django Plugins
Did you have a good idea for a nice Django plugin? Don’t know how to set up tests for it without creating a whole Django app for your project? Here is the solution for you. This article is written after a pull request for Django Public Admin, using django-stdimage as a base.
Django Public Admin is a plugin that makes a public and read-only version of the Django Admin. It uses Poetry to manage packages and dependencies, pytest to run tests in addition to pytest-django.
Migrating our CI to Github Actions
And how we did that in Tourlane
Now in Tourlane we are switching our deployment system to use GitHub Actions. So, in this post, we are sharing our experience with the tool so far, and how we are migrating our projects, little by little to the tool.
What is CI/CD?
Martin Fowler, one of the original authors of the Agile Manifesto, describes them like this in this book:
[Read More]Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early.