My Blog
Time ago I wanted to start a blog where I could share my knowledge, experiences, and opinions about the software engineering and FOSS world, but I was busy with my job, my personal life, and my other responsibilities. I already had a PeerTube channel where I’m uploading videos about software engineering, coding, and me trying FOSS software, but in some situations I prefer to write and promote the reading.
One day I was looking for new job positions. I found an interesting position that requests skills with NextJS. I consider that I’m good at using ReactJS and all the libraries that involve the ReactJS approach. Nevertheless, my experience with NextJS wasn’t enough for my security to present code assessments. So I decided to start my portfolio, personal page, and blog using NextJS.
My idea was to create a blog using NextJS as the front end and back end and consulting a PostgreSQL database. Then I planned to mock a federation with Mastodon. The idea to do this was to trigger an event when a blog post is published to make a Mastodon post in my account, and then I will catch the ID of the Mastodon post to get the comments and show them in the blog post.
So I started with the static part of the website, like the portfolio, about me, resume, and contact sections. It was a good beginning. I’ve applied my skills of React, theme handling, context handling, and correct React re-render cycle handling. Also, I improved NextJS skills like server-side rendering and client rendering and when and why to use them.
When the time came to deploy the first version of the website, I faced a dilemma: where should I host and deploy the project? My first option was Hetzner Cloud. This is a German cloud service that is cheap, and several FOSS communities trust it. But most of my audience would be on the American continent. The reason to choose Hetzner is the strict German security laws, so even when they offer servers in America, all the benefits would be discarded. Then I found different services in Europe with similar benefits; my audience would be in America, though. At the end I realized that those security benefits weren’t necessary for this project, so I chose Digital Ocean to host my website.
My second dilemma now was how to create a CI/CD process to auto-deploy the project when I merge branches to the main branch. Why is this a dilemma? Some time ago I started to use Codeberg instead of GitHub. Codeberg is awesome!! But the CI/CD is not ready for now. There is an option named Woodpecker CI, but I needed to host my own instance or request the Codeberg community to use theirs. No one looked like a good idea for me. So I noticed that Digital Ocean has a good integration with GitLab. Of course, GitLab! The King of CI/CD.
Finally, I deployed my website. Now the next step was to start the blog. For this I needed to create the schema of my database and, the diagrams about the flow of the requests. But I got busy again, so I stopped the software design for a while.
One day when I rested on my sofa, I was checking the repositories stored in Codeberg (yeah, this is fun for me, totally a nerd). And I figured out a “NoJS community.” People that don’t like to use JS because most of the trackers and code injections work with this language. It makes total sense. I can understand because I’ve worked with Google Analytics, Google Tag Manager, and these kinds of technologies. So they created a kind of Markdown to HTML interpreter using Ruby. Hey, I love Ruby!!! They created blogs, Mastodon clients, games, and other projects that don’t use JS. I checked the code of their interpreter, and I noticed it’s not an interpreter using the compile and interpreter principles that I studied at the university. I mean tokens, syntax analysis, etc. So I wanted to create my own interpreter. For that I needed to restudy compilers and interpreters.
Then the correct question came to my head. Does already exists a Markdown to HTML better interpreter? So I figured out “Jekyll.” Jekyll is not only the interpreter that I was looking for, but also it’s made to build blogs. It’s a framework made with Ruby; it uses Liquid(the template language created by Shopify), it uses scss files to styling, it has a big community, plugins, and themes on the Internet, and I have the possibility to create my own plugins in case I require it.
Then a member of a free software community shows me how she uses a Cloudflare tunnel to expose websites using a Raspberry Pi in her home. So the new approach was planned now. I would use Jekyll, removing database dependency for my posts, and Cloudflare, removing the DigitalOcean cost. So I migrated all.
Yeah, this website is made using Jekyll, and for the moment I’ve enjoyed developing it. This is my first post, and I wanted to dedicate it to Jekyll because it’s an awesome technology. If you want to try it, you can check the official documentation here; you don’t need experience in Ruby or coding. All you need is in the documentation. Actually, there are prefabricated themes that you can use and plugins that you should check.
I know that the website should improve in styling and maybe user experience. I’ll do it, but for the moment I’m ok with the result of this project. Also, I’m planning to develop some plugins that I have in mind in order to integrate them into my website. I think it is a good start, and I will still enjoy this project.