Skip to content

Instantly share code, notes, and snippets.

View eamonburns's full-sized avatar

Eamon Burns eamonburns

View GitHub Profile
@eamonburns
eamonburns / Stack.zig
Created November 7, 2025 21:01
An attempt at creating a stack of variable scopes, but I can't figure out why it's leaking :/
//! Leaking hash map
//!
const std = @import("std");
const assert = std.debug.assert;
const print = std.debug.print;
const Allocator = std.mem.Allocator;
const Stack = @This();
@eamonburns
eamonburns / open_html.lua
Last active July 3, 2025 19:28
Simple function to convert a file opened in NeoVim to HTML, and then open it in your browser
--- SPDX-License-Identifier: MIT
---Convert buffer in window to HTML, and open it in default browser.
---`winid` and `opt` are passed directly to `tohtml.tohtml`
---@param winid? integer # Window to convert (defaults to current window).
---@param opt? vim.tohtml.opt # Optional parameters.
function OpenHtml(winid, opt)
-- Make sure `tohtml.tohtml` is available
if vim.fn.has("nvim-0.10.0") == 0 then
print("`tohtml` function is only available after NeoVim 0.10")
@eamonburns
eamonburns / auto_tmux.sh
Last active July 4, 2025 16:49
A simple bash snippet to add to the end of your `.bashrc` to automatically enter tmux when you login through SSH
# Automatically start tmux for ssh connections
# This will _unconditionally_ run tmux. If tmux may not be available (e.g. you use the same .bashrc
# for multiple systems), you can wrap it in an if statement:
#
# if command -v tmux >/dev/null 2>&1; then
# ...
# fi
# is interactive, is not in tmux, is in ssh
const std = @import("std");
// Although this function looks imperative, note that its job is to
// declaratively construct a build graph that will be executed by an external
// runner.
pub fn build(b: *std.Build) void {
const target = b.standardTargetOptions(.{});
const optimize = b.standardOptimizeOption(.{});
const translate_c = b.addTranslateC(.{
@eamonburns
eamonburns / install_fonts.ps1
Last active June 2, 2025 17:25
A simple PowerShell script to install all fonts of a certain type in a folder. Adapted from this Stack Overflow question: https://stackoverflow.com/questions/77829662/a-powershell-script-to-install-fonts-on-windows-11
param (
# Folder to search recursively for fonts to install
[string]$Folder = "$Env:USERPROFILE\Fonts\Ensure Installed",
# Array of glob patterns to match
[string[]]$Types = ("*.fon", "*.otf", "*.ttc", "*.ttf")
)
# Go through all folders in source and list all files
if (Test-Path -Path $Folder -Type Container) {
$fontList = Get-ChildItem `
@eamonburns
eamonburns / bash_prompt.sh
Last active July 10, 2025 16:31
A simple profile to define a custom Bash prompt. Should be put in `/etc/profile.d/` (to be applied to all users), or sourced from your personal `.bashrc` file.
# Exit if non-interactive
[[ -z "$PS1" ]] && return
_colors=false
if [[ -x /usr/bin/tput ]] && tput setaf 1 >&/dev/null; then
# tput is executable, and it doesn't fail when trying to set the foreground color
_colors=true
else
case "$TERM" in
@eamonburns
eamonburns / 01-basic-config.yaml
Last active December 10, 2023 07:15
basic server `netplan` config
# Make sure that the `/etc/netplan` folder is not accessable by users other than root
# e.g. `chmod 660 -R /etc/netplan`
network:
version: 2
renderer: NetworkManager # You can also use `networkd`
ethernets:
enp0s3: # It is possible that you will need to change this. Run `ip address show` to list your network interfaces
dhcp4: no
addresses: [192.168.0.100/24] # Set your own static IP(s) here (using CIDR notation)
@eamonburns
eamonburns / main.rs
Last active March 10, 2023 04:44
Basic tic tac toe program written in Rust
use std::io;
use ndarray::{self, arr2, Array2, Array1};
fn main() {
let cell_empty: char = '-';
let stdin = io::stdin();
let mut grid = arr2(&[
[cell_empty, cell_empty, cell_empty],
[cell_empty, cell_empty, cell_empty],