Sharing experience of building one online product for 13 years

What is SPF – Sender Policy Framework

Spoofing is a type of a computer attack in which the attacker pretends to be someone else. In particular, email spoofing is an attack in which the attacker sends an email with a fake “From:” field. You can compare it to sending a traditional mail with forged return address.

If you are using one of the popular email services such as Gmail or Yahoo, you don’t need to worry about that. These providers keep security on the high level. But if you are just the owner of an internet domain, you should be aware of the spoofing vulnerability (even if you don’t send emails on your own).

Read the article …

How Tissot watch notifies about a weak battery

Watches usually don’t have a digital display which shows a battery status icon. As a result, users are informed about the weak battery in the least convenient moment: when they check the time and the watch hands are still.

Tissot has found a super-usable way to inform the user about a weak battery in the watch.

Read the article …

Setting cookies to subdomains in JavaScript

We’ve recently faced a problem of setting a cookie from to all subdomains in a * domain.

The solution seemed pretty straightforward: just set a wildcard cookie to (note that the first character is a dot). However, we had to determine the target domain (the actual value of “”) automatically because our code is fired on tens of thousands of different domains.

And here came the problem: the list of Top-Level Domains.

Read the article …

How to create better reports

How to create better reports with HTML

A report is probably the most common way of displaying data within any substantial business environments. Unfortunately a lot of reports we come across are simply dull and visually unpleasant.

Say no to reports in PDF format!

We cannot neglect the power of traditional plain PDF form, although we should not feel excused from being creative and resolute. There is no need to stay idle when technology allows us to experiment a little.

We asked ourselves the following questions:

  • Shall we make the reader download a separate file?
  • How many of them decide not to?
  • Are there any solid reasons to bear with closed format limitations?
  • And finally: can we create a new quality of report by designing it in a well-known form of a website? How to create better reports?
Read the article …

Should your email validator be that complex?

So you’re a keen programmer that one day faces a problem of validating user’s email address. Sounds easy.

You search Google for the best possible regular expression. After a while you end up with the following RFC-compliant best regexp ever:

Read the article …

Time change in software is done wrong

Time change in software is done wrong

Last weekend, most European countries switched back from Daylight Saving Time by moving back their clocks by one hour. People in the United States will do the same on November 2.

All modern software solutions adjust the time automatically. However, it turns out that the process of changing the time is not easy enough for the end-users.

Read the article …

Always use closures in your JavaScript app

Perform the following test in your JavaScript app. Open developer tools in your browser and paste the following in the Console:

_ = jQuery = $ = undefined;

Does your app still work correctly after firing this code? If the answer is no, read on.

Read the article …

How we connect our apps to dev environments

One of the most annoying drawbacks of developing desktop and mobile apps is the inability to switch between dev and production environments. When a client tells us about a problem with the app, our developers can’t reproduce the problem using the same app that is used by the customer.

Fortunately, we found a neat solution. We hard-code dev & production servers’ addresses inside the app that is released to customers. Then, depending on the platform, we use one of the tricks that tells the app to connect to the dev environment.

Read the article …

Keep your product healthy everyday

Every product team loves big updates that all customers cheer about.

But it’s important not to forget about those small changes that make your users’ lives easier. I believe good product teams should form a habit of improving the smaller parts of the app everyday. That’s what we do at LiveChat over and over again.

Read the article …

What developers can learn from roller coaster engineers

I’ve found an interesting analysis of roller coaster’s safety systems in Theme Park Design: Behind The Scenes With An Engineer book by Steve Alcorn.

It’s easy to imagine what happens when roller coaster’s breaks fail. Immediately, lots of guests are in danger.

There’s no room for failure in a roller coaster car.

Read the article …