Quick list of “boring” tools you need to run your business

Below you can find a list of tools that I have either researched or used myself to run the boring parts of my business.

I’ll update this post (and possibly elaborate more) as my needs change.

Business entity formation

Legal

Taxes, accounting, and bookkeeping

The non-resident-alien (NRA) guide to selecting a business entity for your startup

I’m in the process of starting something new and I decided to do it mostly by myself this time, meaning that I had to actually learn the rationale of choosing one entity form over another, how to get taxed, and what are the advantages or disadvantages one may encounter in the process of doing this selection. But first, a word of caution:

If you are starting something new, forming a legal entity should be the last of your priorities. The idea, how are you going to execute it, and whether a market exists or not for what you want to build must come first. The step I’m talking about in this post comes as a distant second.

Who is this guide for?

This writing is targeted at those people who do not reside in the United States of America, neither as physical residents nor as tax residents, and that want to create technology startups.

In actuality, the advice here may be applicable to anyone, even to US persons, but since citizens or residents have a more complicated picture in general when choosing where to incorporate their businesses, I’m ill-qualified to offer my experience in those cases since I’m a non-resident-alien (NRA).

So why incorporate at all?

Operating behind a business entity offers you, the founder, liability protection that will help you sleep at night. This means that if you get sued by a customer, they can only go after the business entity and not after you as a person. Of course, it’s more complicated than that and you can’t just go a be negligent with your customers expecting no consequences, but you can be certain that selling products or services behind your own name is much riskier than doing it behind a business entity.

Where to incorporate it?

My use-case is for tech startups that sell services or intangible products to customers in any part of the world, and for this scenario, there’s no better place to incorporate than the United States of America, and more specifically, the state of Delaware.

Why Delaware?

Because it’s cheap both in terms of fees and taxes, offers many advantages to foreign founders to do everything remotely, and it’s a very business-friendly state with many laws that protect its businesses in a way no other state does.

An honorable mention goes to the state of Wyoming which also offers many advantages, and it’s even cheaper than Delaware when it comes to fees.

LLC or Corporation?

This is probably the hardest decision to make and it entirely depends on what kind of business you are building and what do you plan to do with it in the future. For example:

  • Do you plan to take in investors?
  • Do you want to offer stock options to your employees?
  • Are you selling consulting services, physical products, or software?
  • Do you have co-founders?
  • Do you plan to sell the company in the short, mid, or long term? Maybe never sell?

There are other types of entities you can choose too, like partnerships, sole-proprietorships, and S-Corps, but since this is targeted at tech startups and NRAs, your options are basically narrowed down to only LLCs and C-Corps.

The case for LLCs

LLC stands for Limited Liability Company, very similar to SRL in Latin America and Spain, or GmbH in Germany in case you are familiar with those.

You should consider an LLC if:

  • You are the sole owner and want to remain this way.
  • You plan to sell consulting services.
  • You want to sell physical goods.
  • You have no employees or you don’t want to offer stock options to your employees.
  • You don’t want to receive venture capital.
  • You want to keep everything as simple as possible. This may sound like a no-brainer but sometimes you have to complicate yourself in the early days to keep everything simple in the future. An LLC keeps everything simple today.
  • You want a very simple taxation structure. An LLC is an extension of you as a taxpayer meaning that you will file your business’ tax returns together with your personal returns. When it comes to NRAs, this advantage is not really that visible because you have to file your personal returns in your country of residence and also file the returns of your business in the USA.
  • You are on a tight budget. LLCs are generally cheaper to maintain than Corporations.

The case for C-Corporations

The C in the C-Corporation, or C-Corp for short, is how you chose the Internal Revenue Service (IRS) to tax you. There are S-Corps also, that are apparently great from a taxation perspective, but you can’t be an S-Corp owner if you are an NRA so we won’t be discussing those.

C-Corps are similar to SA in Latin America/Spain, or AG in Germany.

