commit 64f9eff4850a8e7311413b1bf5371930d0429271 Author: bullshar-k <273740932+bullshar-k@users.noreply.github.com> Date: Wed Aug 5 20:04:57 2026 -0400 reformat repo diff --git a/about/index.html b/about/index.html new file mode 100644 index 0000000..4c14388 --- /dev/null +++ b/about/index.html @@ -0,0 +1,233 @@ + + + + + + + About - bullshark369.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+ +
+

About

+ +
+ +
+
+

Me

+

Career

+

I am a network engineer and will not disclose specifics. I do a lot of LAN work and network architecture as opposed to the more usual help desk, service deployment, +or network maintenance.

+

I do intend to switch fields of work and do cloud or network engineering for a different company within the future.

+

Education

+

I currently am in college for cloud and network engineering. My current certs include A+, ITIL 4, and LPI 010. However, I have 3 CompTIA certs in my degree and plan on getting +my CCNA, terraforge associate, and AWS SAA-C03.

+

Experience

+

Well obviously Hugo, Caddy, vps management, Linux, git, HTML, CSS, and SSH. That is everything I needed to make this website.

+

However I do have a large list of skills and softwares, as well as a large base fundamental knowledge of how these tools work. I don’t care to list them all as it feels +pointless, however, you can see all of my (recent as of writing this) experiences I thought were notable on the blog page.

+

My equipment

+

Dell Optiplex 3060

+

Specs: Intel I5-8500 | 16GB DDR4 RAM | 250GB NVMe | +4x1GiB NIC

+

Current purpose: Running OPNsense in a ProxmoxVM. Firewall & router

+

Main home server

+

Specs: Ryzen 9-5900XT | 32GB DDR4 RAM | 2TB NVMe

+

Current purpose: Hypervisor is Proxmox. Hosts adguard home for DNS a presistent IRC client.

+

Personal PC

+

Specs: Ryzen 9-9800X3D | 64GB DDR5 RAM | 2TB NVMe | RTX 3080

+

Current purpose: Almost all of my personal computer needs, network management, SSH etc. I have Arch Linux with a lightly customized KDE Plasma & BTFRS subvolumes. I would +switch to ext4 but I tried something new when installing it and it surprisingly is stable so now I’m too lazy.

+

Thinkpad T14s gen3

+

Specs: Ryzen 7 PRO 6850U | 32GB DDR5 | 512GB NVME | 14" 1920x1200 | Debian 13.6 with Cinnamon DE.

+

Currnet purpose: My main personal work, travel, and leisure laptop. I’ve never had a laptop I cared about, trusted, or valued, and this is finally that. Also it starts into +tty mode as I don’t need a DE for a lot of things.

+

Laptop 2

+

Specs: Some 11th gen I7 | 4050 | 16gb DDR4 | 512GB NVMe | Debian 13.6 Cinnamon

+

Current purpose: Isolated windows laptop because my college requires it sometimes and I don’t dual boot or do VMs for windows.

+

Laptop 3

+

Specs: Im not entirely sure, I think 8th gen I5 & 8gb DDR4 ram + 512GB NVMe. Its a dell latitude 7480

+

Current purpose: Just a burner laptop I reinstall a new OS on every time I find I need a laptop for a specific purpose. Usually for travel because it was cheap and I don’t +mind if it gets broken

+

My ideology

+

I dislike the amount of politics in software development currently. People hating good things because of the person that made it. I entirely beleive you seperate the +creation from the creator. That if someone does something bad you don’t make it worse by throwing away the good they have done. If you say “I don’t like X because it was +made by Y”, you’ve just stated you made your ability to objectively observe something benign in the pursuit of bias.

+ +
+ + + + + +
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/css/extended.css b/assets/css/extended.css new file mode 100644 index 0000000..c8bce73 --- /dev/null +++ b/assets/css/extended.css @@ -0,0 +1,98 @@ +.social-link.social-copy { + background: none; + border: none; + padding: 0; + cursor: pointer; + color: var(--on-surface); + font-size: 14px; + font-weight: 400; + font-family: 'Inter', sans-serif; + text-transform: lowercase; + transition: all 0.2s ease; +} + +.social-link.social-copy:hover { + color: var(--primary); + text-decoration: underline; +} + +.contact-social-item.social-copy { + background: var(--surface-container-low); + cursor: pointer; + text-align: left; + font: inherit; + color: inherit; + width: 100%; +} + +.contact-social-item.social-copy:hover { + background: var(--surface-container); + border-color: var(--outline); +} +:root { + --primary: #00FF00; + --on-primary: #381e72; + --primary-container: #4f378b; + --on-primary-container: #eaddff; + + --secondary: #cbc2db; + --on-secondary: #332d41; + --secondary-container: #4a4458; + --on-secondary-container: #e8def8; + + --tertiary: #efb8c8; + --on-tertiary: #492532; + --tertiary-container: #633b48; + --on-tertiary-container: #ffd8e4; + + --error: #ffb4ab; + --on-error: #690005; + --error-container: #93000a; + --on-error-container: #ffdad6; + + --surface: #000000; + --on-surface: #e6e0e9; + --on-surface-variant: #cac4d0; + + --surface-container-lowest: #262626; + --surface-container-low: #3D3D3D; + --surface-container: #4F4F4F; + --surface-container-high: #5C5C5C; + --surface-container-highest: #BABABA; + + --outline: #938f99; + --outline-variant: #49454f; +} +.footer-credit { + margin: 0 0 16px 0; + font-size: 14px; + color: var(--on-surface-variant); +} +.content h2, +.content h3, +.content h4, +.intro h2 { + color: var(--primary); +} +.content table { + width: 100%; + border-collapse: collapse; + margin: 20px 0; + font-size: 16px; + line-height: 1.5; + color: var(--on-surface); +} + +.content th, +.content td { + border: 1px solid var(--outline); + padding: 8px 12px; + text-align: left; +} + +.content th { + font-weight: 600; +} +.custom { + background: red; +} \ No newline at end of file diff --git a/assets/css/extended.min.0438791668776c6faf1c87137ece70bd83c1bb7f4459a7fb8b695193dd9b3a4a.css b/assets/css/extended.min.0438791668776c6faf1c87137ece70bd83c1bb7f4459a7fb8b695193dd9b3a4a.css new file mode 100644 index 0000000..6ffd594 --- /dev/null +++ b/assets/css/extended.min.0438791668776c6faf1c87137ece70bd83c1bb7f4459a7fb8b695193dd9b3a4a.css @@ -0,0 +1 @@ +.social-link.social-copy{background:0 0;border:none;padding:0;cursor:pointer;color:var(--on-surface);font-size:14px;font-weight:400;font-family:inter,sans-serif;text-transform:lowercase;transition:all .2s ease}.social-link.social-copy:hover{color:var(--primary);text-decoration:underline}.contact-social-item.social-copy{background:var(--surface-container-low);cursor:pointer;text-align:left;font:inherit;color:inherit;width:100%}.contact-social-item.social-copy:hover{background:var(--surface-container);border-color:var(--outline)}:root{--primary:#00FF00;--on-primary:#381e72;--primary-container:#4f378b;--on-primary-container:#eaddff;--secondary:#cbc2db;--on-secondary:#332d41;--secondary-container:#4a4458;--on-secondary-container:#e8def8;--tertiary:#efb8c8;--on-tertiary:#492532;--tertiary-container:#633b48;--on-tertiary-container:#ffd8e4;--error:#ffb4ab;--on-error:#690005;--error-container:#93000a;--on-error-container:#ffdad6;--surface:#000000;--on-surface:#e6e0e9;--on-surface-variant:#cac4d0;--surface-container-lowest:#BABABA;--surface-container-low:#BABABA;--surface-container:#BABABA;--surface-container-high:#BABABA;--surface-container-highest:#BABABA;--outline:#938f99;--outline-variant:#49454f}.content table{width:100%;border-collapse:collapse;margin:20px 0;font-size:16px;line-height:1.5;color:var(--on-surface)}.content th,.content td{border:1px solid var(--outline);padding:8px 12px;text-align:left}.content th{font-weight:600}.custom{background:red} \ No newline at end of file diff --git a/assets/css/extended.min.326f9bb923efc3d37c97445b53942002237bf1c8837a5fcee184f167ad3b82ee.css b/assets/css/extended.min.326f9bb923efc3d37c97445b53942002237bf1c8837a5fcee184f167ad3b82ee.css new file mode 100644 index 0000000..3754474 --- /dev/null +++ b/assets/css/extended.min.326f9bb923efc3d37c97445b53942002237bf1c8837a5fcee184f167ad3b82ee.css @@ -0,0 +1 @@ +.social-link.social-copy{background:0 0;border:none;padding:0;cursor:pointer;color:var(--on-surface);font-size:14px;font-weight:400;font-family:inter,sans-serif;text-transform:lowercase;transition:all .2s ease}.social-link.social-copy:hover{color:var(--primary);text-decoration:underline}.contact-social-item.social-copy{background:var(--surface-container-low);cursor:pointer;text-align:left;font:inherit;color:inherit;width:100%}.contact-social-item.social-copy:hover{background:var(--surface-container);border-color:var(--outline)}:root{--primary:#00FF00;--on-primary:#381e72;--primary-container:#4f378b;--on-primary-container:#eaddff;--secondary:#cbc2db;--on-secondary:#332d41;--secondary-container:#4a4458;--on-secondary-container:#e8def8;--tertiary:#efb8c8;--on-tertiary:#492532;--tertiary-container:#633b48;--on-tertiary-container:#ffd8e4;--error:#ffb4ab;--on-error:#690005;--error-container:#93000a;--on-error-container:#ffdad6;--surface:#000000;--on-surface:#e6e0e9;--on-surface-variant:#cac4d0;--surface-container-lowest:#000000;--surface-container-low:#1A1A1A;--surface-container:#292929;--surface-container-high:#333333;--surface-container-highest:#3B3B3B;--outline:#938f99;--outline-variant:#49454f}.custom{background:red} \ No newline at end of file diff --git a/assets/css/extended.min.43565b8c8797439c19c6554182f4b6d52e9a7fac74cb306d199b23185266e4c8.css b/assets/css/extended.min.43565b8c8797439c19c6554182f4b6d52e9a7fac74cb306d199b23185266e4c8.css new file mode 100644 index 0000000..f8edc5f --- /dev/null +++ b/assets/css/extended.min.43565b8c8797439c19c6554182f4b6d52e9a7fac74cb306d199b23185266e4c8.css @@ -0,0 +1 @@ +.social-link.social-copy{background:0 0;border:none;padding:0;cursor:pointer;color:var(--on-surface);font-size:14px;font-weight:400;font-family:inter,sans-serif;text-transform:lowercase;transition:all .2s ease}.social-link.social-copy:hover{color:var(--primary);text-decoration:underline}.contact-social-item.social-copy{background:var(--surface-container-low);cursor:pointer;text-align:left;font:inherit;color:inherit;width:100%}.contact-social-item.social-copy:hover{background:var(--surface-container);border-color:var(--outline)}:root{--primary:#00FF00;--on-primary:#381e72;--primary-container:#4f378b;--on-primary-container:#eaddff;--secondary:#cbc2db;--on-secondary:#332d41;--secondary-container:#4a4458;--on-secondary-container:#e8def8;--tertiary:#efb8c8;--on-tertiary:#492532;--tertiary-container:#633b48;--on-tertiary-container:#ffd8e4;--error:#ffb4ab;--on-error:#690005;--error-container:#93000a;--on-error-container:#ffdad6;--surface:#000000;--on-surface:#e6e0e9;--on-surface-variant:#cac4d0;--surface-container-lowest:#262626;--surface-container-low:#3D3D3D;--surface-container:#4F4F4F;--surface-container-high:#5C5C5C;--surface-container-highest:#BABABA;--outline:#938f99;--outline-variant:#49454f}.footer-credit{margin:0 0 16px;font-size:14px;color:var(--on-surface-variant)}.content table{width:100%;border-collapse:collapse;margin:20px 0;font-size:16px;line-height:1.5;color:var(--on-surface)}.content th,.content td{border:1px solid var(--outline);padding:8px 12px;text-align:left}.content th{font-weight:600}.custom{background:red} \ No newline at end of file diff --git a/assets/css/extended.min.44ec6c3d36fd82b3a7bf5888312f4280d474d68a420ba27929eb6f7bb5374486.css b/assets/css/extended.min.44ec6c3d36fd82b3a7bf5888312f4280d474d68a420ba27929eb6f7bb5374486.css new file mode 100644 index 0000000..3dd8476 --- /dev/null +++ b/assets/css/extended.min.44ec6c3d36fd82b3a7bf5888312f4280d474d68a420ba27929eb6f7bb5374486.css @@ -0,0 +1 @@ +.social-link.social-copy{background:0 0;border:none;padding:0;cursor:pointer;color:var(--on-surface);font-size:14px;font-weight:400;font-family:inter,sans-serif;text-transform:lowercase;transition:all .2s ease}.social-link.social-copy:hover{color:var(--primary);text-decoration:underline}.contact-social-item.social-copy{background:var(--surface-container-low);cursor:pointer;text-align:left;font:inherit;color:inherit;width:100%}.contact-social-item.social-copy:hover{background:var(--surface-container);border-color:var(--outline)}:root{--primary:#00FF00;--on-primary:#381e72;--primary-container:#4f378b;--on-primary-container:#eaddff;--secondary:#cbc2db;--on-secondary:#332d41;--secondary-container:#4a4458;--on-secondary-container:#e8def8;--tertiary:#efb8c8;--on-tertiary:#492532;--tertiary-container:#633b48;--on-tertiary-container:#ffd8e4;--error:#ffb4ab;--on-error:#690005;--error-container:#93000a;--on-error-container:#ffdad6;--surface:#000000;--on-surface:#e6e0e9;--on-surface-variant:#cac4d0;--surface-container-lowest:#262626;--surface-container-low:#3D3D3D;--surface-container:#4F4F4F;--surface-container-high:#5C5C5C;--surface-container-highest:#BABABA;--outline:#938f99;--outline-variant:#49454f}.footer-credit{margin:0 0 16px;font-size:14px;color:var(--on-surface-variant)}.content h1,.content h2,.content h3,.intro h1,.contact-title{color:var(--primary)}.content table{width:100%;border-collapse:collapse;margin:20px 0;font-size:16px;line-height:1.5;color:var(--on-surface)}.content th,.content td{border:1px solid var(--outline);padding:8px 12px;text-align:left}.content th{font-weight:600}.custom{background:red} \ No newline at end of file diff --git a/assets/css/extended.min.55c43b167329a48c8861d024c220855c37d104eb2ac82d35a5ddc281a153be9a.css b/assets/css/extended.min.55c43b167329a48c8861d024c220855c37d104eb2ac82d35a5ddc281a153be9a.css new file mode 100644 index 0000000..4a8805a --- /dev/null +++ b/assets/css/extended.min.55c43b167329a48c8861d024c220855c37d104eb2ac82d35a5ddc281a153be9a.css @@ -0,0 +1 @@ +.social-link.social-copy{background:0 0;border:none;padding:0;cursor:pointer;color:var(--on-surface);font-size:14px;font-weight:400;font-family:inter,sans-serif;text-transform:lowercase;transition:all .2s ease}.social-link.social-copy:hover{color:var(--primary);text-decoration:underline}.contact-social-item.social-copy{background:var(--surface-container-low);cursor:pointer;text-align:left;font:inherit;color:inherit;width:100%}.contact-social-item.social-copy:hover{background:var(--surface-container);border-color:var(--outline)}:root{--primary:#00FF00;--on-primary:#381e72;--primary-container:#4f378b;--on-primary-container:#eaddff;--secondary:#cbc2db;--on-secondary:#332d41;--secondary-container:#4a4458;--on-secondary-container:#e8def8;--tertiary:#efb8c8;--on-tertiary:#492532;--tertiary-container:#633b48;--on-tertiary-container:#ffd8e4;--error:#ffb4ab;--on-error:#690005;--error-container:#93000a;--on-error-container:#ffdad6;--surface:#000000;--on-surface:#e6e0e9;--on-surface-variant:#cac4d0;--surface-container-lowest:#262626;--surface-container-low:#3D3D3D;--surface-container:#4F4F4F;--surface-container-high:#5C5C5C;--surface-container-highest:#BABABA;--outline:#938f99;--outline-variant:#49454f}.content table{width:100%;border-collapse:collapse;margin:20px 0;font-size:16px;line-height:1.5;color:var(--on-surface)}.content th,.content td{border:1px solid var(--outline);padding:8px 12px;text-align:left}.content th{font-weight:600}.custom{background:red} \ No newline at end of file diff --git a/assets/css/extended.min.5c9caa2a5eca8474c832ff761af66c096e2d341d10de66d8df5aa24ceb50ea42.css b/assets/css/extended.min.5c9caa2a5eca8474c832ff761af66c096e2d341d10de66d8df5aa24ceb50ea42.css new file mode 100644 index 0000000..5f90625 --- /dev/null +++ b/assets/css/extended.min.5c9caa2a5eca8474c832ff761af66c096e2d341d10de66d8df5aa24ceb50ea42.css @@ -0,0 +1 @@ +.social-link.social-copy{background:0 0;border:none;padding:0;cursor:pointer;color:var(--on-surface);font-size:14px;font-weight:400;font-family:inter,sans-serif;text-transform:lowercase;transition:all .2s ease}.social-link.social-copy:hover{color:var(--primary);text-decoration:underline}.contact-social-item.social-copy{background:var(--surface-container-low);cursor:pointer;text-align:left;font:inherit;color:inherit;width:100%}.contact-social-item.social-copy:hover{background:var(--surface-container);border-color:var(--outline)}:root{--primary:#00FF00;--on-primary:#381e72;--primary-container:#4f378b;--on-primary-container:#eaddff;--secondary:#cbc2db;--on-secondary:#332d41;--secondary-container:#4a4458;--on-secondary-container:#e8def8;--tertiary:#efb8c8;--on-tertiary:#492532;--tertiary-container:#633b48;--on-tertiary-container:#ffd8e4;--error:#ffb4ab;--on-error:#690005;--error-container:#93000a;--on-error-container:#ffdad6;--surface:#000000;--on-surface:#e6e0e9;--on-surface-variant:#cac4d0;--surface-container-lowest:#BABABA;--surface-container-low:#BABABA;--surface-container:#BABABA;--surface-container-high:#BABABA;--surface-container-highest:#BABABA;--outline:#938f99;--outline-variant:#49454f}.custom{background:red} \ No newline at end of file diff --git a/assets/css/extended.min.8780e34e2d95ec42e1cbdfb61b329cc7bf87f765fff40ec459cd7cd3978a171d.css b/assets/css/extended.min.8780e34e2d95ec42e1cbdfb61b329cc7bf87f765fff40ec459cd7cd3978a171d.css new file mode 100644 index 0000000..57ea305 --- /dev/null +++ b/assets/css/extended.min.8780e34e2d95ec42e1cbdfb61b329cc7bf87f765fff40ec459cd7cd3978a171d.css @@ -0,0 +1 @@ +:root{--primary:#d0bcff;--on-primary:#381e72;--primary-container:#4f378b;--on-primary-container:#eaddff;--secondary:#cbc2db;--on-secondary:#332d41;--secondary-container:#4a4458;--on-secondary-container:#e8def8;--tertiary:#efb8c8;--on-tertiary:#492532;--tertiary-container:#633b48;--on-tertiary-container:#ffd8e4;--error:#ffb4ab;--on-error:#690005;--error-container:#93000a;--on-error-container:#ffdad6;--surface:#141218;--on-surface:#e6e0e9;--on-surface-variant:#cac4d0;--surface-container-lowest:#0f0d13;--surface-container-low:#1c1b20;--surface-container:#211f26;--surface-container-high:#2b2930;--surface-container-highest:#36343b;--outline:#938f99;--outline-variant:#49454f}.custom{background:red} \ No newline at end of file diff --git a/assets/css/extended.min.9729f28a5087b689b946e103d96abd63bfd37b1417effa251dbf798312e3fba5.css b/assets/css/extended.min.9729f28a5087b689b946e103d96abd63bfd37b1417effa251dbf798312e3fba5.css new file mode 100644 index 0000000..d393c08 --- /dev/null +++ b/assets/css/extended.min.9729f28a5087b689b946e103d96abd63bfd37b1417effa251dbf798312e3fba5.css @@ -0,0 +1 @@ +.custom{background:red} \ No newline at end of file diff --git a/assets/css/extended.min.a093b50f17b17a131cb6b325ff5cea58a5d22a26676dc85f138e1b1242add552.css b/assets/css/extended.min.a093b50f17b17a131cb6b325ff5cea58a5d22a26676dc85f138e1b1242add552.css new file mode 100644 index 0000000..41efd0f --- /dev/null +++ b/assets/css/extended.min.a093b50f17b17a131cb6b325ff5cea58a5d22a26676dc85f138e1b1242add552.css @@ -0,0 +1 @@ +.social-link.social-copy{background:0 0;border:none;padding:0;cursor:pointer;color:var(--on-surface);font-size:14px;font-weight:400;font-family:inter,sans-serif;text-transform:lowercase;transition:all .2s ease}.social-link.social-copy:hover{color:var(--primary);text-decoration:underline}.contact-social-item.social-copy{background:var(--surface-container-low);cursor:pointer;text-align:left;font:inherit;color:inherit;width:100%}.contact-social-item.social-copy:hover{background:var(--surface-container);border-color:var(--outline)}:root{--primary:#00FF00;--on-primary:#381e72;--primary-container:#4f378b;--on-primary-container:#eaddff;--secondary:#cbc2db;--on-secondary:#332d41;--secondary-container:#4a4458;--on-secondary-container:#e8def8;--tertiary:#efb8c8;--on-tertiary:#492532;--tertiary-container:#633b48;--on-tertiary-container:#ffd8e4;--error:#ffb4ab;--on-error:#690005;--error-container:#93000a;--on-error-container:#ffdad6;--surface:#000000;--on-surface:#e6e0e9;--on-surface-variant:#cac4d0;--surface-container-lowest:#262626;--surface-container-low:#3D3D3D;--surface-container:#4F4F4F;--surface-container-high:#5C5C5C;--surface-container-highest:#BABABA;--outline:#938f99;--outline-variant:#49454f}.footer-credit{margin:0 0 16px;font-size:14px;color:var(--on-surface-variant)}.content h2,.content h3,.content h4,.intro h2{color:var(--primary)}.content table{width:100%;border-collapse:collapse;margin:20px 0;font-size:16px;line-height:1.5;color:var(--on-surface)}.content th,.content td{border:1px solid var(--outline);padding:8px 12px;text-align:left}.content th{font-weight:600}.custom{background:red} \ No newline at end of file diff --git a/assets/css/extended.min.c5c6c03497614ee760ab6374f7d4659ca5f5dea84245532ce6a22d05c8191ef3.css b/assets/css/extended.min.c5c6c03497614ee760ab6374f7d4659ca5f5dea84245532ce6a22d05c8191ef3.css new file mode 100644 index 0000000..d0b22bd --- /dev/null +++ b/assets/css/extended.min.c5c6c03497614ee760ab6374f7d4659ca5f5dea84245532ce6a22d05c8191ef3.css @@ -0,0 +1 @@ +.social-link.social-copy{background:0 0;border:none;padding:0;cursor:pointer;color:var(--on-surface);font-size:14px;font-weight:400;font-family:inter,sans-serif;text-transform:lowercase;transition:all .2s ease}.social-link.social-copy:hover{color:var(--primary);text-decoration:underline}.contact-social-item.social-copy{background:var(--surface-container-low);cursor:pointer;text-align:left;font:inherit;color:inherit;width:100%}.contact-social-item.social-copy:hover{background:var(--surface-container);border-color:var(--outline)}:root{--primary:#00FF00;--on-primary:#381e72;--primary-container:#4f378b;--on-primary-container:#eaddff;--secondary:#cbc2db;--on-secondary:#332d41;--secondary-container:#4a4458;--on-secondary-container:#e8def8;--tertiary:#efb8c8;--on-tertiary:#492532;--tertiary-container:#633b48;--on-tertiary-container:#ffd8e4;--error:#ffb4ab;--on-error:#690005;--error-container:#93000a;--on-error-container:#ffdad6;--surface:#000000;--on-surface:#e6e0e9;--on-surface-variant:#cac4d0;--surface-container-lowest:#BABABA;--surface-container-low:#BABABA;--surface-container:#BABABA;--surface-container-high:#BABABA;--surface-container-highest:#BABABA;--outline:#938f99;--outline-variant:#49454f}.content table{width:100%;border-collapse:collapse;margin:20px 0;font-size:16px;line-height:1.5;color:var(--on-surface)}.content th,.content td{border:1px solid var(--outline);padding:8px 12px;text-align:left}.content th{background:var(--surface-container);font-weight:600}.content tr:nth-child(even) td{background:var(--surface-container-low)}.custom{background:red} \ No newline at end of file diff --git a/assets/css/extended.min.f84d2c2b344eb0161a25230c74dd3b45baa868dea0abeaccaf9cc1f420cd6661.css b/assets/css/extended.min.f84d2c2b344eb0161a25230c74dd3b45baa868dea0abeaccaf9cc1f420cd6661.css new file mode 100644 index 0000000..14fcb44 --- /dev/null +++ b/assets/css/extended.min.f84d2c2b344eb0161a25230c74dd3b45baa868dea0abeaccaf9cc1f420cd6661.css @@ -0,0 +1 @@ +:root{--primary:#00FF00;--on-primary:#381e72;--primary-container:#4f378b;--on-primary-container:#eaddff;--secondary:#cbc2db;--on-secondary:#332d41;--secondary-container:#4a4458;--on-secondary-container:#e8def8;--tertiary:#efb8c8;--on-tertiary:#492532;--tertiary-container:#633b48;--on-tertiary-container:#ffd8e4;--error:#ffb4ab;--on-error:#690005;--error-container:#93000a;--on-error-container:#ffdad6;--surface:#000000;--on-surface:#e6e0e9;--on-surface-variant:#cac4d0;--surface-container-lowest:#000000;--surface-container-low:#1A1A1A;--surface-container:#292929;--surface-container-high:#333333;--surface-container-highest:#3B3B3B;--outline:#938f99;--outline-variant:#49454f}.custom{background:red} \ No newline at end of file diff --git a/categories/index.html b/categories/index.html new file mode 100644 index 0000000..6ce18f5 --- /dev/null +++ b/categories/index.html @@ -0,0 +1,192 @@ + + + + + + + Categories - bullshark369.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+ +
+

Categories

+ +
+ + + + + + + +
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/categories/index.xml b/categories/index.xml new file mode 100644 index 0000000..2ab758c --- /dev/null +++ b/categories/index.xml @@ -0,0 +1,15 @@ + + + + Categories on bullshark369.org + http://localhost:1313/categories/ + Recent content in Categories on bullshark369.org + Hugo + en-us + + + + + + + diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..6b810a8 --- /dev/null +++ b/css/style.css @@ -0,0 +1,909 @@ +:root { + --primary: #000000; + --on-primary: #ffffff; + --primary-container: #eaddff; + --on-primary-container: #21005d; + --secondary: #625b71; + --on-secondary: #ffffff; + --secondary-container: #e8def8; + --on-secondary-container: #1d192b; + --tertiary: #7d5260; + --on-tertiary: #ffffff; + --tertiary-container: #ffd8e4; + --on-tertiary-container: #31111d; + --error: #ba1a1a; + --on-error: #ffffff; + --error-container: #ffdad6; + --on-error-container: #410002; + --surface: #fef7ff; + --on-surface: #1d1b20; + --on-surface-variant: #49454f; + --surface-container-lowest: #ffffff; + --surface-container-low: #f7f2fa; + --surface-container: #f3edf7; + --surface-container-high: #ece6f0; + --surface-container-highest: #e6e0e9; + --outline: #79747e; + --outline-variant: #cac4d0; + --font-family-heading: 'UnifrakturCook', serif; + --font-family-paragraph: 'Inter', sans-serif; + --font-family-monospace: 'Inter', monospace; + --shadow-key-penumbra-opacity: 0.2; + --shadow-key-umbra-opacity: 0.14; + --shadow-ambient-shadow-opacity: 0.12; + --border-radius: 12px; + --border-radius-large: 16px; + --border-radius-small: 8px; + /* Mobile menu compatibility variables */ + --highlight-color: var(--primary); + --base-color: var(--on-primary); } + +.elevation-0 { + box-shadow: none; } + +.elevation-1, .content .highlight pre, .content figure { + box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, var(--shadow-key-umbra-opacity)), 0px 1px 3px 1px rgba(0, 0, 0, var(--shadow-key-penumbra-opacity)); } + +.elevation-2 { + box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, var(--shadow-key-umbra-opacity)), 0px 2px 6px 2px rgba(0, 0, 0, var(--shadow-key-penumbra-opacity)); } + +.elevation-3 { + box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, var(--shadow-key-umbra-opacity)), 0px 4px 8px 3px rgba(0, 0, 0, var(--shadow-key-penumbra-opacity)); } + +.elevation-4 { + box-shadow: 0px 2px 3px 0px rgba(0, 0, 0, var(--shadow-key-umbra-opacity)), 0px 6px 10px 4px rgba(0, 0, 0, var(--shadow-key-penumbra-opacity)); } + +.elevation-5 { + box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, var(--shadow-key-umbra-opacity)), 0px 8px 12px 6px rgba(0, 0, 0, var(--shadow-key-penumbra-opacity)); } + +body, html { + margin: 0; + padding: 0; } + +ol, ul { + margin: 0; + padding: 0; + list-style: none; } + ol li, ul li { + list-style: none; } + +h1, h2, h3 { + margin-top: 20px; + margin-bottom: 20px; } + +.header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 24px; + padding: 16px 0; + font-size: 16px; + border-bottom: 1px solid var(--outline-variant); } + @media (min-width: 767px) { + .header { + padding: 24px 0; + margin-bottom: 32px; } } + .header a.header-logo { + font-weight: 500; + text-transform: lowercase; + margin-right: 24px; + color: var(--on-surface); + letter-spacing: 0.5px; + font-family: 'UnifrakturCook', serif; + font-size: 33px; + text-decoration: none; + transition: color 0.2s ease; } + .header a.header-logo:hover { + color: var(--primary); + text-decoration: none; } + +.hamburger-trigger { + height: 30px; + display: flex; + align-items: center; } + @media (min-width: 992px) { + .hamburger-trigger { + display: none; } } +.hamburger { + border: none; + cursor: pointer; + outline: none; + position: relative; + display: block; + width: 30px; + height: 20px; + background: transparent; + border-top: 2px solid; + border-bottom: 2px solid; + font-size: 0; + transition: all 0.25s ease-in-out; + color: var(--highlight-color); } + .hamburger:before, .hamburger:after { + content: ''; + display: block; + width: 100%; + height: 2px; + position: absolute; + top: 50%; + left: 50%; + background: currentColor; + transform: translate(-50%, -50%); + transition: transform 0.25s ease-in-out; } + .hamburger:hover { + opacity: 0.7; } + .hamburger.is-active { + border-color: transparent; + z-index: 100; + color: var(--base-color); } + .hamburger.is-active:hover { + opacity: 1; } + .hamburger.is-active:before { + transform: translate(-50%, -50%) rotate(45deg); } + .hamburger.is-active:after { + transform: translate(-50%, -50%) rotate(-45deg); } + +.footer { + margin-top: 48px; + padding-top: 24px; + border-top: 1px solid var(--outline-variant); } + @media (min-width: 767px) { + .footer { + padding-top: 32px; + margin-top: 64px; } } +.footer-social { + display: flex; + flex-direction: row; + flex-wrap: wrap; + gap: 16px; + align-items: center; } + +.social-link { + transition: all 0.2s ease; } + .social-link a { + text-decoration: none; + color: var(--on-surface); + font-size: 14px; + font-weight: 400; + font-family: 'Inter', sans-serif; + text-transform: lowercase; + transition: all 0.2s ease; } + .social-link a:hover { + color: var(--primary); + text-decoration: underline; } + .social-link a:visited { + color: var(--on-surface); } + +a { + color: var(--primary); + text-decoration: underline; + transition: color 0.2s ease; } + a:hover { + color: var(--primary); } + a:visited { + color: var(--on-surface); } + +h1, +h2, +h3 { + margin-top: 24px; + margin-bottom: 16px; + color: var(--on-surface); + font-family: var(--font-family-heading); + font-weight: 400; } + +p { + color: var(--on-surface); + font-family: var(--font-family-paragraph); + font-size: 16px; + line-height: 1.6; + margin-bottom: 16px; } + +ol, +ul { + margin: 0; + padding: 0; + list-style: none; } + ol li, + ul li { + list-style: none; } + +.content { + font-size: 18px; } + .content p { + font-size: 18px; + line-height: 1.6; + margin: 0; + padding: 0; + margin-bottom: 20px; } + .content h1 { + font-size: 40px; + line-height: 1.6; + font-weight: bold; + margin-top: 30px; + margin-bottom: 20px; } + .content h1:first-of-type { + margin-top: 0; } + .content h2 { + font-size: 28px; + line-height: 1.4; + font-weight: bold; + margin-top: 30px; + margin-bottom: 20px; + font-family: 'Inter', sans-serif; } + .content h2:first-of-type { + margin-top: 0; } + @media (min-width: 767px) { + .content h2 { + font-size: 30px; + line-height: 1.4; } } + .content h3 { + font-size: 22px; + line-height: 1.4; + font-weight: bold; + margin-top: 30px; + margin-bottom: 20px; + font-family: 'Inter', sans-serif; } + .content ul { + list-style: disc; } + .content ul li { + list-style: disc; } + .content ol { + list-style: decimal; } + .content ol li { + list-style: decimal; } + .content ul, + .content ol { + margin-left: 0; + margin-top: 10px; + margin-bottom: 20px; } + .content ul li, + .content ol li { + font-size: 18px; + line-height: 20px; + margin-bottom: 10px; + margin-left: 0; } + @media (min-width: 767px) { + .content ul li, + .content ol li { + margin-left: 20px; } } + @media (min-width: 767px) { + .content ul, + .content ol { + margin-left: 20px; } } + .content a { + text-decoration: underline; + transition: color 0.2s ease; } + .content a:hover { + color: var(--highlight-color); } + .content blockquote { + border-left: 5px solid var(--highlight-color); + margin: 30px 0; + padding: 20px; } + .content blockquote p { + font-size: 20px; + display: inline; + color: var(--color-base-text); } + .content img { + margin: 24px 0; + max-width: 100%; + height: auto; + border-radius: var(--border-radius-small); + transition: all 0.3s ease; } + .content img:hover { + transform: scale(1.01); } + .content figure { + margin: 32px 0; + background: var(--surface-container); + padding: 16px; + border-radius: var(--border-radius); } + .content figure img { + margin: 0; + border-radius: calc(var(--border-radius) - 4px); } + .content figure figcaption { + margin-top: 12px; } + .content figure figcaption h4 { + margin: 0; + font-size: 14px; + font-weight: 500; + color: var(--on-surface); } + .content figure figcaption p { + margin: 4px 0 0 0; + color: var(--on-surface-variant); + font-size: 14px; } + .content code, + .content pre { + font-family: var(--font-family-monospace); } + .content code { + background: var(--surface-container-low); + padding: 2px 6px; + border-radius: var(--border-radius-small); + font-size: 0.9em; + color: var(--on-surface); } + .content .highlight pre { + border-radius: var(--border-radius); + font-size: 14px; + line-height: 1.5; + padding: 20px; + overflow: auto; + font-family: var(--font-family-monospace); + background: var(--surface-container); + border: 1px solid var(--outline); } + +.footnotes ol { + list-style: decimal; } + .footnotes ol li { + list-style: decimal; } + +.intro { + margin-bottom: 48px; } + @media (min-width: 767px) { + .intro { + margin-bottom: 64px; } } + .intro h1 { + font-size: 165px; + line-height: 1.1; + margin-top: 0; + margin-bottom: 32px; + color: var(--on-surface); + font-weight: 400; } + @media (min-width: 767px) { + .intro h1 { + width: 100%; + font-size: 165px; + line-height: 1.1; + margin-bottom: 40px; } } + .intro h1 strong { + color: var(--primary); + font-weight: 500; } + .intro h2 { + font-size: 28px; + line-height: 1.3; + color: var(--on-surface); + font-weight: 400; } + @media (min-width: 767px) { + .intro h2 { + width: 100%; } } + .intro p { + font-size: 16px; + line-height: 1.6; + color: var(--on-surface-variant); } + @media (min-width: 767px) { + .intro p { + width: 100%; + font-size: 18px; } } +.summary { + margin-bottom: 32px; + font-size: 16px; + line-height: 1.5; + border-bottom: 1px solid var(--outline-variant); + padding-bottom: 24px; + transition: all 0.3s ease; } + @media (min-width: 767px) { + .summary { + margin-bottom: 48px; + font-size: 16px; + line-height: 1.5; + padding-bottom: 32px; } } + .summary:hover { + transform: translateX(4px); } + .summary .summary-date { + font-weight: 500; + color: var(--on-surface-variant); + font-size: 14px; + text-transform: uppercase; + letter-spacing: 0.5px; + margin-bottom: 8px; } + .summary .summary-title { + margin: 12px 0 12px 0; + width: 100%; + font-size: 24px; + line-height: 1.3; + color: var(--on-surface); + font-weight: 500; + font-family: 'Inter', sans-serif; + transition: color 0.2s ease; } + @media (min-width: 767px) { + .summary .summary-title { + width: 100%; + font-size: 32px; + line-height: 1.2; } } + .summary .summary-title:hover { + color: var(--primary); } + .summary .summary-description { + width: 100%; + line-height: 1.6; + color: var(--on-surface-variant); + margin-top: 12px; } + +.menu-main { + display: none; + flex: 0; + font-family: 'Inter', sans-serif; } + @media (min-width: 992px) { + .menu-main { + display: block; } } + .menu-main > ul { + display: flex; + align-items: center; + justify-content: flex-start; } + .menu-main > ul > li { + margin-right: 10px; } + .menu-main > ul > li > a { + display: inline-block; + text-decoration: none; } + .menu-main > ul > li > a:hover { + text-decoration: underline; } + .menu-main > ul > li.active > a { + display: inline-block; + font-weight: bold; } + .menu-main > ul > li:last-of-type { + margin-right: 0; } + +.menu-main-mobile { + position: fixed; + background: var(--surface); + backdrop-filter: blur(10px); + top: 0; + left: 0; + width: 100%; + height: 100vh; + opacity: 0; + visibility: hidden; + transition: opacity 0.35s, visibility 0.35s, height 0.35s; + overflow: hidden; + display: none; + justify-content: center; + flex-direction: column; } + .menu-main-mobile.open { + opacity: 1; + visibility: visible; + height: 100%; + z-index: 10; + display: flex; } + .menu-main-mobile.open li { + animation: fadeInTop 0.5s ease forwards; + animation-delay: 0.1s; } + .menu-main-mobile.open li:nth-of-type(2) { + animation-delay: 0.15s; } + .menu-main-mobile.open li:nth-of-type(3) { + animation-delay: 0.20s; } + .menu-main-mobile.open li:nth-of-type(4) { + animation-delay: 0.25s; } + .menu-main-mobile.open li:nth-of-type(5) { + animation-delay: 0.30s; } + .menu-main-mobile.open li:nth-of-type(6) { + animation-delay: 0.35s; } + .menu-main-mobile ul { + font-size: 2rem; + font-family: var(--font-family-heading); + text-align: center; + list-style: none; + margin: 0; + padding: 2rem 0; + flex: 0; } + .menu-main-mobile ul li { + display: block; + position: relative; + opacity: 0; + margin: 1.2rem 0; + padding: 0.5rem 0; } + .menu-main-mobile ul li a { + display: block; + position: relative; + color: var(--on-surface); + font-family: var(--font-family-heading); + font-weight: 700; + font-size: 2.5rem; + padding: 1rem 2rem; + line-height: 1.2; + text-decoration: none; } + .menu-main-mobile ul li a:hover { + opacity: 0.7; } + .menu-main-mobile ul li ul.sub-menu { + font-size: 1.2rem; } + +.hamburger-trigger { + height: 30px; + display: flex; + align-items: center; } + @media (min-width: 992px) { + .hamburger-trigger { + display: none; } } +.hamburger { + border: none; + cursor: pointer; + outline: none; + position: relative; + display: block; + width: 30px; + height: 20px; + background: transparent; + border-top: 2px solid; + border-bottom: 2px solid; + font-size: 0; + transition: all 0.25s ease-in-out; + color: var(--highlight-color); } + .hamburger:before, .hamburger:after { + content: ''; + display: block; + width: 100%; + height: 2px; + position: absolute; + top: 50%; + left: 50%; + background: currentColor; + transform: translate(-50%, -50%); + transition: transform 0.25s ease-in-out; } + .hamburger:hover { + opacity: 0.7; } + .hamburger.is-active { + border-color: transparent; + z-index: 100; + color: var(--base-color); } + .hamburger.is-active:hover { + opacity: 1; } + .hamburger.is-active:before { + transform: translate(-50%, -50%) rotate(45deg); } + .hamburger.is-active:after { + transform: translate(-50%, -50%) rotate(-45deg); } + +@keyframes fadeInTop { + 0% { + opacity: 0; + top: 20%; } + 100% { + opacity: 1; + top: 0; } } + +.contact-page .contact-title { + font-size: 48px; + font-family: var(--font-family-heading); + font-weight: 400; + margin-top: 0; + margin-bottom: 24px; + color: var(--on-surface); } + @media (min-width: 767px) { + .contact-page .contact-title { + font-size: 56px; } } +.contact-page .contact-intro { + margin-bottom: 40px; } + .contact-page .contact-intro p { + font-size: 16px; + line-height: 1.6; + color: var(--on-surface-variant); } + @media (min-width: 767px) { + .contact-page .contact-intro p { + font-size: 18px; } } +.contact-page .contact-social { + display: flex; + flex-direction: column; + gap: 16px; + margin-top: 16px; } + +.contact-page .contact-social-item { + display: flex; + flex-direction: column; + gap: 4px; + padding: 20px 24px; + border: 1px solid var(--outline-variant); + border-radius: var(--border-radius); + text-decoration: none; + background: var(--surface-container-low); + transition: background 0.2s ease, border-color 0.2s ease; } + .contact-page .contact-social-item:hover { + background: var(--surface-container); + border-color: var(--outline); + text-decoration: none; } + @media (min-width: 767px) { + .contact-page .contact-social-item { + flex-direction: row; + align-items: center; + justify-content: space-between; + gap: 24px; } } +.contact-page .contact-social-name { + font-family: var(--font-family-heading); + font-size: 22px; + font-weight: 400; + color: var(--on-surface); + flex-shrink: 0; } + +.contact-page .contact-social-desc { + font-size: 14px; + color: var(--on-surface-variant); + line-height: 1.4; } + +.highlight { + background: #f5f5f5; } + +.highlight .hll { + background-color: #ffffcc; } + +.highlight .c { + color: #999988; + font-style: italic; } + +/* Comment */ +.highlight .err { + color: #a61717; + background-color: #e3d2d2; } + +/* Error */ +.highlight .k { + color: #000000; + font-weight: bold; } + +/* Keyword */ +.highlight .o { + color: #000000; + font-weight: bold; } + +/* Operator */ +.highlight .cm { + color: #999988; + font-style: italic; } + +/* Comment.Multiline */ +.highlight .cp { + color: #999999; + font-weight: bold; + font-style: italic; } + +/* Comment.Preproc */ +.highlight .c1 { + color: #999988; + font-style: italic; } + +/* Comment.Single */ +.highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; } + +/* Comment.Special */ +.highlight .gd { + color: #000000; + background-color: #ffdddd; } + +/* Generic.Deleted */ +.highlight .ge { + color: #000000; + font-style: italic; } + +/* Generic.Emph */ +.highlight .gr { + color: #aa0000; } + +/* Generic.Error */ +.highlight .gh { + color: #999999; } + +/* Generic.Heading */ +.highlight .gi { + color: #000000; + background-color: #ddffdd; } + +/* Generic.Inserted */ +.highlight .go { + color: #888888; } + +/* Generic.Output */ +.highlight .gp { + color: #555555; } + +/* Generic.Prompt */ +.highlight .gs { + font-weight: bold; } + +/* Generic.Strong */ +.highlight .gu { + color: #aaaaaa; } + +/* Generic.Subheading */ +.highlight .gt { + color: #aa0000; } + +/* Generic.Traceback */ +.highlight .kc { + color: #000000; + font-weight: bold; } + +/* Keyword.Constant */ +.highlight .kd { + color: #000000; + font-weight: bold; } + +/* Keyword.Declaration */ +.highlight .kn { + color: #000000; + font-weight: bold; } + +/* Keyword.Namespace */ +.highlight .kp { + color: #000000; + font-weight: bold; } + +/* Keyword.Pseudo */ +.highlight .kr { + color: #000000; + font-weight: bold; } + +/* Keyword.Reserved */ +.highlight .kt { + color: #445588; + font-weight: bold; } + +/* Keyword.Type */ +.highlight .m { + color: #009999; } + +/* Literal.Number */ +.highlight .s { + color: #d01040; } + +/* Literal.String */ +.highlight .na { + color: #008080; } + +/* Name.Attribute */ +.highlight .nb { + color: #0086B3; } + +/* Name.Builtin */ +.highlight .nc { + color: #445588; + font-weight: bold; } + +/* Name.Class */ +.highlight .no { + color: #008080; } + +/* Name.Constant */ +.highlight .nd { + color: #3c5d5d; + font-weight: bold; } + +/* Name.Decorator */ +.highlight .ni { + color: #800080; } + +/* Name.Entity */ +.highlight .ne { + color: #990000; + font-weight: bold; } + +/* Name.Exception */ +.highlight .nf { + color: #990000; + font-weight: bold; } + +/* Name.Function */ +.highlight .nl { + color: #990000; + font-weight: bold; } + +/* Name.Label */ +.highlight .nn { + color: #555555; } + +/* Name.Namespace */ +.highlight .nt { + color: #000080; } + +/* Name.Tag */ +.highlight .nv { + color: #008080; } + +/* Name.Variable */ +.highlight .ow { + color: #000000; + font-weight: bold; } + +/* Operator.Word */ +.highlight .w { + color: #bbbbbb; } + +/* Text.Whitespace */ +.highlight .mf { + color: #009999; } + +/* Literal.Number.Float */ +.highlight .mh { + color: #009999; } + +/* Literal.Number.Hex */ +.highlight .mi { + color: #009999; } + +/* Literal.Number.Integer */ +.highlight .mo { + color: #009999; } + +/* Literal.Number.Oct */ +.highlight .sb { + color: #d01040; } + +/* Literal.String.Backtick */ +.highlight .sc { + color: #d01040; } + +/* Literal.String.Char */ +.highlight .sd { + color: #d01040; } + +/* Literal.String.Doc */ +.highlight .s2 { + color: #d01040; } + +/* Literal.String.Double */ +.highlight .se { + color: #d01040; } + +/* Literal.String.Escape */ +.highlight .sh { + color: #d01040; } + +/* Literal.String.Heredoc */ +.highlight .si { + color: #d01040; } + +/* Literal.String.Interpol */ +.highlight .sx { + color: #d01040; } + +/* Literal.String.Other */ +.highlight .sr { + color: #009926; } + +/* Literal.String.Regex */ +.highlight .s1 { + color: #d01040; } + +/* Literal.String.Single */ +.highlight .ss { + color: #990073; } + +/* Literal.String.Symbol */ +.highlight .bp { + color: #999999; } + +/* Name.Builtin.Pseudo */ +.highlight .vc { + color: #008080; } + +/* Name.Variable.Class */ +.highlight .vg { + color: #008080; } + +/* Name.Variable.Global */ +.highlight .vi { + color: #008080; } + +/* Name.Variable.Instance */ +.highlight .il { + color: #009999; } + +/* Literal.Number.Integer.Long */ +html, body { + box-sizing: border-box; } + +body { + background: var(--surface); + font-family: var(--font-family-paragraph); + color: var(--on-surface); + margin: 0; + padding: 16px; + overflow-x: hidden; + line-height: 1.5; + transition: background-color 0.3s ease, color 0.3s ease; } + @media (min-width: 767px) { + body { + padding: 24px; } } + body.frame { + min-height: 100vh; + border: 18px solid var(--primary); } + +.wrapper { + max-width: 1000px; + margin: 0 auto; } + +/*# sourceMappingURL=style.css.map */ \ No newline at end of file diff --git a/css/style.css.map b/css/style.css.map new file mode 100644 index 0000000..09e6248 --- /dev/null +++ b/css/style.css.map @@ -0,0 +1,35 @@ +{ + "version": 3, + "file": "style.css", + "sourceRoot": "/home/shark/projects/webdev/bullorg", + "sources": [ + "themes/blog/assets/scss/style.scss", + "themes/blog/assets/scss/_normalize.scss", + "themes/blog/assets/scss/_breakpoints.scss", + "themes/blog/assets/scss/_header.scss", + "themes/blog/assets/scss/_footer.scss", + "themes/blog/assets/scss/_content.scss", + "themes/blog/assets/scss/_intro.scss", + "themes/blog/assets/scss/_summary.scss", + "themes/blog/assets/scss/_main-menu.scss", + "themes/blog/assets/scss/_main-menu-mobile.scss", + "themes/blog/assets/scss/_contact.scss", + "themes/blog/assets/scss/pygments/github.scss" + ], + "sourcesContent": [ + ":root {\n --primary: #000000;\n --on-primary: #ffffff;\n --primary-container: #eaddff;\n --on-primary-container: #21005d;\n\n --secondary: #625b71;\n --on-secondary: #ffffff;\n --secondary-container: #e8def8;\n --on-secondary-container: #1d192b;\n\n --tertiary: #7d5260;\n --on-tertiary: #ffffff;\n --tertiary-container: #ffd8e4;\n --on-tertiary-container: #31111d;\n\n --error: #ba1a1a;\n --on-error: #ffffff;\n --error-container: #ffdad6;\n --on-error-container: #410002;\n\n --surface: #fef7ff;\n --on-surface: #1d1b20;\n --on-surface-variant: #49454f;\n\n --surface-container-lowest: #ffffff;\n --surface-container-low: #f7f2fa;\n --surface-container: #f3edf7;\n --surface-container-high: #ece6f0;\n --surface-container-highest: #e6e0e9;\n\n --outline: #79747e;\n --outline-variant: #cac4d0;\n\n --font-family-heading: 'UnifrakturCook', serif;\n --font-family-paragraph: 'Inter', sans-serif;\n --font-family-monospace: 'Inter', monospace;\n\n --shadow-key-penumbra-opacity: 0.2;\n --shadow-key-umbra-opacity: 0.14;\n --shadow-ambient-shadow-opacity: 0.12;\n\n --border-radius: 12px;\n --border-radius-large: 16px;\n --border-radius-small: 8px;\n\n /* Mobile menu compatibility variables */\n --highlight-color: var(--primary);\n --base-color: var(--on-primary);\n}\n\n.elevation-0 {\n box-shadow: none;\n}\n\n.elevation-1 {\n box-shadow:\n 0px 1px 2px 0px rgba(0, 0, 0, var(--shadow-key-umbra-opacity)),\n 0px 1px 3px 1px rgba(0, 0, 0, var(--shadow-key-penumbra-opacity));\n}\n\n.elevation-2 {\n box-shadow:\n 0px 1px 2px 0px rgba(0, 0, 0, var(--shadow-key-umbra-opacity)),\n 0px 2px 6px 2px rgba(0, 0, 0, var(--shadow-key-penumbra-opacity));\n}\n\n.elevation-3 {\n box-shadow:\n 0px 1px 3px 0px rgba(0, 0, 0, var(--shadow-key-umbra-opacity)),\n 0px 4px 8px 3px rgba(0, 0, 0, var(--shadow-key-penumbra-opacity));\n}\n\n.elevation-4 {\n box-shadow:\n 0px 2px 3px 0px rgba(0, 0, 0, var(--shadow-key-umbra-opacity)),\n 0px 6px 10px 4px rgba(0, 0, 0, var(--shadow-key-penumbra-opacity));\n}\n\n.elevation-5 {\n box-shadow:\n 0px 4px 4px 0px rgba(0, 0, 0, var(--shadow-key-umbra-opacity)),\n 0px 8px 12px 6px rgba(0, 0, 0, var(--shadow-key-penumbra-opacity));\n}\n\n$breakpoints: (\n 'small': 767px,\n 'medium': 992px,\n 'large': 1200px,\n);\n\n@import 'normalize';\n@import 'breakpoints';\n@import 'header';\n@import 'footer';\n@import 'content';\n@import 'intro';\n@import 'summary';\n@import 'main-menu';\n@import 'main-menu-mobile';\n@import 'contact';\n@import 'pygments/github';\n\nhtml, body {\n box-sizing: border-box;\n}\n\nbody {\n background: var(--surface);\n font-family: var(--font-family-paragraph);\n color: var(--on-surface);\n margin: 0;\n padding: 16px;\n overflow-x: hidden;\n line-height: 1.5;\n transition: background-color 0.3s ease, color 0.3s ease;\n @include breakpoint('small') {\n padding: 24px;\n }\n &.frame {\n min-height: 100vh;\n border: 18px solid var(--primary);\n }\n}\n\n.wrapper {\n max-width: 1000px;\n margin: 0 auto;\n}\n", + "body, html {\n margin: 0;\n padding: 0;\n}\n\nol,ul {\n margin: 0;\n padding: 0;\n list-style: none;\n li {\n list-style: none;\n }\n}\n\nh1, h2, h3 {\n margin-top: 20px;\n margin-bottom: 20px;\n}", + "@mixin breakpoint($breakpoint) {\n // If the key exists in the map\n @if map-has-key($breakpoints, $breakpoint) {\n // Prints a media query based on the value\n @media (min-width: map-get($breakpoints, $breakpoint)) {\n @content;\n }\n }\n // If the key doesn't exist in the map\n @else {\n @warn \"Unfortunately, no value could be retrieved from `#{$breakpoint}`. \"\n + \"Available breakpoints are: #{map-keys($breakpoints)}.\";\n }\n}", + ".header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 24px;\n padding: 16px 0;\n font-size: 16px;\n border-bottom: 1px solid var(--outline-variant);\n @include breakpoint('small') {\n padding: 24px 0;\n margin-bottom: 32px;\n }\n a.header-logo {\n font-weight: 500;\n text-transform: lowercase;\n margin-right: 24px;\n color: var(--on-surface);\n letter-spacing: 0.5px;\n font-family: 'UnifrakturCook', serif;\n font-size: 33px;\n text-decoration: none;\n transition: color 0.2s ease;\n &:hover {\n color: var(--primary);\n text-decoration: none;\n }\n }\n}\n\n\n.hamburger-trigger {\n height: 30px;\n display: flex;\n align-items: center;\n @include breakpoint('medium') {\n display: none;\n }\n}\n\n.hamburger {\n border: none;\n cursor: pointer;\n outline: none;\n position: relative;\n display: block;\n width: 30px;\n height: 20px;\n background: transparent;\n border-top: 2px solid;\n border-bottom: 2px solid;\n font-size: 0;\n transition: all 0.25s ease-in-out;\n color: var(--highlight-color);\n &:before,\n &:after {\n content: '';\n display: block;\n width: 100%;\n height: 2px;\n position: absolute;\n top: 50%;\n left: 50%;\n background: currentColor;\n transform: translate(-50%, -50%);\n transition: transform 0.25s ease-in-out;\n }\n &:hover {\n opacity: 0.7;\n }\n &.is-active {\n border-color: transparent;\n z-index: 100;\n color: var(--base-color);\n &:hover {\n opacity: 1;\n }\n &:before {\n transform: translate(-50%, -50%) rotate(45deg);\n }\n &:after {\n transform: translate(-50%, -50%) rotate(-45deg);\n }\n }\n}\n", + ".footer {\n margin-top: 48px;\n padding-top: 24px;\n border-top: 1px solid var(--outline-variant);\n @include breakpoint('small') {\n padding-top: 32px;\n margin-top: 64px;\n }\n }\n\n .footer-social {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n gap: 16px;\n align-items: center;\n }\n\n .social-link {\n transition: all 0.2s ease;\n a {\n text-decoration: none;\n color: var(--on-surface);\n font-size: 14px;\n font-weight: 400;\n font-family: 'Inter', sans-serif;\n text-transform: lowercase;\n transition: all 0.2s ease;\n &:hover {\n color: var(--primary);\n text-decoration: underline;\n }\n &:visited {\n color: var(--on-surface);\n }\n }\n }\n ", + "a {\n color: var(--primary);\n text-decoration: underline;\n transition: color 0.2s ease;\n &:hover {\n color: var(--primary);\n }\n &:visited {\n color: var(--on-surface);\n }\n}\n\nh1,\nh2,\nh3 {\n margin-top: 24px;\n margin-bottom: 16px;\n color: var(--on-surface);\n font-family: var(--font-family-heading);\n font-weight: 400;\n}\np {\n color: var(--on-surface);\n font-family: var(--font-family-paragraph);\n font-size: 16px;\n line-height: 1.6;\n margin-bottom: 16px;\n}\n\nol,\nul {\n margin: 0;\n padding: 0;\n list-style: none;\n li {\n list-style: none;\n }\n}\n\n.content {\n font-size: 18px;\n p {\n font-size: 18px;\n line-height: 1.6;\n margin: 0;\n padding: 0;\n margin-bottom: 20px;\n }\n h1 {\n font-size: 40px;\n line-height: 1.6;\n font-weight: bold;\n margin-top: 30px;\n margin-bottom: 20px;\n &:first-of-type {\n margin-top: 0;\n }\n }\n h2 {\n font-size: 28px;\n line-height: 1.4;\n font-weight: bold;\n margin-top: 30px;\n margin-bottom: 20px;\n font-family: 'Inter', sans-serif;\n &:first-of-type {\n margin-top: 0;\n }\n @include breakpoint('small') {\n font-size: 30px;\n line-height: 1.4;\n }\n }\n h3 {\n font-size: 22px;\n line-height: 1.4;\n font-weight: bold;\n margin-top: 30px;\n margin-bottom: 20px;\n font-family: 'Inter', sans-serif;\n }\n ul {\n list-style: disc;\n li {\n list-style: disc;\n }\n }\n ol {\n list-style: decimal;\n li {\n list-style: decimal;\n }\n }\n ul,\n ol {\n margin-left: 0;\n margin-top: 10px;\n margin-bottom: 20px;\n li {\n font-size: 18px;\n line-height: 20px;\n margin-bottom: 10px;\n margin-left: 0;\n @include breakpoint('small') {\n margin-left: 20px;\n }\n }\n @include breakpoint('small') {\n margin-left: 20px;\n }\n }\n a {\n text-decoration: underline;\n transition: color 0.2s ease;\n &:hover {\n color: var(--highlight-color);\n }\n }\n blockquote {\n border-left: 5px solid var(--highlight-color);\n margin: 30px 0;\n padding: 20px;\n }\n blockquote p {\n font-size: 20px;\n display: inline;\n color: var(--color-base-text);\n }\n img {\n margin: 24px 0;\n max-width: 100%;\n height: auto;\n border-radius: var(--border-radius-small);\n transition: all 0.3s ease;\n &:hover {\n transform: scale(1.01);\n }\n }\n figure {\n margin: 32px 0;\n background: var(--surface-container);\n padding: 16px;\n border-radius: var(--border-radius);\n @extend .elevation-1;\n img {\n margin: 0;\n border-radius: calc(var(--border-radius) - 4px);\n }\n figcaption {\n margin-top: 12px;\n h4 {\n margin: 0;\n font-size: 14px;\n font-weight: 500;\n color: var(--on-surface);\n }\n p {\n margin: 4px 0 0 0;\n color: var(--on-surface-variant);\n font-size: 14px;\n }\n }\n }\n code,\n pre {\n font-family: var(--font-family-monospace);\n }\n code {\n background: var(--surface-container-low);\n padding: 2px 6px;\n border-radius: var(--border-radius-small);\n font-size: 0.9em;\n color: var(--on-surface);\n }\n .highlight {\n pre {\n border-radius: var(--border-radius);\n font-size: 14px;\n line-height: 1.5;\n padding: 20px;\n overflow: auto;\n font-family: var(--font-family-monospace);\n background: var(--surface-container);\n @extend .elevation-1;\n border: 1px solid var(--outline);\n }\n }\n}\n\n.footnotes {\n ol {\n list-style: decimal;\n li {\n list-style: decimal;\n }\n }\n}", + ".intro {\n margin-bottom: 48px;\n @include breakpoint('small') {\n margin-bottom: 64px;\n }\n h1 {\n font-size: 165px;\n line-height: 1.1;\n margin-top: 0;\n margin-bottom: 32px;\n color: var(--on-surface);\n font-weight: 400;\n @include breakpoint('small') {\n width: 100%;\n font-size: 165px;\n line-height: 1.1;\n margin-bottom: 40px;\n }\n strong {\n color: var(--primary);\n font-weight: 500;\n }\n }\n h2 {\n font-size: 28px;\n line-height: 1.3;\n color: var(--on-surface);\n font-weight: 400;\n @include breakpoint('small') {\n width: 100%;\n }\n }\n p {\n font-size: 16px;\n line-height: 1.6;\n color: var(--on-surface-variant);\n @include breakpoint('small') {\n width: 100%;\n font-size: 18px;\n }\n }\n}\n", + ".summary {\n margin-bottom: 32px;\n font-size: 16px;\n line-height: 1.5;\n border-bottom: 1px solid var(--outline-variant);\n padding-bottom: 24px;\n transition: all 0.3s ease;\n @include breakpoint('small') {\n margin-bottom: 48px;\n font-size: 16px;\n line-height: 1.5;\n padding-bottom: 32px;\n }\n &:hover {\n transform: translateX(4px);\n }\n .summary-date {\n font-weight: 500;\n color: var(--on-surface-variant);\n font-size: 14px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 8px;\n }\n .summary-title {\n margin: 12px 0 12px 0;\n width: 100%;\n font-size: 24px;\n line-height: 1.3;\n color: var(--on-surface);\n font-weight: 500;\n font-family: 'Inter', sans-serif;\n transition: color 0.2s ease;\n @include breakpoint('small') {\n width: 100%;\n font-size: 32px;\n line-height: 1.2;\n }\n &:hover {\n color: var(--primary);\n }\n }\n .summary-description {\n width: 100%;\n line-height: 1.6;\n color: var(--on-surface-variant);\n margin-top: 12px;\n }\n}\n", + "\n.menu-main {\n display: none;\n flex: 0;\n font-family: 'Inter', sans-serif;\n @include breakpoint('medium') {\n display: block;\n }\n > ul {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n > li {\n margin-right: 10px;\n > a {\n display: inline-block;\n text-decoration: none;\n &:hover {\n text-decoration: underline;\n }\n }\n &.active {\n > a {\n display: inline-block;\n font-weight: bold;\n }\n }\n &:last-of-type {\n margin-right: 0;\n }\n }\n }\n}", + ".menu-main-mobile {\n position: fixed;\n background: var(--surface);\n backdrop-filter: blur(10px);\n top: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.35s, visibility 0.35s, height 0.35s;\n overflow: hidden;\n display: none;\n justify-content: center;\n flex-direction: column;\n &.open {\n opacity: 1;\n visibility: visible;\n height: 100%;\n z-index: 10;\n display: flex;\n li {\n animation: fadeInTop 0.5s ease forwards;\n animation-delay: 0.1s;\n &:nth-of-type(2) {\n animation-delay: 0.15s;\n }\n &:nth-of-type(3) {\n animation-delay: 0.20s;\n }\n &:nth-of-type(4) {\n animation-delay: 0.25s;\n }\n &:nth-of-type(5) {\n animation-delay: 0.30s;\n }\n &:nth-of-type(6) {\n animation-delay: 0.35s;\n }\n }\n }\n ul {\n font-size: 2rem;\n font-family: var(--font-family-heading);\n text-align: center;\n list-style: none;\n margin: 0;\n padding: 2rem 0;\n flex: 0;\n li {\n display: block;\n position: relative;\n opacity: 0;\n margin: 1.2rem 0;\n padding: 0.5rem 0;\n a {\n display: block;\n position: relative;\n color: var(--on-surface);\n font-family: var(--font-family-heading);\n font-weight: 700;\n font-size: 2.5rem;\n padding: 1rem 2rem;\n line-height: 1.2;\n text-decoration: none;\n &:hover {\n opacity: 0.7;\n }\n }\n ul.sub-menu {\n font-size: 1.2rem;\n }\n }\n }\n}\n\n.hamburger-trigger {\n height: 30px;\n display: flex;\n align-items: center;\n @include breakpoint('medium') {\n display: none;\n }\n}\n\n.hamburger {\n border: none;\n cursor: pointer;\n outline: none;\n position: relative;\n display: block;\n width: 30px;\n height: 20px;\n background: transparent;\n border-top: 2px solid;\n border-bottom: 2px solid;\n font-size: 0;\n transition: all 0.25s ease-in-out;\n color: var(--highlight-color);\n &:before,\n &:after {\n content: '';\n display: block;\n width: 100%;\n height: 2px;\n position: absolute;\n top: 50%;\n left: 50%;\n background: currentColor;\n transform: translate(-50%, -50%);\n transition: transform 0.25s ease-in-out;\n }\n &:hover {\n opacity: 0.7;\n }\n &.is-active {\n border-color: transparent;\n z-index: 100;\n color: var(--base-color);\n &:hover {\n opacity: 1;\n }\n &:before {\n transform: translate(-50%, -50%) rotate(45deg);\n }\n &:after {\n transform: translate(-50%, -50%) rotate(-45deg);\n }\n }\n}\n\n@keyframes fadeInTop {\n 0% {\n opacity: 0;\n top: 20%;\n }\n 100% {\n opacity: 1;\n top: 0;\n }\n}\n", + ".contact-page {\n .contact-title {\n font-size: 48px;\n font-family: var(--font-family-heading);\n font-weight: 400;\n margin-top: 0;\n margin-bottom: 24px;\n color: var(--on-surface);\n @include breakpoint('small') {\n font-size: 56px;\n }\n }\n\n .contact-intro {\n margin-bottom: 40px;\n p {\n font-size: 16px;\n line-height: 1.6;\n color: var(--on-surface-variant);\n @include breakpoint('small') {\n font-size: 18px;\n }\n }\n }\n\n .contact-social {\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-top: 16px;\n }\n\n .contact-social-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 20px 24px;\n border: 1px solid var(--outline-variant);\n border-radius: var(--border-radius);\n text-decoration: none;\n background: var(--surface-container-low);\n transition: background 0.2s ease, border-color 0.2s ease;\n\n &:hover {\n background: var(--surface-container);\n border-color: var(--outline);\n text-decoration: none;\n }\n\n @include breakpoint('small') {\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n gap: 24px;\n }\n }\n\n .contact-social-name {\n font-family: var(--font-family-heading);\n font-size: 22px;\n font-weight: 400;\n color: var(--on-surface);\n flex-shrink: 0;\n }\n\n .contact-social-desc {\n font-size: 14px;\n color: var(--on-surface-variant);\n line-height: 1.4;\n }\n}\n", + ".highlight { background: #f5f5f5; }\n.highlight .hll { background-color: #ffffcc }\n.highlight .c { color: #999988; font-style: italic } /* Comment */\n.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */\n.highlight .k { color: #000000; font-weight: bold } /* Keyword */\n.highlight .o { color: #000000; font-weight: bold } /* Operator */\n.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */\n.highlight .cp { color: #999999; font-weight: bold; font-style: italic } /* Comment.Preproc */\n.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */\n.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */\n.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */\n.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */\n.highlight .gr { color: #aa0000 } /* Generic.Error */\n.highlight .gh { color: #999999 } /* Generic.Heading */\n.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */\n.highlight .go { color: #888888 } /* Generic.Output */\n.highlight .gp { color: #555555 } /* Generic.Prompt */\n.highlight .gs { font-weight: bold } /* Generic.Strong */\n.highlight .gu { color: #aaaaaa } /* Generic.Subheading */\n.highlight .gt { color: #aa0000 } /* Generic.Traceback */\n.highlight .kc { color: #000000; font-weight: bold } /* Keyword.Constant */\n.highlight .kd { color: #000000; font-weight: bold } /* Keyword.Declaration */\n.highlight .kn { color: #000000; font-weight: bold } /* Keyword.Namespace */\n.highlight .kp { color: #000000; font-weight: bold } /* Keyword.Pseudo */\n.highlight .kr { color: #000000; font-weight: bold } /* Keyword.Reserved */\n.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */\n.highlight .m { color: #009999 } /* Literal.Number */\n.highlight .s { color: #d01040 } /* Literal.String */\n.highlight .na { color: #008080 } /* Name.Attribute */\n.highlight .nb { color: #0086B3 } /* Name.Builtin */\n.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */\n.highlight .no { color: #008080 } /* Name.Constant */\n.highlight .nd { color: #3c5d5d; font-weight: bold } /* Name.Decorator */\n.highlight .ni { color: #800080 } /* Name.Entity */\n.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */\n.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */\n.highlight .nl { color: #990000; font-weight: bold } /* Name.Label */\n.highlight .nn { color: #555555 } /* Name.Namespace */\n.highlight .nt { color: #000080 } /* Name.Tag */\n.highlight .nv { color: #008080 } /* Name.Variable */\n.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */\n.highlight .w { color: #bbbbbb } /* Text.Whitespace */\n.highlight .mf { color: #009999 } /* Literal.Number.Float */\n.highlight .mh { color: #009999 } /* Literal.Number.Hex */\n.highlight .mi { color: #009999 } /* Literal.Number.Integer */\n.highlight .mo { color: #009999 } /* Literal.Number.Oct */\n.highlight .sb { color: #d01040 } /* Literal.String.Backtick */\n.highlight .sc { color: #d01040 } /* Literal.String.Char */\n.highlight .sd { color: #d01040 } /* Literal.String.Doc */\n.highlight .s2 { color: #d01040 } /* Literal.String.Double */\n.highlight .se { color: #d01040 } /* Literal.String.Escape */\n.highlight .sh { color: #d01040 } /* Literal.String.Heredoc */\n.highlight .si { color: #d01040 } /* Literal.String.Interpol */\n.highlight .sx { color: #d01040 } /* Literal.String.Other */\n.highlight .sr { color: #009926 } /* Literal.String.Regex */\n.highlight .s1 { color: #d01040 } /* Literal.String.Single */\n.highlight .ss { color: #990073 } /* Literal.String.Symbol */\n.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */\n.highlight .vc { color: #008080 } /* Name.Variable.Class */\n.highlight .vg { color: #008080 } /* Name.Variable.Global */\n.highlight .vi { color: #008080 } /* Name.Variable.Instance */\n.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/css/style.min.1c18def2aed6b057aa439fbec51b1d6f55f2d2d8073fe48390bceb467a226be6.css b/css/style.min.1c18def2aed6b057aa439fbec51b1d6f55f2d2d8073fe48390bceb467a226be6.css new file mode 100644 index 0000000..b82906d --- /dev/null +++ b/css/style.min.1c18def2aed6b057aa439fbec51b1d6f55f2d2d8073fe48390bceb467a226be6.css @@ -0,0 +1 @@ +:root{--primary:#000000;--on-primary:#ffffff;--primary-container:#eaddff;--on-primary-container:#21005d;--secondary:#625b71;--on-secondary:#ffffff;--secondary-container:#e8def8;--on-secondary-container:#1d192b;--tertiary:#7d5260;--on-tertiary:#ffffff;--tertiary-container:#ffd8e4;--on-tertiary-container:#31111d;--error:#ba1a1a;--on-error:#ffffff;--error-container:#ffdad6;--on-error-container:#410002;--surface:#fef7ff;--on-surface:#1d1b20;--on-surface-variant:#49454f;--surface-container-lowest:#ffffff;--surface-container-low:#f7f2fa;--surface-container:#f3edf7;--surface-container-high:#ece6f0;--surface-container-highest:#e6e0e9;--outline:#79747e;--outline-variant:#cac4d0;--font-family-heading:'UnifrakturCook', serif;--font-family-paragraph:'Inter', sans-serif;--font-family-monospace:'Inter', monospace;--shadow-key-penumbra-opacity:0.2;--shadow-key-umbra-opacity:0.14;--shadow-ambient-shadow-opacity:0.12;--border-radius:12px;--border-radius-large:16px;--border-radius-small:8px;--highlight-color:var(--primary);--base-color:var(--on-primary)}.elevation-0{box-shadow:none}.elevation-1,.content .highlight pre,.content figure{box-shadow:0 1px 2px rgba(0,0,0,var(--shadow-key-umbra-opacity)),0 1px 3px 1px rgba(0,0,0,var(--shadow-key-penumbra-opacity))}.elevation-2{box-shadow:0 1px 2px rgba(0,0,0,var(--shadow-key-umbra-opacity)),0 2px 6px 2px rgba(0,0,0,var(--shadow-key-penumbra-opacity))}.elevation-3{box-shadow:0 1px 3px rgba(0,0,0,var(--shadow-key-umbra-opacity)),0 4px 8px 3px rgba(0,0,0,var(--shadow-key-penumbra-opacity))}.elevation-4{box-shadow:0 2px 3px rgba(0,0,0,var(--shadow-key-umbra-opacity)),0 6px 10px 4px rgba(0,0,0,var(--shadow-key-penumbra-opacity))}.elevation-5{box-shadow:0 4px 4px rgba(0,0,0,var(--shadow-key-umbra-opacity)),0 8px 12px 6px rgba(0,0,0,var(--shadow-key-penumbra-opacity))}body,html{margin:0;padding:0}ol,ul{margin:0;padding:0;list-style:none}ol li,ul li{list-style:none}h1,h2,h3{margin-top:20px;margin-bottom:20px}.header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;padding:16px 0;font-size:16px;border-bottom:1px solid var(--outline-variant)}@media(min-width:767px){.header{padding:24px 0;margin-bottom:32px}}.header a.header-logo{font-weight:500;text-transform:lowercase;margin-right:24px;color:var(--on-surface);letter-spacing:.5px;font-family:unifrakturcook,serif;font-size:33px;text-decoration:none;transition:color .2s ease}.header a.header-logo:hover{color:var(--primary);text-decoration:none}.hamburger-trigger{height:30px;display:flex;align-items:center}@media(min-width:992px){.hamburger-trigger{display:none}}.hamburger{border:none;cursor:pointer;outline:none;position:relative;display:block;width:30px;height:20px;background:0 0;border-top:2px solid;border-bottom:2px solid;font-size:0;transition:all .25s ease-in-out;color:var(--highlight-color)}.hamburger:before,.hamburger:after{content:'';display:block;width:100%;height:2px;position:absolute;top:50%;left:50%;background:currentColor;transform:translate(-50%,-50%);transition:transform .25s ease-in-out}.hamburger:hover{opacity:.7}.hamburger.is-active{border-color:transparent;z-index:100;color:var(--base-color)}.hamburger.is-active:hover{opacity:1}.hamburger.is-active:before{transform:translate(-50%,-50%)rotate(45deg)}.hamburger.is-active:after{transform:translate(-50%,-50%)rotate(-45deg)}.footer{margin-top:48px;padding-top:24px;border-top:1px solid var(--outline-variant)}@media(min-width:767px){.footer{padding-top:32px;margin-top:64px}}.footer-social{display:flex;flex-direction:row;flex-wrap:wrap;gap:16px;align-items:center}.social-link{transition:all .2s ease}.social-link a{text-decoration:none;color:var(--on-surface);font-size:14px;font-weight:400;font-family:inter,sans-serif;text-transform:lowercase;transition:all .2s ease}.social-link a:hover{color:var(--primary);text-decoration:underline}.social-link a:visited{color:var(--on-surface)}a{color:var(--primary);text-decoration:underline;transition:color .2s ease}a:hover{color:var(--primary)}a:visited{color:var(--on-surface)}h1,h2,h3{margin-top:24px;margin-bottom:16px;color:var(--on-surface);font-family:var(--font-family-heading);font-weight:400}p{color:var(--on-surface);font-family:var(--font-family-paragraph);font-size:16px;line-height:1.6;margin-bottom:16px}ol,ul{margin:0;padding:0;list-style:none}ol li,ul li{list-style:none}.content{font-size:18px}.content p{font-size:18px;line-height:1.6;margin:0;padding:0;margin-bottom:20px}.content h1{font-size:40px;line-height:1.6;font-weight:700;margin-top:30px;margin-bottom:20px}.content h1:first-of-type{margin-top:0}.content h2{font-size:28px;line-height:1.4;font-weight:700;margin-top:30px;margin-bottom:20px;font-family:inter,sans-serif}.content h2:first-of-type{margin-top:0}@media(min-width:767px){.content h2{font-size:30px;line-height:1.4}}.content h3{font-size:22px;line-height:1.4;font-weight:700;margin-top:30px;margin-bottom:20px;font-family:inter,sans-serif}.content ul{list-style:disc}.content ul li{list-style:disc}.content ol{list-style:decimal}.content ol li{list-style:decimal}.content ul,.content ol{margin-left:0;margin-top:10px;margin-bottom:20px}.content ul li,.content ol li{font-size:18px;line-height:20px;margin-bottom:10px;margin-left:0}@media(min-width:767px){.content ul li,.content ol li{margin-left:20px}}@media(min-width:767px){.content ul,.content ol{margin-left:20px}}.content a{text-decoration:underline;transition:color .2s ease}.content a:hover{color:var(--highlight-color)}.content blockquote{border-left:5px solid var(--highlight-color);margin:30px 0;padding:20px}.content blockquote p{font-size:20px;display:inline;color:var(--color-base-text)}.content img{margin:24px 0;max-width:100%;height:auto;border-radius:var(--border-radius-small);transition:all .3s ease}.content img:hover{transform:scale(1.01)}.content figure{margin:32px 0;background:var(--surface-container);padding:16px;border-radius:var(--border-radius)}.content figure img{margin:0;border-radius:calc(var(--border-radius) - 4px)}.content figure figcaption{margin-top:12px}.content figure figcaption h4{margin:0;font-size:14px;font-weight:500;color:var(--on-surface)}.content figure figcaption p{margin:4px 0 0;color:var(--on-surface-variant);font-size:14px}.content code,.content pre{font-family:var(--font-family-monospace)}.content code{background:var(--surface-container-low);padding:2px 6px;border-radius:var(--border-radius-small);font-size:.9em;color:var(--on-surface)}.content .highlight pre{border-radius:var(--border-radius);font-size:14px;line-height:1.5;padding:20px;overflow:auto;font-family:var(--font-family-monospace);background:var(--surface-container);border:1px solid var(--outline)}.footnotes ol{list-style:decimal}.footnotes ol li{list-style:decimal}.intro{margin-bottom:48px}@media(min-width:767px){.intro{margin-bottom:64px}}.intro h1{font-size:165px;line-height:1.1;margin-top:0;margin-bottom:32px;color:var(--on-surface);font-weight:400}@media(min-width:767px){.intro h1{width:100%;font-size:165px;line-height:1.1;margin-bottom:40px}}.intro h1 strong{color:var(--primary);font-weight:500}.intro h2{font-size:28px;line-height:1.3;color:var(--on-surface);font-weight:400}@media(min-width:767px){.intro h2{width:100%}}.intro p{font-size:16px;line-height:1.6;color:var(--on-surface-variant)}@media(min-width:767px){.intro p{width:100%;font-size:18px}}.summary{margin-bottom:32px;font-size:16px;line-height:1.5;border-bottom:1px solid var(--outline-variant);padding-bottom:24px;transition:all .3s ease}@media(min-width:767px){.summary{margin-bottom:48px;font-size:16px;line-height:1.5;padding-bottom:32px}}.summary:hover{transform:translateX(4px)}.summary .summary-date{font-weight:500;color:var(--on-surface-variant);font-size:14px;text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}.summary .summary-title{margin:12px 0;width:100%;font-size:24px;line-height:1.3;color:var(--on-surface);font-weight:500;font-family:inter,sans-serif;transition:color .2s ease}@media(min-width:767px){.summary .summary-title{width:100%;font-size:32px;line-height:1.2}}.summary .summary-title:hover{color:var(--primary)}.summary .summary-description{width:100%;line-height:1.6;color:var(--on-surface-variant);margin-top:12px}.menu-main{display:none;flex:0;font-family:inter,sans-serif}@media(min-width:992px){.menu-main{display:block}}.menu-main>ul{display:flex;align-items:center;justify-content:flex-start}.menu-main>ul>li{margin-right:10px}.menu-main>ul>li>a{display:inline-block;text-decoration:none}.menu-main>ul>li>a:hover{text-decoration:underline}.menu-main>ul>li.active>a{display:inline-block;font-weight:700}.menu-main>ul>li:last-of-type{margin-right:0}.menu-main-mobile{position:fixed;background:var(--surface);backdrop-filter:blur(10px);top:0;left:0;width:100%;height:100vh;opacity:0;visibility:hidden;transition:opacity .35s,visibility .35s,height .35s;overflow:hidden;display:none;justify-content:center;flex-direction:column}.menu-main-mobile.open{opacity:1;visibility:visible;height:100%;z-index:10;display:flex}.menu-main-mobile.open li{animation:fadeInTop .5s ease forwards;animation-delay:.1s}.menu-main-mobile.open li:nth-of-type(2){animation-delay:.15s}.menu-main-mobile.open li:nth-of-type(3){animation-delay:.2s}.menu-main-mobile.open li:nth-of-type(4){animation-delay:.25s}.menu-main-mobile.open li:nth-of-type(5){animation-delay:.3s}.menu-main-mobile.open li:nth-of-type(6){animation-delay:.35s}.menu-main-mobile ul{font-size:2rem;font-family:var(--font-family-heading);text-align:center;list-style:none;margin:0;padding:2rem 0;flex:0}.menu-main-mobile ul li{display:block;position:relative;opacity:0;margin:1.2rem 0;padding:.5rem 0}.menu-main-mobile ul li a{display:block;position:relative;color:var(--on-surface);font-family:var(--font-family-heading);font-weight:700;font-size:2.5rem;padding:1rem 2rem;line-height:1.2;text-decoration:none}.menu-main-mobile ul li a:hover{opacity:.7}.menu-main-mobile ul li ul.sub-menu{font-size:1.2rem}.hamburger-trigger{height:30px;display:flex;align-items:center}@media(min-width:992px){.hamburger-trigger{display:none}}.hamburger{border:none;cursor:pointer;outline:none;position:relative;display:block;width:30px;height:20px;background:0 0;border-top:2px solid;border-bottom:2px solid;font-size:0;transition:all .25s ease-in-out;color:var(--highlight-color)}.hamburger:before,.hamburger:after{content:'';display:block;width:100%;height:2px;position:absolute;top:50%;left:50%;background:currentColor;transform:translate(-50%,-50%);transition:transform .25s ease-in-out}.hamburger:hover{opacity:.7}.hamburger.is-active{border-color:transparent;z-index:100;color:var(--base-color)}.hamburger.is-active:hover{opacity:1}.hamburger.is-active:before{transform:translate(-50%,-50%)rotate(45deg)}.hamburger.is-active:after{transform:translate(-50%,-50%)rotate(-45deg)}@keyframes fadeInTop{0%{opacity:0;top:20%}100%{opacity:1;top:0}}.contact-page .contact-title{font-size:48px;font-family:var(--font-family-heading);font-weight:400;margin-top:0;margin-bottom:24px;color:var(--on-surface)}@media(min-width:767px){.contact-page .contact-title{font-size:56px}}.contact-page .contact-intro{margin-bottom:40px}.contact-page .contact-intro p{font-size:16px;line-height:1.6;color:var(--on-surface-variant)}@media(min-width:767px){.contact-page .contact-intro p{font-size:18px}}.contact-page .contact-social{display:flex;flex-direction:column;gap:16px;margin-top:16px}.contact-page .contact-social-item{display:flex;flex-direction:column;gap:4px;padding:20px 24px;border:1px solid var(--outline-variant);border-radius:var(--border-radius);text-decoration:none;background:var(--surface-container-low);transition:background .2s ease,border-color .2s ease}.contact-page .contact-social-item:hover{background:var(--surface-container);border-color:var(--outline);text-decoration:none}@media(min-width:767px){.contact-page .contact-social-item{flex-direction:row;align-items:center;justify-content:space-between;gap:24px}}.contact-page .contact-social-name{font-family:var(--font-family-heading);font-size:22px;font-weight:400;color:var(--on-surface);flex-shrink:0}.contact-page .contact-social-desc{font-size:14px;color:var(--on-surface-variant);line-height:1.4}.highlight{background:#f5f5f5}.highlight .hll{background-color:#ffc}.highlight .c{color:#998;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{color:#000;font-weight:700}.highlight .o{color:#000;font-weight:700}.highlight .cm{color:#998;font-style:italic}.highlight .cp{color:#999;font-weight:700;font-style:italic}.highlight .c1{color:#998;font-style:italic}.highlight .cs{color:#999;font-weight:700;font-style:italic}.highlight .gd{color:#000;background-color:#fdd}.highlight .ge{color:#000;font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{color:#000;background-color:#dfd}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:700}.highlight .gu{color:#aaa}.highlight .gt{color:#a00}.highlight .kc{color:#000;font-weight:700}.highlight .kd{color:#000;font-weight:700}.highlight .kn{color:#000;font-weight:700}.highlight .kp{color:#000;font-weight:700}.highlight .kr{color:#000;font-weight:700}.highlight .kt{color:#458;font-weight:700}.highlight .m{color:#099}.highlight .s{color:#d01040}.highlight .na{color:teal}.highlight .nb{color:#0086b3}.highlight .nc{color:#458;font-weight:700}.highlight .no{color:teal}.highlight .nd{color:#3c5d5d;font-weight:700}.highlight .ni{color:purple}.highlight .ne{color:#900;font-weight:700}.highlight .nf{color:#900;font-weight:700}.highlight .nl{color:#900;font-weight:700}.highlight .nn{color:#555}.highlight .nt{color:navy}.highlight .nv{color:teal}.highlight .ow{color:#000;font-weight:700}.highlight .w{color:#bbb}.highlight .mf{color:#099}.highlight .mh{color:#099}.highlight .mi{color:#099}.highlight .mo{color:#099}.highlight .sb{color:#d01040}.highlight .sc{color:#d01040}.highlight .sd{color:#d01040}.highlight .s2{color:#d01040}.highlight .se{color:#d01040}.highlight .sh{color:#d01040}.highlight .si{color:#d01040}.highlight .sx{color:#d01040}.highlight .sr{color:#009926}.highlight .s1{color:#d01040}.highlight .ss{color:#990073}.highlight .bp{color:#999}.highlight .vc{color:teal}.highlight .vg{color:teal}.highlight .vi{color:teal}.highlight .il{color:#099}html,body{box-sizing:border-box}body{background:var(--surface);font-family:var(--font-family-paragraph);color:var(--on-surface);margin:0;padding:16px;overflow-x:hidden;line-height:1.5;transition:background-color .3s ease,color .3s ease}@media(min-width:767px){body{padding:24px}}body.frame{min-height:100vh;border:18px solid var(--primary)}.wrapper{max-width:1e3px;margin:0 auto} \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..d7cf960 --- /dev/null +++ b/index.html @@ -0,0 +1,262 @@ + + + + + + + + bullshark369.org - Test Manager | QA Specialist in Lausanne + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+ + +
+

bullshark

+ +

+

Welcome

+

I am one individual who bought a .org domain because thats silly. I wont introduce myself here because you can go to ‘About’ to see that.

+

This is where I post sometimes informative rants about network engineering, pc building, programming, and other similar things.

+
+

Me

+

Career

+

I am a network engineer and will not disclose specifics. I do a lot of LAN work and network architecture as opposed to the more usual help desk, service deployment, +or network maintenance.

+

I do intend to switch fields of work and do cloud or network engineering for a different company within the future.

+

Education

+

I currently am in college for cloud and network engineering. My current certs include A+, ITIL 4, and LPI 010. However, I have 3 CompTIA certs in my degree and plan on getting +my CCNA, terraforge associate, and AWS SAA-C03.

+

Experience

+

Well obviously Hugo, Caddy, vps management, Linux, git, HTML, CSS, and SSH. That is everything I needed to make this website.

+

However I do have a large list of skills and softwares, as well as a large base fundamental knowledge of how these tools work. I don’t care to list them all as it feels +pointless, however, you can see all of my (recent as of writing this) experiences I thought were notable on the blog page.

+
+

My equipment

+

Dell Optiplex 3060

+

Specs: Intel I5-8500 | 16GB DDR4 RAM | 250GB NVMe | +4x1GiB NIC

+

Current purpose: Running OPNsense in a ProxmoxVM. Firewall & router

+

Main home server

+

Specs: Ryzen 9-5900XT | 32GB DDR4 RAM | 2TB NVMe

+

Current purpose: Hypervisor is Proxmox. Hosts adguard home for DNS a presistent IRC client.

+

Personal PC

+

Specs: Ryzen 9-9800X3D | 64GB DDR5 RAM | 2TB NVMe | RTX 3080

+

Current purpose: Almost all of my personal computer needs, network management, SSH etc. I have Arch Linux with a lightly customized KDE Plasma & BTFRS subvolumes. I would +switch to ext4 but I tried something new when installing it and it surprisingly is stable so now I’m too lazy.

+

Thinkpad T14s gen3

+

Specs: Ryzen 7 PRO 6850U | 32GB DDR5 | 512GB NVME | 14" 1920x1200 | Debian 13.6 with Cinnamon DE.

+

Currnet purpose: My main personal work, travel, and leisure laptop. I’ve never had a laptop I cared about, trusted, or valued, and this is finally that. Also it starts into +tty mode as I don’t need a DE for a lot of things.

+

Laptop 2

+

Specs: Some 11th gen I7 | 4050 | 16gb DDR4 | 512GB NVMe | Debian 13.6 Cinnamon

+

Current purpose: Isolated windows laptop because my college requires it sometimes and I don’t dual boot or do VMs for windows.

+

Laptop 3

+

Specs: Im not entirely sure, I think 8th gen I5 & 8gb DDR4 ram + 512GB NVMe. Its a dell latitude 7480

+

Current purpose: Just a burner laptop I reinstall a new OS on every time I find I need a laptop for a specific purpose. Usually for travel because it was cheap and I don’t +mind if it gets broken

+
+

My ideology

+

I dislike the amount of politics in software development currently. People hating good things because of the person that made it. I entirely beleive you seperate the +creation from the creator. That if someone does something bad you don’t make it worse by throwing away the good they have done. If you say “I don’t like X because it was +made by Y”, you’ve just stated you made your ability to objectively observe something benign in the pursuit of bias.

+
+ +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/index.xml b/index.xml new file mode 100644 index 0000000..4d8a080 --- /dev/null +++ b/index.xml @@ -0,0 +1,80 @@ + + + + bullshark on bullshark369.org + http://localhost:1313/ + Recent content in bullshark on bullshark369.org + Hugo + en-us + + + + + Wed, 05 Aug 2026 00:00:00 +0000 + + + + About + http://localhost:1313/about/ + Wed, 05 Aug 2026 00:00:00 +0000 + http://localhost:1313/about/ + <hr> <h1 id="me">Me</h1> <h3 id="career">Career</h3> <p>I am a network engineer and will not disclose specifics. I do a lot of LAN work and network architecture as opposed to the more usual help desk, service deployment, or network maintenance.</p> <p>I do intend to switch fields of work and do cloud or network engineering for a different company within the future.</p> <h3 id="education">Education</h3> <p>I currently am in college for cloud and network engineering. My current certs include A+, ITIL 4, and LPI 010. However, I have 3 CompTIA certs in my degree and plan on getting my CCNA, terraforge associate, and AWS SAA-C03.</p> + + + Contact + http://localhost:1313/pages/contact/ + Wed, 05 Aug 2026 00:00:00 +0000 + http://localhost:1313/pages/contact/ + <p>Here is some more of me, incase you are curious.</p> + + + Hugo & caddy + http://localhost:1313/posts/caddy/ + Wed, 05 Aug 2026 00:00:00 +0000 + http://localhost:1313/posts/caddy/ + <h1 id="hugo">Hugo</h1> <p>Don&rsquo;t get me wrong, Hugo is well made and &ldquo;easy to use&rdquo;. However, it is not at all intuitive. Once you know it its amazing, if you don&rsquo;t its terrible.</p> <h1 id="caddy">Caddy</h1> <p>Caddy is much more straght forward for simple webserver use than nginx.</p> <table> <thead> <tr> <th>Thing</th> <th>Place</th> </tr> </thead> <tbody> <tr> <td>Config file</td> <td>/etc/caddy/Caddyfile</td> </tr> <tr> <td>Content</td> <td>/www/var/web.site/</td> </tr> <tr> <td>SSL</td> <td>/etc/caddy/ssl/</td> </tr> </tbody> </table> + + + VPS proxies with wireguard tunnels + http://localhost:1313/posts/wireguard/ + Sat, 25 Jul 2026 00:00:00 +0000 + http://localhost:1313/posts/wireguard/ + <h2 id="quick-guide">Quick guide</h2> <pre tabindex="0"><code>apt update &amp;&amp; apt upgrade apt install wireguard-tools git go iptables git clone https://github.com/bullshar-k/wg.conf cd wgconf go build main.go ./main -peer 10 -dest server_ip -port 51855 mv server.conf /etc/wireguard wg-quick up server </code></pre><p>From there you move the client 1-10 onto the appropriate clients and use wg-quick up on them too. Depending on your VPS you may need traffic forwarding post up rules like this;</p> <pre tabindex="0"><code>PostUp = iptables -A FORWARD -i server -j ACCEPT PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i server -j ACCEPT PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE </code></pre><p><em>If it isn&rsquo;t apparent this goes in the <code>[INTERFACE]</code> section after the interface info before the first <code>[PEER]</code> Ensure <code>server</code> is the name of the .conf file as that will be the name of the interface, and <code>eth0</code> is the name of your WAN facing NIC interface.</em></p> + + + Self hosting monero node + http://localhost:1313/posts/monero/ + Fri, 24 Jul 2026 00:00:00 +0000 + http://localhost:1313/posts/monero/ + <hr> <h2 id="on-server">On server</h2> <pre tabindex="0"><code>apt update &amp;&amp; apt update apt install monero monerod --datadir ~/.bitmoner --prune-blockchain // ^ THIS WILL TAKE 2-6 DAYS DEPENDING ON INTERNET SPEED monerod --rpc-bind-ip=0.0.0.0 --rpc-bind-port=18081 --confirm-external-bind // ^ ONLY DO THIS IF USING LAN ONLY </code></pre><p>Took long, super easy though.</p> <hr> <h2 id="on-client">On client</h2> <pre tabindex="0"><code>sudo pacman -S monero // then add to bashRC alias wallert=&#34;monero-wallet-cli --wallet /wallet/address/path --daemon-address 192.168.1.67:18081 --trusted-daemon&#34; </code></pre><p>This way when I type wallert it opens my wallet, and I don&rsquo;t need a lengthy command.</p> + + + OpenRC vs SystemD + http://localhost:1313/posts/benchmark/ + Tue, 21 Jul 2026 00:00:00 +0000 + http://localhost:1313/posts/benchmark/ + <p>Both tests were done separately, not in concurrency, with the same background activity on the host machine. Scores are difference from Arch - Artix. If the number is positive Arch scored higher. Percent diffs are calcualted as follows: 100(|diff|/arch&rsquo;s score)</p> <p>Gentoo wiki has an article with the breakdown comparison of these two @<a href="https://wiki.gentoo.org/wiki/Comparison_of_init_systems">Comparison of init systems</a></p> <hr> <h2 id="environment">Environment</h2> <table> <thead> <tr> <th>Ram</th> <th>Swap</th> <th>Storage</th> <th>Filesys</th> <th>DE</th> <th>Compiler</th> <th>Benchmark</th> </tr> </thead> <tbody> <tr> <td>16GiB</td> <td>None</td> <td>50GiB NVMe</td> <td>ext4</td> <td>none, TTY</td> <td>GCC 13.3.0</td> <td>FOSSbench</td> </tr> </tbody> </table> <hr> <h2 id="results">Results</h2> <table> <thead> <tr> <th>Native integer math</th> <th>Wide integer math</th> <th>Floating point math</th> <th>Prime numbers</th> <th>Extended instructions</th> <th>Compression</th> <th>Encryption</th> <th>Physics</th> <th>Sorting</th> <th>Memory latency</th> <th>Memory bandwidth</th> </tr> </thead> <tbody> <tr> <td>-514.3</td> <td>-689.5</td> <td>277</td> <td>-44.5</td> <td>492.2</td> <td>2079.9</td> <td>213</td> <td>78</td> <td>224</td> <td>-4</td> <td>15568.7</td> </tr> <tr> <td>-0.41%</td> <td>-0.59%</td> <td>1.34%</td> <td>-0.35%</td> <td>0.19%</td> <td>20.66%</td> <td>2.4%</td> <td>2.53%</td> <td>6.94%</td> <td>-5.39%</td> <td>9.04%</td> </tr> </tbody> </table> + + + OPNsense + http://localhost:1313/posts/opnsense/ + Fri, 19 Jun 2026 00:00:00 +0000 + http://localhost:1313/posts/opnsense/ + <h2 id="opinion">Opinion</h2> <p>OPNsense is built on FreeBSD which has a broken network stack. The devs are great but I can&rsquo;t recommend it. Use VyOS. Also, having to configure 11 different areas in a website to set up a wireguard tunnel sucks compared to CLI where you just put <code>wireguard.conf</code>in <code>/etc/wireguard/</code> and run <code>wg-quick up wireguard</code>.</p> + + + Proxmox + http://localhost:1313/posts/proxmox/ + Fri, 19 Jun 2026 00:00:00 +0000 + http://localhost:1313/posts/proxmox/ + <h2 id="opinion">Opinion</h2> <p>I run proxmox on two PCs. A dell optiplex and a custom built server focused PC. The Optiplex handles my firewall and the other PC handles DNS and some other services. Genuinely an amazing free piece of sotware. Much better than ESXi. From the networking, to the UI, to the virtualization, it is a great type 1 hypervisor.</p> <h2 id="how-to">How to</h2> <h3 id="flash-proxmox-onto-drive">Flash proxmox onto drive</h3> <pre tabindex="0"><code>sudo wipefs -af /dev/sda sudo dd if=proxmox.iso of=/dev/sda bs=4M conv=fsync sync &amp;&amp; sync sudo eject /dev/sda </code></pre><h3 id="allow-bios-to-do-things">Allow BIOS to do things</h3> <ul> <li>Set proxmox USB to top of boot priority</li> <li>Turn off secure boot</li> <li>Enable KVM &amp; IOMMU</li> <li>Enable above 4G decoding</li> <li>Disable wait for F1 when errors This is really annoying, it will wait for you to press F1 if it detects an error, running it headless with no output at all will cause an error, making you have to plug a keyboard into your server and press F1.</li> <li>Disable secure boot or set to &ldquo;other os&rdquo;</li> <li>Ensure secure boot allows UEFI USB boot</li> </ul> <h3 id="installation">Installation</h3> <p>It will boot, and you literaly just answer your way through the setup prompts. Super easy.</p> + + + Linux + http://localhost:1313/posts/linux/ + Sun, 01 Feb 2026 00:00:00 +0000 + http://localhost:1313/posts/linux/ + <h2 id="preamble">Preamble</h2> <p>I was already familiar with Linux and had used it on this date, however, I had stopped playing Tarkov which had kept me on Windows. So on this date I switched. I pretty quickly went mint -&gt; cachy -&gt; arch in the course of a week or so.</p> <h2 id="tierlist">Tierlist</h2> <table> <thead> <tr> <th>S</th> <th>Arch Alpine</th> </tr> </thead> <tbody> <tr> <td>A</td> <td>Artix NixOS Mint Cachy Debian Fedora</td> </tr> <tr> <td>B</td> <td>Ubuntu Endeavour Gentoo</td> </tr> <tr> <td>C</td> <td>Bazzite CentOS</td> </tr> </tbody> </table> + + + diff --git a/js/bundle.js b/js/bundle.js new file mode 100644 index 0000000..d8234c5 --- /dev/null +++ b/js/bundle.js @@ -0,0 +1,12 @@ +var body = document.querySelector('body'); +var menuTrigger = document.querySelector('#toggle-menu-main-mobile'); +var menuContainer = document.querySelector('#menu-main-mobile'); +var hamburgerIcon = document.querySelector('.hamburger'); + +if (menuTrigger !== null) { + menuTrigger.addEventListener('click', function(e) { + menuContainer.classList.toggle('open'); + hamburgerIcon.classList.toggle('is-active'); + body.classList.toggle('lock-scroll'); + }); +} diff --git a/js/bundle.min.5993fcb11c07dea925a3fbd58c03c7f1857197c35fccce3aa963a12c0b3c9960.js b/js/bundle.min.5993fcb11c07dea925a3fbd58c03c7f1857197c35fccce3aa963a12c0b3c9960.js new file mode 100644 index 0000000..d063670 --- /dev/null +++ b/js/bundle.min.5993fcb11c07dea925a3fbd58c03c7f1857197c35fccce3aa963a12c0b3c9960.js @@ -0,0 +1 @@ +var body=document.querySelector("body"),menuTrigger=document.querySelector("#toggle-menu-main-mobile"),menuContainer=document.querySelector("#menu-main-mobile"),hamburgerIcon=document.querySelector(".hamburger");menuTrigger!==null&&menuTrigger.addEventListener("click",function(){menuContainer.classList.toggle("open"),hamburgerIcon.classList.toggle("is-active"),body.classList.toggle("lock-scroll")}) \ No newline at end of file diff --git a/pages/contact/index.html b/pages/contact/index.html new file mode 100644 index 0000000..d481806 --- /dev/null +++ b/pages/contact/index.html @@ -0,0 +1,221 @@ + + + + + + + Contact - bullshark369.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+ +
+

Contact

+ + +

Here is some more of me, incase you are curious.

+
+ + + +
+ + + + GitHub + Incase you are curious + + + + + + Email + Get in touch directly + + + + + + + +
+ +
+ + + + + +
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pages/index.html b/pages/index.html new file mode 100644 index 0000000..cd5cb00 --- /dev/null +++ b/pages/index.html @@ -0,0 +1,198 @@ + + + + + + + Pages - bullshark369.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+ +
+

Pages

+ +
+ + +
+
Aug 5, 2026
+

Contact

+

Get in touch

+
+ + + + + + +
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pages/index.xml b/pages/index.xml new file mode 100644 index 0000000..8f41a0c --- /dev/null +++ b/pages/index.xml @@ -0,0 +1,24 @@ + + + + Pages on bullshark369.org + http://localhost:1313/pages/ + Recent content in Pages on bullshark369.org + Hugo + en-us + + + + + Wed, 05 Aug 2026 00:00:00 +0000 + + + + Contact + http://localhost:1313/pages/contact/ + Wed, 05 Aug 2026 00:00:00 +0000 + http://localhost:1313/pages/contact/ + <p>Here is some more of me, incase you are curious.</p> + + + diff --git a/posts/benchmark/index.html b/posts/benchmark/index.html new file mode 100644 index 0000000..cd0ed2d --- /dev/null +++ b/posts/benchmark/index.html @@ -0,0 +1,270 @@ + + + + + + + OpenRC vs SystemD - bullshark369.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+ +
+
+

OpenRC vs SystemD

+ +
+
+

Both tests were done separately, not in concurrency, with the same background activity on the host machine. Scores are difference from Arch - Artix. If the number is positive Arch scored higher. Percent diffs are calcualted as follows: 100(|diff|/arch’s score)

+

Gentoo wiki has an article with the breakdown comparison of these two @Comparison of init systems

+
+

Environment

+ + + + + + + + + + + + + + + + + + + + + + + +
RamSwapStorageFilesysDECompilerBenchmark
16GiBNone50GiB NVMeext4none, TTYGCC 13.3.0FOSSbench
+
+

Results

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Native integer mathWide integer mathFloating point mathPrime numbersExtended instructionsCompressionEncryptionPhysicsSortingMemory latencyMemory bandwidth
-514.3-689.5277-44.5492.22079.921378224-415568.7
-0.41%-0.59%1.34%-0.35%0.19%20.66%2.4%2.53%6.94%-5.39%9.04%
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/posts/caddy/index.html b/posts/caddy/index.html new file mode 100644 index 0000000..0a68e72 --- /dev/null +++ b/posts/caddy/index.html @@ -0,0 +1,221 @@ + + + + + + + Hugo & caddy - bullshark369.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+ +
+
+

Hugo & caddy

+ +
+
+

Hugo

+

Don’t get me wrong, Hugo is well made and “easy to use”. However, it is not at all intuitive. Once you know it its amazing, if you don’t its terrible.

+

Caddy

+

Caddy is much more straght forward for simple webserver use than nginx.

+ + + + + + + + + + + + + + + + + + + + + +
ThingPlace
Config file/etc/caddy/Caddyfile
Content/www/var/web.site/
SSL/etc/caddy/ssl/
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/posts/caddy0805 b/posts/caddy0805 new file mode 100644 index 0000000..0e7e1ef --- /dev/null +++ b/posts/caddy0805 @@ -0,0 +1,8 @@ +--- +title: "Hello World" +date: 2026-08-05 +draft: false +description: "The obligatory first post." +--- + +This is your first post. The file name `hello-world` becomes the URL `/posts/hello-world/`, and the front matter `description` shows in the post summary on the Blog and homepage listings. diff --git a/posts/hello-world/index.html b/posts/hello-world/index.html new file mode 100644 index 0000000..8895734 --- /dev/null +++ b/posts/hello-world/index.html @@ -0,0 +1,210 @@ + + + + + + + Hello World - bullshark369.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+ +
+
+

Hello World

+ +
+
+

This is your first post. The file name hello-world becomes the URL /posts/hello-world/, and the front matter description shows in the post summary on the Blog and homepage listings.

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/posts/index.html b/posts/index.html new file mode 100644 index 0000000..ef9463c --- /dev/null +++ b/posts/index.html @@ -0,0 +1,237 @@ + + + + + + + Blog - bullshark369.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+ +
+

Blog

+

The afformentioned sometimes informative rants.

+
+
+

All posts, newest first, bias included.

+ + + +
+
Aug 5, 2026
+

Hugo & caddy

+

Migrating bullshark369.org from nginx w/ static HTML to caddy with hugo made pages

+
+ +
+
Jul 25, 2026
+

VPS proxies with wireguard tunnels

+

The most private VPN is your own

+
+ +
+
Jul 24, 2026
+

Self hosting monero node

+

Straightforward process with little fluff

+
+ +
+
Jul 21, 2026
+

OpenRC vs SystemD

+

A likely slightly innacurate benchmark of OpenRC vs SystemD in CPU math operations

+
+ +
+
Jun 19, 2026
+

OPNsense

+

Small rant

+
+ +
+
Jun 19, 2026
+

Proxmox

+

My great experience with proxmox on 2 different servers

+
+ +
+
Feb 1, 2026
+

Linux

+

My initial experience with Linux

+
+ + + + + + +
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/posts/index.xml b/posts/index.xml new file mode 100644 index 0000000..2049159 --- /dev/null +++ b/posts/index.xml @@ -0,0 +1,66 @@ + + + + Blog on bullshark369.org + http://localhost:1313/posts/ + Recent content in Blog on bullshark369.org + Hugo + en-us + + + + + Wed, 05 Aug 2026 00:00:00 +0000 + + + + Hugo & caddy + http://localhost:1313/posts/caddy/ + Wed, 05 Aug 2026 00:00:00 +0000 + http://localhost:1313/posts/caddy/ + <h1 id="hugo">Hugo</h1> <p>Don&rsquo;t get me wrong, Hugo is well made and &ldquo;easy to use&rdquo;. However, it is not at all intuitive. Once you know it its amazing, if you don&rsquo;t its terrible.</p> <h1 id="caddy">Caddy</h1> <p>Caddy is much more straght forward for simple webserver use than nginx.</p> <table> <thead> <tr> <th>Thing</th> <th>Place</th> </tr> </thead> <tbody> <tr> <td>Config file</td> <td>/etc/caddy/Caddyfile</td> </tr> <tr> <td>Content</td> <td>/www/var/web.site/</td> </tr> <tr> <td>SSL</td> <td>/etc/caddy/ssl/</td> </tr> </tbody> </table> + + + VPS proxies with wireguard tunnels + http://localhost:1313/posts/wireguard/ + Sat, 25 Jul 2026 00:00:00 +0000 + http://localhost:1313/posts/wireguard/ + <h2 id="quick-guide">Quick guide</h2> <pre tabindex="0"><code>apt update &amp;&amp; apt upgrade apt install wireguard-tools git go iptables git clone https://github.com/bullshar-k/wg.conf cd wgconf go build main.go ./main -peer 10 -dest server_ip -port 51855 mv server.conf /etc/wireguard wg-quick up server </code></pre><p>From there you move the client 1-10 onto the appropriate clients and use wg-quick up on them too. Depending on your VPS you may need traffic forwarding post up rules like this;</p> <pre tabindex="0"><code>PostUp = iptables -A FORWARD -i server -j ACCEPT PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i server -j ACCEPT PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE </code></pre><p><em>If it isn&rsquo;t apparent this goes in the <code>[INTERFACE]</code> section after the interface info before the first <code>[PEER]</code> Ensure <code>server</code> is the name of the .conf file as that will be the name of the interface, and <code>eth0</code> is the name of your WAN facing NIC interface.</em></p> + + + Self hosting monero node + http://localhost:1313/posts/monero/ + Fri, 24 Jul 2026 00:00:00 +0000 + http://localhost:1313/posts/monero/ + <hr> <h2 id="on-server">On server</h2> <pre tabindex="0"><code>apt update &amp;&amp; apt update apt install monero monerod --datadir ~/.bitmoner --prune-blockchain // ^ THIS WILL TAKE 2-6 DAYS DEPENDING ON INTERNET SPEED monerod --rpc-bind-ip=0.0.0.0 --rpc-bind-port=18081 --confirm-external-bind // ^ ONLY DO THIS IF USING LAN ONLY </code></pre><p>Took long, super easy though.</p> <hr> <h2 id="on-client">On client</h2> <pre tabindex="0"><code>sudo pacman -S monero // then add to bashRC alias wallert=&#34;monero-wallet-cli --wallet /wallet/address/path --daemon-address 192.168.1.67:18081 --trusted-daemon&#34; </code></pre><p>This way when I type wallert it opens my wallet, and I don&rsquo;t need a lengthy command.</p> + + + OpenRC vs SystemD + http://localhost:1313/posts/benchmark/ + Tue, 21 Jul 2026 00:00:00 +0000 + http://localhost:1313/posts/benchmark/ + <p>Both tests were done separately, not in concurrency, with the same background activity on the host machine. Scores are difference from Arch - Artix. If the number is positive Arch scored higher. Percent diffs are calcualted as follows: 100(|diff|/arch&rsquo;s score)</p> <p>Gentoo wiki has an article with the breakdown comparison of these two @<a href="https://wiki.gentoo.org/wiki/Comparison_of_init_systems">Comparison of init systems</a></p> <hr> <h2 id="environment">Environment</h2> <table> <thead> <tr> <th>Ram</th> <th>Swap</th> <th>Storage</th> <th>Filesys</th> <th>DE</th> <th>Compiler</th> <th>Benchmark</th> </tr> </thead> <tbody> <tr> <td>16GiB</td> <td>None</td> <td>50GiB NVMe</td> <td>ext4</td> <td>none, TTY</td> <td>GCC 13.3.0</td> <td>FOSSbench</td> </tr> </tbody> </table> <hr> <h2 id="results">Results</h2> <table> <thead> <tr> <th>Native integer math</th> <th>Wide integer math</th> <th>Floating point math</th> <th>Prime numbers</th> <th>Extended instructions</th> <th>Compression</th> <th>Encryption</th> <th>Physics</th> <th>Sorting</th> <th>Memory latency</th> <th>Memory bandwidth</th> </tr> </thead> <tbody> <tr> <td>-514.3</td> <td>-689.5</td> <td>277</td> <td>-44.5</td> <td>492.2</td> <td>2079.9</td> <td>213</td> <td>78</td> <td>224</td> <td>-4</td> <td>15568.7</td> </tr> <tr> <td>-0.41%</td> <td>-0.59%</td> <td>1.34%</td> <td>-0.35%</td> <td>0.19%</td> <td>20.66%</td> <td>2.4%</td> <td>2.53%</td> <td>6.94%</td> <td>-5.39%</td> <td>9.04%</td> </tr> </tbody> </table> + + + OPNsense + http://localhost:1313/posts/opnsense/ + Fri, 19 Jun 2026 00:00:00 +0000 + http://localhost:1313/posts/opnsense/ + <h2 id="opinion">Opinion</h2> <p>OPNsense is built on FreeBSD which has a broken network stack. The devs are great but I can&rsquo;t recommend it. Use VyOS. Also, having to configure 11 different areas in a website to set up a wireguard tunnel sucks compared to CLI where you just put <code>wireguard.conf</code>in <code>/etc/wireguard/</code> and run <code>wg-quick up wireguard</code>.</p> + + + Proxmox + http://localhost:1313/posts/proxmox/ + Fri, 19 Jun 2026 00:00:00 +0000 + http://localhost:1313/posts/proxmox/ + <h2 id="opinion">Opinion</h2> <p>I run proxmox on two PCs. A dell optiplex and a custom built server focused PC. The Optiplex handles my firewall and the other PC handles DNS and some other services. Genuinely an amazing free piece of sotware. Much better than ESXi. From the networking, to the UI, to the virtualization, it is a great type 1 hypervisor.</p> <h2 id="how-to">How to</h2> <h3 id="flash-proxmox-onto-drive">Flash proxmox onto drive</h3> <pre tabindex="0"><code>sudo wipefs -af /dev/sda sudo dd if=proxmox.iso of=/dev/sda bs=4M conv=fsync sync &amp;&amp; sync sudo eject /dev/sda </code></pre><h3 id="allow-bios-to-do-things">Allow BIOS to do things</h3> <ul> <li>Set proxmox USB to top of boot priority</li> <li>Turn off secure boot</li> <li>Enable KVM &amp; IOMMU</li> <li>Enable above 4G decoding</li> <li>Disable wait for F1 when errors This is really annoying, it will wait for you to press F1 if it detects an error, running it headless with no output at all will cause an error, making you have to plug a keyboard into your server and press F1.</li> <li>Disable secure boot or set to &ldquo;other os&rdquo;</li> <li>Ensure secure boot allows UEFI USB boot</li> </ul> <h3 id="installation">Installation</h3> <p>It will boot, and you literaly just answer your way through the setup prompts. Super easy.</p> + + + Linux + http://localhost:1313/posts/linux/ + Sun, 01 Feb 2026 00:00:00 +0000 + http://localhost:1313/posts/linux/ + <h2 id="preamble">Preamble</h2> <p>I was already familiar with Linux and had used it on this date, however, I had stopped playing Tarkov which had kept me on Windows. So on this date I switched. I pretty quickly went mint -&gt; cachy -&gt; arch in the course of a week or so.</p> <h2 id="tierlist">Tierlist</h2> <table> <thead> <tr> <th>S</th> <th>Arch Alpine</th> </tr> </thead> <tbody> <tr> <td>A</td> <td>Artix NixOS Mint Cachy Debian Fedora</td> </tr> <tr> <td>B</td> <td>Ubuntu Endeavour Gentoo</td> </tr> <tr> <td>C</td> <td>Bazzite CentOS</td> </tr> </tbody> </table> + + + diff --git a/posts/linux/index.html b/posts/linux/index.html new file mode 100644 index 0000000..b736e10 --- /dev/null +++ b/posts/linux/index.html @@ -0,0 +1,221 @@ + + + + + + + Linux - bullshark369.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+ +
+
+

Linux

+ +
+
+

Preamble

+

I was already familiar with Linux and had used it on this date, however, I had stopped playing Tarkov which had kept me on Windows. So on this date I switched. +I pretty quickly went mint -> cachy -> arch in the course of a week or so.

+

Tierlist

+ + + + + + + + + + + + + + + + + + + + + +
SArch Alpine
AArtix NixOS Mint Cachy Debian Fedora
BUbuntu Endeavour Gentoo
CBazzite CentOS
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/posts/monero/index.html b/posts/monero/index.html new file mode 100644 index 0000000..47e881e --- /dev/null +++ b/posts/monero/index.html @@ -0,0 +1,212 @@ + + + + + + + Self hosting monero node - bullshark369.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+ +
+
+

Self hosting monero node

+ +
+
+
+

On server

+
apt update && apt update
+apt install monero
+monerod --datadir ~/.bitmoner --prune-blockchain
+// ^ THIS WILL TAKE 2-6 DAYS DEPENDING ON INTERNET SPEED
+monerod --rpc-bind-ip=0.0.0.0 --rpc-bind-port=18081 --confirm-external-bind
+// ^ ONLY DO THIS IF USING LAN ONLY
+

Took long, super easy though.

+
+

On client

+
sudo pacman -S monero
+// then add to bashRC
+alias wallert="monero-wallet-cli --wallet /wallet/address/path --daemon-address 192.168.1.67:18081 --trusted-daemon"
+

This way when I type wallert it opens my wallet, and I don’t need a lengthy command.

+

Side note

+

I did forget (I swear I know what it is but it wasn’t working) the password to this VM. So I had to delete it and resync it TwT

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/posts/opnsense/index.html b/posts/opnsense/index.html new file mode 100644 index 0000000..b3bad09 --- /dev/null +++ b/posts/opnsense/index.html @@ -0,0 +1,198 @@ + + + + + + + OPNsense - bullshark369.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+ +
+
+

OPNsense

+ +
+
+

Opinion

+

OPNsense is built on FreeBSD which has a broken network stack. The devs are great but I can’t recommend it. Use VyOS. +Also, having to configure 11 different areas in a website to set up a wireguard tunnel sucks compared to CLI where you just put wireguard.confin /etc/wireguard/ and run wg-quick up wireguard.

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/posts/proxmox/index.html b/posts/proxmox/index.html new file mode 100644 index 0000000..f4374e6 --- /dev/null +++ b/posts/proxmox/index.html @@ -0,0 +1,218 @@ + + + + + + + Proxmox - bullshark369.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+ +
+
+

Proxmox

+ +
+
+

Opinion

+

I run proxmox on two PCs. A dell optiplex and a custom built server focused PC. The Optiplex handles my firewall and the other PC handles DNS and some other services. +Genuinely an amazing free piece of sotware. Much better than ESXi. From the networking, to the UI, to the virtualization, it is a great type 1 hypervisor.

+

How to

+

Flash proxmox onto drive

+
sudo wipefs -af /dev/sda
+sudo dd if=proxmox.iso of=/dev/sda bs=4M conv=fsync
+sync && sync
+sudo eject /dev/sda
+

Allow BIOS to do things

+
    +
  • Set proxmox USB to top of boot priority
  • +
  • Turn off secure boot
  • +
  • Enable KVM & IOMMU
  • +
  • Enable above 4G decoding
  • +
  • Disable wait for F1 when errors +This is really annoying, it will wait for you to press F1 if it detects an error, running it headless with no output at all will cause an error, making you have to plug +a keyboard into your server and press F1.
  • +
  • Disable secure boot or set to “other os”
  • +
  • Ensure secure boot allows UEFI USB boot
  • +
+

Installation

+

It will boot, and you literaly just answer your way through the setup prompts. Super easy.

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/posts/temp/index.html b/posts/temp/index.html new file mode 100644 index 0000000..3a767e3 --- /dev/null +++ b/posts/temp/index.html @@ -0,0 +1,195 @@ + + + + + + + t - bullshark369.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+ +
+
+

t

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/posts/template/index.html b/posts/template/index.html new file mode 100644 index 0000000..b94125d --- /dev/null +++ b/posts/template/index.html @@ -0,0 +1,210 @@ + + + + + + + t - bullshark369.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+ +
+
+

t

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/posts/wireguard/index.html b/posts/wireguard/index.html new file mode 100644 index 0000000..2673082 --- /dev/null +++ b/posts/wireguard/index.html @@ -0,0 +1,212 @@ + + + + + + + VPS proxies with wireguard tunnels - bullshark369.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+ +
+
+

VPS proxies with wireguard tunnels

+ +
+
+

Quick guide

+
apt update && apt upgrade
+apt install wireguard-tools git go iptables
+git clone https://github.com/bullshar-k/wg.conf
+cd wgconf
+go build main.go
+./main -peer 10 -dest server_ip -port 51855
+mv server.conf /etc/wireguard
+wg-quick up server
+

From there you move the client 1-10 onto the appropriate clients and use wg-quick up on them too. +Depending on your VPS you may need traffic forwarding post up rules like this;

+
PostUp = iptables -A FORWARD -i server -j ACCEPT
+PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
+PostDown = iptables -D FORWARD -i server -j ACCEPT
+PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
+

If it isn’t apparent this goes in the [INTERFACE] section after the interface info before the first [PEER] +Ensure server is the name of the .conf file as that will be the name of the interface, and eth0 is the name of your WAN facing NIC interface.

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..072cf2e --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,45 @@ + + + + http://localhost:1313/about/ + 2026-08-05T00:00:00+00:00 + + http://localhost:1313/posts/ + 2026-08-05T00:00:00+00:00 + + http://localhost:1313/ + 2026-08-05T00:00:00+00:00 + + http://localhost:1313/pages/contact/ + 2026-08-05T00:00:00+00:00 + + http://localhost:1313/posts/caddy/ + 2026-08-05T00:00:00+00:00 + + http://localhost:1313/pages/ + 2026-08-05T00:00:00+00:00 + + http://localhost:1313/posts/wireguard/ + 2026-07-25T00:00:00+00:00 + + http://localhost:1313/posts/monero/ + 2026-07-24T00:00:00+00:00 + + http://localhost:1313/posts/benchmark/ + 2026-07-21T00:00:00+00:00 + + http://localhost:1313/posts/opnsense/ + 2026-06-19T00:00:00+00:00 + + http://localhost:1313/posts/proxmox/ + 2026-06-19T00:00:00+00:00 + + http://localhost:1313/posts/linux/ + 2026-02-01T00:00:00+00:00 + + http://localhost:1313/categories/ + + http://localhost:1313/tags/ + + diff --git a/tags/index.html b/tags/index.html new file mode 100644 index 0000000..7e8e75e --- /dev/null +++ b/tags/index.html @@ -0,0 +1,192 @@ + + + + + + + Tags - bullshark369.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+ +
+

Tags

+ +
+ + + + + + + +
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tags/index.xml b/tags/index.xml new file mode 100644 index 0000000..9a8f36d --- /dev/null +++ b/tags/index.xml @@ -0,0 +1,15 @@ + + + + Tags on bullshark369.org + http://localhost:1313/tags/ + Recent content in Tags on bullshark369.org + Hugo + en-us + + + + + + +