RSSAmplifier

Blog

Bennett Hardwick

Bennett's Journal

bennett.devRSS feed ↗21 posts

Latest posts

Software on my TV

A list of software and apps that I use on my TV.

Break Gemini 2.5 Flash by yelling "No Thinking!"

Google's Gemini AI model is great at answering your questions. But when you yell "No thinking!" as the first message, it starts to wig out.

Code Coverage in Rust

How to check code coverage in your Rust tests.

Run buggy X11 apps with Xwayland rootful mode

Buggy X11 apps can be a nightmare on Wayland. If there are some apps that you really need to use and you're desperate - it might be worth exploring Xwayland rootful mode.

Dump Rust Struct or Enum Memory Representation as Bytes

How to get the in-memory representation of Rust Structs or Enums using unsafe and raw pointers. It can be very instructive to look at how Rust lays out it's structs and what is going on under the hood.

Automatically Link Pipewire Nodes with Wireplumber

How to set up automatic routing of Pipewire Nodes and Ports using Wireplumber. Automatically connect a source to a sink instead of manually linking ports together with a patchbay.

Projects

A list of projects that I've worked on over the years.

Speculative Generality

The concept of making things too generic in the hope that it will make things easier later.

What I'm doing now

My now page - where I list all the things that I'm focused on at this point in my life. This page is constantly being updated.

Rust

Bennett's Journal

Rewriting Recoil from scratch

A brief exploration into how to build an "atom" based state management library like Recoil. I talk about how I'd build atoms, selectors as well as the hooks to use them from React. What's more - it's all in under 100 lines of code.

Downcast Trait Object

How to downcast a trait back to a concrete type in Rust

Building a JavaScript-free fast static site

How to build a blazingly fast static site without relying on Gatsby or JavaScript. I talk about common features of websites that make them slow and give tips on how to build a purely static site that meets all the Core Web Vitals.

Don't use boxed trait objects

Boxed trait objects are a great scape goat for solving hard borrow checker errors. But when writing a struct that needs to be reused, you're better off using something else for their interior structure.

Safe, efficient and fast native Node extensions with Rust

Everyone seems to be rewriting all their JavaScript in Rust. I look at how you can use Rust, Rayon and Neon to write user fast and parallel native Node extensions.

Vim for Webdev

I've been using the Vim emulator for Visual Studio Code for a really long time. In this one I finally look at how to make the switch to Neovim but keep all the perks of using a full fledged web development IDE.

Force push your branches

A slightly hyperbolic argument for why you should force push your branches. I look at how force pushing helps you to keep your git history readable and free of merge commits.

Advanced beginner Vim tricks

After you get past the beginner level in Vim it can be a bit hard to figure out what to learn next. To help, I explore some tips and tricks to help you overcome the valley of despair and become an advanced Vim user.

Learning Rust through the Advent of Code

An introduction to the Rust programming language through an Advent of Code 2018 challenge.

Leaving i3 and Xorg for Sway and Wayland

A brief journey into leaving behind Xorg and i3 for the newer Wayland compositor and Sway window manager. I talk about a few issues I ran into during the migration and how I (tried) to fix them.

Japanese Fonts on Arch Linux

How to get Japanese fonts working properly on Arch Linux. I look at how to configure the default system fonts as well as getting Japanese input working with Fcitx and Mozc.