<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Home on Emerson Veenstra</title>
		<link>https://emersonveenstra.net/</link>
		<description>Recent content in Home on Emerson Veenstra</description>
		<generator>Hugo</generator>
		<language>en-US</language>
		
		
		
		
			<lastBuildDate>Sat, 11 Jul 2026 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://emersonveenstra.net/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>How to store and backup Amcrest cameras using FTP on Linux</title>
				<link>https://emersonveenstra.net/blog/set-up-amcrest-cameras-with-ftp/</link>
				<pubDate>Sun, 12 Dec 2021 00:00:00 +0000</pubDate>
				<guid>https://emersonveenstra.net/blog/set-up-amcrest-cameras-with-ftp/</guid>
				<description>&lt;blockquote&gt;&#xA;&lt;p&gt;Before we start, I should mention that my cameras are &lt;code&gt;IP8M-2496EB&lt;/code&gt;. I &lt;em&gt;think&lt;/em&gt; that the software is similar across the camera range, but YMMV.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;I have a few Amcrest cameras at my house, and recently I decided to have a solid backup and storage system for the pictures and videos. It actually turned out to be pretty easy if you have a Linux machine with a lot of disk space (external hard drive/NAS would be best so that you don&#39;t fill up your main parition accidentally). I use a Raspberry Pi with an external hard drive.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Access your home network using WireGuard</title>
				<link>https://emersonveenstra.net/blog/access-local-network-with-wireguard/</link>
				<pubDate>Wed, 01 Dec 2021 00:00:00 +0000</pubDate>
				<guid>https://emersonveenstra.net/blog/access-local-network-with-wireguard/</guid>
				<description>&lt;p&gt;About two years ago, I published &lt;a href=&#34;https://emersonveenstra.net/blog/access-local-network-using-wireguard-vpn-and-algo/&#34;&gt;this blog about using Algo to access a local network&lt;/a&gt;. It remains my most visited post (not that it&#39;s wildly popular), but I actually stopped using it very shortly after and switched to this new method.&lt;/p&gt;&#xA;&lt;p&gt;There were a couple of reasons. First, Algo is meant for a server that is &lt;em&gt;only&lt;/em&gt; used as a VPN. It configures iptables rules and changes other settings that can conflict with additional services on the same server. Second, having the WireGuard server on your home network was problematic for people who didn&#39;t have a public IP address or had a router that they couldn&#39;t configure.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Serving local WordPress sites on macOS with nginx and php-fpm</title>
				<link>https://emersonveenstra.net/blog/local-wordpress-setup-on-macos/</link>
				<pubDate>Wed, 20 Jan 2021 00:00:00 +0000</pubDate>
				<guid>https://emersonveenstra.net/blog/local-wordpress-setup-on-macos/</guid>
				<description>&lt;p&gt;I switch between Windows and macOS for developing WordPress sites. Normally I use Windows because my Windows machine is more powerful and can drive two monitors, whereas my MacBook Air is the 13-inch 2017 model (that I bought last year because it&#39;s the last model with MagSafe power and a proper keyboard). However, I will occasionally use my Mac when I&#39;m testing sites on Safari or an iOS emulator.&lt;/p&gt;&#xA;&lt;p&gt;On both my Windows machine and MacBook, I use nginx, PHP, and MariaDB to serve my WordPress sites. Today I&#39;ll show you how I set it up on a Mac.&lt;/p&gt;</description>
			</item>
			<item>
				<title>How To Clarify PageSpeed Insights For Clients</title>
				<link>https://emersonveenstra.net/blog/clarifying-pagespeed-insights-for-clients/</link>
				<pubDate>Sun, 29 Nov 2020 00:00:00 +0000</pubDate>
				<guid>https://emersonveenstra.net/blog/clarifying-pagespeed-insights-for-clients/</guid>
				<description>&lt;p&gt;Recently, I&#39;ve had more clients asking about their PageSpeed Insights score.&#xA;They&#39;re concerned with the amount of red they see, and they want to know how we&#xA;can get rid of it. This, in and of itself, is good. I&#39;m glad that clients&#xA;realize page load time is an important part of user experience. However, the&#xA;problem here is Google pushes people to PSI without educating them on what the&#xA;report data means. As a result, clients sometimes don&#39;t fully understand the&#xA;information that PSI is giving them, and they jump to incorrect conclusions. To&#xA;make matters worse, PSI itself can give incorrect and misleading data in its&#xA;reports, adding to the misunderstanding.&lt;/p&gt;</description>
			</item>
			<item>
				<title>An Effective GoAccess Setup For Static Sites</title>
				<link>https://emersonveenstra.net/blog/an-effective-goaccess-setup-for-static-sites/</link>
				<pubDate>Sat, 14 Nov 2020 00:00:00 +0000</pubDate>
				<guid>https://emersonveenstra.net/blog/an-effective-goaccess-setup-for-static-sites/</guid>
				<description>&lt;p&gt;This site is a static site (using Hugo). Out of respect for your privacy I&#xA;don&#39;t want to use Google Analytics, and I don&#39;t want to spend the money to host&#xA;Matomo. Instead I use &lt;a href=&#34;https://goaccess.io/&#34;&gt;GoAccess&lt;/a&gt; to get basic statistics&#xA;about my site. GoAccess is a program that parses log files to create traffic&#xA;analytics. It filters most known crawlers already, but we can filter out more&#xA;using grep.&lt;/p&gt;&#xA;&lt;p&gt;My goal is to get a general overview of how many users visit my site and what&#xA;pages they go to. I didn&#39;t spend a lot of time fine-tuning this to show every&#xA;visitor. It will show visitors using a modern, up-to-date browser, and that&#39;s&#xA;good enough for me. I&#39;ll note the places where visitors might be lost in case&#xA;you want to edit those lines.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Access your local network using Wireguard VPN and Algo</title>
				<link>https://emersonveenstra.net/blog/access-local-network-using-wireguard-vpn-and-algo/</link>
				<pubDate>Sun, 05 Jan 2020 00:00:00 +0000</pubDate>
				<guid>https://emersonveenstra.net/blog/access-local-network-using-wireguard-vpn-and-algo/</guid>
				<description>&lt;p&gt;If you need to access your home network from somewhere other than your home, the traditional way to do that is using a VPN. However, most VPN tutorials send all of your traffic through your home network. I only wanted to reach the devices in my home network, and not send all my traffic through the VPN. So if that&#39;s what you&#39;re looking for, this is the tutorial for you.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Custom tag and category headings in Pelican</title>
				<link>https://emersonveenstra.net/blog/custom-tag-and-category-headings-in-pelican/</link>
				<pubDate>Fri, 27 Dec 2019 00:00:00 +0000</pubDate>
				<guid>https://emersonveenstra.net/blog/custom-tag-and-category-headings-in-pelican/</guid>
				<description>&lt;p&gt;This blog &lt;del&gt;is&lt;/del&gt; was at one point made using &lt;a href=&#34;https://blog.getpelican.com/&#34;&gt;Pelican&lt;/a&gt;. Pelican has pages that list all the blogs with a specific tag or category. The problem is there&#39;s only one HTML template for all the tags and categories, so there&#39;s limited customization possible. However, with a simple python function, it&#39;s possible to create custom headings for tag and category pages.&lt;/p&gt;&#xA;&lt;p&gt;Since Pelican uses Jinja for templating, there&#39;s the ability to make custom Jinja filters. These are Python functions that return a string, which is output wherever the filter is called. The Python function needsto be in a Python file somewhere in the root folder. I created a &lt;code&gt;filters/&lt;/code&gt; folder to put it in, but you can place it anywhere, as long as it&#39;s accessible.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hide Giphies in Slack</title>
				<link>https://emersonveenstra.net/blog/hide-giphies-in-slack/</link>
				<pubDate>Mon, 01 Jun 2015 00:00:00 +0000</pubDate>
				<guid>https://emersonveenstra.net/blog/hide-giphies-in-slack/</guid>
				<description>&lt;blockquote&gt;&#xA;&lt;p&gt;TL;DR: if you just want the script, it&#39;s &lt;a href=&#34;https://gist.github.com/emersonveenstra/87687ec904b3219dd6b712febee1ade6&#34;&gt;here&lt;/a&gt;. Works with TamperMonkey&#xA;(Chrome) and GreaseMonkey (Firefox).&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Slack has a somewhat funny /giphy command, where you can type &lt;code&gt;/giphy whatever&lt;/code&gt;&#xA;and it will display a random GIF of whatever. As cute and funny as they can be,&#xA;I have discovered that this might get annoying when your entire channel is full&#xA;of nothing but GIFs. Now, Slack does have preferences to not show the image by&#xA;default, but it still wastes space. So, I decided to find a way to remove them.&lt;/p&gt;</description>
			</item>
			<item>
				<title>MongoDB &#43; Raspberry Pi (without building anything!)</title>
				<link>https://emersonveenstra.net/blog/mongodb-raspberry-pi-without-building-anything/</link>
				<pubDate>Fri, 25 Apr 2014 00:00:00 +0000</pubDate>
				<guid>https://emersonveenstra.net/blog/mongodb-raspberry-pi-without-building-anything/</guid>
				<description>&lt;blockquote&gt;&#xA;&lt;p&gt;Update 2: There&#39;s now an easier way to install Mongo on Raspbian: &lt;code&gt;apt install mongodb&lt;/code&gt;.&#xA;This blog is kept for historical purposes now.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Update: &lt;a href=&#34;https://twitter.com/svvitale&#34;&gt;@svvitale&lt;/a&gt; has made an&#xA;&lt;a href=&#34;https://github.com/svvitale/mongo4pi&#34;&gt;install script&lt;/a&gt; that does all of this&#xA;tutorial for you. So if you just need to quick get Mongo installed (which is&#xA;fine, I probably would have done the same thing), that script is what you&#39;re&#xA;looking for. If you really want to do it manually, read on.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>