Coding can give more fun than computer games – an interview with Ivan Katanić

After publishing an interview with Keshav Dhandhania we have decided to continue this project and present you other successful Spoj users, who can share their experience and all wisdom gained during their struggle with Spoj problems. Today we present you Ivan Katanic a finalist in International Olympiad in Informatics a member of Croatian national team in computer contests and a long-time Spoj user with a #11th place in a world rank and almost 1000 solved problems.

Spoj: Hi, Ivan, starting from our first question: What are you doing now?

Ivan Katanic: Right now I’m finishing my master studies. I’ve just passed the last exam and in the following semester, I will write my master thesis.

What are you writing about?

I’m writing about blockchain technologies. I will focus on smart contracts, in particular on Ethereum – a decentralized platform that runs smart contracts. This subject is not a new one for me as I wrote my bachelor thesis about Bitcoin protocol.

Is that choice connected somehow with your further plans and things you want to do in your professional career?

I didn’t think about what I will do after graduating. I previously thought that I will do something related to algorithms and data structures, area in which I will feel very comfortable, but in last year or so I started getting interested in machine learning and artificial intelligence, so everything is possible.

And from machine learning, you came to blockchain?

I first became interested in Bitcoin when looking for ideas for my bachelor thesis. My supervisor’s research area is cryptography, so Bitcoin was among the choices. I really liked the concept and decided to focus on Bitcoin protocol by studying attacks on Bitcoin anonymity. Back then there was only Bitcoin as a currency and maybe few other applications based on blockchain technology. In general, the concept was just not yet widely recognized. When looking for a topic for my master thesis, Ethereum was a very natural choice and continuation of research I did before. I am going to focus particularly on smart contracts as a concept and study Ethereum protocol as a solution.

I also plan to develop a decentralized application on Ethereum blockchain (dapp) – a collection of smart contracts. It will provide a platform for solving problems where solutions are easy to verify by code.

How is it going to work?

For example, let’s assume that factorization problem is supported on my platform. You might want to factorize big number (eg. RSA), so you could go to the platform and create a new factorization-problem instance with that number as an input and add some reward in ETH. It would then be enforced by the blockchain that whoever comes first and solves your problem instance (submits a factor to the blockchain), receives a reward.

Being rewarded with ETHs for providing certain solutions looks really interesting and we are looking forward to seeing your platform available online.

Let’s back now to your past, you are finishing your studies Zagreb, Croatia at the moment?

Yes, that’s correct.

But you have travelled a lot, you have worked in London, in California as well, so after you graduate are you planning to stay here or move somewhere abroad?

I don’t have any exact plans, but I will probably aim to be in London or somewhere else in Europe. There will be time for making plans after I finish my studies. Plenty of interesting places to work can be found in Europe and I will just have to search for one that fits me most. Of course, the US is also an option, but working permit makes it harder.

What about the works you did already, I have to admit that your CV is very rich as for student. For example, you worked for Facebook, how did you manage to get a job there? There are surely many students who are at the beginning of their studies, how can they get an opportunity to work for similar big companies without even getting a graduation?

I think the easiest way is to solve algorithm problems and win some competitions (laugh). But seriously speaking I get many emails from recruiters from the major companies. It’s not that I found them, they found me. As I have learned later talking with them, some have found me searching Spoj and noticing my ID in the rank under one of the solved problems. The other way is to participate in competitions organized by particular companies. However, you don’t get any advantage for free, it just gets you through that first filter, similar to top university diploma. Companies like Facebook need some form of filtering because there are just too many people who are willing and could potentially work there. In the end, you have to show your skills in the interviews, everything else doesn’t matter.

Coming back to Spoj. I’ve checked your profile, I need to admit it’s quite impressive you did a lot of work. But, maybe you remember the hardest Spoj problem you had?

There is actually one, that comes immediately to my mind – it was CCROSSX – Cross Mountain Climb Extreme. I was really impressed. Maybe it’s not the hardest one I have met on Spoj, but it’s surely the one I can remember after a long time. At the beginning, you remember everything you solved, but after so many, you just start to forget. Now I remember very few.

