ndza

Creating my personal website and blog

As a long time software engineer (mostly C++), I needed to have some space on the Internet to host my professional profile. Along with that, I intend to write about stuff, mostly C++ and other technical things, and intend to show-off some projects. This had been on my mind for a while, but I'd somehow managed to kick the can down the road, expecting it to be an onerous task (especially as I don't do too much of web stuff these days).

But, I've finally done it. So, in this post, I write about how and what it takes. It took me a few hours, over the weekend to have an initial setup completed. It's something that all software engineers should think about having at some point, so hope this helps.

Thinking about the requirement

The website needs to be simple to setup, code and maintain. (I'd rather spend my energy writing, than coding.)

I don't want it to be too dynamic. So, static pages are fine with a bit of dynamic behaviour.

It also needs to be hosted under a domain name. Ideally, it will have a few main pages and then blog post pages that I can write regularly.

It needs to be cheap!

Software stack

It's been a while since I've researched this topic, so I went on a bit of a journey.

I had some options while approaching this:

So, I decided to dig deeper into SSGs. I needed something mostly static, but also that I could extend easily if I had to, to support API calls to the backend for example. I also came across the term JAMstack (JavaScript, APIs, Markup). Ideally, I'd like to write posts in markdown or something, not HTML.

There are tonnes of SSGs our there. The jamstack.org and cloudflare.com pages have a nice list. Now, I had another another decision to make about what to use.

I went with Eleventy.

Hosting provider

Cloudflare's deployment for Eleventy also looked super easy. So, I went with them using a personal plan. I think there are plenty out there, but that's something I can look deeper at a later point.

Domain name

For the domain name, I wanted something personal, something short. Some candidates were: nolandesouza, nolandes, ndes. But, I settled with ndza.me. It's short and personal!

I searched for these domain names on Cloudflare and purchased my domain name from them for ~$15.

There's tonnes to read about domain names and DNS, but the main thing to know is that you are annually leasing a domain name through a Domain Registrar. And if you want to transfer domain names some providers can make it difficult. I think that's something I can look into later too.

The workflow

For the initial setup, Eleventy have an official starter project. So, I created a git repo (on github) from it, to hack my changes into.

I then didn't want to mess around with my local setup too much, installing node, etc., so I went a remote environment setup option. This is quite a cool way of working these days and something that wasn't available some years ago.

This is when I came across codesandbox.io, a CDE (Cloud Development Envirnoment) which I had not tried before. This allowed me to simply use a micro-VM with my code repo and run and test the site. So, I now use this workflow when I want to test any changes to the stack.

My lightweight workflow however, is to edit the markdown files through github itself. This allows me to create posts easily.

I can use a branch and edit (then merge) approach or directly edit the main branch. In either case, once I change main, my changes can be deployed automatically.

Wrap up!

So, there you have it. As you can see, it's super-easy to have a site and blog up and running. There are some small learning curves, if you aren't too familiar with things such, DNS, hosting and other SSG specific things. But, it's worth the journey and will benefit you as a software enginner.