Last week The New York Times hosted the 2017’s edition of Makers Week, an entire week dedicated to working on projects and ideas employees want to test, build and innovate on.

There are no boundaries to projects, nor specific scope requirements. You can use your time to do research on new topics or disciplines, contribute to open source projects, fix bugs or create products from scratch. It’s definitely not a new thing and I believe most companies are doing this now so I will not dwell on it. If you want to know more about how this works here at our office, you can read this article from last year’s edition.

Increasing our click through rate

One of our goals as a video team this year is to increase our click through rate when our users see our video player. We usually do a pretty good job of selecting thumbnails for all of our videos — often using photos taken by our own photo journalists. However, after watching a talk from JWPlayer folks and reading a research article from Netflix, it became clear to me that we can’t just assume a thumbnail is good for a given video. We should actually use some data and run A/B tests to come up with the best one.

In order to try to improve our thumbs, we’d need to be able to create them in a cleverer and faster way. So I thought that creating something to generate and serve thumbnails for any of our videos at any time, on-the-fly (on the time of an HTTP request), would be a great project for my Makers Week. When working at Globo.com, I saw some amazing open source projects being created and maintained by some wonderful engineers I met over there so the scope of the project would be nothing more than putting some of those projects together.

Lumberjack

Before starting, I invited Francisco Souza to help me. He’s a specialist when it comes to application deployment and all things related to Docker/Kubernetes/Google Cloud Service. I’m glad he accepted, things were much easier with his help.

As I said before, Lumberjack is a combination of open source projects that allow thumbnails extraction for videos. It leverages the powers of Thumbor, NGINX, nginx-thumbextractor module (or simply módulo do Wanden as we like to say in Portuguese) and the Lua programming language in order to extract and generate pictures for any given moment of any given video of our video library.

Architecture

We are deploying three services in different containers in a Kubernetes pod:

NGINX + Video Thumbnails Extractor Module: Responsible for scanning the video on a given mountpoint, extracting the frame of a given timecode and returning it on the fly. We used gcsfuse to mount our production GCS bucket where our videos library reside, allowing the module to go there and get the frame requested.

Thumbor: Responsible for applying filters, crops and resizing of images. Thumbor relies on different engines including OpenCV to apply functions passed as query strings on the HTTP request. It includes smart cropping, face and assets detections and a bunch of other cool stuff. You should take a look on this powerful project and see what it can do for you. The Docker image we are using for this service is available here.

NGINX + Lua Application: A simple Lua script that runs inside NGINX with this Lua Module. Given a VideoID, the script is able to fetch the right MP4 video asset from our internal API and send to the thumbnails extractor. The application is also responsible for getting the parameters passed from the user on the URL such as filters and resolution, send to Thumbor and return the final picture back to the user.

We decided not to open source Lumberjack. At the end of the day the whole project is just some business logics around the open source projects I mentioned on this post. So really all of the credit belongs to the guys who created and maintain Thumbor and the thumbextractor module. If you want something similar to what we did you can just deploy them.

Some Use Cases

Imagine we want to crop a frame from this video at 30 seconds to use as the cover of another vertical video on mobile phones (9×16), in grayscale, with smart cropping. We just need to pass the below as parameters and the service will make it for you:

Another great feature supported by the thumbnails extractor is the generation of sprites or tiles. We can, for example, generate a sprite map with thumbnails every one second and use it as a moving cover when the user hovers on it:

lumberjack.nyt.net/video-id?sprite=true&size=100&interval=1

See how it looks by placing the pointer over the image below:

We can also use the similar approach to use the sprite map for the thumbnails on the seekbar as you can see on this player:

Future

The Thumbnails Service is now part of our Q4 roadmap and Lumberjack is already in production. We didn’t present to the newsroom yet as we are still facing some performance issues with caching and the GCS bucket. The NGINX locations are not optimized so we’ll need to look back on them as well. To sum up, we’ll need to revisit a lot of stuff that we did in a rush during Makers week (I don’t even need to mention that we have zero tests for the Lua script too).

For the future, we want to be able to detect perfect looping GIF’s for using them on social channels and also detect highlights of a video based on the audio and closed captions. That way we can suggest thumbnails for our newsroom editors within our CMS. Finally, we’d love to integrate thumbnails tests with our A/B framework the same way Netflix did.

I have a @login_required decorator and a function assert_login_required that checks if a view has been decorated with it. I know the test is quite small but I decided to do some metaprogramming and simplify it even further:

import myapp.views
ensure_login_required(myapp.views.my_view)

Here is the code for ensure_login_required:

import sys
def ensure_login_required(view):
"""
Generate a test function checking that 'view' is using @login_required
"""
def test_func():
assert_login_required(view)
# get global namespace from where this function is being called, if I use
# globals() here I'll actually get the global namespace of this module
namespace = sys._getframe(1).f_globals
namespace['test_%s_requires_login' % view.__name__] = test_func

Manual paper

A handbook construction paper lifts best in a transparent envelope on, multipage instructions in several brochures and sleeves and sticks everything in a thin flat file from. To protect the documents from moisture and soiling. Unilateral assembly instructions, for example, are glued to the inside of the transport box lid to keep them permanently and directly accessible. In this way, they have the blueprint always.

Digital assembly instructions

In addition to or instead of a paper manual, it’s a good idea to save the gazebo assembly instructions digitally, for example by a photograph on a mobile device. This not only has the advantage, instead of fluttering in the wind paper manual to be able to handle a digital version better, but the same time prevents the loss. Therefore, save the instructions on a smartphone or tablet, so you have a backup.

