Locking Down DNS
This guide walks you through getting PiHole setup with DNS over HTTPS on a Raspberry Pi.
PiHole is like an ad-blocker for your entire network! It works by intercepting DNS requests (the thing that takes human readable domain names like
www.google.com and turns them into ip addresses
22.214.171.124) and refuses to "resolve them" (tell your computer the ip address) when the domain name is for an advertiser.
On top of this awesomeness, this guide will also ensure all of your DNS requests are encrypted. DNS was never really designed to have privacy by default. Because of this, anybody looking at your network traffic (i.e. Comcast, AT&T, your neighbor who figured out your wifi password, etc.) can see what websites you visit! What we are going to do is, instead of doing a real DNS request when the computers on your network try to resolve DNS values, we are going to instead do an HTTPS request (the thing websites use) to fetch the values instead. This encrypts al
A.K.A.: Creating Knobs and Levers for Operating Node.js Services at Runtime
If you came for a tutorial, skip ahead to the next section!
What do I mean when I say “making middleware dynamic?”
Many Node.js web frameworks use middleware. These have access to the request and response objects at specific points during the request-response cycle. Often times, middleware are created using constructor functions that take a configuration object. When I say I want to make middleware dynamic, I mean I want to change a middleware configuration (changing it’s behavior) after it’s been created, and I want to have those changes take effect immediately, all without having to cut a release and do a deploy.
The example I are going to use for this post: I have a middleware handler bodyParser that buffers a request payload into memory and deserializes it. One of the configuration
What do I mean by "content addressable"?
When you make a commit with git, and then type
git log, you see something like this:
Author: retrohacker <firstname.lastname@example.org>
Date: Sun Jun 16 14:44:30 2019 -0700
add rss feed
That string of random-looking nubmers and characters after the word
commit is the SHA-1 hash of the commit's metadata - such as the date, message, author, previous commit's hash (blockchain!), etc. - and the file contents of the commit. This means that SHA-1 is derived from the content of the commit. We want to use this SHA-1 as the "address" of the commit on GitHub so we can ask for it directly.
Newer versions of git allow you to fetch the SHA-1 directly, but GitHub doesn't appear to support this. What we can do instead is create a temporary [git ref](https://git-scm.com/