Profile Picture

Matt Gibson

Ottawa, ON Software Developer at Goldak Technologies PhD Candidate at Carleton University

I specialize in high performance C++/CUDA in the field of computational science and engineering.

I’m currently finishing my PhD in Mechanical Engineering on the topic of welding arc simulation.

In my spare time I enjoy cooking and working on side projects such as the theme for this website.

My 2024 C++ workflow using Modern CMake and Vcpkg

Setting up and maintaining a C++ development environment has always been more difficult than for newer languages, especially once third party dependencies are involved, but in the last few years the ecosystem has improved to the point where it’s possible to create a project that can bootstrap a cross-platform development environment just by opening it with an editor that supports cmake or with a single command in the terminal.

Read More

VCPKG Binary Caching with Nuget

When using vcpkg on projects with many or large dependencies, a large portion of your total build time can be just from building these dependencies even though the resulting artifacts don’t change between compiles.

Read More

Simplify your C++ development environment using CMakePresets.json

CMake is a cross-platform utility that abstracts your C++ projects across a wide array of operating systems, compiler toolchains, and build tools. While supported by popular editors such as Visual Studio, VSCode, and CLion, there hasn’t been any way to specify build variants and toolchain options in a cross-editor fashion.

Read More

I Like Shared Libraries

As much as I understand why static linking everything is becoming the norm, I feel a little frustrated since I’ve found using shared libraries and dynamically loaded libraries to be incredible useful for managing complexity in large applications.

VcpkgManifest

I wrote a small powershell module to handle manipulating vcpkg manifest files. Check it out here: https://github.com/Chemiseblanc/VcpkgManifest

Responsive Desktop Design

I’ve noticed that one of the coincidental beneficiaries of responsive web design is tiled window layouts.

Confusing CMake Components

So after much confusion, I finally understand that the components related to install() statements are unrelated to the components of find_package(). The former being related to the –component flag of cmake –install and the later being closer related to export sets and (Package)Config.cmake

Ramen Isshen

Ramen Isshen

Queen St. location Stone bowl Tsukemen Ramen

The cookie factory

The cookie factory

CUDA Pains

Writing a cross-platform cuda program that can reliably work across minor version bumps really shouldn’t be so difficult

Interfaces and Base Classes

Interfaces and Base Classes

Recently, I was recommended a video on YouTube by ArjanCodes, detailing the differences between Protocols and Abstract Base Classes in Python.

While he tries to contrast the two, the problem is that for a dynamically typed language like Python the differences are superficial.

Here is my take on the comparison and how it transfers to a statically typed language like C++.

Read More
(More than) Two Dollar Stew

(More than) Two Dollar Stew

The budget doesn’t quite hold with Canadian food prices but the taste was still worth it.

Recipe Link

Cat Toys

Cat Toys

Our friends cat loves a certain toy rat but also keeps loosing them so we’ve made it a habit of buying extras when we see them.

Movie Night 10/29/21

Old by M. Night Shyamalan. Something that could only be expected by the director of Avatar (2010)

Costume Hunting Woes

No luck after three stores over five hours and I’ve learned my lesson about looking for a costume the week before Halloween until the next time I forget it.

Manufacturing Objects

Manufacturing Objects

In object oriented programming, factory patterns are common design patterns for object creation. Online I’ve found some explanations of them lacking and often confused with a different concept entirely.

In this post I’m going to try and clarify the differences between these patterns and concepts and the purposes behind them.

Read More

A Sad Necessity

With no ability to control the overscrolling behaviour on iOS I’ve had to alter latitude to scroll vertically when viewed on smaller screens.

Hello Netlify-CMS

A little difficult to setup for a github pages site but being able to tailor the editor to my custom content types is great.

Once the UI is more mobile friendly it’ll be just about a perfect solution for content management.

Edit: Found some css overrides for mobile

I should remove the need for titles

Other than styling fonts for the theme I should try and make adding titles optional for images and short posts.

Lac Meech

Lac Meech

Lac Meech in Gatineau Park. Taken on the discovery trail from P11.

Introducing Latitude

Hello, World!

I decided to give my long neglected homepage a makeover (ignoring my other long neglected websites) but instead of just picking something interesting from the Hugo theme list I decided to go all in and make a new theme from scratch.

Read More