Commit | Line | Data |
---|---|---|
7ba37647 JM |
1 | --- |
2 | title: "Move to Hugo" | |
3 | date: 2022-09-21T20:38:55+03:00 | |
006a830c | 4 | description: "based.quest is now using another static site generator, find out why the change and benefits of it in this writeup." |
7ba37647 JM |
5 | tags: ['site','news'] |
6 | type: blog | |
7 | draft: false | |
8 | --- | |
9 | ||
10 | ## First of all, why? Wasn't blogit perfect? | |
11 | ||
006a830c JM |
12 | No, no software ever is perfect. I will give credit where due, blogit is an amazing project that will |
13 | work wonders for kickstarting a new personal blog. However, my ambitions have outgrown *just* a personal | |
14 | blog. I strive to make this site for the community (while also maintaining my personal blog) and blogit | |
15 | was not going to scale well going forward. | |
16 | ||
17 | That being said, if you have something to share that you feel like is based (and won't get me in trouble), | |
c2ef7a6f | 18 | you can clone the new [web-hugo.git](https://git.based.quest/?p=web-hugo.git;a=summary) repository, create a patch with |
006a830c JM |
19 | your post and send it my way either via email or Matrix. |
20 | ||
21 | ## What's going to be different? | |
22 | ||
23 | Not too much for you, the reader, other than some neat improvements (such as tag and post pagination coming | |
24 | in the v0.2 of the Hugo site). The website will still be as light as ever for you to browse, I didn't spoil | |
25 | the website with JavaScript or some excess CSS "framework" - I will adhere to these principles that I set out | |
26 | when starting this website, I will reject all patches that try to add JavaScript or CSS frameworks. | |
27 | ||
28 | Behind the scenes, a lot has changed. First, the workflow has changed - back when using blogit, creating a | |
29 | page was as simple as using `touch articles/new-post.md`. Once you finished writing the article, you added it | |
30 | to the git repository and ran the makefile named "blogit" with target "build". For each build, it had to | |
31 | rebuild all the tag index pages, RSS feed, all the posts and the index page which is needlessly wasteful, | |
32 | especially given blogit's inefficiency (more on that later). | |
33 | ||
34 | With Hugo, I open one terminal window to run `hugo server` and another tab to run `hugo create posts/new-post.md`. | |
35 | That command creates a new file in the content/posts/ folder using a template (in Hugo world, "archetype"). | |
36 | I have set it so it automatically fills in the post date and title alongside a few other metadata values | |
37 | I use to hint Hugo into building what I want. Do note that you do not *need* Hugo to contribute, you can still | |
38 | do it the old way. Once the post is generated, I just edit the post with nano on the same terminal window. | |
39 | Once I'm done editing and have saved, instead of having to rebuild the entire website, the earlier ran | |
40 | server automatically rebuilds the changed components and live reloads the page in your browser. | |
41 | This is a lot more convenient than with blogit and saves a bunch of time when writing posts and wanting to | |
42 | preview them as you go. | |
43 | ||
44 | Secondly, Hugo is a lot more flexible in adding function to the static pages. With blogit I had to go through | |
45 | hours of painstakingly editing the Makefile to make it do what I want just barely and even then the result | |
46 | was not the best. Hugo gives you flexible templating capabilities from Go, you can familiarise yourself with | |
47 | it [here.](https://pkg.go.dev/html/template) So you can expect me to be able to add somewhat more advanced | |
48 | features to the site that before I previously had to reject over complexity concerns. | |
49 | ||
50 | All in all, Hugo makes more sense. It saves time and also performs much better. | |
51 | ||
52 | ## Was it difficult to bring content over? | |
53 | Not at all! Since blogit used markdown, the only annoyance was having to redefine preview image and the tags in header | |
54 | instead of the footer, otherwise posts ported over fine without any issues. As for how I kept the old URLs valid, I made | |
55 | use of [aliases in Hugo](https://gohugo.io/content-management/urls/#aliases). For example on my DeckPC Day-1 | |
56 | post, I simply added a singl eine to the header: `aliases: ["/deckpc-day-one-experience.html"]` | |
57 | ||
58 | ## How much faster is Hugo then? | |
59 | ||
60 | A lot. This is 15071 pages (of which 15k are just "sneedx" where x is 1 to 15000) generated in roughly | |
61 | the same amount of time as blogit generated my 14 posts on old source. | |
62 | ``` | |
63 | (deck@sneed web-hugo)$ time hugo | |
64 | Start building sites ... | |
65 | hugo v0.92.0+extended linux/amd64 BuildDate=unknown | |
66 | ||
67 | | EN | |
68 | -------------------+-------- | |
69 | Pages | 15071 | |
70 | Paginator pages | 0 | |
71 | Non-page files | 0 | |
72 | Static files | 8 | |
73 | Processed images | 0 | |
74 | Aliases | 14 | |
75 | Sitemaps | 1 | |
76 | Cleaned | 0 | |
77 | ||
78 | Total in 3658 ms | |
79 | ||
80 | real 0m3.741s | |
81 | user 0m6.876s | |
82 | sys 0m1.562s | |
83 | ``` | |
84 | ||
85 | Blogit on 14 posts: | |
86 | ``` | |
87 | real 0m3.554s | |
88 | user 0m2.481s | |
89 | sys 0m1.566s | |
90 | ``` | |
91 | ||
92 | The results speak for themselves. Current site as of writing this post, builds in ~70ms. | |
93 | ||
94 | ## What happens to the old site? | |
95 | ||
96 | By time you see this post, it's already gone and replaced with the Hugo site. | |
8b9362fc | 97 | Should you wish to still make a copy of it, I have moved its repository to [web-old.git](https://git.based.quest/?p=web-old.git;a=summary). |
006a830c JM |
98 | As it stands right now, that repository is archived and won't be accepting any more patches. |
99 | ||
100 | Thanks for reading, | |
101 | - Cernodile |