Administrative aspects of freelancing from Croatia

Yesterday, we had our first after-summer Zagreb Freelancers Meetup in the BIZkoshnica coworking space. The topic was how to go about founding a company, what are the administrative steps, which form to choose and what are the advantages and disadvantages. We covered a lot of interesting points, so I wanted to summarise the most important stuff. The event itself is a part of the European Freelancers Week and you can find some more related events around Europe.

One thing I recommend from my experience of running a web development business for a few years now is to get all this administrative, bureaucratic stuff done as quickly as possible and try to get it out of the way as much as you can. Your primary concern should always be your core business – the work you do for your client, your product, your team. Try to outsource administrative services to experts, i.e. accounting, legal and you focus on your business. Of course, don’t oversimplify – do your homework and inform yourself beforehand to pick the right company form and know the risks and liabilities.

Regarding administrative services, here are some recommendations:

  • accounting
    • Opulento – lots of experience with IT freelancers
    • Tatjana Barančić – experienced with more complex companies with lots of employees
  •  legal
  • free advice
    • Plavi Ured – the public office for getting advice on opening a company in the city of Zagreb. People really recommended you start here.
  • financial support
    • – support for self-employment, you can get around 25k HRK after a bit of bureaucratic legwork

So, time to choose a company type. The word of the evening was “paušalni obrt” 🙂. In short, it’s a form of sole proprietorship that you can choose if your income is within some annual amount (around €40k) and that’s the form with the least overhead (lowest tax and social insurance rates – maximum 10%). In my opinion the maximum income limit is so high that this kind of stops being a social measure and starts favouring the wealthy too much, but that’s maybe a topic for another more political post. For now let’s keep with the premise that it’s good that more people are going into entrepreneurial waters in Croatia. So anyway, here are the available forms (take these descriptions with a grain of salt as I am not a lawyer or accountant – I was just making notes during the meetup and for this stuff you should probably talk to a professional accountant):

  • “paušalni obrt” – sole proprietorship up to €40k / year. A maximum 10% taxes and social insurance (pension and health insurance). You pay taxes month-to-month and at the end of the year you maybe pay some difference. You can flexibly pay out your salary from your business account, no brutto-netto stuff there. The website has more info on this. It’s a personal liability company form, so it’s a good idea to find legal insurance.
  • “obrt” – same as above, just over €40k / year. Apparently, the tax and social insurance overhead is higher than a d.o.o., so you should go for that in this scenario. Fun fact for those who understand Croatians – if you multiple people cofound an obrt, it becomes an ortakluk 🤘😄 (an archaic expression for friends).
  • “d.o.o.” – limited liability, an equivalent of LLC or GmbH in other countries. You need 20k HRK as a downpayment (can include equipment). The tax + social insurance overhead is something like 35% (exact numbers depend on a lot of factors, of course). Update: as of 2017, tax and social security overhead for a d.o.o. is around 23-24% for the owner/director, not 35%, if company income is less than ~€400k. A d.o.o. is a separate legal entity, so you are not personally liable. It’s the best form if you make more than €40k / year and/or you want to hire people.
  • “j.d.o.o.” – a simpler form of “d.o.o.” with almost no downpayment where you gradually pay out the 20k HRK over time and morph into a “d.o.o.”.

There are also ways to register a company abroad, which might be better in some scenarios. E.g. if are a startup and you have foreign investors, they’ll probably want you to incorporate in their country (USA, UK etc.). Here are some links to explore if this interests you:

  • Stripe Atlas – LLC in Delaware, USA. A problem is that the US doesn’t have a “no double taxation” agreement with Croatia yet, so you have to pay 30% withdrawal tax when you pay money out of the US company.
  • Estonia’s e-Residence program – founding a company in the EU with € as a currency where all of the services are available online. There’s a webinar on this topic starting at 3 pm today (hope they’ll leave a recording for later viewing too). Estonia does have a “no double taxation” agreement with Croatia, so that’s a plus.
  • other places like UK, Ireland, Hong Kong also have similar things
  • when one of these forms is used, people generally register a “paušalni obrt” in Croatia to still have health insurance here.

