My personal website has gone through several iterations. Here I briefly describe the motivation and technologies behind each major version.
V1 - Jekyll ¶
Inspired by several friends, I began learning about web development in December 2018. Using Jekyll with the Moon theme, I built a personal website and hosted it on GitHub Pages. Though the website looked good, I hardly knew how it worked, so I explored further.
V2 - “Vanilla” ¶
To better understand basic web technologies, I built a new website from the ground up with vanilla HTML, CSS, and JavaScript. Eventually, I used Browserify to modularize my JavaScript code. I also used liquidjs to build a primitive static site generator similar to Jekyll. Overall, this project taught me about the wide variety of libraries and tools available for web developers.
V3 - React ¶
To gain more experience with high-level frameworks, I built the next version of my website with React. Though I enjoyed the flexibility React provided, I also found it too heavy for a personal website. React is tailored for large, interactive websites, but my personal website was small and static. Furthermore, using pure React on the client-side meant that JavaScript had to be executed before any content was rendered, so search engines had a harder time indexing my content. Some search engines, like Google, did execute the JavaScript and analyze the result, but others, like DuckDuckGo, did not, and so my website did not show up. Hence, I concluded that I should use a static site framework like Jekyll, while plugging in small React components if needed.
V4 - Jekyll (again) ¶
Thus, I came full circle and decided to use Jekyll once more, initially with the al-folio theme, and then with the TeXt theme – with numerous custom tweaks, of course. I also integrated React into this theme, allowing me to add interactive components when needed.
V5 - Eleventy ¶
Most recently, I have adopted the Eleventy framework. Eleventy fulfills a similar role as Jekyll, but since it is implemented in JavaScript, I can more easily integrate many of my favorite tools, including Tailwind CSS, markdown-it, KaTeX, and Preact.