Updated PaperMod theme (error with the time and words span on the cards and each post). Rebuilt the pages.
This commit is contained in:
@ -8,7 +8,7 @@ theme: "PaperMod"
|
||||
themesDir: './themes/'
|
||||
paginate: 7
|
||||
|
||||
googleAnalytics: G-X8VR5M0K20
|
||||
#googleAnalytics: G-X8VR5M0K20
|
||||
enableRobotsTXT: true
|
||||
sectionPagesMenu: main
|
||||
|
||||
@ -45,7 +45,7 @@ params:
|
||||
|
||||
homeInfoParams:
|
||||
Title: "Hey there, stranger! \U0001F44B"
|
||||
Content: Welcome to my running collection of tips, tricks, and scripts about self-hosting and DIY.
|
||||
Content: Welcome to my running collection of tips, tricks, and scripts about self-hosting and DIY. Outwardly, this is my "living resume" to showcase how I leverage my technical abilities in non-technical roles. Inwardly, this is something I can refer back to for items that don't quite belong in my internal documentation, but are more in depth than a Mastodon post.
|
||||
socialIcons:
|
||||
- name: "Mastodon"
|
||||
url: "https://fosstodon.org/@notnorm"
|
||||
|
||||
@ -27,18 +27,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="404 Page not found" />
|
||||
</noscript><meta property="og:title" content="404 Page not found" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/404.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
|
||||
@ -28,18 +28,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="Categories" />
|
||||
</noscript><meta property="og:title" content="Categories" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/categories.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
|
||||
@ -28,18 +28,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="Tutorial" />
|
||||
</noscript><meta property="og:title" content="Tutorial" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/categories/tutorial.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
@ -112,7 +101,7 @@ if (!doNotTrack) {
|
||||
<p>Checking for Entities If you’re following up on this from my first post, you’ve already added your AppDaemon script and confirmed that the AppDaemon logs don’t show any errors. Now is the true test if it’s working: do you have the new sensors in HomeAssistant?!
|
||||
The best way to do this is by just type e from any screen in the HomeAssistant UI! That will bring up a list of entities....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-10-04 10:35:23 -0400 EDT'>October 4, 2023</span>&nbsp;·&nbsp;10 min&nbsp;·&nbsp;1986 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-10-04 10:35:23 -0400 EDT'>October 4, 2023</span> · 10 min · 1986 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to BirdNET-PI & HomeAssistant: Part 2" href="../posts/birdnet_homeassistant_part2.html"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
@ -29,18 +29,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="Norm-working Packets 💾" />
|
||||
</noscript><meta property="og:title" content="Norm-working Packets 💾" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
@ -114,7 +103,7 @@ if (!doNotTrack) {
|
||||
<h1>Hey there, stranger! 👋</h1>
|
||||
</header>
|
||||
<div class="entry-content">
|
||||
Welcome to my running collection of tips, tricks, and scripts about self-hosting and DIY.
|
||||
Welcome to my running collection of tips, tricks, and scripts about self-hosting and DIY. Outwardly, this is my “living resume” to showcase how I leverage my technical abilities in non-technical roles. Inwardly, this is something I can refer back to for items that don’t quite belong in my internal documentation, but are more in depth than a Mastodon post.
|
||||
</div>
|
||||
<footer class="entry-footer">
|
||||
<div class="social-icons">
|
||||
@ -153,7 +142,7 @@ if (!doNotTrack) {
|
||||
<p>This week, I’ve had to make some changes to an automation we had setup for a customer in Workato. The original recipe was made by a co-worker with a bunch of javascript nodes. Even though I’m customer facing and generally not considered a technical employee, I knew the engineer who worked on this was swamped, so I decided to jump in.
|
||||
In order to greatly reduce the number of nodes needed in the single recipe, I created a list of dictionaries in python (with one of the values being another list!...</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-11-15 08:08:49 -0500 EST'>November 15, 2023</span>&nbsp;·&nbsp;6 min&nbsp;·&nbsp;1221 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-11-15 08:08:49 -0500 EST'>November 15, 2023</span> · 6 min · 1221 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Neovim Subtitute Magic" href="./posts/find_and_replace_in_neovim.html"></a>
|
||||
</article>
|
||||
|
||||
@ -167,7 +156,7 @@ In order to greatly reduce the number of nodes needed in the single recipe, I cr
|
||||
<div class="entry-content">
|
||||
<p>If I’m being honest, when I started this quick project to reduce my Neovim plugin footprint size, I thought I was going to be able to get rid of way more plugins! Inspired by this Reddit post that setup a Neovim config using only echasnovski’s mini library, I was reminded that some of my remote server environments were still using Packer as their plugin manager, where my main machine has upgraded to Lazy....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-10-20 18:38:13 -0400 EDT'>October 20, 2023</span>&nbsp;·&nbsp;3 min&nbsp;·&nbsp;602 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-10-20 18:38:13 -0400 EDT'>October 20, 2023</span> · 3 min · 602 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Mini Neovim" href="./posts/mini_neovim.html"></a>
|
||||
</article>
|
||||
|
||||
@ -181,7 +170,7 @@ In order to greatly reduce the number of nodes needed in the single recipe, I cr
|
||||
<div class="entry-content">
|
||||
<p>This is a quick treat! We recently learned that one of our children needs to take medicine twice a day for the foreseeable future. He’s too young to take it on his own, so the twice-a-day responsibility is split up between my partner and I. However, sometimes our schedules don’t overlap so succinctly, so we needed some sort of indicator to let the other know if the previous dose was (or wasn’t!...</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-10-16 11:34:14 -0400 EDT'>October 16, 2023</span>&nbsp;·&nbsp;6 min&nbsp;·&nbsp;1170 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-10-16 11:34:14 -0400 EDT'>October 16, 2023</span> · 6 min · 1170 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to ESP8266 Medicine Indicator Light" href="./posts/medicine_indicator_light.html"></a>
|
||||
</article>
|
||||
|
||||
@ -196,7 +185,7 @@ In order to greatly reduce the number of nodes needed in the single recipe, I cr
|
||||
<p>Checking for Entities If you’re following up on this from my first post, you’ve already added your AppDaemon script and confirmed that the AppDaemon logs don’t show any errors. Now is the true test if it’s working: do you have the new sensors in HomeAssistant?!
|
||||
The best way to do this is by just type e from any screen in the HomeAssistant UI! That will bring up a list of entities....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-10-04 10:35:23 -0400 EDT'>October 4, 2023</span>&nbsp;·&nbsp;10 min&nbsp;·&nbsp;1986 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-10-04 10:35:23 -0400 EDT'>October 4, 2023</span> · 10 min · 1986 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to BirdNET-PI & HomeAssistant: Part 2" href="./posts/birdnet_homeassistant_part2.html"></a>
|
||||
</article>
|
||||
|
||||
@ -212,7 +201,7 @@ The best way to do this is by just type e from any screen in the HomeAssistant U
|
||||
Update: 10/11/2023. A huge thanks to Mastodon User e_mobile2014 who found a broken link in this guide and pointed out that I never explained how to get the mqtt sensors into HomeAssistant!
|
||||
What you will need BirdNET-Pi HomeAssistant AppDaemon MQTT Broker (I use Mosquitto) Background In early 2023, at the height of the Raspberry Pi shortage I felt like a king with an extra Rpi laying around, not being used....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-09-30 11:21:55 -0400 EDT'>September 30, 2023</span>&nbsp;·&nbsp;12 min&nbsp;·&nbsp;2484 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-09-30 11:21:55 -0400 EDT'>September 30, 2023</span> · 12 min · 2484 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Creating a BirdNetPi Dashboard in HomeAssistant - Part 1" href="./posts/birdnet_homeassistant.html"></a>
|
||||
</article>
|
||||
|
||||
@ -227,7 +216,7 @@ What you will need BirdNET-Pi HomeAssistant AppDaemon MQTT Broker (I use Mosquit
|
||||
<p>Why push to multiple repos? Do want to use both Github & and a Self-hosted Git Repo? Here’s how I’ve been doing it!
|
||||
I really enjoy self-hosting services that I use everyday. One of those includes a git-style version control software. In my case, I’ve been running Gitea for a few years now and have been really satisfied with everything (except for that one time that an update broke all my templates)....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-09-22 15:07:10 -0400 EDT'>September 22, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;403 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-09-22 15:07:10 -0400 EDT'>September 22, 2023</span> · 2 min · 403 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Pushing a Single Local Git Repo to Multiple Remote Repos" href="./posts/multiple_git_remotes.html"></a>
|
||||
</article>
|
||||
|
||||
@ -241,7 +230,7 @@ I really enjoy self-hosting services that I use everyday. One of those includes
|
||||
<div class="entry-content">
|
||||
<p>Intro For the last 3 days, I have been spending a few hours after working trying to figure out why my brand new Hugo site was not loading correctly on my sub-domain. For context, I use Nginx to host all my apps and servers, most of them using reverse proxy protocols such as $proxy_host, $forward_scheme, and $port. There are a few more and I’m happy to share some reverse proxy nginx config files....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-09-20 11:33:22 -0400 EDT'>September 20, 2023</span>&nbsp;·&nbsp;5 min&nbsp;·&nbsp;888 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-09-20 11:33:22 -0400 EDT'>September 20, 2023</span> · 5 min · 888 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Trouble Hosting Hugo with Nginx" href="./posts/hosting_hugo_troubles.html"></a>
|
||||
</article>
|
||||
<footer class="page-footer">
|
||||
|
||||
@ -29,18 +29,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="Norm-working Packets 💾" />
|
||||
</noscript><meta property="og:title" content="Norm-working Packets 💾" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
@ -121,7 +110,7 @@ if (!doNotTrack) {
|
||||
<p>Goal A Tutorial Repo for migrating your Nginx Proxy Manager proxy setup to Nginx. I wrote this originally for this reddit post and to post this my Github profile. Thought my website would also be a good place to share it for any passers-by.
|
||||
To give clear instructions to help users migrate from using Nginx Proxy Manager (NPM) to standard Nginx. This tutorial is not exhaustive and there are many other implementations of this transition....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-08-05 15:23:51 -0500 -0500'>August 5, 2023</span>&nbsp;·&nbsp;8 min&nbsp;·&nbsp;1635 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-08-05 15:23:51 -0500 -0500'>August 5, 2023</span> · 8 min · 1635 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Tutorial: Move from NginxProxyManager to Nginx" href="../posts/npm_to_nginx_tutorial.html"></a>
|
||||
</article>
|
||||
|
||||
@ -135,7 +124,7 @@ To give clear instructions to help users migrate from using Nginx Proxy Manager
|
||||
<div class="entry-content">
|
||||
<p>Admittedly, I feel a bit like a child sharing something like this, as there are so many devs that pull and merge requests from contributors on a regular basis. However, while I’ve contributed to documentation and/or tutorials and other non-coding portions of repositories, I feel a tiny bit proud that this was the first instance where I was using a library, found a bug, created an issue, cloned the repo to my local machine, found and fixed the code, and opened a pull request....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2022-09-01 13:25:02 -0400 EDT'>September 1, 2022</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;328 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2022-09-01 13:25:02 -0400 EDT'>September 1, 2022</span> · 2 min · 328 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to My First Merged PR!" href="../posts/whiptail-first-merged-pr.html"></a>
|
||||
</article>
|
||||
<footer class="page-footer">
|
||||
|
||||
@ -28,18 +28,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="Posts" />
|
||||
</noscript><meta property="og:title" content="Posts" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/posts.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
@ -127,7 +116,7 @@ if (!doNotTrack) {
|
||||
<p>This week, I’ve had to make some changes to an automation we had setup for a customer in Workato. The original recipe was made by a co-worker with a bunch of javascript nodes. Even though I’m customer facing and generally not considered a technical employee, I knew the engineer who worked on this was swamped, so I decided to jump in.
|
||||
In order to greatly reduce the number of nodes needed in the single recipe, I created a list of dictionaries in python (with one of the values being another list!...</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-11-15 08:08:49 -0500 EST'>November 15, 2023</span>&nbsp;·&nbsp;6 min&nbsp;·&nbsp;1221 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-11-15 08:08:49 -0500 EST'>November 15, 2023</span> · 6 min · 1221 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Neovim Subtitute Magic" href="./posts/find_and_replace_in_neovim.html"></a>
|
||||
</article>
|
||||
|
||||
@ -141,7 +130,7 @@ In order to greatly reduce the number of nodes needed in the single recipe, I cr
|
||||
<div class="entry-content">
|
||||
<p>If I’m being honest, when I started this quick project to reduce my Neovim plugin footprint size, I thought I was going to be able to get rid of way more plugins! Inspired by this Reddit post that setup a Neovim config using only echasnovski’s mini library, I was reminded that some of my remote server environments were still using Packer as their plugin manager, where my main machine has upgraded to Lazy....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-10-20 18:38:13 -0400 EDT'>October 20, 2023</span>&nbsp;·&nbsp;3 min&nbsp;·&nbsp;602 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-10-20 18:38:13 -0400 EDT'>October 20, 2023</span> · 3 min · 602 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Mini Neovim" href="./posts/mini_neovim.html"></a>
|
||||
</article>
|
||||
|
||||
@ -155,7 +144,7 @@ In order to greatly reduce the number of nodes needed in the single recipe, I cr
|
||||
<div class="entry-content">
|
||||
<p>This is a quick treat! We recently learned that one of our children needs to take medicine twice a day for the foreseeable future. He’s too young to take it on his own, so the twice-a-day responsibility is split up between my partner and I. However, sometimes our schedules don’t overlap so succinctly, so we needed some sort of indicator to let the other know if the previous dose was (or wasn’t!...</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-10-16 11:34:14 -0400 EDT'>October 16, 2023</span>&nbsp;·&nbsp;6 min&nbsp;·&nbsp;1170 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-10-16 11:34:14 -0400 EDT'>October 16, 2023</span> · 6 min · 1170 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to ESP8266 Medicine Indicator Light" href="./posts/medicine_indicator_light.html"></a>
|
||||
</article>
|
||||
|
||||
@ -170,7 +159,7 @@ In order to greatly reduce the number of nodes needed in the single recipe, I cr
|
||||
<p>Checking for Entities If you’re following up on this from my first post, you’ve already added your AppDaemon script and confirmed that the AppDaemon logs don’t show any errors. Now is the true test if it’s working: do you have the new sensors in HomeAssistant?!
|
||||
The best way to do this is by just type e from any screen in the HomeAssistant UI! That will bring up a list of entities....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-10-04 10:35:23 -0400 EDT'>October 4, 2023</span>&nbsp;·&nbsp;10 min&nbsp;·&nbsp;1986 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-10-04 10:35:23 -0400 EDT'>October 4, 2023</span> · 10 min · 1986 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to BirdNET-PI & HomeAssistant: Part 2" href="./posts/birdnet_homeassistant_part2.html"></a>
|
||||
</article>
|
||||
|
||||
@ -186,7 +175,7 @@ The best way to do this is by just type e from any screen in the HomeAssistant U
|
||||
Update: 10/11/2023. A huge thanks to Mastodon User e_mobile2014 who found a broken link in this guide and pointed out that I never explained how to get the mqtt sensors into HomeAssistant!
|
||||
What you will need BirdNET-Pi HomeAssistant AppDaemon MQTT Broker (I use Mosquitto) Background In early 2023, at the height of the Raspberry Pi shortage I felt like a king with an extra Rpi laying around, not being used....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-09-30 11:21:55 -0400 EDT'>September 30, 2023</span>&nbsp;·&nbsp;12 min&nbsp;·&nbsp;2484 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-09-30 11:21:55 -0400 EDT'>September 30, 2023</span> · 12 min · 2484 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Creating a BirdNetPi Dashboard in HomeAssistant - Part 1" href="./posts/birdnet_homeassistant.html"></a>
|
||||
</article>
|
||||
|
||||
@ -201,7 +190,7 @@ What you will need BirdNET-Pi HomeAssistant AppDaemon MQTT Broker (I use Mosquit
|
||||
<p>Why push to multiple repos? Do want to use both Github & and a Self-hosted Git Repo? Here’s how I’ve been doing it!
|
||||
I really enjoy self-hosting services that I use everyday. One of those includes a git-style version control software. In my case, I’ve been running Gitea for a few years now and have been really satisfied with everything (except for that one time that an update broke all my templates)....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-09-22 15:07:10 -0400 EDT'>September 22, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;403 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-09-22 15:07:10 -0400 EDT'>September 22, 2023</span> · 2 min · 403 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Pushing a Single Local Git Repo to Multiple Remote Repos" href="./posts/multiple_git_remotes.html"></a>
|
||||
</article>
|
||||
|
||||
@ -215,7 +204,7 @@ I really enjoy self-hosting services that I use everyday. One of those includes
|
||||
<div class="entry-content">
|
||||
<p>Intro For the last 3 days, I have been spending a few hours after working trying to figure out why my brand new Hugo site was not loading correctly on my sub-domain. For context, I use Nginx to host all my apps and servers, most of them using reverse proxy protocols such as $proxy_host, $forward_scheme, and $port. There are a few more and I’m happy to share some reverse proxy nginx config files....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-09-20 11:33:22 -0400 EDT'>September 20, 2023</span>&nbsp;·&nbsp;5 min&nbsp;·&nbsp;888 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-09-20 11:33:22 -0400 EDT'>September 20, 2023</span> · 5 min · 888 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Trouble Hosting Hugo with Nginx" href="./posts/hosting_hugo_troubles.html"></a>
|
||||
</article>
|
||||
<footer class="page-footer">
|
||||
|
||||
@ -29,18 +29,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="Creating a BirdNetPi Dashboard in HomeAssistant - Part 1" />
|
||||
</noscript><meta property="og:title" content="Creating a BirdNetPi Dashboard in HomeAssistant - Part 1" />
|
||||
<meta property="og:description" content="Learn how to take BirdNET-Pi Detections to create and display entities in HomeAssistant." />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content="/posts/birdnet_homeassistant.html" />
|
||||
@ -158,7 +147,7 @@ if (!doNotTrack) {
|
||||
<div class="post-description">
|
||||
Learn how to take BirdNET-Pi Detections to create and display entities in HomeAssistant.
|
||||
</div>
|
||||
<div class="post-meta"><span title='2023-09-30 11:21:55 -0400 EDT'>September 30, 2023</span>&nbsp;·&nbsp;12 min&nbsp;·&nbsp;2484 words&nbsp;·&nbsp;Me
|
||||
<div class="post-meta"><span title='2023-09-30 11:21:55 -0400 EDT'>September 30, 2023</span> · 12 min · 2484 words · Me
|
||||
|
||||
</div>
|
||||
</header> <div class="toc">
|
||||
@ -606,11 +595,11 @@ look at Home Assistant, see what these sensors look like, and create a rudimenta
|
||||
|
||||
|
||||
<div class="share-buttons">
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Creating a BirdNetPi Dashboard in HomeAssistant - Part 1 on twitter"
|
||||
href="https://twitter.com/intent/tweet/?text=Creating%20a%20BirdNetPi%20Dashboard%20in%20HomeAssistant%20-%20Part%201&url=%2fposts%2fbirdnet_homeassistant.html&hashtags=homeassistant%2cpython%2cdiy">
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Creating a BirdNetPi Dashboard in HomeAssistant - Part 1 on x"
|
||||
href="https://x.com/intent/tweet/?text=Creating%20a%20BirdNetPi%20Dashboard%20in%20HomeAssistant%20-%20Part%201&url=%2fposts%2fbirdnet_homeassistant.html&hashtags=homeassistant%2cpython%2cdiy">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-253.927,424.544c135.939,0 210.268,-112.643 210.268,-210.268c0,-3.218 0,-6.437 -0.153,-9.502c14.406,-10.421 26.973,-23.448 36.935,-38.314c-13.18,5.824 -27.433,9.809 -42.452,11.648c15.326,-9.196 26.973,-23.602 32.49,-40.92c-14.252,8.429 -30.038,14.56 -46.896,17.931c-13.487,-14.406 -32.644,-23.295 -53.946,-23.295c-40.767,0 -73.87,33.104 -73.87,73.87c0,5.824 0.613,11.494 1.992,16.858c-61.456,-3.065 -115.862,-32.49 -152.337,-77.241c-6.284,10.881 -9.962,23.601 -9.962,37.088c0,25.594 13.027,48.276 32.95,61.456c-12.107,-0.307 -23.448,-3.678 -33.41,-9.196l0,0.92c0,35.862 25.441,65.594 59.311,72.49c-6.13,1.686 -12.72,2.606 -19.464,2.606c-4.751,0 -9.348,-0.46 -13.946,-1.38c9.349,29.426 36.628,50.728 68.965,51.341c-25.287,19.771 -57.164,31.571 -91.8,31.571c-5.977,0 -11.801,-0.306 -17.625,-1.073c32.337,21.15 71.264,33.41 112.95,33.41Z" />
|
||||
d="M512 62.554 L 512 449.446 C 512 483.97 483.97 512 449.446 512 L 62.554 512 C 28.03 512 0 483.97 0 449.446 L 0 62.554 C 0 28.03 28.029 0 62.554 0 L 449.446 0 C 483.971 0 512 28.03 512 62.554 Z M 269.951 190.75 L 182.567 75.216 L 56 75.216 L 207.216 272.95 L 63.9 436.783 L 125.266 436.783 L 235.9 310.383 L 332.567 436.783 L 456 436.783 L 298.367 228.367 L 432.367 75.216 L 371.033 75.216 Z M 127.633 110 L 164.101 110 L 383.481 400.065 L 349.5 400.065 Z"/>
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Creating a BirdNetPi Dashboard in HomeAssistant - Part 1 on linkedin"
|
||||
|
||||
@ -29,18 +29,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="BirdNET-PI & HomeAssistant: Part 2" />
|
||||
</noscript><meta property="og:title" content="BirdNET-PI & HomeAssistant: Part 2" />
|
||||
<meta property="og:description" content="A Follow up from the previous post, this tutorial takes all the sensors we created and loads them into a beautiful dashboard!" />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content="/posts/birdnet_homeassistant_part2.html" />
|
||||
@ -158,7 +147,7 @@ if (!doNotTrack) {
|
||||
<div class="post-description">
|
||||
A Follow up from the previous post, this tutorial takes all the sensors we created and loads them into a beautiful dashboard!
|
||||
</div>
|
||||
<div class="post-meta"><span title='2023-10-04 10:35:23 -0400 EDT'>October 4, 2023</span>&nbsp;·&nbsp;10 min&nbsp;·&nbsp;1986 words&nbsp;·&nbsp;Me
|
||||
<div class="post-meta"><span title='2023-10-04 10:35:23 -0400 EDT'>October 4, 2023</span> · 10 min · 1986 words · Me
|
||||
|
||||
</div>
|
||||
</header> <div class="toc">
|
||||
@ -837,11 +826,11 @@ anywhere!</p>
|
||||
|
||||
|
||||
<div class="share-buttons">
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share BirdNET-PI & HomeAssistant: Part 2 on twitter"
|
||||
href="https://twitter.com/intent/tweet/?text=BirdNET-PI%20%26%20HomeAssistant%3a%20Part%202&url=%2fposts%2fbirdnet_homeassistant_part2.html&hashtags=homeassistant%2cdiy%2cselfhosted">
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share BirdNET-PI & HomeAssistant: Part 2 on x"
|
||||
href="https://x.com/intent/tweet/?text=BirdNET-PI%20%26%20HomeAssistant%3a%20Part%202&url=%2fposts%2fbirdnet_homeassistant_part2.html&hashtags=homeassistant%2cdiy%2cselfhosted">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-253.927,424.544c135.939,0 210.268,-112.643 210.268,-210.268c0,-3.218 0,-6.437 -0.153,-9.502c14.406,-10.421 26.973,-23.448 36.935,-38.314c-13.18,5.824 -27.433,9.809 -42.452,11.648c15.326,-9.196 26.973,-23.602 32.49,-40.92c-14.252,8.429 -30.038,14.56 -46.896,17.931c-13.487,-14.406 -32.644,-23.295 -53.946,-23.295c-40.767,0 -73.87,33.104 -73.87,73.87c0,5.824 0.613,11.494 1.992,16.858c-61.456,-3.065 -115.862,-32.49 -152.337,-77.241c-6.284,10.881 -9.962,23.601 -9.962,37.088c0,25.594 13.027,48.276 32.95,61.456c-12.107,-0.307 -23.448,-3.678 -33.41,-9.196l0,0.92c0,35.862 25.441,65.594 59.311,72.49c-6.13,1.686 -12.72,2.606 -19.464,2.606c-4.751,0 -9.348,-0.46 -13.946,-1.38c9.349,29.426 36.628,50.728 68.965,51.341c-25.287,19.771 -57.164,31.571 -91.8,31.571c-5.977,0 -11.801,-0.306 -17.625,-1.073c32.337,21.15 71.264,33.41 112.95,33.41Z" />
|
||||
d="M512 62.554 L 512 449.446 C 512 483.97 483.97 512 449.446 512 L 62.554 512 C 28.03 512 0 483.97 0 449.446 L 0 62.554 C 0 28.03 28.029 0 62.554 0 L 449.446 0 C 483.971 0 512 28.03 512 62.554 Z M 269.951 190.75 L 182.567 75.216 L 56 75.216 L 207.216 272.95 L 63.9 436.783 L 125.266 436.783 L 235.9 310.383 L 332.567 436.783 L 456 436.783 L 298.367 228.367 L 432.367 75.216 L 371.033 75.216 Z M 127.633 110 L 164.101 110 L 383.481 400.065 L 349.5 400.065 Z"/>
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share BirdNET-PI & HomeAssistant: Part 2 on linkedin"
|
||||
|
||||
@ -29,18 +29,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="Neovim Subtitute Magic" />
|
||||
</noscript><meta property="og:title" content="Neovim Subtitute Magic" />
|
||||
<meta property="og:description" content="I was able to speed up some of my workflows by learning how to search and replace specifics in Neovim!" />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content="/posts/find_and_replace_in_neovim.html" />
|
||||
@ -158,7 +147,7 @@ if (!doNotTrack) {
|
||||
<div class="post-description">
|
||||
I was able to speed up some of my workflows by learning how to search and replace specifics in Neovim!
|
||||
</div>
|
||||
<div class="post-meta"><span title='2023-11-15 08:08:49 -0500 EST'>November 15, 2023</span>&nbsp;·&nbsp;6 min&nbsp;·&nbsp;1221 words&nbsp;·&nbsp;Me
|
||||
<div class="post-meta"><span title='2023-11-15 08:08:49 -0500 EST'>November 15, 2023</span> · 6 min · 1221 words · Me
|
||||
|
||||
</div>
|
||||
</header>
|
||||
@ -288,11 +277,11 @@ already read through anything in <a href="https://neovim.io/doc/user/">Neovim&rs
|
||||
|
||||
|
||||
<div class="share-buttons">
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Neovim Subtitute Magic on twitter"
|
||||
href="https://twitter.com/intent/tweet/?text=Neovim%20Subtitute%20Magic&url=%2fposts%2ffind_and_replace_in_neovim.html&hashtags=snippet%2cneovim">
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Neovim Subtitute Magic on x"
|
||||
href="https://x.com/intent/tweet/?text=Neovim%20Subtitute%20Magic&url=%2fposts%2ffind_and_replace_in_neovim.html&hashtags=snippet%2cneovim">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-253.927,424.544c135.939,0 210.268,-112.643 210.268,-210.268c0,-3.218 0,-6.437 -0.153,-9.502c14.406,-10.421 26.973,-23.448 36.935,-38.314c-13.18,5.824 -27.433,9.809 -42.452,11.648c15.326,-9.196 26.973,-23.602 32.49,-40.92c-14.252,8.429 -30.038,14.56 -46.896,17.931c-13.487,-14.406 -32.644,-23.295 -53.946,-23.295c-40.767,0 -73.87,33.104 -73.87,73.87c0,5.824 0.613,11.494 1.992,16.858c-61.456,-3.065 -115.862,-32.49 -152.337,-77.241c-6.284,10.881 -9.962,23.601 -9.962,37.088c0,25.594 13.027,48.276 32.95,61.456c-12.107,-0.307 -23.448,-3.678 -33.41,-9.196l0,0.92c0,35.862 25.441,65.594 59.311,72.49c-6.13,1.686 -12.72,2.606 -19.464,2.606c-4.751,0 -9.348,-0.46 -13.946,-1.38c9.349,29.426 36.628,50.728 68.965,51.341c-25.287,19.771 -57.164,31.571 -91.8,31.571c-5.977,0 -11.801,-0.306 -17.625,-1.073c32.337,21.15 71.264,33.41 112.95,33.41Z" />
|
||||
d="M512 62.554 L 512 449.446 C 512 483.97 483.97 512 449.446 512 L 62.554 512 C 28.03 512 0 483.97 0 449.446 L 0 62.554 C 0 28.03 28.029 0 62.554 0 L 449.446 0 C 483.971 0 512 28.03 512 62.554 Z M 269.951 190.75 L 182.567 75.216 L 56 75.216 L 207.216 272.95 L 63.9 436.783 L 125.266 436.783 L 235.9 310.383 L 332.567 436.783 L 456 436.783 L 298.367 228.367 L 432.367 75.216 L 371.033 75.216 Z M 127.633 110 L 164.101 110 L 383.481 400.065 L 349.5 400.065 Z"/>
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Neovim Subtitute Magic on linkedin"
|
||||
|
||||
@ -29,18 +29,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="Trouble Hosting Hugo with Nginx" />
|
||||
</noscript><meta property="og:title" content="Trouble Hosting Hugo with Nginx" />
|
||||
<meta property="og:description" content="Learn one way to push your git changes to multiple remote repositories." />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content="/posts/hosting_hugo_troubles.html" />
|
||||
@ -158,7 +147,7 @@ if (!doNotTrack) {
|
||||
<div class="post-description">
|
||||
Learn one way to push your git changes to multiple remote repositories.
|
||||
</div>
|
||||
<div class="post-meta"><span title='2023-09-20 11:33:22 -0400 EDT'>September 20, 2023</span>&nbsp;·&nbsp;5 min&nbsp;·&nbsp;888 words&nbsp;·&nbsp;Me
|
||||
<div class="post-meta"><span title='2023-09-20 11:33:22 -0400 EDT'>September 20, 2023</span> · 5 min · 888 words · Me
|
||||
|
||||
</div>
|
||||
</header>
|
||||
@ -315,11 +304,11 @@ server {
|
||||
|
||||
|
||||
<div class="share-buttons">
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Trouble Hosting Hugo with Nginx on twitter"
|
||||
href="https://twitter.com/intent/tweet/?text=Trouble%20Hosting%20Hugo%20with%20Nginx&url=%2fposts%2fhosting_hugo_troubles.html&hashtags=git%2cbackups%2ccommandline">
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Trouble Hosting Hugo with Nginx on x"
|
||||
href="https://x.com/intent/tweet/?text=Trouble%20Hosting%20Hugo%20with%20Nginx&url=%2fposts%2fhosting_hugo_troubles.html&hashtags=git%2cbackups%2ccommandline">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-253.927,424.544c135.939,0 210.268,-112.643 210.268,-210.268c0,-3.218 0,-6.437 -0.153,-9.502c14.406,-10.421 26.973,-23.448 36.935,-38.314c-13.18,5.824 -27.433,9.809 -42.452,11.648c15.326,-9.196 26.973,-23.602 32.49,-40.92c-14.252,8.429 -30.038,14.56 -46.896,17.931c-13.487,-14.406 -32.644,-23.295 -53.946,-23.295c-40.767,0 -73.87,33.104 -73.87,73.87c0,5.824 0.613,11.494 1.992,16.858c-61.456,-3.065 -115.862,-32.49 -152.337,-77.241c-6.284,10.881 -9.962,23.601 -9.962,37.088c0,25.594 13.027,48.276 32.95,61.456c-12.107,-0.307 -23.448,-3.678 -33.41,-9.196l0,0.92c0,35.862 25.441,65.594 59.311,72.49c-6.13,1.686 -12.72,2.606 -19.464,2.606c-4.751,0 -9.348,-0.46 -13.946,-1.38c9.349,29.426 36.628,50.728 68.965,51.341c-25.287,19.771 -57.164,31.571 -91.8,31.571c-5.977,0 -11.801,-0.306 -17.625,-1.073c32.337,21.15 71.264,33.41 112.95,33.41Z" />
|
||||
d="M512 62.554 L 512 449.446 C 512 483.97 483.97 512 449.446 512 L 62.554 512 C 28.03 512 0 483.97 0 449.446 L 0 62.554 C 0 28.03 28.029 0 62.554 0 L 449.446 0 C 483.971 0 512 28.03 512 62.554 Z M 269.951 190.75 L 182.567 75.216 L 56 75.216 L 207.216 272.95 L 63.9 436.783 L 125.266 436.783 L 235.9 310.383 L 332.567 436.783 L 456 436.783 L 298.367 228.367 L 432.367 75.216 L 371.033 75.216 Z M 127.633 110 L 164.101 110 L 383.481 400.065 L 349.5 400.065 Z"/>
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Trouble Hosting Hugo with Nginx on linkedin"
|
||||
|
||||
@ -29,18 +29,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="ESP8266 Medicine Indicator Light" />
|
||||
</noscript><meta property="og:title" content="ESP8266 Medicine Indicator Light" />
|
||||
<meta property="og:description" content="Learn how to make an ESP8266 and a few simple components into an indicator light." />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content="/posts/medicine_indicator_light.html" />
|
||||
@ -158,7 +147,7 @@ if (!doNotTrack) {
|
||||
<div class="post-description">
|
||||
Learn how to make an ESP8266 and a few simple components into an indicator light.
|
||||
</div>
|
||||
<div class="post-meta"><span title='2023-10-16 11:34:14 -0400 EDT'>October 16, 2023</span>&nbsp;·&nbsp;6 min&nbsp;·&nbsp;1170 words&nbsp;·&nbsp;Me
|
||||
<div class="post-meta"><span title='2023-10-16 11:34:14 -0400 EDT'>October 16, 2023</span> · 6 min · 1170 words · Me
|
||||
|
||||
</div>
|
||||
</header> <div class="toc">
|
||||
@ -497,11 +486,11 @@ img {
|
||||
|
||||
|
||||
<div class="share-buttons">
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share ESP8266 Medicine Indicator Light on twitter"
|
||||
href="https://twitter.com/intent/tweet/?text=ESP8266%20Medicine%20Indicator%20Light&url=%2fposts%2fmedicine_indicator_light.html&hashtags=diy%2ctutorial%2cesp">
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share ESP8266 Medicine Indicator Light on x"
|
||||
href="https://x.com/intent/tweet/?text=ESP8266%20Medicine%20Indicator%20Light&url=%2fposts%2fmedicine_indicator_light.html&hashtags=diy%2ctutorial%2cesp">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-253.927,424.544c135.939,0 210.268,-112.643 210.268,-210.268c0,-3.218 0,-6.437 -0.153,-9.502c14.406,-10.421 26.973,-23.448 36.935,-38.314c-13.18,5.824 -27.433,9.809 -42.452,11.648c15.326,-9.196 26.973,-23.602 32.49,-40.92c-14.252,8.429 -30.038,14.56 -46.896,17.931c-13.487,-14.406 -32.644,-23.295 -53.946,-23.295c-40.767,0 -73.87,33.104 -73.87,73.87c0,5.824 0.613,11.494 1.992,16.858c-61.456,-3.065 -115.862,-32.49 -152.337,-77.241c-6.284,10.881 -9.962,23.601 -9.962,37.088c0,25.594 13.027,48.276 32.95,61.456c-12.107,-0.307 -23.448,-3.678 -33.41,-9.196l0,0.92c0,35.862 25.441,65.594 59.311,72.49c-6.13,1.686 -12.72,2.606 -19.464,2.606c-4.751,0 -9.348,-0.46 -13.946,-1.38c9.349,29.426 36.628,50.728 68.965,51.341c-25.287,19.771 -57.164,31.571 -91.8,31.571c-5.977,0 -11.801,-0.306 -17.625,-1.073c32.337,21.15 71.264,33.41 112.95,33.41Z" />
|
||||
d="M512 62.554 L 512 449.446 C 512 483.97 483.97 512 449.446 512 L 62.554 512 C 28.03 512 0 483.97 0 449.446 L 0 62.554 C 0 28.03 28.029 0 62.554 0 L 449.446 0 C 483.971 0 512 28.03 512 62.554 Z M 269.951 190.75 L 182.567 75.216 L 56 75.216 L 207.216 272.95 L 63.9 436.783 L 125.266 436.783 L 235.9 310.383 L 332.567 436.783 L 456 436.783 L 298.367 228.367 L 432.367 75.216 L 371.033 75.216 Z M 127.633 110 L 164.101 110 L 383.481 400.065 L 349.5 400.065 Z"/>
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share ESP8266 Medicine Indicator Light on linkedin"
|
||||
|
||||
@ -29,18 +29,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="Mini Neovim" />
|
||||
</noscript><meta property="og:title" content="Mini Neovim" />
|
||||
<meta property="og:description" content="Neovim is already super efficient and lightweight, but sometimes I need a barebones config for my servers and remote, miniature development environments." />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content="/posts/mini_neovim.html" />
|
||||
@ -158,7 +147,7 @@ if (!doNotTrack) {
|
||||
<div class="post-description">
|
||||
Neovim is already super efficient and lightweight, but sometimes I need a barebones config for my servers and remote, miniature development environments.
|
||||
</div>
|
||||
<div class="post-meta"><span title='2023-10-20 18:38:13 -0400 EDT'>October 20, 2023</span>&nbsp;·&nbsp;3 min&nbsp;·&nbsp;602 words&nbsp;·&nbsp;Me
|
||||
<div class="post-meta"><span title='2023-10-20 18:38:13 -0400 EDT'>October 20, 2023</span> · 3 min · 602 words · Me
|
||||
|
||||
</div>
|
||||
</header>
|
||||
@ -343,11 +332,11 @@ want to use the curly brackets in the final string that you use.</p>
|
||||
|
||||
|
||||
<div class="share-buttons">
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Mini Neovim on twitter"
|
||||
href="https://twitter.com/intent/tweet/?text=Mini%20Neovim&url=%2fposts%2fmini_neovim.html&hashtags=neovim%2ctools">
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Mini Neovim on x"
|
||||
href="https://x.com/intent/tweet/?text=Mini%20Neovim&url=%2fposts%2fmini_neovim.html&hashtags=neovim%2ctools">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-253.927,424.544c135.939,0 210.268,-112.643 210.268,-210.268c0,-3.218 0,-6.437 -0.153,-9.502c14.406,-10.421 26.973,-23.448 36.935,-38.314c-13.18,5.824 -27.433,9.809 -42.452,11.648c15.326,-9.196 26.973,-23.602 32.49,-40.92c-14.252,8.429 -30.038,14.56 -46.896,17.931c-13.487,-14.406 -32.644,-23.295 -53.946,-23.295c-40.767,0 -73.87,33.104 -73.87,73.87c0,5.824 0.613,11.494 1.992,16.858c-61.456,-3.065 -115.862,-32.49 -152.337,-77.241c-6.284,10.881 -9.962,23.601 -9.962,37.088c0,25.594 13.027,48.276 32.95,61.456c-12.107,-0.307 -23.448,-3.678 -33.41,-9.196l0,0.92c0,35.862 25.441,65.594 59.311,72.49c-6.13,1.686 -12.72,2.606 -19.464,2.606c-4.751,0 -9.348,-0.46 -13.946,-1.38c9.349,29.426 36.628,50.728 68.965,51.341c-25.287,19.771 -57.164,31.571 -91.8,31.571c-5.977,0 -11.801,-0.306 -17.625,-1.073c32.337,21.15 71.264,33.41 112.95,33.41Z" />
|
||||
d="M512 62.554 L 512 449.446 C 512 483.97 483.97 512 449.446 512 L 62.554 512 C 28.03 512 0 483.97 0 449.446 L 0 62.554 C 0 28.03 28.029 0 62.554 0 L 449.446 0 C 483.971 0 512 28.03 512 62.554 Z M 269.951 190.75 L 182.567 75.216 L 56 75.216 L 207.216 272.95 L 63.9 436.783 L 125.266 436.783 L 235.9 310.383 L 332.567 436.783 L 456 436.783 L 298.367 228.367 L 432.367 75.216 L 371.033 75.216 Z M 127.633 110 L 164.101 110 L 383.481 400.065 L 349.5 400.065 Z"/>
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Mini Neovim on linkedin"
|
||||
|
||||
@ -29,18 +29,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="Pushing a Single Local Git Repo to Multiple Remote Repos" />
|
||||
</noscript><meta property="og:title" content="Pushing a Single Local Git Repo to Multiple Remote Repos" />
|
||||
<meta property="og:description" content="Learn one way to push your git changes to multiple remote repositories." />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content="/posts/multiple_git_remotes.html" />
|
||||
@ -158,7 +147,7 @@ if (!doNotTrack) {
|
||||
<div class="post-description">
|
||||
Learn one way to push your git changes to multiple remote repositories.
|
||||
</div>
|
||||
<div class="post-meta"><span title='2023-09-22 15:07:10 -0400 EDT'>September 22, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;403 words&nbsp;·&nbsp;Me
|
||||
<div class="post-meta"><span title='2023-09-22 15:07:10 -0400 EDT'>September 22, 2023</span> · 2 min · 403 words · Me
|
||||
|
||||
</div>
|
||||
</header> <div class="toc">
|
||||
@ -236,11 +225,11 @@ there twice, once for <code>(push)</code> and once for <code>(fetch)</code>.</p>
|
||||
|
||||
|
||||
<div class="share-buttons">
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Pushing a Single Local Git Repo to Multiple Remote Repos on twitter"
|
||||
href="https://twitter.com/intent/tweet/?text=Pushing%20a%20Single%20Local%20Git%20Repo%20to%20Multiple%20Remote%20Repos&url=%2fposts%2fmultiple_git_remotes.html&hashtags=git%2cbackups%2ccommandline">
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Pushing a Single Local Git Repo to Multiple Remote Repos on x"
|
||||
href="https://x.com/intent/tweet/?text=Pushing%20a%20Single%20Local%20Git%20Repo%20to%20Multiple%20Remote%20Repos&url=%2fposts%2fmultiple_git_remotes.html&hashtags=git%2cbackups%2ccommandline">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-253.927,424.544c135.939,0 210.268,-112.643 210.268,-210.268c0,-3.218 0,-6.437 -0.153,-9.502c14.406,-10.421 26.973,-23.448 36.935,-38.314c-13.18,5.824 -27.433,9.809 -42.452,11.648c15.326,-9.196 26.973,-23.602 32.49,-40.92c-14.252,8.429 -30.038,14.56 -46.896,17.931c-13.487,-14.406 -32.644,-23.295 -53.946,-23.295c-40.767,0 -73.87,33.104 -73.87,73.87c0,5.824 0.613,11.494 1.992,16.858c-61.456,-3.065 -115.862,-32.49 -152.337,-77.241c-6.284,10.881 -9.962,23.601 -9.962,37.088c0,25.594 13.027,48.276 32.95,61.456c-12.107,-0.307 -23.448,-3.678 -33.41,-9.196l0,0.92c0,35.862 25.441,65.594 59.311,72.49c-6.13,1.686 -12.72,2.606 -19.464,2.606c-4.751,0 -9.348,-0.46 -13.946,-1.38c9.349,29.426 36.628,50.728 68.965,51.341c-25.287,19.771 -57.164,31.571 -91.8,31.571c-5.977,0 -11.801,-0.306 -17.625,-1.073c32.337,21.15 71.264,33.41 112.95,33.41Z" />
|
||||
d="M512 62.554 L 512 449.446 C 512 483.97 483.97 512 449.446 512 L 62.554 512 C 28.03 512 0 483.97 0 449.446 L 0 62.554 C 0 28.03 28.029 0 62.554 0 L 449.446 0 C 483.971 0 512 28.03 512 62.554 Z M 269.951 190.75 L 182.567 75.216 L 56 75.216 L 207.216 272.95 L 63.9 436.783 L 125.266 436.783 L 235.9 310.383 L 332.567 436.783 L 456 436.783 L 298.367 228.367 L 432.367 75.216 L 371.033 75.216 Z M 127.633 110 L 164.101 110 L 383.481 400.065 L 349.5 400.065 Z"/>
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Pushing a Single Local Git Repo to Multiple Remote Repos on linkedin"
|
||||
|
||||
@ -29,18 +29,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="Tutorial: Move from NginxProxyManager to Nginx" />
|
||||
</noscript><meta property="og:title" content="Tutorial: Move from NginxProxyManager to Nginx" />
|
||||
<meta property="og:description" content="Learn one way to push your git changes to multiple remote repositories." />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content="/posts/npm_to_nginx_tutorial.html" />
|
||||
@ -158,7 +147,7 @@ if (!doNotTrack) {
|
||||
<div class="post-description">
|
||||
Learn one way to push your git changes to multiple remote repositories.
|
||||
</div>
|
||||
<div class="post-meta"><span title='2023-08-05 15:23:51 -0500 -0500'>August 5, 2023</span>&nbsp;·&nbsp;8 min&nbsp;·&nbsp;1635 words&nbsp;·&nbsp;Me
|
||||
<div class="post-meta"><span title='2023-08-05 15:23:51 -0500 -0500'>August 5, 2023</span> · 8 min · 1635 words · Me
|
||||
|
||||
</div>
|
||||
</header> <div class="toc">
|
||||
@ -472,11 +461,11 @@ paste them from the <a href="https://github.com/NginxProxyManager/nginx-proxy-ma
|
||||
|
||||
|
||||
<div class="share-buttons">
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Tutorial: Move from NginxProxyManager to Nginx on twitter"
|
||||
href="https://twitter.com/intent/tweet/?text=Tutorial%3a%20Move%20from%20NginxProxyManager%20to%20Nginx&url=%2fposts%2fnpm_to_nginx_tutorial.html&hashtags=git%2cbackups%2ccommandline">
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Tutorial: Move from NginxProxyManager to Nginx on x"
|
||||
href="https://x.com/intent/tweet/?text=Tutorial%3a%20Move%20from%20NginxProxyManager%20to%20Nginx&url=%2fposts%2fnpm_to_nginx_tutorial.html&hashtags=git%2cbackups%2ccommandline">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-253.927,424.544c135.939,0 210.268,-112.643 210.268,-210.268c0,-3.218 0,-6.437 -0.153,-9.502c14.406,-10.421 26.973,-23.448 36.935,-38.314c-13.18,5.824 -27.433,9.809 -42.452,11.648c15.326,-9.196 26.973,-23.602 32.49,-40.92c-14.252,8.429 -30.038,14.56 -46.896,17.931c-13.487,-14.406 -32.644,-23.295 -53.946,-23.295c-40.767,0 -73.87,33.104 -73.87,73.87c0,5.824 0.613,11.494 1.992,16.858c-61.456,-3.065 -115.862,-32.49 -152.337,-77.241c-6.284,10.881 -9.962,23.601 -9.962,37.088c0,25.594 13.027,48.276 32.95,61.456c-12.107,-0.307 -23.448,-3.678 -33.41,-9.196l0,0.92c0,35.862 25.441,65.594 59.311,72.49c-6.13,1.686 -12.72,2.606 -19.464,2.606c-4.751,0 -9.348,-0.46 -13.946,-1.38c9.349,29.426 36.628,50.728 68.965,51.341c-25.287,19.771 -57.164,31.571 -91.8,31.571c-5.977,0 -11.801,-0.306 -17.625,-1.073c32.337,21.15 71.264,33.41 112.95,33.41Z" />
|
||||
d="M512 62.554 L 512 449.446 C 512 483.97 483.97 512 449.446 512 L 62.554 512 C 28.03 512 0 483.97 0 449.446 L 0 62.554 C 0 28.03 28.029 0 62.554 0 L 449.446 0 C 483.971 0 512 28.03 512 62.554 Z M 269.951 190.75 L 182.567 75.216 L 56 75.216 L 207.216 272.95 L 63.9 436.783 L 125.266 436.783 L 235.9 310.383 L 332.567 436.783 L 456 436.783 L 298.367 228.367 L 432.367 75.216 L 371.033 75.216 Z M 127.633 110 L 164.101 110 L 383.481 400.065 L 349.5 400.065 Z"/>
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Tutorial: Move from NginxProxyManager to Nginx on linkedin"
|
||||
|
||||
@ -28,18 +28,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="Posts" />
|
||||
</noscript><meta property="og:title" content="Posts" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/posts.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
@ -127,7 +116,7 @@ if (!doNotTrack) {
|
||||
<p>Goal A Tutorial Repo for migrating your Nginx Proxy Manager proxy setup to Nginx. I wrote this originally for this reddit post and to post this my Github profile. Thought my website would also be a good place to share it for any passers-by.
|
||||
To give clear instructions to help users migrate from using Nginx Proxy Manager (NPM) to standard Nginx. This tutorial is not exhaustive and there are many other implementations of this transition....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-08-05 15:23:51 -0500 -0500'>August 5, 2023</span>&nbsp;·&nbsp;8 min&nbsp;·&nbsp;1635 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-08-05 15:23:51 -0500 -0500'>August 5, 2023</span> · 8 min · 1635 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Tutorial: Move from NginxProxyManager to Nginx" href="../../posts/npm_to_nginx_tutorial.html"></a>
|
||||
</article>
|
||||
|
||||
@ -141,7 +130,7 @@ To give clear instructions to help users migrate from using Nginx Proxy Manager
|
||||
<div class="entry-content">
|
||||
<p>Admittedly, I feel a bit like a child sharing something like this, as there are so many devs that pull and merge requests from contributors on a regular basis. However, while I’ve contributed to documentation and/or tutorials and other non-coding portions of repositories, I feel a tiny bit proud that this was the first instance where I was using a library, found a bug, created an issue, cloned the repo to my local machine, found and fixed the code, and opened a pull request....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2022-09-01 13:25:02 -0400 EDT'>September 1, 2022</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;328 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2022-09-01 13:25:02 -0400 EDT'>September 1, 2022</span> · 2 min · 328 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to My First Merged PR!" href="../../posts/whiptail-first-merged-pr.html"></a>
|
||||
</article>
|
||||
<footer class="page-footer">
|
||||
|
||||
@ -29,18 +29,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="My First Merged PR!" />
|
||||
</noscript><meta property="og:title" content="My First Merged PR!" />
|
||||
<meta property="og:description" content="Child like joy of having my first merged PR! I recently was using Whiptail library and fixed a bug." />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content="/posts/whiptail-first-merged-pr.html" />
|
||||
@ -158,7 +147,7 @@ if (!doNotTrack) {
|
||||
<div class="post-description">
|
||||
Child like joy of having my first merged PR! I recently was using Whiptail library and fixed a bug.
|
||||
</div>
|
||||
<div class="post-meta"><span title='2022-09-01 13:25:02 -0400 EDT'>September 1, 2022</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;328 words&nbsp;·&nbsp;Me
|
||||
<div class="post-meta"><span title='2022-09-01 13:25:02 -0400 EDT'>September 1, 2022</span> · 2 min · 328 words · Me
|
||||
|
||||
</div>
|
||||
</header>
|
||||
@ -198,11 +187,11 @@ such a regular basis, I need to ensure the project pulls from Meshtastic command
|
||||
|
||||
|
||||
<div class="share-buttons">
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share My First Merged PR! on twitter"
|
||||
href="https://twitter.com/intent/tweet/?text=My%20First%20Merged%20PR%21&url=%2fposts%2fwhiptail-first-merged-pr.html&hashtags=git%2copensource%2cdiy">
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share My First Merged PR! on x"
|
||||
href="https://x.com/intent/tweet/?text=My%20First%20Merged%20PR%21&url=%2fposts%2fwhiptail-first-merged-pr.html&hashtags=git%2copensource%2cdiy">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-253.927,424.544c135.939,0 210.268,-112.643 210.268,-210.268c0,-3.218 0,-6.437 -0.153,-9.502c14.406,-10.421 26.973,-23.448 36.935,-38.314c-13.18,5.824 -27.433,9.809 -42.452,11.648c15.326,-9.196 26.973,-23.602 32.49,-40.92c-14.252,8.429 -30.038,14.56 -46.896,17.931c-13.487,-14.406 -32.644,-23.295 -53.946,-23.295c-40.767,0 -73.87,33.104 -73.87,73.87c0,5.824 0.613,11.494 1.992,16.858c-61.456,-3.065 -115.862,-32.49 -152.337,-77.241c-6.284,10.881 -9.962,23.601 -9.962,37.088c0,25.594 13.027,48.276 32.95,61.456c-12.107,-0.307 -23.448,-3.678 -33.41,-9.196l0,0.92c0,35.862 25.441,65.594 59.311,72.49c-6.13,1.686 -12.72,2.606 -19.464,2.606c-4.751,0 -9.348,-0.46 -13.946,-1.38c9.349,29.426 36.628,50.728 68.965,51.341c-25.287,19.771 -57.164,31.571 -91.8,31.571c-5.977,0 -11.801,-0.306 -17.625,-1.073c32.337,21.15 71.264,33.41 112.95,33.41Z" />
|
||||
d="M512 62.554 L 512 449.446 C 512 483.97 483.97 512 449.446 512 L 62.554 512 C 28.03 512 0 483.97 0 449.446 L 0 62.554 C 0 28.03 28.029 0 62.554 0 L 449.446 0 C 483.971 0 512 28.03 512 62.554 Z M 269.951 190.75 L 182.567 75.216 L 56 75.216 L 207.216 272.95 L 63.9 436.783 L 125.266 436.783 L 235.9 310.383 L 332.567 436.783 L 456 436.783 L 298.367 228.367 L 432.367 75.216 L 371.033 75.216 Z M 127.633 110 L 164.101 110 L 383.481 400.065 L 349.5 400.065 Z"/>
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share My First Merged PR! on linkedin"
|
||||
|
||||
@ -28,18 +28,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="Series" />
|
||||
</noscript><meta property="og:title" content="Series" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/series.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
|
||||
@ -28,18 +28,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="Tags" />
|
||||
</noscript><meta property="og:title" content="Tags" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
|
||||
@ -28,18 +28,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="backups" />
|
||||
</noscript><meta property="og:title" content="backups" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/backups.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
@ -112,7 +101,7 @@ if (!doNotTrack) {
|
||||
<p>Why push to multiple repos? Do want to use both Github & and a Self-hosted Git Repo? Here’s how I’ve been doing it!
|
||||
I really enjoy self-hosting services that I use everyday. One of those includes a git-style version control software. In my case, I’ve been running Gitea for a few years now and have been really satisfied with everything (except for that one time that an update broke all my templates)....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-09-22 15:07:10 -0400 EDT'>September 22, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;403 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-09-22 15:07:10 -0400 EDT'>September 22, 2023</span> · 2 min · 403 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Pushing a Single Local Git Repo to Multiple Remote Repos" href="../posts/multiple_git_remotes.html"></a>
|
||||
</article>
|
||||
|
||||
@ -126,7 +115,7 @@ I really enjoy self-hosting services that I use everyday. One of those includes
|
||||
<div class="entry-content">
|
||||
<p>Intro For the last 3 days, I have been spending a few hours after working trying to figure out why my brand new Hugo site was not loading correctly on my sub-domain. For context, I use Nginx to host all my apps and servers, most of them using reverse proxy protocols such as $proxy_host, $forward_scheme, and $port. There are a few more and I’m happy to share some reverse proxy nginx config files....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-09-20 11:33:22 -0400 EDT'>September 20, 2023</span>&nbsp;·&nbsp;5 min&nbsp;·&nbsp;888 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-09-20 11:33:22 -0400 EDT'>September 20, 2023</span> · 5 min · 888 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Trouble Hosting Hugo with Nginx" href="../posts/hosting_hugo_troubles.html"></a>
|
||||
</article>
|
||||
|
||||
@ -141,7 +130,7 @@ I really enjoy self-hosting services that I use everyday. One of those includes
|
||||
<p>Goal A Tutorial Repo for migrating your Nginx Proxy Manager proxy setup to Nginx. I wrote this originally for this reddit post and to post this my Github profile. Thought my website would also be a good place to share it for any passers-by.
|
||||
To give clear instructions to help users migrate from using Nginx Proxy Manager (NPM) to standard Nginx. This tutorial is not exhaustive and there are many other implementations of this transition....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-08-05 15:23:51 -0500 -0500'>August 5, 2023</span>&nbsp;·&nbsp;8 min&nbsp;·&nbsp;1635 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-08-05 15:23:51 -0500 -0500'>August 5, 2023</span> · 8 min · 1635 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Tutorial: Move from NginxProxyManager to Nginx" href="../posts/npm_to_nginx_tutorial.html"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
@ -28,18 +28,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="commandline" />
|
||||
</noscript><meta property="og:title" content="commandline" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/commandline.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
@ -112,7 +101,7 @@ if (!doNotTrack) {
|
||||
<p>Why push to multiple repos? Do want to use both Github & and a Self-hosted Git Repo? Here’s how I’ve been doing it!
|
||||
I really enjoy self-hosting services that I use everyday. One of those includes a git-style version control software. In my case, I’ve been running Gitea for a few years now and have been really satisfied with everything (except for that one time that an update broke all my templates)....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-09-22 15:07:10 -0400 EDT'>September 22, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;403 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-09-22 15:07:10 -0400 EDT'>September 22, 2023</span> · 2 min · 403 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Pushing a Single Local Git Repo to Multiple Remote Repos" href="../posts/multiple_git_remotes.html"></a>
|
||||
</article>
|
||||
|
||||
@ -126,7 +115,7 @@ I really enjoy self-hosting services that I use everyday. One of those includes
|
||||
<div class="entry-content">
|
||||
<p>Intro For the last 3 days, I have been spending a few hours after working trying to figure out why my brand new Hugo site was not loading correctly on my sub-domain. For context, I use Nginx to host all my apps and servers, most of them using reverse proxy protocols such as $proxy_host, $forward_scheme, and $port. There are a few more and I’m happy to share some reverse proxy nginx config files....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-09-20 11:33:22 -0400 EDT'>September 20, 2023</span>&nbsp;·&nbsp;5 min&nbsp;·&nbsp;888 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-09-20 11:33:22 -0400 EDT'>September 20, 2023</span> · 5 min · 888 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Trouble Hosting Hugo with Nginx" href="../posts/hosting_hugo_troubles.html"></a>
|
||||
</article>
|
||||
|
||||
@ -141,7 +130,7 @@ I really enjoy self-hosting services that I use everyday. One of those includes
|
||||
<p>Goal A Tutorial Repo for migrating your Nginx Proxy Manager proxy setup to Nginx. I wrote this originally for this reddit post and to post this my Github profile. Thought my website would also be a good place to share it for any passers-by.
|
||||
To give clear instructions to help users migrate from using Nginx Proxy Manager (NPM) to standard Nginx. This tutorial is not exhaustive and there are many other implementations of this transition....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-08-05 15:23:51 -0500 -0500'>August 5, 2023</span>&nbsp;·&nbsp;8 min&nbsp;·&nbsp;1635 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-08-05 15:23:51 -0500 -0500'>August 5, 2023</span> · 8 min · 1635 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Tutorial: Move from NginxProxyManager to Nginx" href="../posts/npm_to_nginx_tutorial.html"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
@ -28,18 +28,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="diy" />
|
||||
</noscript><meta property="og:title" content="diy" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/diy.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
@ -111,7 +100,7 @@ if (!doNotTrack) {
|
||||
<div class="entry-content">
|
||||
<p>This is a quick treat! We recently learned that one of our children needs to take medicine twice a day for the foreseeable future. He’s too young to take it on his own, so the twice-a-day responsibility is split up between my partner and I. However, sometimes our schedules don’t overlap so succinctly, so we needed some sort of indicator to let the other know if the previous dose was (or wasn’t!...</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-10-16 11:34:14 -0400 EDT'>October 16, 2023</span>&nbsp;·&nbsp;6 min&nbsp;·&nbsp;1170 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-10-16 11:34:14 -0400 EDT'>October 16, 2023</span> · 6 min · 1170 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to ESP8266 Medicine Indicator Light" href="../posts/medicine_indicator_light.html"></a>
|
||||
</article>
|
||||
|
||||
@ -126,7 +115,7 @@ if (!doNotTrack) {
|
||||
<p>Checking for Entities If you’re following up on this from my first post, you’ve already added your AppDaemon script and confirmed that the AppDaemon logs don’t show any errors. Now is the true test if it’s working: do you have the new sensors in HomeAssistant?!
|
||||
The best way to do this is by just type e from any screen in the HomeAssistant UI! That will bring up a list of entities....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-10-04 10:35:23 -0400 EDT'>October 4, 2023</span>&nbsp;·&nbsp;10 min&nbsp;·&nbsp;1986 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-10-04 10:35:23 -0400 EDT'>October 4, 2023</span> · 10 min · 1986 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to BirdNET-PI & HomeAssistant: Part 2" href="../posts/birdnet_homeassistant_part2.html"></a>
|
||||
</article>
|
||||
|
||||
@ -142,7 +131,7 @@ The best way to do this is by just type e from any screen in the HomeAssistant U
|
||||
Update: 10/11/2023. A huge thanks to Mastodon User e_mobile2014 who found a broken link in this guide and pointed out that I never explained how to get the mqtt sensors into HomeAssistant!
|
||||
What you will need BirdNET-Pi HomeAssistant AppDaemon MQTT Broker (I use Mosquitto) Background In early 2023, at the height of the Raspberry Pi shortage I felt like a king with an extra Rpi laying around, not being used....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-09-30 11:21:55 -0400 EDT'>September 30, 2023</span>&nbsp;·&nbsp;12 min&nbsp;·&nbsp;2484 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-09-30 11:21:55 -0400 EDT'>September 30, 2023</span> · 12 min · 2484 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Creating a BirdNetPi Dashboard in HomeAssistant - Part 1" href="../posts/birdnet_homeassistant.html"></a>
|
||||
</article>
|
||||
|
||||
@ -156,7 +145,7 @@ What you will need BirdNET-Pi HomeAssistant AppDaemon MQTT Broker (I use Mosquit
|
||||
<div class="entry-content">
|
||||
<p>Admittedly, I feel a bit like a child sharing something like this, as there are so many devs that pull and merge requests from contributors on a regular basis. However, while I’ve contributed to documentation and/or tutorials and other non-coding portions of repositories, I feel a tiny bit proud that this was the first instance where I was using a library, found a bug, created an issue, cloned the repo to my local machine, found and fixed the code, and opened a pull request....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2022-09-01 13:25:02 -0400 EDT'>September 1, 2022</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;328 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2022-09-01 13:25:02 -0400 EDT'>September 1, 2022</span> · 2 min · 328 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to My First Merged PR!" href="../posts/whiptail-first-merged-pr.html"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
@ -28,18 +28,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="esp" />
|
||||
</noscript><meta property="og:title" content="esp" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/esp.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
@ -111,7 +100,7 @@ if (!doNotTrack) {
|
||||
<div class="entry-content">
|
||||
<p>This is a quick treat! We recently learned that one of our children needs to take medicine twice a day for the foreseeable future. He’s too young to take it on his own, so the twice-a-day responsibility is split up between my partner and I. However, sometimes our schedules don’t overlap so succinctly, so we needed some sort of indicator to let the other know if the previous dose was (or wasn’t!...</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-10-16 11:34:14 -0400 EDT'>October 16, 2023</span>&nbsp;·&nbsp;6 min&nbsp;·&nbsp;1170 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-10-16 11:34:14 -0400 EDT'>October 16, 2023</span> · 6 min · 1170 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to ESP8266 Medicine Indicator Light" href="../posts/medicine_indicator_light.html"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
@ -28,18 +28,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="git" />
|
||||
</noscript><meta property="og:title" content="git" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/git.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
@ -112,7 +101,7 @@ if (!doNotTrack) {
|
||||
<p>Why push to multiple repos? Do want to use both Github & and a Self-hosted Git Repo? Here’s how I’ve been doing it!
|
||||
I really enjoy self-hosting services that I use everyday. One of those includes a git-style version control software. In my case, I’ve been running Gitea for a few years now and have been really satisfied with everything (except for that one time that an update broke all my templates)....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-09-22 15:07:10 -0400 EDT'>September 22, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;403 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-09-22 15:07:10 -0400 EDT'>September 22, 2023</span> · 2 min · 403 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Pushing a Single Local Git Repo to Multiple Remote Repos" href="../posts/multiple_git_remotes.html"></a>
|
||||
</article>
|
||||
|
||||
@ -126,7 +115,7 @@ I really enjoy self-hosting services that I use everyday. One of those includes
|
||||
<div class="entry-content">
|
||||
<p>Intro For the last 3 days, I have been spending a few hours after working trying to figure out why my brand new Hugo site was not loading correctly on my sub-domain. For context, I use Nginx to host all my apps and servers, most of them using reverse proxy protocols such as $proxy_host, $forward_scheme, and $port. There are a few more and I’m happy to share some reverse proxy nginx config files....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-09-20 11:33:22 -0400 EDT'>September 20, 2023</span>&nbsp;·&nbsp;5 min&nbsp;·&nbsp;888 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-09-20 11:33:22 -0400 EDT'>September 20, 2023</span> · 5 min · 888 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Trouble Hosting Hugo with Nginx" href="../posts/hosting_hugo_troubles.html"></a>
|
||||
</article>
|
||||
|
||||
@ -141,7 +130,7 @@ I really enjoy self-hosting services that I use everyday. One of those includes
|
||||
<p>Goal A Tutorial Repo for migrating your Nginx Proxy Manager proxy setup to Nginx. I wrote this originally for this reddit post and to post this my Github profile. Thought my website would also be a good place to share it for any passers-by.
|
||||
To give clear instructions to help users migrate from using Nginx Proxy Manager (NPM) to standard Nginx. This tutorial is not exhaustive and there are many other implementations of this transition....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-08-05 15:23:51 -0500 -0500'>August 5, 2023</span>&nbsp;·&nbsp;8 min&nbsp;·&nbsp;1635 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-08-05 15:23:51 -0500 -0500'>August 5, 2023</span> · 8 min · 1635 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Tutorial: Move from NginxProxyManager to Nginx" href="../posts/npm_to_nginx_tutorial.html"></a>
|
||||
</article>
|
||||
|
||||
@ -155,7 +144,7 @@ To give clear instructions to help users migrate from using Nginx Proxy Manager
|
||||
<div class="entry-content">
|
||||
<p>Admittedly, I feel a bit like a child sharing something like this, as there are so many devs that pull and merge requests from contributors on a regular basis. However, while I’ve contributed to documentation and/or tutorials and other non-coding portions of repositories, I feel a tiny bit proud that this was the first instance where I was using a library, found a bug, created an issue, cloned the repo to my local machine, found and fixed the code, and opened a pull request....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2022-09-01 13:25:02 -0400 EDT'>September 1, 2022</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;328 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2022-09-01 13:25:02 -0400 EDT'>September 1, 2022</span> · 2 min · 328 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to My First Merged PR!" href="../posts/whiptail-first-merged-pr.html"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
@ -28,18 +28,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="homeassistant" />
|
||||
</noscript><meta property="og:title" content="homeassistant" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/homeassistant.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
@ -112,7 +101,7 @@ if (!doNotTrack) {
|
||||
<p>Checking for Entities If you’re following up on this from my first post, you’ve already added your AppDaemon script and confirmed that the AppDaemon logs don’t show any errors. Now is the true test if it’s working: do you have the new sensors in HomeAssistant?!
|
||||
The best way to do this is by just type e from any screen in the HomeAssistant UI! That will bring up a list of entities....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-10-04 10:35:23 -0400 EDT'>October 4, 2023</span>&nbsp;·&nbsp;10 min&nbsp;·&nbsp;1986 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-10-04 10:35:23 -0400 EDT'>October 4, 2023</span> · 10 min · 1986 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to BirdNET-PI & HomeAssistant: Part 2" href="../posts/birdnet_homeassistant_part2.html"></a>
|
||||
</article>
|
||||
|
||||
@ -128,7 +117,7 @@ The best way to do this is by just type e from any screen in the HomeAssistant U
|
||||
Update: 10/11/2023. A huge thanks to Mastodon User e_mobile2014 who found a broken link in this guide and pointed out that I never explained how to get the mqtt sensors into HomeAssistant!
|
||||
What you will need BirdNET-Pi HomeAssistant AppDaemon MQTT Broker (I use Mosquitto) Background In early 2023, at the height of the Raspberry Pi shortage I felt like a king with an extra Rpi laying around, not being used....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-09-30 11:21:55 -0400 EDT'>September 30, 2023</span>&nbsp;·&nbsp;12 min&nbsp;·&nbsp;2484 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-09-30 11:21:55 -0400 EDT'>September 30, 2023</span> · 12 min · 2484 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Creating a BirdNetPi Dashboard in HomeAssistant - Part 1" href="../posts/birdnet_homeassistant.html"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
@ -28,18 +28,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="neovim" />
|
||||
</noscript><meta property="og:title" content="neovim" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/neovim.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
@ -112,7 +101,7 @@ if (!doNotTrack) {
|
||||
<p>This week, I’ve had to make some changes to an automation we had setup for a customer in Workato. The original recipe was made by a co-worker with a bunch of javascript nodes. Even though I’m customer facing and generally not considered a technical employee, I knew the engineer who worked on this was swamped, so I decided to jump in.
|
||||
In order to greatly reduce the number of nodes needed in the single recipe, I created a list of dictionaries in python (with one of the values being another list!...</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-11-15 08:08:49 -0500 EST'>November 15, 2023</span>&nbsp;·&nbsp;6 min&nbsp;·&nbsp;1221 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-11-15 08:08:49 -0500 EST'>November 15, 2023</span> · 6 min · 1221 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Neovim Subtitute Magic" href="../posts/find_and_replace_in_neovim.html"></a>
|
||||
</article>
|
||||
|
||||
@ -126,7 +115,7 @@ In order to greatly reduce the number of nodes needed in the single recipe, I cr
|
||||
<div class="entry-content">
|
||||
<p>If I’m being honest, when I started this quick project to reduce my Neovim plugin footprint size, I thought I was going to be able to get rid of way more plugins! Inspired by this Reddit post that setup a Neovim config using only echasnovski’s mini library, I was reminded that some of my remote server environments were still using Packer as their plugin manager, where my main machine has upgraded to Lazy....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-10-20 18:38:13 -0400 EDT'>October 20, 2023</span>&nbsp;·&nbsp;3 min&nbsp;·&nbsp;602 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-10-20 18:38:13 -0400 EDT'>October 20, 2023</span> · 3 min · 602 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Mini Neovim" href="../posts/mini_neovim.html"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
@ -28,18 +28,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="opensource" />
|
||||
</noscript><meta property="og:title" content="opensource" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/opensource.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
@ -111,7 +100,7 @@ if (!doNotTrack) {
|
||||
<div class="entry-content">
|
||||
<p>Admittedly, I feel a bit like a child sharing something like this, as there are so many devs that pull and merge requests from contributors on a regular basis. However, while I’ve contributed to documentation and/or tutorials and other non-coding portions of repositories, I feel a tiny bit proud that this was the first instance where I was using a library, found a bug, created an issue, cloned the repo to my local machine, found and fixed the code, and opened a pull request....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2022-09-01 13:25:02 -0400 EDT'>September 1, 2022</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;328 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2022-09-01 13:25:02 -0400 EDT'>September 1, 2022</span> · 2 min · 328 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to My First Merged PR!" href="../posts/whiptail-first-merged-pr.html"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
@ -28,18 +28,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="python" />
|
||||
</noscript><meta property="og:title" content="python" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/python.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
@ -113,7 +102,7 @@ if (!doNotTrack) {
|
||||
Update: 10/11/2023. A huge thanks to Mastodon User e_mobile2014 who found a broken link in this guide and pointed out that I never explained how to get the mqtt sensors into HomeAssistant!
|
||||
What you will need BirdNET-Pi HomeAssistant AppDaemon MQTT Broker (I use Mosquitto) Background In early 2023, at the height of the Raspberry Pi shortage I felt like a king with an extra Rpi laying around, not being used....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-09-30 11:21:55 -0400 EDT'>September 30, 2023</span>&nbsp;·&nbsp;12 min&nbsp;·&nbsp;2484 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-09-30 11:21:55 -0400 EDT'>September 30, 2023</span> · 12 min · 2484 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Creating a BirdNetPi Dashboard in HomeAssistant - Part 1" href="../posts/birdnet_homeassistant.html"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
@ -28,18 +28,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="selfhosted" />
|
||||
</noscript><meta property="og:title" content="selfhosted" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/selfhosted.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
@ -112,7 +101,7 @@ if (!doNotTrack) {
|
||||
<p>Checking for Entities If you’re following up on this from my first post, you’ve already added your AppDaemon script and confirmed that the AppDaemon logs don’t show any errors. Now is the true test if it’s working: do you have the new sensors in HomeAssistant?!
|
||||
The best way to do this is by just type e from any screen in the HomeAssistant UI! That will bring up a list of entities....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-10-04 10:35:23 -0400 EDT'>October 4, 2023</span>&nbsp;·&nbsp;10 min&nbsp;·&nbsp;1986 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-10-04 10:35:23 -0400 EDT'>October 4, 2023</span> · 10 min · 1986 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to BirdNET-PI & HomeAssistant: Part 2" href="../posts/birdnet_homeassistant_part2.html"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
@ -28,18 +28,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="snippet" />
|
||||
</noscript><meta property="og:title" content="snippet" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/snippet.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
@ -112,7 +101,7 @@ if (!doNotTrack) {
|
||||
<p>This week, I’ve had to make some changes to an automation we had setup for a customer in Workato. The original recipe was made by a co-worker with a bunch of javascript nodes. Even though I’m customer facing and generally not considered a technical employee, I knew the engineer who worked on this was swamped, so I decided to jump in.
|
||||
In order to greatly reduce the number of nodes needed in the single recipe, I created a list of dictionaries in python (with one of the values being another list!...</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-11-15 08:08:49 -0500 EST'>November 15, 2023</span>&nbsp;·&nbsp;6 min&nbsp;·&nbsp;1221 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-11-15 08:08:49 -0500 EST'>November 15, 2023</span> · 6 min · 1221 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Neovim Subtitute Magic" href="../posts/find_and_replace_in_neovim.html"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
@ -28,18 +28,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="tools" />
|
||||
</noscript><meta property="og:title" content="tools" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/tools.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
@ -111,7 +100,7 @@ if (!doNotTrack) {
|
||||
<div class="entry-content">
|
||||
<p>If I’m being honest, when I started this quick project to reduce my Neovim plugin footprint size, I thought I was going to be able to get rid of way more plugins! Inspired by this Reddit post that setup a Neovim config using only echasnovski’s mini library, I was reminded that some of my remote server environments were still using Packer as their plugin manager, where my main machine has upgraded to Lazy....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-10-20 18:38:13 -0400 EDT'>October 20, 2023</span>&nbsp;·&nbsp;3 min&nbsp;·&nbsp;602 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-10-20 18:38:13 -0400 EDT'>October 20, 2023</span> · 3 min · 602 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Mini Neovim" href="../posts/mini_neovim.html"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
@ -28,18 +28,7 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="tutorial" />
|
||||
</noscript><meta property="og:title" content="tutorial" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/tutorial.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
@ -111,7 +100,7 @@ if (!doNotTrack) {
|
||||
<div class="entry-content">
|
||||
<p>This is a quick treat! We recently learned that one of our children needs to take medicine twice a day for the foreseeable future. He’s too young to take it on his own, so the twice-a-day responsibility is split up between my partner and I. However, sometimes our schedules don’t overlap so succinctly, so we needed some sort of indicator to let the other know if the previous dose was (or wasn’t!...</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-10-16 11:34:14 -0400 EDT'>October 16, 2023</span>&nbsp;·&nbsp;6 min&nbsp;·&nbsp;1170 words&nbsp;·&nbsp;Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-10-16 11:34:14 -0400 EDT'>October 16, 2023</span> · 6 min · 1170 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to ESP8266 Medicine Indicator Light" href="../posts/medicine_indicator_light.html"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
Submodule themes/PaperMod updated: efe4cb4516...5a99ab779d
Reference in New Issue
Block a user