added some old blog posts

This commit is contained in:
Ben Varick 2025-10-30 13:12:41 -07:00
parent 63319128c1
commit 022922dfc7
Signed by: ben
SSH key fingerprint: SHA256:jWnpFDAcacYM5aPFpYRqlsamlDyKNpSj3jj+k4ojtUo
18 changed files with 847 additions and 15 deletions

View file

@ -20,10 +20,10 @@ DefaultContentLanguage = "en" # Default language fo
# Configure the home page
[params.home]
introHeight = "fullheight" # Input either "medium" or "large" or "fullheight"
showLatest = true # Show latest blog post summary
showLatest = false # Show latest blog post summary
showAllPosts = false # Set true to list all posts on home page, or set false to link to separate blog list page
allPostsArchiveFormat = true # show all posts in an archive format
numberOfProjectsToShow = 3 # Maximum number of projects to show on home page. Unset or comment out to show all projects
numberOfProjectsToShow = 0 # Maximum number of projects to show on home page. Unset or comment out to show all projects
localTime = false # Show your current local time in contact section
timeZone = "America/Los_Angeles" # Your timezone as in the TZ* column of this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
timeFormat = "en-US" # Language specific format to use

View file

@ -0,0 +1,10 @@
+++
date = '2025-10-30T19:08:55Z'
draft = true
title = 'Home Network Design'
+++
Here is how I've setup my home network. My goal is to build something that is reliable, performant, as open-source as possible, and re-uses old electronics.
My thinking is based on homenethowto.com and a blog that I can't find anymore that had instructions for how to set up a cheap, simple network with and EdgeRouter and a Unifi AP.

View file

