• 3 Posts
  • 106 Comments
Joined 3 years ago
cake
Cake day: January 13th, 2022

help-circle


  • Somewhat tangential, but USB-C docking stations, as useful as it is to have everything in one cable, it can also be annoying.

    At the office, I often just want to charge my laptop with them, but they also give me a wired internet connection, which, thanks to corporate networking shitfuckery, doesn’t work. So, every time I plug in, I have to disable that wired connection.

    Also, recently a colleague had problems getting her headset working when she was plugged into certain docks, ultimately due to a bug in the OS.
    Like, alright, that should be fixed in the OS, but that USB-C dock doesn’t even have a speaker attached to it. It’s completely useless that it shows up as an audio device.
    And even after we found a workaround to fix her headset, she will now have to switch over her audio device every time she plugs into a dock.

    So, basically it’s now one step to plug in the cable, but potentially multiple steps to undo half of what you unwillingly plugged in…


  • Kind of feels disparate from it being a video game, but it’s difficult to really make this experience another way:

    I wanted to play a healer in an MMO. It was a shitty MMO, so healers could only be female characters wearing skimpy armor.

    Well, it took about half a minute until I had people walk up to me, to then just stop 3 meters away. From the way they were moving, I have to assume, they were working their cameras to look underneath my skirt, and probably doing so with only one hand.

    Some of them were sending me “hello :)” messages, which I guess is basic decency, if you’re going to use my body, but it felt weird, too, since we had nothing to talk about.

    All in all, it felt uncomfortable. And I did not even have to fear for them to start touching or even raping me. Plus, I was able to log out, delete my account and basically just leave all of that behind.

    Well, except for one thing I did not leave behind: I do not want to be the other side in that experience either.



  • Well, I’m mostly a backend dev, so my favorite part is that I don’t have to write JavaScript. 🙃

    You might be more adept at navigating it, but that language is just a minefield of unexpected behaviour and has a massive, complex ecosystem.

    I’m using Rust to compile to WASM (has the most mature tooling for that, as far as I’m aware) with Leptos as the UI framework.

    You write your HTML and CSS like normal, but JS is replaced with Rust code.

    And well, one big advantage is that since my backend is in Rust, too, I can use the exact same models, constants etc. in backend and frontend. If they drift apart, that’s a compile error.
    (You do get this advantage, too, if you use NodeJS for the backend.)

    But aside from me not liking JavaScript, there’s lots of little things that make Rust a pleasure to use here.
    Rust’s sum types (Option, Result etc.) match really nicely with the infos you need for crafting a UI. Like, just yesterday I simply wanted to load a list of songs (Vec) and thought, I’ll do the error handling later, but Rust’s paradigms still eventually left me with a Result, Error> (contains either the song list or an error message).

    At that point, I could have still just told it explode, if there’s an error, but then I realized, oh yeah, if I can’t load the list of songs, that Error is precisely what I want to show to the user.

    And then you don’t have to deal with horrid ternaries. Instead you get full pattern matching, so my UI code now looks roughly like this:

    let song_list_result = load_song_list().await;
    
    match song_list_result {
      Ok(song_list) => 
      Err(cause) => <span>{cause}</span>
    }
    

    I did leave out quite a bit of the boilerplate there, so this isn’t valid code, but point is, it’s a hundred times better than passing data and error in separate variables, separately checking, if they’re non-null and never quite knowing what all the legal states are, since both could be intentionally null or uninitialized null or unintentionally null or both non-null. It’s so much complexity that you just don’t have.

    And ultimately, yeah, I chose the word “fun” quite intentionally there. You get the cool parts of frontend, i.e. lots of visual feedback and something to show, while leaving out most of the downsides, i.e. fugly code.

    There is, of course, different downsides to the WASM/Rust/Leptos stack, like it simply being a very new ecosystem. You can’t yet pull in dozens of component libraries and so may have to build things more often yourself. And it isn’t yet as tried-and-tested as some of the bigger frameworks, plus Leptos is still going through breaking changes.

    So, yeah, maybe don’t yet switch over everything at your dayjob, and of course, if you know Rust already, that’s quite the advantage, but overall, I do quite recommend it and feel like it’ll become a lot more relevant in the future.


  • Ah, probably shouldn’t have abbreviated there. “OS automation” meaning “operating system automation”, as in scripted deployment and configuration of software, similar to Ansible, Puppet, Saltstack etc…

    I’ve mostly been frustrated with how relatively little assistance these tools give you. Your IDE obviously won’t tell you what values can be put into a given configuration slot, nor will it auto-complete the right values, if everything is written in goshdarn YAML.
    And so, this has mostly been an exercise in creating such a framework in a strongly-typed language, with lots of compile-checks, and which allows you to quickly define own task (in the same language, you use to configure tasks).


  • Current main side project is a web music player, using WASM for the UI, because everything else is no fun.

    I also have an own, tiny OS automation framework that I’ve been meaning to continue dicking around with.

    Then I’ve got a minimalistic note-taking helper program. (My note system is just a bunch of loose text files, and that program helps create those files according to a scheme and allows me to search them.)

    Planned projects, requiring larger and larger levels of megalomania:

    • A musical keyboard application, where I can type on my normal keyboard and it’ll play like a piano. Potentially integrating LV2/VST plugins in future.
    • A physics-based game, integrating concepts from general relativity and quantum physics and such. Kind of to help (me) visualize these concepts better.
    • An own Git forge, with ForgeFed integration, WASM UI etc…





  • In one of the bathrooms at my workplace, the light timer used to be far too short. It reacted to sound, but not very well, so whenever it switched off, you’d hear me clapping my hands like a dumbass.

    Then one day, I had a co-sitting with another guy. And of course, the light went out on us. I was already thinking, great, now I’ll get to applaud that guy shitting.

    But instead, the guy lifted his leg, stomped a single time and the light went back on. That was the day I learnt that I’m a rookie at pooping.



  • Ah, I thought, you were being fanciful with your wording, because acid simply tastes sour. Lemons, apples, vinegar, they all taste sour, because they contain acid.

    I just looked it up, by the way, and tomatoes apparently do contain acid, too. I guess, it’s just not usually the prevalent taste to me…


  • I find it interesting that you call them acidic. I’ve never had a tomato which tasted acidic to me, except maybe if they aren’t ripe yet.

    In fact, it’s quite common to add vinegar to tomatoes (ketchup, tomato salad, various dishes with balsamic vinegar). So, yeah, maybe your sense of taste picks up on some molecule that others can’t taste…