commit 9090440f009720ceb65a137da9f608ae4eca4bf5
parent 9bc17d9018ac2114968aee71701f4bcf7446523e
Author: mokou <mokou@posteo.de>
Date: Mon, 13 Apr 2020 18:26:12 +0200
Initial commit
Diffstat:
13 files changed, 395 insertions(+), 1 deletion(-)
diff --git a/.gitignore b/.gitignore
@@ -0,0 +1 @@
+public/
diff --git a/config.toml b/config.toml
@@ -0,0 +1,19 @@
+# The URL the site will be built for
+base_url = "https://aun.touhou.cz"
+
+# Whether to automatically compile all Sass files in the sass directory
+compile_sass = false
+
+# Whether to do syntax highlighting
+# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola
+highlight_code = true
+
+# Whether to build a search index to be used later on by a JavaScript library
+build_search_index = true
+
+[extra]
+# Put all your custom variables here
+menu = [
+ {url = "$BASE_URL", name = "Home"},
+ {url = "https://git.touhou.cz/aun", name = "Git"}
+]
diff --git a/content/_index.md b/content/_index.md
@@ -0,0 +1,4 @@
++++
+paginate_by = 5
+sort_by = "date"
++++
diff --git a/content/rustlings-2-0.md b/content/rustlings-2-0.md
@@ -0,0 +1,92 @@
++++
+title = "Rustlings 2.0 and human-centered versioning"
+date = 2019-11-12
++++
+
+Today we released [Rustlings
+2.0](https://github.com/rust-lang/rustlings/releases/tag/2.0.0). There's some
+interesting things in this release:
+
+- Exercises are now indexed by name, not by file name. This means that where
+ previously you had to input a long path with `rustlings run
+ exercises/primitive_types/primitive_types1.rs`, you can now shorten it to
+ `rustlings run primitive_types1`
+- `rustlings watch` will now require the user to delete a comment called `// I
+ AM NOT DONE` to proceed, even when the exercise compiles or tests. Many of our
+ exercises encourage the user to try out multiple different solutions, which
+ was not possible to do before, since you had to move out of `watch` and
+ manually verify the exercise using `run`. `rustlings verify` is also affected
+ by this, but `rustlings run` is not.
+- There is a new way to interact with hints. Hints are not at the end of the
+ file anymore, instead, you can view the hint(s) for a given exercise using
+ `rustlings hint exerciseName`. Multiple people were having problems with hints
+ being visible due to their screen heights or their autoformatters not playing
+ nice, which is why it was refactored.
+- Rustlings now self-checks for the existence of `rustc` before running, in case
+ you somehow installed Rustlings without having `rustc`.
+
+A massive thanks to [Roberto Vidal](https://github.com/jrvidal) for pairing with
+me on some of these issues and helping push this out.
+
+## Significance of a breaking change
+
+This release isn't all that special in terms of feature density. We haven't
+added or removed any exercises, but the reason we've decided to release a new
+major version is because we introduced what we believe are breaking changes.
+
+Rust projects usually try to abide by a standard known as
+[SemVer](https://semver.org/), which attempts to quantify the long headache of
+software versioning into something that makes sense in people's heads. The short
+version of it is:
+
+- Bug fixes -> Increment Patch (`0.0.1` to `0.0.2`)
+- Feature additions and enhancements that are backwards compatible -> Increment
+ Minor (`0.0.1` to `0.1.0`)
+- Features, Deletions, Enhancements that are backwards incompatible -> Increment
+ Major (`0.0.1` to `1.0.0`)
+
+The latter of those three cases includes breaking changes, which means changes
+that make the new API of your software incompatible with how it was used before.
+
+The problem with our changes is that, say, refactoring the hint system (aka
+introducing the `rustlings hint` command) _technically_ doesn't produce a
+breaking change, as we're only adding a feature to our API (the Rustlings CLI).
+What we're getting at is the limits of a technical specification such as SemVer,
+which fails to address the human-centered side of software.
+
+Admittedly, and in defense of SemVer, dealing with humans is _really hard_, and
+I'm not criticizing for that, but for software like Rustlings, which thousands
+of people use for learning Rust, we can't purely rely on a technical spec for releases.
+
+## Releasing software for humans
+
+How then are we going to solve this dilemma? It seems like we'll have to throw
+some existing conventions out of the window and make our own. What we came up
+with is more or less specifically aimed at Rustlings, and it's partly based off
+SemVer, and partly based off what our intuition tells us:
+
+- Bug fixes -> Increment Patch
+- Feature additions, or backwards incompatible changes that only affect a small
+ part of the exercises (changing one exercise or changing one category of them)
+ -> Increment Minor
+- Backwards incompatible changes in the CLI source or changes that modify all
+ exercises -> Increment Major
+
+When I say "based off our intuition" here, what I mean is that we took into
+account how people using Rustlings will perceive these changes. The important
+thing to take into account is that the way most people _use_ Rustlings is very
+limited - they download it, do a bunch of exercises, and then it likely sits on
+their hard drive untouched for a long time. This isn't a bad thing, and it does
+mean we can get away with introducing breaking changes on a smaller scale as
+long as it affects only a specific subsystem. Not many people are going to do an
+exercise, wait a year, update Rustlings, and then do the exact same exercise again.
+
+## Conclusion
+
+So what's the actual takeaway from this? I guess it's that if you're designing
+software for teaching people, or just people that aren't software developers,
+consider thinking about their perspective when using your software before you
+blindly adhere to SemVer. Again, not saying SemVer is bad, but there have been
+some people that seem to believe adhering to SemVer is the best thing you can do
+in any situation, to which I disagree. I believe knowing who you're making
+software for is the best thing you can do in any situation.
diff --git a/content/system76-oryx-impressions.md b/content/system76-oryx-impressions.md
@@ -0,0 +1,101 @@
++++
+title = "My impressions using the System76 Oryx Pro"
+date = 2019-12-21
++++
+
+I recently switched to using Linux for my desktop workstation again, in the form
+of a [System76 Oryx Pro](https://system76.com/laptops/oryx). I'd previously used
+an iMac primarily with Windows bootcamped onto it (for game compatibility). It
+took me a while to realize, but at that point, I might as well have used a
+Windows laptop. The iMac, for how nice and quiet it is, is pretty useless _as an
+iMac_ when you just run Windows on it, so I decided to sell it and get something
+else, maybe even something that's portable. After a while, I settled on the Oryx
+Pro.
+
+<!-- more -->
+
+## Ordering and delivery
+
+I live outside of the primary range of delivery for System76 since they're an
+American company, but thankfully they ship worldwide (though that comes with a
+~100€ shipping fee). There was also a ~350€ import tax that I hadn't really
+anticipated since I never get things imported.
+
+I went for a pretty baseline model with 16GB of RAM, an RTX 2060 and a 500GB
+NVMe SSD. You could go a lot more powerful, but even at this configuration,
+it'll cost you around 1700€. I chose "3-day quick assembly" (an extra 50 bucks)
+because I wanted it to arrive before Christmas. Their staff was very nice in
+communicating the progress of the assembly, but I would have preferred if they
+hadn't tried to call me (it's a nice gesture, sure, but because of Reasons it
+gives me the creeps when someone tries to do that). The shipping, too, was
+timely, and with the exception of the customs holdup taking one day too long
+because UPS' website didn't function, it came on time.
+
+## Hardware
+
+The laptop itself looks very nice. I especially like the back cover, which looks
+like some kind of weird futuristic thing, but not in the "Gaming Laptop" sense:
+
+![picture of the backside of the laptop](https://files.catbox.moe/8oen39.jpg)
+
+There's a bit of chassis flex everywhere, and the hinge isn't as tight as I
+would like it to be, but for a 16 inch laptop, the build quality is nice
+overall. The keyboard feels good too. There's a bit of travel, and it stays
+quiet (quieter than a ThinkPad keyboard), but it's still satisfying to type on.
+There _is_ some weird key placement going on, specifically with the right shift
+key, which is cut in size in favor of the up arrow, which, coming from a
+ThinkPad keyboard, makes me hit the arrow by accident a lot of times. I also
+wish there was a configuration option to remove the numpad, since I never use it
+and never will, but it's something that's fairly easy to get used to. Oh, and it
+has backlighting in different colours, if you're into that.
+
+The trackpad is _silky_ smooth. It feels like you're gliding on ice, it's great.
+There's a good selection of ports, two USB 3, two USB-C, full-size HDMI, audio
+ports, full-size Ethernet, full-size SD slot, and a Kensington lock.
+
+## Software
+
+Preinstalled with the laptop comes Pop_OS!, which takes the cake as the most
+awful distro name to come preinstalled on something. That being said, I've been
+using it for a bit now and it's been pretty nice! It's based off Ubuntu, which,
+for all its flaws, gives you the broadest range of software availability, and is
+arguably one of the most newcomer-friendly Linux distros. Pop uses a customized
+version of the GNOME shell, which looks pretty good, and while I'm not a huge
+fan of the size of GNOME's window title bars, it does make for a nice experience
+overall.
+
+The primary reason I've been running Windows and/or MacOS is to play Final
+Fantasy XIV, a MMO that unfortunately only really runs well on Windows (the
+official MacOS version is nothing more than a Wine wrapper). However, after a
+couple hours of fiddling around with Wine and [Lutris](https://lutris.net/), I
+managed to actually get the game to run, and with about 90% of the performance
+I'd have on Windows! This is mainly due to DXVK, a Wine tool that translates
+DirectX system calls to Vulkan system calls (I believe), which makes it possible
+to play many AAA video games on Linux. The only downside to this is that while
+playing the game, the fans on this laptop run at maximum speed, even though it
+doesn't really get hot, just warm, but I'm willing to chalk that up to Wine or
+something.
+
+On everything else, though, the fans either run really quiet or with moderate
+speeds, but it never really gets annoyingly loud. I haven't really felt the
+laptop get hot until now, either.
+
+It's worth noting that you can only use the RTX card in the laptop if you "boot"
+into the desired compatibility mode (this can either be the RTX, Intel
+integrated graphics, or some sort of hybrid mode). You need to reboot to switch
+between these, which I think takes a bit longer than a normal reboot, but aside
+from battery life, there's nothing that really stops me from using the RTX all
+the time (at least at my desk). Additionally, external monitors only work in RTX
+mode.
+
+![picture of my desktop under pop os](https://files.catbox.moe/tn9zq0.png)
+
+## Conclusion
+
+I'm pretty happy with this laptop. The build quality is good, the Pop_OS! distro
+is decent enough for my liking, it's very nice to have a desktop-grade GPU
+inside such a (relatively) compact laptop. System76 also sells other, smaller
+and less expensive laptops on their website, so if you're American, that might
+be worth checking out (they have some with coreboot too). I think if you're in
+Europe, there's some companies that do almost the same thing as System76 does in
+the US too, but I forget what they're called.
diff --git a/index.html b/index.html
@@ -1 +0,0 @@
-hello!
diff --git a/static/fonts/Inter-Regular.woff b/static/fonts/Inter-Regular.woff
Binary files differ.
diff --git a/static/fonts/Inter-Regular.woff2 b/static/fonts/Inter-Regular.woff2
Binary files differ.
diff --git a/static/fonts/merriweather-v21-latin-regular.woff b/static/fonts/merriweather-v21-latin-regular.woff
Binary files differ.
diff --git a/static/fonts/merriweather-v21-latin-regular.woff2 b/static/fonts/merriweather-v21-latin-regular.woff2
Binary files differ.
diff --git a/static/main.css b/static/main.css
@@ -0,0 +1,81 @@
+@font-face {
+ font-family: 'Merriweather';
+ font-style: normal;
+ font-weight: 400;
+ src: local('Merriweather Regular'), local('Merriweather-Regular'),
+ url('fonts/merriweather-v21-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
+ url('fonts/merriweather-v21-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
+}
+
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-weight: 400;
+ src: local('Inter Regular'), local('Inter-Regular'),
+ url('fonts/Inter-Regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
+ url('fonts/Inter-Regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
+}
+
+:root {
+ --color-bg: #e8effc;
+ --color-fg: #624ce0;
+}
+
+html {
+ font-size: 1.3em;
+ background-color: var(--color-bg);
+ color: var(--color-fg);
+ font-family: 'Inter', sans-serif;
+}
+
+body {
+ max-width: 50rem;
+ padding: 20px 10px;
+ margin: 0 auto;
+}
+
+a,
+a:visited,
+a:active {
+ color: var(--color-fg);
+ text-decoration: none;
+ border-bottom: 1px solid var(--color-fg);
+}
+
+a[href*="://"]:after {
+ content: " " url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20class='i-external'%20viewBox='0%200%2032%2032'%20width='14'%20height='14'%20fill='none'%20stroke='%23624ce0'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='9.38%'%3E%3Cpath%20d='M14%209%20L3%209%203%2029%2023%2029%2023%2018%20M18%204%20L28%204%2028%2014%20M28%204%20L14%2018'/%3E%3C/svg%3E");
+}
+
+hr {
+ border: 0;
+ border-top: 1px solid var(--color-fg);
+ opacity: .2;
+}
+
+.hushed {
+ opacity: .6;
+}
+
+h1,
+h2,
+h3,
+h4 {
+ font-family: 'Merriweather', serif;
+}
+
+.title {
+ font-size: 3rem;
+ margin: 20px 0;
+}
+
+.page-content {
+ line-height: 1.6rem;
+}
+
+.page-content code {
+ background: var(--color-fg);
+ color: var(--color-bg);
+ padding: 2px 5px;
+ font-size: 1rem;
+ font-family: 'Merriweather', serif;
+}
diff --git a/templates/index.html b/templates/index.html
@@ -0,0 +1,69 @@
+<!doctype html>
+<html lang="en">
+ <head>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1" />
+
+ <title>{% block title %}{{ config.title }}{% endblock title %}</title>
+
+ {% block css %}
+ <link rel="stylesheet" href="{{ get_url(path='main.css', trailing_slash=false) }}" />
+ {% endblock css %}
+
+ {% block extra_head %}{% endblock extra_head %}
+ </head>
+
+ <body>
+ {% block header %}
+ <header>
+ <nav itemscope itemtype="http://schema.org/SiteNavigationElement">
+ {% for item in config.extra.menu %}
+ <a itemprop="url"
+ class="{% if item.url | replace(from='$BASE_URL', to=config.base_url) == current_url %}active{% endif %}"
+ href="{{ item.url | replace(from='$BASE_URL', to=config.base_url) }}">
+ <span itemprop="name">{{ item.name }}</span>
+ </a>
+ {% endfor %}
+ </nav>
+ </header>
+ <hr />
+ {% endblock header %}
+
+ <main>
+ {% block content %}
+ {% for page in paginator.pages %}
+ <article itemscope itemtype="http://schema.org/CreativeWork">
+ <header>
+ <h2 itemprop="name">
+ <a href="{{ page.permalink }}">{{ page.title }}</a>
+ </h2>
+ <div class="hushed">
+ <svg style="margin-bottom:-3px" class="i-clock" viewBox="0 0 32 32"
+ width="16" height="16" fill="none" stroke="currentcolor"
+ stroke-linecap="round" stroke-linejoin="round" stroke-width="6.25%">
+ <circle cx="16" cy="16" r="14"/>
+ <path d="M16 8 L16 16 20 20"/>
+ </svg>
+ <span>{{ page.reading_time }} minute read</span>
+ <svg style="margin-bottom: -3px" class="i-edit" viewBox="0 0 32 32"
+ width="16" height="16" fill="none" stroke="currentcolor"
+ stroke-linecap="round" stroke-linejoin="round" stroke-width="6.25%">
+ <path d="M30 7 L25 2 5 22 3 29 10 27 Z M21 6 L26 11 Z M5 22 L10 27 Z"/>
+ </svg>
+ {% if page.date %}Published: {{ page.date | date(format='%F') }}{% endif %}
+ </div>
+ </header>
+ {% if page.summary %}
+ <div itemprop="summary" class="page-content">
+ {{ page.summary | safe }}
+ <nav class="readmore"><a itemprop="url" href="{{ page.permalink }}">Read more »</a></nav>
+ </div>
+ {% endif %}
+ </article>
+ {% endfor %}
+ {% endblock content %}
+ </main>
+ </body>
+</html>
diff --git a/templates/page.html b/templates/page.html
@@ -0,0 +1,28 @@
+{% extends 'index.html' %}
+
+{% block content %}
+<article class="page" itemscope itemtype="http://schema.org/BlogPosting">
+ <header>
+ <h1 class="title">{{ page.title }}</h1>
+ <div class="hushed">
+ <svg style="margin-bottom:-3px" class="i-clock" viewBox="0 0 32 32"
+ width="16" height="16" fill="none" stroke="currentcolor"
+ stroke-linecap="round" stroke-linejoin="round" stroke-width="6.25%">
+ <circle cx="16" cy="16" r="14"/>
+ <path d="M16 8 L16 16 20 20"/>
+ </svg>
+ <span>{{ page.reading_time }} minute read</span>
+ <svg style="margin-bottom: -3px" class="i-edit" viewBox="0 0 32 32"
+ width="16" height="16" fill="none" stroke="currentcolor"
+ stroke-linecap="round" stroke-linejoin="round" stroke-width="6.25%">
+ <path d="M30 7 L25 2 5 22 3 29 10 27 Z M21 6 L26 11 Z M5 22 L10 27 Z"/>
+ </svg>
+ {% if page.date %}Published: {{ page.date | date(format='%F') }}{% endif %}
+ </div>
+ </header>
+
+ <div itemprop="articleBody" class="page-content">
+ {{ page.content | safe }}
+ </div>
+</article>
+{% endblock content %}