Compare commits

..

13 Commits

Author SHA1 Message Date
b96391d813 Fixing favicon issue 2024-04-30 17:07:08 -07:00
5feb3e334b Short post about password managers xd 2024-04-30 16:21:31 -07:00
d74e93c704 Discord verification file 2024-02-25 19:23:55 -08:00
1fe91ded10 New post about fixing windows bootloader 2023-10-27 19:19:07 -07:00
29315403fd Fixing broken ogimage link 2023-09-12 16:47:13 -07:00
3545f76842 New post for making detergent and stuff 2023-07-05 21:43:00 -07:00
13fdadd1bf Removing wip warning 2023-05-03 22:55:41 -07:00
0fde7cafba Merge branch 'post/diy-slimevr' 2023-05-03 22:21:37 -07:00
c70fcef832 Adding more content to the DIY vr stuff 2023-05-03 22:14:27 -07:00
shockrah
33c4db008d Merge branch 'post/diy-slimevr' into 'master'
Post/diy slimevr

See merge request shockrah/shockrah-city!1
2023-03-29 22:39:46 +00:00
shockrah
a025f57afb Post/diy slimevr 2023-03-29 22:39:46 +00:00
d83b85ca3f WIP Note on new rolling post 2023-03-29 15:37:37 -07:00
a59944447f Cost section of slimevr post 2023-03-29 15:04:51 -07:00
12 changed files with 394 additions and 3 deletions

8
archetypes/default.md Normal file
View File

@ -0,0 +1,8 @@
---
title: {{ replace .File.ContentBaseName "-" " " | title }}
description: null
date: {{ .Date }}
draft: false
category: article
---

View File

@ -5,5 +5,7 @@ description = "Place to post stuff"
theme = "shockrah.xyz" theme = "shockrah.xyz"
enableEmoji = true
[markup.goldmark.renderer] [markup.goldmark.renderer]
unsafe = true unsafe = true

View File

@ -5,6 +5,8 @@ description = "Place to post stuff"
theme = "shockrah.xyz" theme = "shockrah.xyz"
enableEmoji = true
[markup.goldmark.renderer] [markup.goldmark.renderer]
unsafe = true unsafe = true

View File

@ -5,6 +5,8 @@ description = "Place to post stuff"
theme = "shockrah.xyz" theme = "shockrah.xyz"
enableEmoji = true
[markup.goldmark.renderer] [markup.goldmark.renderer]
unsafe = true unsafe = true

