RSSAmplifier

Blog

Greg Bair

Recent content on Greg Bair

gregbair.blogRSS feed ↗10 posts

Latest posts

Personal infrastructure setup 2026

Personal infrastructure 2026 I have a small personal homelab consisting of my main workstation PC and two mini-PCs that run my homelab. Hardware These are the fastfetch outputs for the systems: A fastfetch image of my main desktop PC. It’s a PC that I built in 2020. Homer - my main homelab server. It’s a 2012 Mac mini. Contains most of my apps. Also is connected to my local backup…

New Blog

Welcome to the new home of my blog, gregbair.blog ! I haven’t written a post in checks notes… 4 years! I’ll tell you why, I hated the old theme, but didn’t understand Hugo enough to change it. Today I made the leap to learn how to change it. I also hope to make posts way more frequent, and add my adventures in creating a small homelab! So sit back, buckle up, and add me to…

My Homelab Backup Scheme

Overview I recently started working on a homelab. Nothing special so far, just an old 2012 Mac Mini and a couple of external drives. I’m looking to expand soon. It’s a basic host/VM setup, using libvirt to manage virtual machines. This is the basic layout: graph TD A['homer (Host)'] --> B['lisa (VM)'] A['homer (Host)'] --> C['gitea (VM)'] A['homer (Host)'] --> D['blog (VM)'] A['homer…

Parallel.ForEachAsync Deep Dive

This post is part of the 2021 C# Advent calendar . Check it out for more C# goodness! Intro This post contains a very technical dive. It is of intermediate complexity, and assumes a basic knowledge of how async/await works. .NET 6 introduced a small feature that’s important, but was probably overlooked - Parallel.ForEachAsync . This is a (IMO) pretty powerful and elegant implementation of…

Logging Ideas

I’ve been thinking lately about logging, specifically in C#/.NET. In fact, every few months, I joke around with others at work that I’m going to end up writing my own logging framework. There are a few things I want from a logging subsytem - Fast Highly configurable with sane defaults Well-tested Documented Extensible Benchmarked Runtime configurability Instrumented Best effort…

My experience with PICO-8

This weekend, I decided to try something different - programming a game in some esoteric environment. Since I don’t have a Commodore 64 , I went with the PICO-8 , and man did I have fun. It reminded me a lot of programming in BASIC back in the day, typing in games from magazines and books. Overview of features Built-in sprite and SFX editors Built-in editor for full retro experience Can edit…

Object Pool - Proxying calls

Note: This is the second post in a series about an object pooling pattern. You can follow along with code in this repo on Github . The repo will be steps ahead of this series, so don’t worry if there’s things in there I haven’t explained. Dynamic Proxy Why a Dynamic Proxy Proxy generator Wrapper Combining the wrapper and the interceptor Summary Dynamic Proxy For our proxy object,…

Object Pool - An Introduction

Note: This is the first post in a series about an object pooling pattern. You can follow along with code in this repo on Github . The repo will be steps ahead of this series, so don’t worry if there’s things in there I haven’t explained. Overview Real world examples Microsoft SqlClient Ldaptive Components of a pool Object Pool Object Proxy Object Factory Summary Overview An…

Games I've created

Here are some games I’ve created Blackjack on PICO-8

Projects

These are projects I’m currently working on: Glide A Kanban board management system built with ASP.NET Core 10.0. Features server-side Razor Components with HTMX for dynamic interactions, SQLite for data storage, and OAuth authentication (GitHub provider). Includes multi-board support, team member management, and a modern dark theme.