add tags, descriptions to posts #38
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["vehicle"]
|
||||
tags = ["maintenance", "oil-change", "engine-coolant"]
|
||||
date = 2024-04-27T05:30:14Z
|
||||
description = ""
|
||||
description = "Changing the engine oil and filter at home while monitoring a persistent coolant leak and learning to work safely beneath the car."
|
||||
draft = false
|
||||
slug = "2024-04-maintenance"
|
||||
title = "🚗 Car Maintenance - Oil, Filter, Engine Coolant"
|
||||
@@ -101,4 +102,4 @@ I bought a pair of car ramps and wheel chocks. The reviews are great, no one see
|
||||
src="oil-change-old-oil.jpg"
|
||||
caption="Spent oil" >}}
|
||||
|
||||
Done.
|
||||
Done.
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["food"]
|
||||
tags = ["christmas", "appetizers", "pretzels"]
|
||||
date = 2024-12-20T10:30:00Z
|
||||
description = ""
|
||||
description = "Making travel-friendly Christmas Eve appetizers, including plain and cinnamon-sugar pretzel nuggets with beer cheese."
|
||||
draft = false
|
||||
slug = "2024-christmas-eve-appetizer-party"
|
||||
title = "🎄2024 Christmas Eve Party Appetizers"
|
||||
@@ -54,4 +55,4 @@ I read their site for one minute and already I see what they are trying to do an
|
||||
|
||||
## Ideas for next time
|
||||
- Quiche - Caramelized Onion, Bacon, Cheese
|
||||
- Christmas Focaccia
|
||||
- Christmas Focaccia
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["plants"]
|
||||
tags = ["gardening", "raised-bed", "herbs"]
|
||||
date = 2024-04-23T13:53:30Z
|
||||
description = ""
|
||||
description = "Building and planting a raised-bed vegetable garden alongside a collection of herbs for the 2024 growing season."
|
||||
draft = false
|
||||
slug = "2024-garden"
|
||||
title = "🥕 2024 Garden"
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["vehicle"]
|
||||
tags = ["maintenance", "oil-change", "engine-coolant"]
|
||||
date = 2025-03-01T08:36:00-06:00
|
||||
description = ""
|
||||
description = "Repeating a home oil change and checking the vehicle's ongoing coolant problem."
|
||||
draft = false
|
||||
slug = "2025-03-car-maintenance"
|
||||
title = "🚗 Oil Change & Engine Coolant"
|
||||
@@ -18,4 +19,4 @@ I did not do as well as I did the first time. I poured in too much oil, an amoun
|
||||
alt="Car engine oil dipstick indicator shows oil level is within acceptable levels"
|
||||
caption="Perfect dipstick" >}}
|
||||
|
||||
It was much easier this time, as can be expected. Done.
|
||||
It was much easier this time, as can be expected. Done.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["build","plants"]
|
||||
tags = ["plants"]
|
||||
date = 2025-08-08T08:00:00-05:00
|
||||
description = ""
|
||||
description = "Upsizing a houseplant cart with wire shelving, longer shop lights, and cleaner power and lighting arrangements."
|
||||
draft = false
|
||||
slug = "2025-08-08-plant-cart-upgrade"
|
||||
title = "🛒 Plant Cart Upgrade"
|
||||
@@ -32,4 +32,4 @@ The 2 ft shop light was meant for the old smaller plant cart. New lights are 4 f
|
||||
|
||||
{{< image src="images/plant-cart.JPG" >}}
|
||||
|
||||
✅ Done.
|
||||
✅ Done.
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["food"]
|
||||
tags = ["pizza", "bread", "meal-prep"]
|
||||
date = 2025-12-07T09:00:00Z
|
||||
description = ""
|
||||
description = "Batch par-baking cold-fermented pizza crusts for convenient future meals while putting winter oven heat to use."
|
||||
draft = false
|
||||
slug = "2025-12-07-mod-pizza-crust-par-bake"
|
||||
title = "🫓 Par-baking Pizza Crusts"
|
||||
@@ -33,4 +34,4 @@ The process is:
|
||||
|
||||
## Images
|
||||
|
||||
{{< gallery name="par-bake-pizza-dough-gallery" >}}
|
||||
{{< gallery name="par-bake-pizza-dough-gallery" >}}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["build"]
|
||||
tags = ["server-rack", "cable-management"]
|
||||
date = 2025-12-10T20:03:00-06:00
|
||||
description = ""
|
||||
description = "Extending a server rack, restoring its wheels, and adding tie bars and hook-and-loop straps for cleaner cable routing."
|
||||
draft = false
|
||||
slug = "2025-12-10-cable-management"
|
||||
title = "🔌 Cable Managing"
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["christmas"]
|
||||
tags = ["christmas", "decorations", "lighting"]
|
||||
date = 2025-10-28T16:00:00Z
|
||||
description = ""
|
||||
description = "Decorating for Christmas 2025 with lights, a tree, a wreath, and an exchange of gifts."
|
||||
draft = false
|
||||
slug = "2025-christmas"
|
||||
title = "🎄 Christmas 2025"
|
||||
@@ -60,4 +61,4 @@ Christmas ended up getting CANCELED. Too many illnesses. Now there is a pile of
|
||||
|
||||
{{< image
|
||||
src="images/baileys-cookies.JPG"
|
||||
caption="pistachio shortbread cookies, ginger molasses cookies, earl grey macarons" >}}
|
||||
caption="pistachio shortbread cookies, ginger molasses cookies, earl grey macarons" >}}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["plants"]
|
||||
tags = ["gardening", "vegetables", "herbs"]
|
||||
date = 2025-02-20T10:30:00-06:00
|
||||
description = ""
|
||||
description = "Following the 2025 garden from seeds and indoor seedlings through the herb and vegetable beds."
|
||||
draft = false
|
||||
slug = "2025-garden"
|
||||
title = "🍃 2025 Garden"
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["vehicle"]
|
||||
tags = ["maintenance", "repair", "engine-coolant"]
|
||||
date = 2026-01-06T16:00:00Z
|
||||
description = ""
|
||||
description = "Diagnosing a stuck-open engine thermostat and replacing the thermostat housing assembly to restore proper operating temperature."
|
||||
draft = false
|
||||
slug = "2026-01-06-replace-thermostat"
|
||||
title = "🌡️ Replacing Thermostat Housing Assembly"
|
||||
@@ -64,4 +65,4 @@ I need to drain the coolant system first, then I can replace the thermostat, and
|
||||
|
||||
I refill with new coolant and purge the coolant system of air.
|
||||
|
||||
✅ Done.
|
||||
✅ Done.
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["build"]
|
||||
tags = ["server-rack", "woodworking"]
|
||||
date = 2026-01-22T20:00:00Z
|
||||
description = ""
|
||||
description = "Cutting, staining, and finishing a plywood top to turn the open space above a server rack into a usable surface."
|
||||
draft = false
|
||||
slug = "2026-01-22-server-top"
|
||||
title = "🔝 Server Top"
|
||||
@@ -30,4 +31,4 @@ I picked out a nice-looking piece at Home Depot, and had someone cut it to size
|
||||
|
||||
I am not totally unhappy with result but I could have done better. The look is competitive with the default raw, dull yellow surface finish at least. 👍
|
||||
|
||||
✅ Done.
|
||||
✅ Done.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["software"]
|
||||
tags = ["freepbx","vm","bulkvs","sip","voip"]
|
||||
date = 2026-03-01T08:00:00Z
|
||||
description = ""
|
||||
description = "Building a low-cost personal VoIP phone system with FreePBX, a virtual PBX host, BulkVS, SIP, and softphone extensions."
|
||||
draft = false
|
||||
slug = "2026-03-01-voip"
|
||||
title = "☎️ VoIP"
|
||||
@@ -164,4 +164,4 @@ I also configure an outbound route that sends normal phone-number calls through
|
||||
|
||||
🎉 **It works!**
|
||||
|
||||
✅ Done.
|
||||
✅ Done.
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["plants"]
|
||||
tags = ["houseplants", "repotting", "clay-pots"]
|
||||
date = 2026-05-31T10:00:00-06:00
|
||||
description = ""
|
||||
description = "Repotting a ficus, calathea, money tree, and orchids into clay containers chosen for appearance, drainage, and pest control."
|
||||
draft = false
|
||||
slug = "2026-05-31-plant-repot"
|
||||
title = "🪴 Plant Repotting"
|
||||
@@ -63,4 +64,3 @@ These orchids were gifted to us and came packaged in very wet soggy media, which
|
||||
{{< image
|
||||
src="images/orchids-repot-complete.JPG"
|
||||
caption="orchids in new pots" >}}
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["build","software"]
|
||||
tags = ["ansible", "docker", "devops", "self-hosting"]
|
||||
date = 2026-07-07T10:00:00-05:00
|
||||
description = ""
|
||||
description = "Turning a growing collection of self-hosted services into reproducible home infrastructure managed with Git, Ansible, and Docker Compose."
|
||||
draft = false
|
||||
slug = "2026-07-07-home-ops"
|
||||
title = "🏗️ Home Ops Upgrades"
|
||||
@@ -132,4 +133,4 @@ This workflow requires some secrets:
|
||||
|
||||
Future changes will mostly be about making hidden state less hidden, which means moving important Docker volumes into explicit state paths. I may also revisit secrets management approach later if I want to experiment with using a secret manager e.g. HashiCorp Vault. It is still possible to go a layer deeper than the apps, into the true infrastructure layer with Terraform or OpenTofu. Lots of possibilities, but for now, it is good enough.
|
||||
|
||||
✅ Done.
|
||||
✅ Done.
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["plants"]
|
||||
tags = ["gardening", "herbs", "flowers"]
|
||||
date = 2026-07-09T10:00:00-05:00
|
||||
description = ""
|
||||
description = "A photo-rich tour of the 2026 herb garden, its flowers, and the effects of heavy rain on the season's plants."
|
||||
draft = false
|
||||
slug = "2026-07-09-herb-garden"
|
||||
title = "🌿 2026 Herb Garden"
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["food"]
|
||||
tags = ["pizza", "gallery"]
|
||||
date = 2024-10-16T20:27:44Z
|
||||
description = ""
|
||||
description = "A gallery collecting homemade American-style pizzas and their mighty-good crusts and toppings."
|
||||
draft = false
|
||||
slug = "american-pizza"
|
||||
title = "🍕 American Pizza"
|
||||
@@ -14,4 +15,3 @@ author = "nicholas"
|
||||
|
||||
## Photos of my Pizzas
|
||||
{{< gallery name="american-pizza-gallery" >}}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["food"]
|
||||
tags = ["reverse-engineer","arbys","sauce"]
|
||||
date = 2025-10-04T13:00:00-05:00
|
||||
description = ""
|
||||
description = "Reverse-engineering Arby's berry-free Bronco Berry Sauce from official ingredient and nutrition documents."
|
||||
draft = false
|
||||
slug = "arbys-bronco-berry-sauce"
|
||||
title = "🐎 Arby's Bronco Berry Sauce"
|
||||
@@ -56,4 +56,4 @@ Just look at the overlap. It's essence is a sweet and sour sauce:
|
||||
| Spice / Oleoresin Paprika | ✅ | ✅ |
|
||||
|
||||
|
||||
✅ Good enough.
|
||||
✅ Good enough.
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["travel"]
|
||||
tags = ["baltimore", "johns-hopkins", "photo-gallery"]
|
||||
date = 2025-06-07T12:09:00-06:00
|
||||
description = ""
|
||||
description = "Two weeks in Baltimore for Johns Hopkins coursework, with a stay at Residence Inn and walks around Fells Point."
|
||||
draft = false
|
||||
slug = "baltimore"
|
||||
title = "🏫 Baltimore, MD"
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["food"]
|
||||
tags = ["pie", "banana", "caramel"]
|
||||
date = 2025-03-01T06:27:00-06:00
|
||||
description = ""
|
||||
description = "Turning leftover pie crust and caramel into an improvised banoffee pie with bananas and cream."
|
||||
draft = false
|
||||
slug = "banoffee-pie"
|
||||
title = "🍌 Banoffee Pie"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["build"]
|
||||
tags = ["bicycle"]
|
||||
date = 2025-07-04T19:00:00-05:00
|
||||
description = ""
|
||||
description = "Replacing unreliable hydraulic brakes on a Trek FX 2 with new front and rear assemblies, then documenting the installation and bike specifications."
|
||||
draft = false
|
||||
slug = "bicycle-brakes-replacement"
|
||||
title = "🚲 Bicycle Brakes Replacement"
|
||||
@@ -131,4 +131,3 @@ My final solution involved inserting a metal coat hanger wire into the hydraulic
|
||||
- Weights listed are based on pre-production painted frames and may vary in final production.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["build"]
|
||||
tags = ["bicycle"]
|
||||
date = 2025-08-12T12:15:00-05:00
|
||||
description = ""
|
||||
description = "Building a handlebar-mounted wide-beam bicycle headlamp with a weather-resistant battery box, controls, and external power."
|
||||
draft = false
|
||||
slug = "bicycle-headlamp"
|
||||
title = "🔦 Bicycle Battery Box and Headlamp"
|
||||
@@ -165,4 +165,4 @@ All that remains is the test drive.
|
||||
|
||||
🎉 **It works!**
|
||||
|
||||
✅ Done.
|
||||
✅ Done.
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["build"]
|
||||
tags = ["bicycle", "diy", "washing"]
|
||||
date = 2024-10-16T20:27:44Z
|
||||
description = ""
|
||||
description = "Building a portable bicycle washer from a small keg, bike pump, hose, and spray nozzle for apartment-friendly cleaning."
|
||||
draft = false
|
||||
slug = "bicycle-pump-sprayer"
|
||||
title = "🚲 Bicycle Washing Contraption"
|
||||
@@ -82,4 +83,4 @@ The resulting contraption is a modular, robust, lightweight and small package. I
|
||||
src="images/full-assembly-packed.jpg"
|
||||
caption="Keg pump sprayer ready to go" >}}
|
||||
|
||||
Done.
|
||||
Done.
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["food"]
|
||||
tags = ["recipe", "meal-prep", "reverse-engineer", "taco-bell"]
|
||||
date = 2024-04-27T05:12:13Z
|
||||
description = ""
|
||||
description = "A scalable method for batch-making freezer burritos with precisely portioned tortillas, beans, beef, rice, and cheese."
|
||||
draft = false
|
||||
slug = "burrito"
|
||||
title = "🌯 Burritos in Bulk"
|
||||
@@ -61,4 +62,3 @@ Reheat from frozen takes ~45" @ 450 F convection. Wrapped tightly in aluminum fo
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["vehicle"]
|
||||
tags = ["maintenance", "repair", "brakes"]
|
||||
date = 2024-10-01T02:49:01Z
|
||||
description = ""
|
||||
description = "Planning a safe DIY replacement of the vehicle's brake pads and rotors while working with the wheels removed."
|
||||
draft = true
|
||||
slug = "brake-pad-replacement"
|
||||
title = "🔧 Brake Pad + Rotor Replacement"
|
||||
@@ -27,4 +28,4 @@ The process is simple and I have not bothered to outline it yet. That is all I k
|
||||
|
||||
## Replacing Brake Rotors
|
||||
|
||||
The process for removing and replacing rotors is not straightforward! Stay tuned.
|
||||
The process for removing and replacing rotors is not straightforward! Stay tuned.
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["travel"]
|
||||
tags = ["washington-dc", "new-york-city", "photo-gallery"]
|
||||
date = 2024-12-29T00:00:00Z
|
||||
description = ""
|
||||
description = "A photo journal from a trip to Washington, D.C. for a public health summit followed by a stop in New York City."
|
||||
draft = false
|
||||
slug = "dc-nyc"
|
||||
title = "🏛️ Washington, D.C & 🗽New York City, NY"
|
||||
@@ -13,4 +14,4 @@ We went to Washington, D.C. for the [Bloomberg Public Health Summit](https://ame
|
||||
|
||||
|
||||
## Photos
|
||||
{{< gallery name="dcnyc" >}}
|
||||
{{< gallery name="dcnyc" >}}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["food"]
|
||||
tags = ["reverse-engineer","dominos"]
|
||||
date = 2024-10-22T21:26:10Z
|
||||
description = ""
|
||||
description = "Documenting an attempt to reverse-engineer the garlic oil blend brushed onto Domino's pizza crust."
|
||||
draft = true
|
||||
slug = "dominos-garlic-oil-blend"
|
||||
title = "🧄 Domino's Garlic Oil Blend"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["food"]
|
||||
tags = ["reverse-engineer","dominos","pizza"]
|
||||
date = 2025-07-24T16:00:00-05:00
|
||||
description = ""
|
||||
description = "Reverse-engineering Domino's pizza sauce from official ingredient and nutrition data, tomato products, seasonings, oil, and water."
|
||||
draft = false
|
||||
slug = "dominos-pizza-sauce"
|
||||
title = "🍅 Domino's Pizza Sauce"
|
||||
@@ -258,4 +258,4 @@ I now have a complete formula:
|
||||
|dehydrated garlic|0.40|
|
||||
|**TOTAL**|**227**|
|
||||
|
||||
✅ Done.
|
||||
✅ Done.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["software"]
|
||||
tags = ["dns"]
|
||||
date = 2025-02-16T00:00:00Z
|
||||
description = ""
|
||||
description = "Deploying an AWS Route 53 and Lambda dynamic DNS solution that updates records whenever a home public IP address changes."
|
||||
draft = false
|
||||
slug = "dynamic-dns"
|
||||
title = "🌐 Dynamic DNS"
|
||||
@@ -68,4 +68,4 @@ www.uuard.com can be updated with the following command:
|
||||
|
||||
The only thing left to be done is to move the provided `dyndns.sh` script to my server and set up a `cron` job. I chose to run my script each week “At 00:00 on Sunday” (`0 0 * * 0`).
|
||||
|
||||
Done.
|
||||
Done.
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["food"]
|
||||
tags = ["cake", "earl-grey", "mixed-berries"]
|
||||
date = 2025-01-05T00:00:00Z
|
||||
description = ""
|
||||
description = "A photo gallery of Bailey's Earl Grey layer cake filled with mixed berries and decorated for sharing."
|
||||
draft = false
|
||||
slug = "earl-grey-cake"
|
||||
title = "👑 Earl Grey Cake with Mixed Berry Filling"
|
||||
@@ -11,4 +12,4 @@ author = "nicholas"
|
||||
Bailey made a cake, and I took some photos since her creations are always very beautiful. Nothing else going on here!
|
||||
|
||||
## Photos
|
||||
{{< gallery name="earl-grey-gallery" >}}
|
||||
{{< gallery name="earl-grey-gallery" >}}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["software"]
|
||||
tags = ["proxy","infrastructure","traefik","crowdsec"]
|
||||
date = 2025-08-06T08:00:00-05:00
|
||||
description = ""
|
||||
description = "Centralizing external service access on an edge VM with Traefik reverse proxying and CrowdSec intrusion prevention."
|
||||
draft = false
|
||||
slug = "edge-reverse-proxy"
|
||||
title = "🧭 Centralized, Secure Reverse Proxy at the edge"
|
||||
@@ -159,4 +159,4 @@ After some time, I go check whether CrowdSec has banned any bots.
|
||||
```
|
||||
🎉 It works! The table generated by `cscli` shows a few IP addresses have been banned.
|
||||
|
||||
✅ Done.
|
||||
✅ Done.
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["food"]
|
||||
tags = ["recipe", "egg-replacer", "food-science"]
|
||||
date = 2025-02-28T10:46:00-06:00
|
||||
description = ""
|
||||
description = "Formulating a lower-cost powdered egg substitute by comparing commercial products and balancing starch, fat, moisture, and leavening."
|
||||
draft = false
|
||||
slug = "egg-replacer"
|
||||
title = "🥚 Egg Replacer"
|
||||
@@ -94,4 +95,4 @@ Thus I arrive at my final formula, ready to test in a cake recipe.
|
||||
| Baking Powder | 1.50% | 0.4875 |
|
||||
| **TOTAL** | 100.00% | 50 |
|
||||
|
||||
Done.
|
||||
Done.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["software"]
|
||||
tags = ["automation"]
|
||||
date = 2024-06-18T02:47:45Z
|
||||
description = ""
|
||||
description = "Configuring Postfix to relay cron-job success and failure alerts through Amazon SES, with reusable shell email formatting."
|
||||
draft = false
|
||||
slug = "email-alerts"
|
||||
title = "📧 Email Alerts with Postfix & Amazon SES"
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["travel"]
|
||||
tags = ["estes-park", "colorado", "photo-gallery"]
|
||||
date = 2023-01-02T12:00:00-06:00
|
||||
description = ""
|
||||
description = "Photos and video from a winter visit to Estes Park, Colorado."
|
||||
draft = false
|
||||
slug = "estes-park"
|
||||
title = "⛰️ Estes Park, CO"
|
||||
@@ -19,4 +20,4 @@ author = "nicholas"
|
||||
|
||||
## Photo Gallery
|
||||
|
||||
{{< gallery name="estes-park-gallery" >}}
|
||||
{{< gallery name="estes-park-gallery" >}}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["software"]
|
||||
tags = ["mssql","c#"]
|
||||
date = 2024-11-04T05:22:54Z
|
||||
description = ""
|
||||
description = "Extracting and transforming USDA FoodData Central JSON into Microsoft SQL Server for a C# recipe and nutrition application."
|
||||
draft = false
|
||||
slug = "fooddata-central-ingest"
|
||||
title = "📑 Extracting & Transforming USDA's FoodData Central Data"
|
||||
@@ -204,4 +204,4 @@ using (var connection = new SqlConnection(connectionString))
|
||||
src="images/json_db_ingest.exe.png"
|
||||
caption="Ingest Console App" >}}
|
||||
|
||||
Done.
|
||||
Done.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["software"]
|
||||
tags = ["C#","MSSQL","blazor"]
|
||||
date = 2024-11-02T18:24:31Z
|
||||
description = ""
|
||||
description = "Adding ASP.NET Core Identity and a multi-user data model to a Blazor recipe application backed by SQL Server."
|
||||
draft = false
|
||||
slug = "formulation-web-app-I"
|
||||
title = "🔒 Adding User Account support to Web App"
|
||||
@@ -93,4 +93,3 @@ Table schema will be defined mostly by Microsoft Identity API.
|
||||
caption="The Whole Thang" >}}
|
||||
|
||||
Done.
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["software"]
|
||||
tags = ["C#","MSSQL","blazor"]
|
||||
date = 2025-04-15T12:45:00-05:00
|
||||
description = ""
|
||||
description = "Building Formulation, a weight-based Blazor nutrition calculator for scaling recipes and calculating nutrient totals."
|
||||
draft = false
|
||||
slug = "formulation-web-app-II"
|
||||
title = "🥣 Formulation - Nutrition Calculator"
|
||||
@@ -107,4 +107,4 @@ The kitchen area is where one can, for example, find out how much protein is in
|
||||
|
||||
---
|
||||
|
||||
That is pretty much all. As with any software project, there are endless things still to be improved, corrected, or added, but I accomplished what I wanted with this project so I am allowing myself to call it "finished".
|
||||
That is pretty much all. As with any software project, there are endless things still to be improved, corrected, or added, but I accomplished what I wanted with this project so I am allowing myself to call it "finished".
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["software"]
|
||||
tags = ["automation","docker","git","devops","kubernetes"]
|
||||
date = 2025-05-08T12:50:00-05:00
|
||||
description = ""
|
||||
description = "Replacing Jenkins deployment jobs with a self-hosted Gitea Actions runner that builds containers and deploys them to Kubernetes."
|
||||
draft = false
|
||||
slug = "gitea-actions-kubernetes"
|
||||
title = "▶️ Gitea Actions & Kubernetes"
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["build","plants"]
|
||||
tags = ["houseplants", "grow-lights", "lighting"]
|
||||
date = 2025-01-01T16:30:00Z
|
||||
description = ""
|
||||
description = "Building winter grow lights for houseplants from LED bulbs, EMT conduit, electrical fittings, and a later grow-panel upgrade."
|
||||
draft = false
|
||||
slug = "grow-lights"
|
||||
title = "💡 Houseplant Grow Lights"
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["food"]
|
||||
tags = ["recipe", "dessert", "chocolate"]
|
||||
date = 2025-02-22T11:51:00-06:00
|
||||
description = ""
|
||||
description = "Converting a hot fudge recipe to weight measurements and testing economical, shelf-stable substitutions for dairy ingredients."
|
||||
draft = false
|
||||
slug = "hot-fudge"
|
||||
title = "🍦 Hot Fudge"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["build"]
|
||||
tags = ["electronics","hoverboard"]
|
||||
date = 2025-08-10T11:00:00-05:00
|
||||
description = ""
|
||||
description = "Diagnosing a failed hoverboard battery, salvaging reusable electronics, and installing a compatible replacement pack."
|
||||
draft = false
|
||||
slug = "hoverboard-battery-salvage-replacement"
|
||||
title = "🪫 Hoverboard Battery Salvage, Replacement"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["software"]
|
||||
tags = ["hypervisor","virtualization"]
|
||||
date = 2025-06-27T19:00:00-05:00
|
||||
description = ""
|
||||
description = "Separating storage from application services across dedicated machines and redesigning the home network's virtualized infrastructure."
|
||||
draft = false
|
||||
slug = "infrastructure-overhaul"
|
||||
title = "🔨 Infrastructure Overhaul"
|
||||
@@ -242,4 +242,4 @@ graph TD
|
||||
- Host VMs in Hyper-V hypervisor on Windows OS
|
||||
- Centralize persistent container storage in Kubernetes and Docker using NAS server NFS/SMB shares
|
||||
|
||||
✅ Done.
|
||||
✅ Done.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["software"]
|
||||
tags = ["docker"]
|
||||
date = 2024-04-18T17:00:33Z
|
||||
description = ""
|
||||
description = "Capturing periodic frames from a Frigate IP-camera stream and assembling them into configurable time-lapses with FFmpeg."
|
||||
draft = false
|
||||
slug = "ipcam-timelapse"
|
||||
title = "📹 IP Camera Time-lapse in Frigate"
|
||||
@@ -201,4 +201,4 @@ ffmpeg -framerate 60 -pattern_type glob -i '*.png' -c:v libx265 -crf 28 -preset
|
||||
width="100%" >}}
|
||||
|
||||
|
||||
ReoLink RLC-810WA
|
||||
ReoLink RLC-810WA
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["software"]
|
||||
tags = ["automation","docker","jenkins","nginx"]
|
||||
date = 2025-04-06T10:18:00-06:00
|
||||
description = ""
|
||||
description = "Automating Hugo blog builds and versioned Nginx deployments with Git submodules, Docker, and a custom Jenkins agent."
|
||||
draft = false
|
||||
slug = "jenkins-deploy-web-log"
|
||||
title = "🚀 Hugo Site Deployment - Automating and Version Tracking"
|
||||
@@ -316,4 +316,4 @@ Jenkins successfully deployed the Hugo site.
|
||||
src="images/jenkins-build-hugo-success.jpg"
|
||||
caption="Successful hugo site deployment" >}}
|
||||
|
||||
Done.
|
||||
Done.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["software"]
|
||||
tags = ["automation","docker","jenkins","nginx"]
|
||||
date = 2025-03-30T18:00:00-06:00
|
||||
description = ""
|
||||
description = "Creating a Jenkins pipeline that builds and deploys a personal website into an Nginx container from a self-hosted Git repository."
|
||||
draft = false
|
||||
slug = "jenkins-deploy-website"
|
||||
title = "🤵🏻 Automating Personal Website Deployment"
|
||||
@@ -188,4 +188,4 @@ exit 0
|
||||
|
||||
When Jenkins receives the HTTP POST request at `https://build.uuard.com/job/personal-website-pipeline/build` with valid authentication it will initiate the build.
|
||||
|
||||
Done.
|
||||
Done.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["software"]
|
||||
tags = ["automation","docker","jenkins"]
|
||||
date = 2024-10-31T15:49:57Z
|
||||
description = ""
|
||||
description = "Running Jenkins in Docker and connecting it to Gitea as the foundation for automated development build and deployment pipelines."
|
||||
draft = false
|
||||
slug = "jenkins"
|
||||
title = "🐋 Configuring Development Pipeline with Jenkins & Docker"
|
||||
@@ -195,4 +195,4 @@ This starts the container. The video below shows the process of starting the age
|
||||
width="100%"
|
||||
>}}
|
||||
|
||||
Done! This will give me a foundation on which to build out a development pipeline for any number of my software projects.
|
||||
Done! This will give me a foundation on which to build out a development pipeline for any number of my software projects.
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["travel"]
|
||||
tags = ["key-west", "florida", "honeymoon"]
|
||||
date = 2025-01-13T20:27:44Z
|
||||
description = ""
|
||||
description = "A brief photo journal from a January 2025 honeymoon in Key West, Florida."
|
||||
draft = false
|
||||
slug = "key-west"
|
||||
title = "🏝️ Key West, FL"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["software"]
|
||||
tags = ["llm","docker"]
|
||||
date = 2025-03-12T10:54:00-06:00
|
||||
description = ""
|
||||
description = "Deploying a private local language-model stack with an NVIDIA GPU, Ollama, Open WebUI, and Docker Compose."
|
||||
draft = false
|
||||
slug = "local-llm-basic-setup"
|
||||
title = "🦙 Self-hosting LLM with Ollama & OpenWebUI"
|
||||
@@ -111,4 +111,4 @@ This screenshot shows that the model is indeed using my GPU to do all manner of
|
||||
>}}
|
||||
|
||||
## Potential Uses
|
||||
I can integrate locally-hosted LLM APIs with new software projects. Who knows.
|
||||
I can integrate locally-hosted LLM APIs with new software projects. Who knows.
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["food"]
|
||||
tags = ["recipe", "food-science", "gyro", "cheesesteak"]
|
||||
date = 2024-07-13T18:16:10Z
|
||||
description = ""
|
||||
description = "Experimenting with emulsified beef-and-lamb mixtures as a repeatable base for gyro meat and cheesesteaks."
|
||||
draft = false
|
||||
slug = "meat-emulsions"
|
||||
title = "🥩 Meat Emulsions - Gyros & Cheesesteaks"
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["food"]
|
||||
tags = ["muffins", "mixed-berries", "egg-replacer"]
|
||||
date = 2025-02-22T13:40:00-06:00
|
||||
description = ""
|
||||
description = "Making mixed-berry muffins with a quick baking-powder, water, and oil substitute for one of the required eggs."
|
||||
draft = false
|
||||
slug = "mixed-berry-muffins"
|
||||
title = "🫐 Mixed Berry Muffins"
|
||||
@@ -15,4 +16,3 @@ Bailey made muffins. We only have one egg left. The recipe calls for two eggs, o
|
||||
width="100%" >}}
|
||||
|
||||
{{< gallery name="mixed-berry-muffin-gallery">}}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["food"]
|
||||
tags = ["reverse-engineer","MOD"]
|
||||
date = 2024-07-19T15:27:08Z
|
||||
description = ""
|
||||
description = "Reverse-engineering MOD Pizza's original thin crust through nutrition data, ingredient analysis, spreadsheet calculations, and baking trials."
|
||||
draft = false
|
||||
slug = "mod-pizza-crust"
|
||||
title = "🍕 MOD Pizza Crust"
|
||||
@@ -110,4 +110,4 @@ I have succeeded in producing a crispy, light, thin and strong crust.
|
||||
## Variation
|
||||
To make an even crispier crust, I dried out the bottom of the crust. The dough is rolled out, inverted, dried overnight, flipped, topped, and finally baked.
|
||||
|
||||
Done.
|
||||
Done.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["software"]
|
||||
tags = ["mssql"]
|
||||
date = 2024-10-01T14:20:28Z
|
||||
description = ""
|
||||
description = "Moving a Blazor recipe application from an in-memory store to containerized SQL Server with Entity Framework, users, and protected connection strings."
|
||||
draft = false
|
||||
slug = "mssql-db-config"
|
||||
title = "💽 Configuring Microsoft SQL Server Database"
|
||||
@@ -173,4 +173,4 @@ Finally I can reference this connection string in Program.cs to connect to the S
|
||||
builder.Services.AddDbContext(opt => opt.UseSqlServer(builder.Configuration.GetConnectionString("Formulation")));
|
||||
```
|
||||
|
||||
Done.
|
||||
Done.
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["build"]
|
||||
tags = ["nas", "server", "zfs"]
|
||||
date = 2021-09-09T14:53:39Z
|
||||
description = ""
|
||||
description = "Planning and assembling a network-attached storage server with shucked drives, disk testing, and a ZFS filesystem."
|
||||
draft = false
|
||||
slug = "server-build"
|
||||
title = "💾 Server Build"
|
||||
@@ -154,4 +155,4 @@ sudo service smbd restart
|
||||
|
||||
I should be able to access this share using the credentials of valid user which was defined in `/etc/samba/smb.conf`.
|
||||
|
||||
Done.
|
||||
Done.
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["build"]
|
||||
tags = ["nas", "server", "rackmount"]
|
||||
date = 2024-11-15T17:43:02Z
|
||||
description = ""
|
||||
description = "Refreshing a NAS with more memory, a new operating-system disk, and a move into a Rosewill rack-mount chassis."
|
||||
draft = false
|
||||
slug = "server-build-refresh"
|
||||
title = "💾 Server Build Refresh"
|
||||
@@ -23,4 +24,4 @@ My NAS server only has 16 GB RAM. I upgrade this to 32 GB. upgrade the OS disk a
|
||||
## Upgrading
|
||||
In a previous log entry I documented the build process of my storage server. At the time its only intended purpose was managing my file storage and hosting a media streaming service. Its purpose has expanded to a degree that it begs for additional RAM. I will double the RAM from 16GB to 32 GB, reaching the limitations of the motherboard. I will replace the WD Blue SA510 SSD storage drive, (which will replace a very slow mechanical drive in a laptop), with a Samsung 970 EVO Plus. Old and new components will be installed in a new chassis Rosewill RSV-R4000U and rack-mounted alongside the other computer.
|
||||
|
||||
{{< gallery name="nas-build-gallery" >}}
|
||||
{{< gallery name="nas-build-gallery" >}}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["travel"]
|
||||
tags = ["pacific-northwest", "photo-gallery", "road-trip"]
|
||||
date = 2023-05-31T12:00:00-05:00
|
||||
description = ""
|
||||
description = "A photo gallery from a May 2023 trip through the Pacific Northwest."
|
||||
draft = false
|
||||
slug = "pacific-northwest"
|
||||
title = "🌲 Pacific Northwest"
|
||||
@@ -23,4 +24,3 @@ Bailey and I went to PNW coast for a few days.
|
||||
|
||||
## Photo Gallery
|
||||
{{< gallery name="pnw-gallery" >}}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["food"]
|
||||
tags = ["reverse-engineer","papa johns"]
|
||||
date = 2024-07-15T22:56:46Z
|
||||
description = ""
|
||||
description = "Reverse-engineering Papa John's garlic dipping sauce from its nutrition facts, ingredient statement, shortening, garlic, and soy lecithin."
|
||||
draft = false
|
||||
slug = "papa-johns-garlic-butter"
|
||||
title = "🧈 Papa John's Garlic Butter Dipping Sauce"
|
||||
@@ -91,4 +91,4 @@ As part of my lazy process, I chose to add garlic powder first because it can al
|
||||
### Soy Lecithin
|
||||
Lecithin is an emulsifier – it will bind the water to the fat and create a smooth creamy sauce. To continue the process, I add soy lecithin in increments of ~0.1% by weight until the blended mixture resembled the garlic sauce at the same temperature, which resulted in eventually adding a total of 0.5% by weight of the total weight of the mixture. The formulation is complete:
|
||||
|
||||
Done.
|
||||
Done.
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["build"]
|
||||
tags = ["pc", "computer", "hardware"]
|
||||
date = 2024-11-15T17:43:08Z
|
||||
description = ""
|
||||
description = "Selecting components and assembling a desktop PC for faster software development, photo editing, and video work."
|
||||
draft = false
|
||||
slug = "pc-build"
|
||||
title = "🖥️ PC Build"
|
||||
@@ -56,4 +57,4 @@ The process of assembly was straightforward. I simply followed the instructions
|
||||
{{< image
|
||||
src="images/pc-assembled-drawer.jpg"
|
||||
caption="Computer in a drawer" >}}
|
||||
Done.
|
||||
Done.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["software"]
|
||||
tags = ["photogrammetry"]
|
||||
date = 2025-07-02T20:00:00-05:00
|
||||
description = ""
|
||||
description = "Digitally preserving a Tongan wood carving by photographing it from many angles and processing the images into a 3D model."
|
||||
draft = false
|
||||
slug = "photogrammetry"
|
||||
title = "🗿 Photogrammetry - Tongan Wood Carving"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["food"]
|
||||
tags = ["cookie"]
|
||||
date = 2025-03-21T10:28:00-06:00
|
||||
description = ""
|
||||
description = "A simple recipe for rich pistachio shortbread cookies made by Bailey."
|
||||
draft = false
|
||||
slug = "pistachio-shortbread-cookie"
|
||||
title = "🍪 Pistachio Shortbread Cookie"
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["food"]
|
||||
tags = ["recipe", "bread", "pita"]
|
||||
date = 2024-04-30T17:17:58Z
|
||||
description = ""
|
||||
description = "Making sturdy, soft pocket bread for stuffing, frying as chalupa shells, and freezing for later meals."
|
||||
draft = false
|
||||
slug = "pita"
|
||||
title = "🥙 Pita"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["food"]
|
||||
tags = ["reverse-engineer","pretzel"]
|
||||
date = 2024-12-26T12:00:00Z
|
||||
description = ""
|
||||
description = "Reverse-engineering Auntie Anne's original pretzel nuggets with nutrition calculations, a formulated dough, and a lye bath."
|
||||
draft = false
|
||||
slug = "auntie-annes-pretzel-nuggets"
|
||||
title = "🥨 Auntie Anne's Pretzel Nuggets"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["software"]
|
||||
tags = ["virtualization"]
|
||||
date = 2024-11-10T15:55:42Z
|
||||
description = ""
|
||||
description = "Migrating a physical Debian server into Proxmox so it can run alongside a virtualized Windows Server domain controller."
|
||||
draft = false
|
||||
slug = "proxmox-migration"
|
||||
title = "🤖 Server Virtualization Migration"
|
||||
@@ -75,4 +75,4 @@ Now I can use clonezilla to restore my OS to a virtual disk.
|
||||
### Expand OS Root Partition
|
||||
I shrank it to 40 GB, now i need to fill up the virtual disk. I attach the gparted disk to the VM and boot to it. This time I expand the partition to occupy the remaining used portion of the virtual disk.
|
||||
|
||||
Done.
|
||||
Done.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["food"]
|
||||
tags = ["reverse-engineer","chipotle"]
|
||||
date = 2024-12-06T15:36:00Z
|
||||
description = ""
|
||||
description = "Formulating a thin, freezer-friendly imitation of Chipotle queso blanco using nutrition data, cheese, sodium citrate, dairy, and seasonings."
|
||||
draft = false
|
||||
slug = "queso-blanco"
|
||||
title = "🧀 Chipotle Queso Blanco"
|
||||
@@ -74,4 +74,3 @@ The formulation will come down to several factors that I care about.
|
||||
1. Consistency -- This will be about how much water is included. Chipotle has 480 calories for every 8 oz. portion of Queso Blanco. Basically if I begin with a weight of 8 oz and subtract the weight of cheese that amounts to 480 calories, and add the remaining weight in water, I should have a similar consistency after thickening.
|
||||
|
||||
The game I need to play here is to fiddle with the proportions of cheese, sour cream, milk, and water until I achieve a macronutrient makeup similar to Chipotle's. In other words, the constraints are basically the nutrition table above. There is a small enough range of possible values of these proportions that I can get pretty close without resorting to linear algebra. The mixture must thin and therefore contain a lot of water.
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["software"]
|
||||
tags = ["react","typescript","javascript"]
|
||||
date = 2025-04-12T00:00:00-06:00
|
||||
description = ""
|
||||
description = "Reviving an old React storage application by replacing React Scripts with Vite, updating packages, and migrating JavaScript to TypeScript."
|
||||
draft = false
|
||||
slug = "react-app-resurrection"
|
||||
title = "⚛️ React App Resurrection"
|
||||
@@ -236,4 +236,4 @@ It works. The app source is hosted on my [git repository](https://git.uuard.com/
|
||||
|
||||
{{< video
|
||||
src="videos/demo-react-app.mp4"
|
||||
width="100%" >}}
|
||||
width="100%" >}}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["food"]
|
||||
tags = ["recipe","reverse-engineer","taco bell"]
|
||||
date = 2025-04-14T20:40:00-05:00
|
||||
description = ""
|
||||
description = "Formulating seasoned refried beans inspired by Taco Bell, with a repeatable process and direct comparison to the original product."
|
||||
draft = false
|
||||
slug = "refried-beans"
|
||||
title = "🫘 Taco Bell Seasoned Refried Beans"
|
||||
@@ -136,4 +136,4 @@ Versus Taco Bell's *Seasoned Refried Beans*:
|
||||
- $\approx 1.18$% salt
|
||||
- $\approx 4$% fat.
|
||||
|
||||
Pretty close.
|
||||
Pretty close.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["software"]
|
||||
tags = ["router","opnsense"]
|
||||
date = 2025-08-27T18:30:00-05:00
|
||||
description = ""
|
||||
description = "Replacing a consumer router with virtualized OPNsense, a managed switch, VLANs, and a router-on-a-stick network design."
|
||||
draft = false
|
||||
slug = "router-build"
|
||||
title = "🔀 Router Build"
|
||||
@@ -204,4 +204,4 @@ This nearly eliminates unwanted traffic from annoying and/or malicious bots scan
|
||||
>}}
|
||||
|
||||
|
||||
✅ Done.
|
||||
✅ Done.
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
+++
|
||||
categories = ["build"]
|
||||
tags = []
|
||||
tags = ["organization", "labels", "spices"]
|
||||
date = 2025-07-23T17:00:00-05:00
|
||||
description = ""
|
||||
description = "Designing and applying durable, readable labels to stackable deli containers for a more organized seasoning collection."
|
||||
draft = false
|
||||
slug = "seasoning-labels"
|
||||
title = "🧂 Seasoning Labels"
|
||||
@@ -132,4 +132,4 @@ Basically:
|
||||
|
||||
Rather than copying, pasting, and printing each individual label one at a time, which would take an eternity and waste a lot of tape with on account of the generous margins enforced by the printer, I add three whitespace characters between each seasoning label, and print one long string with as many characters as the printer will allow at once. This is another niggling limitation of the label printer: I can only print ~25 inches of tape at a time, so I will have to print the bulk labels in a few batches. Later, I will manually trim the mega-labels into individual labels with scissors (The label printer includes its own *manual* label slicer, so this is no less work).
|
||||
|
||||
This all worked well enough for my purposes, and I have no need of a more sophisticated label printer.
|
||||
This all worked well enough for my purposes, and I have no need of a more sophisticated label printer.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["software"]
|
||||
tags = ["automation","grafana","influxdb","telegraf"]
|
||||
date = 2025-05-16T08:00:00-05:00
|
||||
description = ""
|
||||
description = "Building a web-based server monitoring dashboard with Telegraf metrics, InfluxDB storage, and Grafana visualizations."
|
||||
draft = false
|
||||
slug = "server-monitor"
|
||||
title = "📈 Server Monitoring with Grafana"
|
||||
@@ -278,4 +278,4 @@ Here is what this looks like alongside the rest of the metrics I configured:
|
||||
|
||||
Each of the visualizations in this image are created with Flux queries similar to the example above. I don't bother writing each one out here. Instead, I attach a [JSON file](files/master.json) that can be imported into Grafana. It contains among many other details all of the queries used in the image.
|
||||
|
||||
Done.
|
||||
Done.
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["build"]
|
||||
tags = ["server", "rackmount", "homelab"]
|
||||
date = 2024-11-15T17:43:15Z
|
||||
description = ""
|
||||
description = "Moving home-server hardware into a spacious rack system for better cooling, expansion, organization, and maintenance access."
|
||||
draft = false
|
||||
slug = "server-rack"
|
||||
title = "🗄️ Server Rack"
|
||||
@@ -49,4 +50,3 @@ I have some photos of the rack and its components. It is tucked under the desk i
|
||||
I have two chassis mounted in the rack. I have a couple of posts relating to these machines:
|
||||
- server
|
||||
- pc
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["build"]
|
||||
tags = ["solar", "battery", "truck", "camping"]
|
||||
date = 2021-09-09T19:06:11Z
|
||||
description = ""
|
||||
description = "Building a truck-mounted wooden deck and 1,200-watt solar generator for camping, tailgating, refrigeration, lights, and cooking."
|
||||
draft = false
|
||||
slug = "solar-generator"
|
||||
title = "☀️ Mobile Deck & Solar Generator"
|
||||
@@ -142,4 +143,4 @@ The simplified process of assembly can be expressed in these steps:
|
||||
|
||||
{{< image
|
||||
src="images/truck-deck-night-distant.jpg"
|
||||
caption="Deck at night from a distance" >}}
|
||||
caption="Deck at night from a distance" >}}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
+++
|
||||
categories = ["food"]
|
||||
tags = ["bread", "sourdough", "baking"]
|
||||
date = 2025-02-22T12:09:00-06:00
|
||||
description = ""
|
||||
description = "Pursuing sourdough flavor and technique without maintaining a traditional starter, with notes on tools, proofing, and storage."
|
||||
draft = false
|
||||
slug = "sourdough"
|
||||
title = "🥖 'Sourdough'"
|
||||
@@ -43,4 +44,3 @@ The reasons I use rice flour:
|
||||
- Contains no gluten - no stickiness
|
||||
- low protein content -- does not char easily.
|
||||
- fine texture
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
+++
|
||||
categories = ["build"]
|
||||
tags = [""]
|
||||
tags = ["diy", "whiteboard", "woodworking"]
|
||||
date = 2025-05-02T12:00:00-06:00
|
||||
description = ""
|
||||
description = "Building a sturdy, inexpensive medium-sized whiteboard from readily available materials instead of buying a small commercial board."
|
||||
draft = false
|
||||
slug = "whiteboard"
|
||||
title = "🧼 Whiteboard Build"
|
||||
@@ -71,4 +71,4 @@ I will have a *Home Depot* employee to cut the board for me in the store. It wil
|
||||
|
||||
{{< gallery name="whiteboard-gallery" >}}
|
||||
|
||||
Done.
|
||||
Done.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
categories = ["software","build"]
|
||||
tags = ["docker"]
|
||||
date = 2024-08-21T18:13:24Z
|
||||
description = ""
|
||||
description = "Turning a Nikon Z50 into a high-quality wildlife camera with Frigate, Docker, object detection, recording, and live streaming."
|
||||
draft = false
|
||||
slug = "wildlife-stream"
|
||||
title = "📷 Wildlife Cam Livestream with Frigate + Nikon Z50"
|
||||
|
||||
Reference in New Issue
Block a user