Top 10 Python libraries of 2015

Update December 2019: The edition with the top Python libraries 2019 has been published here. As the new year approaches, we often sit back and think about what we have accomplished in 2015. Many of our projects would not have been as successful if it were not for the great work done by the open source community, providing some solid, bullet-proof libraries. Everyone and their grandma seems to be writing top 10 lists, so we couldn’t be less and compiled our own.

How to tame a frenzy of tasks with Celery

Using Celery in our projects is not a constant, but from time to time we need to deal with some kind of asynchronous tasks for example, sending emails, calling APIs, and such. But this time we faced another kind of challenge, we needed to implement a processing intensive pipeline to download tweets, un-short URLs, get the sentiment using MonkeyLearn among other tasks. Celery looks like a perfect tool but, as in other aspects of life itself, it all depends on how you use the tool.

Building a Docker image with templating and initialization support

In my last post about Docker, I outlined a technique I used for having a single container configurable via environment variables, even if the app we are trying to run does not support it by default. I used nginx as an example use case. Today we are going one step further: what if we want to be kind and release said image to the public? Clearly, we have to generalize some steps of the process so we can save users from inheriting the Dockerfile.

Configurable Docker containers for multiple environments

You already know about it: the latest hype is all about application containers and Docker. At Tryolabs we try to keep up to date with latest developments, so we have been using Docker extensively for quite some time; both for development as well as production systems. The idea is that we have all our applications containerized so they and their dependencies can coexist without affecting each other. For example, say your application A depends on version 1.

Elasticsearch Demo: SF crime analysis using significant terms

Significant terms aggregation is one of our favorite features in Elasticsearch. Initially included in the 1.1.0 release (March 2014), it is still an experimental feature. In contrast with other types of Elasticsearch aggregations, which generally do simple counts, sums, and other simple math operations, significant terms tries to find statistical anomalies in your data, or as they call it, finding the uncommonly common. There are plenty of excellent resources on what significant term aggregations does, and some practical examples on how to use it.

Optimizing Elasticsearch (part 1): Rescoring queries with multi-type fields

Sometimes you want to run complex real-time queries on hundreds of millions of documents, and you’ll quickly find out the limits of what your hardware can do. Some complex queries may involve indexing fields in multiples ways, by applying different analyzers. For example, you may want to index a field applying stemming with one analyzer, using the shingle token filter with another and indexing with the standard token filter. Luckily there is an easy way to do this in Elasticsearch using multi-type fields.

nvd3-tags: A tiny library for making charts from CSV data

In many of our projects, we’ve had the need of building tons of charts. We used to use jqPlot for chart creation, but then switched to NVD3, a library that takes D3, powers it down, and offers a simple interface to creating the basic types of charts. Not all apps are SPAs that render everything client-side and use the server solely as an API, however. For more traditional apps that use server-side templating, you basically have two options:

Elasticsearch Analyzers (or How I Learned to Stop Worrying and Love Custom Filters)

We at Tryolabs are big fans of Elasticsearch, so much we are even sponsoring the first ever Elasticon which is taking place in March in San Francisco. We are diving a little deeper in more interesting features and this time we are going to talk about Analyzers and how to do cool things with them. August 2018: Please note that this post was written for an older version of Elasticsearch.

Python + Elasticsearch. First steps.

Lately, here at Tryolabs, we started gaining interest in big data and search related platforms which are giving us excellent resources to create our complex web applications. One of them is Elasticsearch. Elastic{ON}15, the first ES conference is coming, and since nowadays we see a lot of interest in this technology, we are taking the opportunity to give an introduction and a simple example for Python developers out there that want to begin using it or give it a try.


I recently gave a talk about Rust at TryoLabs, the slides of which are available here. The presentation is meant as a broad introduction, and doesn’t cover methods, modules or concurrency. Rust is an incredible example of dogfooding: built by Mozilla so they could use it to build the Servo rendering engine, which will eventually become a part of Firefox. Rust’s main appeal is that it’s a safer C++: It brings elements from higher-level languages like a robust type system and metaprogramming (macros!

Like what you read?

Subscribe to our newsletter and get updates on Deep Learning, NLP, Computer Vision & Python.

No spam, ever. We'll never share your email address and you can opt out at any time.