Father, Hacker (Information Security Professional), Open Source Software Developer, Inventor, and 3D printing enthusiast

  • 1 Post
  • 20 Comments
Joined 2 years ago
cake
Cake day: June 23rd, 2023

help-circle



  • Could be a bug in Nautilus though it’s so mature now that would be strange. I’d report it to their repo (don’t have the link and I’m on my phone but it should be easy to find).

    ext4 supports various filename encodings (simultaneously, even!) but sometimes when you copy a file from one destination to another in a batch with mixed encodings you can end up with situations like this. Especially from within a GUI.

    Does the problem occur when you copy each file one by one or only in batch?



  • without type safety your code is no longer predictable or maintainable

    This sounds like someone who’s never worked on a large Python project with multiple developers. I’ve been doing this for almost two decades and we never encounter bugs because of mismatched types.

    For reference, the most common bugs we encounter are related to exception handling. Either the code captured the exception and didn’t do the right thing (whatever that is) in specific situations or it didn’t capture the exception in the right place so it bubbles up waaaaay too high up the chain and we end up with super annoying troubleshooting where it’s difficult to reproduce or difficult to track down.

    Also, testing is completely orthogonal to types.


  • Riskable@programming.devtoProgrammer Humor@lemmy.mlBefore and after programming
    link
    fedilink
    English
    arrow-up
    6
    arrow-down
    2
    ·
    edit-2
    6 months ago

    Yeah that’s annoying but it’s a short-term problem. Python just recently cleaned up some long-standing issues that broke backwards compatibility in packaging (for certain things). Most public modules that broke made trivial changes to fix the problems (once they learned about them) and life went on.

    However, for some fucking reason a whole bunch of dependencies related to AI are dragging their feet and taking forever to fix their shit. Insisting that everyone “just use Python 3.10” and it drives me nuts too.

    This problem started to become a real thing almost two years ago (so they had plenty of warning and time to fix things) and yet here we are with still a handful of core dependencies that won’t install for things like Stable Diffusion, Flux, and various LLM stuff because they’re dragging their feet.

    I blame corporate culture: Enterprises hate upgrading their shit and they’re as slow as glaciers sometimes. There’s probably tooling at Nvidia, for example, that needs a ton of work for Torch to work with new versions of Python and since all their documentation already was written for running on Python 3.10 (and Ubuntu 22.04 LTS) they’ve created a lot of work for themselves.

    Any day now they’ll finally finish fixing all these little dependencies and then we’ll have another two years of ease before the problem rises again with Python 3.14 and it’s massive GIL-free improvements that require big changes in code to actually take advantage of them.


  • Why? The most annoying thing that I remember about it was popular modules that hadn’t been ported yet. In essence, a temporary problem; growing pains.

    The Unicode/string/bytes changes were welcome (to me). But that might just be because I had actually encountered situations where I had to deal with seemingly endless complexity and ambiguity related to Unicode stuff and encodings. Python 3 made everything much more logical 🤷


  • Riskable@programming.devtoProgrammer Humor@lemmy.mlBefore and after programming
    link
    fedilink
    English
    arrow-up
    32
    arrow-down
    12
    ·
    edit-2
    6 months ago

    Haha: “A space breaks everything.” Fuck YES! Are you kidding me‽ It’s one of the best features!

    Why? Because it’s so easy to see. In other languages you’ve got semicolons which are surprisingly difficult to notice when they’re missing. Depending on the situation (or if you’re just new to programming) you could spend a great deal of time troubleshooting your code only to find out that you’re missing a semicolon. It’s frustrating and it makes you feel stupid which is never a good thing for people who are new programming.

    Types are in a different category altogether with seemingly infinite reasons why you’d want a feature-rich, low-level type system and also why you’d want to avoid that.

    IMHO, the point of Python is to be a simple language that’s quick to write yet also very powerful and speedy when you need it to be (by taking advantage of modules written in C or better, Rust). If it had a complex type system I think it would significantly lower the value of the language. Just like how when I see an entire code repo using Pydantic and type hints everywhere it makes the code unnecessarily complex (just use type hints where it matters 🙄).

    I’m not saying using type hints on everything is a terrible thing… I just think it makes the code harder to read which, IMHO defeats the point of using Python and adds a TON of complexity to the language.

    The promise of type hints is that they’ll enable the interpreter to significantly speed up certain things and reduce memory utilization by orders of magnitude at some point in the future. When that happens I’ll definitely be reevaluating the situation but right now there doesn’t seem to be much point.

    For reference, I’ve been coding in Python for about 18 years now and I’ve only ever encountered a bug (in production) that would’ve been prevented by type hints once. It was a long time ago, before I knew better and didn’t write unit tests.

    These days when I’m working on code that requires type hints (by policy; not actual necessity) it feels like doing situps. Like, do I really need to add a string type hint to a function called, parse_log()? LOL!



  • You had corruption with btrfs? Was this with a spinning disk or an SSD?

    I’ve been using btrfs for over a decade on several filesystems/machines and I’ve had my share of problems (mostly due to ignorance) but I’ve never encountered corruption. Mostly I just run out of disk space because I forgot to balance or the disk itself had an issue and I lost whatever it was that was stored in those blocks.

    I’ve had to repair a btrfs partition before due to who-knows-what back when it was new but it’s been over a decade since I’ve had an issue like that. I remember btrfs check --repair being totally useless back then haha. My memory on that event is fuzzy but I think I fixed whatever it was bitching about by remounting the filesystem with an extra option that forced it to recreate a cache of some sort. It ran for many years after that until the disk spun itself into oblivion.


  • I wouldn’t say, “repairing XFS is much easier.” Yeah, fsck -y with XFS is really all you have to do 99% of the time but also you’re much more likely to get corrupted stuff when you’re in that situation compared to say, btrfs which supports snapshotting and redundancy.

    Another problem with XFS is its lack of flexibility. By that I don’t mean, “you can configure it across any number of partitions on-the-fly in any number of (extreme) ways” (like you can with btrfs and zfs). I mean it doesn’t have very many options as to how it should deal with things like inodes (e.g. tail allocation). You can increase the total amount of space allowed for inode allocation but only when you create the filesystem and even then it has a (kind of absurdly) limited number that would surprise most folks here.

    As an example, with an XFS filesystem, in order to store 2 billion symlimks (each one takes an inode) you would need 1TiB of storage just for the inodes. Contrast that with something like btrfs with max_inline set to 2048 (the default) and 2 billion symlimks will take up a little less than 1GB (assuming a simplistic setup on at least a 50GB single partition).

    Learn more about btrfs inlining: https://btrfs.readthedocs.io/en/latest/Inline-files.html


  • One point: ext4 has a maximum file size of 16TiB. To a regular user that is stupidly huge and of no concern but it’s exactly the type of thing you overlook if you “just use ext4” on anything and everything then end up with your database broken at work because of said bad advice.

    Use the filesystem that makes the most sense for your use case. Consider it every single time you format a disk. Don’t become complacent! Also fuck around with the new shit from time to time! I decided to format my Linux desktop partitions with btrfs over a decade ago and as a result I’m an excellent user of that filesystem but you know what? I’m thinking I’ll try bcachefs soon and fiddle around more with my zfs partition on my HTPC.

    BTW: If you’re thinking about trying out btrfs I would encourage you to learn about it’s non-trivial maintenance tasks. btrfs needs you to fuck with it from time to time or you’ll run out of disk space “for no reason”. You can schedule cron jobs to take care of everything (as I have done) but you still need to learn how it all works. It’s not a “set it and forget it” FS like ext4.



  • There’s not much to learn in Windows land! Learn how to set file permissions, how the registry works (and some important settings that use it), and how Active Directory works (it’s LDAP) and you’ll be fine.

    If you’re used to using Linux nothing will frustrate you more than being forced to use a Windows desktop. The stuff you use every day just isn’t there. You can add on lots of 3rd party tools to make it better but it’ll never measure up.

    When you have to go out on the Internet to download endless amounts of 3rd party tools the security alarms in your head might start going off. Windows users have just learned over time to ignore them 🤣


  • I interview developers and information security people all the time. I always ask lots of questions about Linux. As far as I’m concerned:

    • If you’re claiming to be an infosec professional and don’t know Linux you’re a fraud.
    • If you’re a developer and you don’t know how to deploy to Linux servers you’re useless.

    So yeah: Get good with Linux. Especially permissions! Holy shit the amount of people I interview that don’t know basic Linux permissions (or even about file permissions in general) is unreal.

    Like, dude: Have you just been chmod 777 everything all this time? WTF! Immediate red flag this guy cannot be trusted with anything.



  • You say that because you don’t realize the benefits:

    • Better support for Linux with any new PC hardware on day 1. This includes things like USB devices, monitors, KVMs, UPS, everything.
    • Better support for all commercial software in general. More software will become available and it’ll be higher quality.
    • Vendors will be forced to test all their stuff on Linux which means it’ll all become more reliable and less glitchy.
    • There will be more diversity in software and distros which means widespread attacks (aka hacking, worms, viruses, etc) will have less success and smaller impacts.
    • The more Linux users there are the more Linux developers will result. It’s also much easier to start learning how to code on a Linux desktop than it is in Windows.
    • Better security for the entire world. Linux has a vastly superior security architecture than Windows and a vastly superior track record. The more Linux users there are, the harder it will be for malicious entities to break into their PCs which translates into a more secure world.
    • It’s much easier (for experienced users) to troubleshoot and fix problems in Linux than in Windows. This will lead to support teams everywhere getting frustrated whenever they have to deal with Windows users (this is already the case for many software vendors, haha). Therefore, it makes support people happy and easy going. Who doesn’t want to reach a happy, helpful person for technical support instead of the usual defiant/adversarial support tech? 😁
    • The worst sorts of hardware vendors won’t be able to get away with their usual bullshit. For example, if there were enough Linux users HP wouldn’t be offering extremely invasive 2GB printer “drivers” because their Windows customers would know enough Linux users that they’d be rightfully pissed and not depressively submissive like they are now.
    • When you do have a problem it will be easier to find a solution because the likelihood that someone else already had it and posted a solution will be higher (though admittedly this factor doesn’t seem to do much for Windows currently because of how obtuse and obfuscated everything is in that OS).

    There’s actually a lot more reasons but that’s probably enough for now 😁


  • I’d love to see more adoption of… I2C!

    Bazillions of motherboards and SBCs support I2C and many have the ability to use it via GPIO pins or even have connectors just for I2C devices (e.g. QWIIC). Yet there’s very little in the way of things you can buy and plug in. It feels like such a waste!

    There’s all sorts of neat and useful things we could plug in and make use of if only there were software to use it. For example, cheap color sensors, nifty gesture sensors, time-of-flight sensors, light sensors, and more.

    There’s lmsensors which knows I2C and can magically understand zillions of temperature sensors and PWM things (e.g. fan control). We need something like that for all those cool devices and chips that speak I2C.