@ -0,0 +1,10 @@
+++
date = '2024-01-01T19:13:02Z'
title = 'Pretty Rivers'
+++
I like looking at maps that isolate different natural features. And I think that rivers make pretty patterns. So I made a series of scripts that generates a pretty map of rivers. I hope to print the maps of places that are important to me as art.
The code that generates these maps is here: https://git.dendroalsia.net/ben/pretty_rivers
---
![Wisconsin Rivers](https://git.dendroalsia.net/ben/pretty_rivers/media/branch/main/example.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 MiB

View file

@ -0,0 +1,11 @@
+++
date = '2024-10-14T19:13:18Z'
title = 'River Level Charts'
+++
I'm interested in rivers (both ecologically and recreationally) and I want to know water level they are currently at, and how does that compare to their water levels throughout the year and in their recent history.
In the US, the United States Geologic Survey (USGS) maintains a large set of realtime water level sensors, and that dataset is queriable through an API. So I wrote these scripts that take a set of rivers and their associated gauge IDs, downloads the recent and historical data and generates a bunch of graphs.
Here's the code: https://git.dendroalsia.net/ben/USGS_NWIS
![Example graph](https://git.dendroalsia.net/ben/USGS_NWIS/media/branch/main/example_last_6_months.png)

6
content/blog/_index.md Normal file
View file

@ -0,0 +1,6 @@
+++
date = '2025-10-30T19:08:15Z'
draft = true
title = 'Posts'
url = '/blog'
+++

142
layouts/index.html Normal file
View file

@ -0,0 +1,142 @@
<!DOCTYPE html>
<html lang="{{ .Site.LanguageCode }}">
<head>
{{ partial "head/metadata.html" . }}
{{ if .Site.Params.plausible }}{{ partial "head/plausible.html" . }}{{ end }}
{{ partial "head/openGraph.html" . }}
{{ partial "head/favicons.html" . }}
{{ partial "head/css.html" . }}
{{ partial "css/owlCarousel.html" . }}
</head>
<body>
{{ with .Site.GetPage "/home" }}
<section id="top" class="hero is-{{ .Site.Params.home.introHeight | default "fullheight" }}">
<!-- Hero head section to play nice with Bulma -->
<div class="hero-head"></div>
<!-- Super sweet Hero body title -->
<div class="hero-body">
<div class="container has-text-centered">
<!-- Title and tagline -->
<h1 class="bold-title {{ if or (.Site.Params.fadeIn | default true) .Site.Params.fadeInIndex }}fade-in one{{ end }}">
{{ .Title | markdownify }}
</h1>
<div class="subtitle is-3 {{ if or (.Site.Params.fadeIn | default true) .Site.Params.fadeInIndex }}fade-in two{{ end }}">
{{ .Content }}
</div>
<!-- End title and tagline -->
<!-- Some social icons -->
<div class="{{ if or (.Site.Params.fadeIn | default true) .Site.Params.fadeInIndex }}fade-in three{{ end }}">
{{ partial "home/social.html" . }}
</div>
<!-- End top social icons -->
</div>
</div> <!-- End of Hero body -->
{{ end }}
<div class="hero-foot {{ if or (.Site.Params.fadeIn | default true) .Site.Params.fadeInIndex }}fade-in three{{ end }}">
<!-- Tell them all about it! -->
{{ partial "nav.html" . }}
</div>
</section> <!-- Done with Hero -->
{{ with .Site.GetPage "/home" }}
{{ $home := . }}
{{ $pages := .Resources.ByType "page" }}
{{ with .Site.GetPage "/blog" }}
{{ $pages = $pages | append . }}
{{ end }}
{{ with .Site.GetPage "/projects" }}
{{ $pages = $pages | append . }}
{{ end }}
{{ range sort $pages "Params.weight" }}
{{ if ne .Name "contact.md" }}
{{ if .File }}
{{ if eq (os.Stat .File.Dir).Name "projects" }}
<!-- Now for some cool projects -->
{{ partial "home/projects.html" . }}
{{ else if ne (os.Stat .File.Dir).Name "blog" }}
<!-- Range through all sections in /home execept contact.md -->
<div class="section" id="{{ .File.TranslationBaseName }}">
<div class="container">
<h2 class="title is-2 has-text-centered">{{ .Title | markdownify }}</h2>
{{ if .Params.Image }}
<div class="columns">
<div class="column is-one-third has-text-centered">
{{ with $home.Resources.GetMatch .Params.Image }}
{{ with .Resize "320x" }}
<img class="img-responsive avatar" src="{{ .Permalink }}" alt="{{ .Name }}">
{{ end }}
{{ end }}
</div>
<div class="markdown column">
{{ .Content }}
</div>
</div>
{{ else }}
<div class="markdown has-text-centered">
{{ .Content }}
</div>
{{ end }}
</div>
</div>
<div class="container">
<hr>
</div>
{{ end }}
{{ end }}
{{ end }}
{{ end }}
<!-- Let`s chat, shall we? -->
{{ with .Resources.GetMatch "contact.md" }}
<div class="section" id="{{ .File.TranslationBaseName }}">
<div class="container has-text-centered">
<h2 class="title is-2">{{ .Title | markdownify }}</h2>
<div class="markdown">
{{ .Content }}
</div>
{{ if .Site.Params.home.localTime }}
<p>{{ i18n "index_currentTime" . }} <span id="time"></span>.</p>
{{ end }}
{{ with .Site.Params.email }}
<h3 class="subtitle is-3 has-text-centered top-pad">
<a href="mailto:{{ . }}">{{ . }}</a>
</h3>
{{ end }}
{{ partial "home/social.html" . }}
</div>
<!-- End Contact container -->
</div>
<div class="container">
<hr>
</div>
{{ end }}
<!-- End Contact section -->
{{ end }}
{{ partial "footer/text.html" . }}
<!-- End of fade in three section -->
{{ partial "footer/scripts.html" . }}
{{ partial "js/owlCarousel.html" . }}
{{ if .Site.Params.home.localTime }}
<script>
function update_localtime() {
const time = new Date().toLocaleTimeString('{{ .Site.Params.home.timeFormat }}', { timeZone: '{{ .Site.Params.home.timeZone }}', timeStyle: 'short' });
document.getElementById('time').innerHTML = time;
}
update_localtime();
// Updating every second to prevent seconds looking like stood still when timeStyle is ignored.
setInterval(update_localtime, 1000);
</script>
{{ end }}
</body>
</html>

119
layouts/partials/nav.html Normal file
View file

@ -0,0 +1,119 @@
{{ if .Site.Params.showMenu | default true }}
<!-- Begin Nav bar -->
<div class="container">
<hr>
<nav class="navbar" role="navigation" aria-label="main navigation">
{{ $isHome := .Page.IsHome }}
<a role="button" class="navbar-burger" data-target="navMenu" aria-label="menu" aria-expanded="false" >
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
</a>
<div class="navbar-menu {{ if $isHome }}has-content-centered{{ end }}" id="navMenu">
<!-- look for custom menu and include it -->
{{ if .Site.Menus.main }}
{{ range .Site.Menus.main }}
{{ if .HasChildren }}
<a class="navbar-item" href="{{ .URL }}">
{{ .Pre }}
{{ .Name }}
{{ .Post }}
</a>
{{ range .Children }}
<!-- TODO: style children diffrent then parents-->
<a class="navbar-item" href="{{ .URL }}">
{{ .Pre }}
{{ .Name }}
{{ .Post }}
</a>
{{ end }}
{{ else }}
<a class="navbar-item" href="{{ .URL }}">
{{ .Pre }}
{{ .Name }}
{{ .Post }}
</a>
{{ end }}
{{ end }}
{{ else }}
<!-- use default menu -->
{{ if not $isHome }}
<a class="navbar-item" href="{{ "" | relLangURL }}">{{ i18n "nav_main" . }}</a>
{{ end }}
{{ with .Site.GetPage "/home" }}
{{ $pages := .Resources.ByType "page" }}
{{ with .Site.GetPage "/blog" }}
{{ $pages = $pages | append . }}
{{ end }}
{{ with .Site.GetPage "/projects" }}
{{ $pages = $pages | append . }}
{{ end }}
{{ range sort $pages "Params.weight" }}
{{ if ne .Name "contact.md" }}
{{ if eq (os.Stat .File.Dir).Name "projects" }}
<!-- Now for some cool projects -->
{{ if $isHome }}
<a class="navbar-item" href="{{ printf "#%s" ( .Title | urlize) | relLangURL }}">{{ .Title | markdownify }}</a>
{{ else }}
{{ $pageIsInProjects := eq $.Page.Section "projects"}}
{{ if not (and $pageIsInProjects (eq $.Page.Kind "section")) }}
<a class="navbar-item" href="{{ .Permalink }}">
{{ if $pageIsInProjects }}
{{ i18n "nav_backToSection" . }}
{{ else }}
<!-- fix-224 -->
{{ .Title }}
<!-- end fix-224 -->
{{ end }}
</a>
{{ end }}
{{ end }}
{{ else if eq (os.Stat .File.Dir).Name "blog" }}
<!-- Let`s show some blog posts -->
{{ if $isHome }}
<a class="navbar-item" href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
{{ else }}
{{ $pageIsInBlog := eq $.Page.Section "blog"}}
{{ if not (and $pageIsInBlog (eq $.Page.Kind "section")) }}
<a class="navbar-item" href="{{ .Permalink }}">
{{ if $pageIsInBlog }}
{{ i18n "nav_backToSection" . }}
{{ else }}
{{ .Title | singularize}}
{{ end }}
</a>
{{ end }}
{{ end }}
{{ else }}
<a class="navbar-item" href="{{ if $isHome }}#{{ .File.TranslationBaseName }}{{ else }}{{ printf "#%s" (.File.TranslationBaseName | urlize) | relLangURL }}{{ end }}">{{ .Title | markdownify }}</a>
{{ end }}
{{ end }}
{{ end }}
{{ end }}
{{ with .Site.GetPage "/home" }}
{{ with .Resources.GetMatch "contact.md" }}
<a class="navbar-item" href="{{ if $isHome }}#{{ .File.TranslationBaseName }}{{ else }}{{ printf "#%s" (.File.TranslationBaseName | urlize) | relLangURL }}{{ end }}">{{ .Title | markdownify }}</a>
{{ end }}
{{ end }}
{{ range $.Site.Home.AllTranslations.ByWeight }}
{{ if ne .Language.LanguageName $.Language.LanguageName }}
<a class="navbar-item" href="{{ .Permalink }}">{{ .Language.LanguageName }}</a>
{{ end }}
{{ end }}
{{ if and .Site.Params.showRSSButton }}
<a class="navbar-item" href="{{ with .OutputFormats.Get "RSS" }}{{ .RelPermalink }}{{ end }}"><i class="fas fa-rss"></i></a>
{{ end }}
{{ end }}
</div>
</nav>
<hr>
</div>
<!-- End Nav bar -->
{{ end }}

View file

@ -87,6 +87,8 @@
@ -95,6 +97,22 @@
<a class="navbar-item" href="">
Post
</a>
<a class="navbar-item" href="/#about">About</a>

View file

@ -0,0 +1,226 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="referrer" content="no-referrer">
<meta name="description" content="Website Description">
<title>
Pretty Rivers - Dendroalsia
</title>
<meta property="og:title" content="Pretty Rivers - Dendroalsia" />
<meta property="og:type" content="website" />
<meta property="og:description" content="Website Description"/>
<meta property="og:url" content="https://www.dendroalsia.net/blog/prettyrivers/prettyrivers/"/>
<meta property="og:site_name" content="Dendroalsia"/>
<meta property="og:image" content="https://www.dendroalsia.net/home/moss.webp"/>
<link rel="shortcut icon" href="/img/fav.ico">
<link rel="stylesheet" href="/css/main.min.842355dd2ec6a34552c5ffdca0274879393643308cc04aed4876a79219a88809.css" integrity="sha256-hCNV3S7Go0VSxf/coCdIeTk2QzCMwErtSHankhmoiAk=" crossorigin="anonymous" media="screen">
</head>
<body>
<section id="top" class="section">
<div class="container hero ">
<h1 class="bold-title is-1">Posts</h1>
</div>
<div class="section ">
<div class="container">
<hr>
<nav class="navbar" role="navigation" aria-label="main navigation">
<a role="button" class="navbar-burger" data-target="navMenu" aria-label="menu" aria-expanded="false" >
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
</a>
<div class="navbar-menu " id="navMenu">
<a class="navbar-item" href="/">main</a>
<a class="navbar-item" href="">
Back to Posts
</a>
<a class="navbar-item" href="/#about">About</a>
<a class="navbar-item" href="/#contact">Contact</a>
</div>
</nav>
<hr>
</div>
<div class="container">
<h2 class="title is-1 top-pad strong-post-title">
<a href="https://www.dendroalsia.net/blog/prettyrivers/prettyrivers/">Pretty Rivers</a>
</h2>
<div class="post-data">
Jan 1, 2024
|
1 minute read
</div>
</div>
<div class="container markdown top-pad">
<p>I like looking at maps that isolate different natural features. And I think that rivers make pretty patterns. So I made a series of scripts that generates a pretty map of rivers. I hope to print the maps of places that are important to me as art.</p>
<h2 id="the-code-that-generates-these-maps-is-here" class="anchor-link"><a href="#the-code-that-generates-these-maps-is-here">The code that generates these maps is here: <a href="https://git.dendroalsia.net/ben/pretty_rivers">https://git.dendroalsia.net/ben/pretty_rivers</a></a></h2>
<p><img src="https://git.dendroalsia.net/ben/pretty_rivers/media/branch/main/example.png" alt="Wisconsin Rivers"></p>
</div>
<div class="container">
<hr>
</div>
<div class="container has-text-centered top-pad">
<a href="#top">
<i class="fa fa-arrow-up"></i>
</a>
</div>
<div class="container">
<hr>
</div>
<div class="section" id="footer">
<div class="container has-text-centered">
<span class="footer-text">
</span>
</div>
</div>
</div>
</section>
<script src="https://www.dendroalsia.net/js/bundle.5c23c0437f001a469ca373a465a6f7487203d18e10cdff76d86a60af66d5ee28.js" integrity="sha256-XCPAQ38AGkaco3OkZab3SHID0Y4Qzf922Gpgr2bV7ig="></script>
</body>
</html>

View file

@ -0,0 +1,226 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="referrer" content="no-referrer">
<meta name="description" content="Website Description">
<title>
River Level Charts - Dendroalsia
</title>
<meta property="og:title" content="River Level Charts - Dendroalsia" />
<meta property="og:type" content="website" />
<meta property="og:description" content="Website Description"/>
<meta property="og:url" content="https://www.dendroalsia.net/blog/riverlevelcharts/riverlevelcharts/"/>
<meta property="og:site_name" content="Dendroalsia"/>
<meta property="og:image" content="https://www.dendroalsia.net/home/moss.webp"/>
<link rel="shortcut icon" href="/img/fav.ico">
<link rel="stylesheet" href="/css/main.min.842355dd2ec6a34552c5ffdca0274879393643308cc04aed4876a79219a88809.css" integrity="sha256-hCNV3S7Go0VSxf/coCdIeTk2QzCMwErtSHankhmoiAk=" crossorigin="anonymous" media="screen">
</head>
<body>
<section id="top" class="section">
<div class="container hero ">
<h1 class="bold-title is-1">Posts</h1>
</div>
<div class="section ">
<div class="container">
<hr>
<nav class="navbar" role="navigation" aria-label="main navigation">
<a role="button" class="navbar-burger" data-target="navMenu" aria-label="menu" aria-expanded="false" >
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
</a>
<div class="navbar-menu " id="navMenu">
<a class="navbar-item" href="/">main</a>
<a class="navbar-item" href="">
Back to Posts
</a>
<a class="navbar-item" href="/#about">About</a>
<a class="navbar-item" href="/#contact">Contact</a>
</div>
</nav>
<hr>
</div>
<div class="container">
<h2 class="title is-1 top-pad strong-post-title">
<a href="https://www.dendroalsia.net/blog/riverlevelcharts/riverlevelcharts/">River Level Charts</a>
</h2>
<div class="post-data">
Oct 14, 2024
|
1 minute read
</div>
</div>
<div class="container markdown top-pad">
<p>I&rsquo;m interested in rivers (both ecologically and recreationally) and I want to know water level they are currently at, and how does that compare to their water levels throughout the year and in their recent history.
In the US, the United States Geologic Survey (USGS) maintains a large set of realtime water level sensors, and that dataset is queriable through an API. So I wrote these scripts that take a set of rivers and their associated gauge IDs, downloads the recent and historical data and generates a bunch of graphs.</p>
<p>Here&rsquo;s the code: <a href="https://git.dendroalsia.net/ben/USGS_NWIS">https://git.dendroalsia.net/ben/USGS_NWIS</a></p>
<p><img src="https://git.dendroalsia.net/ben/USGS_NWIS/media/branch/main/example_last_6_months.png" alt="Example graph"></p>
</div>
<div class="container">
<hr>
</div>
<div class="container has-text-centered top-pad">
<a href="#top">
<i class="fa fa-arrow-up"></i>
</a>
</div>
<div class="container">
<hr>
</div>
<div class="section" id="footer">
<div class="container has-text-centered">
<span class="footer-text">
</span>
</div>
</div>
</div>
</section>
<script src="https://www.dendroalsia.net/js/bundle.5c23c0437f001a469ca373a465a6f7487203d18e10cdff76d86a60af66d5ee28.js" integrity="sha256-XCPAQ38AGkaco3OkZab3SHID0Y4Qzf922Gpgr2bV7ig="></script>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 344 KiB

View file

@ -128,6 +128,8 @@ Dendroalsia
@ -136,6 +138,15 @@ Dendroalsia
<a class="navbar-item" href="">Posts</a>
<a class="navbar-item" href="#about">About</a>
@ -169,12 +180,20 @@ Dendroalsia
@ -200,13 +219,6 @@ Dendroalsia
</div>
</div>
<div class="container has-text-centered top-pad">
<a href="#top">
<i class="fa fa-arrow-up"></i>
</a>
</div>
</div>
<div class="container">
<hr>
@ -254,12 +266,6 @@ Dendroalsia
</div>
<div class="container has-text-centered top-pad">
<a href="#top">
<i class="fa fa-arrow-up"></i>
</a>
</div>
</div>
<div class="container">
<hr>

View file

@ -6,6 +6,21 @@
<description>Recent content on Dendroalsia</description>
<generator>Hugo</generator>
<language>en-us</language>
<lastBuildDate>Mon, 14 Oct 2024 19:13:18 +0000</lastBuildDate>
<atom:link href="https://www.dendroalsia.net/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>River Level Charts</title>
<link>https://www.dendroalsia.net/blog/riverlevelcharts/riverlevelcharts/</link>
<pubDate>Mon, 14 Oct 2024 19:13:18 +0000</pubDate>
<guid>https://www.dendroalsia.net/blog/riverlevelcharts/riverlevelcharts/</guid>
<description>&lt;p&gt;I&amp;rsquo;m interested in rivers (both ecologically and recreationally) and I want to know water level they are currently at, and how does that compare to their water levels throughout the year and in their recent history.&#xA;In the US, the United States Geologic Survey (USGS) maintains a large set of realtime water level sensors, and that dataset is queriable through an API. So I wrote these scripts that take a set of rivers and their associated gauge IDs, downloads the recent and historical data and generates a bunch of graphs.&lt;/p&gt;</description>
</item>
<item>
<title>Pretty Rivers</title>
<link>https://www.dendroalsia.net/blog/prettyrivers/prettyrivers/</link>
<pubDate>Mon, 01 Jan 2024 19:13:02 +0000</pubDate>
<guid>https://www.dendroalsia.net/blog/prettyrivers/prettyrivers/</guid>
<description>&lt;p&gt;I like looking at maps that isolate different natural features. And I think that rivers make pretty patterns. So I made a series of scripts that generates a pretty map of rivers. I hope to print the maps of places that are important to me as art.&lt;/p&gt;&#xA;&#xA;&lt;h2 id=&#34;the-code-that-generates-these-maps-is-here&#34; class=&#34;anchor-link&#34;&gt;&lt;a href=&#34;#the-code-that-generates-these-maps-is-here&#34;&gt;The code that generates these maps is here: &lt;a href=&#34;https://git.dendroalsia.net/ben/pretty_rivers&#34;&gt;https://git.dendroalsia.net/ben/pretty_rivers&lt;/a&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://git.dendroalsia.net/ben/pretty_rivers/media/branch/main/example.png&#34; alt=&#34;Wisconsin Rivers&#34;&gt;&lt;/p&gt;</description>
</item>
</channel>
</rss>

View file

@ -87,6 +87,8 @@ Series - Dendroalsia
@ -95,6 +97,22 @@ Series - Dendroalsia
<a class="navbar-item" href="">
Post
</a>
<a class="navbar-item" href="/#about">About</a>

View file

@ -3,6 +3,13 @@
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://www.dendroalsia.net/</loc>
<lastmod>2025-10-30T19:08:55+00:00</lastmod>
</url><url>
<loc>https://www.dendroalsia.net/blog/riverlevelcharts/riverlevelcharts/</loc>
<lastmod>2024-10-14T19:13:18+00:00</lastmod>
</url><url>
<loc>https://www.dendroalsia.net/blog/prettyrivers/prettyrivers/</loc>
<lastmod>2024-01-01T19:13:02+00:00</lastmod>
</url><url>
<loc>https://www.dendroalsia.net/series/</loc>
</url><url>

View file

@ -87,6 +87,8 @@ Tags - Dendroalsia
@ -95,6 +97,22 @@ Tags - Dendroalsia
<a class="navbar-item" href="">
Post
</a>
<a class="navbar-item" href="/#about">About</a>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB