diff --git a/Gemfile b/Gemfile
index 44bc70e..e6d8713 100644
--- a/Gemfile
+++ b/Gemfile
@@ -3,3 +3,5 @@ source "https://rubygems.org"
gem 'jekyll-compose', group: [:jekyll_plugins]
gem 'jekyll-target-blank'
+
+gem 'jekyll-paginate'
diff --git a/Gemfile.lock b/Gemfile.lock
index f303044..d4b3e29 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,10 +1,10 @@
GEM
remote: https://rubygems.org/
specs:
- addressable (2.5.2)
- public_suffix (>= 2.0.2, < 4.0)
+ addressable (2.7.0)
+ public_suffix (>= 2.0.2, < 5.0)
colorator (1.1.0)
- concurrent-ruby (1.1.4)
+ concurrent-ruby (1.1.5)
em-websocket (0.5.1)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
@@ -27,34 +27,33 @@ GEM
pathutil (~> 0.9)
rouge (>= 1.7, < 4)
safe_yaml (~> 1.0)
- jekyll-compose (0.9.0)
- jekyll (~> 3.0)
+ jekyll-compose (0.11.0)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-paginate (1.1.0)
jekyll-sass-converter (1.5.2)
sass (~> 3.4)
jekyll-target-blank (1.1.1)
jekyll (~> 3.0)
nokogiri (~> 1.8.2)
- jekyll-watch (2.1.2)
+ jekyll-watch (2.2.1)
listen (~> 3.0)
kramdown (1.17.0)
- liquid (4.0.1)
- listen (3.1.5)
- rb-fsevent (~> 0.9, >= 0.9.4)
- rb-inotify (~> 0.9, >= 0.9.7)
- ruby_dep (~> 1.2)
+ liquid (4.0.3)
+ listen (3.2.0)
+ rb-fsevent (~> 0.10, >= 0.10.3)
+ rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.3.6)
mini_portile2 (2.3.0)
nokogiri (1.8.5)
mini_portile2 (~> 2.3.0)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
- public_suffix (3.0.3)
+ public_suffix (4.0.1)
rb-fsevent (0.10.3)
rb-inotify (0.10.0)
ffi (~> 1.0)
- rouge (3.3.0)
- ruby_dep (1.5.0)
- safe_yaml (1.0.4)
+ rouge (3.12.0)
+ safe_yaml (1.0.5)
sass (3.7.2)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
@@ -66,6 +65,7 @@ PLATFORMS
DEPENDENCIES
jekyll-compose
+ jekyll-paginate
jekyll-target-blank
BUNDLED WITH
diff --git a/_config.yml b/_config.yml
index 58b75e1..75336ac 100644
--- a/_config.yml
+++ b/_config.yml
@@ -1,8 +1,8 @@
# Site settings
title: NixNet
description: "Ramblings from a random GNU/Linux user, sysadmin, and professional multi-instrumentalist"
-baseurl: "" # the subpath of your site, e.g. /blog/
-url: "https://nixnet.xyz" # the base hostname & protocol for your site
+baseurl: ""
+url: "https://nixnet.xyz"
permalink: /blog/:title/
language: en_US
@@ -18,18 +18,18 @@ author:
highlightstyle: 'agate'
styles: [agate, androidstudio, arta, asceti, atelier-cave.dark, atelier-cave.light, atelier-dune.dark, atelier-dune.light, atelier-estuary.dark, atelier-estuary.light, atelier-forest.dark, atelier-forest.light, atelier-heath.dark, atelier-heath.light, atelier-lakeside.dark, atelier-lakeside.light, atelier-plateau.dark, atelier-plateau.light, atelier-savanna.dark, atelier-savanna.light, atelier-seaside.dark, atelier-seaside.light, atelier-sulphurpool.dark, atelier-sulphurpool.light, brown_paper, codepen-embed, color-brewer, dark, darkula, default, docco, far, foundation, github, github-gist, googlecode, grayscale, hopscotch, hybrid, idea, ir_black, kimbie.dark, kimbie.light, magula, mono-blue, monokai, monokai_sublime, obsidian, paraiso.dark, paraiso.light, pojoaque, railscast, rainbow, school_book, solarized_dark, solarized_light, styles_list.txt, sunburst, tomorrow, tomorrow-night-blue, tomorrow-night-bright, tomorrow-night, tomorrow-night-eightie, v, xcode, zenburn]
-# Handling Reading
exclude: ["README.md", "README.html"]
-# Build settings
highlighter: null
markdown: kramdown
-# Serve settings
livereload: true
jekyll_compose:
auto_open: true
+paginate: 6
+
plugins:
- jekyll-target-blank
+ - jekyll-paginate
diff --git a/_posts/2019-10-15-buying-a-domain-name.md b/_posts/2019-10-15-buying-a-domain-name.md
index 7ba1d59..3efb6e4 100644
--- a/_posts/2019-10-15-buying-a-domain-name.md
+++ b/_posts/2019-10-15-buying-a-domain-name.md
@@ -32,7 +32,9 @@ I use Gandi for my main websites, [nixnet.xyz](https://nixnet.xyz), for a few re
Another reason is that they have some nice APIs available that I'm going to make use of for [Invidious](https://github.com/omarroth/invidious). The IP address of my server was recently blocked so [the instance](https://invidious.nixnet.xyz) completely stopped working. I'm going to write an Ansible playbook that will let me completely automate the process of buying a new VPS, migrating Invidious to it, and changing DNS records in Gandi in realtime as the IP addresses are blocked. It may be months, even a year, before I actually get around to making that happen but it will eventually.
-**NOTE:** If you have a [SoloKey](https://solokeys.com/), [Yubikey](https://www.yubico.com/products/yubikey-hardware/), etc. I recommend enabling 2FA with it and, even if you don't, you should still enable 2FA with [andOTP](https://github.com/andOTP/andOTP) or [FreeOTP](https://github.com/freeotp/freeotp-ios). With something as sensitive as domains, the extra level of security is essential.
+**NOTE:** If you have a [SoloKey](https://solokeys.com/), [Yubikey](https://www.yubico.com/products/yubikey-hardware/), etc. I recommend enabling 2FA in Gandi with it and, even if you don't, you should still enable 2FA with [andOTP](https://github.com/andOTP/andOTP) or [FreeOTP](https://github.com/freeotp/freeotp-ios). With something as sensitive as domains, the extra level of security is essential.
## [Namesilo](https://namesilo.com)
The domains I have with Namesilo are for my podcast, [redacted.life](https://redacted.life), and my email server, [nixnet.email](https://nixnet.email). Namesilo *offers* some simple features like webhosting but I have no use for them. Namesilo just tends to be cheaper than the rest and, even though they have a *terrible* UI (imo), I barely have to interact with it and the price makes up for that detriment.
+
+**EDIT:** Namesilo apparently has a new UI in the works. You can use it by going to [new.namesilo.com](https://new.namesilo.com/)
diff --git a/_posts/2019-10-19-downloading-courses-from-linux-academy.md b/_posts/2019-10-19-downloading-courses-from-linux-academy.md
new file mode 100644
index 0000000..d17a411
--- /dev/null
+++ b/_posts/2019-10-19-downloading-courses-from-linux-academy.md
@@ -0,0 +1,93 @@
+---
+layout: post
+title: Downloading courses from Linux Academy
+subtitle: youtube-dl is a phenomenal tool
+description: Using youtube-dl to pull Linux Academy courses for offline viewing
+date: 2019-10-19 01:35 -0400
+cover: /assets/posts/youtube-dl.png
+---
+# Forward
+Every month, Linux Academy releases courses for free. I'm a very busy college student and don't have time to whirl through everything I want to before it goes behind their paywall again so I figured out how to download a course or two every month using [`youtube-dl`](https://github.com/ytdl-org/youtube-dl/).
+
+# Setup
+* Install [`youtube-dl`](https://ytdl-org.github.io/youtube-dl/download.html)
+* Make sure you have a browser handy
+* Create a community account on [Linux Academy](https://linuxacademy.com/join/community)
+* Get some food
+* Maybe a drink
+* Sit back down in your chair
+* Spin around a bit
+* Read on
+
+# Downloading
+* Log into your account
+* Pick the course you want
+* Open the developer console and go to `Network` (Ctrl+Shift+E in Firefox)
+* You'll want to select `Media` as shown in the screenshot below
+
+![](/assets/posts/linux-academy/scrot-1.png)
+
+* Click the video you want to start with
+* Watch the network logs
+* You'll see an entry that starts with `playlist` (screenshot below)
+
+![](/assets/posts/linux-academy/scrot-2.png)
+
+* Right click it
+* Copy the URL
+* Paste it after `youtube-dl` in a terminal:
+
+```bash
+amolith@poseidon:~ $ youtube-dl https://video-cdn.linuxacademy.com/vods3/_definst_/smil:box/cdnstore/modules/lots-of-stuff-in-here
+```
+
+* Press enter
+* Watch the magic unfold
+
+At a high level, `youtube-dl` is acting like your browser and following the `m3u` playlist to download chunks of the file. After it fetches them all, it runs them through `ffmpeg` to stitch them together into a single video!
+
+I found it useful to open a text editor and script downloading a whole course at a time. All you have to do is type `youtube-dl -o` and copy/paste it however many times there are videos. Then, copy and paste the video title in quotes after `-o` and add `.mp4` to the end (command example below). After that, paste the URL. Do that with every video in the series, save the script, run `chmod +x
-
-
-
-
-
-
-
-
-
- Note: contents of this page are generated purely from the OpenPGP key in your browser.
- If you want to add social proofs to your key see OpenPGP Proofs page.
- If you want to adjust the keyserver used or the key being displayed just edit this HTML page.
-
-
diff --git a/mumble.md b/mumble.md
index d724bd3..f0142c8 100644
--- a/mumble.md
+++ b/mumble.md
@@ -5,42 +5,11 @@ subtitle: "An open source VoIP solution that's better than Discord"
description: "An open source VoIP solution that's better than Discord"
cover: /assets/pages/mumble.png
---
+Visit Mumble's [Downloads](https://www.mumble.info/downloads/) page for installation information.
+
## Setup
-I don't use Windows or macOS so I can't speak to how they work. On Linux, simply launch the app and run through the audio setup wizard. After that, go to `Server -> Connect -> Add new`. Enter whatever username you want, use `nixnet.xyz` as the address, `64738` for the port, and label the server however you'd like. When prompted, the password is `NixNet`. Pretty much the same goes for the Android app; open it, add a new server, enter the information above, connect, and start chatting!
-
-
+Simply launch the app and run through the audio setup wizard. If your OS supports it, you can simply click [here](mumble://nixnet.xyz:64738) and it will open automatically and connect to the server. Alternatively, launch Mumble, go to `Server -> Connect -> Add new`. Enter whatever username you want, use `nixnet.xyz` as the address, `64738` for the port, and label the server however you'd like.
+
If you want a new channel made for something (game, podcast, private call, etc.), just [let me know](/contact) and I'll create one!
-## Installation
-For more in-depth and accurate information than what's here, look at the [official Mumble website](https://wiki.mumble.info/wiki/Main_Page).
-
-### - Arch Linux
-```
-sudo pacman -S mumble
-```
-
-### - Debian
-```
-sudo apt-get install mumble
-```
-
-### - Ubuntu
-```
-sudo add-apt-repository ppa:mumble/release
-sudo apt-get update
-sudo apt-get install mumble
-```
-
-### - Fedora
-```
-dnf install mumble mumble-overlay mumble-plugins
-```
-
-### - Android
-Download it from [F-Droid](https://f-droid.org/repository/browse/?fdid=com.morlunk.mumbleclient). It is also on [Google Play](https://play.google.com/store/apps/details?id=com.morlunk.mumbleclient.free) but I recommend using F-Droid instead.
-
-### - Windows and macOS
-Download the latest release from their [GitHub page](https://github.com/mumble-voip/mumble/releases).
-
-### - iOS
-A client is available in the [App Store](https://itunes.apple.com/us/app/mumble/id443472808?mt=8)
+If you would like to talk with me about something, check the [contact page](/contact) for the times I'll be available.