apply new style to all non-blog files barring site-info.html
This commit is contained in:
parent
a59e0d8adb
commit
9bfa93d8c6
4
.gitignore
vendored
4
.gitignore
vendored
@ -4,5 +4,5 @@ test.sh
|
|||||||
log
|
log
|
||||||
graph*
|
graph*
|
||||||
__pycache__/
|
__pycache__/
|
||||||
/files/stats/song
|
files/stats/song
|
||||||
/files/home_visit_counter
|
files/home_visit_counter
|
||||||
|
@ -16,6 +16,10 @@
|
|||||||
2024-07-24: updated wording in site-info.html, add /stats/ routes, update home.html to make filetree hidden by default because it is big
|
2024-07-24: updated wording in site-info.html, add /stats/ routes, update home.html to make filetree hidden by default because it is big
|
||||||
2024-07-25: rewrite css because winter told me to. Now has dark mode based on a media query.
|
2024-07-25: rewrite css because winter told me to. Now has dark mode based on a media query.
|
||||||
2024-07-25: add subdomain proxying with nginx.
|
2024-07-25: add subdomain proxying with nginx.
|
||||||
|
<<<<<<< Updated upstream
|
||||||
2024-07-26: add <a href='git.natalieee.net'>git.natalieee.net</a>
|
2024-07-26: add <a href='git.natalieee.net'>git.natalieee.net</a>
|
||||||
|
=======
|
||||||
|
2024-07-26: add <a href='https://git.natalieee.net'>git.natalieee.net</a>
|
||||||
|
>>>>>>> Stashed changes
|
||||||
2024-07-26: update site-info.html
|
2024-07-26: update site-info.html
|
||||||
2024-07-26: I have a dns server now. oops. there go my sleeping plans. email me if you want to use it for some insane reason.
|
2024-07-26: I have a dns server now. oops. there go my sleeping plans. email me if you want to use it for some insane reason.
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="content-type" content="text/html; charset=windows-1252"> <!-- lol -->
|
<meta http-equiv="content-type" content="text/html; charset=windows-1252"> <!-- lol -->
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<title>Index of {path}</title>
|
<title>Index of {path}</title>
|
||||||
<link href="data:text/css,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ddg-runtime-checks%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20display%3A%20none%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20" rel="stylesheet" type="text/css">
|
<link href="data:text/css,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ddg-runtime-checks%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20display%3A%20none%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20" rel="stylesheet" type="text/css">
|
||||||
<style>
|
<style>
|
||||||
@ -10,13 +11,17 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
$[python3 -u -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
$[python3 -u -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
||||||
<h1>Index of {path}</h1>
|
<main>
|
||||||
<table>
|
<section>
|
||||||
<tbody><tr><th><p>Name</p></th><th><p>Last modified</p></th><th><p>Creation Date</p></th><th><p>Size</p></th></tr>
|
<h1>Index of {path}</h1>
|
||||||
<tr><th colspan="4"><hr></th></tr>
|
<table>
|
||||||
$[for file in $(ls {path}); do echo "<tr><td><a href=\"/{path}/$file\">$file</a></td><td>$(stat -c %y "{path}/$file" | head -c 16)</td><td><p>$(stat -c %y "{path}/$file" | head -c 10)</p></td><td align=\"right\">$(numfmt --to=iec --suffix=B $(stat -c %s "{path}/$file"))</td></tr>"; done | sed 's/\/\//\//g']
|
<tbody><tr><th><p>Name</p></th><th><p>Last modified</p></th><th><p>Creation Date</p></th><th><p>Size</p></th></tr>
|
||||||
<tr><th colspan="4"><hr></th></tr>
|
<tr><th colspan="4"><hr></th></tr>
|
||||||
</tbody>
|
$[for file in $(ls {path}); do echo "<tr><td><a href=\"/{path}/$file\">$file</a></td><td>$(stat -c %y "{path}/$file" | head -c 16)</td><td><p>$(stat -c %y "{path}/$file" | head -c 10)</p></td><td align=\"right\">$(numfmt --to=iec --suffix=B $(stat -c %s "{path}/$file"))</td></tr>"; done | sed 's/\/\//\//g']
|
||||||
</table>
|
<tr><th colspan="4"><hr></th></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
99
home.html
99
home.html
@ -3,6 +3,7 @@ $[echo visit >> files/home_visit_counter]
|
|||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<style>
|
<style>
|
||||||
$[cat style.css]
|
$[cat style.css]
|
||||||
/* appended to maintain html spec compliance while maintaining the consequences of albert's hack */
|
/* appended to maintain html spec compliance while maintaining the consequences of albert's hack */
|
||||||
@ -34,47 +35,61 @@ $[echo visit >> files/home_visit_counter]
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
||||||
<p>
|
<main>
|
||||||
I'm Natalie[ee].<br>
|
<section>
|
||||||
$[find files/homepage-statements/* | shuf -n1 | xargs -I % cat %]<br>
|
<p>
|
||||||
home.html was last modified on $[stat -c %y ./home.html | head -c 10].<br>
|
I'm Natalie[ee].<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.<br>
|
$[find files/homepage-statements/* | shuf -n1 | xargs -I % cat %]<br>
|
||||||
Website homepage visit counter: $[cat files/home_visit_counter | wc -l]
|
home.html was last modified on $[stat -c %y ./home.html | head -c 10].<br>
|
||||||
</p>
|
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.<br>
|
||||||
<a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fnatalieee.net%2F" class="nostyle" rel="nofollow">
|
Website homepage visit counter: $[cat files/home_visit_counter | wc -l]
|
||||||
<img alt="W3C HTML5" src="/files/html5.png" width="88" height="31">
|
</p>
|
||||||
</a>
|
<a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fnatalieee.net%2F" class="88x31" rel="nofollow">
|
||||||
<hr>
|
<img alt="W3C HTML5" src="/files/html5.png" width="88" height="31">
|
||||||
<h2>Particularly noteable pages</h2>
|
</a>
|
||||||
<a href='/html/site-info.html'>Information about this website</a><br>
|
</section>
|
||||||
<a href='/html/natalie-info.html'>Information about me</a><br>
|
<section>
|
||||||
<a href='/html/blog/index.html'>There is also a blog. I do not use it frequently.</a><br>
|
<h2>Particularly noteable pages</h2>
|
||||||
<a href='/html/random-thoughts.html'>There are also random natalie thoughts. sometimes they might be interesting</a>
|
<a href='/html/site-info.html'>Information about this website</a>
|
||||||
<hr>
|
<a href='/html/natalie-info.html'>Information about me</a>
|
||||||
<h2>Directories</h2>
|
<a href='/html/blog/index.html'>There is also a blog. I do not use it frequently.</a>
|
||||||
$[find -maxdepth 1 -type d | sed 1d | xargs -I% echo '<a href=%>%</a>' | sed 's/\.\///g' | grep -v pycache | grep -v .git]
|
<a href='/html/random-thoughts.html'>There are also random natalie thoughts. sometimes they might be interesting</a>
|
||||||
<hr>
|
</section>
|
||||||
<h2>Changelog</h2>
|
<section>
|
||||||
<pre>$[cat changelog]</pre>
|
<h2>Directories</h2>
|
||||||
<hr>
|
<span>$[find -maxdepth 1 -type d | sed 1d | xargs -I% echo '<a href=%>%</a>' | sed 's/\.\///g' | grep -v pycache | grep -v .git]</span>
|
||||||
<h2>Site file tree</h2>
|
</section>
|
||||||
<details>
|
<section>
|
||||||
<summary>File tree hidden for brevity</summary>
|
<h2>Changelog</h2>
|
||||||
$[tree . | sed 's/^\./site/; s/─/-/g; s/├/|/g; s/└/\\/g; s/│/|/g' | sed '1i\<pre>' | sed '$a\</pre>']
|
<pre>$[cat changelog]</pre>
|
||||||
</details>
|
</section>
|
||||||
<hr>
|
<section>
|
||||||
<h2>Autistic collection of 88x31s</h2>
|
<h2>Site file tree</h2>
|
||||||
$[for file in ./files/88x31/*; do (file -i "$file" | grep -qE 'image/') && echo "<img src=\"$file\" width=\"88\" height=\"31\"/>" || cat "$file"; done | shuf]
|
<details>
|
||||||
<hr>
|
<summary>File tree hidden for brevity</summary>
|
||||||
<h2>Post arbitrary data to my website to be displayed here</h2>
|
$[tree . | sed 's/^\./site/; s/─/-/g; s/├/|/g; s/└/\\/g; s/│/|/g' | sed '1i\<pre>' | sed '$a\</pre>']
|
||||||
Yes, I do sanitize this. <a href='/html/albert-hack-1.html' ><del>(No you don't --sanitization tester)</del></a> Yes, I do.
|
</details>
|
||||||
<form action="#" method="post">
|
</section>
|
||||||
<label for="postText">post text: </label>
|
<section>
|
||||||
<input type="text" id="postText" name="text" required>
|
<h2>Autistic collection of 88x31s</h2>
|
||||||
<label for="postName">name to be displayed with post: </label>
|
<span>$[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>
|
||||||
<input type="text" id="postName" name="name" required>
|
</section>
|
||||||
<button type="submit">Submit</button>
|
<section>
|
||||||
</form>
|
<h2>Post arbitrary data to my website to be displayed here</h2>
|
||||||
$[ls -r ./files/posts-to-homepage/* | xargs cat]
|
Yes, I do sanitize this. <a href='/html/albert-hack-1.html' ><del>(No you don't --sanitization tester)</del></a> Yes, I do.
|
||||||
|
</section>
|
||||||
|
<section class='ignore-section'>
|
||||||
|
<form action="#" method="post">
|
||||||
|
<label for="postText">post text: </label>
|
||||||
|
<input type="text" id="postText" name="text" required>
|
||||||
|
<label for="postName">username: </label>
|
||||||
|
<input type="text" id="postName" name="name" required>
|
||||||
|
<button type="submit">Submit</button>
|
||||||
|
</form>
|
||||||
|
<div>
|
||||||
|
$[ls -r ./files/posts-to-homepage/* | while read -r file; do echo "<div class=post>$(cat $file)</div>"; done ]
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -4,108 +4,115 @@
|
|||||||
<style>
|
<style>
|
||||||
$[cat style.css]
|
$[cat style.css]
|
||||||
</style>
|
</style>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div>
|
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
||||||
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
<main>
|
||||||
<h1>My school district's IT is mean :(</h1>
|
<section>
|
||||||
My school district has a very silly IT department. I am reasonably annoyed by this and have thus decided to tell whoever looks at my website about it.<br>
|
<h1>My school district's IT is mean :(</h1>
|
||||||
I-dont-like-IT.html was last modified on $[stat -c %y ./html/I-dont-like-IT.html | head -c 10].<hr>
|
My school district has a very silly IT department. I am reasonably annoyed by this and have thus decided to tell whoever looks at my website about it.<br>
|
||||||
<h2>"""Cuban malware""" incident</h2>
|
I-dont-like-IT.html was last modified on $[stat -c %y ./html/I-dont-like-IT.html | head -c 10].<hr>
|
||||||
<p>
|
</section>
|
||||||
It is really going to sound like I am exaggerating or making things up here. I am not, PPS IT is really like this.
|
<section>
|
||||||
Last year, the school district accused me of installing what they claimed was "Cuban malware" that had been "used in attacks against the FBI and the LA school district" on a school laptop that I fixed for a teacher.
|
<h2>"""Cuban malware""" incident</h2>
|
||||||
While it was technically against IT policy to repair the laptop, I could do it in 10 minutes (the battery connector had just popped out of the connector for it on the mainboard), whereas IT would have taken like a week through the power of beaurocracy.
|
<p>
|
||||||
I of course, did not install any malware on this computer, that would be mean. The fact that I did not install malware on that computer did not stop IT from persecuting me, nor did the fact that there were not in fact any viruses on the computer I repaired.<br>
|
It is really going to sound like I am exaggerating or making things up here. I am not, PPS IT is really like this.
|
||||||
This occurrence is primarily funny due to how they went about investigating me for whatever it was they thought I did.
|
Last year, the school district accused me of installing what they claimed was "Cuban malware" that had been "used in attacks against the FBI and the LA school district" on a school laptop that I fixed for a teacher.
|
||||||
</p><br>
|
While it was technically against IT policy to repair the laptop, I could do it in 10 minutes (the battery connector had just popped out of the connector for it on the mainboard), whereas IT would have taken like a week through the power of beaurocracy.
|
||||||
<p>
|
I of course, did not install any malware on this computer, that would be mean. The fact that I did not install malware on that computer did not stop IT from persecuting me, nor did the fact that there were not in fact any viruses on the computer I repaired.<br>
|
||||||
I will provide an approximate list of events because—as mentioned on the natalie info page—I am really bad at writing.
|
This occurrence is primarily funny due to how they went about investigating me for whatever it was they thought I did.
|
||||||
|
</p><br>
|
||||||
|
<p>
|
||||||
|
I will provide an approximate list of events because—as mentioned on the natalie info page—I am really bad at writing.
|
||||||
|
<ul>
|
||||||
|
<li>Day one: I repaired the broken laptop. A friend of mine was present during this process</li>
|
||||||
|
<li><p>
|
||||||
|
Day two: I am pulled out of class by the IT employee local to my school.
|
||||||
|
She asks to see my laptop.
|
||||||
|
I schedule a shutdown for 30 seconds from the current time and hand it to her.
|
||||||
|
She just sort of blankly stares at it (???) for 30 seconds, observes it shut down, and just hands it back to me. (I have no idea why she wanted to see it, lmao. To be clear, she never touched any input device on it.)
|
||||||
|
I proceed to my next class, uninstall my ssd, and tape it to my thigh (I was somewhat worried they would later try to take my laptop).
|
||||||
|
I get called out of class by security and escorted to the dean's office.
|
||||||
|
She is on the phone with someone at the IT department who is vaguely in charge of cybersecurity.
|
||||||
|
Cybersecurity lady says the Cuban malware line, I am interviewed by her and the dean for some amount of time.
|
||||||
|
I am told to go back to class
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p>
|
||||||
|
Day three: I am called down to the office again, with a security escort (I am perhaps the least likely person to require a security escort).
|
||||||
|
Another interview occures, the IT security lady says lots of things that demonstrate a general misunderstanding of computers.
|
||||||
|
They also interview the friend that was present when I repaired the computer.
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p>
|
||||||
|
Day eighteen (after winter break):
|
||||||
|
I get called down to the deans office again.
|
||||||
|
The dean apologizes for the hassle and states that no evidence against me was found (shocking).
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
Unfortunately, while Oregon is a two party consent state for recording conversations and I would never think to violate the law, this interaction occured before the dean failed to file the paperwork to keep the kid that sent me unwanted sexual messages and followed me home away from me.
|
||||||
|
While I would never think to record conversations with someone without their consent of course, failing to file paperwork that is arguably required for my safety and then denying the meeting in which one stated they would file paperwork is certainly the sort of thing that would prompt me to begin recording all conversations I had with someone, were I the type of person to break the law of course.<br>
|
||||||
|
I really wish I had a recording of the IT security lady saying the cuban malware line. alas.
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h2>Leaking the wifi creds</h2>
|
||||||
|
<p>
|
||||||
|
To be fair, this one is my fault.
|
||||||
|
For context, during the summer of 2022, the IT department set up a new secure network.
|
||||||
|
Previously, there was pps-wifi and pps-wifi-guest.
|
||||||
|
pps-wifi used boring old wpa2 and every student ever knew the password.
|
||||||
|
The new network, pps-wireless, used MSCHAPv2 PEAP certificate based authentication.
|
||||||
|
It should be noted that this took place before any negative interactions I had with IT.
|
||||||
|
I was aware that the IT department used to offer summer jobs/internships to students, and, given I am reasonably interested in enterprise networks, emailed some guy at the IT department inquiring about the way they were setting up their new network.
|
||||||
|
Rather rudely, in his response he stated he was disappointed in me (I am not sure why he said this).
|
||||||
|
This of course prompted the completely reasonable response of deciding I would gain unauthorized access to the new network out of spite.
|
||||||
|
I will not go in to detail about how this was achieved, but I will state that I genuinely actually seriously (this comes off as sarcastic maybe, I am actually being serious though.) did not commit any crimes in doing so.
|
||||||
|
I was successful in getting credentials to the network, of course.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Now, this year, I was following my standard practice of paying little attention in class and instead working on some random computer thing.
|
||||||
|
IT had, for whatever reason, blocked the documentation on zsh.
|
||||||
|
I thought this was stupid and dumb and out of sheer boredom posted the credentials for pps-wireless in a school discord server.
|
||||||
|
Should I have done this? No, it was fully stupid, but oh well.
|
||||||
|
Anyways, I got interviewed by the dean and cybersecurity lady from IT.
|
||||||
|
For whatever reason, the dean said the word "human" 9 times in the interview, 6 of these times were consecutively.
|
||||||
|
The dean also kept talking down to me, which is probably because I'm autistic or something so naturally I mustn't understand anything ever.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Now then, funny part: They decided to suspend me for one day, which like sure, whatever, I'm fine with that, I did break the rules and actions like that do generally have consequences.
|
||||||
|
They did not however revoke the network certificate I had used and posted. I have no idea why they did not do this and thus given my previous encounters with IT, I must assume incompetence.
|
||||||
|
If my understanding of their network is correct (which is reasonably likely), they would have very easily been able to revoke the leaked cert and issue a new one. No clue why they didn't.
|
||||||
|
Anyways, the important part is I received this email:
|
||||||
|
</p>
|
||||||
|
<img src='/files/dean-email-why-it-matters.png'/>
|
||||||
|
<p>
|
||||||
|
Problems with this email:<ul>
|
||||||
|
<li>The person the dean describes as the director of IT is not the director of IT.</li>
|
||||||
|
<li>"the password of PPS"</li>
|
||||||
|
<li>
|
||||||
|
<p>
|
||||||
|
Claiming that she is not trying to fearmonger whilst blatantly fearmongering.<br>
|
||||||
|
The IT department does not have a reasonable means of determining if someone is trying to find the personal information of transgender staff and students that I can conceive of, the dean is clearly making things up.<br>
|
||||||
|
The claim does not even make sense, the answer to does a school contain transgender students or staff is just "yes."<br>
|
||||||
|
She is almost certainly only mentioning anything to do with transgender people because I am transgender. This seems mildly inappropriate to me as she is either trying to guilt me with the fact that my actions could have harmed other transgender people or implying that I wish harm upon other transgender people.
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
Ridiculous email, 10/10, made me laugh.<br><br>
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h2>Misc</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Day one: I repaired the broken laptop. A friend of mine was present during this process</li>
|
<li>Freshman year, I gained access to multiple staff member's credentials. Given that I am not a particularly malicious person and only did this out of boredom, I did not do anything bad with them and instead reported the means by which I got them to IT.
|
||||||
<li><p>
|
I will leave guessing whether or not they fixed the issue I exploited as an exercise for the reader.</li>
|
||||||
Day two: I am pulled out of class by the IT employee local to my school.
|
|
||||||
She asks to see my laptop.
|
|
||||||
I schedule a shutdown for 30 seconds from the current time and hand it to her.
|
|
||||||
She just sort of blankly stares at it (???) for 30 seconds, observes it shut down, and just hands it back to me. (I have no idea why she wanted to see it, lmao. To be clear, she never touched any input device on it.)
|
|
||||||
I proceed to my next class, uninstall my ssd, and tape it to my thigh (I was somewhat worried they would later try to take my laptop).
|
|
||||||
I get called out of class by security and escorted to the dean's office.
|
|
||||||
She is on the phone with someone at the IT department who is vaguely in charge of cybersecurity.
|
|
||||||
Cybersecurity lady says the Cuban malware line, I am interviewed by her and the dean for some amount of time.
|
|
||||||
I am told to go back to class
|
|
||||||
</p>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<p>
|
|
||||||
Day three: I am called down to the office again, with a security escort (I am perhaps the least likely person to require a security escort).
|
|
||||||
Another interview occures, the IT security lady says lots of things that demonstrate a general misunderstanding of computers.
|
|
||||||
They also interview the friend that was present when I repaired the computer.
|
|
||||||
</p>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<p>
|
|
||||||
Day eighteen (after winter break):
|
|
||||||
I get called down to the deans office again.
|
|
||||||
The dean apologizes for the hassle and states that no evidence against me was found (shocking).
|
|
||||||
</p>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
Unfortunately, while Oregon is a two party consent state for recording conversations and I would never think to violate the law, this interaction occured before the dean failed to file the paperwork to keep the kid that sent me unwanted sexual messages and followed me home away from me.
|
</section>
|
||||||
While I would never think to record conversations with someone without their consent of course, failing to file paperwork that is arguably required for my safety and then denying the meeting in which one stated they would file paperwork is certainly the sort of thing that would prompt me to begin recording all conversations I had with someone, were I the type of person to break the law of course.<br>
|
</main>
|
||||||
I really wish I had a recording of the IT security lady saying the cuban malware line. alas.
|
|
||||||
</p>
|
|
||||||
<hr>
|
|
||||||
<h2>Leaking the wifi creds</h2>
|
|
||||||
<p>
|
|
||||||
To be fair, this one is my fault.
|
|
||||||
For context, during the summer of 2022, the IT department set up a new secure network.
|
|
||||||
Previously, there was pps-wifi and pps-wifi-guest.
|
|
||||||
pps-wifi used boring old wpa2 and every student ever knew the password.
|
|
||||||
The new network, pps-wireless, used MSCHAPv2 PEAP certificate based authentication.
|
|
||||||
It should be noted that this took place before any negative interactions I had with IT.
|
|
||||||
I was aware that the IT department used to offer summer jobs/internships to students, and, given I am reasonably interested in enterprise networks, emailed some guy at the IT department inquiring about the way they were setting up their new network.
|
|
||||||
Rather rudely, in his response he stated he was disappointed in me (I am not sure why he said this).
|
|
||||||
This of course prompted the completely reasonable response of deciding I would gain unauthorized access to the new network out of spite.
|
|
||||||
I will not go in to detail about how this was achieved, but I will state that I genuinely actually seriously (this comes off as sarcastic maybe, I am actually being serious though.) did not commit any crimes in doing so.
|
|
||||||
I was successful in getting credentials to the network, of course.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Now, this year, I was following my standard practice of paying little attention in class and instead working on some random computer thing.
|
|
||||||
IT had, for whatever reason, blocked the documentation on zsh.
|
|
||||||
I thought this was stupid and dumb and out of sheer boredom posted the credentials for pps-wireless in a school discord server.
|
|
||||||
Should I have done this? No, it was fully stupid, but oh well.
|
|
||||||
Anyways, I got interviewed by the dean and cybersecurity lady from IT.
|
|
||||||
For whatever reason, the dean said the word "human" 9 times in the interview, 6 of these times were consecutively.
|
|
||||||
The dean also kept talking down to me, which is probably because I'm autistic or something so naturally I mustn't understand anything ever.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Now then, funny part: They decided to suspend me for one day, which like sure, whatever, I'm fine with that, I did break the rules and actions like that do generally have consequences.
|
|
||||||
They did not however revoke the network certificate I had used and posted. I have no idea why they did not do this and thus given my previous encounters with IT, I must assume incompetence.
|
|
||||||
If my understanding of their network is correct (which is reasonably likely), they would have very easily been able to revoke the leaked cert and issue a new one. No clue why they didn't.
|
|
||||||
Anyways, the important part is I received this email:
|
|
||||||
</p>
|
|
||||||
<img src='/files/dean-email-why-it-matters.png'/>
|
|
||||||
<p>
|
|
||||||
Problems with this email:<ul>
|
|
||||||
<li>The person the dean describes as the director of IT is not the director of IT.</li>
|
|
||||||
<li>"the password of PPS"</li>
|
|
||||||
<li>
|
|
||||||
<p>
|
|
||||||
Claiming that she is not trying to fearmonger whilst blatantly fearmongering.<br>
|
|
||||||
The IT department does not have a reasonable means of determining if someone is trying to find the personal information of transgender staff and students that I can conceive of, the dean is clearly making things up.<br>
|
|
||||||
The claim does not even make sense, the answer to does a school contain transgender students or staff is just "yes."<br>
|
|
||||||
She is almost certainly only mentioning anything to do with transgender people because I am transgender. This seems mildly inappropriate to me as she is either trying to guilt me with the fact that my actions could have harmed other transgender people or implying that I wish harm upon other transgender people.
|
|
||||||
</p>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
Ridiculous email, 10/10, made me laugh.<br><br>
|
|
||||||
</p>
|
|
||||||
<hr>
|
|
||||||
<h2>Misc</h2>
|
|
||||||
<ul>
|
|
||||||
<li>Freshman year, I gained access to multiple staff member's credentials. Given that I am not a particularly malicious person and only did this out of boredom, I did not do anything bad with them and instead reported the means by which I got them to IT.
|
|
||||||
I will leave guessing whether or not they fixed the issue I exploited as an exercise for the reader.</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,27 +1,31 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>Not a fan of IT</title>
|
<title>Albert</title>
|
||||||
<style>
|
<style>
|
||||||
$[cat style.css]
|
$[cat style.css]
|
||||||
</style>
|
</style>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
||||||
<div>
|
<main>
|
||||||
<h1>Friend hacked my website lol</h1>
|
<section>
|
||||||
<p>But how?</p>
|
<h1>Friend hacked my website lol</h1>
|
||||||
<hr>
|
<p>But how?</p>
|
||||||
<p>
|
</section>
|
||||||
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}.
|
<section>
|
||||||
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>).
|
<p>
|
||||||
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.
|
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}.
|
||||||
</p>
|
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>).
|
||||||
<p>
|
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.
|
||||||
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.
|
</p>
|
||||||
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.
|
<p>
|
||||||
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.
|
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.
|
||||||
This ended with around 15 messages on discord telling me my site had been hacked, only around two of which were from albert.
|
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.
|
||||||
</p>
|
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.
|
||||||
</div>
|
This ended with around 15 messages on discord telling me my site had been hacked, only around two of which were from albert.
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -4,16 +4,21 @@
|
|||||||
</style>
|
</style>
|
||||||
<body>
|
<body>
|
||||||
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
||||||
<h1>Blog? Thing</h1>
|
<main>
|
||||||
<p>I don't know if I will use this, but I am bored and thus making a blog system.</p>
|
<section>
|
||||||
<hr>
|
<h1>Blog? Thing</h1>
|
||||||
<h2>Posts</h2>
|
<p>I don't know if I will use this, but I am bored and thus making a blog system.</p>
|
||||||
<table>
|
</section>
|
||||||
<tbody><tr><th><p>Title</p></th><th><p>Editted</p></th><th><p>Posted</p></th><th><p>Size</p></th></tr>
|
<section>
|
||||||
<tr><th colspan="4"><hr></th></tr>
|
<h2>Posts</h2>
|
||||||
$[for file in $(ls html/blog/posts); do echo "<tr><td><a href=\"/html/blog/posts/$file\">$file</a></td><td>$(stat -c %y "html/blog/posts/$file" | head -c 16)</td><td><p>$(stat -c %y html/blog/posts/$file | head -c 10)</p></td><td align=\"right\">$(numfmt --to=iec --suffix=B $(stat -c %s "html/blog/posts/$file"))</td></tr>"; done | sed 's/\/\//\//g']
|
<table>
|
||||||
<tr><th colspan="4"><hr></th></tr>
|
<tbody><tr><th><p>Title</p></th><th><p>Editted</p></th><th><p>Posted</p></th><th><p>Size</p></th></tr>
|
||||||
</tbody>
|
<tr><th colspan="4"><hr></th></tr>
|
||||||
</table>
|
$[for file in $(ls html/blog/posts); do echo "<tr><td><a href=\"/html/blog/posts/$file\">$file</a></td><td>$(stat -c %y "html/blog/posts/$file" | head -c 16)</td><td><p>$(stat -c %y html/blog/posts/$file | head -c 10)</p></td><td align=\"right\">$(numfmt --to=iec --suffix=B $(stat -c %s "html/blog/posts/$file"))</td></tr>"; done | sed 's/\/\//\//g']
|
||||||
|
<tr><th colspan="4"><hr></th></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</section>
|
||||||
|
<main>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -4,12 +4,13 @@
|
|||||||
$[cat style.css]
|
$[cat style.css]
|
||||||
</style>
|
</style>
|
||||||
<title>Neat/odd/cool/relatively unknown/other adjective websites</title>
|
<title>Neat/odd/cool/relatively unknown/other adjective websites</title>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
||||||
<h1>Websites that I think are interesting or just odd, with varying obscurity and in no particular order</h1>
|
<main>
|
||||||
<hr>
|
<section>
|
||||||
<div>
|
<h1>Websites that I think are interesting or just odd, with varying obscurity and in no particular order</h1>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href='https://eightyeightthirty.one/'>eightyeightthirty.one</a> A graph of website badges.</li>
|
<li><a href='https://eightyeightthirty.one/'>eightyeightthirty.one</a> A graph of website badges.</li>
|
||||||
<li><a href='http://lena.kiev.ua/'>lena.kiev.ua</a> Cool transgender ukranian lady who makes bathtub estrogen.</li>
|
<li><a href='http://lena.kiev.ua/'>lena.kiev.ua</a> Cool transgender ukranian lady who makes bathtub estrogen.</li>
|
||||||
@ -28,12 +29,15 @@
|
|||||||
<li><a href='https://eda.gay'>eday.gay</a> She owns less thinkpads than I do. Brainwormed.</li>
|
<li><a href='https://eda.gay'>eday.gay</a> She owns less thinkpads than I do. Brainwormed.</li>
|
||||||
<li><a href='https://www.yourworldoftext.com/apionet'>https://www.yourworldoftext.com/apionet</a> buzzzzzzzzzzzzzzzzzzz</li>
|
<li><a href='https://www.yourworldoftext.com/apionet'>https://www.yourworldoftext.com/apionet</a> buzzzzzzzzzzzzzzzzzzz</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
This web page compelled me to put it somewhere:
|
||||||
This web page compelled me to put it somewhere:
|
<a href="https://citrons.xyz/a/memetic-apioform-page.html"><img src="https://citrons.xyz/a/static/apiopage.png"/></a>
|
||||||
<a href="https://citrons.xyz/a/memetic-apioform-page.html"><img src="https://citrons.xyz/a/static/apiopage.png"/></a>
|
</section>
|
||||||
<h1>entities I sometimes interact with physically</h1>
|
<section>
|
||||||
winter: <a href='https://bunbun.dev'>bunbun.dev</a><br>
|
<h1>entities I sometimes interact with physically</h1>
|
||||||
odette: <a href='https://puppygirl.systems'>puppygirl.systems</a> (nothing is there yet)<br>
|
<span>winter: <a href='https://bunbun.dev'>bunbun.dev</a></span>
|
||||||
albert: <a href='https://iso-9995-9.com'>iso-9995-9.com</a> (down? dns issue maybe)<br
|
<span>odette: <a href='https://puppygirl.systems'>puppygirl.systems</a> (nothing is there yet)</span>
|
||||||
|
<span>albert: <a href='https://iso-9995-9.com'>iso-9995-9.com</a> (down? dns issue maybe)</span>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,15 +1,20 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>Natalie information</title>
|
<title>Discord</title>
|
||||||
<style>
|
<style>
|
||||||
$[cat style.css]
|
$[cat style.css]
|
||||||
</style>
|
</style>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
||||||
<h1>Discord</h1>
|
<main>
|
||||||
As one who is not particularly partial to internet centralization, and seeing as I have had discord accounts get banned for seemingly nothing in the past, I am not particularly fond of using discord.
|
<section>
|
||||||
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.
|
<h1>Discord</h1>
|
||||||
This is not a very nice state of things.
|
As one who is not particularly partial to internet centralization, and seeing as I have had discord accounts get banned for seemingly nothing in the past, I am 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.
|
||||||
|
This is not a very nice state of things.
|
||||||
|
</section>
|
||||||
|
<main>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
2
html/footer.html
Normal file
2
html/footer.html
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
<footer>
|
||||||
|
</footer>
|
@ -1,8 +1,11 @@
|
|||||||
<header class='container'>
|
<header>
|
||||||
<h1>$[(for i in {0..10}; do echo Natalieee.net; done; echo Catalieee.net) | shuf -n1]<h1>
|
<nav>
|
||||||
<a href='/'>home</a>
|
<ul>
|
||||||
<a href=$PREV_URL$>back</a>
|
<li><h1>$[(for i in {0..10}; do echo Natalieee.net; done; echo Catalieee.net) | shuf -n1]<h1></li>
|
||||||
<a href='/html/site-info.html'>site info</a>
|
<li><a href='/'>home</a></li>
|
||||||
<a href='/html/natalie-info.html'>natalie info</a>
|
<li><a href=$PREV_URL$>back</a>
|
||||||
<hr>
|
<li><a href='/html/site-info.html'>site info</a></li>
|
||||||
|
<li><a href='/html/natalie-info.html'>natalie info</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
</header>
|
</header>
|
||||||
|
@ -1,100 +1,80 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>laptop</title>
|
<title>laptop</title>
|
||||||
<style>
|
<style>
|
||||||
$[cat style.css]
|
$[cat style.css]
|
||||||
.code-container {
|
</style>
|
||||||
display: flex;
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
flex-direction: column;
|
</head>
|
||||||
}
|
<body>
|
||||||
|
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
||||||
.io-container {
|
<main>
|
||||||
display: flex;
|
<section>
|
||||||
flex-direction: column;
|
<h1>DEPRECATED My laptop</h1>
|
||||||
align-items: flex-start;
|
<p>see <a href='/html/blog/posts/new-laptop.html'>blog post</a>
|
||||||
margin-right: 25px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.arrow {
|
|
||||||
margin: 50px;
|
|
||||||
align-items: center;
|
|
||||||
font-size: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre {
|
|
||||||
width: 100%;
|
|
||||||
border: 1px dashed #000;
|
|
||||||
padding: 10px;
|
|
||||||
overflow-x: auto;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
|
||||||
<div>
|
|
||||||
<h1>DEPRECATED My laptop</h1>
|
|
||||||
<p>see <a href='/html/blog/posts/new-laptop.html'>blog post</a>
|
|
||||||
<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 baring the mainboard, there is no external difference between my W530 and T530 because I just yoinked all the parts from the W530.<br>
|
|
||||||
my-laptop.html was last modified on $[stat -c %y ./html/my-laptop.html | head -c 10].<br>
|
|
||||||
</p><hr>
|
|
||||||
<image-column-container>
|
|
||||||
<image-container style='min-width: 33%'>
|
|
||||||
<flex-column style='max-width: 100%'>
|
|
||||||
<captioned-image>
|
|
||||||
<img src="/files/laptop-keyboard.png" alt="photograph of my laptops keyboard, which is blank because I sanded it.">
|
|
||||||
<p>photograph of my laptops keyboard, which is blank because I sanded it.</p>
|
|
||||||
</captioned-image>
|
|
||||||
<captioned-image>
|
|
||||||
<img src="/files/laptop-radio.jpg" alt="The software defined radio that goes in my laptop's disc drive.">
|
|
||||||
<p>The software defined radio that goes in my laptop's disc drive.</p>
|
|
||||||
</captioned-image>
|
|
||||||
<captioned-image>
|
|
||||||
<img src="/files/keybinds_graph.png" alt="Graph of my keybindings (good luck).">
|
|
||||||
<p>Graph of my keybinds (good luck).</p>
|
|
||||||
</captioned-image>
|
|
||||||
<captioned-image>
|
|
||||||
<img src="/files/laptop-charger-barrel.jpg" alt="charger bodge.">
|
|
||||||
<p>charger bodge.</p>
|
|
||||||
</captioned-image>
|
|
||||||
<flex-column>
|
|
||||||
</image-container>
|
|
||||||
<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></p>
|
|
||||||
<h3>Hardware modifications I have made to my laptop:</h3>
|
|
||||||
<p>
|
<p>
|
||||||
<ul>
|
Currently, I am using a T530 that has been heavily modified.
|
||||||
<li>Installed an older model's keyboard</li>
|
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.
|
||||||
<li>Sanded the keyboard such that it is blank.</li>
|
I have preordered a Framework 16 because I am the definition of their target audience.
|
||||||
<li>Upgraded most of its parts.</li>
|
Since W530s and T530s are basically identical baring the mainboard, there is no external difference between my W530 and T530 because I just yoinked all the parts from the W530.<br>
|
||||||
<li>Put an SDR in its disc drive</li>
|
my-laptop.html was last modified on $[stat -c %y ./html/my-laptop.html | head -c 10].<br>
|
||||||
<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.</li>
|
|
||||||
</ul>
|
|
||||||
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>
|
|
||||||
</p>
|
</p>
|
||||||
<captioned-image style='max-width: 100%'>
|
</section>
|
||||||
<img src='/files/laptop-xkb-geometry.png'/><br>
|
<section>
|
||||||
<p>my xkb geometry file compiled to a pdf</p>
|
<image-column-container>
|
||||||
</captioned-image>
|
<image-container style='min-width: 33%'>
|
||||||
<p>
|
<flex-column style='max-width: 100%'>
|
||||||
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.
|
<div class=captioned-image>
|
||||||
Additionally, when mode_switch is pressed while an alphabetic key is pressed, it types a greek letter instead.
|
<img src="/files/laptop-keyboard.png" alt="photograph of my laptops keyboard, which is blank because I sanded it.">
|
||||||
</p>
|
<p>photograph of my laptops keyboard, which is blank because I sanded it.</p>
|
||||||
<p>
|
</div>
|
||||||
I run artix (for the anti systemd meme), though upon getting my framework I intend to switch to gentoo.
|
<div class=captioned-image>
|
||||||
I use i3 as my window manager with a somewhat cursed script to programatically generate it's config from a yaml file.
|
<img src="/files/laptop-radio.jpg" alt="The software defined radio that goes in my laptop's disc drive.">
|
||||||
This script is vaguely necessary because <ul>
|
<p>The software defined radio that goes in my laptop's disc drive.</p>
|
||||||
<li> I wanted a (programatically generated) graph of all my keybinds as leaf nodes with different modes as trunk nodes and individual keys as edges </li>
|
</div>
|
||||||
<li> I wanted to easily nest an arbitrarily large number of modes without it being a hassle </li>
|
<div class=captioned-image>
|
||||||
</ul><br>
|
<img src="/files/keybinds_graph.png" alt="Graph of my keybindings (good luck).">
|
||||||
an example of the function of this script is something like<br><br>
|
<p>Graph of my keybinds (good luck).</p>
|
||||||
<div class="code-container">
|
</div>
|
||||||
<div class="io-container">
|
<div class=captioned-image>
|
||||||
<h3>Input (yaml):</h3>
|
<img src="/files/laptop-charger-barrel.jpg" alt="charger bodge.">
|
||||||
<pre><code>
|
<p>charger bodge.</p>
|
||||||
|
</div>
|
||||||
|
<flex-column>
|
||||||
|
</image-container>
|
||||||
|
<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></p>
|
||||||
|
<h3>Hardware modifications I have made to my laptop:</h3>
|
||||||
|
<p>
|
||||||
|
<ul>
|
||||||
|
<li>Installed an older model's keyboard</li>
|
||||||
|
<li>Sanded the keyboard such that it is blank.</li>
|
||||||
|
<li>Upgraded most of its parts.</li>
|
||||||
|
<li>Put an SDR in its disc drive</li>
|
||||||
|
<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.</li>
|
||||||
|
</ul>
|
||||||
|
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>
|
||||||
|
</p>
|
||||||
|
<div class=captioned-image style='max-width: 100%'>
|
||||||
|
<img src='/files/laptop-xkb-geometry.png'/><br>
|
||||||
|
<p>my xkb geometry file compiled to a pdf</p>
|
||||||
|
</div>
|
||||||
|
<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>
|
||||||
|
<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 programatically generate it's config from a yaml file.
|
||||||
|
This script is vaguely necessary because <ul>
|
||||||
|
<li> I wanted a (programatically generated) graph of all my keybinds as leaf nodes with different modes as trunk nodes and individual keys as edges </li>
|
||||||
|
<li> I wanted to easily nest an arbitrarily large number of modes without it being a hassle </li>
|
||||||
|
</ul><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):</h3>
|
||||||
|
<pre><code>
|
||||||
keybinds:
|
keybinds:
|
||||||
a: !Mode
|
a: !Mode
|
||||||
name: a
|
name: a
|
||||||
@ -102,35 +82,36 @@ a: !Mode
|
|||||||
b: !Mode
|
b: !Mode
|
||||||
name: b
|
name: b
|
||||||
keybinds: ...
|
keybinds: ...
|
||||||
</code></pre>
|
</code></pre>
|
||||||
</div>
|
</div>
|
||||||
<div class="io-container">
|
<div class="io-container">
|
||||||
<h3>Output (i3config):</h3>
|
<h3>Output (i3config):</h3>
|
||||||
<pre><code>
|
<pre><code>
|
||||||
mode a {
|
mode a {
|
||||||
bindsym b mode b
|
bindsym b mode b
|
||||||
}
|
}
|
||||||
|
|
||||||
mode b {
|
mode b {
|
||||||
bindsym ... ...
|
bindsym ... ...
|
||||||
}
|
}
|
||||||
|
|
||||||
bindsym a mode a
|
bindsym a mode a
|
||||||
</code></pre>
|
</code></pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
From the yaml config, my python script can parse it either in to a (really bad) graph of keybinds (using the graphviz library or something like that) or in to a valid i3 config file.
|
From the yaml config, my python script can parse it either in to a (really bad) graph of keybinds (using the graphviz library or something like that) or in to 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.
|
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.
|
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.
|
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).
|
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>
|
</p>
|
||||||
<p>
|
<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.
|
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.
|
I find this unreasonably amusing.
|
||||||
</p>
|
</p>
|
||||||
</text-column>
|
</text-column>
|
||||||
</image-column-container>
|
</image-column-container>
|
||||||
</div>
|
</section>
|
||||||
</body>
|
</main>
|
||||||
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -4,65 +4,76 @@
|
|||||||
<style>
|
<style>
|
||||||
$[cat style.css]
|
$[cat style.css]
|
||||||
</style>
|
</style>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
||||||
<div>
|
<main>
|
||||||
<h1>What is a "natalie?"</h1>
|
<section>
|
||||||
<a href='/html/natalie-sightings.html'>natalie</a> is an entity that has been observed to be called natalie.<br>
|
<h1>What is a "natalie?"</h1>
|
||||||
it is known to be referred to as a "she" or an "it."<br>
|
<span><a href='/html/natalie-sightings.html'>natalie</a> is an entity that has been observed to be called natalie.</span>
|
||||||
it is frequently told it is "cat brained" by humans it associates with.<br>
|
it is known to be referred to as a "she" or an "it."
|
||||||
natalie-info.html was last modified on $[stat -c %y ./html/natalie-info.html | head -c 10].<hr>
|
it is frequently told it is "cat brained" by humans it associates with.
|
||||||
<h2>Timezone (this is currently broken? I don't know why. The correct time is PDT or the other one)</h2>
|
natalie-info.html was last modified on $[stat -c %y ./html/natalie-info.html | head -c 10].
|
||||||
its really quite odd, the commands run to generate this section are just date "+%Z (UTC%z)" and date +%T. When I run these in an ssh session, they give expected output, but when the server executes them, it thinks its in UTC. baffling.
|
</section>
|
||||||
Timezone I am in: $[date "+%Z (UTC%z)"]<br>
|
<section>
|
||||||
The local time as of this page being requested was: $[date +%T]<hr>
|
<h2>Timezone (this is currently broken? I don't know why. The correct time is PDT or the other one)</h2>
|
||||||
<h2>Other online presence</h2>
|
its really quite odd, the commands run to generate this section are just date "+%Z (UTC%z)" and date +%T. When I run these in an ssh session, they give expected output, but when the server executes them, it thinks its in UTC. baffling.
|
||||||
<a href='/html/discord.html'>Discord: _natalieeee_</a><br>
|
Timezone I am in: $[date "+%Z (UTC%z)"]<br>
|
||||||
Email: natalie@natalieee.net<hr>
|
The local time as of this page being requested was: $[date +%T]
|
||||||
<h2>Other things</h2>
|
</section>
|
||||||
I will probably include information about myself that is vaguely identifiable.
|
<section>
|
||||||
This is a bad idea, but I don't think anyone actually cares about messing with me enough to do anything bad with whatever information is available here.
|
<h2>Other online presence</h2>
|
||||||
I am comically bad at writing about myself, so I will disguise my shortcomings by making a list.
|
<a href='/html/discord.html'>Discord: _natalieeee_</a>
|
||||||
<ul>
|
Email: natalie@natalieee.net
|
||||||
<li>I would be a senior if I was going to hichschool. I am not going to highschool because I decided it was bad and that I would be going to college instead.</li>
|
</section>
|
||||||
<li>I really like messing with anything technical, be it computers or locks (these interests are at times problematic for my highschool, but oh well).</li>
|
<section>
|
||||||
<li>In addition to standard hackery hobbies, I am interested in machining, urban planning, public transportation (especially rail vehicles (insert joke about autism)), and languistics (this one might be covered by "standard hackery hobbies"). I also seem to enjoy overusing parenthesis.</li>
|
<h2>Other things</h2>
|
||||||
<li>The number of people I know who can use my computer is 1 (me). I have <italic>really</italic> weird keybindings and use a nonstandard keyboard layout.</li>
|
I will probably include information about myself that is vaguely identifiable.
|
||||||
<li>I own twelve lenovo thinkpads manufactured between 2010 and 2014.</li>
|
This is a bad idea, but I don't think anyone actually cares about messing with me enough to do anything bad with whatever information is available here.
|
||||||
<li><del>My laptop which I use as my main computer is a modified lenovo thinkpad T530 <a href=/html/my-laptop.html>which is pretty neat.</a> </del><a href=/html/blog/posts/new-laptop.html>refer to this</a></li>
|
I am comically bad at writing about myself, so I will disguise my shortcomings by making a list.
|
||||||
</ul>
|
<ul>
|
||||||
<hr>
|
<li>I would be a senior if I was going to hichschool. I am not going to highschool because I decided it was bad and that I would be going to college instead.</li>
|
||||||
<h2>Vaguely funny things I have done (Don't read this if you are employed by Portland public schools)</h2>
|
<li>I really like messing with anything technical, be it computers or locks (these interests are at times problematic for my highschool, but oh well).</li>
|
||||||
<ul>
|
<li>In addition to standard hackery hobbies, I am interested in machining, urban planning, public transportation (especially rail vehicles (insert joke about autism)), and languistics (this one might be covered by "standard hackery hobbies"). I also seem to enjoy overusing parenthesis.</li>
|
||||||
<li>Nearly gotten suspended for allegedly installing (The IT department genuinely said this) """Cuban malware""" on the school network. This was entirely not grounded in reality, IT is just insane. (<a href='/html/I-dont-like-IT.html'>Minor tangent</a>)</li>
|
<li>The number of people I know who can use my computer is 1 (me). I have <italic>really</italic> weird keybindings and use a nonstandard keyboard layout.</li>
|
||||||
<li>Gotten suspended for exactly one day for posting the school district's wifi password on discord (stupid, but I was bored. Also, IT was mean to me, see tangent linked above.)</li>
|
<li>I own twelve lenovo thinkpads manufactured between 2010 and 2014.</li>
|
||||||
</ul>
|
<li><del>My laptop which I use as my main computer is a modified lenovo thinkpad T530 <a href=/html/my-laptop.html>which is pretty neat.</a> </del><a href=/html/blog/posts/new-laptop.html>refer to this</a></li>
|
||||||
<hr>
|
</ul>
|
||||||
<h2>Music I listen to (you should too)</h2>
|
</section>
|
||||||
I am going to use this as a means by which I can impose music recommendations upon whoever reads this page.
|
<section>
|
||||||
According to a hacky script I wrote that tracks what songs I listen to with mpd, here are artists I like:<br>
|
<h2>Vaguely funny things I have done (Don't read this if you are employed by Portland public schools)</h2>
|
||||||
place playcount artist<br>
|
<ul>
|
||||||
1 1935 Black Dresses<br>
|
<li>Nearly gotten suspended for allegedly installing (The IT department genuinely said this) """Cuban malware""" on the school network. This was entirely not grounded in reality, IT is just insane. (<a href='/html/I-dont-like-IT.html'>Minor tangent</a>)</li>
|
||||||
2 745 Ada Rook<br>
|
<li>Gotten suspended for exactly one day for posting the school district's wifi password on discord (stupid, but I was bored. Also, IT was mean to me, see tangent linked above.)</li>
|
||||||
3 425 Angel Electronics<br>
|
</ul>
|
||||||
4 419 rook&nomie<br>
|
</section>
|
||||||
5 360 Reliqa<br>
|
<section>
|
||||||
6 282 Destroy Boys<br>
|
<h2>Music I listen to (you should too)</h2>
|
||||||
7 238 Rachel Rose Mitchell<br>
|
I am going to use this as a means by which I can impose music recommendations upon whoever reads this page.
|
||||||
8 221 Cellar Darling<br>
|
According to a hacky script I wrote that tracks what songs I listen to with mpd, here are artists I like:<br>
|
||||||
9 218 Florence + The Machine<br>
|
place playcount artist<br>
|
||||||
10 193 Spiritbox<br>
|
1 1935 Black Dresses<br>
|
||||||
11 141 Inferiority Complex<br>
|
2 745 Ada Rook<br>
|
||||||
12 111 Ignea<br>
|
3 425 Angel Electronics<br>
|
||||||
13 101 Ada Rook/ASH NERVE<br>
|
4 419 rook&nomie<br>
|
||||||
14 97 Ada Rook/Sunrise Transparence<br>
|
5 360 Reliqa<br>
|
||||||
15 80 Penelope Scott<br>
|
6 282 Destroy Boys<br>
|
||||||
16 71 Seas on the Moon/Lena Scissorhands<br>
|
7 238 Rachel Rose Mitchell<br>
|
||||||
17 61 Ada Rook/Ash Nerve/Sunrise Transparence/Stephen Spies<br>
|
8 221 Cellar Darling<br>
|
||||||
18 60 Seas on the Moon<br>
|
9 218 Florence + The Machine<br>
|
||||||
19 52 girl in red<br>
|
10 193 Spiritbox<br>
|
||||||
20 50 Cassyette<br>
|
11 141 Inferiority Complex<br>
|
||||||
</div>
|
12 111 Ignea<br>
|
||||||
|
13 101 Ada Rook/ASH NERVE<br>
|
||||||
|
14 97 Ada Rook/Sunrise Transparence<br>
|
||||||
|
15 80 Penelope Scott<br>
|
||||||
|
16 71 Seas on the Moon/Lena Scissorhands<br>
|
||||||
|
17 61 Ada Rook/Ash Nerve/Sunrise Transparence/Stephen Spies<br>
|
||||||
|
18 60 Seas on the Moon<br>
|
||||||
|
19 52 girl in red<br>
|
||||||
|
20 50 Cassyette<br>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -4,12 +4,18 @@
|
|||||||
$[cat style.css]
|
$[cat style.css]
|
||||||
</style>
|
</style>
|
||||||
<title>Natalie sightings</title>
|
<title>Natalie sightings</title>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
||||||
<h1>Natalie Sightings</h1>
|
<main>
|
||||||
<p>They are reasonably rare. <br>These photographs are uneditted, my various cameras are just fucked up. Ignore the annoying aspect ratio.</p>
|
<section>
|
||||||
<hr>
|
<h1>Natalie Sightings</h1>
|
||||||
<flex-grid>$[for file in files/natalie-sightings/*; do echo "<flex-grid-item><img src=\"/$file\" width=\"250\"/></flex-grid-item>"; done]</flex-grid>
|
<p>They are reasonably rare. <br>These photographs are uneditted, my various cameras are just fucked up. Ignore the annoying aspect ratio.</p>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<flex-grid>$[for file in files/natalie-sightings/*; do echo "<flex-grid-item><img src=\"/$file\" width=\"250\"/></flex-grid-item>"; done]</flex-grid>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -3,42 +3,17 @@
|
|||||||
<title>Natalie information</title>
|
<title>Natalie information</title>
|
||||||
<style>
|
<style>
|
||||||
$[cat style.css]
|
$[cat style.css]
|
||||||
details {
|
|
||||||
border: 2px dashed #ccc;
|
|
||||||
padding: 10px;
|
|
||||||
width: 90%;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
summary {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
summary::-webkit-details-marker {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
div {
|
|
||||||
position: relative;
|
|
||||||
padding-top: 30px;
|
|
||||||
padding-bottom: 50%;
|
|
||||||
height: fit-content;
|
|
||||||
}
|
|
||||||
|
|
||||||
div iframe {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
||||||
<h1>arbitrary thoughts generated by natalie</h1>
|
<main>
|
||||||
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.
|
<section>
|
||||||
<hr>
|
<h1>arbitrary thoughts generated by natalie</h1>
|
||||||
$[stat -c "%W %n" ./html/thoughts/* | sort -n --reverse | cut -d ' ' -f2- | while read -r file; do echo "<details><summary>$(stat -c'%w' $file | cut -d '.' -f1): $(grep '^<!-- TITLE:' $file | sed 's/^<!-- TITLE: //; s/-->$//')</summary><div><iframe src=.$file></iframe></div></details>"; done]
|
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.
|
||||||
|
</section>
|
||||||
|
$[stat -c "%W %n" ./html/thoughts/* | sort -n --reverse | cut -d ' ' -f2- | while read -r file; do echo "<section><details><summary>$(stat -c'%w' $file | cut -d '.' -f1): $(grep '^<!-- TITLE:' $file | sed 's/^<!-- TITLE: //; s/-->$//')</summary><div>$(python -c "import utils; print(utils.parse_file('$file'))")</details></section>"; done]
|
||||||
|
</main>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -4,36 +4,44 @@
|
|||||||
<style>
|
<style>
|
||||||
$[cat style.css]
|
$[cat style.css]
|
||||||
</style>
|
</style>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\$PREV_URL\$/"{prev}"/']
|
||||||
<h1>This website runs on a big server now.</h1>
|
<main>
|
||||||
<p>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 them, apparently).</p>
|
<section>
|
||||||
<hr>
|
<h1>This website runs on a big server now.</h1>
|
||||||
<image-column-container>
|
<p>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 them, apparently).</p>
|
||||||
<image-container>
|
</section>
|
||||||
<captioned-image>
|
<section>
|
||||||
<img src="/files/natalie-holding-server.png" alt="me holding a server">
|
<image-column-container>
|
||||||
<p>The server in question.</p>
|
<image-container>
|
||||||
</captioned-image>
|
<flex-column>
|
||||||
<image-container>
|
<div class=captioned-image>
|
||||||
<text-column>
|
<img src="/files/natalie-holding-server.png" alt="me holding a server">
|
||||||
<h2>Why do I have a server from my schools basement?</h2>
|
<p>The server in question.</p>
|
||||||
<p>
|
</div>
|
||||||
My school is currently at a temporary campus while our regular campus is being renovated.
|
</flex-column>
|
||||||
I hope this means there will be less lead in the water when they are done, but given how the district is, who knows.
|
</image-container>
|
||||||
The current campus is notably smaller than the regular campus, thus a large amount of things are in storage.
|
<text-column>
|
||||||
The man who is in charge of the storage and moving stored items back to the new campus does not like moving items.
|
<h2>Why do I have a server from my schools basement?</h2>
|
||||||
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.
|
<p>
|
||||||
</p>
|
My school is currently at a temporary campus while our regular campus is being renovated.
|
||||||
<h2>It's actually kind of horrible that I have this server.</h2>
|
I hope this means there will be less lead in the water when they are done, but given how the district is, who knows.
|
||||||
<p>
|
The current campus is notably smaller than the regular campus, thus a large amount of things are in storage.
|
||||||
This server used to be part of the district's network infrastructure.
|
The man who is in charge of the storage and moving stored items back to the new campus does not like moving items.
|
||||||
When I got it, it had an unencrypted raid array on the disks that contained district information.
|
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.
|
||||||
It should not have been stored like this, and I definitely should not have been allowed to take it.
|
</p>
|
||||||
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.
|
<h2>It's actually kind of horrible that I have this server.</h2>
|
||||||
</p>
|
<p>
|
||||||
</text-column>
|
This server used to be part of the district's network infrastructure.
|
||||||
</image-column-container>
|
When I 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.
|
||||||
|
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.
|
||||||
|
</p>
|
||||||
|
</text-column>
|
||||||
|
</image-column-container>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -5,11 +5,16 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\\$PREV_URL\\$/".."/']
|
$[python3 -c 'import utils; print(utils.parse_file("html/header.html"))' | sed 's/\\$PREV_URL\\$/".."/']
|
||||||
<h1>Stats! Data! Wow!</h1>
|
<main>
|
||||||
Boring information about me and my computers, delivered right to your web browser (or terminal)!<br>
|
<section>
|
||||||
Why collect information about your users when your users could collect information about you?
|
<h1>Stats! Data! Wow!</h1>
|
||||||
<hr>
|
Boring information about me and my computers, delivered right to your web browser (or terminal)!<br>
|
||||||
<h2>Currently available information:</h2>
|
Why collect information about your users when your users could collect information about you?
|
||||||
$[for line in $(cat main.py | grep Route -A1 | grep '/stats/' | sed "s/'//g; s/,//g"); do echo "$(make-link $line)<br>"; done]
|
</section>
|
||||||
|
<section>
|
||||||
|
<h2>Currently available information:</h2>
|
||||||
|
$[for line in $(cat main.py | grep Route -A1 | grep '/stats/' | sed "s/'//g; s/,//g"); do echo "$(make-link $line)<br>"; done]
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
<body>
|
<body>
|
||||||
</html>
|
</html>
|
||||||
|
273
style.css
273
style.css
@ -8,71 +8,86 @@
|
|||||||
src: url('/font/MapleMonoItalic.ttf') format('truetype');
|
src: url('/font/MapleMonoItalic.ttf') format('truetype');
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 615px) {
|
/* @media (max-width: 615px) { */
|
||||||
body {
|
/* body { */
|
||||||
margin: 0;
|
/* margin: 0; */
|
||||||
}
|
/* } */
|
||||||
|
|
||||||
header {
|
/* header { */
|
||||||
display: block;
|
/* display: block; */
|
||||||
|
/* } */
|
||||||
|
/* } */
|
||||||
|
|
||||||
|
/* @media (max-width: 615px) { */
|
||||||
|
/* body { */
|
||||||
|
/* margin: 0; */
|
||||||
|
/* } */
|
||||||
|
|
||||||
|
/* header { */
|
||||||
|
/* display: none; */
|
||||||
|
/* } */
|
||||||
|
/* } */
|
||||||
|
|
||||||
|
/* @media (min-width: 730px) and (max-width: 799px) { */
|
||||||
|
/* body { */
|
||||||
|
/* margin: 0 0; */
|
||||||
|
/* min-width: 100% */
|
||||||
|
/* } */
|
||||||
|
|
||||||
|
/* header { */
|
||||||
|
/* display: flex; */
|
||||||
|
/* } */
|
||||||
|
/* } */
|
||||||
|
|
||||||
|
/* @media (min-width: 1000px) and (max-width: 1299px) { */
|
||||||
|
/* body { */
|
||||||
|
/* margin: 0 10%; */
|
||||||
|
/* min-width: 80% */
|
||||||
|
/* } */
|
||||||
|
|
||||||
|
/* li > p { */
|
||||||
|
/* width: 70%; */
|
||||||
|
/* } */
|
||||||
|
|
||||||
|
/* header { */
|
||||||
|
/* display: flex; */
|
||||||
|
/* } */
|
||||||
|
/* } */
|
||||||
|
|
||||||
|
/* @media (min-width: 1300px) { */
|
||||||
|
/* body { */
|
||||||
|
/* margin: 0 20%; */
|
||||||
|
/* min-width: 60%; */
|
||||||
|
/* } */
|
||||||
|
|
||||||
|
/* li > p { */
|
||||||
|
/* width: 60%; */
|
||||||
|
/* } */
|
||||||
|
|
||||||
|
/* header { */
|
||||||
|
/* display: flex; */
|
||||||
|
/* } */
|
||||||
|
/* } */
|
||||||
|
|
||||||
|
@media (max-width: 1400px) {
|
||||||
|
body {
|
||||||
|
margin: 0%;
|
||||||
|
width: 100%
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 615px) {
|
@media (min-width: 1400px) {
|
||||||
body {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
header {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (min-width: 730px) and (max-width: 799px) {
|
|
||||||
body {
|
|
||||||
margin: 0 0;
|
|
||||||
min-width: 100%
|
|
||||||
}
|
|
||||||
|
|
||||||
header {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (min-width: 1000px) and (max-width: 1299px) {
|
|
||||||
body {
|
|
||||||
margin: 0 10%;
|
|
||||||
min-width: 80%
|
|
||||||
}
|
|
||||||
|
|
||||||
li > p {
|
|
||||||
width: 70%;
|
|
||||||
}
|
|
||||||
|
|
||||||
header {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (min-width: 1300px) {
|
|
||||||
body {
|
body {
|
||||||
margin: 0 20%;
|
margin: 0 20%;
|
||||||
min-width: 60%;
|
|
||||||
}
|
|
||||||
|
|
||||||
li > p {
|
|
||||||
width: 60%;
|
width: 60%;
|
||||||
}
|
}
|
||||||
|
|
||||||
header {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
--bg: #F2F4F8;
|
--bg: #F2F4F8;
|
||||||
--alt-bg: #dde1e6;
|
--alt-bg: #dde1e6;
|
||||||
--fg: #161616;
|
--fg: #161616;
|
||||||
|
--hl: #33b1ff;
|
||||||
--link: #0f62fe;
|
--link: #0f62fe;
|
||||||
--visited-link: #673ab7;
|
--visited-link: #673ab7;
|
||||||
--highlight: #0f62fe;
|
--highlight: #0f62fe;
|
||||||
@ -90,10 +105,11 @@
|
|||||||
--bg: #161616;
|
--bg: #161616;
|
||||||
--alt-bg: #262626;
|
--alt-bg: #262626;
|
||||||
--fg: #f2f4f8;
|
--fg: #f2f4f8;
|
||||||
|
--hl: #0f62fe;
|
||||||
--link: #33b1ff;
|
--link: #33b1ff;
|
||||||
--visited-link: #be95ff;
|
--visited-link: #be95ff;
|
||||||
--highlight: #33b1ff;
|
--highlight: #33b1ff;
|
||||||
--gray: #393939;
|
--gray: #202020;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -106,26 +122,46 @@ body {
|
|||||||
overflow: auto;
|
overflow: auto;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
overflow-wrap: break-word;
|
overflow-wrap: break-word;
|
||||||
padding: 0 10px;
|
|
||||||
padding-bottom: 10px;
|
padding-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
main {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
header {
|
header {
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
position: -webkit-sticky;
|
position: -webkit-sticky;
|
||||||
position: sticky;
|
position: sticky;
|
||||||
background-color: var(--bg);
|
background-color: var(--bg);
|
||||||
top: 0;
|
top: 0;
|
||||||
transform: translateX(-10px);
|
width: 100%;
|
||||||
display: absolute;
|
|
||||||
width: calc(100% + 20px);
|
|
||||||
z-index: 100000;
|
z-index: 100000;
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
overflow: clip;
|
||||||
|
|
||||||
h1 {
|
> nav {
|
||||||
background: var(--bg);
|
border-bottom: 1px solid var(--fg);
|
||||||
padding-left: 10px;
|
width: 100%;
|
||||||
display: inline;
|
|
||||||
font-size: 26px;
|
> ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
display: flex;
|
||||||
|
align-items: baseline;
|
||||||
|
justify-content: flex-start;
|
||||||
|
list-style-type: none;
|
||||||
|
|
||||||
|
> li {
|
||||||
|
padding: 10px;
|
||||||
|
|
||||||
|
> h1 {
|
||||||
|
display: inline
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,6 +171,66 @@ header {
|
|||||||
text-wrap: wrap;
|
text-wrap: wrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
form {
|
||||||
|
background: var(--alt-bg);
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
width: clamp(300px, 500px, 50%);
|
||||||
|
padding: 20px;
|
||||||
|
margin: 15px 0;
|
||||||
|
box-shadow: 10px 10px var(--gray);
|
||||||
|
|
||||||
|
> button {
|
||||||
|
margin: 10px;
|
||||||
|
padding: 10px;
|
||||||
|
border: none;
|
||||||
|
color: var(--fg);
|
||||||
|
background: var(--bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
> button:hover {
|
||||||
|
background: var(--hl);
|
||||||
|
}
|
||||||
|
|
||||||
|
> input {
|
||||||
|
color: var(--fg);
|
||||||
|
margin: 10px;
|
||||||
|
border: none;
|
||||||
|
background: var(--bg)
|
||||||
|
}
|
||||||
|
|
||||||
|
> input:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
section {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
background: var(--alt-bg);
|
||||||
|
box-shadow: 10px 10px var(--gray);
|
||||||
|
margin: 15px 30px;
|
||||||
|
padding: 20px;
|
||||||
|
/* border-bottom: 1px solid var(--fg); */
|
||||||
|
|
||||||
|
> p {
|
||||||
|
margin: 5px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
> h1, h2, h3 {
|
||||||
|
margin: 10px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ignore-section {
|
||||||
|
background: var(--bg);
|
||||||
|
box-shadow: none;
|
||||||
|
margin: none;
|
||||||
|
padding: 5px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
table {
|
table {
|
||||||
width: auto;
|
width: auto;
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
@ -187,6 +283,19 @@ img {
|
|||||||
height: auto;
|
height: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
summary {
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post {
|
||||||
|
background: var(--alt-bg);
|
||||||
|
box-shadow: 10px 10px var(--gray);
|
||||||
|
margin: 30px;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
::-webkit-scrollbar {
|
::-webkit-scrollbar {
|
||||||
width: 0px;
|
width: 0px;
|
||||||
height: 0px;
|
height: 0px;
|
||||||
@ -197,7 +306,14 @@ img {
|
|||||||
}
|
}
|
||||||
|
|
||||||
code, pre {
|
code, pre {
|
||||||
background: var(--alt-bg)
|
background: var(--bg);
|
||||||
|
margin: 10px;
|
||||||
|
padding: 5px;
|
||||||
|
overflow: clip;
|
||||||
|
}
|
||||||
|
|
||||||
|
xmp {
|
||||||
|
margin: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
@ -212,28 +328,27 @@ a:visited {
|
|||||||
background: var(--highlight)
|
background: var(--highlight)
|
||||||
}
|
}
|
||||||
|
|
||||||
captioned-image {
|
.captioned-image {
|
||||||
max-width: 33%;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
justify-content: flex-start;
|
||||||
|
max-width: 100%;
|
||||||
|
background: var(--bg);
|
||||||
|
margin-bottom: 15px;
|
||||||
|
margin-right: 10px;
|
||||||
|
|
||||||
> img {
|
> img {
|
||||||
height: auto;
|
height: auto;
|
||||||
}
|
padding: 10px;
|
||||||
|
|
||||||
> * {
|
|
||||||
width: 100%;
|
|
||||||
border: 5px solid var(--alt-bg);
|
|
||||||
background: var(--alt-bg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
> p {
|
> p {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
position: relative;
|
padding: 5px;
|
||||||
top: -20px;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
margin-right: 15px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
image-column-container {
|
image-column-container {
|
||||||
@ -251,6 +366,7 @@ image-container {
|
|||||||
}
|
}
|
||||||
|
|
||||||
flex-column {
|
flex-column {
|
||||||
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
@ -264,6 +380,10 @@ image-column img {
|
|||||||
height: auto;
|
height: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
text-column {
|
||||||
|
max-width: 66%
|
||||||
|
}
|
||||||
|
|
||||||
flex-grid {
|
flex-grid {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
@ -284,7 +404,8 @@ flex-grid-item > img {
|
|||||||
|
|
||||||
@media (max-width: 700px) {
|
@media (max-width: 700px) {
|
||||||
image-container {display: inline-block; min-width: 100% !important}
|
image-container {display: inline-block; min-width: 100% !important}
|
||||||
captioned-image {min-width: 100%; margin-right: 0;}
|
div.captioned-image {min-width: 100%; margin-right: 0;}
|
||||||
text-column {display: inline-block}
|
text-column {display: inline-block; max-width: 100%;}
|
||||||
image-column-container {flex-direction: column;}
|
image-column-container {flex-direction: column;}
|
||||||
|
header > nav > ul > li > h1 { display: none};
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user