Category Archives: Others

everything else – travel, books, finance, politics, philosophy


Recommended read – architecture of open source applications

Published by:

Just wanted to share a great resource that I found recently – Architecture of open source applications. These are two books where authors of open source projects share how they built them and the decisions that they took along the way. The last one I read is about Graphite by Chris Davis. Absolutely amazing story and Chris Davis is a very good storyteller. Although I have not built projects that big as Graphite, I have come to the same conclusions on a smaller scale. So you find a lot of these aha moments in the articles.



Switching from C# to Ruby

Published by:

In March 2016 i switched jobs leaving Progress and joining Receipt Bank. So i had to switch the whole tech stack. In Progress my hands were mainly busy with C#, Web API, Visual Studio, MS SQL, MSMQ and the rest of the MS technologies. In Receipt Bank i we use Ruby (mainly) with Rails as a Web framework. I never actually wanted to switch but it happened this way – i liked the company and had to.

Changing the language is easy. Changing the stack and the tools is not.

When you are a more seasoned programmer, you should be able to switch pain-free. Well, it depends. If you switch from C# to Java or from Ruby to Python it should be fairly easy. It is not that easy if you switch from C# to Ruby as it is not only the language that you will have to learn. You will probably have to drop Windows and adopt Linux or OSX. You will probably have to switch from IDE as VS to a text editor as Sublime, Vim etc. You will most probably use PostgreSQL or MySQL instead of MSSQL. The database change is not that dramatic as the later two being SQL, they share a lot in common with MSSQL. However, dropping the beloved IDE in favor for a text editor is a pain, at least in the beginning. You quickly realise that you may be as productive with a text editor as with an IDE. A power Vim user is at least as productive as a power VS user. The OS change is kind of a dramatic also. I started using OSX and felt great pain in the beginning. Most of my time was in the console which is quite contrary to the Windows experience. However, when you get used to the almighty console, you never look back.

How is the language different?

#1 Ruby is interpreted and C# is compiled. So in Ruby everything is just working hit a problem. C# compiler will complain during compile time if your code is no good.
#2 C# has static typing and Ruby does not. This is not one sided though. Matz (Ruby creator) said that some typing is coming in Ruby 3 and C# introduced var and dynamic to provide for more flexibility. However, the general picture is that Ruby is interested in behaviour and not static properties. This gives great flexibility and i find this rather liberating. To avoid shoot-in-the-leg situations, you have to have very high test coverage with flexible types.
#3 Testing. Flexible languages as Ruby provide for much better testing than C#. In C# you often have one interface with one implementation class which i find stupid. However, you have to do that so you can mock that class in tests. If Ruby you mock pretty everything easily and don’t really need interfaces (there aren’t any also:) ).
#4 Functional programming has much deeper roots in Ruby. C# has made big steps also with LINQ but Ruby is superior in this domain, especially when working with collections.
#5 Ruby has a very powerful feature called blocks. These are like callbacks to functions and are really powerful. There is hardly a class that you can’t find blocks.
#6 Syntax. Ruby is much more minimalistic than C#. Syntax is weird in the beginning but you soon start to love it. Little parens are required and there is no return statement. You can single line a lot of stuff to make code more concise. Syntax is important to write readable code and Ruby definitely has the syntax for that.

What else

I would say that the ruby community is much more vibrant than the C# one. Ruby was created with developer’s happiness as a main goal and developers love it. Ruby is religion for some. Matz is accepted as a rock star in the community. There is nothing like that with the MS technologies.  Giving back to the community is a law for many. That’s why you will find many Ruby developers spend time coaching and teaching others for free. They also contribute to open source big time.

True Ruby developers are committed to quality very much. They also keep code clean and neat with great care. Code must not only work but be beautiful. Fellow developers are very fast to growl if you put one extra coma somewhere. Most of the C# developers i have seen are a bit messy. Quality is also appreciated but readability and code beauty not that much. As i said happiness is a founding principle for the language and you can tell that.

C# is preferred by corporations and Ruby by start ups. So choosing the language will have impact on the company that you will be working in.


I find switching to Ruby a huge win. Despite the pain in the beginning, the language is very elegant and powerful. There are enough good tools also out there to get the job done. The biggest advantage however is the community. Being part of that is guaranteed to higher your level.



Hacker Podcasts

Published by:

Two of the best hacker podcasts that i have watched.

The first one is by Kevin Mitnick from this year’s Cebit in Germany. He has some amazing demos and stories to tell. It is a little long but definitely worth it.

The second one is by a guy that had his computer stolen. Being a hacker, he could track the thief and find his computer. He also came to know the thief pretty well 🙂



Setup Outlook with Gmail

Published by:

Maybe that sounds easy but there are some details that made me struggle for a while so i decided it is worth sharing.

