Purposefully boring, but fun tech

Written on May 16, 2021

I’ve been quietly working on an app as a personal project for a few months now.

I’m not ready to share about it publicly yet.

But what I did want to share today was the tech stack behind it.

By today’s software trends, someone might look at my stack and think wow that’s extremely boring. But I’m quite happy with it.

Snapshot of project files on Github

The stack I chose consists of Hapi, Handlebars, Sass, SQLite3 and plain old JavaScript on the front-end.

All this is deployed on AWS’ Lightsail by way of dragging and dropping a bunch of files via SFTP.

One might ask, “But Michael why?! Don’t you know, you can use [insert list of trending tech stack and services]”.

Yup, I know.

I’ve professionally built applications using Ember, Vue on the front-end.

I’ve professionally built applications using Ruby on Rails.

I’ve deployed applications into the cloud using Heroku and Elastic Beanstalk.

Yes, I could’ve chosen any of these tools from my developer tool belt.

But I decided to choose this stack because I enjoy it and I wanted to learn as much of the benefits that a lot of the frameworks provide by doing it myself.

For example Ruby on Rails has a nice authentication solution called Devise. It has a sweet helper that allows you to identify the current user.

I had to roll my own solution. It ate a couple of nights development, but what I gained from the experience was understanding how pre options in Hapi work for performing actions before the main handler is called when accessing a route.

That and with the combined feeling of accomplishment once I achieved this feat was worth it for me.

As for the server for itself, I chose to use Lightsail because it is cheap, they’ve got a nice starting point for Node applications and I’m familiar with it.

What Lightsail gives is a light-touch server setup so I can have my app up and running quickly. Being able to SSH and SFTP into the server also affords me the ability to make backups of the SQLite3 database and compile static assets.

I could’ve hosted the application on something like Heroku, but the app would’ve had to have a different RDBMS like PostgresQL instead of SQLite3. I could’ve gone with Render as well, as their set up is actually a lot easier to get up and running. But because of the SQLite3 database, I would’ve had to set up a disk to hold the database and figured out how to get the two working together.

With Lightsail, I have complete control over all the pieces and I know how to make them work together because the set up is most similar to my local development set up. While Heroku and Render definitely makes the deployment process and management seamless, honestly getting it up and running and set up the way I wanted it was just a blackbox and I’d rather spend time developing instead of figuring out magic.

Some might read this article and the pieces of the stack described in it as extremely boring since it isn’t describing the latest and greatest web development has to offer these days. But I’m extremely satisfied because it allows me to build what I want, easy to maintain and is fun to develop with.

Your stack may be different from what I’ve described in this article. Perhaps it is also different from what trends or the developer community at large says we should all be using. What I hope you’ll find in this article is the encouragement to simply use what you’ve got that makes you productive and happy.

In the end, as a software developer, our main goal should be to create something that delights the people who use our software. As long as our software does that, people will not care what we choose to accomplish that goal. And as an added benefit, if the stack we choose also makes us happy while creating software, I think it’s a win-win situation.

Stay in touch

Thanks for reading this article. I'd love to stay in touch and share more tips on programming and side projects with you. Sign up and I'll send you my articles straight to your email, you'll also get a free copy of the light themed version of my Git cheat sheet.
Git cheat sheet preview image