I always dreaded renewal time because it was normal for them to use it as an opportunity to extort us. Microsoft was a breeze in comparison. It's funny because Microsoft always had such a horrible reputation. I don't know if I was just so abused by VMware or what, but Microsoft was just easy. We had an annual true-up date and we always knew where we stood with them. We reported our numbers and that was it. No surprises ever and there was never an issue if we didn't report any growth. VMware was always pulling some kind of shit and was absolutely determined to push us over budget every time.
In time O(n) you can use O(n) cells on a tape, but there are O(2^n) possible configurations of symbols on a tape of length n (for an alphabet with 2 symbols), so you can do so much more with n space than with n time.
Integrations and maintenance were major issues when it came to users using the IP database. Usage of our IP database in software and platforms where data download facilities, maintainability (updating the database at regular intervals), and using an MMDB reader library were issues that were stopping us from universal adoption. For example, search/SIEM/threat intel platforms, distributed systems, firewall applications etc.
So, we just decided to launch an API to complement our data downloads. It is easier to use, and the unlimited requests make it a strong candidate.
We are rebuilding our backend in Rust and also developing a bulk enrichment API endpoint. The intention of the API system is to replicate the performance and features you get from a local database, with ease of use and minimal friction. Of course, the API is competing against the local database and will never be perfect, but I have to admit that using the IP database, particularly the binary database, and maintaining it is not as easy as using an API service.
Deleted Comment
I'd add:
- Learn tailscale. It's one of those technologies that takes half a day to get used to (claude code will answer all your questions), and you'll never want to live without it in the future. SSH into your VPS, install tailscale and use `tailscale set --ssh`, and shut down `systemctl stop ssh.service`. You don't even have SSH daemon runing anymore, extra safety.
- Use a simple docker compose to run your dependencies like docker. Bind to the tailscale IP, so ports: {{ tailscale_ip_of_this_server}}:5432:5432. This way your database is not exposed to the web, but it's exposed to the tailscale. Use tailscale_ip_of_this_server in your ENV vars to rails to connect - since it's running in the same server, tailscale will route it to localhost (and with localhost latency).
- With claude, set up a second VPS, add it to the same tailscale, turn of SSHD. They can now connect directly via tailscale (try ping or sshing between them).
- Then, install claude code on this second VPS. Since postgres is bound to the tailscale IP on the main, the 'slave' can connect to it. Install postgres via docker, but have claude set up a 'streaming replication' between server MASTER and server SLAVE, using tailscale ip.
100% secure, encrypted, and now you have a postgres replication with zero data loss if something goes wrong.
In the same SLAVE, you can also install barman - claude code will help you set it up.
You then have a postgres BACKUP with point in time recovery.
There you go!