Ask HN: Best tech stack for solo dev'd app?

13 points by throwaway45349 ↗ HN
Context:

I've been using a lot of GCP services (App Engine, Firebase Auth, Cloud Firestore, etc..) for a website I'm working on, but lately I've been seriously considering the switch back to bog standard Linux (cron, bash, POSIX, systemd) instead of building upon a proprietary platform.

A lot of things are unnecessarily complex with my current setup. e.g., for batch jobs, I have a webserver which is pinged by a managed service, whereas a small binary + cron job could be easier to manage. Using a NoSQL database may be cheap with such tiny usage, but I'm missing the power of SQL, namely, integration with everything under the sun.

10 comments

[ 4.4 ms ] story [ 32.3 ms ] thread
The best tech stack is highly dependent on who's asking the question. Use the one that you're most familiar/comfortable with. Don't feel compelled to use the "latest flashy trend" just because people are talking about it. For example, using HTML with vanilla JS is still a perfectly valid approach over React/Vue/Angular/etc..
Depends on what language you are comfortable with.

If you want barebones minimalist stack and are comfortable with C++, then you can try Wt[0]. Wt is not a framework, it is a toolkit and actually works like Qt but for web development. And the team developing that are super helpful even though they are a small team.

If you want dynamic programming with virtual machine, then try Elixir or straight way go to Erlang.

For front-end I will prefer jQuery+Bootstrap, KnockoutJs or Svelte and use Unpoly[1] if doing server-side rendering. (These I am recommending because I am not a front-end developer, others may have better suggestion)

For mobile development, I would recommend Flutter for front-end and Dart and/or Kotlin and/or C++ for mobile middleware.

For DB, it is either PostgeSQL or CouchDB for me.

[0] https://www.webtoolkit.eu

[1] https://www.unpoly.com

If you want speed of development, look into frameworks that provide a high level of abstraction (RoR, laravel, django, etc). Lots of batteries included and tons of documentation.

If you want to learn new tech, anything that catches your interest.

If you already know Ruby on Rails, do that.

If you already know Python well, do Django or Django REST.

If you don't have any prior language affinities, go Javascript/Typescript on the whole stack. Language switching is a real problem for me.

I'd stick with App Engine/Heroku for prod. I like Postgres alot, especially with JSONB. Since it functions as a MongoDB-like database if needed.

If App Engine fails you, you should be able to switch to another provider very easily, or a standard VM without a code rewrite only a CI/CD rewrite

With that being said,I run a monorepo. /api folder has Feathers JS with Postgres /admin folder has react admin website /website folder has public facing react website.

Everything can run local during dev. Everything is CI/CD piped 12 factor styled One git push and merge to master, deploys everything. I love it.

If a single provider fails me, I can switch pretty easily.

I vouch for JVM, specifically:

* Bootique (better Spring Boot),

* Vert.x (reactive framework and libraries for unmatched performance),

* Akka (for distributed coordination, if necessary; though depending on the use case, it might be simpler to just use external services, like Zookeeper or Consul -- Bootique has integration with those)

Honorable mention goes to Netty, which is great for high performance networking, but going so far is rarely needed in most servers.

Its crazy how much ram JVM needs. A simple "hello world!" REST API on JVM takes about 350mb of ram. same version in go takes around 9mb and 2mb using fastHTTP.
JVM has default memory usage limits and sophisticated GC algorithms, which may cause the JVM process to allocate more memory than actually needed for the application's data. In most traditional Java's use cases (long running, memory intensive apps and servers) this is beneficial, but if you know the upper bound on the total size of the data to be smaller than the default limit (which varies by the environment), it's easy to restrict it further with a couple of program parameters. For example, after some tuning I commonly run a full-fledged Java-based BitTorrent client with under 64 MB of RAM in total. You can definitely run a Jetty web server with Hello world page with 32 MB RAM or less.
Nice! I'm kind of a mid-level late 20's dev who is thinking on doubling down on the Java ecosystem and being a jack of all trades within it... think it is worthwhile?

Do Vertx and Akka work well together?

I'm looking into the safe stack for F#. I'm no functional nut but like the error checking and concise code you get. F# is well integrated with the .net world.

I've not made the move but it's the most promising stack I've looked into.

Solo? How about streatching your wings and learing something mind/programming expanding. Choose one ecosystem of Common Lisp, or Smalltalk, or Forth, or Haskell, or Ocaml. The list goes on. If you haven't deep doven into one of them, and your faced with an opportunity to learn and fail and get your self up again and learn and...