• 1 Post
  • 19 Comments
Joined 3 years ago
cake
Cake day: July 28th, 2023

help-circle
  • Yep, the closest I can get with my own oven is 300 celsius with a pizza stone. At that point the heating elements are on pretty much constantly. It leads to a relatively good crust, but still isn’t as good as a proper pizza oven. I’ve seen some normal electric ovens that go up to 350 here, which could be enough to make up the difference.

    The oven is also clearly not meant to be used like this on the daily. Parts of the oven exterior get to around 200 degress celsius when baking multiple pizzas.


  • True, the responsibility for safe lane change lays on the driver who is changing lanes. However, any sensible country also prohibits obstruction of a lane change, i.e. you can get fined if you don’t hold enough distance to the driver in front of you to allow merging, don’t make room for the person with the signal on in reasonable time or if you deliberately close the gap so the other person can’t change lanes.

    That kind of cooperation is mandatory for good traffic flow and properly made laws try to ensure that. Turning signal should result in people noticing you, and letting you safely switch lanes. Too often people get into some vigilante-mode because they see the other driver skipping in line or something similar.

    Merging is another story. Merging traffic should explicitly yield to all traffic already on the highway, similarly to how it works in a roundabout. This prevents people merging on a highway that’s over its capacity, so the traffic clears quicker. It means that traffic should queue on the ramp until it’s safe to merge, indefinitely if necessary. Mathematically it makes sense, but goes against intuition.

    Some municipalities have tried out metered entry on highways, that block turning onto the on-ramp altogether if the level of congestion is too high. Some trials have already ended due to the perceived injustice as well, as people already on the highway are typically from out of the city, and thus preventing those living closer from merging onto it. Personally I think if you’re close enough to complain about that you should be in public transit range of the population center, and complaining more about the lack of alternatives to driving.




  • antimidas@sopuli.xyztomemes@lemmy.worldKlarna for rent
    link
    fedilink
    arrow-up
    12
    arrow-down
    1
    ·
    edit-2
    7 months ago

    Serves me right for assuming Germans had a similarly judgemental attitude to people who have ruined their finances. Thanks for the correction.

    Finns often have a very puritan attitude to debt (you should fear it like the devil), and in the common discussion it’s often attributed to the ethics of the Lutheran church. That’s at least partially the reason we still don’t have a real personal bankruptcy option. Somewhat surprising to me that a country that shares that value system could be that forgiving to people – I’m a bit envious even 😅

    Around here Klarna and other similar companies have long been seen as exploiting the fact that debt is really difficult to get through proper sources, and there’s a matching draconian bunch of collections agencies to support that business model. We’ve mainly been trying to tackle this by regulating the process of giving out loans, instead of giving people the necessary way out and thus giving the corporations an incentive to self-regulate.

    If bad credit is actually no longer possible to collect on, it ceases to be good business. Hats off to Germany for having a proper route out of predatory loans.



  • Klarna 'bout to find out their business model doesn’t work as well in the US compared to the Nordic countries and EU, as

    1. People are already up to their neck in debt, putting Klarna to the back of the queue in case there’s a default
    2. Personal bankruptcy is a thing

    Especially the Northern Europe personal bankruptcy is really not a thing, fuck up your finances and you’re never going to see a penny you make (above what you strictly need to live) until everything has been paid back. Debt that is actively being collected also never expires.

    There’s a good reason Klarna’s been able to thrive in this environment – getting debt from banks is quite difficult and you have added security from the draconian collections process.

    In the US a company ignores credit scores at their own peril. The bankruptcy process is one of the few things that works better in the US than in e.g. my home country Finland.


  • One of the main historical reasons was the Debian project’s puritan approach to open source, meaning the distro was very picky about what it could easily run on. As an example, most network drivers for Realtek nics weren’t included out of the box as they contained non-free code, there was no direct way to install Nvidia drivers instead of nouveau, a lot of the hardware didn’t work in the installer unless you sideloaded the drivers from a usb stick and so on.

    There was a non-free ISO version to get around this, but you needed to know of it to use it, and it wasn’t provided anywhere by default. The download page for it was just a barebone directory listing within the mirror. No link or information was provided for it on the main project page.

    Starting from version 12 or 13 (don’t remember exactly) proprietary drivers have been included in the installation images, which removed the biggest pain point (IMO) for novice users. Apart from that Debian has been one of the easier distros to install, and has things like a considerably better experience when updating to the next major release. It’s not really slower to update packages than Ubuntu, as I’d be wary of recommending the non-LTS versions to novice users. They tend to be quite unstable compared to LTS.

    Personally I’ve daily driven Debian for close to five years, on all my devices except the work laptop. That one is running Ubuntu 24.04 as the employer requires either that or Fedora for Linux users.




  • Yep, and not a small price at that. While the home license is not as expensive, it’s still mid two digits. IIRC pro version typically costs around 100 € even as the bundled OEM license, especially if you’re buying a laptop from a smaller manufacturer. That’s the amount I remember the price going down if you drop windows licensing from a corporate laptop lease.

    In any way it’s not an insignificant price.


  • Apple used to have a function in macs with FireWire, where if you had T pressed down on the keyboard while booting, the computer booted into a mode where you could use it as a FireWire external hard drive. An insanely useful feature, for migrating files off old machines, installing OS onto a machine without a functional optical drive, quickly stealing your friend’s hard drive contents etc.

    It’s a shame it didn’t really take off as a more common feature. It would be a useful feature in so many situations, nowadays the closest I can get to it is a custom USB stick with a linux distro that tries to discover all volumes and expose them as network drives, but it’s a lot more complicated to use than just having something you plug in and it simply works. I’d love it if they did a similar thing with thunderbolt, but as far as I know it’s no longer an option.


  • antimidas@sopuli.xyztolinuxmemes@lemmy.worldSeriously, why?
    link
    fedilink
    arrow-up
    3
    ·
    edit-2
    9 months ago

    That would be the dream indeed. It’s so fluid after you learn it. Other networking equipment often has good configuration CLIs as well (like juniper and vyos), but Cisco is probably the best in my experience. It’s also nice how consistent they are across generations.

    You can get about as close as it’s possible in a normal operating system with zsh and plugins like zsh-autocomplete. Bash tries to pick up the possible alternatives from context as well (with tab suggestions) that act somewhat like ? on Cisco CLI, but implementing it is left up to the command itself to provide for the shell. Many commands luckily provide very robust autocompletion to bash out-of-the-box, especially if installed via the system package manager.

    Unfortunately we’ll probably never reach the point of actual configuration CLIs since they only have a set amount of commands that are developed by the same company. It would be close to impossible to achieve the same level of standardisation for a general operating system, as we don’t know the entire configuration of the system and there are multiple incompatible flag schemes. (As styles go, things like dd and ffmpeg throw a wrench in the works with their non-standard flags)


  • Yep, infuriatingly installers often default to small /boot volumes, and if you want to change that value better say goodbye to automatic partitioning. Although, after trying to make the installer behave, giving up and manually formatting the drive, I finally got the push required to set up both encrypted root and encrypted /home on separate drives.

    Currently I use an 8 GiB /boot, but I really think Debian installer should start making 2 GiB or even 4 GiB /boot the default now. Dumb to have the installer shoot itself in the foot like this. Ubuntu still does the same thing for some reason, as if we don’t have room on the drives to fit a bit more futureproof /boot there.



  • Don’t seem to be any disk reads on request at a glance, though that might just be due to read caching on OS level. There’s a spike on first page refresh/load after dropping the read cache, so that could indicate reading the file in every time there’s a fresh page load. Would have to open the browser with call tracing to be sure, which I’ll probably try out later today.

    For my other devices I use unbound hosted on the router, so this is the first time encountering said issue for me as well.


  • You’re using software to do something it wasn’t designed to do

    As such, Chrome isn’t exactly following the best practices either – if you want to reinvent the wheel at least improve upon the original instead of making it run worse. True, it’s not the intended method of use, but resource-wise it shouldn’t cause issues – at this point one would’ve needed active work to make it run this poorly.

    Why would you even think to do something like this?

    As I said, due to company VPN enforcing their own DNS for intranet resources etc. Technically I could override it with a single rule in configuration, but this would also technically be a breach of guidelines as opposed to the more moderate rules-lawyery approach I attempt here.

    If it was up to me the employer should just add some blocklist to their own forwarder for the benefit of everyone working there…

    But guess I’ll settle for local dnsmasq on the laptop for now. Thanks for the discussion 👌🏼


  • TLDR: looks like you’re right, although Chrome shouldn’t be struggling with that amount of hosts to chug through. This ended up being an interesting rabbit hole.

    My home network already uses unbound with proper blocklist configured, but I can’t use the same setup directly with my work computer as the VPN sets it’s own DNS. I can only override this with a local resolver on the work laptop, and I’d really like to get by with just systemd-resolved instead of having to add dnsmasq or similar for this. None of the other tools I use struggle with this setup, as they use the system IP stack.

    Might well be that chromium has a bit more sophisticated a network stack (than just using the system provided libraries), and I remember the docs indicating something about that being the case. In any way, it’s not like the code is (or should be) paging through the whole file every time there’s a query – either it forwards it to another resolver, or does it locally, but in any case there will be a cache. That cache will then end up being those queried domains in order of access, after which having a long /etc/hosts won’t matter. Worst case scenario after paging in the hosts file initially is 3-5 ms (per query) for comparing through the 100k-700k lines before hitting a wall, and that only needs to happen once regardless of where the actual resolving takes place. At a glance chrome net stack should cache queries into the hosts file as well. So at the very least it doesn’t really make sense for it to struggle for 5-10 seconds on every consecutive refresh of the page with a warm DNS cache in memory…

    …or that’s how it should happen. Your comment inspired me to test it a bit more, and lo: after trying out a hosts file with 10 000 000 bogus entries chrome was brought completely to it’s knees. However, that amount of string comparisons is absolutely nothing in practice – Python with its measly linked lists and slow interpreter manages comparing against every row in 300 ms, a crude C implementation manages it in 23 ms (approx. 2 ms with 1 million rows, both a lot more than what I have appended to the hosts file). So the file being long should have nothing to do with it unless there’s something very wrong with the implementation. Comparing against /etc/hosts should be cheap as it doesn’t support wildcard entires – as such the comparisons are just simple 1:1 check against first matching row. I’ll continue investigating and see if there’s a quick change to be made in how the hosts are read in. Fixing this shouldn’t cause any issues for other use cases from what I see.

    For reference, if you want to check the performance for 10 million comparisons on your own hardware:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <sys/time.h>
    
    
    int main(void) {
    	struct timeval start_t;
    	struct timeval end_t;
    
    	char **strs = malloc(sizeof(char *) * 10000000);
    	for (int i = 0; i < 10000000; i++) {
    		char *urlbuf = malloc(sizeof(char) * 50);
    		sprintf(urlbuf, "%d.bogus.local", i);
    		strs[i] = urlbuf;
    	}
    
    	printf("Checking comparisons through array of 10M strings.\n");
    	gettimeofday(&start_t, NULL);
    
    	for (int i = 0; i < 10000000; i++) {
    		strcmp(strs[i], "test.url.local");
    	}
    
    	gettimeofday(&end_t, NULL);
    
    	long duration = (end_t.tv_usec - start_t.tv_usec) / 1000;
    	printf("Spent %ld ms on the operation.\n", duration);
    
    	for (int i = 0; i < 10000000; i++) {
    		free(strs[i]);
    	}
    	free(strs);
    }