Using asdf to Manage Your Programming Language Installations

One of the most annoying aspects of working on multiple projects as a developer is dealing with projects that use different versions of the same programming language. If you’re a NodeJS developer, you’ve probably used NVM to cope with this. In fact, most programming languages have their own solution to this problem. However, when you’re working across multiple projects that span multiple programming languagues, using a different version management tool for each language can be cumbersome....

October 20, 2023 · 3 min · Jeremie Bornais

Using GCP's Free VPS to Host Unlimited Full-Stack Websites

One of the most difficult steps of web development for beginners is the final step - actually getting your website online. There are hundreds of platforms out there that allow you to put your website online, and it can be difficult for a beginner to choose the right one for them. As you continue in your web development journey, you’ll most likely find a solution that fits and scales to your specific needs....

October 18, 2023 · 7 min · Jeremie Bornais

COMP-1400 Dev Environment Setup Guide

Setting up a development environment on Windows for coding in C can seem daunting for a new CS student. However, with the right tools and a step-by-step guide, the process can be straightforward. In this tutorial, we will walk through the process of setting up a development environment on Windows for coding in C. Step 1: Install WSL WSL (Windows Subsystem for Linux) is a compatibility layer that allows running Linux binaries natively on Windows....

May 12, 2023 · 4 min · Jeremie Bornais (with help from ChatGPT 😎)

Advice to HS Students Interested in Pursuing CS

In today’s digital age, computer science has become an increasingly essential field with numerous opportunities for career growth and innovation. High school students who are passionate about technology and interested in pursuing a degree in computer science can benefit greatly from proper preparation and guidance. In this blog post, I’ll provide advice and insights for high school students interested in pursuing a degree in computer science. By following these guidelines, you can set yourself up for success and achieve your goals in this exciting and dynamic field....

May 2, 2023 · 7 min · Jeremie Bornais (with help from ChatGPT 😎)

Introduction to Classes, Structs, and Objects in C++

If you’re familiar with programming in C++, you’ve likely heard of classes, structs, and objects. These concepts are at the core of object-oriented programming and are essential for creating efficient, reusable, and modular code. In this article, we’ll take a closer look at what classes, structs, and objects are, how they work, and provide examples to illustrate their use in C++. Classes and Structs A class is a user-defined data type that encapsulates data and functions together into a single entity....

March 21, 2023 · 11 min · Jeremie Bornais (with help from ChatGPT 😎)

Tiny Language Grammar (COMP-2140)

The following is a copy of the official definition of the Tiny programming language used in COMP-2140 at the University of Windsor, as first defined by Dr. Lu here. The Lexicon of the Tiny Language Keywords WRITE READ IF ELSE RETURN BEGIN END MAIN STRING INT REAL Single-character separators ; , ( ) Single-character operators + - * / Multi-character operators := == != Identifiers An identifier consists of a letter followed by any number of letters or digits The following are examples of identifiers: x, x2, xx2, x2x, End, END2 Note that End is an identifier while END is a keyword The following are not identifiers: F, WRITE, READ, ....

March 2, 2023 · 3 min · Jeremie Bornais

Transposing a 2D List in Python

Transposing a 2-dimensional list in Python is especially useful when reading data that’s formatted similar to this: X Y Z 1 2 9 2 5 6 3 6 5 ... Usually, you’ll parse the input line by line and end up with an array that looks something like this: >>> print(data) [[1, 2, 9], [2, 5, 6], [3, 6, 5], ...] This usually isn’t useful though, as we normally want the x, y, and z values grouped together....

February 8, 2023 · 1 min · Jeremie Bornais

Converting CRLF Line Endings to LF in Linux

Dealing with CRLF can be extremely annoying on Linux, as it can cause errors when attempting to execute scripts or compile files. It is especially problematic when working with text files that were created on Windows, as they are formatted differently than Linux. Fortunately, there are easy ways to fix this issue. Traditionally, this has been done by using the dos2unix command, which can quickly and easily convert Windows-formatted text files to Linux-formatted ones, allowing you to avoid the headache of dealing with CRLF....

February 7, 2023 · 2 min · Jeremie Bornais

Getting Started and Working With XV6

Introduction XV6 is a re-implementation of the Unix operating system that was developed as a teaching tool for MIT’s operating systems course. It is based on the original Unix operating system, which was developed in the 1970s at Bell Labs. XV6 is written in C and runs on x86-based computers. In the upcoming semester, I will be taking the Operating Systems course COMP-3300 at the University of Windsor, where we’ll be working with XV6....

December 27, 2022 · 4 min · Jeremie Bornais

COMP-2310 Formula Cheatsheet

Contained here are the main equivalences and inference rules for the COMP-2310 class at UWindsor. Equivalences E1. \( \alpha \land \sim \alpha \equiv false \) E2. \( \alpha \lor \sim \alpha \equiv true \) E3. \( \alpha \land \alpha \equiv \alpha \) E4. \( \alpha \lor \alpha \equiv \alpha \) E5. \( \alpha \land true \equiv \alpha \) E6. \( \alpha \lor false \equiv \alpha \) E7. \( \alpha \land false \equiv false \)...

September 4, 2022 · 3 min · Jeremie Bornais

How to Disable the Bell in Windows Terminal

If you’re someone who uses Windows Terminal (and if you’re not, you should be), you’ve probably encountered an annoying bell sound at one point or another. Whether it’s from hitting backspace too many times, or pressing tab when you shouldn’t have, this bell sound shows itself just often enough for it to be worth going through the steps to remove it. Luckily, it’s a very straightforward process to disable the sound....

August 14, 2022 · 1 min · Jeremie Bornais

How to Add a Directory to the PATH Variable in Bash

If you ever wanted to install something from source, or create handy scripts to use anywhere in bash, you’ll need to update the PATH variable. Simply put, the PATH variable is a string consisting of colon-separated (:) directories. Whenever you type a command into the terminal, all of these directories are checked for executables that match the command you typed. Now, let’s say we have a directory we created, ~/.bin/ which contains our homemade scripts/executables....

June 14, 2022 · 1 min · Jeremie Bornais

How to Enable Mouse Support in Tmux

While I wouldn’t necessarily recommend using the mouse too often when using Tmux, it’s likely that you may want it to be enabled at some point, so it may be better to enable it before you need it. The process is simple, you simply need a config file .tmux.conf in your home directory which contains the text set -g mouse on. You can do this automatically with the following command:...

June 13, 2022 · 1 min · Jeremie Bornais

Becoming a UWSA-Ratified Club

(note: this article is meant for UWindsor students. If you aren’t a UWindsor student you may want to skip this one) Just want the instructions? Head over to the instructions section. Why You Should Become a UWSA Ratified Club There are many reasons why you should consider becoming a UWSA ratified club. Whether you’re starting a new club or thinking of taking your existing club to the next level, becoming UWSA ratified may be incredibly useful!...

April 18, 2022 · 4 min · Jeremie Bornais

Instructions to Install Java Cup on Linux

Just want all the commands? Check them out here Or, run this one command to do everything: curl -o- https://blog.bornais.ca/scripts/javacup-install.sh | bash Prerequesite Software These instructions are for Linux machines. If you’re a Windows user, I recommend using the Windows Subsystem for Linux (WSL). The only prerequesite software required is Java. If you’re on a Debian-based system and don’t have Java installed, you can install it via sudo apt install default-jre and sudo apt install default-jdk....

April 17, 2022 · 2 min · Jeremie Bornais