Call from Gmail

Recently Gmail started recognizing phone numbers in email contents and converting them into clickable links. Once clicked, it shows ‘phone’ similar how it shows gtalk chat sessions:

Call from Gmail

I haven’t tried the calling feature itself yet, but I think that regular expressions should not pick up IP addresses and convert them to phone numbers. I’m not sure if it’s solvable programmatically, but who writes their phone number as 4 groups of digits separated by points anyways?

Posted in Uncategorized | Leave a comment Fake Users

Recently I read a discussion about how sometimes email service provided by is unstable and mixing accounts, messages and inboxes.

After that I decided to check my old* It’s a very old account of mine, that was getting mostly junk emails and occasional messages sent to my neighbour with old* address.

What I found there was one strange notification from



It says that I have been successfully registered at, and that my account there has id901901321. I’ve never been to before and I haven’t used this email address for registrations for years. So, I’m intrigued and go to

Natasha Fenochek


My account page says my name is Natasha Fenochek (it’s really not). Ok, name is not so bad and boobs look fine. Also, yellow color is my favourite. I wonder if there are any other pictures of me on the net?

So, I make a google search by image:

Ashley Bulgari


Ok, so my name is not Natasha Fenochek after all! My real name is Ashley Bulgari and I’m a pornstar.

According to zeroes in my profile (this whole ‘investigation’ started from the noficication sent about it), I’m not a very sociable pornstar.

I wonder, why would I “create” my account at in the first place? Let’s have a look at twitter: Twitter


Wow, they are getting like MILLIONS OF MONTHLY REGISTRATIONS. Simple math tells me that they have got more than 10 millions new users during 2 months: March and April’13.

I suspect they are going to sell their so-called ‘service’ before it’s dead like FormSpring. So they are flooding their user base with fake accounts using spammer address lists and pornostars’ photographs.

Great business.

This post was originally written in Russian and published on my Russian blog on Saturday, 05/18/2013.

Posted in Uncategorized | Leave a comment

PHP viruses

/* This file is protected by copyright law and provided under license. Reverse engineering of this file is strictly prohibited. */

This is the line from obfuscated (mostly with base64 and eval) PHP/BackDoor.CK Trojan horse I just found on a client site.

Since I’m reverse engineering it right now, I wonder how exactly they are going to punish me for this.

Posted in Uncategorized | Leave a comment

Google Chrome keeps crashing

If you Google Chrome keeps crashing with this message:

Whoa! Google Chrome has crashed. Relaunch now?

you can try disconnecting your google account from your chrome (temporary) – it looks like the problem is caused by something responsible on chrome syncing on google servers:

Posted in Uncategorized | Tagged , , | Leave a comment

MongoDB Courses

I’m in the end of (taking) online MongoDB class: actually, it’s one of the best online classes I ever took. Short, dynamic video lectures, quiz in the end of almost every lecture, automatically graded homework every week.

It’s MongoDB for developers class, whenever console mongo is not enough, python is used (pymongo). Python (as a language) is funny, but easy ot understand (seems similar to Pascal to me, not enough syntactic sugar), perfect choice for learning.

They will be giving this course again on 21st of January 2013. A modified version of the course that uses Java as its implementation language, M101J, will start on February 25th. Also there would be MongoDB for DBAs course in the January.

The courses are given by 10gen Company, the one which actually stands behind MongoDB. Here you go: company website, online courses website.

Finally, distant education is able to replace what is called “career enhancement training”. Actually, it goes over and above: you don’t need to travel, you don’t need to spend much time at once, you can take them slowly, couple of hours per day.

Posted in Uncategorized | Tagged , , | Leave a comment

How to move site to another server

Here’s my algorithm of moving website from one hosting provider to another:

  1. Make sure you have all credentials needed (ftp/ssh, mysql, cpanel – whatever). It doesn’t make sense to start this process if you won’t be able to finish it.
  2. Prepare new server to host the website. Apache vhost, software versions, all modules etc.
  3. Put a website on the old host in a “read-only” mode. If it’s a forum, disable posting and write a notification to your users. You don’t want to deal with posts having same IDs on old server and on the new one. You don’t want to lose any of UGC either, so it’s better to stop users from generating contents.
  4. Copy files and databases to the new server. It’s good to have ssh access to at least one server involved in the move, it really speeds up the process. You can make a tarball and move single file instead of moving files one by one. You can use Midnight Commander to move files via FTP as well.
  5. Edit your local hosts file*. I mean file on your developer computer/laptop: you need to force your local DNS to think that you have already switched your website to the new server. Add this record ‘′ to your hosts file. Do not touch actual DNS of your domain at this step. It’s too early to do at this point.
  6. Put something (label, background, image) on your new host to distinguish one copy of your website from another. At this stage you have two live copies of your website, you need to be able to tell the difference. One copy (old one) must be in read-only mode for your users.
  7. Test your new website now. Make sure you have edited all the configs, set up proper permissions, no software conflicts.
  8. Repeat your previous step couple of times (do not go into infinitive loop here).
  9. If you are ready to make a switch, change DNS and point domain(s) to the new IP addresses.
  10. Do not disable read-only mode on your old website. You are about to abandon that copy.
  11. New contents will appear on a new server only. Check web access logs on your old server periodically. As changes in DNS propagate, you will see that the old copy is getting less and less hits. If traffic doesn’t go down there, it means you did something wrong with DNS. Make sure you edited the zone at the proper place and actually activated it (depends on your registrar or hosting provider).
  12. If there was no hits on an old server for 24 or 48 hours, you can drop it – just make sure to download full backup from there before dropping (just in case you missed something when moving).

