typos and spelling.

This commit is contained in:
Gabe Venberg 2024-07-29 17:57:54 -05:00
parent fb44be7ee5
commit 3d4349710b
8 changed files with 48 additions and 47 deletions

View file

@ -6,11 +6,11 @@ showToc = false
### Hi There!
Im Gabe Venberg.
I'm Gabe Venberg.
Professionally, Im a newly minted computer scientist, with interest in embedded software, OS development (and anything backend, really), and strongly typed languages (🦀).
Professionally, I'm a newly minted computer scientist, with interest in embedded software, OS development (and anything backend, really), and strongly typed languages (🦀).
*Unprofessionally*, Im a general nerd, ever tinkering on my 3d printer,
*Unprofessionally*, I'm a general nerd, ever tinkering on my 3d printer,
learning embedded systems programming,
building split keyboards,
managing my self-hosted cloud, and reading **way** too many sci-fi books.

View file

@ -5,7 +5,7 @@ draft = false
+++
Ive been using Arch Linux for several years now.
Of course, my first installs were... blunderous, as i wanted to do full disk encryption from the get-go, and I didnt know what I was doing.
Of course, my first installs were... blunderous, as i wanted to do full disk encryption from the get-go, and I didn't know what I was doing.
After those first one or two installs, I generally settled on LVM on LUKS with a GRUB bootloader and my swap on an LVM volume,
mostly because it makes it much easier to setup hibernation/suspend to disk vs, say, a swap file.
(with a swap file, you have to deal with file offsets, and I have never gotten a satisfactory answer as to whether its possible for the filesystem to just *move* a file to a different disk sector in the process of, say, defragging with a very full hard drive.)
@ -14,7 +14,7 @@ With my newest laptop, I decided to try out btrfs, in large part due to its snap
(Im hoping to make a lightweight filesystem backup using this, on top of the data-level backups I currently use.)
However, suspend-to-disk is also quite important to me, and the Arch Wiki is really only clear on how to do that with unencrypted partitions, LVM on LUKS, and on swapfiles.
The archwiki has some info on how to do it for the encrypt hook with a custom mkinitcpio hook, or with sd-encrypt hooks by just specifying multiple devices, but I didnt want to be writing a ton of custom config for the encrypt hook, and the section on sd-encrypt was not very clear at all, so I decided to do some experimentation and write up what worked for me.
The archwiki has some info on how to do it for the encrypt hook with a custom mkinitcpio hook, or with sd-encrypt hooks by just specifying multiple devices, but I didn't want to be writing a ton of custom config for the encrypt hook, and the section on sd-encrypt was not very clear at all, so I decided to do some experimentation and write up what worked for me.
## A note on security and risk profiles
@ -22,7 +22,7 @@ The encryption schema I am setting up in this guide is only meant to protect you
Full disk encryption will not protect you from anything while you laptop is powered on. After boot, the encryption is completely transparent to userspace.
Also, I did am not encrypting the boot partition, and Im not setting up any sort of secure boot.
This means that an attacker could hypothetically replace your boot partition or firmware and keylog your password, so if you suspect your computer has been tampered with, *DONT* boot it up.
This means that an attacker could hypothetically replace your boot partition or firmware and keylog your password, so if you suspect your computer has been tampered with, *don't* boot it up.
To reiterate, this setup by itself only protect your data if your powered down machine is stolen. It does not protect you data from being stolen in any scenario where your laptop is powered on during tampering or you log in after it has been tampered with.
@ -41,7 +41,7 @@ Anyway, start by booting up the arch ISO...
## Installing via ssh
Sometimes, you dont want to be switching from the computer you are installing Linux on and the computer with the documentation and a search engine on it,
Sometimes, you don't want to be switching from the computer you are installing Linux on and the computer with the documentation and a search engine on it,
and Ive found the best way to avoid that is to set up a simple ssh session from the arch ISO to the computer with the documentation on it.
⚠️ **WARNING:** On a normal, already installed machine, *NEVER* use just a password for SSH. *ESPECIALLY* if it is internet-facing or connected to a public network.

View file