Did online judges, particularly Spoj, really helped you to improve your skills or was it something else?

I learned a lot of things on Spoj. It started about 2008, I was 15 back then. I went to one of programming camps in Croatia. On that camp, they gave us some lectures on algorithms and then showed examples on Spoj. We had a chance to solve them and compete with each other. This atmosphere of competition did a great job, I felt really motivated and after that camp, for few months I did about 5 problems a day.

I would just look at the problem and if I find it hard I would look on the ranks and find people who managed to solve them. Nowadays it’s much faster as there are lots of tips on the web, you can search the forum or Wikipedia and find some pieces of advice. I started with a very limited knowledge, but after solving few hundred problems I felt much more confident. Then there was a break, I didn’t do much for a year or two when being in high school, I visited Spoj only occasionally.

What would you suggest for the new Spoj users?

If you really want to learn algorithms and understand them deeply, you have to solve some problems. When you are at the lecture when you hear about it, you think that you understand it well, but only after you can try it in practice, to adapt it to a specific situation you will know that you have learned it.

Now, the question regarding your own experience – if you were once again 15 years old, what will you start with.

Well, it’s a really hard question. I think it would be good to start from some communities, it doesn’t have to be a good one, you just need to have the others who will help and motivate you.

But it doesn’t have to be a real world community?

Yes, online communities can also help a lot. I was quite lucky, we had a teacher who knew basic algorithms, that was enough to get started. She has shown us the idea, advised some books and encouraged us.

So the good teacher, who inspires is surely valuable.

Yes, definitely.

From your history, I think the main conclusion is that it’s good not to be a lone wolf, it’s better to work with others.

Yes, that is right. I have obviously worked on my own later, but at the beginning, the support of the others was priceless.

So you mean that there were just good circumstances?

In my case yes. I come from an Eastern part of Croatia. Most of the people I know from programming community are from the capital, so they obviously have access to a better support, academic courses, teachers etc. Meeting proper people and going to camps wasn’t an option for everyone back then.

I asked you about different projects, but could you tell me – what programming gave you, but not in regard to your work, education and but personally, that made you a person you are now.

It gave me a lot of fun, when I was younger I would probably just play video games, but now I don’t do this often. It gives me the same joy to solve some interesting programming problems. I think that after you reach a certain level, this should be even the mayor motivation – just to have fun. It also gave me the opportunities to travel a lot and network with successful people.

Thank you for your time and good luck with your master thesis!

The Big Update – more languages available than ever before

Ladies and gentlemen, we are proud to announce you that Spoj no longer supports over 60 programming languages .

We support way more and this is not our last word! We are really happy about this update and new versions of almost all previously supported languages.


The Big Update is here, with 6 new languages:

Format: Language name (version)
  • Nemerle (1.2)
  • Assembler x64 (nasm 2.12.01)
  • Kotlin (1.0.6)
  • Dart (1.21)
  • Swift (3.0.2) – Yes, we got it! Come and see some samples on Ideone
  • Octave (4.0.3)


New version updates

We also did updates for following languages, enjoy your work with Spoj and Ideone, our online compiler!