* Sometimes you need to edit hosts file on your server, too. For example, when you are using nginx as a frontend, you need to force your new server into thinking that your domain is actually living there, because otherwise it will try to proxy your old server and you’ll get error message like this:

Posted in Uncategorized | Tagged , | Leave a comment

Get RSS Feed of Facebook Page

Skip my foreword and go to online tool right now ⇒

Couple of months ago I deleted my facebook profile. I did it mostly to get rid of one of chronophagous places on the web I was visiting frequently. That’s a one step in my fight against procrastination.

The one thing I especially don’t like about facebook is that I’m not in control of what content I’m consuming there. I subscribe to the pages but suddenly facebook decides that something from those pages is not interesting for me, and decides not to show some of the content to me. As a livejournal reader (first), and RSS user (since LJ started to suck) I’m used to manage what to read myself. I don’t need any algorithms to help me decide what’s important and what’s not. If source stops being useful or interesting, I remove it from my list. If any particular post requires more time than I have, I put it in my “links to read” tool and read it later.

This article explains “facebook page reach” and why facebook is changing something about it (yes, to earn more money).

This attitude is so “Apple” in nature – someone thinks they know what I need better than I do, so they’ll do it for me and disable any other ways for me to do what I want myself.

So, I deleted my account there and realized there are couple of pages that public unique content on their facebook – the content they don’t duplicate (for some reason) on their website, so I can subscribe to their RSS feed there.

Now I wanted to subscribe to those pages at facebook via RSS. This can be helpful for someone who needs to monitor multiple facebook pages (e.g. someone from SMM industry or just somebody with too much of free time to waste).

There are two news. First is bad: personal facebook accounts don’t have RSS feeds. Second is good: facebook pages have RSS.

However, facebook is not bragging about feeds for pages. Guess, why?

So, how to obtain URL of RSS (Atom) feed for certain facebook page?

The only thing you need to know about the page is its ID. Some pages have that ID already in their URLs, for example

Other pages have no ID in their address, for example, and here’s simple tool to get ID of the facebook page and URLs for the facebook page feeds.

If you have ID of your page already, just ignore the first box and put to directly to the second.

Facebook page URL:

Facebook page ID:

Facebook page URLs:

My personal preference is RSS format, because facebook Atom with Cyrillic characters is useless.

Posted in Uncategorized | Tagged , , | Leave a comment

This file should be replaced

This file should be replaced by the current license file when built.

Well, nothing really special here — programmer used placeholder license file when building install, nobody had the trouble to replace this file with actual license text and placeholder has been shipped to the users.

What’s significant about this one – is that company that released this software is Intel, and software is some hardware driver. I hope their programmers were too busy replacing dummy functions in the code. Anyway – who reads license agreements when installing drivers from hardware manufacturer?

Posted in Uncategorized | Tagged , | Leave a comment

Funny “Print preview failed” bug in Google Chrome

3 links to print current page in HTML:

<a href="#" onclick="window.print();">print it #1</a>

<a href=“#” onclick=“window.print();return false;”>print it #2</a>

<a href=“javascript:window.print()”>print it #3</a>

Question: What is wrong with one of them?

Same links clickable: print it #1, print it #2, print it #3

Answer: first link launches print interface in Google Chrome but Chrome fails to render print preview because of “Print preview failed” error. All three links work fine in Firefox and IE.

Posted in Uncategorized | Tagged , , , | Leave a comment

Change encoding in Google Chrome

This is how you can select page encoding in Google Chrome (click to enlarge):

multiple menus to change page encoding in google chrome

Don’t you think it’s an overkill? Click the icon and navigate 3 menus deep? Also, is it only me or pointers (triangles) on the right with menus expanding to the left are really confusing?

P.S. This is Chrome for Ubuntu screenshot, but Chrome for Windows XP is the same.

Posted in Uncategorized | Tagged , , | Leave a comment