Compare commits

...

2 commits

Author SHA1 Message Date
mossfet
bb1a6ddc80 Turned navigation panel into sidebar 2023-04-03 17:41:20 +01:00
mossfet
45c2888df8 Added projects and sites page 2023-04-02 22:52:59 +01:00
39 changed files with 130 additions and 1068 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
/public
public/

View file

@ -0,0 +1 @@
# Projects I have made

9
content/projects/life.md Normal file
View file

@ -0,0 +1,9 @@
---
title: Mossfet's Life
draft: true
---
Mossfet's Life is a [Conway's Game of Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life) implementation for the GNOME Platform, written with GTK4 and libadwaita. It uses Rust, and the [Relm4](https://relm4.org/) library to abstract over GTK's Rust bindings.
Source is available [here](https://git.solarpunk.moe/mossfet/game-of-life-gui)

12
content/sites/_index.md Normal file
View file

@ -0,0 +1,12 @@
# Sites I like
Sites that I enjoyed visiting
## Non-friends
* [Permacomputing Wiki](https://permacomputing.net/)
* [The Anarchist Library](http://theanarchistlibrary.org/)
## Friends
* [TakeV's site](https://ta-kev.digital/)

View file

@ -1,37 +0,0 @@
<!DOCTYPE html>
<html lang="en"><link rel="stylesheet" href="/css/style.css" type="text/css" media="all" />
<body>
<div style="margin: 2%"><header>
<nav class="navbar">
<a href="/index.xml"><img src="/images/feed.svg" style="height: 20px; width: 20px; float: left;" alt="RSS Feed"></a>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/links">Links</a></li>
<li><a href="https://git.solarpunk.moe/mossfet.site">Source</a></li>
</ul>
</nav>
</header>
<main id="main">
<div>
<h2>Oops!</h2>
<p>Looks like this page doesn't exist, or it does exist and I've broken something. (Error 404)</p>
<a href="/">Why don't you go home?</a>
</div>
</main>
<footer class="footer">
<div>
This site (frontend and backend) is licensed under the <a href="https://www.gnu.org/licenses/agpl-3.0.en.html">AGPLv3</a> or later, with images and text also available under the <a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">CC-BY-SA 4.0</a>, at your discretion.
</div>
<hr>
<div class="webring"><a href="https://fediring.net/previous?host=mossfet.xyz" title="Previous Webring site">Previous</a> <a href="https://fediring.net">Fediring</a> <a href="https://fediring.net/next?host=mossfet.xyz" title="Next webring site">Next</a></div>
</footer>
</div>
</body>
</html>

View file

@ -1,12 +0,0 @@
## Mossfet
* Pronouns: She/her or vi/vim
* Location: UK
* Fedi: @mossfet@solarpunk.moe [1]
## References
=> https://solarpunk.moe/@mossfet [1] @mossfet@solarpunk.moe (https://solarpunk.moe/@mossfet)=> / Back to the Index
=> https://mossfet.xyz//about/ View this article on the WWW

View file

@ -1,46 +0,0 @@
<!DOCTYPE html>
<html lang="en"><link rel="alternate" type="text/gemini" href="gemini://mossfet.xyz/about/index.gmi" title="Mossfet's site" />
<link rel="stylesheet" href="/css/style.css" type="text/css" media="all" />
<body>
<div style="margin: 2%"><header>
<nav class="navbar">
<a href="/index.xml"><img src="/images/feed.svg" style="height: 20px; width: 20px; float: left;" alt="RSS Feed"></a>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/links">Links</a></li>
<li><a href="https://git.solarpunk.moe/mossfet.site">Source</a></li>
</ul>
</nav>
</header>
<div class = "container border">
<div class = "section">
<div class = "content">
<h1 class="title"></h1>
<h2 id="mossfet">Mossfet</h2>
<ul>
<li>Pronouns: She/her or vi/vim</li>
<li>Location: UK</li>
<li>Fedi: <a href="https://solarpunk.moe/@mossfet">@mossfet@solarpunk.moe</a></li>
</ul>
</div>
</div>
</div>
<footer class="footer">
<div>
This site (frontend and backend) is licensed under the <a href="https://www.gnu.org/licenses/agpl-3.0.en.html">AGPLv3</a> or later, with images and text also available under the <a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">CC-BY-SA 4.0</a>, at your discretion.
</div>
<hr>
<div class="webring"><a href="https://fediring.net/previous?host=mossfet.xyz" title="Previous Webring site">Previous</a> <a href="https://fediring.net">Fediring</a> <a href="https://fediring.net/next?host=mossfet.xyz" title="Next webring site">Next</a></div>
</footer>
</div>
</body>
</html>

View file

@ -1,15 +0,0 @@
# Blog
I sometimes rant about computers here. I might talk about politics as well.
=> gemini://mossfet.xyz/blog/serverhost/index.gmi Hosting my website
=> gemini://mossfet.xyz/blog/newsite/index.gmi Reworking the site frontend
=> gemini://mossfet.xyz/blog/metaballs/index.gmi Metaballs
=> gemini://mossfet.xyz/blog/site/index.gmi I made a website
=> / Back to the Index
=> https://mossfet.xyz//blog/ View this article on the WWW

View file

@ -1,58 +0,0 @@
<!DOCTYPE html>
<html lang="en"><link rel="alternate" type="text/gemini" href="gemini://mossfet.xyz/blog/index.gmi" title="Mossfet's site" />
<link rel="stylesheet" href="/css/style.css" type="text/css" media="all" />
<body>
<div style="margin: 2%"><header>
<nav class="navbar">
<a href="/index.xml"><img src="/images/feed.svg" style="height: 20px; width: 20px; float: left;" alt="RSS Feed"></a>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/links">Links</a></li>
<li><a href="https://git.solarpunk.moe/mossfet.site">Source</a></li>
</ul>
</nav>
</header>
<div class = "container border">
<div class = "section">
<div class = "content">
<h1 class="title"></h1>
<h1 id="blog">Blog</h1>
<p>I sometimes rant about computers here. I might talk about politics as well.</p>
<ul>
<li><a href="https://mossfet.xyz/blog/serverhost/">Hosting my website (2/14/23)</a></li>
</ul>
<ul>
<li><a href="https://mossfet.xyz/blog/newsite/">Reworking the site frontend (8/31/22)</a></li>
</ul>
<ul>
<li><a href="https://mossfet.xyz/blog/metaballs/">Metaballs (5/17/22)</a></li>
</ul>
<ul>
<li><a href="https://mossfet.xyz/blog/site/">I made a website (5/17/22)</a></li>
</ul>
</div>
</div>
</div>
<footer class="footer">
<div>
This site (frontend and backend) is licensed under the <a href="https://www.gnu.org/licenses/agpl-3.0.en.html">AGPLv3</a> or later, with images and text also available under the <a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">CC-BY-SA 4.0</a>, at your discretion.
</div>
<hr>
<div class="webring"><a href="https://fediring.net/previous?host=mossfet.xyz" title="Previous Webring site">Previous</a> <a href="https://fediring.net">Fediring</a> <a href="https://fediring.net/next?host=mossfet.xyz" title="Next webring site">Next</a></div>
</footer>
</div>
</body>
</html>

View file

@ -1,46 +0,0 @@
# Metaballs
### 1: TIC-80
A few months ago, I stumbled across the concept of 'metaballs' on YouTube. I was already trying to work on a semi-successful 3D graphics project on the TIC-80 [1], a fantasy console similar to the Pico-8, so when I gave up on that, I decided to try my hand at writing them there as well.
You can find the result here [2]
It didn't go horribly, but I was pretty dissatisfied with the performance and the limitation to a few colour bands. The TIC-80's standard library is tiny, and doesn't seem to have any support for hardware acceleration or multithreading. The most efficient way I could find was essentially to run the calculation on every pixel in sequence on every frame. Combined with the inherent limitations of an interpreted language being run in a browser and it ran at around 10fps for three balls on my admittedly low-power Chromebook, and that's taking into account the low resolution of the TIC-80 - 240 by 136. If this were scaled up to something like 1080p it would probably run around 60 times slower. So I tried again
### 2: Godot
About a week ago, I decided to rewrite in in Godot. I ran a shader on it that did the calculations per-pixel, and instead of set colour bands I was able to make a gradient. I'm not entirely sure whether I prefer the bands or the gradient, but I'm glad I was able to try both. More importantly, it was able to run at 1080p at 60 frames per second, so the performance was more than satisfactory for me. I haven't published the code because frankly it's not that interesting, thought if you want it for whatever reason, message me.
I'm currently working on a game in Godot, so I'm glad to take all the excuses to learn new concepts in it as I can get.
### 3: OpenGL
I had done an OpenGL course [3] around a year ago, and wanted to have a go at Metaballs on there as well. As the code for this project is largely based on the OpenGL course, it is written in C++ and uses the GLFW library. I followed the course up to drawing a triangle, but instead focused on making two triangles that form a rectangle that covers the whole screen (I am told that this is how game developers usually apply a shader to the whole screen). The shader was very similar to the one done in Godot but had some very cursed code that attempted to convert between the coordinate system that the ball uses (-1.0, -1.0 for the top-left, 1.0, 1.0 for the top right), and normal pixel coordinates.
I could refactor it into something better but frankly I am tired and have a short attention span.
```C
// This is not happy code
return (500.0 * ball.z / (pow(abs(gl_FragCoord.x - (0.5 + ball.x / 2) * 1920.0), 2) + pow(abs(gl_FragCoord.y - (0.5 + ball.y / 2) * 1080.0), 2)));
```
All in all the code took me around four straight hours to write. Sadly, as the laptop it was written on has now died due to a faulty charging port (might see about repairing it in future), the program is lost. I didn't get a chance to benchmark it, either. If I do manage to fix it, I will back up the program and benchmark it against the Vulkan implementation.
### 4: Vulkan
This was probably a mistake. Being a much more complex to use graphics API than OpenGL, it was far more verbose to complete. Like OpenGL, I followed a course [4] to set up the boilerplate I needed (and introduce me to Vulkan's various concepts). I have to say, I'm pretty proud of it. Like the original TIC-80 project (though I'm not sure if that's what actually ended up on the site), it features randomly placed metaballs, something missing on both the Godot and OpenGL implementation. I also experimented with balls with negative 'size', if size is even the correct term here, and the results were very fun. You can ask for either purely positive metaballs or negative metaballs as well with a command-line option. While I was unable to get the validation layer for a proper FPS count compiled on my Chromebook, I was able to use Mangohud to measure the program's FPS. The results were mixed, with 60 FPS on the default resolution (800x600), and around 30 FPS when fullscreened (1336x768) on my Chromebook.
### 5: What's next?
I have a few ideas for where I want to go with this project. The obvious one is leave it here. With Vulkan, I've gone about as 'low-level' as I'm willing to go. I might return to the interpreter tutorial I was working on [5], and I'll obviously continue working on this site. Some other options are DirectX (thought I'm not sure how that would work, as I don't own a Windows computer), and Unreal Engine (again, Windows only makes it a bit awkward since I don't own a Windows computer).
## References
=> https://tic80.com/ [1] TIC-80 (https://tic80.com/)
=> https://tic80.com/play?cart=2784 [2] here (https://tic80.com/play?cart=2784)
=> https://learnopengl.com/ [3] an OpenGL course (https://learnopengl.com/)
=> https://vulkan-tutorial.com/ [4] a course (https://vulkan-tutorial.com/)
=> http://craftinginterpreters.com/ [5] the interpreter tutorial I was working on (http://craftinginterpreters.com/)
=> / Back to the Index
=> https://mossfet.xyz//blog/metaballs/ View this article on the WWW

View file

@ -1,91 +0,0 @@
<!DOCTYPE html>
<html lang="en"><link rel="alternate" type="text/gemini" href="gemini://mossfet.xyz/blog/metaballs/index.gmi" title="Mossfet's site" />
<link rel="stylesheet" href="/css/style.css" type="text/css" media="all" />
<body>
<div style="margin: 2%"><header>
<nav class="navbar">
<a href="/index.xml"><img src="/images/feed.svg" style="height: 20px; width: 20px; float: left;" alt="RSS Feed"></a>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/links">Links</a></li>
<li><a href="https://git.solarpunk.moe/mossfet.site">Source</a></li>
</ul>
</nav>
</header>
<section class="section border">
<nav class="ring">
<div class="ring-prev">
<a href="https://mossfet.xyz/blog/site/">Previous post - I made a website</a>
</div>
<div class="ring-next">
<a href="https://mossfet.xyz/blog/newsite/">Next post - Reworking the site frontend</a>
</div>
</nav>
<hr>
<article>
<div class="blog-header">
<h1 class="blog-title">Metaballs</h1>
<h5>Written May 17, 2022</h5>
<h5>Last modifed May 24, 2022</h5>
<h5>Written by Mossfet</h5>
</div>
<div class="blog-content">
<h3 id="1-tic-80">1: TIC-80</h3>
<p>A few months ago, I stumbled across the concept of &lsquo;metaballs&rsquo; on YouTube. I was already trying to work on a semi-successful 3D graphics project on the <a href="https://tic80.com/">TIC-80</a>, a fantasy console similar to the Pico-8, so when I gave up on that, I decided to try my hand at writing them there as well.</p>
<p>You can find the result <a href="https://tic80.com/play?cart=2784">here</a></p>
<p>It didn&rsquo;t go horribly, but I was pretty dissatisfied with the performance and the limitation to a few colour bands. The TIC-80&rsquo;s standard library is tiny, and doesn&rsquo;t seem to have any support for hardware acceleration or multithreading. The most efficient way I could find was essentially to run the calculation on every pixel in sequence on every frame. Combined with the inherent limitations of an interpreted language being run in a browser and it ran at around 10fps for three balls on my admittedly low-power Chromebook, and that&rsquo;s taking into account the low resolution of the TIC-80 - 240 by 136. If this were scaled up to something like 1080p it would probably run around 60 times slower. So I tried again</p>
<h3 id="2-godot">2: Godot</h3>
<p>About a week ago, I decided to rewrite in in Godot. I ran a shader on it that did the calculations per-pixel, and instead of set colour bands I was able to make a gradient. I&rsquo;m not entirely sure whether I prefer the bands or the gradient, but I&rsquo;m glad I was able to try both. More importantly, it was able to run at 1080p at 60 frames per second, so the performance was more than satisfactory for me. I haven&rsquo;t published the code because frankly it&rsquo;s not that interesting, thought if you want it for whatever reason, message me.</p>
<p>I&rsquo;m currently working on a game in Godot, so I&rsquo;m glad to take all the excuses to learn new concepts in it as I can get.</p>
<h3 id="3-opengl">3: OpenGL</h3>
<p>I had done <a href="https://learnopengl.com/">an OpenGL course</a> around a year ago, and wanted to have a go at Metaballs on there as well. As the code for this project is largely based on the OpenGL course, it is written in C++ and uses the GLFW library. I followed the course up to drawing a triangle, but instead focused on making two triangles that form a rectangle that covers the whole screen (I am told that this is how game developers usually apply a shader to the whole screen). The shader was very similar to the one done in Godot but had some very cursed code that attempted to convert between the coordinate system that the ball uses (-1.0, -1.0 for the top-left, 1.0, 1.0 for the top right), and normal pixel coordinates.
I could refactor it into something better but frankly I am tired and have a short attention span.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-C" data-lang="C"><span style="display:flex;"><span><span style="color:#75715e">// This is not happy code
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">return</span> (<span style="color:#ae81ff">500.0</span> <span style="color:#f92672">*</span> ball.z <span style="color:#f92672">/</span> (<span style="color:#a6e22e">pow</span>(<span style="color:#a6e22e">abs</span>(gl_FragCoord.x <span style="color:#f92672">-</span> (<span style="color:#ae81ff">0.5</span> <span style="color:#f92672">+</span> ball.x <span style="color:#f92672">/</span> <span style="color:#ae81ff">2</span>) <span style="color:#f92672">*</span> <span style="color:#ae81ff">1920.0</span>), <span style="color:#ae81ff">2</span>) <span style="color:#f92672">+</span> <span style="color:#a6e22e">pow</span>(<span style="color:#a6e22e">abs</span>(gl_FragCoord.y <span style="color:#f92672">-</span> (<span style="color:#ae81ff">0.5</span> <span style="color:#f92672">+</span> ball.y <span style="color:#f92672">/</span> <span style="color:#ae81ff">2</span>) <span style="color:#f92672">*</span> <span style="color:#ae81ff">1080.0</span>), <span style="color:#ae81ff">2</span>)));
</span></span></code></pre></div><p>All in all the code took me around four straight hours to write. Sadly, as the laptop it was written on has now died due to a faulty charging port (might see about repairing it in future), the program is lost. I didn&rsquo;t get a chance to benchmark it, either. If I do manage to fix it, I will back up the program and benchmark it against the Vulkan implementation.</p>
<h3 id="4-vulkan">4: Vulkan</h3>
<p>This was probably a mistake. Being a much more complex to use graphics API than OpenGL, it was far more verbose to complete. Like OpenGL, I followed <a href="https://vulkan-tutorial.com/">a course</a> to set up the boilerplate I needed (and introduce me to Vulkan&rsquo;s various concepts). I have to say, I&rsquo;m pretty proud of it. Like the original TIC-80 project (though I&rsquo;m not sure if that&rsquo;s what actually ended up on the site), it features randomly placed metaballs, something missing on both the Godot and OpenGL implementation. I also experimented with balls with negative &lsquo;size&rsquo;, if size is even the correct term here, and the results were very fun. You can ask for either purely positive metaballs or negative metaballs as well with a command-line option. While I was unable to get the validation layer for a proper FPS count compiled on my Chromebook, I was able to use Mangohud to measure the program&rsquo;s FPS. The results were mixed, with 60 FPS on the default resolution (800x600), and around 30 FPS when fullscreened (1336x768) on my Chromebook.</p>
<h3 id="5-whats-next">5: What&rsquo;s next?</h3>
<p>I have a few ideas for where I want to go with this project. The obvious one is leave it here. With Vulkan, I&rsquo;ve gone about as &rsquo;low-level&rsquo; as I&rsquo;m willing to go. I might return to <a href="http://craftinginterpreters.com/">the interpreter tutorial I was working on</a>, and I&rsquo;ll obviously continue working on this site. Some other options are DirectX (thought I&rsquo;m not sure how that would work, as I don&rsquo;t own a Windows computer), and Unreal Engine (again, Windows only makes it a bit awkward since I don&rsquo;t own a Windows computer).</p>
</div>
</article>
<hr>
<nav class="ring">
<div class="ring-prev">
<a href="https://mossfet.xyz/blog/site/">Previous post - I made a website</a>
</div>
<div class="ring-next">
<a href="https://mossfet.xyz/blog/newsite/">Next post - Reworking the site frontend</a>
</div>
</nav>
</section>
<footer class="footer">
<div>
This site (frontend and backend) is licensed under the <a href="https://www.gnu.org/licenses/agpl-3.0.en.html">AGPLv3</a> or later, with images and text also available under the <a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">CC-BY-SA 4.0</a>, at your discretion.
</div>
<hr>
<div class="webring"><a href="https://fediring.net/previous?host=mossfet.xyz" title="Previous Webring site">Previous</a> <a href="https://fediring.net">Fediring</a> <a href="https://fediring.net/next?host=mossfet.xyz" title="Next webring site">Next</a></div>
</footer>
</div>
</body>
</html>

View file

@ -1,12 +0,0 @@
# Reworking the site frontend
My previous website implementation left much to be desired. It was difficult to debug, implemented with a maze of makefiles, bizarre perl commands, and creative uses of pandoc. While it was a pretty useful exercise in pandoc and make, it wasn't really a sustainable solution. I had heard about Hugo from YouTube, and was already planning to use it to implement a friend's blog, so figured this would be good practise.
The only main downside I can think of is it means I'll have to put my plans of porting this site to Gemini will have to be put on hold. I've heard that there are ways of doing Gemini output on Hugo, but I don't want to focus on this while I'm still finding my feet.
I'm still using the same very simple rocket.rs backend, with some minor tweaks.
=> / Back to the Index
=> https://mossfet.xyz//blog/newsite/ View this article on the WWW

View file

@ -1,77 +0,0 @@
<!DOCTYPE html>
<html lang="en"><link rel="alternate" type="text/gemini" href="gemini://mossfet.xyz/blog/newsite/index.gmi" title="Mossfet's site" />
<link rel="stylesheet" href="/css/style.css" type="text/css" media="all" />
<body>
<div style="margin: 2%"><header>
<nav class="navbar">
<a href="/index.xml"><img src="/images/feed.svg" style="height: 20px; width: 20px; float: left;" alt="RSS Feed"></a>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/links">Links</a></li>
<li><a href="https://git.solarpunk.moe/mossfet.site">Source</a></li>
</ul>
</nav>
</header>
<section class="section border">
<nav class="ring">
<div class="ring-prev">
<a href="https://mossfet.xyz/blog/metaballs/">Previous post - Metaballs</a>
</div>
<div class="ring-next">
<a href="https://mossfet.xyz/blog/serverhost/">Next post - Hosting my website</a>
</div>
</nav>
<hr>
<article>
<div class="blog-header">
<h1 class="blog-title">Reworking the site frontend</h1>
<h5>Written August 31, 2022</h5>
<h5>Last modifed August 31, 2022</h5>
<h5>Written by Mossfet</h5>
</div>
<div class="blog-content">
<p>My previous website implementation left much to be desired. It was difficult to debug, implemented with a maze of makefiles, bizarre perl commands, and creative uses of pandoc. While it was a pretty useful exercise in pandoc and make, it wasn&rsquo;t really a sustainable solution. I had heard about Hugo from YouTube, and was already planning to use it to implement a friend&rsquo;s blog, so figured this would be good practise.</p>
<p>The only main downside I can think of is it means I&rsquo;ll have to put my plans of porting this site to Gemini will have to be put on hold. I&rsquo;ve heard that there are ways of doing Gemini output on Hugo, but I don&rsquo;t want to focus on this while I&rsquo;m still finding my feet.</p>
<p>I&rsquo;m still using the same very simple rocket.rs backend, with some minor tweaks.</p>
</div>
</article>
<hr>
<nav class="ring">
<div class="ring-prev">
<a href="https://mossfet.xyz/blog/metaballs/">Previous post - Metaballs</a>
</div>
<div class="ring-next">
<a href="https://mossfet.xyz/blog/serverhost/">Next post - Hosting my website</a>
</div>
</nav>
</section>
<footer class="footer">
<div>
This site (frontend and backend) is licensed under the <a href="https://www.gnu.org/licenses/agpl-3.0.en.html">AGPLv3</a> or later, with images and text also available under the <a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">CC-BY-SA 4.0</a>, at your discretion.
</div>
<hr>
<div class="webring"><a href="https://fediring.net/previous?host=mossfet.xyz" title="Previous Webring site">Previous</a> <a href="https://fediring.net">Fediring</a> <a href="https://fediring.net/next?host=mossfet.xyz" title="Next webring site">Next</a></div>
</footer>
</div>
</body>
</html>

View file

@ -1,27 +0,0 @@
# Hosting my website
It's been a while since I originally created the website, but didn't get the chance to host it on real hardware until now.
When I initially set up my site, I had been planning on running it on a Raspberry Pi 4. If you've tried to get hold of a Pi 4 in the last three years, you'll know why that's not gonna work. I still have plans for getting my own SBC (specifically waiting for the Star64 to release), but in the mean time I found a different solution.
## Enter: A shitty broken Chromebook
A while ago, my parents bought me an Acer Chromebook 14 for school. It's a horrible thing, has broken and needed repair four times, is no longer supported for software updates, and looks ugly. It's my favourite laptop. Before it's most recent breakage, I had been running Fedora Linux off it for my schoolwork, with mixed results. Sadly, the LCD was broken after my bag fell off a desk, so it was no longer usable as a laptop.
What about as a server?
As I mentioned, the laptop (and most Chromebooks) can run Linux, so I figured that it could probably run webserver software as well as any other Linux box. I took the screen out to save power, disconnected the battery to stop it from being worn out, and installed NixOS on it. The nice thing about a Chromebook is it's pretty low wattage - the battery advertises 45 Watt-hours, which divided by the Chromebook's advertised 12-hour battery life gives 3.75 Watts, on average. I imagine (hope?) that it would be even lower for NixOS and without an LCD connected.
I'm not currently running my rocket.rs backend, instead running Apache httpd, configured through NixOS. This allows me to set up ACME "fairly easily" (big thanks to the NixOS Matrix channel for giving me a hand). I'm still on my home network, so dynamic IP is a problem. Thankfully, my DNS provider has a dynamic DNS protocol, and I found a shell script that can update it here [2].
=> /images/blog/laptopserver.jpg Embedded Image: /images/blog/laptopserver.jpg
I may migrate this to a different system when the Star64 arrives - I'm expecting an Ox64 at the same time, which could be perfect for a tiny task like this. I also intend to automate updating the website with git - currently I have to ssh into the machine and pull every time I want to update the website. I expect Gitlab could help me out here.
## References
=> https://nextnet.top/content/using-gandi-livedns-dynamic-dns-server [2] here (https://nextnet.top/content/using-gandi-livedns-dynamic-dns-server)
=> / Back to the Index
=> https://mossfet.xyz//blog/serverhost/ View this article on the WWW

View file

@ -1,79 +0,0 @@
<!DOCTYPE html>
<html lang="en"><link rel="alternate" type="text/gemini" href="gemini://mossfet.xyz/blog/serverhost/index.gmi" title="Mossfet's site" />
<link rel="stylesheet" href="/css/style.css" type="text/css" media="all" />
<body>
<div style="margin: 2%"><header>
<nav class="navbar">
<a href="/index.xml"><img src="/images/feed.svg" style="height: 20px; width: 20px; float: left;" alt="RSS Feed"></a>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/links">Links</a></li>
<li><a href="https://git.solarpunk.moe/mossfet.site">Source</a></li>
</ul>
</nav>
</header>
<section class="section border">
<nav class="ring">
<div class="ring-prev">
<a href="https://mossfet.xyz/blog/newsite/">Previous post - Reworking the site frontend</a>
</div>
<div class="ring-next">
</div>
</nav>
<hr>
<article>
<div class="blog-header">
<h1 class="blog-title">Hosting my website</h1>
<h5>Written February 14, 2023</h5>
<h5>Last modifed February 14, 2023</h5>
<h5>Written by Mossfet</h5>
</div>
<div class="blog-content">
<p>It&rsquo;s been a while since I originally created the website, but didn&rsquo;t get the chance to host it on real hardware until now.</p>
<p>When I initially set up my site, I had been planning on running it on a Raspberry Pi 4. If you&rsquo;ve tried to get hold of a Pi 4 in the last three years, you&rsquo;ll know why that&rsquo;s not gonna work. I still have plans for getting my own SBC (specifically waiting for the Star64 to release), but in the mean time I found a different solution.</p>
<h2 id="enter-a-shitty-broken-chromebook">Enter: A shitty broken Chromebook</h2>
<p>A while ago, my parents bought me an Acer Chromebook 14 for school. It&rsquo;s a horrible thing, has broken and needed repair four times, is no longer supported for software updates, and looks ugly. It&rsquo;s my favourite laptop. Before it&rsquo;s most recent breakage, I had been running Fedora Linux off it for my schoolwork, with mixed results. Sadly, the LCD was broken after my bag fell off a desk, so it was no longer usable as a laptop.</p>
<p>What about as a server?</p>
<p>As I mentioned, the laptop (and most Chromebooks) can run Linux, so I figured that it could probably run webserver software as well as any other Linux box. I took the screen out to save power, disconnected the battery to stop it from being worn out, and installed NixOS on it. The nice thing about a Chromebook is it&rsquo;s pretty low wattage - the battery advertises 45 Watt-hours, which divided by the Chromebook&rsquo;s advertised 12-hour battery life gives 3.75 Watts, on average. I imagine (hope?) that it would be even lower for NixOS and without an LCD connected.</p>
<p>I&rsquo;m not currently running my rocket.rs backend, instead running Apache httpd, configured through NixOS. This allows me to set up ACME &ldquo;fairly easily&rdquo; (big thanks to the NixOS Matrix channel for giving me a hand). I&rsquo;m still on my home network, so dynamic IP is a problem. Thankfully, my DNS provider has a dynamic DNS protocol, and I found a shell script that can update it <a href="https://nextnet.top/content/using-gandi-livedns-dynamic-dns-server">here</a>.</p>
<p><img src="/images/blog/laptopserver.jpg" alt="The laptop running a webserver"></p>
<p>I may migrate this to a different system when the Star64 arrives - I&rsquo;m expecting an Ox64 at the same time, which could be perfect for a tiny task like this. I also intend to automate updating the website with git - currently I have to ssh into the machine and pull every time I want to update the website. I expect Gitlab could help me out here.</p>
</div>
</article>
<hr>
<nav class="ring">
<div class="ring-prev">
<a href="https://mossfet.xyz/blog/newsite/">Previous post - Reworking the site frontend</a>
</div>
<div class="ring-next">
</div>
</nav>
</section>
<footer class="footer">
<div>
This site (frontend and backend) is licensed under the <a href="https://www.gnu.org/licenses/agpl-3.0.en.html">AGPLv3</a> or later, with images and text also available under the <a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">CC-BY-SA 4.0</a>, at your discretion.
</div>
<hr>
<div class="webring"><a href="https://fediring.net/previous?host=mossfet.xyz" title="Previous Webring site">Previous</a> <a href="https://fediring.net">Fediring</a> <a href="https://fediring.net/next?host=mossfet.xyz" title="Next webring site">Next</a></div>
</footer>
</div>
</body>
</html>

View file

@ -1,23 +0,0 @@
# I made a website
***Note: This is outdated. I have rewritten the site with Hugo, and the solution described here was never hosted***
I made a website! And a blog! It remains to be seen how much I'll use it, but I'll at least make a post on how I made it
The site uses a very convoluted static site generator I wrote with makefiles and pandoc, the source of which can be found in the header of my website, along with that of the rest of this site (not that I would recommend using it. This was a very stupid idea kept going by sunk cost and pride). While the site's main pages are currently written in HTML and inserted into a template with pandoc (I may explore rewriting the main contents of the site in markdown), the blog posts are written in markdown and also converted using pandoc. Commonly shared elements like headers and footers are done with Pandoc templates.
I had initially used markdown instead of pandoc to convert the blog pages to HTML, and used Perl's regular expressions to find-and-replace markers I had placed in templates with content, but frankly this was a stupid idea.
The backend is written in Rust, with rocket.rs [1]. I didn't particularly have the need for performance that Rust provides, but I like Rust and I like the way that Rocket works. It's a very simple implementation, with routes for the index, 404 page, and anything in the static/web/ and static/atom/ directories.
I eventually plan to add Gemini support as well, with rewrites of the main pages and the same blog posts being converted to Gemtext as well at HTML, but this will take some additional work as it is not supported in Pandoc.
The blog pages are also made into an Atom feed, also generated with pandoc.
## References
=> https://rocket.rs [1] rocket.rs (https://rocket.rs)
=> / Back to the Index
=> https://mossfet.xyz//blog/site/ View this article on the WWW

View file

@ -1,77 +0,0 @@
<!DOCTYPE html>
<html lang="en"><link rel="alternate" type="text/gemini" href="gemini://mossfet.xyz/blog/site/index.gmi" title="Mossfet's site" />
<link rel="stylesheet" href="/css/style.css" type="text/css" media="all" />
<body>
<div style="margin: 2%"><header>
<nav class="navbar">
<a href="/index.xml"><img src="/images/feed.svg" style="height: 20px; width: 20px; float: left;" alt="RSS Feed"></a>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/links">Links</a></li>
<li><a href="https://git.solarpunk.moe/mossfet.site">Source</a></li>
</ul>
</nav>
</header>
<section class="section border">
<nav class="ring">
<div class="ring-prev">
</div>
<div class="ring-next">
<a href="https://mossfet.xyz/blog/metaballs/">Next post - Metaballs</a>
</div>
</nav>
<hr>
<article>
<div class="blog-header">
<h1 class="blog-title">I made a website</h1>
<h5>Written May 17, 2022</h5>
<h5>Last modifed May 21, 2022</h5>
<h5>Written by Mossfet</h5>
</div>
<div class="blog-content">
<p><em><strong>Note: This is outdated. I have rewritten the site with Hugo, and the solution described here was never hosted</strong></em></p>
<p>I made a website! And a blog! It remains to be seen how much I&rsquo;ll use it, but I&rsquo;ll at least make a post on how I made it</p>
<p>The site uses a very convoluted static site generator I wrote with makefiles and pandoc, the source of which can be found in the header of my website, along with that of the rest of this site (not that I would recommend using it. This was a very stupid idea kept going by sunk cost and pride). While the site&rsquo;s main pages are currently written in HTML and inserted into a template with pandoc (I may explore rewriting the main contents of the site in markdown), the blog posts are written in markdown and also converted using pandoc. Commonly shared elements like headers and footers are done with Pandoc templates.</p>
<p>I had initially used markdown instead of pandoc to convert the blog pages to HTML, and used Perl&rsquo;s regular expressions to find-and-replace markers I had placed in templates with content, but frankly this was a stupid idea.</p>
<p>The backend is written in Rust, with <a href="https://rocket.rs">rocket.rs</a>. I didn&rsquo;t particularly have the need for performance that Rust provides, but I like Rust and I like the way that Rocket works. It&rsquo;s a very simple implementation, with routes for the index, 404 page, and anything in the static/web/ and static/atom/ directories.</p>
<p>I eventually plan to add Gemini support as well, with rewrites of the main pages and the same blog posts being converted to Gemtext as well at HTML, but this will take some additional work as it is not supported in Pandoc.</p>
<p>The blog pages are also made into an Atom feed, also generated with pandoc.</p>
</div>
</article>
<hr>
<nav class="ring">
<div class="ring-prev">
</div>
<div class="ring-next">
<a href="https://mossfet.xyz/blog/metaballs/">Next post - Metaballs</a>
</div>
</nav>
</section>
<footer class="footer">
<div>
This site (frontend and backend) is licensed under the <a href="https://www.gnu.org/licenses/agpl-3.0.en.html">AGPLv3</a> or later, with images and text also available under the <a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">CC-BY-SA 4.0</a>, at your discretion.
</div>
<hr>
<div class="webring"><a href="https://fediring.net/previous?host=mossfet.xyz" title="Previous Webring site">Previous</a> <a href="https://fediring.net">Fediring</a> <a href="https://fediring.net/next?host=mossfet.xyz" title="Next webring site">Next</a></div>
</footer>
</div>
</body>
</html>

View file

@ -1,40 +0,0 @@
<!DOCTYPE html>
<html lang="en"><link rel="alternate" type="application/rss+xml" href="https://mossfet.xyz/categories/index.xml" title="Mossfet's site" />
<link rel="stylesheet" href="/css/style.css" type="text/css" media="all" />
<body>
<div style="margin: 2%"><header>
<nav class="navbar">
<a href="/index.xml"><img src="/images/feed.svg" style="height: 20px; width: 20px; float: left;" alt="RSS Feed"></a>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/links">Links</a></li>
<li><a href="https://git.solarpunk.moe/mossfet.site">Source</a></li>
</ul>
</nav>
</header>
<div class = "container border">
<div class = "section">
<div class = "content">
<h1 class="title">Categories</h1>
</div>
</div>
</div>
<footer class="footer">
<div>
This site (frontend and backend) is licensed under the <a href="https://www.gnu.org/licenses/agpl-3.0.en.html">AGPLv3</a> or later, with images and text also available under the <a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">CC-BY-SA 4.0</a>, at your discretion.
</div>
<hr>
<div class="webring"><a href="https://fediring.net/previous?host=mossfet.xyz" title="Previous Webring site">Previous</a> <a href="https://fediring.net">Fediring</a> <a href="https://fediring.net/next?host=mossfet.xyz" title="Next webring site">Next</a></div>
</footer>
</div>
</body>
</html>

View file

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Categories on Mossfet&#39;s site</title>
<link>https://mossfet.xyz/categories/</link>
<description>Recent content in Categories on Mossfet&#39;s site</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-gb</language>
<managingEditor>root@mossfet.xyz (Mossfet)</managingEditor>
<webMaster>root@mossfet.xyz (Mossfet)</webMaster>
<copyright>CC-BY-SA 4.0</copyright><atom:link href="https://mossfet.xyz/categories/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

View file

@ -1,88 +0,0 @@
.navbar ul {
display: flex;
justify-content: space-evenly;
padding: 0px;
}
.navbar li {
list-style-type: none;
margin-left: 5px;
margin-right: 5px;
font-size: 20px;
}
a {
color: black;
text-decoration: underline;
}
.border {
border: 2px solid black;
padding: 10px;
margin-bottom: 20px;
}
.footer {
text-align: center;
}
.ring {
display: flex;
justify-content: space-between;
}
.ring-next {
margin-right: 10px;
}
.blog-title {
font-size: 3em;
}
.blog-header {
text-align: center;
}
.blog-content img {
max-width: 60%;
height: auto;
margin-left: auto;
margin-right: auto;
display: block;
}
.homepage-wrapper {
display: flex;
}
.homepage-content {
flex-grow: 1;
}
.homepage-column {
min-width: 200px;
width: 300px;
flex-grow: 1;
margin-left: 20px;
}
.homepage-column ul {
overflow-wrap: break-word;
}
@media screen and (max-width: 600px) {
.homepage-column {
width: 100%;
margin-left: 0px;
margin-bottom: 20px;
}
.homepage-wrapper {
flex-wrap: wrap-reverse;
}
}
.webring {
display: flex;
justify-content: space-evenly;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

View file

@ -1 +0,0 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RSS</title><path d="M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24h-4.801zM3.291 17.415c1.814 0 3.293 1.479 3.293 3.295 0 1.813-1.485 3.29-3.301 3.29C1.47 24 0 22.526 0 20.71s1.475-3.294 3.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z"/></svg>

Before

Width:  |  Height:  |  Size: 400 B

View file

@ -1,35 +0,0 @@
# Mossfet's site
My name is Mossfet. I'm a computer science student living in the UK. I am autistic and trans.
I have a special interest in computer science/general computing topics, and like Rust, Linux, and C.
I'm a (social?) anarchist. I like free software, free culture, and permacomputing [1].
I'm working on a game with some friends! It will be released under a free license and is made with the Godot game engine.
### Current Projects/areas of focus
* Information security
* GNOME
* Permacomputing
* Reverse proxies (NGINX+Apache)
* Indie web
* Distributed systems (DHTs, etc)
### Other interests
* Evangelion
* Persona
* History of Anarchism
* Emulation (and other things that make Nintendo sad)
## References
=> https://permacomputing.net/Principles/ [1] permacomputing (https://permacomputing.net/Principles/)
=> https://mossfet.xyz// View this article on the WWW
=> gemini://mossfet.xyz/blog Blog
=> gemini://mossfet.xyz/links Links
=> https://git.solarpunk.moe/mossfet/site Source

View file

@ -1,70 +0,0 @@
<!DOCTYPE html>
<html lang="en"><link rel="alternate" type="application/rss+xml" href="https://mossfet.xyz/index.xml" title="Mossfet's site" />
<link rel="alternate" type="text/gemini" href="gemini://mossfet.xyz/index.gmi" title="Mossfet's site" />
<link rel="stylesheet" href="/css/style.css" type="text/css" media="all" />
<body>
<div style="margin: 2%"><header>
<nav class="navbar">
<a href="/index.xml"><img src="/images/feed.svg" style="height: 20px; width: 20px; float: left;" alt="RSS Feed"></a>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/links">Links</a></li>
<li><a href="https://git.solarpunk.moe/mossfet.site">Source</a></li>
</ul>
</nav>
</header>
<div class="homepage-wrapper">
<div class="border homepage-content">
<h1 id="mossfets-site">Mossfet&rsquo;s site</h1>
<p>My name is Mossfet. I&rsquo;m a computer science student living in the UK. I am autistic and trans.</p>
<p>I have a special interest in computer science/general computing topics, and like Rust, Linux, and C.</p>
<p>I&rsquo;m a (social?) anarchist. I like free software, free culture, and <a href="https://permacomputing.net/Principles/">permacomputing</a>.</p>
<p>I&rsquo;m working on a game with some friends! It will be released under a free license and is made with the Godot game engine.</p>
<h4 id="current-projectsareas-of-focus">Current Projects/areas of focus</h4>
<ul>
<li>Information security</li>
<li>GNOME</li>
<li>Permacomputing</li>
<li>Reverse proxies (NGINX+Apache)</li>
<li>Indie web</li>
<li>Distributed systems (DHTs, etc)</li>
</ul>
<h4 id="other-interests">Other interests</h4>
<ul>
<li>Evangelion</li>
<li>Persona</li>
<li>History of Anarchism</li>
<li>Emulation (and other things that make Nintendo sad)</li>
</ul>
</div>
<div class="border homepage-column">
<h2 id="mossfet">Mossfet</h2>
<ul>
<li>Pronouns: She/her or vi/vim</li>
<li>Location: UK</li>
<li>Fedi: <a href="https://solarpunk.moe/@mossfet">@mossfet@solarpunk.moe</a></li>
</ul>
</div>
</div>
<footer class="footer">
<div>
This site (frontend and backend) is licensed under the <a href="https://www.gnu.org/licenses/agpl-3.0.en.html">AGPLv3</a> or later, with images and text also available under the <a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">CC-BY-SA 4.0</a>, at your discretion.
</div>
<hr>
<div class="webring"><a href="https://fediring.net/previous?host=mossfet.xyz" title="Previous Webring site">Previous</a> <a href="https://fediring.net">Fediring</a> <a href="https://fediring.net/next?host=mossfet.xyz" title="Next webring site">Next</a></div>
</footer>
</div>
</body>
</html>

View file

@ -1,55 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Mossfet&#39;s site</title>
<link>https://mossfet.xyz/</link>
<description>Recent content on Mossfet&#39;s site</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-gb</language>
<managingEditor>root@mossfet.xyz (Mossfet)</managingEditor>
<webMaster>root@mossfet.xyz (Mossfet)</webMaster>
<copyright>CC-BY-SA 4.0</copyright>
<lastBuildDate>Tue, 14 Feb 2023 09:45:00 +0100</lastBuildDate><atom:link href="https://mossfet.xyz/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Hosting my website</title>
<link>https://mossfet.xyz/blog/serverhost/</link>
<pubDate>Tue, 14 Feb 2023 09:45:00 +0100</pubDate>
<author>root@mossfet.xyz (Mossfet)</author>
<guid>https://mossfet.xyz/blog/serverhost/</guid>
<description>It&amp;rsquo;s been a while since I originally created the website, but didn&amp;rsquo;t get the chance to host it on real hardware until now.
When I initially set up my site, I had been planning on running it on a Raspberry Pi 4. If you&amp;rsquo;ve tried to get hold of a Pi 4 in the last three years, you&amp;rsquo;ll know why that&amp;rsquo;s not gonna work. I still have plans for getting my own SBC (specifically waiting for the Star64 to release), but in the mean time I found a different solution.</description>
</item>
<item>
<title>Reworking the site frontend</title>
<link>https://mossfet.xyz/blog/newsite/</link>
<pubDate>Wed, 31 Aug 2022 12:29:17 +0100</pubDate>
<author>root@mossfet.xyz (Mossfet)</author>
<guid>https://mossfet.xyz/blog/newsite/</guid>
<description>My previous website implementation left much to be desired. It was difficult to debug, implemented with a maze of makefiles, bizarre perl commands, and creative uses of pandoc. While it was a pretty useful exercise in pandoc and make, it wasn&amp;rsquo;t really a sustainable solution. I had heard about Hugo from YouTube, and was already planning to use it to implement a friend&amp;rsquo;s blog, so figured this would be good practise.</description>
</item>
<item>
<title>Metaballs</title>
<link>https://mossfet.xyz/blog/metaballs/</link>
<pubDate>Tue, 17 May 2022 17:57:00 +0100</pubDate>
<author>root@mossfet.xyz (Mossfet)</author>
<guid>https://mossfet.xyz/blog/metaballs/</guid>
<description>1: TIC-80 A few months ago, I stumbled across the concept of &amp;lsquo;metaballs&amp;rsquo; on YouTube. I was already trying to work on a semi-successful 3D graphics project on the TIC-80, a fantasy console similar to the Pico-8, so when I gave up on that, I decided to try my hand at writing them there as well.
You can find the result here
It didn&amp;rsquo;t go horribly, but I was pretty dissatisfied with the performance and the limitation to a few colour bands.</description>
</item>
<item>
<title>I made a website</title>
<link>https://mossfet.xyz/blog/site/</link>
<pubDate>Tue, 17 May 2022 17:56:00 +0100</pubDate>
<author>root@mossfet.xyz (Mossfet)</author>
<guid>https://mossfet.xyz/blog/site/</guid>
<description>Note: This is outdated. I have rewritten the site with Hugo, and the solution described here was never hosted
I made a website! And a blog! It remains to be seen how much I&amp;rsquo;ll use it, but I&amp;rsquo;ll at least make a post on how I made it
The site uses a very convoluted static site generator I wrote with makefiles and pandoc, the source of which can be found in the header of my website, along with that of the rest of this site (not that I would recommend using it.</description>
</item>
</channel>
</rss>

View file

@ -1,14 +0,0 @@
# Links
You can find my Fedi account at @mossfet@solarpunk.moe [1]
My code forge is here [2]
You can message me on Fedi for my Matrix or whatever else you want to contact me on.
## References
=> https://solarpunk.moe/@mossfet [1] @mossfet@solarpunk.moe (https://solarpunk.moe/@mossfet)
=> git.solarpunk.moe/mossfet [2] here (git.solarpunk.moe/mossfet)=> / Back to the Index
=> https://mossfet.xyz//links/ View this article on the WWW

View file

@ -1,44 +0,0 @@
<!DOCTYPE html>
<html lang="en"><link rel="alternate" type="text/gemini" href="gemini://mossfet.xyz/links/index.gmi" title="Mossfet's site" />
<link rel="stylesheet" href="/css/style.css" type="text/css" media="all" />
<body>
<div style="margin: 2%"><header>
<nav class="navbar">
<a href="/index.xml"><img src="/images/feed.svg" style="height: 20px; width: 20px; float: left;" alt="RSS Feed"></a>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/links">Links</a></li>
<li><a href="https://git.solarpunk.moe/mossfet.site">Source</a></li>
</ul>
</nav>
</header>
<div class = "container border">
<div class = "section">
<div class = "content">
<h1 class="title"></h1>
<h1 id="links">Links</h1>
<p>You can find my Fedi account at <a href="https://solarpunk.moe/@mossfet">@mossfet@solarpunk.moe</a>
My code forge is <a href="git.solarpunk.moe/mossfet">here</a></p>
<p>You can message me on Fedi for my Matrix or whatever else you want to contact me on.</p>
</div>
</div>
</div>
<footer class="footer">
<div>
This site (frontend and backend) is licensed under the <a href="https://www.gnu.org/licenses/agpl-3.0.en.html">AGPLv3</a> or later, with images and text also available under the <a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">CC-BY-SA 4.0</a>, at your discretion.
</div>
<hr>
<div class="webring"><a href="https://fediring.net/previous?host=mossfet.xyz" title="Previous Webring site">Previous</a> <a href="https://fediring.net">Fediring</a> <a href="https://fediring.net/next?host=mossfet.xyz" title="Next webring site">Next</a></div>
</footer>
</div>
</body>
</html>

View file

@ -1,34 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://mossfet.xyz/</loc>
<lastmod>2023-02-14T12:01:00+01:00</lastmod>
</url><url>
<loc>https://mossfet.xyz/blog/</loc>
<lastmod>2023-02-14T12:01:00+01:00</lastmod>
<priority>0</priority>
</url><url>
<loc>https://mossfet.xyz/blog/serverhost/</loc>
<lastmod>2023-02-14T12:01:00+01:00</lastmod>
</url><url>
<loc>https://mossfet.xyz/blog/newsite/</loc>
<lastmod>2022-08-31T12:29:17+01:00</lastmod>
</url><url>
<loc>https://mossfet.xyz/blog/metaballs/</loc>
<lastmod>2022-05-24T21:58:00+01:00</lastmod>
</url><url>
<loc>https://mossfet.xyz/blog/site/</loc>
<lastmod>2022-05-21T19:30:00+01:00</lastmod>
</url><url>
<loc>https://mossfet.xyz/about/</loc>
<priority>0</priority>
</url><url>
<loc>https://mossfet.xyz/links/</loc>
<priority>0</priority>
</url><url>
<loc>https://mossfet.xyz/categories/</loc>
</url><url>
<loc>https://mossfet.xyz/tags/</loc>
</url>
</urlset>

View file

@ -1,40 +0,0 @@
<!DOCTYPE html>
<html lang="en"><link rel="alternate" type="application/rss+xml" href="https://mossfet.xyz/tags/index.xml" title="Mossfet's site" />
<link rel="stylesheet" href="/css/style.css" type="text/css" media="all" />
<body>
<div style="margin: 2%"><header>
<nav class="navbar">
<a href="/index.xml"><img src="/images/feed.svg" style="height: 20px; width: 20px; float: left;" alt="RSS Feed"></a>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/links">Links</a></li>
<li><a href="https://git.solarpunk.moe/mossfet.site">Source</a></li>
</ul>
</nav>
</header>
<div class = "container border">
<div class = "section">
<div class = "content">
<h1 class="title">Tags</h1>
</div>
</div>
</div>
<footer class="footer">
<div>
This site (frontend and backend) is licensed under the <a href="https://www.gnu.org/licenses/agpl-3.0.en.html">AGPLv3</a> or later, with images and text also available under the <a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">CC-BY-SA 4.0</a>, at your discretion.
</div>
<hr>
<div class="webring"><a href="https://fediring.net/previous?host=mossfet.xyz" title="Previous Webring site">Previous</a> <a href="https://fediring.net">Fediring</a> <a href="https://fediring.net/next?host=mossfet.xyz" title="Next webring site">Next</a></div>
</footer>
</div>
</body>
</html>

View file

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Tags on Mossfet&#39;s site</title>
<link>https://mossfet.xyz/tags/</link>
<description>Recent content in Tags on Mossfet&#39;s site</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-gb</language>
<managingEditor>root@mossfet.xyz (Mossfet)</managingEditor>
<webMaster>root@mossfet.xyz (Mossfet)</webMaster>
<copyright>CC-BY-SA 4.0</copyright><atom:link href="https://mossfet.xyz/tags/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>

View file

@ -3,8 +3,14 @@
{{- partial "head.html" . -}}
<body>
<div style="margin: 2%">
<div class="base-wrapper">
<div class="border column-header base-column" style="flex-shrink: 0.1;">
{{- partial "header.html" . -}}
</div>
<!--<div class="base-column border">-->
{{- block "main" . }}{{- end }}
<!--</div>-->
</div>
{{- partial "footer.html" . -}}
</div>
</body>

View file

@ -1,5 +1,5 @@
{{ define "main" }}
<div class = "container border">
<div class = "container base-column border">
<div class = "section">
<div class = "content">
<h1 class="title">{{ .Title }}</h1>

View file

@ -1,5 +1,5 @@
{{ define "main" }}
<section class="section border">
<section class="base-column section border">
{{ partial "ring.html" . }}
<hr>
<article>

View file

@ -1,9 +1,7 @@
{{ define "main" }}
<div class="homepage-wrapper">
<div class="border homepage-content">
{{ .Content }}
</div>
<div class="border homepage-column">
<!--<div class="homepage-wrapper">-->
<div class="home-columns" style="display: flex;" >
<div class="border base-column">
<!--<h2> {{ .Params.name }}</h2>
<ul>
<li>Pronouns: {{ .Params.pronouns}}</li>
@ -14,5 +12,9 @@
{{ .Content }}
{{ end }}
</div>
<div class="border base-column">
{{ .Content }}
</div>
</div>
<!--</div>-->
{{ end }}

View file

@ -2,3 +2,4 @@
{{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML }}
{{ end -}}
<link rel="stylesheet" href="/css/style.css" type="text/css" media="all" />
<meta name="viewport" content="width=device-width, initial-scale=1">

View file

@ -1,11 +1,13 @@
<header>
<nav class="navbar">
<!--FEED-->
<a href="/index.xml"><img src="/images/feed.svg" style="height: 20px; width: 20px; float: left;" alt="RSS Feed"></a>
<ul>
<li><a href="/index.xml"><img src="/images/feed.svg" style="height: 20px; width: 20px;" alt="RSS Feed"></a></li>
<li><a href="/">Home</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/links">Links</a></li>
<li><a href="/projects">Projects</a></li>
<li><a href="/sites">Good Sites</a></li>
<li><a href="https://git.solarpunk.moe/mossfet/site">Source</a></li>
</ul>
</nav>

View file

@ -0,0 +1,16 @@
{{ define "main" }}
<div class = "container base-column border">
<div class = "section">
<div class = "content">
<h1 class="title">{{ .Title }}</h1>
{{ .Content }}
{{ range .Pages }}
<ul>
<li><a href="{{ .Permalink }}">{{ .Title }}</a></li>
</ul>
{{ end }}
</div>
</div>
</div>
{{ end }}

View file

@ -0,0 +1,12 @@
{{ define "main" }}
<section class="base-column section border">
<article>
<div class="blog-header">
<h1 class="blog-title">{{ .Title }}</h1>
</div>
<div class="blog-content">
{{ .Content }}
</div>
</article>
</section>
{{ end }}

View file

@ -1,14 +1,25 @@
/*.container {
margin-bottom: 20px;
padding: 0px;
}*/
.home-columns {
flex-direction: row-reverse;
}
.navbar ul {
display: flex;
justify-content: space-evenly;
justify-content: space-between;
padding: 0px;
flex-direction: column;
}
.navbar li {
list-style-type: none;
margin-left: 5px;
margin-right: 5px;
margin-left: 2px;
margin-right: 2px;
font-size: 20px;
text-align: center;
margin-bottom: 20px;
}
a {
@ -19,7 +30,7 @@ a {
.border {
border: 2px solid #445055;
padding: 10px;
margin-bottom: 20px;e67e80
margin-bottom: 20px;
}
.footer {
@ -43,6 +54,10 @@ a {
text-align: center;
}
header {
height: 100%;
}
.blog-content img {
max-width: 60%;
height: auto;
@ -51,7 +66,7 @@ a {
display: block;
}
.homepage-wrapper {
.homepage-wrapper, .base-wrapper {
display: flex;
}
@ -59,27 +74,58 @@ a {
flex-grow: 1;
}
.homepage-column {
min-width: 200px;
width: 300px;
.homepage-column, .base-column {
flex-grow: 1;
margin-left: 20px;
max-width: 100%;
}
.homepage-column ul {
.column-header {
max-width: max-content;
}
.homepage-column ul, .base-column ul {
overflow-wrap: break-word;
}
@media screen and (max-width: 600px) {
.homepage-column {
width: 100%;
@media screen and (max-width: 750px) {
.homepage-column , .base-column {
margin-left: 0px;
margin-bottom: 20px;
}
.navbar li {
margin-bottom: 0px;
}
.homepage-wrapper {
flex-wrap: wrap-reverse;
}
.base-wrapper {
flex-wrap: wrap;
flex-direction: column;
}
.base-wrapper ul {
flex-direction: row;
flex-wrap: wrap;
justify-content: space-evenly;
margin-top: 0px;
margin-bottom: 10px;
}
.base-wrapper li {
margin-bottom: 0px;
}
.column-header {
max-width: 100%;
border: none;
margin-bottom: 0px;
}
.home-columns {
flex-direction: column;
}
}
.webring {