change grammatical viewpoint of pronouns referring to the webmistress
This commit is contained in:
parent
62bec80269
commit
dcc35f55f1
@ -1,21 +1,21 @@
|
|||||||
(defun html ()
|
(defun html ()
|
||||||
(page "home" `((section ()
|
(page "home" `((section ()
|
||||||
(p ()
|
(p ()
|
||||||
"I'm natalie[ee]"
|
"this thing is known as natalie[ee]"
|
||||||
(br)
|
(br)
|
||||||
"$[find files/homepage-statements/* | shuf -n1 | xargs -I % cat %]"
|
"$[find files/homepage-statements/* | shuf -n1 | xargs -I % cat %]"
|
||||||
(br)
|
(br)
|
||||||
"I am not sure what I am going to use this site for, it only exists because I was <del>procrastinating my calculus homework</del> bored one day"
|
"it is not sure what it is going to use this site for, said website only exists because it was <del>procrastinating its calculus homework</del> bored one day"
|
||||||
(br)
|
(br)
|
||||||
"website homepage visit-counter: $[echo visit >> files/home_visit_counter; cat files/home_visit_counter | wc -l]"
|
"website homepage visit-counter: $[echo visit >> files/home_visit_counter; cat files/home_visit_counter | wc -l]"
|
||||||
(br)
|
(br)
|
||||||
(br)
|
(br)
|
||||||
"if you are here, I am rather curious as to why. I encourage you to use the post arbitrary data section of this page to tell me how you found my site."))
|
"if you are here, it is rather curious as to why. it encourages you to use the post arbitrary data section of this page to tell me how you found this site."))
|
||||||
(section ()
|
(section ()
|
||||||
(h2 () "particularly notable pages")
|
(h2 () "particularly notable pages")
|
||||||
(a (:href "/html/site-info.html") "information about this website")
|
(a (:href "/html/site-info.html") "information about this website")
|
||||||
(a (:href "/html/natalie-info.html") "information about this natalie")
|
(a (:href "/html/natalie-info.html") "information about this natalie")
|
||||||
(a (:href "/html/blog/index.html") "there is a blog. I do not frequently use it.")
|
(a (:href "/html/blog/index.html") "there is a [currently broken] blog. it does not frequently use it.")
|
||||||
(a (:href "/html/random-thoughts.html") "arbitrary natalie thoughts. they are interesting, sometimes")
|
(a (:href "/html/random-thoughts.html") "arbitrary natalie thoughts. they are interesting, sometimes")
|
||||||
(a (:href "/html/cool-sites.html") "other webloci"))
|
(a (:href "/html/cool-sites.html") "other webloci"))
|
||||||
(section ()
|
(section ()
|
||||||
@ -35,7 +35,7 @@
|
|||||||
(span () ,(exec-command "for file in ./files/88x31/*; do (file -i \"$file\" | grep -qE 'image/') && echo \"<img src=\\\"$file\\\" width=88 height=31/>\" || cat \"$file\"; done | shuf")))
|
(span () ,(exec-command "for file in ./files/88x31/*; do (file -i \"$file\" | grep -qE 'image/') && echo \"<img src=\\\"$file\\\" width=88 height=31/>\" || cat \"$file\"; done | shuf")))
|
||||||
(section ()
|
(section ()
|
||||||
(h2 () "post arbitrary data to be displayed here")
|
(h2 () "post arbitrary data to be displayed here")
|
||||||
"yes, I do sanitize this" (a (:href "/html/albert-hack-1.html") "<del>(No you don't --sanitization tester)</del>") "yes I do")
|
"yes, it does sanitize this" (a (:href "/html/albert-hack-1.html") "<del>(No you don't --sanitization tester)</del>") "yes, it does")
|
||||||
(section (:class "ignore-section")
|
(section (:class "ignore-section")
|
||||||
(form (:action "#" :method "post")
|
(form (:action "#" :method "post")
|
||||||
(label (:for "text") "post text:")
|
(label (:for "text") "post text:")
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
(defun html ()
|
(defun html ()
|
||||||
(page "albert" `((section ()
|
(page "albert" `((section ()
|
||||||
(h1 () "a friend hacked my website.")
|
(h1 () "a friend hacked its website.")
|
||||||
(p () "but how?"))
|
(p () "but how?"))
|
||||||
(section ()
|
(section ()
|
||||||
(p () "
|
(p () "
|
||||||
prior to me rewriting the backend of my website, there was a bug that would allow a bash command in a comment inside $[echo \\$\\[]] and not containing < or &rt; to be executed if you querried the url /html/%2e%2e/files/posts-to-homepage/{post file}.
|
prior to natalie rewriting the backend of its website, there was a bug that would allow a bash command in a comment inside $[echo \\$\\[]] and not containing < or &rt; to be executed upon querrying the url /html/%2e%2e/files/posts-to-homepage/{post file}.
|
||||||
this was due to any url beginning with '/html/' being unconditionally put through parse_file(), which generates static content from the embedded bash in the html (see <a href='/html/site-info.html'></a>).
|
this was due to any url beginning with '/html/' being unconditionally put through parse_file(), which generates static content from the embedded bash in the html (see <a href='/html/site-info.html'></a>).
|
||||||
in addition to this, the source code of the server could be attained via a similar method, requesting the path of the file, but with /files/ or /html/ in front of it, followed by %2e%2e.")
|
in addition to this, the source code of the server could be attained via a similar method, requesting the path of the file, but with /files/ or /html/ in front of it, followed by %2e%2e.")
|
||||||
(p () "
|
(p () "
|
||||||
albert was able to exploit this by first getting the source code of the webserver via the second method discussed above, examining it, and deducing the first vulnerability mentioned above.
|
albert was able to exploit this by first getting the source code of the webserver via the second method discussed above, examining it, and deducing the first vulnerability mentioned above.
|
||||||
upon discovering the RCE available via the comment untrusted command evaluation, they were able to add an ssh key to my server and thus gain a shell.
|
upon discovering the RCE available via the comment untrusted command evaluation, they were able to add an ssh key to this one's server and thus gain a shell.
|
||||||
amazingly, at the same time that they did this, my other friend's girlfriend (appearing in the comments as gexfan) was halfheartedly trying to mess with my site.
|
amazingly, at the same time that they did this, natalie's other friend's girlfriend (appearing in the comments as gexfan) was halfheartedly trying to mess with its site.
|
||||||
this ended with around 15 messages on discord telling me my site had been hacked, only around two of which were from albert.")))))
|
this ended with around 15 messages on discord telling it its site had been hacked, only around two of which were from albert.")))))
|
||||||
|
@ -4,55 +4,52 @@
|
|||||||
(ul ()
|
(ul ()
|
||||||
(li ()
|
(li ()
|
||||||
(a (:href "https://eightyeightthirty.one/") "eightyeightthirty.one")
|
(a (:href "https://eightyeightthirty.one/") "eightyeightthirty.one")
|
||||||
"a graph of website badges.")
|
" a graph of website badges.")
|
||||||
(li ()
|
(li ()
|
||||||
(a (:href "http://lena.kiev.ua/") "lena.kiev.ua")
|
(a (:href "http://lena.kiev.ua/") "lena.kiev.ua")
|
||||||
(li ()
|
(li ()
|
||||||
(a (:href "https://www.webcoves.com/tgring.html") "transgendering")
|
(a (:href "https://www.webcoves.com/tgring.html") "transgendering")
|
||||||
"this one is interesting to explore.")
|
" this one is interesting to explore.")
|
||||||
(li ()
|
|
||||||
(a (:href "https://he.net/") "he.net")
|
|
||||||
"I don't remember how or why I found this, but its home page is sort of cool.")
|
|
||||||
(li ()
|
(li ()
|
||||||
(a (:href "https://ftp.cdc.gov/pub/GOODMAN/") "ftp.cdc.gov/pub/GOODMAN/")
|
(a (:href "https://ftp.cdc.gov/pub/GOODMAN/") "ftp.cdc.gov/pub/GOODMAN/")
|
||||||
"cdc saul goodman.")
|
" cdc saul goodman.")
|
||||||
(li ()
|
(li ()
|
||||||
(a (:href "https://wiki.alquds.edu/?query=Main_Page") "wiki.alquds.edu/?query=Main_Page")
|
(a (:href "https://wiki.alquds.edu/?query=Main_Page") "wiki.alquds.edu/?query=Main_Page")
|
||||||
"weird wikipedia mirror.")
|
" weird wikipedia mirror.")
|
||||||
(li ()
|
(li ()
|
||||||
(a (:href "https://lhohq.info/") "lhohq.info")
|
(a (:href "https://lhohq.info/") "lhohq.info")
|
||||||
"who knows.")
|
" who knows.")
|
||||||
(li ()
|
(li ()
|
||||||
(a (:href "http://plaza.ufl.edu/virus86") "plaza.ufl.edu/virus86")
|
(a (:href "http://plaza.ufl.edu/virus86") "plaza.ufl.edu/virus86")
|
||||||
"a random ufl student's files sitting on some university server somewhere, for some reason.")
|
" a random ufl student's files sitting on some university server somewhere, for some reason.")
|
||||||
(li ()
|
(li ()
|
||||||
(a (:href "https://www.cs.arizona.edu/icon") "www.cs.arizona.edu/icon")
|
(a (:href "https://www.cs.arizona.edu/icon") "www.cs.arizona.edu/icon")
|
||||||
"a cool programming language.")
|
" a cool programming language.")
|
||||||
(li ()
|
(li ()
|
||||||
(a (:href "https://observatory.db.erau.edu/generators/signs/") "observatory.db.erau.edu/generators/signs/")
|
(a (:href "https://observatory.db.erau.edu/generators/signs/") "observatory.db.erau.edu/generators/signs/")
|
||||||
"warning sign generator.")
|
" warning sign generator.")
|
||||||
(li ()
|
(li ()
|
||||||
(a (:href "https://adams.nrc.gov/wba/") "adams.nrc.gov/wba")
|
(a (:href "https://adams.nrc.gov/wba/") "adams.nrc.gov/wba")
|
||||||
"nuclear regulatory commission agencywide documents access and management system.")
|
" nuclear regulatory commission agencywide documents access and management system.")
|
||||||
(li ()
|
(li ()
|
||||||
(a (:href "https://owd.tcnj.edu/~hofmann/") "owd.tcnj.edu/~hofmann")
|
(a (:href "https://owd.tcnj.edu/~hofmann/") "owd.tcnj.edu/~hofmann")
|
||||||
"random professor's homepage.")
|
" random professor's homepage.")
|
||||||
(li ()
|
(li ()
|
||||||
(a (:href "https://citrons.xyz") "citrons.xyz")
|
(a (:href "https://citrons.xyz") "citrons.xyz")
|
||||||
"this entity seems odd.")
|
" this entity seems odd.")
|
||||||
(li ()
|
(li ()
|
||||||
(a (:href "https://w3.pppl.gov") "w3.pppl.gov")
|
(a (:href "https://w3.pppl.gov") "w3.pppl.gov")
|
||||||
" i quite like the w3 subdomain of the princeton plasma physics laboratory.")
|
" i quite like the w3 subdomain of the princeton plasma physics laboratory.")
|
||||||
(li ()
|
(li ()
|
||||||
(a (:href "https://eda.gay") "eday.gay")
|
(a (:href "https://eda.gay") "eday.gay")
|
||||||
" she owns less thinkpads than I do. brainwormed.")
|
" she owns less thinkpads than this one does. brainwormed.")
|
||||||
(li ()
|
(li ()
|
||||||
(a (:href "https://www.yourworldoftext.com/apionet") "https://www.yourworldoftext.com/apionet")
|
(a (:href "https://www.yourworldoftext.com/apionet") "https://www.yourworldoftext.com/apionet")
|
||||||
" buzzzzzzzzzzzzzzzzzzz")))
|
" buzzzzzzzzzzzzzzzzzzz")))
|
||||||
"this website compelled me to put it somewhere:"
|
"this website compelled natalie to put it somewhere:"
|
||||||
(a (:href "https://citrons.xyz/a/memetic-apioform-page.html") (img (:src "https://citrons.xyz/a/static/apiopage.png"))))
|
(a (:href "https://citrons.xyz/a/memetic-apioform-page.html") (img (:src "https://citrons.xyz/a/static/apiopage.png"))))
|
||||||
(section ()
|
(section ()
|
||||||
(h2 () "entities that I sometimes interact with physically")
|
(h2 () "entities that it sometimes interact with physically")
|
||||||
(span ()
|
(span ()
|
||||||
"winter: "
|
"winter: "
|
||||||
(a (:href "https://bunbun.dev") "bunbun.dev")
|
(a (:href "https://bunbun.dev") "bunbun.dev")
|
||||||
|
@ -2,6 +2,6 @@
|
|||||||
(page "discord"
|
(page "discord"
|
||||||
`((section ()
|
`((section ()
|
||||||
(h1 () "discord")
|
(h1 () "discord")
|
||||||
"as one who is not particularly partial to internet centralization, and seeing as I have had discord accounts get banned for seemingly nothing, I am nnot particularly fond of using discord."
|
"as it is not particularly partial to internet centralization, and seeing as it has had discord accounts get banned for seemingly nothing, it is not particularly fond of using discord."
|
||||||
"unfortunately, humans that I like speaking to use discord in large enough volumes that it is likely to be rather challenging to convince all of the ones I particularly care about to migrate to some other platform."
|
"unfortunately, humans that it like speaking to use discord in large enough volumes that it is likely to be rather challenging to convince all of the ones it particularly care about to migrate to some other platform."
|
||||||
"this is not a very nice state of things."))))
|
"this is not a very nice state of things."))))
|
||||||
|
71
src/html/its-laptop.lisp
Normal file
71
src/html/its-laptop.lisp
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
(defun html ()
|
||||||
|
(page "laptop"
|
||||||
|
`((section ()
|
||||||
|
(h1 () "natalie's laptop is rather haunted")
|
||||||
|
"see also: " (a (:href "/html/its-old-laptop.html") "old laptop")
|
||||||
|
"natalie is bad at using technology."
|
||||||
|
(br)
|
||||||
|
"this is not due to lack of technical ability, but instead due to the accumulation of unreasonable quirks over time in every computer it exerts any degree of control over.")
|
||||||
|
(section ()
|
||||||
|
(h2 () "booting and the operating system")
|
||||||
|
(p () "natalie does not use a bootloader." ,(exec-command "make-footnote \"it finds them to be very annoying and in its experience unreliable\"")
|
||||||
|
"instead, it has a custom kernel build based off the arch kernel with filesystem and compression drivers such that it can boot straight from its kernel. "
|
||||||
|
"it also does not have an initramfs.")
|
||||||
|
(p () "technically, natalie does not use arch linux. "
|
||||||
|
"it uses [a custom build of] the arch kernel and arch package repos, but actually run artix. "
|
||||||
|
"a function of this is that instead of systemd, it uses openrc.")
|
||||||
|
,(exec-command "put-footnotes"))
|
||||||
|
(section ()
|
||||||
|
(h2 () "seat management and hardware issue mitigation")
|
||||||
|
(p () "natalie once thought it would be entertaining to remove elogind from its system. "
|
||||||
|
"of course, it was still required to be installed as a library, but disabling it was trivial. "
|
||||||
|
"it was replaced with seatd for seat management and acpid to suspend its computer when natalie closes the lid. "
|
||||||
|
"this worked for a time, however after a couple months of this setup, elogind inexplicably began to be started by the init system. "
|
||||||
|
"it does not know how or why, it did not change anything, nor is there anything matching 'elogind' in /etc/init.d/. "
|
||||||
|
"this was bad because it would interfere with acpid.")
|
||||||
|
(h3 () "the solution")
|
||||||
|
(pre () "~ λ cat /etc/acpi/lid.sh
|
||||||
|
#!/bin/sh
|
||||||
|
cat /proc/acpi/button/lid/LID0/state | grep open && (modprobe i2c_hid_acpi) || (
|
||||||
|
killall elogind-daemon
|
||||||
|
rmmod i2c_hid_acpi
|
||||||
|
(test -e /home/catalie/.should-power-off) && s2ram)")
|
||||||
|
(p () "natalie overcame this issue simply by attempting to kill elogind every time it closes the lid of its computer.")
|
||||||
|
(p () "you may wonder, why is it running rmmod i2c_hid_acpi every time it close its laptop's lid. "
|
||||||
|
"you see, the framework 16 has an issue in which the trackpad and keyboard are not properly barred from waking the computer from suspend while the lid is closed. "
|
||||||
|
"in addition to this, the screen can flex just enough to press a key or bump the trackpad. "
|
||||||
|
"this causes the laptop to wake in its bag and attempt to boil the contents of its backpack. "
|
||||||
|
"the keyboard waking the computer from suspend can be ammended by running "
|
||||||
|
(pre () "sudo acpitool -w | grep enabled | awk '{print $1}' | sed 's/\\.//' | xargs -I{} sudo acpitool -W {}")
|
||||||
|
"however, the trackpad is not in the list of acpi wakeup devices for whatever reason. "
|
||||||
|
"thus, upon the lid being closed, it simply unloads the kernel module the trackpad requires and load it again upon opening the lid."))
|
||||||
|
(section ()
|
||||||
|
(h2 () "environment")
|
||||||
|
(p () "it use wayland, specifically hyprland. "
|
||||||
|
"this is unfortunate because it is bad software (this will be elaborated upon), but natalie like the special workspace system. "
|
||||||
|
"its status bar and notification system are written in gjs with ags. it resents this because it involves javascript, but oh well. "
|
||||||
|
"when libastal gets documentation, it will probably rewrite its ui in that. "
|
||||||
|
"its terminal emulator is foot because foot does not implement unecessary features."))
|
||||||
|
(section ()
|
||||||
|
(h2 () "keyboard")
|
||||||
|
(p () "unlike its previous laptops, it had the option to buy this laptop such that it came with a blank keyboard. "
|
||||||
|
"in accordance with this, natalie has not sanded its keyboard. "
|
||||||
|
"the framework 16 keyboard runs qmk, this is very nice. "
|
||||||
|
"the keyboard firmware is now hardcoded to be dvorak instead of using a custom console and xkb map. "
|
||||||
|
"on one hand this is nice because it means natalie does not need to edit xkb files to remap caps lock to control, but on the other hand if natalie plugs an external keyboard in to its laptop, it will be qwerty and natalie will have to load its xkb map or type in qwerty. it can probably type in qwerty. "
|
||||||
|
"it needs to remember to finish its keyboard config at some point. also, it should make the button that breaks the keyboard until it removes it and put it back in harder to press."))
|
||||||
|
(section ()
|
||||||
|
(h2 () "irregular bugs")
|
||||||
|
(ul ()
|
||||||
|
(li () "killing firefox kills its compositor what it would estimate to be 20% of the time")
|
||||||
|
(li () "killing firefox causes its headphones to disconnect what it would estimate to be 40% of the time")
|
||||||
|
(li () "setting firefox to be a floating window causes its entire computer to freeze roughly 10% of the time" ,(exec-command "make-footnote \"it should probably make new firefox profiles. its current firefox profile is haunted, as it has been using it since 7th grade.\""))
|
||||||
|
(li () "no audio devices other than its headphones are recognized after boot until it runs "
|
||||||
|
(pre () "unfuck audio"))
|
||||||
|
(li () "when displaying https://wiki.gnuradio.org/index.php/Embedded_Python_Block in any web browser, or a screenshot of this webpage fullscreen on its laptop in any wayland compositor, the computer screen starts flickering. it only occures with this page. unplugging the computer causes the flickering to reduce in frequency. this will not occur if the mouse pointer is not in the top 2/5ths of the screen." ,(exec-command "make-footnote \"what on earth\""))
|
||||||
|
(li () "closing its computer causes network manager to become inoperable. it does not crash, it just stops working.")
|
||||||
|
(li () "closing its computer causes firefox to be unable to retrieve data regardless of if network manager is working")
|
||||||
|
(li () "sometimes, pipewire ceases to function. this typically happens after several days of uptime."))
|
||||||
|
,(exec-command "put-footnotes")))))
|
||||||
|
|
||||||
|
|
76
src/html/its-old-laptop.lisp
Normal file
76
src/html/its-old-laptop.lisp
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
(defun html ()
|
||||||
|
(page "laptop (old)"
|
||||||
|
`((section ()
|
||||||
|
(h1 () "its old laptop")
|
||||||
|
(p () "see " (a (:href "/html/blog/posts/new-laptop.html") "blog post") (br) "and " (a (:href "/html/its-laptop.html") "updated page"))
|
||||||
|
(p () "currently, this one is using a T530 that has been heavily modified. "
|
||||||
|
"it used to use a W530, but it fucked it up trying to install tianocore on it and it has not bothered to fix the bios on it yet. "
|
||||||
|
"it has preordered a framework 16 because it is the definition of that company's target audience. "
|
||||||
|
"since W530s and T530s are basically identical barring the mainboard, there is no external difference between its W530 and T530 because it just yoinked all the parts from the W530."
|
||||||
|
(br)))
|
||||||
|
(section ()
|
||||||
|
(image-column-container ()
|
||||||
|
(image-container ()
|
||||||
|
(flex-column (:style "margin-right: 10px;")
|
||||||
|
,(exec-command "img-caption \"/files/laptop-keyboard.png\" \"photograph of its laptop's keyboard, which is blank because it sanded it.\"")
|
||||||
|
,(exec-command "img-caption \"/files/laptop-radio.jpg\" \"the software defined radio that goes in its laptop's disc drive.\"")
|
||||||
|
,(exec-command "img-caption \"/files/keybinds_graph.png\" \"graph of its keybindings, they are hard to see\"")
|
||||||
|
,(exec-command "img-caption \"/files/laptop-charger-barrel.jpg\" \"charger barrel size adapter sticking out the back of its laptop\"")))
|
||||||
|
(text-column ()
|
||||||
|
(p () "natalie has put an unreasonable amount of time in to messing with its laptop and as such it is equally unreasonably proud of it."
|
||||||
|
(br))
|
||||||
|
(h3 () "hardware modifications it has made to its laptop:")
|
||||||
|
(p () (ul ()
|
||||||
|
(li () "installed an older model's keyboard")
|
||||||
|
(li () "sanded the keyboard such that it is blank.")
|
||||||
|
(li () "upgraded most of its parts.")
|
||||||
|
(li () "put an SDR in its disc drive")
|
||||||
|
(li () "replaced the charging barrel with a worst bodge ever contest finalist because it left its charger at school for a weekend once and wanted to use its laptop."))
|
||||||
|
"additionally, it has written a custom xkb file. unfortunately the geometry file hasn't been updated since it modded in the new keyboard, but here it is anyways:"
|
||||||
|
(br))
|
||||||
|
,(exec-command "img-caption \"/files/laptop-xkb-geometry.png\" \"its xkb geometry file compiled to a pdf\"")
|
||||||
|
(p () "disregard the fucked up escape key, it was messing with it earlier. this thing's keyboard isn't that notable beyond binding control to caps lock and binding the old control key to mode_switch. "
|
||||||
|
"additionally, when mode_switch is pressed while an alphabetic key is pressed, it types a greek letter instead.")
|
||||||
|
(p () "it run artix (for the anti systemd meme), though upon getting its framework it intends to switch to gentoo. "
|
||||||
|
"natalie uses i3 as its window manager with a somewhat cursed script to programmatically generate its config from a yaml file. "
|
||||||
|
"this script is vaguely necessary because:"
|
||||||
|
(ul ()
|
||||||
|
(li () "it wanted a (programmatically generated) graph of all its keybinds as leaf nodes with different modes as trunk nodes and individual keys as edges")
|
||||||
|
(li () "it wanted to easily nest an arbitrarily large number of modes without it being a hassle"))
|
||||||
|
(br)
|
||||||
|
"an example of the function of this script is something like"
|
||||||
|
(br)
|
||||||
|
(br)
|
||||||
|
(div (:class "code-container")
|
||||||
|
(div :class "io-container"
|
||||||
|
(h3 () "input (yaml):")
|
||||||
|
(pre () (code () "
|
||||||
|
keybinds:
|
||||||
|
a: !Mode
|
||||||
|
name: a
|
||||||
|
keybinds:
|
||||||
|
b: !Mode
|
||||||
|
name: b
|
||||||
|
keybinds: ...")))
|
||||||
|
(div (:class "io-container")
|
||||||
|
(h3 () "output (i3config):")
|
||||||
|
(pre () (code () "
|
||||||
|
mode a {
|
||||||
|
bindsym b mode b
|
||||||
|
}
|
||||||
|
|
||||||
|
mode b {
|
||||||
|
bindsym ... ...
|
||||||
|
}
|
||||||
|
|
||||||
|
bindsym a mode a")))))
|
||||||
|
(p () "From the yaml config, natalie's python script can parse it either into a (really bad) graph of keybinds (using the graphviz library or something like that) or into a valid i3 config file. "
|
||||||
|
"in its real config, it has a mode 'base' which is the default mode with no keybinds other than mod4+space, followed by a mode 'space' reached by pressing mod4+space. "
|
||||||
|
"from 'space' mode, other modes may be accessed, such as 'workspaces or windows' mode, bound under w. "
|
||||||
|
"this gets rather absurd (intentionally so) very quickly. "
|
||||||
|
"the combination to move to workspace 0 while in 'base' mode is to press mod4+space ('space' mode), w ('workspaces_or_windows' mode), s ('workspaces'), g ('workspaces_goto'), 0 (move to workspace 0).")
|
||||||
|
(p () "this system results in horrible user experience (not that it cares), great security (close to least intuitive setup possible), and—most importantly—an incredibly stupid graph of keybinds. "
|
||||||
|
"it find this unreasonably amusing.")
|
||||||
|
(p () "to this thing's endless amusement, it may be partially to blame for the niri compositor having keybinding modes")
|
||||||
|
,(exec-command "img-caption \"/files/niri-dev-keybind-graph.png \" \"YaLTeR, the niri dev, seeing this one's keybind graph and deciding to implement keybinding modes\"")))))))
|
||||||
|
|
@ -1,71 +0,0 @@
|
|||||||
(defun html ()
|
|
||||||
(page "laptop"
|
|
||||||
`((section ()
|
|
||||||
(h1 () "my laptop is rather haunted")
|
|
||||||
"see also: " (a (:href "/html/my-old-laptop.html") "old laptop")
|
|
||||||
"I am bad at using technology."
|
|
||||||
(br)
|
|
||||||
"this is not due to lack of technical ability, but instead due to the accumulation of unreasonable quirks over time in every computer I exert any degree of control over.")
|
|
||||||
(section ()
|
|
||||||
(h2 () "booting and the operating system")
|
|
||||||
(p () "I do not use a bootloader." ,(exec-command "make-footnote \"I find them to be very annoying and in my experience unreliable\"")
|
|
||||||
"instead, I have a custom kernel build based off the arch kernel with filesystem and compression drivers such that I can boot straight from my kernel. "
|
|
||||||
"I also do not have an initramfs.")
|
|
||||||
(p () "technically, I don't use arch linux. "
|
|
||||||
"I use [a custom build of] the arch kernel and arch package repos, but actually run artix. "
|
|
||||||
"a function of this is that instead of systemd, I use openrc.")
|
|
||||||
,(exec-command "put-footnotes"))
|
|
||||||
(section ()
|
|
||||||
(h2 () "seat management and hardware issue mitigation")
|
|
||||||
(p () "I once thought it would be entertaining to remove elogind from my system. "
|
|
||||||
"of course, I still needed it installed as a library, but disabling it was trivial. "
|
|
||||||
"it was replaced with seatd for seat management and acpid to suspend my computer when I close the lid. "
|
|
||||||
"this worked for a time, however after a couple months of this setup, elogind inexplicably began to be started by my init system. "
|
|
||||||
"I do not know how or why, I did not change anything, nor is there anything matching 'elogind' in /etc/init.d/. "
|
|
||||||
"this was bad because it would interfere with acpid.")
|
|
||||||
(h3 () "the solution")
|
|
||||||
(pre () "~ λ cat /etc/acpi/lid.sh
|
|
||||||
#!/bin/sh
|
|
||||||
cat /proc/acpi/button/lid/LID0/state | grep open && (modprobe i2c_hid_acpi) || (
|
|
||||||
killall elogind-daemon
|
|
||||||
rmmod i2c_hid_acpi
|
|
||||||
(test -e /home/catalie/.should-power-off) && s2ram)")
|
|
||||||
(p () "I overcame this issue simply by attempting to kill elogind every time I close the lid of my computer.")
|
|
||||||
(p () "you may wonder, why is it running rmmod i2c_hid_acpi every time it close its laptop's lid. "
|
|
||||||
"you see, the framework 16 has an issue in which the trackpad and keyboard are not properly barred from waking the computer from suspend while the lid is closed. "
|
|
||||||
"in addition to this, the screen can flex just enough to press a key or bump the trackpad. "
|
|
||||||
"this causes the laptop to wake in my bag and attempt to boil the contents of my backpack. "
|
|
||||||
"the keyboard waking the computer from suspend can be ammended by running "
|
|
||||||
(pre () "sudo acpitool -w | grep enabled | awk '{print $1}' | sed 's/\\.//' | xargs -I{} sudo acpitool -W {}")
|
|
||||||
"however, the trackpad is not in the list of acpi wakeup devices for whatever reason. "
|
|
||||||
"thus, upon the lid being closed, I simply unload the kernel module the trackpad requires and load it again upon opening the lid."))
|
|
||||||
(section ()
|
|
||||||
(h2 () "environment")
|
|
||||||
(p () "I use wayland, specifically hyprland. "
|
|
||||||
"this is unfortunate because it is bad software (this will be elaborated upon), but I like the special workspace system. "
|
|
||||||
"my status bar and notification system are written in gjs with ags. I resent this because it involves javascript, but oh well. "
|
|
||||||
"when libastal gets documentation, I will probably rewrite my ui in that. "
|
|
||||||
"my terminal emulator is foot because foot does not implement unecessary features."))
|
|
||||||
(section ()
|
|
||||||
(h2 () "keyboard")
|
|
||||||
(p () "unlike my previous laptop, I had the option to buy this laptop such that it came with a blank keyboard. "
|
|
||||||
"in accordance with this, I have not sanded my keyboard. "
|
|
||||||
"the framework 16 keyboard runs qmk, this is very nice. "
|
|
||||||
"the keyboard firmware is now hardcoded to be dvorak instead of using a custom console and xkb map. "
|
|
||||||
"on one hand this is nice because it means I do not need to edit xkb files to remap caps lock to control, but on the other hand if I plug an external keyboard in to my laptop, it will be qwerty and I will have to load my xkb map or type in qwerty. I can probably type in qwerty. "
|
|
||||||
"I need to remember to finish my keyboard config at some point. also, I should make the button that breaks the keyboard until I remove it and put it back in harder to press."))
|
|
||||||
(section ()
|
|
||||||
(h2 () "irregular bugs")
|
|
||||||
(ul ()
|
|
||||||
(li () "killing firefox kills my compositor what I would estimate to be 20% of the time")
|
|
||||||
(li () "killing firefox causes my headphones to disconnect what I would estimate to be 40% of the time")
|
|
||||||
(li () "setting firefox to be a floating window causes my entire computer to freeze roughly 10% of the time" ,(exec-command "make-footnote \"I should probably make new firefox profiles. my current firefox profile is haunted, as I have been using it since 7th grade.\""))
|
|
||||||
(li () "no audio devices other than my headphones are recognized after boot until I run "
|
|
||||||
(pre () "unfuck audio"))
|
|
||||||
(li () "when displaying https://wiki.gnuradio.org/index.php/Embedded_Python_Block in any web browser, or a screenshot of this webpage fullscreen on my laptop in any wayland compositor, my screen starts flickering. it only occures with this page. unplugging my computer causes the flickering to reduce in frequency. this will not occur if my mouse pointer is not in the top 2/5ths of the screen." ,(exec-command "make-footnote \"what on earth\""))
|
|
||||||
(li () "closing my computer causes network manager to become inoperable. it does not crash, it just stops working.")
|
|
||||||
(li () "closing my computer causes firefox to be unable to retrieve data regardless of if network manager is working")
|
|
||||||
(li () "sometimes, pipewire ceases to function. this typically happens after several days of uptime."))
|
|
||||||
,(exec-command "put-footnotes")))))
|
|
||||||
|
|
||||||
|
|
@ -1,76 +0,0 @@
|
|||||||
(defun html ()
|
|
||||||
(page "laptop (old)"
|
|
||||||
`((section ()
|
|
||||||
(h1 () "my old laptop")
|
|
||||||
(p () "see " (a (:href "/html/blog/posts/new-laptop.html") "blog post") (br) "and " (a (:href "/html/my-laptop.html") "updated page"))
|
|
||||||
(p () "Currently, I am using a T530 that has been heavily modified. "
|
|
||||||
"I used to use a W530, but I fucked it up trying to get tianocore on it and haven't bothered fixing the bios on it yet. "
|
|
||||||
"I have preordered a Framework 16 because I am the definition of their target audience. "
|
|
||||||
"Since W530s and T530s are basically identical barring the mainboard, there is no external difference between my W530 and T530 because I just yoinked all the parts from the W530."
|
|
||||||
(br)))
|
|
||||||
(section ()
|
|
||||||
(image-column-container ()
|
|
||||||
(image-container ()
|
|
||||||
(flex-column (:style "margin-right: 10px;")
|
|
||||||
,(exec-command "img-caption \"/files/laptop-keyboard.png\" \"photograph of my laptop's keyboard, which is blank because I sanded it.\"")
|
|
||||||
,(exec-command "img-caption \"/files/laptop-radio.jpg\" \"The software defined radio that goes in my laptop's disc drive.\"")
|
|
||||||
,(exec-command "img-caption \"/files/keybinds_graph.png\" \"Graph of my keybindings, they are hard to see\"")
|
|
||||||
,(exec-command "img-caption \"/files/laptop-charger-barrel.jpg\" \"charger barrel size adapter sticking out the back of my laptop\"")))
|
|
||||||
(text-column ()
|
|
||||||
(p () "I have put an unreasonable amount of time in to messing with my laptop and as such am equally unreasonably proud of it."
|
|
||||||
(br))
|
|
||||||
(h3 () "Hardware modifications I have made to my laptop:")
|
|
||||||
(p () (ul ()
|
|
||||||
(li () "Installed an older model's keyboard")
|
|
||||||
(li () "Sanded the keyboard such that it is blank.")
|
|
||||||
(li () "Upgraded most of its parts.")
|
|
||||||
(li () "Put an SDR in its disc drive")
|
|
||||||
(li () "Replaced the charging barrel with a worst bodge ever contest finalist because I left my charger at school for a weekend once and wanted to use my laptop."))
|
|
||||||
"Additionally, I have written a custom xkb file. Unfortunately the geometry file hasn't been updated since I modded in the new keyboard, but here it is anyways:"
|
|
||||||
(br))
|
|
||||||
,(exec-command "img-caption \"/files/laptop-xkb-geometry.png\" \"my xkb geometry file compiled to a pdf\"")
|
|
||||||
(p () "Disregard the fucked up escape key, I was messing with it earlier. My keyboard isn't that notable beyond binding control to caps lock and binding the old control key to mode_switch. "
|
|
||||||
"Additionally, when mode_switch is pressed while an alphabetic key is pressed, it types a greek letter instead.")
|
|
||||||
(p () "I run artix (for the anti systemd meme), though upon getting my framework I intend to switch to gentoo. "
|
|
||||||
"I use i3 as my window manager with a somewhat cursed script to programmatically generate its config from a yaml file. "
|
|
||||||
"This script is vaguely necessary because"
|
|
||||||
(ul ()
|
|
||||||
(li () "I wanted a (programmatically generated) graph of all my keybinds as leaf nodes with different modes as trunk nodes and individual keys as edges")
|
|
||||||
(li () "I wanted to easily nest an arbitrarily large number of modes without it being a hassle"))
|
|
||||||
(br)
|
|
||||||
"an example of the function of this script is something like"
|
|
||||||
(br)
|
|
||||||
(br)
|
|
||||||
(div :class "code-container"
|
|
||||||
(div :class "io-container"
|
|
||||||
(h3 () "Input (yaml):")
|
|
||||||
(pre () (code () "
|
|
||||||
keybinds:
|
|
||||||
a: !Mode
|
|
||||||
name: a
|
|
||||||
keybinds:
|
|
||||||
b: !Mode
|
|
||||||
name: b
|
|
||||||
keybinds: ...")))
|
|
||||||
(div :class "io-container"
|
|
||||||
(h3 () "Output (i3config):")
|
|
||||||
(pre () (code () "
|
|
||||||
mode a {
|
|
||||||
bindsym b mode b
|
|
||||||
}
|
|
||||||
|
|
||||||
mode b {
|
|
||||||
bindsym ... ...
|
|
||||||
}
|
|
||||||
|
|
||||||
bindsym a mode a")))))
|
|
||||||
(p () "From the yaml config, my python script can parse it either into a (really bad) graph of keybinds (using the graphviz library or something like that) or into a valid i3 config file. "
|
|
||||||
"In my real config, I have a mode 'base' which is the default mode with no keybinds other than mod4+space, followed by a mode 'space' reached by pressing mod4+space. "
|
|
||||||
"From 'space' mode, other modes may be accessed, such as 'workspaces or windows' mode, bound under w. "
|
|
||||||
"This gets rather absurd (intentionally so) very quickly. "
|
|
||||||
"The combination to move to workspace 0 while in 'base' mode is to press mod4+space ('space' mode), w ('workspaces_or_windows' mode), s ('workspaces'), g ('workspaces_goto'), 0 (move to workspace 0).")
|
|
||||||
(p () "This system results in horrible user experience (but I don't care), great security (close to least intuitive setup possible), and—most importantly—an incredibly stupid graph of keybinds. "
|
|
||||||
"I find this unreasonably amusing.")
|
|
||||||
(p () "to my endless amusement, I may be partially to blame for the niri compositor having keybinding modes")
|
|
||||||
,(exec-command "img-caption \"/files/niri-dev-keybind-graph.png \" \"YaLTeR, the niri dev, seeing my keybind graph and deciding to implement keybinding modes\"")))))))
|
|
||||||
|
|
@ -1,32 +1,36 @@
|
|||||||
(defun html ()
|
(defun html ()
|
||||||
(page "natalie info" `((section ()
|
(page "natalie info" `((section ()
|
||||||
(h1 () "what is a \"natalie\"?")
|
(h1 () "what is a \"natalie\"?")
|
||||||
(span () "I am <a href='/html/natalie-sightings.html'>natalie</a>.",(exec-command "make-footnote 'the natalie is provided \"as is\", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, title and non-infringement. in no event shall the copyright holders or anyone distributing the natalie be liable for any damages or other liability, whether in contract, tort or otherwise, arising from, out of or in connection with the natalie or the use or other dealings in the natalie.'")"obviously.")
|
(span ()
|
||||||
(p () "words are not a thing I am good at. this is exacerbaited when the words are about myself. "
|
"it is <a href='/html/natalie-sightings.html'>natalie</a>."
|
||||||
"despite this, I shall attempt a suitable description of myself.")
|
,(exec-command "make-footnote 'the natalie is provided \"as is\", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, title and non-infringement. in no event shall the copyright holders or anyone distributing the natalie be liable for any damages or other liability, whether in contract, tort or otherwise, arising from, out of or in connection with the natalie or the use or other dealings in the natalie.'")
|
||||||
|
"obviously.")
|
||||||
|
(p ()
|
||||||
|
"words are not a thing it is good at. this is exacerbaited when the words are about itself. "
|
||||||
|
"despite this, it shall attempt a suitable description of itself.")
|
||||||
(br)
|
(br)
|
||||||
(p ()
|
(p ()
|
||||||
"ideally, I am to be referred to as an \"it\" or a \"she\".",(exec-command "make-footnote \" the former is preferred.\"") "I suppose I may reasonably be described as asexual. " (br)
|
"ideally, natalie is to be referred to as an \"it\" or a \"she\".",(exec-command "make-footnote \" the former is preferred.\"") "additionally, it generally prefers being referred to using 3rd person pronouns, or as \"this thing\" or \"that one\". it supposes it may reasonably be described as asexual. " (br)
|
||||||
"timezone I am in: PST/PDT" (br)
|
"timezone it is in: PST/PDT" (br)
|
||||||
"age: $[echo $(( $(date +%s) - $(date -d \"2007-04-01\" +%s) ))] seconds. that is $[echo \"scale=8; ($(date +%s) - $(date -d '2007-04-01' +%s)) / (365.25*24*3600)\" | bc] [earth] years." (br)
|
"age: $[echo $(( $(date +%s) - $(date -d \"2007-04-01\" +%s) ))] seconds. that is $[echo \"scale=8; ($(date +%s) - $(date -d '2007-04-01' +%s)) / (365.25*24*3600)\" | bc] [earth] years." (br)
|
||||||
"I am kind of a college student. it is complicated. I will be a college student with less complicated circumstances by fall of 2025, barring unforseen circumstances." (br)
|
"it is kind of a college student. this is complicated. it will be a college student with less complicated circumstances by fall of 2025, barring unforseen circumstances." (br)
|
||||||
"I like systems. particularly ones that have reasonably consistent behavior based on a set of rules. this is omnipresent in my interests." (br)
|
"natalie likes systems. particularly ones that have reasonably consistent behavior based on a set of rules. this is omnipresent in its interests." (br)
|
||||||
"list of interests (incomplete):"
|
"list of its interests (incomplete):"
|
||||||
(ul ()
|
(ul ()
|
||||||
(li () "technical computer things, so long as they do not involve javascript")
|
(li () "technical computer things, so long as they do not involve javascript")
|
||||||
(li () "infrastructure, particularly pertaining to trains")
|
(li () "infrastructure, particularly pertaining to trains")
|
||||||
(li () "languistics, especially conlangs")
|
(li () "languistics, especially conlangs")
|
||||||
(li () "key making and lock picking")
|
(li () "key making and lock picking")
|
||||||
(li () "math"))
|
(li () "math"))
|
||||||
"things that I enjoy:"
|
"things that it enjoys:"
|
||||||
(ul ()
|
(ul ()
|
||||||
(li () "friends")
|
(li () "friends")
|
||||||
(li () "going on long walks")
|
(li () "going on long walks")
|
||||||
(li () "utilizing public transportation")
|
(li () "utilizing public transportation")
|
||||||
(li () "train tracks"))
|
(li () "train tracks"))
|
||||||
"things that I find displeasing:"
|
"things that it finds displeasing:"
|
||||||
(ul ()
|
(ul ()
|
||||||
(li () "grease or oil on my skin")
|
(li () "grease or oil on its skin")
|
||||||
(li () "non friend people")
|
(li () "non friend people")
|
||||||
(li () "ultraviolet radiation")
|
(li () "ultraviolet radiation")
|
||||||
(li () "busywork")))
|
(li () "busywork")))
|
||||||
@ -34,9 +38,9 @@
|
|||||||
(section ()
|
(section ()
|
||||||
(h2 () "somewhat irregular natalie facts")
|
(h2 () "somewhat irregular natalie facts")
|
||||||
(ul ()
|
(ul ()
|
||||||
(li () "I own 12 thinkpads, all of which were manufactured prior to 2014")
|
(li () "it owns 12 thinkpads, all of which were manufactured prior to 2014")
|
||||||
(li () "the number of people that can effectively use my computer is, to my knowledge, 1 (me)" ,(exec-command "make-footnote \"the number of people I know who can type on it is 3, including myself\""))
|
(li () "the number of people that can effectively use its computer is, to its knowledge, 1 (natalie)" ,(exec-command "make-footnote \"the number of people it knows who can type on it is 3, including itself\""))
|
||||||
(li () "I can replace the screen on my first generation iphone se a1662 in 70 seconds"))
|
(li () "it can replace the screen on its first generation iphone se a1662 in 70 seconds"))
|
||||||
,(exec-command "put-footnotes"))
|
,(exec-command "put-footnotes"))
|
||||||
(section ()
|
(section ()
|
||||||
(h2 () "contact information")
|
(h2 () "contact information")
|
||||||
@ -44,9 +48,9 @@
|
|||||||
"email: natalie at natalieee.net" (br)
|
"email: natalie at natalieee.net" (br)
|
||||||
"xmpp: nat@natalieee.net")
|
"xmpp: nat@natalieee.net")
|
||||||
(section ()
|
(section ()
|
||||||
(h2 () "some of my computers")
|
(h2 () "some of its computers")
|
||||||
(p () "I own many computers, none of them are normal. particularly notable instances of this phenomenon will be noted below:")
|
(p () "it owns many computers, none of them are normal. particularly notable instances of this phenomenon will be noted below:")
|
||||||
(ul ()
|
(ul ()
|
||||||
(li () ,(exec-command "make-link /html/my-laptop.html 'my framework 16'")
|
(li () ,(exec-command "make-link /html/its-laptop.html 'its framework 16'")
|
||||||
(li () ,(exec-command "make-link /html/my-old-laptop.html 'my old {w,t}530'"))
|
(li () ,(exec-command "make-link /html/its-old-laptop.html 'its old {w,t}530'"))
|
||||||
(li () ,(exec-command "make-link /html/server-migration.html 'the server this runs on'"))))))))
|
(li () ,(exec-command "make-link /html/server-migration.html 'the server this site runs on'"))))))))
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
(defun html ()
|
(defun html ()
|
||||||
(page "natalie \"thoughts\"" `((section ()
|
(page "natalie \"thoughts\"" `((section ()
|
||||||
(h1 () "arbitrary thoughts generated by natalie")
|
(h1 () "arbitrary thoughts generated by natalie")
|
||||||
"I am bad at thinking of things to make blog posts for. this webpage might contain things that I would put in a blog post if I was more proficient at writing filler. it might also contain other things.")
|
"it is bad lat thinking of things to make blog posts for. this webpage might contain things that it would put in a blog post if it was more proficient at writing filler. it might also contain other things.")
|
||||||
,(exec-command "for file in ./html/thoughts/*; do echo $(grep DATE $file | awk '{print $3 $4}') $file; done | sort -k1,1 -r | cut -d' ' -f2 | while read -r file; do echo \"<section><details id='$(basename $file)'><summary>$(grep '^<!-- DATE:' $file | sed 's/^<!-- DATE: //; s/-->$//; s/.$//'): $(grep '^<!-- TITLE:' $file | sed 's/^<!-- TITLE: //; s/-->$//')</summary><div class=thought>$(include $file)</details></section>\"; done"))))
|
,(exec-command "for file in ./html/thoughts/*; do echo $(grep DATE $file | awk '{print $3 $4}') $file; done | sort -k1,1 -r | cut -d' ' -f2 | while read -r file; do echo \"<section><details id='$(basename $file)'><summary>$(grep '^<!-- DATE:' $file | sed 's/^<!-- DATE: //; s/-->$//; s/.$//'): $(grep '^<!-- TITLE:' $file | sed 's/^<!-- TITLE: //; s/-->$//')</summary><div class=thought>$(include $file)</details></section>\"; done"))))
|
||||||
|
|
||||||
|
@ -2,24 +2,23 @@
|
|||||||
(page "server migration"
|
(page "server migration"
|
||||||
`((section ()
|
`((section ()
|
||||||
(h1 () "this website runs on a big server now")
|
(h1 () "this website runs on a big server now")
|
||||||
"it used to run on a dell optiplex 3040 I had laying around, but I got a server from the school basement (you can just take their servers, apparently).")
|
"it used to run on a dell optiplex 3040 natalie had laying around, but it got a server from the school basement (you can just take their servers, apparently).")
|
||||||
(section ()
|
(section ()
|
||||||
(image-column-container ()
|
(image-column-container ()
|
||||||
(image-container ()
|
(image-container ()
|
||||||
(flex-column ()
|
(flex-column ()
|
||||||
,(exec-command "img-caption \"/files/natalie-holding-server.png\" \"me holding the server I got from the school basement\"")))
|
,(exec-command "img-caption \"/files/natalie-holding-server.png\" \"natalie holding the server it got from the school basement\"")))
|
||||||
(text-column ()
|
(text-column ()
|
||||||
(h2 () "why do I have a server from my school's basement?")
|
(h2 () "why does it have a server from its school's basement?")
|
||||||
(p ()
|
(p ()
|
||||||
"at the time, my school was at a temporary campus while our regular campus is being remodelled. "
|
"at the time, its school was at a temporary campus while our regular campus is being remodelled. "
|
||||||
"I hope this means there will be less lead in the water when they are done, but given how the district is, who knows. "
|
"(it hope this means there will be less lead in the water when they are done, but given how the district is, who knows.) "
|
||||||
"The current campus is notably smaller than the regular campus, thus a large amount of things are in storage ."
|
"the current campus is notably smaller than the regular campus, thus a large amount of things are in storage. "
|
||||||
"The man who is in charge of the storage and moving stored items back to the new campus does not like moving items. "
|
"the man who is in charge of the storage and moving stored items back to the new campus does not like moving items. "
|
||||||
"For this reason, when I ask him to let me in to the school's basement to just take random cool things, he says yes.")
|
"for this reason, when it ask him to let it in to the school's basement to just take random cool things, he says yes.")
|
||||||
(h2 () "it is kind of horrible that I have this server")
|
(h2 () "it is kind of horrible that this thing has this server")
|
||||||
(p ()
|
(p ()
|
||||||
"this server used to be part of the district's network infrastructure.
|
"this server used to be part of the district's network infrastructure.
|
||||||
when I got it, it had an unencrypted raid array on the disks that contained district information.
|
when natalie got it, it had an unencrypted raid array on the disks that contained district information.
|
||||||
it should not have been stored like this, and I definitely should not have been allowed to take it.
|
it should not have been stored like this, and natalie definitely should not have been allowed to take it.
|
||||||
I did of course wipe the drives and didn't even look at what was on them beyond identifying that it was from the district because I am not evil.")))))))
|
natalie did of course wipe the drives and didn't even look at what was on them beyond identifying that it was from the district because it is a good {thing}.")))))))
|
||||||
|
|
||||||
|
@ -13,25 +13,25 @@
|
|||||||
(section ()
|
(section ()
|
||||||
(h2 () "/(.*\\.)?natalieee.net/")
|
(h2 () "/(.*\\.)?natalieee.net/")
|
||||||
(h3 () "why?")
|
(h3 () "why?")
|
||||||
(p () "I was displeased with my former status of not having a website")
|
(p () "natalie was displeased with its former status of not having a website")
|
||||||
(h3 () "how?")
|
(h3 () "how?")
|
||||||
(p () "requests to /(.*\\.)?natalieee.net/ get routed to nginx, which acts as a proxy for my subdomains. "
|
(p () "requests to /(.*\\.)?natalieee.net/ get routed to nginx, which acts as a proxy for various subdomains. "
|
||||||
"nginx routes requests to /^natalieee.net/ to this webserver, which is named "
|
"nginx routes requests to /^natalieee.net/ to this webserver, which is named "
|
||||||
(a (:href "https://git.natalieee.net/nat/sludge") "sludge") ". "
|
(a (:href "https://git.natalieee.net/nat/sludge") "sludge") ". "
|
||||||
"requests to /.*\\.natalieee.net/ are routed according to the /.*\\.natalieee.net/ section."))
|
"requests to /.*\\.natalieee.net/ are routed according to the /.*\\.natalieee.net/ section."))
|
||||||
(section ()
|
(section ()
|
||||||
(h2 () "/^natalieee.net/")
|
(h2 () "/^natalieee.net/")
|
||||||
(p () "the root domain of this website, which you are currently observing, is running sludge. "
|
(p () "the root domain of this website, which you are currently observing, is running sludge. "
|
||||||
"the colors of both the light and dark mode are based off of the colorscheme of my laptop.")
|
"the colors of both the light and dark mode are based off of the colorscheme of this one's laptop.")
|
||||||
(p ()
|
(p ()
|
||||||
"the html for this website is generated using <a href=\"https://git.natalieee.net/nat/htmlgen\">htmlgen</a>."
|
"the html for this website is generated using <a href=\"https://git.natalieee.net/nat/htmlgen\">htmlgen</a>."
|
||||||
"if you are curious as to why, please see the posts from 2024-08-21 and 2024-09-01 <a href=\"/html/random-thoughts.html\">here</a>."))
|
"if you are curious as to why, please see the posts from 2024-08-21 and 2024-09-01 <a href=\"/html/random-thoughts.html\">here</a>."))
|
||||||
(section ()
|
(section ()
|
||||||
(h2 () "sludge")
|
(h2 () "sludge")
|
||||||
(h3 () "what is a sludge?")
|
(h3 () "what is a sludge?")
|
||||||
(p () "s[ite][k]ludge is my from-scratch webserver. it has features.")
|
(p () "s[ite][k]ludge is natalie's from-scratch webserver. it has features.")
|
||||||
(h3 () "why?")
|
(h3 () "why?")
|
||||||
(p () "I dislike \"web development\". also, I was bored.")
|
(p () "it dislikes \"web development\". also, it was bored.")
|
||||||
(h3 () "what does sludge do?")
|
(h3 () "what does sludge do?")
|
||||||
(ul ()
|
(ul ()
|
||||||
(li () "send data")
|
(li () "send data")
|
||||||
@ -66,19 +66,19 @@
|
|||||||
"htmlgen -> site [label=out]"
|
"htmlgen -> site [label=out]"
|
||||||
"htmlgen -> site [label=site]"))))
|
"htmlgen -> site [label=site]"))))
|
||||||
(p ()
|
(p ()
|
||||||
"you may ask: why?"
|
"one may ask: why?"
|
||||||
(br) (br)
|
(br) (br)
|
||||||
"the answer to such a question is that sludge runs with a working directory of ~/site, but scripts in ~/site/scripts must be able to import files from ~/sludge (specifically ~/site/scripts/include). "
|
"the answer to such a question is that sludge runs with a working directory of ~/site, but scripts in ~/site/scripts must be able to import files from ~/sludge (specifically ~/site/scripts/include). "
|
||||||
"htmlgen needs to be able to read scripts in ~/site/scripts to run commands at compile time. htmlgen writes html to ~/htmlgen/out, thus the double symlink to ~/site. "
|
"htmlgen needs to be able to read scripts in ~/site/scripts to run commands at compile time. htmlgen writes html to ~/htmlgen/out, thus the double symlink to ~/site. "
|
||||||
"technically, this could all be done without symlinks. this is vaguely more robust because in the event that I move something, I simply need to change the symlinks instead of the paths in arbitrarily many files. "
|
"technically, this could all be done without symlinks. this is vaguely more robust because in the event that natalie moves something, it simply need to change the symlinks instead of the paths in arbitrarily many files. "
|
||||||
"nevertheless" ,(exec-command "make-footnote \"nevertheless is a stupid work\"") ", the number of symlinks is amusing.")
|
"nevertheless" ,(exec-command "make-footnote \"nevertheless is a stupid work\"") ", the number of symlinks is amusing.")
|
||||||
,(exec-command "put-footnotes"))
|
,(exec-command "put-footnotes"))
|
||||||
|
|
||||||
(section ()
|
(section ()
|
||||||
(h2 () "/.*\\.natalieee.net/")
|
(h2 () "/.*\\.natalieee.net/")
|
||||||
(ul ()
|
(ul ()
|
||||||
(li () ,(exec-command "make-link https://git.natalieee.net") ": Gitea instance. You may use it if you feel so inclined for some reason. I wouldn't.")
|
(li () ,(exec-command "make-link https://git.natalieee.net") ": Gitea instance. You may use it if you feel so inclined for some reason. it vaguely advises against this.")
|
||||||
(li () "dns.natalieee.net" ": Pointless CNAME record to my main domain so that entities using my dns (A number greater than 0!) can put dns.natalieee.net down as their nameserver instead of natalieee.net.")
|
(li () "dns.natalieee.net" ": Pointless CNAME record to its main domain so that entities using its dns (once a number greater than 0!) can put dns.natalieee.net down as their nameserver instead of natalieee.net.")
|
||||||
(li () "mpd.natalieee.net: mpd server that my friend asked me to create. I can probably be bothered in to giving arbitrary people credentials if they for some reason wish to listen to the music that I listen to in such a roundabout way")
|
(li () "mpd.natalieee.net: mpd server that its friend asked it to create. it can probably be bothered in to giving arbitrary people credentials if they for some reason wish to listen to the music that it is listening to in such a roundabout way")
|
||||||
(li () ,(exec-command "make-link https://files.natalieee.net") ": a slightly worse and personal 0x0.st-like server. created because I was annoyed by discord's upload limit."))))))
|
(li () ,(exec-command "make-link https://files.natalieee.net") ": a slightly worse and personal 0x0.st-like server. created because it was annoyed by discord's upload limit."))))))
|
||||||
|
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
(page "woah, data"
|
(page "woah, data"
|
||||||
`((section ()
|
`((section ()
|
||||||
(h1 () "stats! data! wow!")
|
(h1 () "stats! data! wow!")
|
||||||
"boring information about me and my computes, delivered right to your web browser (or terminal)!"
|
"boring information about it and its computers, delivered right to your web browser (or terminal)!"
|
||||||
"why collect information about your users when your users could collect information about you?")
|
"why collect information about people visiting this site when they could instead collect information about this natalie?")
|
||||||
(section ()
|
(section ()
|
||||||
(h2 () "information:")
|
(h2 () "information:")
|
||||||
,(exec-command "for line in $(cat sludge/src/lib/router.py | grep Route -A1 | grep '/stats/' | sed \"s/'//g; s/,//g\" | cut -d= -f3); do echo \"$(make-link $line)\"; done")))))
|
,(exec-command "for line in $(cat sludge/src/lib/router.py | grep Route -A1 | grep '/stats/' | sed \"s/'//g; s/,//g\" | cut -d= -f3); do echo \"$(make-link $line)\"; done")))))
|
||||||
|
Loading…
Reference in New Issue
Block a user