How this blog is built

"How I blog" is a post required off of every modern self-respecting webmaster (remember that term? Back when we'd put

<marquee> tags on everything?)</marquee>

So here's mine.


This website is built using Franklin. It's a static site generator built in Julia, and absolutely brilliant for technical blogging. If you don't know static site generation, it's the future, man! The new thing. Same as the old thing. The idea is that modern websites are very bloated, and we need to simplify. Thus, instead of having the webpages be dynamically generated each time someone accesses them, which is how Wordpress works, we keep a bunch of pre-generated HTML pages on the website, ready to be accessed. Then, the pages are just dumb files doing nothing more than arranging elements on screen, making speeds a lot faster, and also meaning you can serve more people for the same bandwidth.

Franklin comes pre-equipped with the ability to highlight code. For instance, here is some C++ code:

#include <iostream>

int main() {
    std::cout << "Hello World!";
    return 0;

Then, it includes support for Latex equations: \(E = mc^2\)

Awesome! These things work straight out of the box, with no input from me. While syntax highlighting and latex equations are by no means unique to Franklin, they are really helpful due to being baked in (as opposed to, say, needing a plugin on Wordpress).

Once you really get deep into it, though, the possibilities are endless. You can even use it to run Julia code inside of your blog, and do things like live plotting of results etc.

Finally, more than anything, I've had such a curiosity about Julia for a long time. It seems like a very promising language. It's open source, quick, and designed from the ground up for Scientific Computing. Even more, they've got the incomparable Chris Rackauckas working on their Differential Equations package. Seriously, if you ever want to feel bad about yourself and all that you've achieved, take a look at his CV. He's even got a Youtube channel that's infinitely superior to mine, by virtue of the fact that it actually educates people.

Version Control

The blog is hosted on Gitlab Pages. Gitlab Pages are similar to Github Pages, in that your blog is basically a version controlled repository. That means that a) the sausage making is visible, and b) one can go back and look at how the blog was like on different days. It also gives me a straightforward venue for fixing typos or incorporating feedback.

Now, Gitlab pages and Github pages are very similar, but the Continuous Integration (CI) works more seamlessly for Franklin in Gitlab. What does this mean? Well, a pleb-tier implementation of blogging would be for me to generate the site locally on my machine after each post, and then directly upload the files to the repo on Gitlab as a finished product. Now, instead, I just write my posts, and push them to the repo, and the finishing touches of actually crafting a website out of my posts is performed on Gitlab's end. I could even choose to set fixed times at which my website automatically syncs with my local folder.

Also worth noting is that CERN uses Gitlab internally too, which gives me a psychological, if not practical, nudge towards using it.


The posts are all written in Markdown using Obsidian. Obsidian is great. It is purportedly a Personal Knowledge Management (PKM) tool, but it is also the best damn markdown editor for Windows bar none. PKM is all the rage right now, and for good reason, but I'll save it for another time, but the main idea there is that you can create your own wiki, with backlinks between different articles/snippets, and generate interesting graphs to develop patterns between the different places.

The reason I like it is first and foremost it's such a beautiful place to spend time. There are countless markdown editors available, all of them 'hackable', but I don't want to spend time fiddling with my tools. I want the default typeface to be very good looking, I want the line spacing to be spot on, I want left-alignment instead of justified, etc. I don't want to be burying into the CSS files writing my custom script etc. "People don't want quarter inch drills, they want quarter inch holes".

Even better, it's available on both Linux and Windows, covering all my use-cases. (I don't need it to work on Android. I'm not a big fan of including a smartphone for anything work related except maybe email and calendaring. I think of my smartphone as a radioactive wasteland, only to be touched when absolutely necessary.)

Other reasons, though, are the fact that the live preview takes care of everything. The "Edit" mode (on the left in the screenshot below) already includes basic syntax highlighting. But the Preview pane really can take care of everything. Live rendering Latex, syntax highlighting, highlighting quotation blocks, HTML sections, the whole lot.

And it's free!

So, in conclusion, I can wholeheartedly recommend this solution to engineers or other tech people who want to write technical blogs. There is a whole community of Julia Bloggers on, ahem, JuliaBloggers. Julia, in general, has a wonderful community eager for more people to join. Jump in!