Some other services to explore for various international payments stuff:

Anyway, these were the most important tips for starting a company from Croatia. If you like these topics, be sure to join the Zagreb Freelancers Meetup group and attend our future in-person meetups. We’ve also started a Slack chat group for online freelancing and business-related discussions – you can join here.

Compiling TensorFlow with GPU support on a MacBook Pro

OK, so TensorFlow is the popular new computational framework from Google everyone is raving about (check out this year’s TensorFlow Dev Summit video presentations explaining its cool features). Of course, a fun way to learn TensorFlow is to play with it on your own laptop, so that you can iterate quickly and work offline (perhapse build a hot dog recognition app). In these cases a GPU is very useful for training models more quickly. There used to be a tensorflow-gpu package that you could install in a snap on MacBook Pros with NVIDIA GPUs, but unfortunately it’s no longer supported these days due to some driver issues. Luckily, it’s still possible to manually compile TensorFlow with NVIDIA GPU support. I’ve hunted through a lot of different tutorials (1, 2, 3, 4 – this last one helped me the most) to bring you this hopefully complete description of how to set everything up correctly and get deep into learning (and I know, in 2 months probably become just another one in that list of outdated tutorials, but that’s life 🙂 ).

For the sake of verbosity, I’m using a MacBook Pro 10,1 with an NVIDIA GT 650M and OS X 10.12. Hopefully, though, it will work on a couple of other configurations as well. In any case, let’s start… Continue reading Compiling TensorFlow with GPU support on a MacBook Pro

Simple way to set up Django and a SPA frontend on Heroku

This post was adapted from my Stack Overflow answer to a question about using single page applications (SPAs) with Django on Heroku.

Update: check out my django-spa package for a ready-to-use solution for serving SPAs from Django.

Here’s how to set up Django to serve your static files and index.html on / while still having the possibility to use Django views for the admin dashboard, registration etc.:

from django.conf.urls import include, url
from django.contrib import admin
from django.contrib.staticfiles.views import serve
from django.views.generic import RedirectView


urlpatterns = [

    # / routes to index.html
    url(r'^$', serve,
        kwargs={'path': 'index.html'}),

    # static files (*.css, *.js, *.jpg etc.) served on /
    # (assuming Django uses /static/ and /media/ for static/media urls)
        RedirectView.as_view(url='/static/%(path)s', permanent=False)),

    # other views still work too
    url(r'^admin/', include(,

Continue reading Simple way to set up Django and a SPA frontend on Heroku

Easily install Google Fonts

Just as I was doing a website mockup exercise in the awesome Sketch app, I noticed that I’m missing a font locally – Open Sans, one of the many open source fonts available on Google Fonts. I went searching for some Sketch plugin to install these fonts easily (which would make sense, since they are often used on the web as they’re free and some of them are really good). I haven’t found a plug-in, but I did find a nice small Mac app that sits in your tray and allows you to easily install Google Fonts:


It’s easy to set up by installing it from the above link or using Homebrew Cask:

brew cask install skyfonts

After this, you simply browse Google Fonts on and “add” them (you’ll need an account there).

Screenshot 2016-03-04 14.37.29 Continue reading Easily install Google Fonts

Disk on a platter

This article on building a Raspberry Pi NAS solution has been sitting in my drafts for three years now. Recently, my Raspberry Pi had stopped working (the SD card had died), so I rebuilt it yesterday. I cursed myself for not having finishing the text back then, as I now had to retrace some steps manually. So, here goes the finished procedure for future reference.

I got a Raspberry Pi as a birthday present from my thoughtful colleagues!

Raspberry Pi

Now, as my first project I decided to connect it to my 2TB external hard drive and serve it on my local network using the Samba protocol (I tried NFS and SSH too, but Samba proved to be the most performant protocol and is also cross-platform). No more moving the disk around and hooking up USB cables 🙂 Continue reading Disk on a platter