Site Nuts and Bolts

When I first considered building this website, I thought about using raw HTML and CSS, which I’m familiar with. However, I quickly realized that maintaining a consistent design across the site this way would be quite challenging. It would mean repeating HTML source code across different files, which could get messy.

I turned to static site generators to simplify the design and make things more efficient. I had some experience with Hugo, a tool that uses themes to define different web pages’ overall look and layout. Unfortunately, I couldn’t find any design that suited my taste, so I attempted to modify an existing one, but it turned out to be too complicated for my needs.

That’s when I came across Zola, a static site generator written in Rust. I was drawn to it because Rust programs are known for being fast and reliable. Zola is a single executable generator that includes everything you need, so there’s no need for complex installation procedures. Although it had a bit of a learning curve, primarily since I hadn’t worked with SCSS style descriptions and template engines before, I managed to grasp it in just a day or two. I built the theme from scratch to better understand Zola’s theme system and keep it simple.

For hosting, I chose Netlify. It offers hosting and serverless backend services for web applications and static websites. Having dealt with servers, containers, and the never-ending task of security and system updates in the past, I appreciate how Netlify’s services handle all of this for me. Now, I can concentrate entirely on creating content. Since the site is static, Netlify efficiently serves it to users worldwide.

The entire site is published from a GitHub repository. The content gets processed and posted automatically whenever I push updates to GitHub. Just because it’s a static site doesn’t mean it lacks interactivity. It simply means the server doesn’t play a role in user interactions. The interactive features on this site, especially the online tools, are powered by client-side apps. Your web browser handles these tasks without needing to communicate with a server. Client-side JavaScript is primarily used to create interactive user interface features and display SVG graphics. Meanwhile, all the complex calculations are carried out using the CIE-JavaScript WebAssembly library.