www

my website
git clone https://tilde.team/~marisa/repo/www.git
Log | Files | Refs | README

commit 9090440f009720ceb65a137da9f608ae4eca4bf5
parent 9bc17d9018ac2114968aee71701f4bcf7446523e
Author: mokou <mokou@posteo.de>
Date:   Mon, 13 Apr 2020 18:26:12 +0200

Initial commit

Diffstat:
A.gitignore | 1+
Aconfig.toml | 19+++++++++++++++++++
Acontent/_index.md | 4++++
Acontent/rustlings-2-0.md | 92+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/system76-oryx-impressions.md | 101+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dindex.html | 1-
Astatic/fonts/Inter-Regular.woff | 0
Astatic/fonts/Inter-Regular.woff2 | 0
Astatic/fonts/merriweather-v21-latin-regular.woff | 0
Astatic/fonts/merriweather-v21-latin-regular.woff2 | 0
Astatic/main.css | 81+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atemplates/index.html | 69+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atemplates/page.html | 28++++++++++++++++++++++++++++
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&nbsp;&raquo;</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 %}