I went ahead to setup a new account on the known screen here in Outlook 2010:

Create account outlook

but i kept getting unauthorized error when trying to go ahead. Here is the trick – if you have setup two way authentication for your account, apps can’t authenticate simply with your credentials but need to be registered in your account and use a generated password. So you should come here: and register your app. As soon as you do so you will get a generated password that you should use in your Outlook client. Here are the other settings:

Pop3 server:
Use SSL: Yes
Port: 995

SMTP server:
Use Authentication: Yes
Port for TLS/STARTTLS: 587
Port for SSL: 465

Server timeout: 5 mins instead of the default 1



Right IT company for you?

Published by:

I feel that a lot of people (including me) sometimes underestimate the choice of company to work for when that moment comes to pick one. We usually spend 1/3 of our time working and if the match is not close to perfect, dissatisfaction looms quite fast.

So i decided to share some personal impressions on what to be looking for:

Service or product company?

If you work in a service oriented company, you will probably see many projects in short time span which is good as you gather experience fast. You will practice your communication and team skills intensely. However, chances are that the domain will be very similar from project to project – usually companies are specialized in some area or they have repeat customers that require 90% the same stuff as before. Product companies use much larger toolset of technologies, especially if the product is big – you may be doing web, mobile, desktop etc., while in the service company you may be doing only one of the above most of the time. Product companies are also not that tight on deadlines and quality is much higher (they do their own software!). They are usually more stable and rich. Sometimes you will face , however, the five screens problem – you will watch 5 screens for years but that is not that scary as sounds. So in the beginning of your career, service companies are good as you gather experience and confidence fast but if you want to become good software engineer, you should aim at product companies in the long term.

User or enterprise market?

If you want job security, more structured process and probably more money – go with enterprise. That comes with legacy technology, however. Most big companies are reluctant to switch technologies. There are many corporations that use only IE 6-7 so if you work in web, you will have to target those browsers which is a nightmare.

On the other side, if you are in a user oriented company, chances are that you will use latest and greatest. You will have more freedom to experiment, but you will also have to chase trends like crazy. Lagging behind means “death”. So working in that kind of atmosphere may be strenuous, chaotic, unstructured sometimes.

This one is more of a personal preference so i cannot recommend any of the above here.

Big or small?

This one is also matter of preference – but i would suggest you to stick with small companies – up to 50 people. There are some exceptions of course. In a small company, you will see much more of the whole process. You will realize that software companies are not all about writing code. In fact, that is less than 50% of the business process. You will have a chance to communicate with decision makers, managers etc in a direct way which is also a great experience. In a big company, you will probably be part of a team which doesn’t decide much but execute strategies from above.

How to spot good/bad companies?

You can gather great amount of info during the interview with the HR. There you go some signs to watch for and some questions to ask:

  • Do Company HRs know what project they are looking people for? If they don’t – that’s bad sign. Nobody looks just for a software developer, they look for people for specific teams and if the hr doesn’t know that during the interview, that means they didn’t do their homework.
  • If they don’t make you write code or want your Github repo that’s very bad sign. That means you will be working with people that didn’t write code during the interview also. Interviews like “Tell me what are the principles of OOP” are mock interviews the red light should start flashing.
  • Does the team have a QA? If not, that means that the company does value quality that much to pay for a QA. I can tell you that a QA makes a huge difference.
  • Does the company have a practice to write tests? What is the test coverage? Writing tests makes you much better developer.
  • What is the deployment process? If deployment is usually very time consuming and error prone process. If it is not automated, that is very bad sign – that means that the company doesn’t value the time lost deploying.
  • Documentation – is the code documented in any way? I know some of you will say that good code is self-documented but come on. If nobody writes proper docs, being it comments in code, that means that people lack culture of succession.
  • How do people share knowledge within the company? – are there any initiatives as in-house presentations, hackatons etc – very very important point here. As a software developer, knowledge and expertise is your main asset. You want to learn as much as you can during your working day.
  • Does the company have a work home policy? Technologies are developed enough so that software development can be done from anywhere – there is no reason to be 8 hours in office every day. If the company does not allow that , that means that they probably don’t trust you or don’t have a way to monitor your work. Both are bad signs.
  • What is the machine you are working on? What is the chair? Require to sit on the chair even during the first interview. Don’t underestimate that. What is the office like? Make sure that you feel good at the place – you will be spending a lot of time there.

Handy Skype commands

Published by:

