Welcome to stefantsov.com, please enjoy mostly technical articles on programming and web technologies.

Welcome The Great Russian Firewall

I have just found that my site stefantsov.com can not be opened from Russia. Since I'm not doing anything bad, this was a surprise for me. After digging a bit, thanks to +Fedor, I was able to find the reason behind the blocking.

For stefantsov.com I'm using Cloudflare CDN to deliver resources faster all around the world, reduce server bandwidth, get some free optimizations, etc. Cloudflare effectively hides my real IP, delivering all content itself. Currently site's IP resolves to CLOUDFLARE-EU. In russian blacklist there is some hentai site, that is using Cloudflare as well, resolves to same IP address. It got blocked few days ago, which effectively blocks my site as well.

gl hf gg wp no re, да здравствует великий российский файрвол, guys.
[Random In Soviet Russia joke]

Stefantsov Blocked Firewall

Google Night Walk in Marseille, France

This is a great piece of art, a nightwalk through the savannah of the night Marseille. This is done using Google Street View engine, but greatly enriched by music, sounds and annotations.

You will usually encounter images like this:

Google Nightwalk Marseille France Art

One of many sights of the night Marseille

You may love it, you may hate it, but it will not leave you indifferent. Like promised in the very beginning, it will show you the soul of the city. Take a night walk with Google in Marseille, France.

jStepper: convenient numeric input text plugin

jStepper: convenient numeric input text plugin

jStepper is a nice and really useful jQuery plugin that, once applied to a text input, only allows digits or numbers to be entered in it.

Setting it up as easy as

$(".txtTesting").jStepper({minValue:0, maxValue:23, minLength:2});

Look at jStepper in action at Hearthstone Calculator tool I've made recently. Here is the code that I'm using for hscalc:

    minValue: minValue,
    maxValue: maxValue,
    allowDecimals: false,
    decimalSeparator: ".",
    onStep: function (objTextField, bDirection, bLimitReached) {
        $slider.slider("value", objTextField.val());

jStepper homepage is handy, you can see all the options and apply them right away.

Not much else to be said. This tool just works, as intended. You would also like to know that author behind it, +Martin Kruse, is nice and helpful guy. A little bug I had for my corner case he fixed the same day. #h5yr, like Umbraco developers would say!