Hi there 馃憢

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

Automating Code Quality with Git Hooks

Git hooks are an excellent way to automate tasks and enforce coding standards directly at the source control level. By using Git hooks, you can ensure that your codebase remains clean, tested, and compliant with your team鈥檚 standards before any changes are committed or pushed. In this post, we鈥檒l focus on two specific hooks: pre-commit and pre-push. We鈥檒l also show how to use them to automatically run linters and tests before committing or pushing code....

February 6, 2025 路 5 min 路 Jeremie Bornais (with help from ChatGPT 馃槑)

Making Email Easier for Developers

Email is and always will be a pain to work with as a developer. What began as a simple and open communication channel has become a mess, thanks in part to spammers and scammers. Now, if you want to be able to reach your users, you almost always need to use some third party service to send your emails for you. This isn鈥檛 necessarily a bad thing. In produdction, the only difference is changing an environment variable to point to a third party SMTP server instead of your own....

February 2, 2025 路 5 min 路 Jeremie Bornais

Crash Course on ES Modules

JavaScript, traditionally known for its simplicity in web development, has evolved significantly. One of the most impactful enhancements is the introduction of ES Modules (ECMAScript Modules). ES Modules bring a standardized module system to JavaScript, making it easier to manage and organize code. This crash course will dive into what ES Modules are, how to use them, and why they are beneficial. What Are ES Modules? ES Modules are a standardized way to encapsulate and share code in JavaScript....

June 2, 2024 路 4 min 路 ChatGPT 4o 馃

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