Format: Language name ( old version) -> (new version)
C++ (gcc 5.1) -> (gcc 6.3)
Perl5 (5.20.2) -> (5.24.1)
Python (2.7.10) -> (2.7.13)
Fortran (gfortran 5.1) -> (gfortran 6.3)
Ada (gnat 5.1) -> (gnat 6.3)
Java (8u51) -> (8u112)
C (gcc 5.1) -> (gcc 6.3)
Assembler x86 (nasm 2.11.05) -> (nasm 2.12.01)
Icon (9.4.3) -> (9.5.1)
Ruby (2.1.5) -> (2.3.3)
Pike (7.8) -> (8.0)
D (gdc 5.1) -> (gdc 6.3)
Haskell (ghc 7.8) -> (ghc 8.0.1)
Pascal (fpc 2.6.4) -> (fpc 3.0.0)
Smalltalk (gst 3.2.4) -> (gst 3.2.5)
Lua (luac 5.2) -> (luac 5.3.3)
C# (mono 4.0.2) -> (mono 4.6.2)
Bash (4.3.33) -> (4.4.5)
PHP (5.6.11) -> (7.1.0)
Common lisp (sbcl 1.2.12) -> (sbcl 1.3.13)
Scheme (guile 2.0.11) -> (guile 2.0.13)
C99 (gcc 5.1) -> (gcc 6.3)
Erlang (erl 18) -> (erl 19)
Scala (2.11.7) -> (2.12.1)
SQLite (3.8.10) -> (3.16.2)
Objective-C (gcc 5.1) -> (gcc 6.3)
C++14 (gcc 5.1) -> (gcc 6.3)
Assembler x86 (gcc 5.1) -> (gcc 6.3)
VB.NET (mono 4.0.2) -> (mono 4.6.2)
Perl6 (2014-07) -> (rakudo 6)
Node.js (0.12.7) -> (7.4.0)
C (clang 3.7) -> (clang 4.0)
C++ (clang 3.7) -> (clang 4.0)
Objective-C (clang 3.7) -> (clang 4.0)
D (ldc 0.14) -> (ldc 1.1.0)
Coffee Script (1.9.3) -> (1.12.2)
Fantom (1.0.67) -> (1.0.69)
Rust (1.0.0) -> (1.14.0)
Pico Lisp (3.1.1) -> (16.12.8)
Racket (6.1.1) -> (6.7)
Elixir (1.1.0) -> (1.3.3)
Scheme (chicken 4.9) -> (chicken 4.11.0)
Gosu (1.6.1) -> (1.14.2)
D (dmd 2.067.1) -> (dmd 2.072.2)
AWK (gawk 4.1.1) -> (gawk 4.1.3)
Forth (gforth 0.7.2) -> (gforth 0.7.3)
Prolog (gprolog 1.3.0) -> (gprolog 1.4.5)
Clojure (1.7.0) -> (1.8.0)
Go (gc 1.4.2) -> (gc 1.7.4)
Unlambda (0.1.3) -> (
Python 3 (3.4.4) -> (3.5)
R (3.2.2) -> (3.3.2)
Groovy (2.4.4) -> (2.4.7)
Nim (0.11.2) -> (0.16.0)
F# (mono 3.1) -> (mono 4.0)

From Spoj challenge to own startup. Short interview with Keshav Dhandhania

Spoj is online for over 12 years. After so many years our community has grown to almost 600,000 registered users. Within this group a huge amount of passionate coders were born, where are they now? We would like to invite you to a completely new series of short interviews with successful Spoj users, we will talk about their projects and their first steps in the world of coding. If you think that you have your own story that can inspire others, write to us!

We hereby present you our first interview with one of old Spoj users: Keshav Dhandhania, a co-founder at Compose Labs, a San Francisco-based company that has just released their first project Commonlounge (with a special community for Spoj users too!). You can read more about him by visiting his website and following him on Twitter

Spoj: You have created an online community, could you please tell us more about it.

Keshav Dhandhania: It’s basically similar to an open Facebook group. It came from the idea that all these people who take part in programming contests hardly talk to each other. Places like Spoj are just great for problem solving, but I find this community much more focused on competition and practicing. Here on Commonlounge we don’t want people to compete, we want them to talk, to share their knowledge, to help each other and therefore better understand things they do.

Commonlounge Spoj communitySo, it’s more of a supporting community.

Exactly. There are currently several tutorials, several problems and the solutions to these problems. Regarding practice and solutions, we have a new approach. The idea is: if you can’t solve a problem, you should not read the whole solution, you should only find the clue and go back to the problem. We have started three months ago but there is already a strong community and many people who have solved many problems and they are ready to help.

Your platform is online for a short time, but as I can see, there are already plenty of people using Commonlounge. Where are the users from?

The majority is from India but there are lots of people from Indonesia, Egypt, Bangladesh, Brazil, there are people from all over the world.

But they are here not only for one topic like coding or technology. Commonlounge doesn’t host just one community. I can even see the place for HBO’s Westworld fans!

Commonlounge - Westworld community

This is actually one of the most active ones, but the show has ended so I expect that the traffic will decrease in there as of now. Still, this is the proof how fast we are growing right now. He have already 2000 users right now, there were about 1000 only a month ago. So, it has doubled in a month. I am really thrilled how it would look like in coming weeks.

What was behind the idea to create such a platform. There are lots of social media platforms already in the web, is there something you expect to be different?

Lots of people love Facebook, but I don’t care much about this certain platform. My Internet social life was always more connected with places like Spoj or CodeChef (they also use Spoj’s Sphere Engine – author). It is not about who I know but what I do. I love programming and I love doing algorithms, so I choose places where I can do that. There are obviously people who are into poker or want to talk about TV show all day long, that’s what they do. So I wanted not a ‘Facebook’ centered around your social life but a ‘Facebook’ centered around what you do. It’s a bit closer to what you have on Reddit.

It’s a place with all these communities, you can join to the community you feel you are related to – you can join MIT Subreddit, India Subreddit, Poland Subreddit, there’s probably Spoj Subreddit. So they are focused around certain subject or activity. But Reddit is already +10 years old, they haven’t changed it at all, they are not doing it well.

Why is that?

In order to embed something on Reddit as well as manage community properly you need to use some code.

We as programmers find it easy, but there are people who are into cooking, to discuss movies, they are here for socializing and can find this coding part difficult. We can do all these things somewhere else – we can go to other website and play chess or poker, the others can decide that it’s better to visit Spoj and learn algorithm. But for those non-technical communities, the website must be plain and simple – let the people create content, talk to each other and enjoy building community.

Talking about community – how do you find your experience with Spoj, how did it help you to get to the place where you are now.

I learned about Spoj from the TopCoder forum, they wrote about high school programming competition. At that time there were no others contests. There were 6 months for the contest, one for each month, the prize was iPod – it was the newest one at that time. I practiced on Spoj and prepared for the contest. At the end of the month on the last day, I stayed up overnight and coded for 10 hours. Spoj had a policy of not updating the leaderboard in the last 24 hours. When the results came out after the contest ended, I was on top. It was really fun. After that I used Spoj for practice. When I went for my college school, which is MIT in Boston I don’t think they’d even consider my application without IOI (International Olympiad in Informatics).

Has this single programming contest really changed your life so much?

I cannot imagine my current life, doing my own startup now, without the things that happened earlier, without this practice and learning I had on Spoj. My life would be totally different without getting MIT. And I wouldn’t be on MIT without IOI, which would not happen without Spoj and TopCoder.

You said that after finishing MIT you’ve decided to work on your own startup, you didn’t want to move to some big company, big corporation, why startup?

I wanted to get some experience and preferred to be more independent. I don’t like to repeat things on a day-to-day basis. In startup you grow faster. Big companies, like Google are more like school – you know what to do, they tell you what to do, it gives me a school-like impression, maybe I am wrong but this is how I feel.

The interview was conducted over Skype in December 2016

Did you like the interview? Please share it with the others 🙂 

Spoj team on SnackDown2016

Recently we had a chance to spend a couple of days with our oldest and best friends – the CodeChef Team. We have been providing backend for CodeChef for almost 8 years now and we are extremely happy and proud to see the obvious success of CodeChef! ‪#‎SnackDown2016‬ was an amazing event, and this is all thanks to the wonderful people who received all the participants and guest with extraordinary hospitality.

Thank you, Guys! From the bottom of our hearts!

13775843_10153802967447799_89276199146905116_n 13782076_10153802962857799_8783852903176969769_n

13782057_10153802962687799_7245563555173714015_n 13690734_10153802961822799_2008307263447139327_n



13729154_10153802957522799_8429971549685336753_n  13754600_10153802957032799_7695810050325361759_n