Compare commits
12 Commits
89d707bd2c
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 1d50502131 | |||
| 63c4125655 | |||
| e9cfdd0c53 | |||
| 839de7cf97 | |||
| 7ef3267f26 | |||
| 78197278c2 | |||
| 04a0730bab | |||
| bf7200fa6d | |||
| 257d6a3797 | |||
| e494afd914 | |||
| 10337f4d3d | |||
| e3b4e566f7 |
@@ -5,7 +5,7 @@ draft: false
|
||||
---
|
||||
|
||||
Here you are:
|
||||

|
||||

|
||||
|
||||
I have six Raspberry Pi's networked together with a shared NAS. That Coral chip is mostly for manual fun for now, but expect an interactive site later.
|
||||
|
||||
@@ -36,4 +36,7 @@ Notes on improvements:
|
||||
- I had it with my gitlab and pipelines, but again I decided to not redo gitlab. some kind of interactivity needs to happen though
|
||||
- family site would still be fun. some kind of app too
|
||||
- still a great idea, turns out email on kubernetes is not trivial at the moment...
|
||||
- Set up PVCs and using the NVMe volume mount
|
||||
- Set up PVCs and using the NVMe volume mount
|
||||
|
||||
--- Updates:
|
||||
You are now on a beelink EQ series running Omarchy (for fun) headless. Still K3s with a bunch of additions, and now with the power of Claude I can create an entire subdomain in less than five minutes- including checked in code, images on the registry, TLS, etc. It's amazing!
|
||||
32
hugo-content/content/posts/frenzy.md
Normal file
32
hugo-content/content/posts/frenzy.md
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: "Frenzy"
|
||||
date: 2026-01-07T21:36:32-08:00
|
||||
draft: false
|
||||
---
|
||||
|
||||
# YOU'RE NOT WORKING HARD ENOUGH
|
||||
|
||||
Hardstyle2 By Fred Again (et al) has been my motto lately, and I've been pumping out a lot of work on my "spare" time as my wife studies for the last two tests of her SE exam. I've been pumping out a lot of websites, both for external clients and for fun. Here are some:
|
||||
|
||||
- [airt.scottyah.com](https://airt.scottyah.com) (AI Art! I have AI develop their own web based art)
|
||||
- [arvit.scottyah.com](https://arvit.scottyah.com) (Potential client, just showing a friend how easy it'd be to have a website for their side business)
|
||||
- [awards.scottyah.com](https://awards.scottyah.com) I got an idea to give neighborhood awards out. This was early AI and needs some love
|
||||
- [scottyah.com](https://scottyah.com),[blog.scottyah.com](https://blog.scottyah.com),[scotthatlen.com](https://scotthatlen.com) this blog
|
||||
- [calbo.us](https://calbo.us) Please buy a towel
|
||||
- [git.scottyah.com](https://git.scottyah.com) my git server
|
||||
- [harbor.scottyah.com](https://harbor.scottyah.com) my image registry
|
||||
- [obsidian.scottyah.com](https://obsidian.scottyah.com) I self host an autistic note-taking app, this is the backend api
|
||||
- [paragliding.scottyah.com](https://paragliding.scottyah.com) Trying to create what I want in a forecasting site for my local paragliding site
|
||||
- [secretsanta.scottyah.com](https://secretsanta.scottyah.com) I made a website for my family to do secret santas on
|
||||
- [admin.pearfectname.app](https://admin.pearfectname.app) The next three are the latest project for a friend/client
|
||||
- [dashboard.pearfectname.app](https://dashboard.pearfectname.app)
|
||||
- [pearfectname.app](https://pearfectname.app)
|
||||
- [vincedemo.scottyah.com](https://vincedemo.scottyah.com) Made this to show my coworker how my infrastructure works
|
||||
- [woodpecker.scottyah.com](https://woodpecker.scottyah.com) Supposed to be CI/CD but honestly it's so buggy I might use Tekton
|
||||
- [wweb.scottyah.com](https://wweb.scottyah.com) My wedding website, the start of self-hosting
|
||||
|
||||
There are a few more that I didn't really want to include yet.
|
||||
|
||||
Most of my work has been focused on my actual paying client- setting up a super sick smart home system from a cool dude I met at a Cursor networking event.
|
||||
|
||||
I also have been doing a lot to get a baby naming app into the app store. Apple took awhile to approve my developer account and I started going out of scope, and now have to work to get it deployable haha.
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
title: "Home Server"
|
||||
date: 2025-12-17T15:42:08-08:00
|
||||
draft: true
|
||||
draft: false
|
||||
---
|
||||
|
||||
So things have changed since the raspberry pi days. I got a beelink for @250 and it blows the 6 pi cluster out of the water in terms on compute and latency. I have installed k3s on it as well, but it's a bit upgraded as I have learned a lot more about kubernetes since the last go-round.
|
||||
|
||||
@@ -28,3 +28,11 @@ My wife and I have been gathering abandoned toys on our morning walks for awhile
|
||||
## Finished!
|
||||
The box came out more lopsided than imagined, but it works great! It's been about a month and there have been multiple full cycles of toys. I'm thrilled that the community has been accepting of it, and that it hasn't been removed.
|
||||
|
||||
## And Death
|
||||
We ended up moving further away and went to the beach less, and the check-ins got to be more depressing, typically mostly trash and it was used more as a lost and found for kids socks. I kept putting toys in, but they would dissapear too quickly. I noticed there were usually toys I didn't add, but none would last more than a week.
|
||||
|
||||
One day I cam back, it was in its place but it looks like people tried to use it for their fire, but it must have burnt abysmally with all the waterproofing I did.
|
||||
|
||||
It was in an unsafe state, so I came by later and took it away. It was a fun experiment, but ultimately the sucky people beat out the good ones. I have no plans to make a new one here.
|
||||
|
||||

|
||||
@@ -9,7 +9,7 @@ I found myself unable to post consistent posts on X, so I did what any lazy prog
|
||||
I had to spend more time getting an X developer account and API keys (selfies, gov ID scans, etc) than I spent having Claude draft up another k8s.yaml and dockerfile. I now have a configmap I try to keep full, and it posts daily at the schedule that it thought would have highest visibility. So far, nobody has liked or commented on a post so I'm still just talking to a brick wall, but now I'm doing it with \~~ t e c h n o l o g y ~~
|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
Follow me as I try to find my niche [https://x.com/calboDev](https://x.com/calboDev)
|
||||
|
||||
@@ -4,7 +4,7 @@ date: 2023-06-02T21:12:46-07:00
|
||||
draft: false
|
||||
---
|
||||
|
||||

|
||||

|
||||
|
||||
- Rifle: Tikka T3x Roughtech Ember in .308 win
|
||||
- Scope: Leupold VX-3HD 4.5-14x40
|
||||
|
||||
|
Before Width: | Height: | Size: 129 KiB After Width: | Height: | Size: 129 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
BIN
hugo-content/static/img/burnt-crate.webp
Normal file
BIN
hugo-content/static/img/burnt-crate.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 417 KiB |
@@ -1,14 +1,26 @@
|
||||
#!/bin/bash
|
||||
|
||||
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
|
||||
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
|
||||
|
||||
# Find all files of type PNG, JPEG, or TIFF
|
||||
files=$(find $SCRIPT_DIR/../hugo-content/static/img/ -type f -iname "*.png" -o -iname "*.jpg" -o -iname "*.tif")
|
||||
# Find all files of type PNG, JPEG, TIFF, or HEIC
|
||||
files=$(find "$SCRIPT_DIR/../hugo-content/static/img/" -type f \( -iname "*.png" -o -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.tif" -o -iname "*.tiff" -o -iname "*.heic" \))
|
||||
|
||||
# Loop through all the files in the directory
|
||||
for file in $files; do
|
||||
# Convert the file to WEBP
|
||||
cwebp -resize 1500 0 $file -o "${file%.*}.webp"
|
||||
output="${file%.*}.webp"
|
||||
|
||||
# Check if file is HEIC format
|
||||
if [[ "$file" == *.heic ]] || [[ "$file" == *.HEIC ]]; then
|
||||
# Convert HEIC to WebP using sips (built into macOS) and cwebp
|
||||
temp_png="${file%.*}_temp.png"
|
||||
sips -s format png "$file" --out "$temp_png" >/dev/null 2>&1
|
||||
cwebp -resize 1500 0 "$temp_png" -o "$output"
|
||||
rm "$temp_png"
|
||||
else
|
||||
# Convert other formats directly with cwebp
|
||||
cwebp -resize 1500 0 "$file" -o "$output"
|
||||
fi
|
||||
|
||||
# Delete old file
|
||||
rm $file
|
||||
rm "$file"
|
||||
done
|
||||
108
ship.sh
Executable file
108
ship.sh
Executable file
@@ -0,0 +1,108 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Blog Build & Deploy Script
|
||||
REGISTRY="harbor.scottyah.com"
|
||||
NAMESPACE="scottyah"
|
||||
IMAGE_NAME="blog"
|
||||
FULL_IMAGE="${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}"
|
||||
|
||||
# Parse flags
|
||||
BUILD_ONLY=false
|
||||
DEPLOY_ONLY=false
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
--build-only)
|
||||
BUILD_ONLY=true
|
||||
shift
|
||||
;;
|
||||
--deploy-only)
|
||||
DEPLOY_ONLY=true
|
||||
shift
|
||||
;;
|
||||
-h|--help)
|
||||
echo "Usage: ./ship.sh [OPTIONS]"
|
||||
echo ""
|
||||
echo "Build and deploy Blog to Kubernetes"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " --build-only Only build and push Docker image"
|
||||
echo " --deploy-only Only deploy to Kubernetes (skip build)"
|
||||
echo " -h, --help Show this help message"
|
||||
echo ""
|
||||
echo "Examples:"
|
||||
echo " ./ship.sh # Build and deploy"
|
||||
echo " ./ship.sh --build-only # Only build"
|
||||
echo " ./ship.sh --deploy-only # Only deploy"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option: $1"
|
||||
echo "Use --help for usage information"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# BUILD PHASE
|
||||
if [ "$DEPLOY_ONLY" = false ]; then
|
||||
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
|
||||
|
||||
# Tags
|
||||
TAG_TIMESTAMP="${FULL_IMAGE}:${TIMESTAMP}"
|
||||
TAG_LATEST="${FULL_IMAGE}:latest"
|
||||
|
||||
echo "🐦 Building Blog Docker image..."
|
||||
echo "Registry: ${REGISTRY}"
|
||||
echo "Image: ${FULL_IMAGE}"
|
||||
echo "Timestamp: ${TIMESTAMP}"
|
||||
echo ""
|
||||
|
||||
# Build image
|
||||
echo "Building Docker image..."
|
||||
docker build \
|
||||
--network=host \
|
||||
-t "${TAG_TIMESTAMP}" \
|
||||
-t "${TAG_LATEST}" \
|
||||
"."
|
||||
|
||||
echo ""
|
||||
echo "✅ Build complete!"
|
||||
echo ""
|
||||
echo "Tagged as:"
|
||||
echo " - ${TAG_TIMESTAMP}"
|
||||
echo " - ${TAG_LATEST}"
|
||||
echo ""
|
||||
|
||||
# Push images
|
||||
echo "Pushing images to registry..."
|
||||
docker push "${TAG_TIMESTAMP}"
|
||||
docker push "${TAG_LATEST}"
|
||||
|
||||
echo ""
|
||||
echo "🚀 Images pushed to Harbor registry!"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# DEPLOY PHASE
|
||||
if [ "$BUILD_ONLY" = false ]; then
|
||||
echo "🐦 Deploying Blog to Kubernetes..."
|
||||
echo ""
|
||||
|
||||
# Apply Kubernetes configuration
|
||||
echo "Applying Kubernetes configuration..."
|
||||
kubectl apply -f "k8s.yaml"
|
||||
|
||||
echo ""
|
||||
echo "Waiting for namespace to be ready..."
|
||||
kubectl wait --for=condition=Ready --timeout=10s namespace/blog 2>/dev/null || true
|
||||
|
||||
echo ""
|
||||
echo "✅ Deployment complete!"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
if [ "$BUILD_ONLY" = false ] && [ "$DEPLOY_ONLY" = false ]; then
|
||||
echo "✨ Build and deployment complete!"
|
||||
fi
|
||||
Reference in New Issue
Block a user