Vilnius kindergarten registartion – complete failure

Finally came the day when I also have to submit a request for my kid to get a place in a kindergarten!

On 25th of March (on my son’s birthday), at 8 am, the registration for kindergarten should have started on website. After waking up, the first thing i did was try to login. At 7:55 am, the website opened. “Hooray!” – I thought – “it didn’t crash this time!”

5 minutes later i understood, that nothing has changed… 504

Some of my thought about this, while i tried to sign up my kid for 5 hours….

This system has been working for a few years now, and every year there’s the same issue. They tried to get the registration system working this year in January, but the system couldn’t handle all the traffic. The registration date was changed to March 25th, with a few months of time to get the system fixed and optimised. Unfortunately, IT department had failed to do this job. It was said that everything got fixed, but probably nobody did any testing or benchmarking to see if it really got fixed.

Some thoughts from my side on what could have been done better:


All the media files (images/css/js) are served from the same website, without using any CDN. If a CDN was used or they at least had separate servers for serving static content, the situation would improve a lot, as the main server wouldn’t be overloaded with these requests during  the peak time.

There are free CDN’s, paid CDN, or you could turn on the CDN only during this event which generally takes place only a few days during the year.

AJAX is cool!

The kindergarten registration system uses a lot of ajax requests. But … are all of them really needed? For example – you are required to enter your personal identity code during the registration. When you fill it out, there’s an ajax request made to validate the personal identity number ( there’s an algorithm for that) , then there’s another request to get the birthdate out of the PIN  (it’s part of the PIN, digits 2-7 ), then there’s another request for the same ( not sure why … ). This part can be easily done on JS side, as the algorith to validate this information isn’t very hard. And then make the server side validation during submit. But no, it’s better to make 3+ requests to overloaded servers just for this thing.

Lets not forget about all other fields! I.e. address. If I live on a street ‘Zaumenhofo’, and i start typing in ‘Zaumenhof’, then it sends an ajax request for every letter after the third one to get the list of streets based on the input field to try to autocomplete the street name. That is – ‘zau’, ‘zaum’, ‘zaume’, ‘zaumen’, ‘zaumenh’, ‘zaumenho’, ‘zaumehof’, ‘zaumenhofo’ – that’s 8 requests! Of course, then the system works properly, it should be enough to type in ‘zau’ and the system will give you a list of streets. But when the servers are overloaded, you’re not even getting the replies to the ajax requests, and keep on writing the street name – which generates even more requests. Also, you need to write the details for mom, dad and kid separately, which means for ‘zaumenhofo’ street, that’s 8 requests (for each letter ) * 3 = 24 additional requests.

Every other field works in the same way – an ajax request is sent for each dropdown or input field. There’s probably a couple hundred of them for the whole registration process – but i didn’t count.

You could just send these to separate servers which only validate this information so that you don’t overload the main servers that do eveeeerything else.

The winter came early this year!

Like every year so far, the winter came unexpectedly! Mostly during the second half of December, and the road cleaning guys are always not ready for it! Who could think of winter actually coming, in December.

We have the same situtaion with kindergarten. HOW could they know that the registration will start on March 25th. IF they knew it would, they would get some additional virtual machines running to cope up with the load, RIGHT?


In other words – they knew the date, they knew that the systems are always overloaded, but why can’t they just get ready for that? I understand that buying new servers just for a day or two is not very cost effective. But we live in 2015! There’s a lot of *be ready, a buzzword will be used in a minute* CLOUDS, where you can buy a server, or two, or even 100 for only a few days. And they are not expensive! You could buy 20 virtual machines in amazon, connect them to your app/backend, and pay something like 20-50 $ for those few days. The price is not big, but you wouldn’t get so shamed in front of whole country and world!

Maybe lets start sending emails with pidgins?

Not related to performance, but it’s hard not to see the note about trying to look in your spam folder if you haven’t received an email soon.

