About This Website

I manage this website using Gatsby, an open-source static site generator. Most of the content you can read on it has been written in Markdown, which Gatsby parses and converts to HTML that it inserts into React templates that I built to answer the needs of the different parts of the website. Images are processed by Gatsby's Image Plugin, which generates them in different formats and sizes and handles their loading for optimized performance. Every iteration of the website is pushed to GitHub, and then deployed to Netlify.

I created this website to have a space to share content on various subjects that are interesting to me, as well as on my personal projects and other things I do. It also allows me to stay hands-on with web development after switching careers from a software developer to a computer science teacher.

When I first planned how the website would be organized, I knew I needed it to be flexible enough to allow a somewhat eclectic collection of contents. I knew that to begin with, it would at least contain: a blog, a page for my personal software projects, pages about home automation, a place to share teaching material that I create, and a place to share my genealogy research (as I am also an amateur genealogist). I also knew that some of my content would be in English, other would be in French, and some would be available in both languages. Furthermore, I wanted all content to be visible to everyone viewing the website, whether they are viewing its French version or its English version. After multiple iterations over the years, I think I have come up with a user experience that makes sense to address these requirements:

  1. Bilingual pages have 2 URLs (with either -en or -fr at the end);
  2. Single-language pages only have one URL (without the language included in it);
  3. A user who first enters the website through its home page and does not have their preferred language set to French in their browser's settings gets redirected to the English version;
  4. A user who first enters the website through any other page gets their language set to the language of the content presented on that page;
  5. All pages are presented to everybody, with appropriate language warnings where needed (ex: "The content on this page is only available in French");
  6. The language toggle in the website's footer is only displayed on pages that are available in both languages;
  7. Once someone clicks the language toggle, their language gets switched for the whole website;
  8. The determined or chosen language persists in the browser's local storage to ensure consistency after a page reload and between visits.

My choice of whether specific content should be published in French or in English mostly depends on the targeted audience. For example, when I write a blog post about a technical subject targeted at technical people, I tend to write it in English, as to allow the content to be read by as many people as possible. On the other hand, when I write on something that is mostly relevant to people in Québec (the French-speaking province of Canada where I live), I write it in French. I sometimes choose to write in French even when the subject could be relevant to a broader audience, when I feel that much has already been written in English on the subject and I want to make it more accessible to French speakers. Obviously, my teaching material is in French too, as I teach in French. Some pages (like this one) I choose to make bilingual, when the content is short and static enough to not make it too painful to translate. In the latter case, the language I choose for the original version depends on the nature of the subject (if it's technical, I probably wrote it in English first).

Some subjects I choose to talk about on this website get a dedicated page or group of pages (such as home automation), while others only get a blog post. Dedicated pages and blog posts serve two different purposes for me. Dedicated pages are for content that I will update over time, and are sometimes bilingual, while a blog post is a one and done deal with a publish date, and is always written in a single language. My blog post pages are also more optimized for sharing on social media than my dedicated pages are.