BIN
content/media/thumbnails/slimevr.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,91 @@
---
title: Building SlimeVR Trackers for Full Body Tracking
date: 2023-03-29
draft: false
description: From the cost, parts, and expectations. A full tutorial
category: article
image: /media/thumbnails/slimevr.png
---
# Goal
To build a Full body set of trackers:
* 7 trackers
* 3 extensions
# Parts List & Prices
**NOTE:** *Some extra components were purchased in case of defects*
:warning: Huge caveats about the purchase list below :warning:
1. Buy more parts than I did, ( especially BMI's ) because
some of these have a horrible failure rate. 15+
2. Maybe throw in an extra D1 ( 11 total ) because these can fail too.
3. Batter chargers tend to be fine but can be prone to getting burned so be careful when soldering.
## Main parts from AliExpress:
* `10` D1 Mini for `20.53$`
* `13` BMI 160 for `18.99$`
* `10` 18650 Battery **chargers** for `6.81$`
* Keep in mind that this will also work for regular LIPO batteries
* *See battery section for explanation*
## Small parts from AliExpress:
* 10 pack of DPDT 2P2T Panel Mount Switches for `2.99$`
* 100 pack of 30K ohms for `4.05$`
* 5 pack of 4Pin JST connections for `4.93$`
* 50 pack of diodes for `2.53$`
## Batteries
For reference I bought:
* `1` ( 10 piece ) EHAO 804040 3.7V 18mAh for `32.77$`
While these do work, shipping time is pretty awful compared to everything else.
Looking at the order of a few months for some vendors.
To deal with this problem we can swap those out for some `18650`'s:
* 10 pack of battery clips `7.99$`
* Set of 10 batteries for `33.32$`
* Total with taxes: `41.14$`
I can attest that `18650batteries.com` is a reputable place to get batteries.
*SideNote: includes shipping but you're mileage may vary depending on source*
## Total Initial Cost With Shipping and Taxes
If you buy the 804040 batteries: `93.60$`
With the 18650's: `101.97$`
## Assembly
### Assumptions
That the parts list above is being used however the points below
are kept somewhat general.
### Equipment
Important to note that if you don't have soldering equipment you'll need
to get some.
Cheap kits can be found for under 50$ but make sure you have plenty of solder.
1. 18650's are heavy so if possible
For this reason it's not a bad idea to get some battery clips and mount
everything to that to keep things compact. When the weight of a tracker
is imbalanced then it's much harder to mount as it tends to "swing" more.
2. Heat shrink of varying sizes to clean up splices is basically required.
3. \*Flux if you want however this is really not required at all.

View File

@ -0,0 +1,77 @@
---
title: DIY Detergent
date: 2023-07-05
draft: false
description: Cheap detergent at home
category: article
image:
---
# Making detergent at home.
Recipe and instructions are followed by some interesting things I found
regarding cost and availability.
# Recipe
* 1 Part Borax
* 1 Part Baking Soda ( Sodium *Bi-Carbonate* )
* 1 Washing soda Semi-Optional ( Sodium *Carbonate* )
* **NOTE**: Can be made from baking soda if you can't find it in stores
* **NOTE**: While not required does greatly improve the quality of the detergent
Optional additions
* 1 Bar of Soap ( optional )
* No liquid soap will not work for this
## Instructions
Mix Borax, Baking Soda, and Washing Soda evenly in a container. If you are using
a bar of soap you can use a cheese grater to break it down so that you can mix
this in with the rest.
## Making Washing Soda ( Sodium *Carbonate* )
Since this stuff can be hard to find you can also make it at home.
Here's a video from __[NileRed](https://www.youtube.com/watch?v=cpGEc-pLXN4).__
Quick transcription:
1. Pour out baking soda ( sodium bi-carbonate ) into a pot
2. As it heats up it will release CO2 and water
* This results in some bubbling
3. Keep heating until bubbling stops and the powder appears like a dense powder.
# FAQ & Stuff about cost
> Is this actually cheaper than just buying a regular detergent?
From my _very_ quick checks of prices around me I found Target had 16oz boxes of baking soda for 1$. A 4 lb box of Borax was 8$.
For 3 pounds of detergent you would be looking at a 10$ investment of materials.
* 1 lb baking soda ( 1$ )
* 1 lb baking soda converted to washing soda ( 1$ )
* 1 lb borax ( 2$ )
In total **4$** for 3 pounds of unscented detergent isn't too bad.
> Are there any alternatives to this sort of thing?
Dish soap unironically works well enough for small loads you just have
to play with the quantities.
> What about unit prices for all of these things?
Borax: https://www.intratec.us/chemical-markets/borax-price
Baking Soda: https://www.intratec.us/chemical-markets/sodium-bicarbonate-price
_Not including soap because this depends highly on what soap you choose_

View File

@ -0,0 +1,87 @@
---
title: Password Managers
description: just use unix pass
date: 2024-04-30T16:12:04-07:00
draft: false
category: article
---
# `pass` Shilling
This one is gonna be short but I've come shill password manager that:
* Allows for simple generation of passwords
* Allows for easy backups to be made
* Is compatible with basically any password access workflow you can think of
* Is completely foss
* Allows for both single and multiline passwords
* Allows for optional opt-in versioning using git ( as a subcommand )
* Can also be used with other VCS's
It's called `pass` --> https://www.passwordstore.org/
# Examples
Here's an example of how it works
Simple Generation of passwords:
```
~ pass generate example 100
[master 3cfe907] Add generated password for example.
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 example.gpg
The generated password for example is:
9m/Mk5WzLE75=QzhdD;T>}keXOv')FOh~S(=J43OAZ2qkxg<I>hjUJGRpav%oI<yq!ULw0<)@#P|+y0C2~q[O2=&^x{P_\v'K@\B
```
Want to straight up just copy it directly? Ok here you go with `-c`
```
pass generate example2 100 -c
[master 55599f0] Add generated password for example2.
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 example2.gpg
Copied example2 to clipboard. Will clear in 45 seconds.
```
# Why tho
Because it's completely dead simple to the point of absurdity. Want a really
weird use case; pipe the output into a `qr` command and generate completely
random qr codes. Using the same example as above:
```
pass example | qr
█████████████████████████████████████████████████
█████████████████████████████████████████████████
████ ▄▄▄▄▄ ███▄▄▄ ▀▀▀▄▀▄▀ ▄▀▀▄ ▀█▄▀▄ █ ▄▄▄▄▄ ████
████ █   █ ████ █▀▄▀ ▀ ▄█▀ ▄ █▀▀█▄ █▀█ █   █ ████
████ █▄▄▄█ █▀▄  ▀▄▀ ▀█ ▀▀▄█▄▀ ▀▀ ▄▀▀ █ █▄▄▄█ ████
████▄▄▄▄▄▄▄█▄▀▄▀ ▀ ▀ ▀ ▀ ▀▄█▄█ █▄▀▄█▄█▄▄▄▄▄▄▄████
████▄▀█ █ ▄▀  ▀▄▀▄  ▄▄▀▄▀█▀██   ▀▄█ ▀▄▀▄█▀▀█▀████
████ █▄▄ ▀▄  ▄█▀▄▄ █ █▄▄▀▀██  ▄▀ █▀▄ ▄ ▄▄█  ▀████
████▀▄▄▄█▄▄▀██ ▀█ ▄▄▄▄█▄█ ▀▀▀▀▀ ███▄▀█▄██▀█▀ ████
████▄▀ █▀▄▄  ▀▄▀ ▄ ▄▀  ▀▄▀▄ ▄▀▄█▀ ██▀█▀█▀ ▄  ████
████▀▄ ▀█▄▄ ▄▄█  ██▀ ▄ ▄  █▀▄▀█   ▀ ▄█▀▀█▄▀▀ ████
█████ ▀▀▀█▄▀▄████ ▄▄ ▀ █   ▀ ▄█▀▀▀▄▀▀▀▀▄  █▀▄████
████ ▀ ▀██▄▀ ▀▀ ▄█ ▄▀▄ ▄▄▀▄█ ▄█▀ ▀▀▄█▄ ▄▄▄▀▄ ████
█████▀▄██▀▄▄ ▄█▄█▀▀█▄█▄ ▀▀▄██▀ █▄█▀▄▀ ▀▄▀▄▀██████
████▀█ █▄ ▄ ▄   █ ▀ ███   ▄▀  ██▀▄ ▀▀▀▄██ ▀▄▄████
█████ ▄ ▀█▄█  ▄██▄▀ ▀▀▄▀  ▀   █▀▀▀▄█ ▀  ▄ ██ ████
████▄▀▄▄██▄▄▄  ▀▀▄▄▄▄█▀▀▄ ▀█ ▀▄▀   ▄ █▀▀▄ █▀█████
████▄██▀  ▄▄ ▀▄▄██ ▄▄▀▄   ▄██▄▀▀ ▀ █▀▄ ██ ▄▄ ████
████▄███▄▄▄▄ ▀▄ █▀ ██▄█▄ █▀██ ▀█▄█▀  ▄▄▄ ▀█▄ ████
████ ▄▄▄▄▄ █▀▄▄ ▄▄▄▄▄ █   ██▄▀█▀▄▄ █ █▄█ ▄▀▄▀████
████ █   █ █▀ ▀ ▀▀▀▄ ███ █ █▀▀██▀▀▀▀▄▄  ▄▄█ █████
████ █▄▄▄█ ████▄▀█▀ ▄▀▄▀▀ █▄▄▀█▀ ▀▀▄█▄ █ ▄█ ▄████
████▄▄▄▄▄▄▄█▄▄█▄█▄█▄▄▄███▄▄█▄███▄▄▄█▄█▄▄██▄▄█████
█████████████████████████████████████████████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
```
Also each password is just a file in a directory tree which means you can sort
things however you'd like which is also neat. Anyway that is all I had for now
just thought this program I've been using for a while now was cool and deserved
a quick post about it :smile:

View File

@ -0,0 +1,117 @@
---
title: Fixing a windows EFI boot directory
description: Because I can't into Grub
date: 2023-10-27T18:27:05-07:00
image: /favicon.png
draft: false
category: article
---
# Context
After making my usual Debian drive unusable ( thanks Nvidia ) from an
`apt upgrade` I found myself re-installing Debian all over again. Luckily
I keep my `/home` and `/` mounted on separate partitions so this was
pretty easy. When it came time to pick a drive to boot off of however I comletely
forgot that I had a Windows drive that I had been using to jankily boot off of.
_Sidenote_: I only forgot because I never bothered to remedy the situation of
being forced to smack F12 9999 times every time I booted for a few months. :shrug:
After re-installing Debian and getting setup once more I went to boot into
Windows since I had some avatar modeling I wanted to do and.... couldn't boot.
# Discovering what happened
From Debian, check where the `/boot` is mounted to.
In my case I have drives `sda` and `sdb` which contain Debian and Windows data
respectively. I found the following
1. `/boot` was mounted to `sdb`
2. `/boot/efi/EFI/` did not contain any sort of Windows folder
:mag: **HINT:** there are tools in Debian repos to repair this folder however
I tested literally none so good luck.
Basically the new Grub installation had wiped out the old `/boot` partition
which I never paid attention to and removed it :facepalm: hence why it had
no Windows section. Normally an `update-grub` would suffice **if** that folder
was present but this was not enough.
# Solution
To make Windows bootable I setup a Windows installation USB drive using dd as such:
```bash
dd if=/path/to/Windows.iso of=/dev/<usb-drive> status=progress
```
Also this will hang when it gets to the end but seriously just give it some time
because it basically has to verify everything after it's been copied over.
Finally I found this post on superuser which shows how to bring back the EFI
bootloader for windows so that Grub create a new entry for it and we can boot
like normal :arrow_right: [answer](https://superuser.com/a/1444266)
# Raw paste of Solution from 🌐 [superuser](https://superuser.com/a/1444266)
In case that answer ever gets clobbered here is the raw paste:
The other answers given here work great on MBR/BIOS systems, however if you're
on a UEFI system like I am, bootsect will just write a semi-functional boot MBR
over the [🌐 GPT protective MBR and bootrec](https://en.wikipedia.org/wiki/GUID_Partition_Table#Protective_MBR_(LBA_0))
just gives an "Access denied" error message, and neither one has a functional
option to fix a broken [🌐 EFI system partition](https://en.wikipedia.org/wiki/EFI_system_partition),
which on a UEFI/GPT drive is what
contains the bootloader that used to be stored in the MBR. There's unfortunately
almost no up-to-date guides on fixing the UEFI Windows Boot Manager (almost all
of them just say to run the graphical Startup Repair utility, but that doesn't
fix the problem in all cases), but I finally found the correct solution buried
in [🌐 this article](https://www.partitionwizard.com/clone-disk/bootrec-fixboot-access-is-denied.html),
which requires the use of the [🌐 bcdboot](https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/bcdboot-command-line-options-techref-di) command instead:
1. Grab the [🌐 Media Creation Tool](https://www.microsoft.com/en-us/software-download/windows10), make yourself a Windows 10 installation DVD or USB drive, and then boot into it.
2. When prompted, choose "Repair your computer", followed by "Troubleshoot", "Advanced Options", and finally "Command Prompt".
3. Run `diskpart` and then `list disk`. Note the disk number for the disk with your EFI system partition (ESP).
4. Select that disk with `select disk x` (where `x` is the disk number from the last step).
5. Run `list volume`. Note the volume number for your EFI system partition (ESP).
6. Now do `select volume x` (where `x` is the volume number for the ESP) and then
`assign letter=N:` to mount the partition. Run `list volume` again and note that
the ESP is now assigned a driver letter. Run `exit` to leave `diskpart`.
7. (Optional) If you are not currently dual booting and want to fully clean the
ESP before writing a new bootloader, run `format N: /FS:FAT32` to reformat it as
FAT32. This is probably not necessary under normal circumstances, however, as
`bcdboot` seems to do a good job of cleaning things up itself. Especially **do not
do this if you have a Linux distro on another partition** or else you'll have to
reinstall GRUB as well once you're done with this. Also note that the following
steps should not affect an EFI GRUB install as long as you do not otherwise
delete GRUB's existing directory on the ESP.
8. Finally, write the new bootloader to the partition with `bcdboot C:\windows /s N: /f UEFI`.
This command rebuilds a new UEFI-compatible bootloader on the ESP mounted at `N:`
using the Windows installation mounted at C:\windows. Once it's done, you can
verify the new bootloader was written by running `dir N:\EFI`, where you should
see a `Microsoft directory` containing the new Windows Boot Manager as well as a
`boot directory` containing the fallback bootloader (along with other directories
for any other bootloaders you have installed, such as GRUB for Linux).
9. (Optional) If you are dual booting, you will probably need to boot into your
Linux distro and run `sudo update-grub` to allow the GRUB scripts to detect and
add the new Windows bootloader.
10. Now boot into your BIOS setup and make sure "Windows Boot Manager" (or GRUB,
if you're dual-booting) is set as the top boot choice. Save and reboot and
you'll finally be back in Windows (or GRUB).
Here are some links to help you understand EFI stuff ( because I still don't )
* https://askubuntu.com/questions/1144636/three-questions-on-boot-efi-and-boot-mountpoints
* https://support.microsoft.com/en-us/topic/use-bootrec-exe-in-the-windows-re-to-troubleshoot-startup-issues-902ebb04-daa3-4f90-579f-0fbf51f7dd5d

View File

@ -2,9 +2,10 @@
[[ "$1" = "" ]] && echo No filename given for new post\! && exit 1 [[ "$1" = "" ]] && echo No filename given for new post\! && exit 1
file="$(basename $1)" name="$(basename -s .md $1)"
cat << EOF | tee content/posts/"$file.md" echo Creating new post content/posts/$name.md with metadata:
cat << EOF | tee content/posts/"$name.md"
--- ---
title: $(basename -s .md "$file") title: $(basename -s .md "$file")
date: $(date '+%F') date: $(date '+%F')

View File

@ -0,0 +1 @@
dh=1c0133027994b982e04807790b3a6a3925e368d8

View File

@ -22,7 +22,7 @@
<meta property="og:video:width" content="640"> <meta property="og:video:width" content="640">
<meta property="og:video:height" content="480"> <meta property="og:video:height" content="480">
{{ else }} {{ else }}
{{ $ogimage := "{{ .Site.BaseURL }}/favicon.png" }} {{ $ogimage := printf "%s%s" .Site.BaseURL "/favicon.png" }}
{{ if .Params.Image }} {{ if .Params.Image }}
{{ $ogimage = .Params.Image }} {{ $ogimage = .Params.Image }}
{{ end }} {{ end }}