Lets check the inbox:
Received: from ( [])
by with ESMTPS id ol7si1269421pbb.71.2015.
for XXX
(version=TLSv1 cipher=ECDHE-RSA-AES128-SHA bits=128/128);
Wed, 25 Mar 2015 01:57:08 -0700 (PDT)
Received-SPF: none ( does not designate permitted sender hosts) client-ip=;
spf=none ( does not designate permitted sender hosts)
Received: from ( by
( with Microsoft SMTP Server (TLS) id 14.2.347.0; Wed, 25 Mar
2015 10:53:24 +0200
Received: from ( by
( with Microsoft SMTP Server id 14.2.347.0; Wed, 25 Mar 2015
10:55:03 +0200
Date: Wed, 25 Mar 2015 10:55:57 +0200
Subject: Prisijungimo duomenys
Message-ID: <>
X-Priority: 3
X-Mailer: PHPMailer 5.2.9 (
MIME-Version: 1.0
Content-Type: multipart/alternative;
X-Originating-IP: []

First thing we notice is the strange email forwarding between servers (from server A, to server B (and, to server C Then we can see that SPF is not used  (it says which IP can send emails from, nor DKIM (says that an email sent from is actually sent from that server), nord DMARC (which says what should be done with emails that are not DKIM/SPF valid). Maybe it’s time to start using an 10 year old technology (except DMARC, which is newer than 10 years) in the government sector aswell? These technologies are VERY expensive (Free), are VERY hard to set up (probably takes an hour to setup without prior knowledge about them) and need a lot of specialists time.

A slowdown in data processing, or an completely not working service?

Everyone on the radio keeps saying that the kindergarten registration works, but has a slowdown in data processing. That’s a very strange phrase. For me, “slowdown in data processing” is when the data is submitted without any problems, but it takes a longer time to process it once it’s submitted. Unfortunately, in this case, the situation is very different. Now, the lucky ones who are able to login, are able to submit the data. The unlucky ones can’t even log in, and can’t submit the data. The first ones are in one queue, the other ones are not in any different queue.

In example: if nginx is used, it has an option to always send users to the same backends based on a hash (i don’t know if that’s how it works on, but this is just an example that “slowdown” != “not working). So, lets say we have 100 users with different IP’s and 3 servers. Then, 33% of users (A) go to server 1, 33% of users (B) go to server 2, and the other 33% of users (C) go to server 3. All is good, right?


If 100% A users and 100% B users go to registration page – the registration won’t even open for them, because server 1 and server 2 will be overloaded. And if only 20% of users C go to registration, then they’re first in the queue (the server 3 won’t be as overloaded as  server 1 and 2 ).

That’s why i think that it’s not a “slowdown” but rather a completely not working service, and it’s a matter of luck/algorithm wherever you’ll be sent to the server which is not overloaded.

EDIT: this post was translated to english, as my Lithuanian grammar is very poor and there were lots of negative comments about this.

Vilnius kindergarten registartion – complete failure

Solar Eclipse @ March 20, 2015

Today there was a solar eclipse in our part of the world. We’ve climbed up the roof to watch the eclipse, have some coffee and take some pictures.

Here’s some pictures, most of them done through an iPhone camera. We used the magnetic part of the floppy disk to look at the sun / take pictures through it. Was fun 🙂

Continue reading “Solar Eclipse @ March 20, 2015”


Print your … spare server part!

I’ve got some pretty old “server” here and it’s disk said goodbye to me a few weeks/months ago.

I finally found some time to clean it up – clean all the dust inside, apply some toothpaste thermal paste to the heatsink and replace the disk. Unfortunately i didn’t take a picture of how awful it looked before, but here’s a cleaned up version.

cleaned up server
cleaned up server

As you can see – it has a bracket for one disk, and there’s space for another one. It worked with one disk so far, but it would be a waste of space not to add the second one – the disks are so cheap now. I tried to search for the other bracket but couldn’t find it anywhere, and i couldn’t find a spare one to buy at the local stores.

We’ve got a MakerBot in the office out here. So, i’ve asked a friend if he can try printing one for me. The next day he comes back with this:

I was a bit skeptic about the real use of 3d printers in homes / offices, as the printed examples i usually see are keychains or other useless stuff, but now i might change my mind. maybe.

P.S. Not sure how will the heat influence the bracket – hope i won’t see any smoke coming out of the case…

Print your … spare server part!

Annoying Notes app formatting

As a Mac user, i have been (ab)using the Notes app quite a lot – i always copy commands/output/text from terminal or web pages, and it always annoyed me that Notes app, by default, would always format the text – create links, change the quotes, try to have text background (i.e. black when copying from Terminal). That’s the most annoying thing ever…

I remember i tried to look in settings to see if there’s a way to disable this, but I didn’t find anything when i looked. Today, it annoyed me too much again, so i thought i need to find a different software for that… but first let me try to look at it again.

So, after some googling around, i found a solution – you can remap the ⌘V key to paste without formatting!

Steps to achieve that:
– Go to System Preferences -> Keyboard -> Shortcuts -> App Shortcuts
– Add a new shortcut
– Choose “Notes” as the aplication
– Name the Menu Title “Paste and Match Style”
– In Keyboard Shortcut press ⌘V

This should re-map the ⌘V to use ‘Paste and Match style’ rather than the default Paste method.

Life just got a bit less annoying 🙂

Annoying Notes app formatting

apie kibernetinio saugumo teatrą

blogas domas

Seimas priėmė kibernetinio saugumo įstatymą – berods visų frakcijų pritarimu. Net “sveiko proto liberalai” galvoja, kad jis padės geriau “atremti atakas”. Pradinės redakcijos buvo iš viso tragiškos, netinkančios teisinei valstybei, bet kalbama, kad pavyko pataisyt kažkiek, ir tai tebus tik šiaip farsas.

Visų pirma, pritariu, kad apsaugoti kritinę infrastruktūrą yra svarbu. Kai buvau nepilnametis, “išsiaiškinau” apie įvairių valstybinių sistemų sistemų saugumą, ir tai didelio pasitikėjimo jas stačiusioms kompanijoms nesukėlė. Yra tikrai svarbu, kad nesutriktų elektros ar vandens tiekimas, nenutekėtų žmonių Sodros duomenys (oj, per vėlu), etc.

Nemažai įstatymo nurodytų metodų yra popieriniai – taryba šen, centras ten, įpareigojimai, kompetetingi skyriai ir asmenys paskirti įvairiose institucijose. Kai kurios deklaracijos yra įdomios – pavyzdžiui ką reiškia atsakomybė už saugumą (nebent tikrai užtenka tik vykdyti vyriausybės nurodymus, jeigu tai įmanoma). Kai kurie reikalavimai buvo kontroversiški JAV – pavyzdžiui informacijos apie incidentus centralizuotas rinkimas (žr.

Įstatymo įdomiausia dalis yra apie vartotojų duomenų (ir…

View original post 1,147 more words

apie kibernetinio saugumo teatrą