I have been using Skype like forever – my user name is ivopashov2006 so you can guess by the name that this makes up about 10 yrs at the time of this writing – but only recently i found out about skype commands, some of which are so handy. Skype commands are meant to serve as utilities or give you some conversation meta data straight by typing the command in the chat area and hitting enter – same as if you were chatting. So those are the ones in my favorites list:

  • /alerstoff – this one stops skype icon in the toolbar flashing when you have new messages in a particular chat group even though you might be in available status. I stay pretty much in available status but i don’t want to get distracted by some funny chats that i am in
  • /alertson [text] – this one takes an optional parameter. If used without parameter, that nullifies the above command and you get all the notifications. However, if used with parameter, that allows you to get notified by specific words. So /alertson food will notify you only if someone mentions food.
  • /remotelogout – that is valid only for cloud based chats (most are like that) and signs you out from all other instances that you are logged in except the current one. I use this to double check if i signed out from the office skype without touching the remote desktop.
  • /add [skypename] – super easy way to add someone to the chat if you know the username
  • /leave – drop off from a conversation
  • /showmembers – this is handy for group chats – it shows all members in the chat with their roles
  • /get role – gets you role in the chat
  • /help – this is pretty much self explanatory

There are of course some more but these are the ones that you will probably be using 90% of the time – for the rest refer to /help.


Бг Съпорт

Published by:

Съпорта си е трудно перо във всеки бизнес ама колко да е труден толкова. Прилагам комуникацията ми с за проблем, който имах с един сайт който хоствам там. Не го поствам тук, за да им се подигравам на очевидно лошия сървис ами по-скоро за забавление:

Запитване от: xxxxxx на 9 Jun 2015 в 11:05

губят ми се файлове и информация (снимки, новини) които съм качвал през админски панел в сайта и за съжаление дори с бекъпи не мога да ги възстановя. От друга страна по папките виждам разни xml файлове които са скриптове. Затова искам да погледна логове на кой какво е качвал и трил в сайта, но не намирам такива. Файловете пак казвам са качвани през админски панел, а не фтп клиент. Лога за хостинг активност също ми е празен.

Ивайло Пашов
Отговор от: xxxxxxxx на 9 Jun 2015 в 11:35

Моля проверете сега.

С уважение,
Техническа поддръжка
Запитване от: на 9 Jun 2015 в 11:55

не намирам нищо – къде трябва да видя.

Искам да видя логове кой какво е качвал и трил в която и да е папка за последния месец? Има ли такива?
Отговор от: xxxxxxxx на 9 Jun 2015 в 13:26

Всичките налични логове може да видите през контролния панел на адрес

Пишете ни, ако имате нужда от още нещо.

С уважение,
Техническа поддръжка
Запитване от: на 9 Jun 2015 в 14:11

1. Питам за конкретни логове – кой е трил или добавял файлове в моя сайт. На кое казвате всички налични не знам. Трябват ми тези за които питах.
2. е сайт с доста фунционалности – да ми кажете че логовете са някъде там е като да ми кажете всичката налична информация е в гугъл.

Моля бъдете конкретен по въпросите които питам или ще трябва да ескалирам тикета.

Отговор от: xxxxxxxx на 9 Jun 2015 в 14:31

Може да видите вашия FTP лог през Контролен Панел > Лог на FTP достъпа. Прегледахме логовете, но забелязваме че няма налични логове за вашия акаунт.

С уважение,
Техническа поддръжка
Запитване от: на 9 Jun 2015 в 22:05

ако видите първото ми съобщение от 9 Jun 2015 в 11:05 ще видите че там пише

“Затова искам да погледна логове на кой какво е качвал и трил в сайта, но не намирам такива. Файловете пак казвам са качвани през админски панел а не фтп клиент”

при което ми отговаряте с
“Всичките налични логове може да видите през контролния панел на адрес” и след това
“Може да видите вашия FTP лог през Контролен Панел > Лог на FTP достъпа”

Аз трудно мога да си представя по- неизчерпателен и неточен отговор – искам да ми дадете контакт на Вашия супервайзор.


Is everything made yet?

Published by:

Sometimes i hear people saying that there is not much room for innovation as pretty much everything is being invented already in one form or another. Bad excuse.

I’ve been a bitcoin believer for quite a while now. Bitcoin in my opinion is THE innovation of the first decade of the 21-st century. However, is the bitcoin idea radically new? Not at all. If you take a look at Satoshi Nakamoto’s (a pseudonym for the bitcoin founder(s)) paper that introduced the bitcoin protocol in 2008 to the world, you will see that the references are at least 10 years old. Further, if you visit the first reference (very understandable and short read), you will see that bitcoin was conceived at least in year 1998. The ideas that bitcoin consists of as cryptography, distributed networks and so on, date further back.

The reason i am saying this is that you don’t have to invent the wheel to be an inventor. You can:
– apply an old idea in practice
– combine old ideas in an ingenious way
– make an old thing better
– market a good idea in an innovative way
– see an innovative application of an idea or a thing
– make more with less

and so on…

I am sure the list can go forever. What is hard is to believe that everyone can be an inventor and adopt that state of mind.