From 6dc8bfbb89825f472440f7dd97e646e520ed6a5b Mon Sep 17 00:00:00 2001 From: Brandon Rozek Date: Sun, 18 Dec 2022 12:25:45 -0500 Subject: [PATCH] Removing URL prefix for local URLs in blog posts --- content/blog/appimage.md | 2 +- content/blog/archiving-toots.md | 4 ++-- content/blog/asynccallbacks.md | 2 +- content/blog/autodeploydockerapps.md | 2 +- content/blog/autodeployterraform.md | 2 +- content/blog/autostartdesktopapps.md | 2 +- content/blog/exportpydecorator.md | 2 +- content/blog/gevent.md | 2 +- content/blog/jupyterwithpyenv.md | 2 +- content/blog/notes-beamer-latex.md | 2 +- content/blog/obswebcam.md | 2 +- content/blog/offlinepip.md | 4 ++-- content/blog/program-verification-hoare-logic-dafny.md | 2 +- content/blog/pyenv.md | 2 +- content/blog/pyenvbuildflags.md | 2 +- content/blog/pysubscribepattern.md | 2 +- content/blog/pythonoverloads.md | 2 +- content/blog/pythonsetupdevelop.md | 2 +- content/blog/sharedpackerterraformconfig.md | 2 +- content/blog/socatforward.md | 2 +- content/blog/tempresolve.md | 2 +- 21 files changed, 23 insertions(+), 23 deletions(-) diff --git a/content/blog/appimage.md b/content/blog/appimage.md index 452e66e..8223117 100644 --- a/content/blog/appimage.md +++ b/content/blog/appimage.md @@ -33,7 +33,7 @@ gqrx.AppDir/ The `AppRun` executable comes from the [AppImage Releases Page](https://github.com/AppImage/AppImageKit/releases). While you're there, you should also download `appimagetool` as we'll be using that soon. -The `.desktop` file needs to be a valid [Linux Desktop Icon](https://brandonrozek.com/blog/linuxdesktopicons/). Some things to take note about the desktop file: +The `.desktop` file needs to be a valid [Linux Desktop Icon](/blog/linuxdesktopicons/). Some things to take note about the desktop file: - The icon is assumed to be a `.png` - The executable is assumed to be located in `/usr/bin/` diff --git a/content/blog/archiving-toots.md b/content/blog/archiving-toots.md index 1ff06e0..2924322 100644 --- a/content/blog/archiving-toots.md +++ b/content/blog/archiving-toots.md @@ -5,7 +5,7 @@ draft: false tags: ["Hugo", "Mastodon", "Archive"] math: false --- -In the spirit of [syndicating Mastodon toots](https://brandonrozek.com/blog/why-i-pesos-from-mastodon/) +In the spirit of [syndicating Mastodon toots](/blog/why-i-pesos-from-mastodon/) to my own site, I wrote a Python script that turns toots into Hugo markdown files. @@ -32,7 +32,7 @@ https://fosstodon.org/api/v1/accounts/108219415927856966 By default, this will return 20 statuses in an array. To see how to parse each individual status, check out my -post on [displaying a single toot](https://brandonrozek.com/blog/displaying-a-toot-hugo/). +post on [displaying a single toot](/blog/displaying-a-toot-hugo/). You can use the limit parameter to set how many statuses you wish to see. The maximum number you can set it to is 40. diff --git a/content/blog/asynccallbacks.md b/content/blog/asynccallbacks.md index 32b1560..fec1995 100644 --- a/content/blog/asynccallbacks.md +++ b/content/blog/asynccallbacks.md @@ -5,7 +5,7 @@ draft: false tags: ["Python"] --- -I've written a post on using [callbacks in Python](https://brandonrozek.com/blog/pysubscribepattern/). Though to add callbacks to `asyncio` functions, you'll have to interact with the loop object directly. Replace the emit function in the previous post with the following: +I've written a post on using [callbacks in Python](/blog/pysubscribepattern/). Though to add callbacks to `asyncio` functions, you'll have to interact with the loop object directly. Replace the emit function in the previous post with the following: ```python class Application: # ... diff --git a/content/blog/autodeploydockerapps.md b/content/blog/autodeploydockerapps.md index 02b4a3f..b5c6d4a 100644 --- a/content/blog/autodeploydockerapps.md +++ b/content/blog/autodeploydockerapps.md @@ -5,7 +5,7 @@ draft: false tags: ["Containers"] --- -This post will combine that last three posts on [Packer](https://brandonrozek.com/blog/snapshotswithpacker/), [Terraform](https://brandonrozek.com/blog/autodeployterraform/), and their [configuration](https://brandonrozek.com/blog/sharedpackerterraformconfig/) to show an entire example of how to deploy a docker-compose application. We will specifically look at deploying a game called [`minetest`](https://www.minetest.net/) on DigitalOcean, but these principles can be adjusted to deploy your application as well. The entire setup is [documented on Github](https://github.com/Brandon-Rozek/minetest-deploy). +This post will combine that last three posts on [Packer](/blog/snapshotswithpacker/), [Terraform](/blog/autodeployterraform/), and their [configuration](/blog/sharedpackerterraformconfig/) to show an entire example of how to deploy a docker-compose application. We will specifically look at deploying a game called [`minetest`](https://www.minetest.net/) on DigitalOcean, but these principles can be adjusted to deploy your application as well. The entire setup is [documented on Github](https://github.com/Brandon-Rozek/minetest-deploy). ## Shared Config diff --git a/content/blog/autodeployterraform.md b/content/blog/autodeployterraform.md index 6d39f1c..e803e5f 100644 --- a/content/blog/autodeployterraform.md +++ b/content/blog/autodeployterraform.md @@ -5,7 +5,7 @@ draft: false tags: ["Deployment"] --- -I have recently written about [Packer](https://brandonrozek.com/blog/snapshotswithpacker/) to create system images or snapshots. This post will go over another [HashiCorp](https://www.hashicorp.com/) project named [Terraform](https://www.terraform.io/) that we can use to deploy that image to a VPS. Like before, I am going to go over how to setup this up in DigitalOcean. Check out [this list](https://www.terraform.io/docs/providers/index.html) for documentation on your favorite cloud provider. +I have recently written about [Packer](/blog/snapshotswithpacker/) to create system images or snapshots. This post will go over another [HashiCorp](https://www.hashicorp.com/) project named [Terraform](https://www.terraform.io/) that we can use to deploy that image to a VPS. Like before, I am going to go over how to setup this up in DigitalOcean. Check out [this list](https://www.terraform.io/docs/providers/index.html) for documentation on your favorite cloud provider. ## Variables diff --git a/content/blog/autostartdesktopapps.md b/content/blog/autostartdesktopapps.md index b9d6bb1..9f3ce06 100644 --- a/content/blog/autostartdesktopapps.md +++ b/content/blog/autostartdesktopapps.md @@ -7,7 +7,7 @@ tags: ["Linux"] The [freedesktop specification](https://specifications.freedesktop.org/autostart-spec/0.5/ar01s02.html) describes how to identify file types, launch applications, and other useful desktop functions. A useful spec I've found recently is for launching desktop applications when you log into your machine. -In my Kubuntu 20.10 system, the directory `$HOME/.config/autostart` can contain [`.desktop`](https://brandonrozek.com/blog/linuxdesktopicons/) files that describes the applications to start on login. Drop whichever desktop file you wish to start there. In other systems it may be located under `$XDG_CONFIG_DIRS/autostart`. +In my Kubuntu 20.10 system, the directory `$HOME/.config/autostart` can contain [`.desktop`](/blog/linuxdesktopicons/) files that describes the applications to start on login. Drop whichever desktop file you wish to start there. In other systems it may be located under `$XDG_CONFIG_DIRS/autostart`. If you want to start up a script instead, you can put the script under `$HOME/.config/autostart-scripts`. diff --git a/content/blog/exportpydecorator.md b/content/blog/exportpydecorator.md index 854ece2..f6a2511 100644 --- a/content/blog/exportpydecorator.md +++ b/content/blog/exportpydecorator.md @@ -5,7 +5,7 @@ draft: false tags: ["Python"] --- -A great [StackOverflow post](https://stackoverflow.com/a/35710527) by [Aaron Hall](https://stackoverflow.com/users/541136/aaron-hall) that shows how you can create an `export` decorator in order to not have to specify all the names you want to expose via [`__all__`](https://brandonrozek.com/blog/pythonall/). +A great [StackOverflow post](https://stackoverflow.com/a/35710527) by [Aaron Hall](https://stackoverflow.com/users/541136/aaron-hall) that shows how you can create an `export` decorator in order to not have to specify all the names you want to expose via [`__all__`](/blog/pythonall/). The Decorator: diff --git a/content/blog/gevent.md b/content/blog/gevent.md index aeb97ed..8caa8dd 100644 --- a/content/blog/gevent.md +++ b/content/blog/gevent.md @@ -5,7 +5,7 @@ draft: false tags: ["Python"] --- -In my last post I spoke about [concurrency with asyncio](https://brandonrozek.com/blog/pyasyncio/). Now what if you don't want to concern yourself with async/await practices and just want to write synchronous code that executes I/O asynchronously? That's where the library [gevent](http://www.gevent.org/) comes in. It does this by modifying Python's standard library during runtime to call it's own asynchronous versions. +In my last post I spoke about [concurrency with asyncio](/blog/pyasyncio/). Now what if you don't want to concern yourself with async/await practices and just want to write synchronous code that executes I/O asynchronously? That's where the library [gevent](http://www.gevent.org/) comes in. It does this by modifying Python's standard library during runtime to call it's own asynchronous versions. Last post code's example written in `gevent`. diff --git a/content/blog/jupyterwithpyenv.md b/content/blog/jupyterwithpyenv.md index ff697af..c901122 100644 --- a/content/blog/jupyterwithpyenv.md +++ b/content/blog/jupyterwithpyenv.md @@ -5,7 +5,7 @@ draft: false tags: ["Python"] --- -I enjoy both managing my Python versions with [pyenv](https://brandonrozek.com/blog/pyenv/) and the literate programming environment [Jupyter lab](https://jupyter.org/). Luckily we can easily manage Python virtual environments via iPython kernels. +I enjoy both managing my Python versions with [pyenv](/blog/pyenv/) and the literate programming environment [Jupyter lab](https://jupyter.org/). Luckily we can easily manage Python virtual environments via iPython kernels. We're going to start off with our base Python interpretor ```bash diff --git a/content/blog/notes-beamer-latex.md b/content/blog/notes-beamer-latex.md index f363794..876b4e8 100644 --- a/content/blog/notes-beamer-latex.md +++ b/content/blog/notes-beamer-latex.md @@ -6,7 +6,7 @@ tags: ["LaTex"] math: false --- -I often struggle with deciding how much content to put on my slides. Personally, I feel that my slides should be self-contained so that others can review them afterwards. This was especially true when I held [recitations](https://brandonrozek.com/ta/spring2022/csci2600/) as a TA. +I often struggle with deciding how much content to put on my slides. Personally, I feel that my slides should be self-contained so that others can review them afterwards. This was especially true when I held [recitations](/ta/spring2022/csci2600/) as a TA. What if instead of putting all the content into one slide, we can have a corresponding notes document? Crazy enough, Beamer comes to the rescue! diff --git a/content/blog/obswebcam.md b/content/blog/obswebcam.md index cdf3037..a69ed07 100644 --- a/content/blog/obswebcam.md +++ b/content/blog/obswebcam.md @@ -11,7 +11,7 @@ Now there already exists a [OBS plugin](https://github.com/CatxFish/obs-v4l2sink To see discussion around this topic, check out this [Github thread](https://github.com/CatxFish/obs-virtual-cam/issues/17). -OBS has two different options, streaming and recording. Since I want the ability to record a high fidelity version of my feed, we will use streaming to push video to a local RTMP server. This local RTMP server will then re-encode the video to a [v4l2 video device](https://brandonrozek.com/blog/fakewebcam/). +OBS has two different options, streaming and recording. Since I want the ability to record a high fidelity version of my feed, we will use streaming to push video to a local RTMP server. This local RTMP server will then re-encode the video to a [v4l2 video device](/blog/fakewebcam/). We will use `ffmpeg` as our RTMP server diff --git a/content/blog/offlinepip.md b/content/blog/offlinepip.md index 92f2622..5abccf3 100644 --- a/content/blog/offlinepip.md +++ b/content/blog/offlinepip.md @@ -15,7 +15,7 @@ Regardless, to my surprise, setting up a repository of python wheels doesn't tak ## Setup -First I would recommend that you setup a virtual environment. Either through [pyenv](https://brandonrozek.com/blog/pyenv/) or [python-virtualenv](https://brandonrozek.com/blog/virtualenv/). +First I would recommend that you setup a virtual environment. Either through [pyenv](/blog/pyenv/) or [python-virtualenv](/blog/virtualenv/). Then, install whatever packages you would like. Let us use tensorflow as an example: @@ -79,5 +79,5 @@ Or they can just install the packages they want pip install --no-index -f /path/to/wheels/wheels package_name ``` -If you don't want to add flags to every command, check out my post on using [configuration files with pip](https://brandonrozek.com/blog/pipconf/). +If you don't want to add flags to every command, check out my post on using [configuration files with pip](/blog/pipconf/). diff --git a/content/blog/program-verification-hoare-logic-dafny.md b/content/blog/program-verification-hoare-logic-dafny.md index 545fa97..27ea6fe 100644 --- a/content/blog/program-verification-hoare-logic-dafny.md +++ b/content/blog/program-verification-hoare-logic-dafny.md @@ -6,7 +6,7 @@ tags: ["Formal Methods"] math: false --- -In the recitations that I'm giving for [Principles of Software](https://brandonrozek.com/ta/spring2022/csci2600/), we are going over reasoning through code using Hoare Logic and the program verifier Dafny. Microsoft Research designed Dafny to be similar to writing imperative code. The main difference is that you need to supply (pre/post)-conditions and the code to verify. Here's an example of how to reason about a simple statement by hand: +In the recitations that I'm giving for [Principles of Software](/ta/spring2022/csci2600/), we are going over reasoning through code using Hoare Logic and the program verifier Dafny. Microsoft Research designed Dafny to be similar to writing imperative code. The main difference is that you need to supply (pre/post)-conditions and the code to verify. Here's an example of how to reason about a simple statement by hand: ```csharp // Precondition: x > 0 diff --git a/content/blog/pyenv.md b/content/blog/pyenv.md index d48dcfd..c072108 100644 --- a/content/blog/pyenv.md +++ b/content/blog/pyenv.md @@ -5,7 +5,7 @@ draft: false tags: [ "Python" ] --- -I wrote previously about [managing python virtual environments](https://brandonrozek.com/blog/virtualenv/). Since then, I've discovered a software called [Pyenv](https://github.com/pyenv/pyenv) which allows you to not only manage virtual environments but python versions. As someone who likes to develop python programs in his free time, I found this incredibly useful in keeping all my virtual environments in one place and easily upgrading to a more recent version of python. +I wrote previously about [managing python virtual environments](/blog/virtualenv/). Since then, I've discovered a software called [Pyenv](https://github.com/pyenv/pyenv) which allows you to not only manage virtual environments but python versions. As someone who likes to develop python programs in his free time, I found this incredibly useful in keeping all my virtual environments in one place and easily upgrading to a more recent version of python. To install, follow the steps outlined in the [pyenv-istaller](https://github.com/pyenv/pyenv-installer) repository. As of now, it's a bash script. diff --git a/content/blog/pyenvbuildflags.md b/content/blog/pyenvbuildflags.md index 01f4e58..31765b3 100644 --- a/content/blog/pyenvbuildflags.md +++ b/content/blog/pyenvbuildflags.md @@ -11,7 +11,7 @@ I ran into an issue with PyMC3 where it was expecting a certain symbol that Pyth Exception: Compilation failed (return status=1): /usr/bin/ld: /home/rozek/.pyenv/versions/3.8.2/lib/libpython3.8.a(floatobject.o): relocation R_X86_64_PC32 against symbol `PyFloat_Type' can not be used when making a shared object; recompile with -fPIC. /usr/bin/ld: final link failed: bad value. collect2: error: ld returned 1 exit status. ``` -Since I use [`pyenv`](https://brandonrozek.com/blog/pyenv/) for Python version management, it turned out that I only needed to modify the `CFLAGS` variable to get this working +Since I use [`pyenv`](/blog/pyenv/) for Python version management, it turned out that I only needed to modify the `CFLAGS` variable to get this working ```bash CFLAGS="-fPIC" pyenv install 3.8.2 diff --git a/content/blog/pysubscribepattern.md b/content/blog/pysubscribepattern.md index 5baccc9..31d7574 100644 --- a/content/blog/pysubscribepattern.md +++ b/content/blog/pysubscribepattern.md @@ -5,7 +5,7 @@ draft: false tags: ["Python"] --- -It is common for larger applications to have modules that publishes and subscribes to events. This post will outline a couple ways to achieve this using [decorators](https://brandonrozek.com/blog/pydecorators/) and standard methods. +It is common for larger applications to have modules that publishes and subscribes to events. This post will outline a couple ways to achieve this using [decorators](/blog/pydecorators/) and standard methods. ## Single Event diff --git a/content/blog/pythonoverloads.md b/content/blog/pythonoverloads.md index af038b7..72a58aa 100644 --- a/content/blog/pythonoverloads.md +++ b/content/blog/pythonoverloads.md @@ -5,7 +5,7 @@ draft: false tags: ["Python"] --- -I wrote a [blog post about operator overloads](https://brandonrozek.com/blog/cppoverloads/) in C++. Luckily for Python it is heavily document in what is called the [Python Data Model](https://docs.python.org/3/reference/datamodel.html). Though for the sake of having content, I'll share some of the ones that I heavily use in my classes. +I wrote a [blog post about operator overloads](/blog/cppoverloads/) in C++. Luckily for Python it is heavily document in what is called the [Python Data Model](https://docs.python.org/3/reference/datamodel.html). Though for the sake of having content, I'll share some of the ones that I heavily use in my classes. | Operator | Method | | -------- | ---------------------- | diff --git a/content/blog/pythonsetupdevelop.md b/content/blog/pythonsetupdevelop.md index c20b1df..9375b0c 100644 --- a/content/blog/pythonsetupdevelop.md +++ b/content/blog/pythonsetupdevelop.md @@ -4,7 +4,7 @@ date: 2020-02-21T22:42:55-05:00 draft: false tags: [ "Python" ] --- -**Deprecated in favor of [pip install editable](https://brandonrozek.com/blog/pipeditable)** +**Deprecated in favor of [pip install editable](/blog/pipeditable)** I've found it to be incredibly helpful to emulate having a library installed on my system rather than depending on my local directory path to pick up my file edits. To do this in a python project where you've defined a `setup.py`, you can specify the command `develop`. diff --git a/content/blog/sharedpackerterraformconfig.md b/content/blog/sharedpackerterraformconfig.md index 246566c..81576b2 100644 --- a/content/blog/sharedpackerterraformconfig.md +++ b/content/blog/sharedpackerterraformconfig.md @@ -5,7 +5,7 @@ draft: false tags: ["Deployment"] --- -You might have noticed from my last two posts on [Packer](https://brandonrozek.com/blog/snapshotswithpacker/) and [Terraform](https://brandonrozek.com/blog/autodeployterraform/) that the configuration files are highly similar. In fact, we can trick them into sharing a configuration file! +You might have noticed from my last two posts on [Packer](/blog/snapshotswithpacker/) and [Terraform](/blog/autodeployterraform/) that the configuration files are highly similar. In fact, we can trick them into sharing a configuration file! ## Shared Configuration diff --git a/content/blog/socatforward.md b/content/blog/socatforward.md index e21cc87..57fce99 100644 --- a/content/blog/socatforward.md +++ b/content/blog/socatforward.md @@ -5,7 +5,7 @@ draft: false tags: ["Networking"] --- -I've written about relaying TCP traffic using [SSH port forwarding](https://brandonrozek.com/blog/sshlocalportforwarding/). Though sometimes you don't require the authenticity and encryption of SSH or want to use another protocol such as UDP. That's where `socat` comes in. +I've written about relaying TCP traffic using [SSH port forwarding](/blog/sshlocalportforwarding/). Though sometimes you don't require the authenticity and encryption of SSH or want to use another protocol such as UDP. That's where `socat` comes in. The following will listen to TCP traffic on port 8001 and redirect it to TCP localhost:8000 diff --git a/content/blog/tempresolve.md b/content/blog/tempresolve.md index 4c2084a..df2d2a4 100644 --- a/content/blog/tempresolve.md +++ b/content/blog/tempresolve.md @@ -21,4 +21,4 @@ There are also browser extensions that you can use such as [LiveHosts](https://g If this is going to be a publicly facing service, then you should just set the records of your domain name to point to the server. -If it's a non-public routable service, then perhaps try looking into setting up your own private [dns server](https://brandonrozek.com/blog/coredns/). +If it's a non-public routable service, then perhaps try looking into setting up your own private [dns server](/blog/coredns/).