You should consider this type of entity if:

  • You plan to raise funds for your company. Most investors will require you to incorporate as a C-Corp before accepting to make any investment in your company. This is because Corporations offer lower maintenance burdens and predictability to them. Sometimes, these investors won’t even invest if you are a C-Corp that has not incorporated in Delaware, so if you ever plan to raise capital, being a Delaware C-Corp offers you the best chance of having one less thing to worry about.
  • You want to offer Stock Options. This is extremely important for high-growth/high-potential tech startups since, in the early days when money can be tight, your only chance of attracting top talent is to offer a portion of your company to these profiles in the form of Stock Options.
  • You plan to be doing this for the long run, sell your company or even go public.

Don’t screw it up

Don’t take this part of your business startup process lightly and do your own research.

Changing from LLC to Corp can be relatively simple but it will cost you money depending on how far along you are in your journey, it’s also not cheap.

Changing from Corp to LLC is also possible but prohibitively expensive that is sometimes not even considered an option.

You should not be trying to innovate here. For example, most of the tech startups doing software are Delaware C-Corps, whether they received investment or not. If you want to choose to do software and be LLC instead, have your reasons very well sustained.

If you are thinking of going against the norm you should consider talking to an expert first before making your decision because there may be a very good reason that companies in your industry chose to go one way instead of the other.

VPC configuration to communicate with external networks outside AWS

My situation is the following:

  • I’m using Amazon Web Services (AWS) as the infrastructure provider of my project.
  • AWS is fantastic but it can become expensive really fast.
  • I want to minimize my spending while still being able to use the best parts of AWS’ offering for some of the managed services I use.
  • This is all for my development environment, but it can very well be used for production too.

My constraints are the following:

  • I’m using MySQL managed by RDS.
  • I’m running one EC2 instance where I have a web app.
  • I’m using Ray autoscaler for scaling the app’s workload.
  • I need an ElasticSearch instance but I don’t want to pay for the managed service on development.
  • I want my development environment to look as close as posible to my production enviroment.

So, being the cheap developer that I am, or as I prefer to call it, the financially-responsible developer that I am, I found a pretty convenient solution to this likely not-so-uncommon problem.

Why not just run an instance of MySQL, ElasticSearch, and Nginx in my local LAN and avoid all this trouble?

Because I want my dev environment to closely resemble my production environment without paying for managed services I don’t need in development.

Plus, I need the Ray autoscaler to work on Development too and although it supports running on custom clusters, configuring that will require having to maintain two branches of the autoscaler configuration and that would cost more money overall in terms of time investment required.

The solution

I decided to create a t2.micro instance of OpenVPN that would serve as the entry point to my AWS network, and have my development laptop plus another personal computer that I had sitting in my house running Ubuntu to act as cheap development servers without significantly impacting the development architecture compared to the architecture that will ultimately run production.

To do this yourself:

  • Install OpenVPN on an EC2 instance. There are plenty of tutorials out there that can help you with this, for example this one. I know that AWS has its own VPN solution, but using it would defeat the purpose of keeping everything as cheap as possible.
  • Go to your VPC configuration on AWS and open the Route Tables configuration.

  • Depending on the number of VPCs that you have, the number of routes may vary but in general, you should choose the one that applies to the VPC you want to enable to communicate with your external OpenVPN network. Click on that route.
  • You should find 2 routes there, one to your local AWS network and one to the Internet Gateway. Both come configured by default. Click on Edit Routes.

  • Inside the Destination column, add the CIDR block that corresponds to the one you configured in your OpenVPN setup. Mine, and the default one for OpenVPN, is 10.8.0.0/24.

  • Inside the Target column, choose the instance where your OpenVPN server is running and click on Save Changes.

  • Finally, and the part that is the least obvious, go to your EC2 instances and choose again the one running OpenVPN. Click on Actions > Networking > Change source/destination check.

  • Check Stop and then Save it. This will make your instance to accept traffic coming from other instances and destined to outside networks to pass through it without being checked/rejected.

  • After all of this, you should be able to seamlessly connect to your OpenVPN clients running on your LAN from inside AWS, using their 10.8.0.0/24 addresses. Very cool.

This relatively simple configuration allowed me to considerably reduce my spending on servers while keeping the relevant parts of my development environment running on AWS. It did increase bandwidth usage but that was okay for me in terms of costs.