DEV Community

Cover image for "Level" Up Your VPS Game
Bas Steins
Bas Steins

Posted on • Originally published at open.substack.com

"Level" Up Your VPS Game

Big News: Pieter Levels, known as @levelsio and creator of NomadList, PhotoAI and other successful single-man startup operations, travelled to Austin. After tweeting a lot about his experience in the States, last week the reason for his travel became clear: He was interviewed by Lex Friedman on his podcast.

Pieter, always known as the index.php and jQuery guy, raised some controversy with his tech stack choice and him operating more or less everything on a single Digital Ocean VPS. Let’s take a deeper dive into his insights.

Level’s operations

The “early” levelsio startups, like NomadList, HoodMaps, and RemoteOK, were conceptually very close: A data source narrowed down to a specific niche, built from public sources, crowdsourcing, or selling ads. Some interactivity like message boards, or direct messages, and you’re there. Technically, these sites are quite simple, from a software development point of view. No real-time data, no large datasets, no media encoding, no Single-Sign-On, and not even close to large Social Media sites in terms of concurrent users. The frontends are not complex, either. Basically, they just display tabular data on server-side generated HTML.

The newer startups – all in the realm of Generative Artificial Intelligence – like PhotoAI, TherapistAI and others, are not complex either. Basically, those are just frontends to paid APIs that offer AI models running on cloud GPUs – an opportunity that levels saw in 2022.

Besides the technical similarities, all of Level’s operations are low-cost products, where nobody seriously gets hurt if they go down – even for a longer period of time.

Level’s choices

While you could still debate the choice not to use a framework at all, Levels just used the tools he felt most comfortable with. I started my first Internet projects with PHP as well, and luckily discovered Django quite early (way before the 1.0 release back then). Implementing stuff like Auth (yes, including Social Auth) was always something I considered available out of the box. I don’t feel that Auth services like Auth0 are making me more productive than – for example – using django-allauth. For servers, databases, and other infrastructure services, there a lots of cheap alternatives to cloud based offerings. Even a 1GB VPS from DigitalOcean or Hetzner can already handle an impressive load of concurrent users (Here is my benchmark from December 2023). If you really need geo-redundancy, hot failover, and other cool stuff, really depends on the use case. “Not trusting” his products because of the tech stack is a bit a far reach given that those products only provide access to a simple database.

Maintainability vs. Reusability

His technical choices must also be seen in the light of his business choices: Levels does not want a VC involved (a point which is discussed at length in the podcast). He also wants to work on his own and go to market very early (in the early days of PhotoAI he used a TypeForm and sent out generated images by hand).

At this point, Levels most likely has built a collection of libraries or code snippets that he can reuse in upcoming projects. Given that his projects are similar to each other, it’s also likely that those code snippets are feature-frozen making them vastly reusable for himself.

Under maintenance aspects, however, the index.php + jQuery combination seems far from optimal. In the podcast, he also mentions that he has a hard time finding someone who wants to work on his codebase without rewriting it.

Conclusion

What can we learn from Pieter Levels?

Starting with a simple stack in which you are comfortable, seems like a good way to start. The knowledge and experience that you will gain using “vanilla technologies” will also help you evaluate SaaS/IaaS/PaaS offerings: You will know what they offer and when and why you need them or not.

Some use cases, also used by Levels, such as web-scraping or AI, can be built on paid APIs. For my scraping projects, I rely heavily on ScraperAPI, for example.

In a team context, relying on a framework is beneficial. Even if the framework is bloated, there is most likely one way to solve particular tasks, like routing or Auth. Not having to discuss those with a team drives productivity a lot.

Published in my Newsletter

Top comments (1)

Collapse
 
taijidude profile image
taijidude

Interesting. I recently looked at all those could options, because i wanted to host a really small project. Now ordered a raspberry pi to learn and practise setting everything up.