diff options
| -rw-r--r-- | config.toml | 12 | ||||
| -rw-r--r-- | content/about.md | 2 | ||||
| -rw-r--r-- | content/projects/0-guix-intro.md (renamed from content/projects/1-guix-intro.md) | 11 | ||||
| -rw-r--r-- | content/projects/1-installing-guix.md | 30 | ||||
| -rw-r--r-- | static/gpgkey.asc | bin | 11824 -> 8672 bytes | |||
| -rw-r--r-- | themes/hugo-coder/layouts/_default/baseof.html | 12 |
6 files changed, 41 insertions, 26 deletions
diff --git a/config.toml b/config.toml index 2e5b4c7..293eebc 100644 --- a/config.toml +++ b/config.toml | |||
| @@ -10,7 +10,7 @@ unsafe=true | |||
| 10 | 10 | ||
| 11 | [params] | 11 | [params] |
| 12 | author = "Ryan Schanzenbacher" | 12 | author = "Ryan Schanzenbacher" |
| 13 | info = "Fifth Year Cybersecurity Student" | 13 | info = "Cybersecurity Engineer" |
| 14 | keywords = "blog,personal" | 14 | keywords = "blog,personal" |
| 15 | description = "Ryan Schanzenbacher's Personal website" | 15 | description = "Ryan Schanzenbacher's Personal website" |
| 16 | hideCredits = true | 16 | hideCredits = true |
| @@ -48,16 +48,6 @@ hideColorSchemeToggle = true | |||
| 48 | weight = 4 | 48 | weight = 4 |
| 49 | icon = "fa fa-key-modern fa-2x" | 49 | icon = "fa fa-key-modern fa-2x" |
| 50 | url = "gpgkey.asc" | 50 | url = "gpgkey.asc" |
| 51 | [[params.social]] | ||
| 52 | name = "Matrix Chat" | ||
| 53 | weight = 5 | ||
| 54 | icon = "fa fa-matrix-org fa-2x" | ||
| 55 | url = "https://matrix.to/#/@ryan:rschanz.org" | ||
| 56 | [[params.social]] | ||
| 57 | name = "Mastodon" | ||
| 58 | weight = 6 | ||
| 59 | icon = "fa fa-mastodon fa-2x" | ||
| 60 | url = "https://social.ryan77627.xyz/@ryan" | ||
| 61 | 51 | ||
| 62 | [[menu.main]] | 52 | [[menu.main]] |
| 63 | name = "Projects" | 53 | name = "Projects" |
diff --git a/content/about.md b/content/about.md index fc49933..35035ca 100644 --- a/content/about.md +++ b/content/about.md | |||
| @@ -6,7 +6,7 @@ draft: false | |||
| 6 | 6 | ||
| 7 | ## Hi! :wave: My name is Ryan! | 7 | ## Hi! :wave: My name is Ryan! |
| 8 | 8 | ||
| 9 | Hello, and welcome to my site! My name is Ryan Schanzenbacher. I'm currently a fifth-year student at the Rochester Institute of Technology studying Cybersecurity, expecting to graduate in 2025. Now since that's out of the way, a little about me. I've always had a passion for computers from a young age. For as long as I can remember, I've been fascinated by both how they work and how to use them to their fullest potential. Another starting point for my interest in computers was whenever my Dad and I sat down to try and fix a computer. His job required him to fix computers more often than not, and sometimes I would be able to show up at his workplace and just watch what he was doing. Or, another time was when he had an older laptop that we worked together on to try and get Windows 98(!) to run on again. Those types of events helped shape my interests into what they are today. | 9 | Hello, and welcome to my site! My name is Ryan Schanzenbacher. I'm currently a Cybersecurity Engineer working in NYC. Now since that's out of the way, a little about me. I've always had a passion for computers from a young age. For as long as I can remember, I've been fascinated by both how they work and how to use them to their fullest potential. Another starting point for my interest in computers was whenever my Dad and I sat down to try and fix a computer. His job required him to fix computers more often than not, and sometimes I would be able to show up at his workplace and just watch what he was doing. Or, another time was when he had an older laptop that we worked together on to try and get Windows 98(!) to run on again. Those types of events helped shape my interests into what they are today. |
| 10 | 10 | ||
| 11 | ### Another starting point | 11 | ### Another starting point |
| 12 | 12 | ||
diff --git a/content/projects/1-guix-intro.md b/content/projects/0-guix-intro.md index d868381..4775157 100644 --- a/content/projects/1-guix-intro.md +++ b/content/projects/0-guix-intro.md | |||
| @@ -1,7 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | title: "Guix Part 1 - Introduction" | 2 | title: "Guix Part 0 - Introduction" |
| 3 | date: 2024-02-07T15:03:17-05:00 | 3 | date: 2025-06-17T08:15:00-04:00 |
| 4 | draft: true | 4 | draft: false |
| 5 | type: posts | ||
| 5 | --- | 6 | --- |
| 6 | 7 | ||
| 7 | # Preface | 8 | # Preface |
| @@ -10,7 +11,7 @@ Welp, I am finally getting started with writing about Guix... This has been sitt | |||
| 10 | 11 | ||
| 11 | # Introduction | 12 | # Introduction |
| 12 | 13 | ||
| 13 | As I stated previously, I switched over to using [Guix](https://guix.gnu.org) as my main Linux distribution around April of last year. Surprisingly (to me as much as everyone else), I've stuck with it and have since fallen in love with its ideals. The idea of functional package management has always been intriguing to me, given the state of package management on every other distro. Its always been the same: install the packages you need (or want to try), inevitably forget you installed about half of them, taking up space on your drive, run into :ogre: ***dependency hell*** :ogre:, and if you use more than one computer regularly (like a powerful desktop at home and a smaller, but more power efficient laptop on the go)-- good luck keeping them in sync with each other. For example, my workflow consists of two computers: my main laptop that I keep docked at home due to its battery life, and a secondary I carry around with me... again for its battery life. Throughout college, I would switch between them through the day. Do a little homework on the go, do a little more when I get home, etc. Which was fine, I sync my files with either Git (if coding) or Syncthing (general purpose files). However, the biggest issue I would constantly run into (especially in the type of work I usually find myself doing) is inconsistent state of my machines. What exactly does this mean? Well, imagine this: You have an assignment to complete. To do this assignment, you need to install some external software of some kind to do this. Sometimes, this software may be custom/prioprietary/require custom configuration/anything else that may happen. So, you spend the first hour of homework simply getting your environment to work. You get it to work and go about your day. You get home to continue your harrd work aaaaand...... you need to install everything again.... No matter, you just did this earlier in the day (because you work hard and would never procrastinate.... right?), it should be a piece of cake to recreate your environment. However, your computers obviously aren't identical. Months and months of varied usage has caused them to diverge somewhat, try as you may to keep them somewhat the same, by syncing dotfiles for instance. So, you try to recreate your environment aaaaand, it's broke. Why's this, I did the *exact* same steps on my other computer. Turns out I updated this other computer more recently, causing an incompatibility of some kind. Let's try and fix it.... 30 minutes of sunk time later and I either get it working or I just switch to my other computer again. Anyways, hopefully that illustrates the point I'm trying to make: computer's by default are inherintely *stateful* and, while I'm not saying state is bad outright (it's absolutely necessary to actually do anything useful!), maybe some less imperative state could be beneficial. Now, where does Nix/Guix come into this? Imagine the same scenario as last time, however one important change: you are now running Guix and your system is *entirely* configured (programs installed, dotfiles, even the bootloader) declaratively (more on that in a moment). You make changes by updating files, and those exact changes are synced over to your other computer and applied. Now, all of a sudden, you no longer have this issue of systems that don't behave exactly the same, because for all intents and purposes *they are exactly the same* (provably, in fact!) | 14 | As I stated previously, I switched over to using [Guix](https://guix.gnu.org) as my main Linux distribution around April of last year. Surprisingly (to me as much as everyone else), I've stuck with it and have since fallen in love with its ideals. The idea of functional package management has always been intriguing to me, given the state of package management on every other distro. Its always been the same: install the packages you need (or want to try), inevitably forget you installed about half of them, taking up space on your drive, run into :japanese_ogre: ***dependency hell*** :japanese_ogre:, and if you use more than one computer regularly (like a powerful desktop at home and a smaller, but more power efficient laptop on the go)-- good luck keeping them in sync with each other. For example, my workflow consists of two computers: my main laptop that I keep docked at home due to its battery life, and a secondary I carry around with me... again for its battery life. Throughout college, I would switch between them through the day. Do a little homework on the go, do a little more when I get home, etc. Which was fine, I sync my files with either Git (if coding) or Syncthing (general purpose files). However, the biggest issue I would constantly run into (especially in the type of work I usually find myself doing) is inconsistent state of my machines. What exactly does this mean? Well, imagine this: You have an assignment to complete. To do this assignment, you need to install some external software of some kind to do this. Sometimes, this software may be custom/prioprietary/require custom configuration/anything else that may happen. So, you spend the first hour of homework simply getting your environment to work. You get it to work and go about your day. You get home to continue your hard work aaaaand...... you need to install everything again.... No matter, you just did this earlier in the day (because you work hard and would never procrastinate.... right?), it should be a piece of cake to recreate your environment. However, your computers obviously aren't identical. Months and months of varied usage has caused them to diverge somewhat, try as you may to keep them somewhat the same, by syncing dotfiles for instance. So, you try to recreate your environment aaaaand, it's broke. Why's this, I did the *exact* same steps on my other computer. Turns out I updated this other computer more recently, causing an incompatibility of some kind. Let's try and fix it.... 30 minutes of sunk time later and I either get it working or I just switch to my other computer again. Anyways, hopefully that illustrates the point I'm trying to make: computer's by default are inherentely *stateful* and, while I'm not saying state is bad outright (it's absolutely necessary to actually do anything useful!), maybe some less imperative state could be beneficial. Now, where does Nix/Guix come into this? Imagine the same scenario as last time, however one important change: you are now running Guix and your system is *entirely* configured (programs installed, dotfiles, even the bootloader) declaratively (more on that in a moment). You make changes by updating files, and those exact changes are synced over to your other computer and applied. Now, all of a sudden, you no longer have this issue of systems that don't behave exactly the same, because for all intents and purposes *they are exactly the same* (provably, in fact!) |
| 14 | 15 | ||
| 15 | # Imperative v. Declarative | 16 | # Imperative v. Declarative |
| 16 | 17 | ||
| @@ -22,6 +23,6 @@ So, with all of that said, how do you get started with using Guix or Nix? Well, | |||
| 22 | 23 | ||
| 23 | # Coming soon... | 24 | # Coming soon... |
| 24 | 25 | ||
| 25 | Given the length of this post has already ballooned more than I was expecting, I will be starting the actual Guix installation guide in Part 1 of this guide, hopefully coming out in the next few weeks (yay Spring Break!). Afterwards, I'll be delving into managing a home environment with Guix, then finally I will be making a series of posts describing how to actually hack Guix to make it purely your own (as well as hack it to contribute back for the greater good of everyone!) | 26 | Given the length of this post has already ballooned more than I was expecting, I will be starting the actual Guix installation guide in Part 1 of this guide. Afterwards, I'll be delving into managing a home environment with Guix, then finally I will be making a series of posts describing how to actually hack Guix to make it purely your own (as well as hack it to contribute back for the greater good of everyone!) |
| 26 | 27 | ||
| 27 | Until next time! | 28 | Until next time! |
diff --git a/content/projects/1-installing-guix.md b/content/projects/1-installing-guix.md new file mode 100644 index 0000000..ad84fcc --- /dev/null +++ b/content/projects/1-installing-guix.md | |||
| @@ -0,0 +1,30 @@ | |||
| 1 | --- | ||
| 2 | title: "Guix Part 1 - Installation Guide" | ||
| 3 | date: 2025-07-24T00:00:00-04:00 | ||
| 4 | draft: true | ||
| 5 | type: posts | ||
| 6 | --- | ||
| 7 | |||
| 8 | So, you've decided you want to take the plunge and try out this distribution? Nice. It will be a challenging, but rewarding experience (as I have found over the last few years). First things first, you will need to install it to try it out, there's not really a concept of a "live" distro here. Plus, installing this distro in the usual way you'd expect will lead to some issues early on, especially if you use the default upstream ISO (it uses `linux-libre`, which lacks a lot of drivers, especially in the wireless networking department) that will hinder your progress. To solve this, this guide is written with the assumption (and guidance) to use an alternate ISO: the one provided by SystemCrafters (another great resource for Guix, they have a YouTube channel! | ||
| 9 | |||
| 10 | # Preparation | ||
| 11 | |||
| 12 | First, you will need the installation ISO. First, go to the [releases page for the SystemCrafters image]() and download the latest one available. Note: this build breaks from time to time, even if it is out of date for a while, your installation will still be completely up-to-date once installed since package versions are derived from an upstream repository; the official one. It will just take a little longer to actually install. Plus, even though you are using an alternate ISO, everything is still completely safe. The difference between it and the default ISO are listed on each release, and if you really wanted to you could install the default image on a VM and make the alternate ISO yourself. Its main difference is that it: | ||
| 13 | |||
| 14 | - Uses the mainline linux kernel | ||
| 15 | - Has the non-guix channel activated by default, a repository for "non-free" software (like Firefox due to licensing, Steam, mainline linux, etc.) | ||
| 16 | |||
| 17 | Once you have this ISO downloaded and burned onto a USB using your method of choice, you are ready to install! Reboot your computer and boot into the installation environment. You will know you are ready to proceed when you see this screen | ||
| 18 | |||
| 19 | <!-- Note: Image of default splash during installation here --> | ||
| 20 | |||
| 21 | # Performing the installation | ||
| 22 | |||
| 23 | Now, what you do here depends on a few things: | ||
| 24 | |||
| 25 | - Do you have to use Wi-Fi? | ||
| 26 | - Use the graphical installer until you have your wifi set up at the very least to avoid manually configuring `wpa_supplicant`, at which case you can either continue using this installer or bail out to the terminal. | ||
| 27 | - Do you want an encrypted drive? | ||
| 28 | - If so, follow the manual steps below since some defaults are not great | ||
| 29 | - Do you want a standard installation (single partition, ext4, no encryption) | ||
| 30 | - Great, you can use the automated installer for most of this, but I would still use the manual steps for the actual installation, see [here](). | ||
diff --git a/static/gpgkey.asc b/static/gpgkey.asc index e1bce5e..0965de1 100644 --- a/static/gpgkey.asc +++ b/static/gpgkey.asc | |||
| Binary files differ | |||
diff --git a/themes/hugo-coder/layouts/_default/baseof.html b/themes/hugo-coder/layouts/_default/baseof.html index f278750..f981b50 100644 --- a/themes/hugo-coder/layouts/_default/baseof.html +++ b/themes/hugo-coder/layouts/_default/baseof.html | |||
| @@ -29,17 +29,11 @@ | |||
| 29 | height: 5px; | 29 | height: 5px; |
| 30 | border-radius: 50%; | 30 | border-radius: 50%; |
| 31 | background-color: white; | 31 | background-color: white; |
| 32 | position: absolute; | 32 | position: fixed; |
| 33 | transform: translate(var(--x), var(--y)); | 33 | transform: translate(var(--x), var(--y)); |
| 34 | animation: snow var(--s) linear var(--d) infinite; | 34 | animation: snow var(--s) linear var(--d) infinite; |
| 35 | } | 35 | } |
| 36 | 36 | ||
| 37 | /** | ||
| 38 | body { | ||
| 39 | overflow: hidden; | ||
| 40 | } | ||
| 41 | **/ | ||
| 42 | |||
| 43 | </style> | 37 | </style> |
| 44 | 38 | ||
| 45 | {{ with .Site.Params.author }}<meta name="author" content="{{ . }}">{{ end }} | 39 | {{ with .Site.Params.author }}<meta name="author" content="{{ . }}">{{ end }} |
| @@ -135,9 +129,9 @@ | |||
| 135 | onload="{{ if .Site.Params.enableTwemoji }} twemoji.parse(document.body); {{ end }}" | 129 | onload="{{ if .Site.Params.enableTwemoji }} twemoji.parse(document.body); {{ end }}" |
| 136 | > | 130 | > |
| 137 | <!-- <div id=fireworksContainer style="position: fixed; left: 0; top: 0; width: 100%; height: 100%; z-index: 2; pointer-events: none;"></div> --> | 131 | <!-- <div id=fireworksContainer style="position: fixed; left: 0; top: 0; width: 100%; height: 100%; z-index: 2; pointer-events: none;"></div> --> |
| 138 | <!-- | 132 | |
| 139 | <div id="snow" style="position: absolute; top: 0; left: 0; height: 100vh; width: 100vw; --s: 10s; --w: 50vw; --d: 0s;"></div> | 133 | <div id="snow" style="position: absolute; top: 0; left: 0; height: 100vh; width: 100vw; --s: 10s; --w: 50vw; --d: 0s;"></div> |
| 140 | --> | 134 | |
| 141 | {{ partial "float" . }} | 135 | {{ partial "float" . }} |
| 142 | <main class="wrapper"> | 136 | <main class="wrapper"> |
| 143 | {{ partial "header.html" . }} | 137 | {{ partial "header.html" . }} |
