bash — [email protected]
kyle@kgivler:~$ whoami

Kyle Givler

Backend and systems-focused .NET developer building self-hosted applications, network services, developer tools, and performance-oriented game mods.

I design, deploy, and operate the systems shown on this site.


kyle@kgivler:~$

./show_flagship_projects.sh

These are the systems that best represent how I design, build, deploy, and operate software.

[OPERATIONS PLATFORM]

Mission Control

A self-hosted .NET operations and event-processing platform for the applications, hosts, containers, and protocol services I operate.

Problem:
My self-hosted services needed durable event history and useful diagnostics without turning every private backend into a public API.
Built:
An authenticated ASP.NET Core gateway for integration events and signed GitHub webhooks, a bounded NATS JetStream stream with durable Archive and GitActivity consumers, SQLite projections, a protocol-aware Agent, an authenticated Blazor dashboard, and a Windows/Android .NET MAUI client.
Decisions:
Kept broker transport behind messaging contracts; used explicit ACK, delayed NAK, permanent TERM, and message-ID deduplication; shared contracts, clients, and UI; and kept private service credentials and URLs behind a bearer-authenticated proxy API.
Stack:
  • .NET 10
  • ASP.NET Core
  • NATS JetStream
  • SQLite
  • Blazor
  • .NET MAUI
  • Docker
Result:
Full event envelopes are archived while GitHub activity and host, Docker, and protocol status are projected into authenticated web and installed clients. The current Mission Control codebase also includes daily work picks, work-item listing, quick Todo creation, and GreenCloud usage and rate projections.
[PRODUCTION UTILITY]

Random Steam Game

A production web utility that breaks decision paralysis by choosing a game from a public Steam library.

Problem:
Large libraries make choosing difficult, while uncached Steam lookups and ambiguous identifiers can make a simple random choice slower and less reliable than it should be.
Built:
A Blazor Interactive Auto UI and ASP.NET Core API that normalize SteamID and vanity input, select from cached library data, filter unplayed or locally blocked titles, show playtime, export CSV, and open Steam launch URIs.
Decisions:
Used SQLite-backed distributed caching with coalesced cache misses, made library refresh deliberate, persisted Data Protection keys across deployments, kept readiness focused on local dependencies, and made identity-free Mission Control telemetry best-effort.
Stack:
  • .NET 10
  • Blazor
  • ASP.NET Core
  • SQLite
  • Steam API
  • Docker
  • Mission Control
Result:
The live application delivers random picks with unplayed filtering, browser-local exclusions, playtime, CSV export, and direct Steam launch support—without presenting cookie preferences as account-backed profiles. Docker publishing is gated by the automated test suite.
[PROTOCOL FAMILY]

Happy Protocol Family

Modern .NET implementations of classic and small-web Internet protocols, from deliberately tiny TCP daemons to extensible Gopher and Gemini servers.

Problem:
Seven protocol servers should not duplicate listener, concurrency, timeout, shutdown, and telemetry infrastructure, while richer protocols still need room to grow without becoming one everything-daemon.
Built:
Echo :7, Discard :9, Daytime :13, QOTD :17, Gopher :70, Finger :79, and TLS Gemini :1965. The small services share JoyfulReaperLib.TcpServer; Gopher and Gemini add static content, dynamic pages, and manifest-loaded plugins.
Decisions:
Used canonical ports, bounded connection lifecycles, graceful shutdown, Docker, and best-effort Mission Control telemetry. Echo, Daytime, QOTD, and Finger use Native AOT; Gopher and Gemini instead use explicit extensibility contracts and isolated plugin loading and are not described as AOT.
Stack:
  • .NET 10
  • TCP/IP
  • Native AOT
  • Docker
  • Gopher
  • Gemini
  • Mission Control
Result:
The family spans intentionally small RFC-style services through plugin-extensible Gopher and Gemini application servers. HappyGopher and HappyGemini are live at gopher://gopher.kgivler.com and gemini://gemini.kgivler.com.

kyle@kgivler:~$

./open_live_systems_lab.sh

Live data and interactive tools backed by services running on my workstation and Linux VPS.

[AVAILABILITY] Some components are self-hosted, so individual tools may be temporarily unavailable during maintenance or when a host is offline.

./live_host/

Current workstation telemetry and public Steam presence.

kyle@kgivler:~$

./show_status.sh

[NOTICE] This website runs on my personal workstation via a Cloudflare tunnel.
Unexpected downtime may occur during host maintenance or if the workstation is off.
Establishing connection to host...

kyle@kgivler:~$

./show_steam.sh

Status: Steam presence check
Description: Shows my current Steam presence when available.
Checking Steam presence...
Steam Profile

./public_services/

Public demos, service endpoints, and the operational catalog.

kyle@kgivler:~$

./get-random-game -vanity

Status: Interactive Demo
Description: Pick a random Steam game from a public Steam library using a vanity URL.
Full Site

kyle@kgivler:~$

./list_services.sh --featured

Status: Featured service catalog
Description: A preview of public applications, classic internet protocols, APIs, and backend infrastructure running across my workstation and Linux VPS.
[PUBLIC] Random Steam Game Picks a random game from a public Steam library.
[PUBLIC] HappyFinger A modern .NET Finger protocol server running on TCP port 79.
[PUBLIC] HappyGopher An old-school Gopher server running on TCP port 70.
[SYSTEM] Mission Control Processes integration events and GitHub activity through NATS JetStream.
The complete operational catalog includes service purpose, protocol, status, and source links. View Complete Operational Catalog

kyle@kgivler:~$

curl https://qotd-api.kgivler.com/api/quotes/today

Status: Live API widget
Description: Daily quote served from my HappyQOTD API and classic QOTD service.
Fetching today's quote...

./communication_and_activity/

Chat, recent development activity, and the visitor BBS.

kyle@kgivler:~$

./chat_with_me.sh

Status: Public IRC bridge
Description: Live support for Random Steam Game, project questions, and general programmer hangout.
Channels: #RandomSteamGame | ##kgivler-dev

kyle@kgivler:~$

git log --all --author="Kyle Givler" --oneline -5

Status: Mission Control commit feed
Description: Recent commits captured through my GitHub event pipeline.
Reading Git activity...
GitHub Profile

kyle@kgivler:~$

bbs show

Status: Interactive terminal command
Description: Read the visitor board with bbs show or post with bbs message your message in the shell below.

./experiments/

Best-effort local AI tooling and the site's interactive command system.

kyle@kgivler:~$

./qwen_review.sh --health

Status: Experimental local AI review
Description: Best-effort code review powered by qwen2.5-coder-3b-instruct@q6_k plus simple static hints.
Warning: Small model, small expectations. Not a security scanner. Not a formal audit.
Limits: Single-pass reviews up to 12k chars; larger files auto-chunk up to 48k chars total.
Checking...

./interactive_shell.sh

This fake shell is an optional interactive feature. Type help to explore commands, including the visitor BBS.


kyle@kgivler:~$

./show_additional_projects.sh

Additional Projects — recent and experimental work outside the flagship case studies.

Status: Stable
Description: QOL RimWorld mod to force all pawns, mech and animals to a specified zone on button press, and return to previous zone on button press.

kyle@kgivler:~$

./open_professional_channels.sh

Interested in backend .NET work, systems engineering, developer tooling, open-source collaboration, and technically meaningful volunteer projects.

./elsewhere/

Games, mods, and the public chat bridge.