Protection in adverse weather conditions

Even when the cheap tents for salewere erected strictly according to plan, the ground is on the site of stones and as a ground sheet as well as all side parts are accurately secured and sealed: In the case of rain, wind, and sun usually help only extras such films & Schedule to protected against the weather to be.

Wire ropes against the wind

Ask the gazebo, where possible, sheltered from the wind on. In nearby trees, but not directly under, for example, is a right place. He is indeed sheltered but is not charged when it rains due to too much water and storms the gazebo roof is not endangered by falling branches. Additional guy ropes fix the gazebo best when they are run in several directions and anchored by pegs firmly in the ground.

Other Plan against rain

Because aluminum does not rust, no precautions against rain must be taken when linkage. The situation is different for the wall sheets and the roof. Here urgent need to pay attention to water-resistant material, if you leave the gazebo are outdoors permanently. Prevents mold growth on walls substance should be prevented by complete drying of the tent walls before packing. Additionally, Planning and films can be stretched as additional protection in wet rain. Under Awnings & Accessories, You can find more meaningful extras like Sturmsicherungs- and repair kits with which cracks can be repaired quickly.

Awning for sun protection

To extend the gazebo in the sunshine, a solar sail is useful. This enlarges the shadow area and may, for example, be stretched as a trapezoid, square or triangle between the gazebo and a tree.

Interior for garden Tents

To shape, decorate or create the right lighting to be Aluminium Garden tent livable, Browsed on eBay in the category furniture for outdoor use or looking around in the class camping furniture and in the Department of exterior decoration. Here you can go on a discovery tour.

Furniture for outdoor use

Popular for Aluzelt are especially Benches & Sofas, let off which there are also beer benches and classic garden furniture. Optionally Barstools & bar tables are suitable for special festivals and celebrations. In addition to the design to consider when deciding that your gazebo device is weatherproof and easy to clean. After all, the Party furniture are usually standing outside and need moisture and sun tolerated without rust going to fade or become porous. Regular maintenance is achieving them also.

Light and heat for gazebo

A heater in the party tent is a comfort that you should, and your guests enjoy the area in front of the gazebo by Bauheizgeräte as the gas fan or heater. This cozy atmosphere arises, light tubes are & chains for parties always a welcome option chosen. But also act stylish lamps with solar technology, which are quickly recharged without electricity by sunlight and are therefore ideally suited for outdoor use.

Decoration for parties

A party without decoration is only half as good, which is why the creative sectors on eBay are particularly lush filled with offers. Under Party & Event Decoration to provide excellent party sets and extraordinary decorative elements to make to each festival to highlight the year. Take for selecting the party decoration time, because that eBay offer for creative products is tremendous. By Demo material entering, each gazebo a personal touch and can create an atmosphere on your guests will be amazed.

We took a few days talking about what you can not miss in my party in the home garden in tents for sale because there are many people who want to ride an event in your garden and do not know how. Others do know how to do, but it is always good some further advice on some issues. The protocol, for example, is an important topic to us after more than 20 years organizing wedding and events can be a little different, but do not discuss in this post today.

The first thing is to know who will be invited, is not the same to come friends or family, because one or the other how to organize will be different; also the number of people condition my party, if many are practically essential to mount a tent in the garden unless you want to suffer from the weather throughout the event. That is why we strongly recommend installing a shelter if the number of guests is large enough not to enter our house in case of inclement weather.

If the party is at noon is required to have somewhere to give shade. If the House can not find a space shade, we recommend two solutions: the first one and covers more area is a tent, which will give us plenty of shade, the second option will give us less shade, but that’s fine too are umbrellas, but considering that if seated, the guests have to be able to eat under a shade, that is, has to be carp, the umbrella or parasol, is whether the guests are standing, they can seek shade, it is not possible under any circumstances that the tables are under a parasol, because the sun moves and therefore the shadow is not static, so if one gives the shade for a while, then he will do so all the time.

If finally, we do an event with carp and out at night, you need to think about the temperature, the fact that our party guests to be cold are very unpleasant, so do not risk anything about it. From failure to success in this regard is a step.

As for the food, try to be varied if you’ve invited people on other occasions, not to repeat meal. Also critical that if you decide that the guests are standing and make the cocktail party type, try to give things that are easy to eat, because there is nothing but to eat hard things when you are invited to an event.

We have already been discussing the topic of music in another post, I think the background music, can be well outdoors, but do not abuse it, sometimes it is high, and not everyone is comfortable with it. When in doubt look to your guests and put faces, that will give a clear picture of whether or not too high. It’s ambient music, no disco music.

How do I organize an event tent in my garden?

Most people who contact us and ends up buying, has a first call which does not quite know what you need, have the illusion of holding something in the garden, but does not quite know what to put, you see they have a garden, but do not quite know how to prepare it, or how to make the most. Then we will try to give some tips so that any of our readers who have a garden can take full advantage.

The first thing you have to know a person with his garden is square meters has the dimensions of it will tell us what capacity is and what kind of party, celebration or event can make. Important that the square footage that we measure are useful, i.e., if it turns out that our garden is full of plants, areas sloping or low trees, are little practical areas, although they will serve to the party remains wider, and we provide excellent views. To find the square footage, we must teach us the following table, which will be approximate because you have to take into account other factors:

Party standing will be 1 square meter per person.

Party sitting will be 1.5 square meters per person.

With these two pieces of information that we can put the space, you have available. Above all, do not you, Take to the letter, because sometimes when comes a catering to your house asking for more space because you want to put a dessert buffet or want to put tables support or also have to count the number of writers who will participate in the event.