Add new tech article: brewing up the stack (LLM proxies, Caddy migration, Grok-bot)

- New post: brewing up the stack covering GopherGate LLM proxy, Grok-bot, Dissertation Path updates, pi.dev migration, Caddy reverse-proxy switch, and Gemma4 experiments
- Add author tone & voice profile for consistent writing reference
- Add .gitignore for Pi-lens cache and build artifacts
This commit is contained in:
2026-04-09 15:17:04 -04:00
parent 0c50023468
commit a540abf6c5
3 changed files with 176 additions and 0 deletions
+28
View File
@@ -0,0 +1,28 @@
# Pi-lens cache and state
.pi-lens/
# Jekyll build output
_site/
.sass-cache/
.jekyll-cache/
.jekyll-metadata
# Environment files
.env
.env.local
# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
# Editor files
.vscode/
.idea/
*.swp
*.swo
*~
+82
View File
@@ -0,0 +1,82 @@
# Author Tone & Voice Profile
**Subject:** Dustin Newkirk (d@n tech)
**Date Analyzed:** 2026-04-09
**Sample Articles:** 6 posts across life, tech, news categories (2023-2026)
## Overall Tone
- **Conversational & Approachable:** Feels like talking to a knowledgeable friend over coffee.
- **Enthusiastic & Passionate:** Shows genuine excitement about technology, learning, and projects.
- **Personal & Reflective:** Willing to share career challenges, educational journeys, and personal milestones.
- **Encouraging & Inclusive:** Often uses “we,” “us,” and invites readers to join the conversation.
- **Humble & Relatable:** Acknowledges plateaus, seeks support, and values community input.
## Voice Characteristics
- **First-person narrative:** “I,” “my,” “me” the authors experiences are central.
- **Direct address:** Frequently uses “you” to speak to the reader.
- **Casual contractions:** Im, its, lets, dont, cant maintains an informal flow.
- **Warm signoffs:** “Thank you for being a part of my journey,” “Stay tuned,” “Thanks for reading.”
- **Invitations to engage:** Asks questions, encourages comments, and welcomes feedback.
## Sentence Structure
- **Mix of lengths:** Short, punchy sentences for impact; longer, explanatory sentences for detail.
- **Bulleted lists:** Common for breaking down technical details or career milestones.
- **Headings & subheadings:** Clear hierarchy using Markdown `##` and `###`.
- **Hook openings:** Often starts with a greeting or a vivid metaphor (“the kettles whistling”).
- **Calltoaction endings:** Closes with a forwardlooking statement or an invitation.
## Vocabulary & Diction
- **Techforward but accessible:** Uses technical terms (DNS, VPS, LXC) but pairs them with everyday analogies.
- **Coffeethemed lexicon:** brew, beans, grind, pour a cup, steeping, fresh brew, kettle, espresso shot, etc.
- **Positive modifiers:** exciting, thrilling, valuable, crucial, enriching, enlightening.
- **Actionoriented verbs:** share, explore, manage, host, build, launch, support, grow.
- **Communityfocused words:** together, share, support, contribute, connect.
## Metaphors & Analogies
- **Coffeerelated:** The dominant thematic metaphor. Examples:
- “Think of DNS management like a coffee shops menu.”
- “Its like having a supercharged autotamper and grinder.”
- “the kettles whistling, and the code is fresh.”
- **Everyday objects:** Storage units, postoffice sorting, classic cars, security systems, filing cabinets.
- **Purpose:** Makes complex technical concepts tangible and memorable.
## Formatting & Visual Style
- **Markdownheavy:** Headings, bullet points, bold text for emphasis.
- **Images & logos:** Includes relevant graphics (logos, diagrams) to break up text.
- **Code snippets:** Not heavily used in the sampled articles, but likely in technical tutorials.
- **Links:** Frequently links to external resources, projects, and donation platforms (Kofi).
- **Friendly metadata:** Post titles often lowercased, casual (“a fresh brew of code”).
## Persona & Values
- **Lifelong learner:** Pursuing higher education, experimenting with homelabs, exploring new APIs.
- **Handson tinkerer:** Homelab enthusiast, selfhosts many services, loves practical projects.
- **Communityminded:** Shares knowledge, supports students, offers resources, welcomes collaboration.
- **Transparent about support:** Openly discusses Kofi initiatives, serverupgrade funding, and merchandise.
- **Worklife balance advocate:** Mentions Pathfinder gaming, family time, and personal passions.
## Consistency Over Time
- **20232024:** Slightly more formal but still conversational; coffee metaphors appear but are less pervasive.
- **20252026:** Coffee metaphor becomes a defining stylistic signature; tone becomes even more playful and metaphorical.
- **Core voice remains stable:** Personal, enthusiastic, explanatory, and inclusive across all categories (life, tech, news).
## Recommendations for Future Content
1. **Lean into the coffee metaphor** its a unique and recognizable brand element.
2. **Maintain the balance of technical depth and accessible explanation** assume readers have mixed backgrounds.
3. **Continue using bullet points and headings** for scannability, especially in technical posts.
4. **Keep openings warm and engaging** a greeting or a vivid image sets the tone.
5. **End with a forwardlooking note** a next step, a question, or an invitation to connect.
6. **Use analogies liberally** theyre a strength and help demystify complex topics.
7. **Stay personal** share both successes and challenges; it builds trust and relatability.
## Example Phrases That Capture the Voice
- “Hello everyone! Today, I want to share some exciting personal updates…”
- “Sit back and grab a coffee.”
- “The kettles whistling, and the code is fresh.”
- “Lets pour a cup and catch up on the latest from the terminal.”
- “Its not just about writing code, but about crafting understandable, maintainable systems.”
- “Your support… will play a crucial role in my journey.”
- “Thanks for reading. Whats brewing in your terminal lately?”
---
**Profile compiled by pi agent**
For use in maintaining consistent author voice across new articles, editing existing content, and onboarding contributors.
@@ -0,0 +1,66 @@
---
layout: post
title: "brewing up the stack: llm proxies, cheeky bots, and smaller models"
---
the kettle's on and the terminal is warm. it's been a season of percolating projects across the homelab-some bubbling to the surface, others still steeping. grab a cup and let's walk through what's been brewing in my corner of the tech world.
## gophergate: my custom llm proxy (because off-the-shelf wasn't accurate enough)
i've been juggling multiple llm api subscriptions lately: xai (grok), google, openai, deepseek, moonshot... the list grows. tracking usage and spend across each provider was turning into a spreadsheet nightmare. i tried a popular open-source llm proxy, but the usage metrics were often inaccurate-like a coffee scale that drifts after each pour.
so i built **gophergate**. it's a lightweight go service that sits between my apps and all those llm endpoints. here's what it does:
- **unified proxy:** one endpoint that routes requests to the right provider based on model name.
- **spend tracking:** logs every token, calculates costs per provider, and gives me a real-time dashboard of where my credits are going.
- **usage quotas:** i can set soft limits per project or user, so no surprise bills.
- **fallback routing:** if one api is rate-limited or down, it automatically fails over to a backup.
it's not fancy, but it's accurate. and in the world of llm budgets, accuracy is everything. think of it as a precision gooseneck kettle for pouring api credits-no spillage.
## grok-bot: the (kinda rude) nextcloud assistant
while i was wiring up gophergate, i also wanted to bring a little ai personality into my nextcloud instance. enter **grok-bot**.
this is a nextcloud talk bot that hooks into grok-4-1-fast-reasoning. it joins group chats, answers questions, fetches files, and-by design-has a bit of an attitude. i trained its personality on scraped linkedin profiles (public ones, naturally) and previous conversation history, so it can toggle between professional snark and outright sarcasm depending on who it's talking to.
why? because sometimes you want a assistant that says "sure, i'll fetch that report... but you do know you could've searched for it yourself, right?" it keeps things lively. and because it lives inside nextcloud, it has access to all my files, calendars, and contacts-making it genuinely useful beneath the cheek.
## dissertation path: a phd gantt chart that doesn't overwhelm
my academic-facing project [dissertationpath.com](https://dissertationpath.com) got a significant upgrade. the core idea remains: break the monumental phd journey into a clear, customizable gantt chart. but now it supports google auth, so students can save their timelines, share them with advisors, and track progress across devices.
the feedback from early users has been incredibly rewarding. it's one thing to build a tool for yourself; it's another to see it actually reduce someone else's anxiety. if you know a grad student drowning in chapter deadlines, send them this way.
## shifting from opencode to pi.dev (pi agent)
i've been a vocal fan of the opencode philosophy, but recently i've started migrating my agent-based workflows to **[pi.dev](https://pi.dev)**. the experience has been... smoother. the agent feels more responsive, the tooling is tighter, and the overall developer flow matches how i think.
this isnt a wholesale abandonment—opencodes ideas still influence how i structure projects—but for daytoday agentassisted coding, pi is where im planting my flag right now. sometimes you find a tool that just fits your grip better.
## swapping the kettle: from nginx proxy manager to caddy
while i was reworking the software layer, i also revisited my reverseproxy setup. for years i used nginx proxy manager—it worked, but managing certificates and configs felt like calibrating a fussy espresso machine: doable, but never quite effortless.
enter **caddy**. its automatic https (via lets encrypt) and deadsimple config file won me over. migrating my services was straightforward, and the performance uplift was noticeable. plus, caddys native support for http/3 and quic meant some of my internal services (like plex) could now use faster, lowerlatency transports. its like switching from a pourover that requires constant attention to an automated brewer that just… works.
## experimenting with gemma4: smaller models, bigger potential
my homelab hardware isn't a monster by today's standards (hello, aging r720xd), so i've been keeping an eye on the smaller-model frontier. the recent **gemma4** releases have been particularly impressive.
i've spent a few weekends fine-tuning gemma4-it (the instruction-tuned variant) on my own documentation and code snippets. the results are promising: fast, locally-hosted reasoning that can handle basic code review, documentation generation, and even light planning tasks-all without hitting an external api.
it's not going to replace grok or gpt-4 for complex reasoning, but for quick, private, and free iterations, it's like having a reliable pour-over setup right on your desk. the hardware barrier is lowering, and that's exciting.
---
## what's next on the brew schedule?
- **open-sourcing gophergate**-after a bit more polish and documentation, i'll drop it on github.
- **giving grok-bot a "polite mode"** for when the sarcasm isn't welcome.
- **expanding dissertation path** with templated timelines for different disciplines.
- **continuing the local-model experiments**-maybe a tiny model that runs entirely on a pi 5.
the stack keeps evolving, and that's the fun part. thanks for reading. what's bubbling in your lab lately? drop a comment or reach out-i'd love to hear what you're building.
-dustin