In today’s article we are going to focus on the Angular2 framework . We will talk about the Angular1 drawbacks,  describe  the main changes in the new version of the framework and, most importantly, share our impressions of the new version of the software.

Read more »

Our clients often try to push us to hire freelancers and remote developers to expand the team. Sometimes we agree, but more often – we actively resist the suggestion 🙂 This article will help us to understand various schemes of remote development and determine which schemes are efficient for different types of projects.

The first step is to define the terms. If we talk about physical location of employees and degree of their involvement in a project, there are two basic dichotomies: Contract vs Staff Employee and Office vs Remote Work.

Remote dihotomy

Read more »

We’re often asked how much it costs to make a Trading Desk system. We literally just the other day received this letter:
“…I must know how much it costs to develop a complete Agency Trading Desk, even just a ballpark figure… It would be a big help if you could give me an approximate cost…”

When you start developing what our correspondents imply by an Agency Trading Desk (ATD), it turns out that their understandings differ.

We have several ATDs at various stages of development. Before starting development, we looked at quite a few commercial systems. “Looked at” isn’t the best word, but maybe evaluate; by this we mean our analysts combed the length and breadth of functions and conducted a detailed analysis of the fundamental features.

We’ll soon be placing a description of several systems here. We will start with TheTradeDesk and Cappture. These choices may seems somewhat strange. TheTradeDesk is without a doubt the leader in its field; it’s a full DSP with a very richly functional ATD, especially in terms of RTB purchasing. Cappture is a new and, at the moment, fairly unknown system. As it turned out, one of our Japanese clients, a digital agency representative, uses exactly these systems and wanted to create several hybrid functions in their own ATD system.
Read more »

The task of forecasting traffic

When making banner advertising solution, it’s very important to provide advertisers with the possibility of campaign forecasting. This kind of forecast lets the user know:

  1. If it’s possible to return the necessary number of impressions in a planned period
  2. Potential banner placement for a given advertising space with given targeting conditions.

Practically all modern advertising platforms (Google, AdWords, OpenX, Yandex.Direct) provide forecasts, although usually without mentioning the quality of the forecast. We will speak in more detail about how a forecast system can be built and what the factors influence the quality of the forecast.

A typical forecast system uses a cumulative advertising-space statistics system as a starting point.
Read more »

Writing requirements specification is one of the first stages of the project development. It precedes the system development. The requirements specification describes the business domain, the existing infrastructure of the customer, the requirements for the created functional as well as non-functional requirements. The resulting document is useful for both the business user so that he made sure that all of his wishes for the future system had been taken into account, and for us to assess the cost of system development.

Requirements specification. Basic principles.

In our projects, when returning videos from servers, the question of disk subsystem efficiency comes up. Obviously, gigabit network interfaces are more efficient than, say, a 2 disk RAID 0. If video clips shared the same popularity, then hard disks would be a bottleneck when returning content.

We, however, have been lucky and there has always been a small set of clips which make up 80% of the traffic and a long line of less-frequently-accessed clips. This small set subsides in the file system’s cache and is returned practically without any disk activity.

For example, if we have 100 gigabytes of clips on a server, and the server has 24 gigs of memory, then we can draw this graph. Along the horizontal line, we have files sorted by popularity; along the vertical line, we have traffic caused by these files. The total traffic is the surface area under the line.
Read more »

Last week, the “Russian Internet technologies” conference took place, where we presented our experience working with streaming video and protecting video content.

A fairly large portion of our projects have to do with storing and publishing video content on the Internet. One of the many questions our clients often ask is the question of protecting content from illegal reproduction and distribution. There’s a wide-spread belief that there exist programs and technologies which are capable of guaranteeing that the copying and redistribution of licensed content is impossible. In reality, these software only gives off the impression that is possible.

In our presentation, we sought to discuss existing technologies, their vulnerabilities, and free, open-source equivalents which grant the same level of protection as proprietary and very expensive products.
In particular, we showed that popular “protected” video streaming protocols, like RTMPE, don’t guarantee the protection of content from illegal copying. No existing DRM system can simply provide 100% protection.
As an alternative to expensive and often limited content-protection systems, a series of simple techniques were suggested which would offer the same level of security.

Our presentations can be viewed here.

Writing a convenient and decent-looking wrapper for working with transactions is a favorite pastime for many developers. Transactions must be able to start, finish and rollback properly, and they can also be nested. Python is a multifaceted language (or, as speechwriters say, “Multi-paradigm”), giving us innumerable ways of doing it.

As a foundation, I usually use Python DB API (namely, psycopg2 module). The API itself is rather low-level and is crying for improvement. What can be done?

Initially, let’s just make an ordinary decorator for opening and closing a transaction:
Read more »

We have customers and partners in different countries, and not all of them can comfortably communicate in English. We use trac for bug tracking and documentation. So we wrote and maintain a plugin for trac, that uses Google Translate to translate ticket descriptions and user comments to the language specified in the user preferences.


The plugin home page.

Please try it out!

In continuing our tradition of “in simple words about complex”, and considering we do a lot of work on projects related to video content on the Internet, I want to address some questions about codecs and containers we get from our clients.

We’ll start with the fact that media information (video and audio) must be saved in a digital format, and it would be good if it were saved in a compressed format. Codecs do this (codec, coder-decoder). They convert media information into digital streams and back.


It shall be said that formally, codecs are the implementation of a coding/decoding standard, or in other words, a program or algorithm. Still, codecs are sometimes referred to as the coding standard.
Read more »