Compare commits
13 Commits
8aa1807e25
...
b96391d813
Author | SHA1 | Date | |
---|---|---|---|
b96391d813 | |||
5feb3e334b | |||
d74e93c704 | |||
1fe91ded10 | |||
29315403fd | |||
3545f76842 | |||
13fdadd1bf | |||
0fde7cafba | |||
c70fcef832 | |||
|
33c4db008d | ||
|
a025f57afb | ||
d83b85ca3f | |||
a59944447f |
8
archetypes/default.md
Normal file
8
archetypes/default.md
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
title: {{ replace .File.ContentBaseName "-" " " | title }}
|
||||
description: null
|
||||
date: {{ .Date }}
|
||||
draft: false
|
||||
category: article
|
||||
---
|
||||
|
@ -5,5 +5,7 @@ description = "Place to post stuff"
|
||||
|
||||
theme = "shockrah.xyz"
|
||||
|
||||
enableEmoji = true
|
||||
|
||||
[markup.goldmark.renderer]
|
||||
unsafe = true
|
||||
|
@ -5,6 +5,8 @@ description = "Place to post stuff"
|
||||
|
||||
theme = "shockrah.xyz"
|
||||
|
||||
enableEmoji = true
|
||||
|
||||
[markup.goldmark.renderer]
|
||||
unsafe = true
|
||||
|
||||
|
@ -5,6 +5,8 @@ description = "Place to post stuff"
|
||||
|
||||
theme = "shockrah.xyz"
|
||||
|
||||
enableEmoji = true
|
||||
|
||||
[markup.goldmark.renderer]
|
||||
unsafe = true
|
||||
|
||||
|
BIN
content/media/thumbnails/slimevr.png
(Stored with Git LFS)
Normal file
BIN
content/media/thumbnails/slimevr.png
(Stored with Git LFS)
Normal file
Binary file not shown.
91
content/posts/diy-slimevr.md
Normal file
91
content/posts/diy-slimevr.md
Normal 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.
|
77
content/posts/making-soap.md
Normal file
77
content/posts/making-soap.md
Normal 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_
|
||||
|
||||
|
||||
|
||||
|
||||
|
87
content/posts/password-managers.md
Normal file
87
content/posts/password-managers.md
Normal 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:
|
||||
|
117
content/posts/windows-grub-efi.md
Normal file
117
content/posts/windows-grub-efi.md
Normal 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
|
@ -2,9 +2,10 @@
|
||||
|
||||
[[ "$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")
|
||||
date: $(date '+%F')
|
||||
|
1
static/.well-known/discord
Normal file
1
static/.well-known/discord
Normal file
@ -0,0 +1 @@
|
||||
dh=1c0133027994b982e04807790b3a6a3925e368d8
|
@ -22,7 +22,7 @@
|
||||
<meta property="og:video:width" content="640">
|
||||
<meta property="og:video:height" content="480">
|
||||
{{ else }}
|
||||
{{ $ogimage := "{{ .Site.BaseURL }}/favicon.png" }}
|
||||
{{ $ogimage := printf "%s%s" .Site.BaseURL "/favicon.png" }}
|
||||
{{ if .Params.Image }}
|
||||
{{ $ogimage = .Params.Image }}
|
||||
{{ end }}
|
||||
|
Loading…
Reference in New Issue
Block a user