Compare commits

..

17 Commits

Author SHA1 Message Date
71afe1819d add zim entry 2025-08-19 18:55:37 -07:00
2562ca508a maps 2025-08-17 12:57:21 -07:00
e4e3698310 maps 2025-08-17 12:32:45 -07:00
11689334f6 add blank targets for maps 2025-08-17 12:12:30 -07:00
e54180b481 mention maps 2025-08-17 11:57:12 -07:00
165579bed6 add images n stuff 2025-08-14 20:03:04 -07:00
f26ad6b276 idk if i committed yet tbh 2025-08-14 20:00:50 -07:00
ffabba137e wait oops whyd i do that 2025-08-12 21:23:12 -07:00
dc1ac7dc03 dns server no work :[ also lulu 2025-08-12 21:22:04 -07:00
51931a3e89 dns server no work :[ also lulu 2025-08-12 21:21:49 -07:00
c6eb28e5b5 idk 2025-08-11 12:31:06 -07:00
111705ccc4 finally a solution im happy with 2025-08-09 15:19:55 -07:00
7eb752dd1d add target=_blank to email and phone links 2025-08-06 15:56:50 -07:00
2f906b4b89 idk this took way too long and its not even good 2025-08-06 15:51:59 -07:00
cd93ca43ec links for contact and maybe more? 2025-08-05 09:34:55 -07:00
3d0b1b4c86 links for contact and maybe more? 2025-08-05 09:22:44 -07:00
995aa402b0 links for contact and maybe more? 2025-08-05 09:20:21 -07:00
21 changed files with 349 additions and 198 deletions

View File

@@ -1 +0,0 @@
PGRpdj4KICAgIDxpbWcKICAgICAgICBjbGFzcz0iYnVsbGV0LWltZyIKICAgICAgICBzcmM9ImRpc2NvcmQucG5nIgogICAgICAgIGFsdD0iRGlzY29yZCIKICAgIC8+QG1pbmluZ3RjdXAKPC9kaXY+CjxkaXY+CiAgICA8aW1nCiAgICAgICAgY2xhc3M9ImJ1bGxldC1pbWciCiAgICAgICAgc3JjPSJwcm90b25tYWlsLnBuZyIKICAgICAgICBhbHQ9IkRpc2NvcmQiCiAgICAvPnRlZEBtaW5pbmd0Y3VwLm1lCjwvZGl2Pgo8ZGl2PgogICAgPGltZwogICAgICAgIGNsYXNzPSJidWxsZXQtaW1nIgogICAgICAgIHNyYz0icGhvbmUud2VicCIKICAgICAgICBhbHQ9IkRpc2NvcmQiCiAgICAvPig2NTApIDUxMi05NjM1CjwvZGl2Pgo=

BIN
favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
images/lulu-perch.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 MiB

BIN
images/lulu.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
images/lulu2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
images/ted1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 MiB

BIN
images/ted2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 MiB

BIN
images/ted3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 MiB

View File

@@ -1,178 +1,160 @@
<!doctype html> <!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>MiningTcup</title> <title>MiningTcup</title>
<link rel="stylesheet" href="style.css" /> <link rel="stylesheet" href="style.css" />
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
<link rel="dns-prefetch" href="https://git.miningtcup.me/" /> <link rel="dns-prefetch" href="https://git.miningtcup.me/" />
<link rel="dns-prefetch" href="https://mozhi.miningtcup.me/" /> <link rel="dns-prefetch" href="https://mozhi.miningtcup.me/" />
<link rel="dns-prefetch" href="https://archz.miningtcup.me/" /> <link rel="dns-prefetch" href="https://arch.miningtcup.me/" />
<link rel="dns-prefetch" href="https://archlinux.org/" /> <link rel="dns-prefetch" href="https://archlinux.org/" />
<link rel="dns-prefetch" href="https://hypr.land/" /> <link rel="dns-prefetch" href="https://hypr.land/" />
<link rel="preload" href="discord.png" as="image" type="image/png" /> <link rel="dns-prefetch" href="https://openfreemap.org/" />
<link rel="preload" href="protonmail.png" as="image" type="image/png" /> </head>
<link rel="preload" href="phone.webp" as="image" type="image/webp" /> <body>
</head> <div class="centerer">
<body> <div id="content">
<div class="centerer"> <div id="title-1">
<div id="content"> <div class="h1-container">
<div id="title-1"> <h1>Ted Pier<span class="subtitle">a.k.a. MiningTcup</span></h1>
<h1> </div>
Ted Pier<span class="subtitle" <a href="lulu.html"
>&nbsp;a.k.a. MiningTcup</span ><img src="images/lulu.webp" alt="Lulu the dog"
> /></a>
</h1>
</div>
<hr />
<section>
<h2>Things I've Done</h2>
<h3><a target="_blank" href="/youclient">YouClient</a></h3>
<p>
My middle school gave each student an incredibly weak
Chromebook infested with blockers and spyware, and
didn't allow us to bring our own computers. Since one of
my strongest skills at the time was web dev, I made an
alternative YouTube client. The entire thing is a single
html file, making it easy to distribute and run.
Advantages over using the official YouTube website are
faster loading, no ads, tab customization, anti-unload,
no browser history, and no spyware spying.
</p>
<h3>
<a
target="_blank"
href="https://git.miningtcup.me/MiningTcup/dotfiles/"
>Linux</a
>
</h3>
<p>
The kernel is the core of the operating system. Linux is
an alternative operating system kernel, similar to the
Windows or MacOS kernels. It can run on nearly any
device (including PCs and Macs), and is used by Android.
One of my favorite things to do is mess with
configuration files on my
<a target="_blank" href="https://archlinux.org"
>Arch Linux</a
>
+
<a target="_blank" href="https://hypr.land">Hyprland</a>
system. Over the last more than a year, I've settled on
an (in my opinion) nearly <i>perfect</i> configuration.
</p>
<h3>
<a
target="_blank"
href="https://git.miningtcup.me/MiningTcup/noteserver"
>Notes</a
>
</h3>
<p>
I'd always wanted to use a notes app, but I never liked
any of the options. Instead of paying with my
information, time, or money for one that someone else
made, I decided to make my own. I wrote the server in
Go, the language which I believe is best for anything to
do with servers, and the app in Android Studio using
Kotlin. After completing the server, I accidentally
deleted the source code, prompting me to recode it. It's
finished now, and you can view the most likely terrible
source code for the server
<a
target="_blank"
href="https://git.miningtcup.me/MiningTcup/noteserver"
>here</a
>. Although I don't plan on giving out the source code
for the app because it's so terrible, you can download
the APK file <a download href="notes.apk">here</a>.
</p>
</section>
<hr />
<section>
<h2>Services I Run</h2>
<h3>
<a
target="_blank"
href="https://git.miningtcup.me/MiningTcup/website"
>Static Webserver</a
>
</h3>
<p>
That's what you're using right now- my website! It's a
classic Nginx webserver. Notice how fast it loaded? My
website is written without any libraries, tracking, or
external fonts because ew, bloat.
</p>
<h3>DNS Servers</h3>
<p>
Back in middle school, some friends and I found a way to
disable the school Chromebook's spyware. While proxies
were disabled and vpns (almost) impossible to set up, we
were free to change the DNS servers of any network
except(?) the schools. This gave us the power to block
any domain we wanted, including the domains which would
load blocklists or send away all our data. The plain DNS
server is run using BIND 9.
</p>
<div>
Plain DNS: <strong>99.31.208.235:53</strong>
<br />
DNS over HTTPS:
<strong>https://dns.miningtcup.me/dns-query</strong>
</div>
<h3>
<a target="_blank" href="https://git.miningtcup.me/"
>Git Server</a
>
</h3>
<p>
GitHub is slow, annoying, and trains LLMs on everything
you upload. My Git server is <i>very</i> fast (for me,
at least), annoyance-free, and <i>doesn't</i> train LLMs
on your work without asking.
</p>
<h3>
<a target="_blank" href="https://mozhi.miningtcup.me/"
>Mozhi Server</a
>
</h3>
<p>
Mozhi is a proxy for several translators, used by Crow
Translate by KDE.
</p>
<h3>
<a target="_blank" href="https://arch.miningtcup.me/"
>Arch Linux Mirror</a
>
</h3>
<p>
Having my own Arch Linux mirror means my updates will be
just about instant.
</p>
</section>
<hr />
<section>
<h2>Contact Me</h2>
<p class="margin-8px-top">
I'm sort of chronically online. Your best chance of
quick contact is a phone call, but Discord, email, and
text work too.
</p>
<div id="contact-info-container" class="cover relative">
<strong
>JavaScript is required to load contact
info.</strong
>
<div id="click-to-reveal-prompt">
click to reveal contact info
</div>
</div>
</section>
<hr />
</div>
</div> </div>
<script src="script.js" defer></script> <hr />
</body> <section>
<h2>Things I've Done</h2>
<a target="_blank" href="/youclient"><h3>YouClient</h3></a>
<p>
My middle school gave each student an incredibly weak Chromebook
infested with blockers and spyware, and didn't allow us to bring our
own computers. Since one of my strongest skills at the time was web
dev, I made an alternative YouTube client. The entire thing is a
single html file, making it easy to distribute and run. Advantages
over using the official YouTube website are faster loading, no ads,
tab customization, anti-unload, no browser history, and no spyware
spying.
</p>
<a
target="_blank"
href="https://git.miningtcup.me/MiningTcup/dotfiles/"
>
<h3>Linux</h3></a
>
<p>
The kernel is the core of the operating system. Linux is an
alternative operating system kernel, similar to the Windows or MacOS
kernels. It can run on nearly any device (including PCs and Macs),
and is used by Android. One of my favorite things to do is mess with
configuration files on my
<a target="_blank" href="https://archlinux.org">Arch Linux</a>
+
<a target="_blank" href="https://hypr.land">Hyprland</a>
system. Over the last more than a year, I've settled on an (in my
opinion) nearly <i>perfect</i> configuration.
</p>
<a
target="_blank"
href="https://git.miningtcup.me/MiningTcup/noteserver"
><h3>Notes</h3></a
>
<p>
I'd always wanted to use a notes app, but I never liked any of the
options. Instead of paying with my information, time, or money for
one that someone else made, I decided to make my own. I wrote the
server in Go, the language which I believe is best for anything to
do with servers, and the app in Android Studio using Kotlin. After
completing the server, I accidentally deleted the source code,
prompting me to recode it. It's finished now, and you can view the
most likely terrible source code for the server
<a
target="_blank"
href="https://git.miningtcup.me/MiningTcup/noteserver"
>here</a
>. Although I don't plan on giving out the source code for the app
because it's so terrible, you can download the APK file
<a download href="notes.apk">here</a>.
</p>
</section>
<hr />
<section>
<h2>Services I Run</h2>
<a
target="_blank"
href="https://git.miningtcup.me/MiningTcup/website"
>
<h3>Static Webserver</h3></a
>
<p>
That's what you're using right now- my website! It's a classic Nginx
webserver. Notice how fast it loaded? That's what happens when a
website is written without any libraries, tracking, or external
fonts. This also includes a frontend for accessing the
<a target="_blank" href="https://openfreemap.org/">OpenFreeMap</a>
public instance. You can access that
<a target="_blank" href="/maps">here</a>.
</p>
<h3>DNS Servers</h3>
<p>
Back in middle school, some friends and I found a way to disable the
school Chromebook's spyware. While proxies were disabled and vpns
(almost) impossible to set up, we were free to change the DNS
servers of any network except(?) the schools. This gave us the power
to block any domain we wanted, including the domains which would
load blocklists or send away all our data. The plain DNS server is
run using BIND 9.
</p>
<a target="_blank" href="https://git.miningtcup.me/">
<h3>Git Server</h3></a
>
<p>
GitHub is slow, annoying, and trains LLMs on everything you upload.
My Git server is <i>very</i> fast (for me, at least),
annoyance-free, and <i>doesn't</i> train LLMs on your work without
asking.
</p>
<a target="_blank" href="https://zim.miningtcup.me">
<h3>Kiwix Server</h3>
</a>
<p>
Kiwix provides offline browsing of websites, including Wikipedia and
DevDocs, serving access to resources in an internet outage or while
travelling.
</p>
<a target="_blank" href="https://mozhi.miningtcup.me/">
<h3>Mozhi Server</h3></a
>
<p>
Mozhi is a proxy for several translators, used by Crow Translate by
KDE.
</p>
<a target="_blank" href="https://arch.miningtcup.me/">
<h3>Arch Linux Mirror</h3></a
>
<p>
Having my own Arch Linux mirror means my updates will be just about
instant.
</p>
</section>
<hr />
<section>
<h2>Contact Me</h2>
<p class="margin-8px-top">
I'm sort of chronically online. Your best chance of quick contact is
a phone call, but Discord, email, and text work too.
</p>
<div id="contact-info-container" class="cover relative">
<strong>JavaScript is required to load contact info.</strong>
<div id="click-to-reveal-prompt">click to reveal contact info</div>
</div>
</section>
<hr />
</div>
</div>
<script src="script.js" defer></script>
</body>
</html> </html>

47
lulu.html Normal file
View File

@@ -0,0 +1,47 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>MiningTcup</title>
<link rel="stylesheet" href="style.css" />
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
</head>
<body>
<div class="centerer">
<div id="content">
<div id="title-1">
<div class="h1-container">
<h1>Lulu Pier<span class="subtitle">&nbsp;a.k.a. Doggo</span></h1>
</div>
<a href="index.html"><img alt="Ted" id="title-img" /></a>
</div>
<hr />
<p>
My favorite thing to do is chase tennis balls in the back yard.
Sometimes I even catch them mid-air! Close runner-ups are running
around at the park, going on walks, and greeting my people when they
come home.
</p>
<img class="media" src="images/lulu2.jpg" alt="Happy Lulu" />
<p>
All that running is tiring! After a long time outside, I'll go to my
perch atop the couch and pant.
</p>
<img
class="media"
src="images/lulu-perch.jpg"
alt="Lulu perched upon the couch"
/>
<p>
Gotta clean off after a long day's work. I'll just use this here
towel...
</p>
<video class="media" controls src="media/lulu-roll.mp4">
Lulu rolling around
</video>
</div>
</div>
<script src="lulu.js"></script>
</body>
</html>

7
lulu.js Normal file
View File

@@ -0,0 +1,7 @@
const $ = (id) => document.getElementById(id);
$("title-img").src = `images/ted${Math.ceil(Math.random() * 3)}.jpg`;
document.querySelectorAll("img.media").forEach((item) => {
item.addEventListener("click", () => {
item.requestFullscreen();
});
});

BIN
lulu.webp

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

26
maps/index.html Normal file
View File

@@ -0,0 +1,26 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Maps</title>
<script src="maplibre-gl.js"></script>
<link href="maplibre-gl.css" rel="stylesheet" />
<style>
body {
margin: 0;
}
</style>
</head>
<body>
<div id="map" style="width: 100vw; height: 100vh"></div>
<script>
const map = new maplibregl.Map({
style: "https://tiles.openfreemap.org/styles/liberty",
center: [-122.159665, 37.444143],
zoom: 9.5,
container: "map",
});
</script>
</body>
</html>

1
maps/maplibre-gl.css Normal file

File diff suppressed because one or more lines are too long

59
maps/maplibre-gl.js Normal file

File diff suppressed because one or more lines are too long

BIN
media/lulu-roll.mp4 Normal file

Binary file not shown.

View File

@@ -1,14 +1,14 @@
const $ = (id) => document.getElementById(id); const $ = (id) => document.getElementById(id);
const infoContainer = $("contact-info-container"); const infoContainer = $("contact-info-container");
infoContainer.addEventListener("mousedown", loadContactInfo);
infoContainer.addEventListener("click", loadContactInfo); infoContainer.addEventListener("click", loadContactInfo);
function loadContactInfo() { function loadContactInfo() {
fetch("contact-info.obfuscated") infoContainer.innerHTML = atob(
.then((response) => response.text()) "PGRpdj48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly9kaXNjb3JkLmNvbS91c2Vycy84MjU0ODcxMzg5NDY1NDc3MTIiPjxpbWcgY2xhc3M9ImJ1bGxldC1pbWciIHNyYz0iaW1hZ2VzL2Rpc2NvcmQucG5nIiBhbHQ9IkRpc2NvcmQiIC8+bWluaW5ndGN1cDwvYT48L2Rpdj48ZGl2PjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJtYWlsdG86dGVkQG1pbmluZ3RjdXAubWUiPjxpbWcgY2xhc3M9ImJ1bGxldC1pbWciIHNyYz0iaW1hZ2VzL3Byb3Rvbm1haWwucG5nIiBhbHQ9IkVtYWlsIi8+dGVkQG1pbmluZ3RjdXAubWU8L2E+PC9kaXY+PGRpdj48YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0idGVsOisxLTY1MC01MTItOTYzNSI+PGltZyBjbGFzcz0iYnVsbGV0LWltZyIgc3JjPSJpbWFnZXMvcGhvbmUud2VicCIgYWx0PSJQaG9uZSIgLz4oNjUwKSA1MTItOTYzNTwvYT48L2Rpdj4=",
.then((text) => { );
infoContainer.innerHTML = atob(text); infoContainer.classList.remove("cover");
infoContainer.classList.remove("cover"); infoContainer.removeEventListener("mousedown", loadContactInfo);
infoContainer.removeEventListener("click", loadContactInfo); infoContainer.removeEventListener("click", loadContactInfo);
});
} }

View File

@@ -8,11 +8,19 @@
#content { #content {
max-width: 512px; max-width: 512px;
padding-bottom: 25vh;
}
.media {
max-width: 512px;
display: block;
margin: 16px 0;
} }
h3 { h3 {
margin-top: 16px; margin-top: 16px;
margin-bottom: 0; margin-bottom: 0;
color: light-dark(black, white);
} }
h2 { h2 {
@@ -25,6 +33,14 @@ a {
color: light-dark(black, white); color: light-dark(black, white);
} }
:not(p) > a {
text-decoration: none;
}
:not(p) > a:hover {
text-decoration: underline;
}
p { p {
margin-top: 0; margin-top: 0;
margin-bottom: 8px; margin-bottom: 8px;
@@ -43,14 +59,6 @@ p {
max-width: 256px; max-width: 256px;
} }
#contact-info-container * {
user-select: initial;
}
#content {
padding-bottom: 25vh;
}
.cover { .cover {
cursor: pointer; cursor: pointer;
background: light-dark(white, #181825); background: light-dark(white, #181825);
@@ -84,17 +92,36 @@ p {
} }
#title-1 { #title-1 {
background-image: url(lulu.webp);
background-size: 60%;
background-position: 100% 35%;
color: light-dark(white, black); color: light-dark(white, black);
overflow: hidden;
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
background: light-dark(black, whitesmoke);
} }
#title-1 * { #title-1 > .h1-container {
margin: 0;
padding: 16px; padding: 16px;
background: light-dark(black, white); background: light-dark(black, whitesmoke);
width: max-content; width: max-content;
z-index: 1;
}
#title-1 > div > h1 {
margin: 0;
}
#title-1 > a > img {
z-index: 0;
display: block;
max-height: 71px;
min-width: 100%;
object-fit: cover;
}
img {}
.disabled {
pointer-events: none;
} }
body { body {
@@ -102,14 +129,17 @@ body {
font-family: sans-serif; font-family: sans-serif;
position: relative; position: relative;
background: light-dark(whitesmoke, black); background: light-dark(whitesmoke, black);
color: light-dark(black, whitesmoke);
display: block;
} }
#click-to-reveal-prompt { #click-to-reveal-prompt {
color: grey; color: grey;
position: absolute; position: absolute;
left: 0;
right: 0;
top: 8px; top: 8px;
left: 8px; text-align: center;
font-size: 12px;
} }
section { section {