@ -1,16 +1,16 @@
+++
title = "Getting the Nextcloud client to save login info on arch linux (or any barebones linux distro)"
title = "Getting the Nextcloud client to save login info on arch Linux (or any barebones Linux distro)"
date = 2021-12-12T14:59:31-05:00
draft = false
+++
During the 5 or so years Ive had nextcloud, Ive always been quite happy with the webclient, but the device clients... need some work.
I recently figured out how to resolve one of my biggest pain points on the Linux desktop client, and am recording it here, mostly so I dont forget next time I setup a new computer,
During the 5 or so years I've had nextcloud, I've always been quite happy with the webclient, but the device clients... need some work.
I recently figured out how to resolve one of my biggest pain points on the Linux desktop client, and am recording it here, mostly so I don't forget next time I setup a new computer,
and to save others with the same problem from endless forum post and GitHub issue crawling.
## The cause
Nextcloud expects the environment it is running in to have a 'keychain manager' installed and accessible by libsecret.
However, currently, the Arch Linx nextcloud package does not list libsecret nor any keychain manager as a dependency.
However, currently, the Arch Linux nextcloud package does not list libsecret nor any keychain manager as a dependency.
This does not cause a problem if you are using a desktop environment, as they will come with one in their own dependency cloud, but if you are just using a window manager, you may very well not have one installed.
(as a side note, this also seems to cause a significant delay in the client starting up, probably some sort of timeout waiting to access the keyring

View file

@ -6,7 +6,7 @@ draft = false
In the past 2 years or so, I have been using my caps lock key as a separate ctrl key on my desktop keyboard.
This is very easy to do in X11 with a setxkmap command.
However, with my laptop, I try to run without X as much as possible. (Ive found it make a nice, distraction free environment, and it seems to be pretty good for battery life)
However, with my laptop, I try to run without X as much as possible. (I've found it make a nice, distraction free environment, and it seems to be pretty good for battery life)
Obviously, without X, we cannot use setxkmap.
In order to do this without the tools in setxkbmap, we will have to edit the keymap used by the vitual console and set it as the keymap using localectl.
@ -36,7 +36,7 @@ Re-pressing and releasing the key has no effect.
So what is happening seems to be that when we press caps lock, it looks for what keycode to send when no modifier keys are pressed.
Finding Control in the first column (the only column we specified), it activates the control modifier.
When we release caps lock, it looks for the key to [un]press when Caps lock is released, and finds nothing.
When we release caps lock, it looks for the key to *un*press when Caps lock is released, and finds nothing.
This means that control is now stuck on.
But wait, if we read a bit further in the man page, we find that this shouldn't be happening!
@ -84,7 +84,7 @@ Then you can (optionally) re-zip it with 'sudo gzip [filename]' and set it as yo
There we go!
Our caps lock key is now a second control key!
Note that localectl does not seem to propogate our change to X11, unfortuanately.
Note that localectl does not seem to propagate our change to X11, unfortunately.
To do this in X as well, create a file in `/etc/X11/xorg.conf.d/`, named something along the lines of `90-keyboard.conf` with the config:
{{<highlight console>}}

View file

@ -4,7 +4,7 @@ date = 2023-07-29T16:37:34-05:00
draft = false
+++
So ive been using git to managing my dotfiles since [checks `git log`]... 2018.
So I've been using git to managing my dotfiles since [checks `git log`]... 2018.
At first, I was going to write some inevitably brittle shell script to handle symlinking from the dotfile repo to where each file should be,
but before I got about to implementing it, I discovered `stow`.
Now, after using stow for dotfile management for over 5 years, I figure I should really document exactly how I go about managing my dotfiles, with an aim to help other people who want to have an easy to manage dotfiles repo that can be quickly deployed on new machines.
@ -12,9 +12,9 @@ Now, after using stow for dotfile management for over 5 years, I figure I should
## What Stow does
[stow](https://www.gnu.org/software/stow/) is a 'symlink farm manager', but I almost prefer to think of it a simplistic package manager that makes it incredibly easy to create packages from scratch.
Like most of the gnu progect utility, the [documentation](https://www.gnu.org/software/stow/manual/stow.html) covers a lot, but is a bit intimidating if you dont already know the software.
Like most of the gnu project utility, the [documentation](https://www.gnu.org/software/stow/manual/stow.html) covers a lot, but is a bit intimidating if you don't already know the software.
At its core, if you are in directory `~/foo`, containing a directory `bar`, whitch itself contains some files and folders like so:
At its core, if you are in directory `~/foo`, containing a directory `bar`, which itself contains some files and folders like so:
```
~
└── foo
@ -80,7 +80,7 @@ It can do the reverse, as well, running `stow -d bar` will result in:
└── .config -> ~/foo/baz/.config/baz
```
It detected that .config was no longer shared, and unfolded the tree, making `.config` a direct symlink again.
Note that if .config contained files that stow doesnt 'own', it would leave it alon,e only deleting the 'bar' symlink when `stow --delete bar` was run.
Note that if .config contained files that stow doesn't 'own', it would leave it alone, only deleting the 'bar' symlink when `stow --delete bar` was run.
In short, you can think of stow taking a folder, and symlinking the contents of that folder exactly 2 levels up the directory tree, symlinking `~/foo/bar/contents` directly to `~/contents`.
@ -94,26 +94,27 @@ Once you have the file structure down, all you need to install on a new machine
## Non-stow considerations
Stow helps you manage your configs, but nothing else.
A lot of your more complex configs probably reqire other software beyond the program that reads that config.
for example, my terminal emulator config needs a specific font installed,
A lot of your more complex configs probably require other software beyond the program that reads that config.
For example, my terminal emulator config needs a specific font installed,
my i3 config requires specific programs installed for which keybinds are defined,
my neovim config needs things like wget, gzip, python, cargo, xsel, fzf, and others for things from treesitter to clipboard support.
Id encorage your repos readme to have a section on each config package that has external dependencies,
Id encourage your repos readme to have a section on each config package that has external dependencies,
explaining what dependencies are needed,
and if the dependency is only needed for a single functionality,
what functionality they add and what part of the config to comment out if the functionality is not needed.
Id also reccomend you create a directory called `scripts` or something similar that is not a stow package,
Id also recommend you create a directory called `scripts` or something similar that is not a stow package,
but is put on your `$PATH` by your `.zshrc` / `.bashrc` / `.fishrc` / the dotfile for whatever shell you use.
This is for you to put any scripts you develop that may be called by/aliased by your configurations.
## Bootstrapping
Stow can be found on pretty much every linux distributions package manager. If for some reason it is not, building from source is... suprisingly easy.
Stow can be found on pretty much every Linux distributions package manager. If for some reason it is not, building from source is... surprisingly easy.
You can find the source http://ftp.gnu.org/gnu/stow/[here], download `stow-latest.tar.gz`, and decompress it with `tar xvf stow-latest.tar.gz`. cd into the uncompressed folder, and simply run `autoreconf -iv`, `./configure`, and `make`. The binary will be in `./bin/stow` free for you to move it into your `$PATH`.
## Conclusion, or something
So, that more or less explains how I manage every bit of text-based configuration on my machine. Again, Id highly reccomend you check out my [repo](https://git.venberg.xyz/Gabe/dotfiles) or the repo of anyone else using stow for dotfile management.
So, that more or less explains how I manage every bit of text-based configuration on my machine.
Again, Id highly recommend you check out my [repo](https://git.venberg.xyz/Gabe/dotfiles) or the repo of anyone else using stow for dotfile management.

View file

@ -6,9 +6,9 @@ draft = false
image = "keyboard_with_case"
+++
Ive been using a split keyboard at home now for several years
I've been using a split keyboard at home now for several years
(specifically, the [UHKv2](https://ultimatehackingkeyboard.com/), though nowadays I probably would have gone for something ortholinear)
and ive always wanted one for the office.
and I've always wanted one for the office.
The problem was, if I was going to get a new keyboard,
I wanted it to be for both the office and travel,
and most prebuilts around are not that portable.
@ -25,13 +25,13 @@ and started the long wait for it all to arrive.
In the meantime, I researched how to flash the [elite-pi](https://docs.keeb.io/elite-pi-guide)'s I had purchased with QMK.
(Normal elite-c's were out of stock, and I like the RP2040.)
Its a little bit different, but as long as you have used QMK before, it isnt much extra.
Its a little bit different, but as long as you have used QMK before, it isn't much extra.
When the parts came,
I socketed the microcontrollers,
soldered the sockets to the pcbs,
and finally soldered the switches in.
(I used choc purpz, a bit of a leap of faith from my usual heavy tactile switches).
(I used choc Purpz, a bit of a leap of faith from my usual heavy tactile switches).
I did ruin one switch by letting a leg getting hot enough to melt the housing plastic,
and desoldering it was unexpectedly difficult,
but not every build can be mistake free, right?
@ -42,11 +42,11 @@ Flashing QMK was uneventful, working exactly as the [QMK docs](https://github.co
I would, however, recommend flashing the micros *before* doing any soldering,
I had to take my micros out of their sockets in order to access the boot buttons.
(once the keyboard is assembled, there is a dedicated keycombo on most layouts to enter the bootloader,
so you dont have to do this every time you reflash your keyboard)
so you don't have to do this every time you reflash your keyboard)
## Layout
I wasnt feeling quite adventurous enough to switch away from qwerty,
I was'nt feeling quite adventurous enough to switch away from qwerty,
but, the Sweep being a 34-key board, some layout adjustment would be needed.
I took the Sweeps [default layout](https://github.com/qmk/qmk_firmware/tree/master/keyboards/ferris/keymaps/default)
and used the [QMK configurator](https://config.qmk.fm/) to customize it.
@ -83,9 +83,9 @@ but I am now at the point where it feels natural to type on.
I want this keyboard to be both my work keyboard as well as my travel keyboard,
so a case is essential.
(I dont want to carelessly set it down on a conductive surface and fry the micros, for example)
(I don't want to carelessly set it down on a conductive surface and fry the micros, for example)
I asked a friend to print [this case](https://www.printables.com/model/513831-ferris-sweep-22-case) for me.
(I didnt have any TPU on hand.)
(I didn't have any TPU on hand.)
With the case and some rubber feet to keep it from sliding over the surface,
it becomes a very serviceable little travel keyboard,
one I can throw in my laptop bag and use in place of the built-in keyboard.
@ -106,6 +106,6 @@ and if they do, I did socket the microcontrollers for easy replacement.
It took me all of a week to fall in love with the sweeps form factor,
and, 1 month later, Im convinced I will never let myself work on a regular keyboard for a long period of time again,
thats how much Ive come to appreciate split keyboards.
that's how much Ive come to appreciate split keyboards.
The fact that the board has no pesky diodes or other surface mount parts means its very accessible first build,
and one Id recommend to anyone interested in improving their typing ergonomics.

View file

@ -3,7 +3,7 @@ title = "Nushell first impressions"
date = 2024-03-01T11:34:04-06:00
+++
Ive been experimenting with the tools I use on a regular basis lately -- switching
I've been experimenting with the tools I use on a regular basis lately -- switching
up my shell, terminal multiplexer, and even trying out other editors.
Today, Id like to focus on my experiments with my shell.
@ -32,7 +32,7 @@ give myself enough time to really use it,
see not only how it felt with ordinary usage,
but to give myself time and opportunity to construct a few pipelines and scripts in it.
All that said, the month is up, and Ive been collecting examples,
All that said, the month is up, and I've been collecting examples,
thoughts, and some criticisms along the way.
## Piping structured data
@ -69,7 +69,7 @@ ls **/* | where modified > (
ps |
# convert the name of the called process into a path
update name {|process| (which $process.name).path.0?} |
# join with the list of all files in the current directory, recursing down subdirectories.
# join with the list of all files in the current directory, recurring down subdirectories.
join (ls -f **/*) name
{{</highlight>}}
@ -93,7 +93,7 @@ explanatory comments.
## Parsing non-nu tools
But what if our tool/text file isnt in a format nushell understands?
But what if our tool/text file isn't in a format nushell understands?
Thankfully, for most formats parsing is relatively straightforward.
Lets take this NGINX server log, for example (not a log of real traffic, just a
sample log I found)
@ -330,7 +330,7 @@ invoking them from within nu treats them as external commands,
meaning they take in and pass out plain text,
rather than the structured data that you would get with a proper custom command
or nu builtin.
The best workaround Ive found so far is instead of making scripts that you run
The best workaround I've found so far is instead of making scripts that you run
directly, you define a custom command in the script file, `use` that file, and
then run the custom command, like this:
@ -362,6 +362,6 @@ but seems to be the best way at the moment to make 'scripts' that are integrated
## So, overall, is it worth it?
Nushell is certainly an promising project, and I will almost certainly be continuing to use it as my daily shell.
It cant do everything, but dropping into zsh for a task or two every once in a while isnt that big a deal for me,
It cant do everything, but dropping into zsh for a task or two every once in a while isn't that big a deal for me,
and having access to such a powerful shell by default has made other tasks much easier.
If you regularly use pipelines in your default shell, consider giving Nushell a try.

View file

@ -5,32 +5,32 @@ draft = true
+++
[Syncthing](https://syncthing.net/) is one of the best file syncing tools in existence,
and I dont say that lightly.
and I don't say that lightly.
Syncthing is a distributed, peer to peer file syncing service.
This means that it doesnt rely on a central, always online server ran by you or someone else,
This means that it doesn't rely on a central, always online server ran by you or someone else,
but that your devices directly send files between themselves whenever they are online at the same time.
## Syncthing vs Nextcloud
I use both Syncthing and Nextcloud for data storage and syncing,
and while nextcloud has a lot of features and provides a nice web interface,
and while Nextcloud has a lot of features and provides a nice web interface,
(I get a lot of use out of Nextcloud's caldav server)
I keep running into problems and limitations with it.
One thing is maintenance. Of my entire homelab,
I easily spend the most time troubleshooting and fixing nextcloud,
I easily spend the most time troubleshooting and fixing Nextcloud,
sometimes having to reboot the VM multiple times per week.
Additionally, ive ran into a few annoying limitations more than once,
Additionally, I've ran into a few annoying limitations more than once,
such as the sever crashing if you view a folder with too many files in the web interface or apps.
Nextcloud does a lot of things, and does things very well,
but I would not describe it as a rock solid piece of software.
Syncthing, on the other hand, has no web file manager,
does not do caldav or any of the other million things you can do with nextcloud apps,
does not do caldav or any of the other million things you can do with Nextcloud apps,
and requires setup on both ends to setup a syncing connection.
In short, Syncthing does only one thing.
But boy does it do that thing well.
During the time Ive used Syncthing,
Ive never seen it crash, hang, or corrupt a file.
During the time I've used Syncthing,
I've never seen it crash, hang, or corrupt a file.
Even with a device like my phone,
constantly loosing and regaining network access,
files have synced perfectly, every time.