Hi there 馃憢

Welcome to my blog! Here, I’ll write about things I find interesting, or give tutorials that hopefully someone will find useful :)

Using GNU Screen - A Powerful Terminal Multiplexer

GNU Screen is a versatile tool that enhances productivity for users who spend a lot of time working in the terminal. In this guide, we鈥檒l explore what GNU Screen is, its common use cases, reasons why you should use it, how to detach and reattach sessions, and some common options you can specify to tailor your experience. What is GNU Screen? GNU Screen is a terminal multiplexer that allows users to create multiple virtual terminals within a single physical terminal or SSH session....

February 7, 2024 路 3 min 路 ChatGPT 3.5

Build Your First Full-Stack App With Flask

Note: this is a blog version of the Flask Workshop I鈥檓 giving for WinHacks 2024. To view the slides and supporting materials as presented during WinHacks, check out the official GitHub repository here. Intro to Flask Presented by Jeremie Bornais Sample code available at github.com/jere-mie/flask-workshop/ Agenda About Flask Overview of the framework, what it is, why you should use it Installation Simple step by step installation instructions Your First App The structure of a Flask app, and getting it up and running Routes and Templates Adding new routes to the app, rendering templates, inheriting from templates Next Steps SQLAlchemy, User Authentication, and other ways to extend your app Interactive Demo We鈥檒l be making our own Flask app from scratch!...

February 3, 2024 路 3 min 路 Jeremie Bornais

How to Use Multiple GitHub Accounts on One PC

There are multiple ways to set up multiple GitHub accounts on one PC. For me, however, I prefer a solution that is more portable and requires less configuration. Thus, the solution I show here uses separate SSH keys for the two accounts, and the way you choose which account to use is by modifying the remote address of the GitHub repository. Only one small configuration file is required. Prerequesites Before you can begin, you鈥檒l need to ensure you have Git and OpenSSH installed (Git typically comes with OpenSSH)....

February 2, 2024 路 3 min 路 Jeremie Bornais

Turning My 8 Year Old Chromebook Into a Home Server

This article purposely doesn鈥檛 go into specifics or provide a step-by-step tutorial. I鈥檒l be writing a separate article on this later. Roughly 6 years ago I was in the market for a small and simple laptop to use when traveling and for school. At the time I had a gaming laptop (a purchase I still regret) which worked well for any gaming or heavy computing tasks I needed to perform. However, it was heavy, bulky, and would only last an hour or so on battery....

January 18, 2024 路 2 min 路 Jeremie Bornais

Self-Hosting Your Own ngrok Alternative with Reverse SSH Tunneling

Are you tired of relying on third-party services like ngrok to expose your local development environment to the internet? Good news! You can achieve similar functionality by setting up a reverse SSH tunnel. In this guide, we鈥檒l walk through the process of creating your own self-hosted tunneling solution. Prerequisites Local development environment with a service running on a specific port (e.g., http://localhost:8000). SSH access to a remote server with a publicly accessible IP address....

January 16, 2024 路 3 min 路 Jeremie Bornais (with help from ChatGPT 馃槑)

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鈥檙e a NodeJS developer, you鈥檝e probably used NVM to cope with this. In fact, most programming languages have their own solution to this problem. However, when you鈥檙e 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鈥檒l 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鈥檚 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鈥檒l 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鈥檙e familiar with programming in C++, you鈥檝e 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鈥檒l 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鈥檚 formatted similar to this: X Y Z 1 2 9 2 5 6 3 6 5 ... Usually, you鈥檒l 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鈥檛 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鈥檚 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鈥檒l 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