moved from us instance

  • 0 Posts
  • 35 Comments
Joined 1 month ago
cake
Cake day: June 3rd, 2026

help-circle
  • leave it at home when you are out of the house.

    This would bring up the question: What do i need a phone for? for me it’s just a mobile computer for surfing to kill some time when i’m out somewhere having to wait

    Same! That advice is for people using a phone for calls and SMS and such. I don’t. No SIM card. Airplane mode. It’s just a mobile computer. I can choose to bring and not bring it freely with zero consequences. I can scroll Lemmy from public Wi-Fi. Also, Gemini is designed to be “offline-able” just like the early web (scrape a bunch of logs and read them later) but the only implementation of that idea I could find is “offpunk” (I have a copy in Termux), BUT it is in Python, which means it brings in 2 gigs of dependencies with it… Maybe I will write my own solution one day. One day. Among other "my own solution"s that are piled up at the back of my head while I do nothing productive.

    anonymously purchased SIM card

    That thing has been killed here (germany) a while ago.

    Sad.

    And also Google for making an OS so bloated.

    Oh yes, but not only google. Everything gets bloated as fuck AND devs become lazier and lazier. Done and gone are the days of optimizing software

    Yeah! Although I would put that “gone” line a lot further back than most people. Some say C++ was a conspiracy, yet everything GUI nowadays is either C++ or faked C++ with C macros. That’s another thing in the back of my head that I would have “my own solution” for.

    Wi-Fi MAC randomization

    Maybe it helps: i dunno which android-version, they had a bug with OFF=ON and vice versa. So “random mac=fixed”. Made me so effing angry.

    Yup. That’s the old behavior when broken AFAIK, the new behavior is that you literally no longer have a checkbox for MAC randomization per network. There’s still a checkbox for “randomize per connection” in developer settings in that case, and it does a grand total of nothing.

    and since I don’t have Google services AND it’s in airplane mode constantly, it has no events to wake up for and literally doesn’t connect to Wi-Fi until I press a side button.

    superfucking annoying.

    Right. But in my case it (mostly) mitigates the lack of MAC randomization, so like, whatever. Also, battery lasts forever this way. If you want the “Googled” + cell towered behavior of constantly doing stuff, I think there are workarounds somewhere, same for the “Googled” behavior of having GPS ready at all times… Well, you would need root, and I won’t get into details this time but that breaks some of Graphene’s architectural assumptions. It will work but it requires fucking up some of the security down. Still much higher than Lineage for example.

    So far I’m fine with graphene

    Amazing for you! I am (mostly) fine with the Lineage (with the no-SIM part of course) despite being much less secure than Graphene. Graphene is like the “eat TailsOS MicroSD card to shit out weekly” of the phone world.

    i kinda feel like a traitor with a pixel

    Wait until you hear how many silicon fabs there are in the world, how many of them are doing microprocessors (not a lot), and how many aren’t owned by oligarchs (zero). Free software still leverages all of that. That’s why I am against bloat and webapps, software should run on as many existing chips as feasible.

    Honestly, I would rather still have my 2gig RAM phone so that I can be in the minority to complain about stuff like the F-Droid v3 alpha being the only version that I have to wait around to load.


  • what’s your alternative?

    I don’t bring a phone with me, usually. “Open phone” is an oxymoron, modem firmware is a black box. “Secure telephony” is an oxymoron, it’s unencrypted and SS7 access is being sold which lets people even impersonate phones on the network.

    You could use some VoIP provider (jmp.chat?) or get a landline installed for times when you ABSOLUTELY NEED a phone number, like for a hospital that mandates it for a reason or another. You could also ask relatives if they have some keypad phone lying around (unless your country no longer has the infra for them, ahem, the US, ahem) or buy an MT62xxx (microcontroller levels of power) MAUI based nugget (my personal favorite is Sigma Mobile) for ~10 to 4 USD depending on where. In some locations, you can buy a phone with a prepaid plan that you can just not bring home afterwards (return / give away). For work, ask for a work phone/SIM or just get a pair that you only turn on at work. I will quote some more intelligent people here (CC-BY-NC-4.0, “anarsec”):

    To prevent your movements from being tracked, treat the smartphone like a landline and leave it at home when you are out of the house. Even if you use an anonymously purchased SIM card, if it is linked to your identity in the future, the service provider can be retroactively queried for geolocation data. If you use the phone as we recommend (as a Wi-Fi only device that is kept in airplane mode at all times), it won’t connect to cell towers. It’s not sufficient to only leave the phone at home when you’re going to a meeting, demo or action because that will be an outlier from your normal pattern of behaviour and serve as an indication that criminal activity is taking place in that time window.

    That advice is clearly for people protesting, but even if not, some govt official could think you were at some illegal event.


    Personally, when I do bring a phone, it’s usually to feed the addiction :/ . I have a phone from like 2016 with LineageOS which I basically only use for 2FA when mandated (not often at all) and to scroll Lemmy from public Wi-Fi. Native(-ish) apps run really fast to me (my Lemmy client is Jerboa), but a modern browser is extremely slow and often crashes background stuff (and itself) due to RAM. Thanks, the W3C. And also Google for making an OS so bloated. I have a copy of Chawan in Termux for a special occasion. Apart from that, I may also (very rarely) bring a PostMarketOS phone (SXMO-de-sway/SWMO) just to write code or something else (although touch keyboards suck and I often find myself waiting until I am home and have a proper keyboard). Too bad the Nokia N900 is so rare and expensive… Anyways, if I really wanted to, I could buy a SIM card from a grocery store, shove it up one of the phones, then do my thing and throw it away before getting airplane mode again and arriving home. If I were to do that multiple times, it would absolutely blow privacy due to radio fingerprint and IMEI, though.

    Annoyingly, my specific device port of LineageOS doesn’t have Wi-Fi MAC randomization support enabled at build time for whatever reason, and building Android is a complete pain requiring insane amounts of RAM and storage, managed to just barely advance in the build scripts to get it to compile a boot image with the kernel (itself needs much less resources lmao, it’s the fucking build script). Sooooooo there’s that. And even if I fixed it for everyone with a patch, LineageOS maintainers will just let it sit on the platform (that is ironically Google account only) forever and ever with a -1 score. BUT normally Android is set up to wake up the phone every .03 picoseconds and put itself back to sleep which is how it connects to Wi-Fi, and since I don’t have Google services AND it’s in airplane mode constantly, it has no events to wake up for and literally doesn’t connect to Wi-Fi until I press a side button. That with the hostname being set to a single space character, good enough.


  • Ubuntu touch is “open-washed” just like Android. I mean, technically you could do everything, like on Android. But you are basically limited to the one app store.

    I know because a friend tried it. I recalled it having Snapcraft but I guess not, it came with “open store”. It is bloated as fuck. Well, at least it has some sort of server source, so “open” is technically correct, but nobody is using it because nobody cares about Ubuntu Touch seriously. No idea how it works but I am guessing it’s the same “install whole userspace with program” thing. Most of the “apps” are web wrappers and automated repackagings from elsewhere. A lot less actually touchscreen-only usable programs than like the Alpine repos, mostly full of stuff like “An appointment calendar, a clock, a terminal, a control panel, an MS-DOS executive AND, can you believe it, reversi!”.

    There’s a “terminal” app but the root filesystem is read only by default, only slightly less useless than a terminal emulator on unrooted Android.

    Haven’t read into Jolla and such but I am guessing it’s all the same shit. Corporate mobile OSes that just happen to be running unixy kernel/user spaces aren’t new at all. A keypad phone I have from 2009 lists “FreeBSD kernel” under “License and legal info”. Amazing! But useless.




    • Write down GUID for sda6
    • copy sda5 contents somewhere
    • dd sda6 to sda2
    • delete sda6
    • change the GUID for sda2 to the one written down
    • fsck sda2 to fix size
    • make sda1’s type EFI
    • copy sda5 contents to sda1
    • delete sda5
    • you can now resize whatever is left (if your partition tool doesn’t have resize, just delete and recreate with the same starting sector, again you have to keep GUID for root and fsck it to fix size)






  • Here’s this masterpiece I wrote for Python class.

    import document
    def greeting(user_name: str):
        def generate_greeting(greet_user: str):
            # Java
            class Abstract_greeting_generator_factory_factoryClass:
                def __init__(self):
                    def abstract_greeting_generator_factory_factory():
                        def abstract_greeting_generator_factory():
                            def abstract_greeting_generator(user_name: str):
                                def greeting_generator(user_name: str):
                                    #return("Hello, " + user_name + "!")
                                    # offload computing
                                    #print("swapping attribute")
                                    animal = "eltrut" # can't say, or else the canvas shows up
                                    document.getElementById("python_" + animal[::-1] + "Canvas").setAttribute("greet_name", user_name)
                                    #print("inserting script")
                                    document.getElementById("python_" + animal[::-1] + "Canvas").innerHTML = "<input type=image src=1 onerror=\"document.getElementById('python_" + animal[::-1] + "Canvas').setAttribute('greet_name', 'Hello, ' + document.getElementById('python_" + animal[::-1] + "Canvas').getAttribute('greet_name') + '!')\">"
                                    #print("waiting for response")
                                    while document.getElementById("python_" + animal[::-1] + "Canvas").getAttribute("greet_name") == user_name:
                                        pass # CPU waste inator 3000
                                    #print("hiding crimes")
                                    # id=xss doesn't w*rk, I tried
                                    document.getElementById("python_" + animal[::-1] + "Canvas").innerHTML = ""
                                    #print("returning")
                                    return(document.getElementById("python_" + animal[::-1] + "Canvas").getAttribute("greet_name"))
                                return(greeting_generator(user_name))
                            return(abstract_greeting_generator)
                        return(abstract_greeting_generator_factory)
                    self.abstract_greeting_generator_factory_factory = abstract_greeting_generator_factory_factory
                def return_greeting_generator_factory_factory(self):
                    return(self.abstract_greeting_generator_factory_factory)
            Abstract_greeting_generator_factory_factoryClassInstance = Abstract_greeting_generator_factory_factoryClass()
            abstract_greeting_generator_factory_factoryInstance = Abstract_greeting_generator_factory_factoryClassInstance.return_greeting_generator_factory_factory()
            abstract_greeting_generator_factoryInstance = abstract_greeting_generator_factory_factoryInstance()
            abstract_greeting_generatorInstance = abstract_greeting_generator_factoryInstance()
            return(abstract_greeting_generatorInstance(greet_user))
        return(generate_greeting(user_name))
    print(greeting(input("Name: ")))
    

    I also have one somewhere that runs Minecraft


  • I don’t know how your monitor is this efficient, mine consumes around that exact amount (40 watts) according to “displayspecifications.com”.

    Anyways, with my laptop eDP panel instead (driven by sway), external keyboard, external mouse, I have running:

    • systemd, glibc, NetworkManager, all that evil ass background crap
    • mpv playing a .ogg to headphones
    • Firefox with this website, typing rn
    • weechat connected to 3 servers
    • toxic
    • claws mail
    • Tor daemon
    • Wi-Fi through 2 walls

    Let’s look at upower -d:

    energy:              35,926 Wh
    energy-empty:        0 Wh
    energy-full:         35,926 Wh
    energy-full-design:  53,049 Wh
    (...)
    energy-rate:         5,64 W
    time to empty:       6,3 hours
    (...)
    capacity:            67,7223%
    technology:          lithium-ion
    

    roflmao (no, I don’t know why my battery is already this dead, or at least is counted as such)

    EDIT: before anyone mentions how a laptop is cheating, mini PCs all have laptop CPUs/APUs anyway




  • I was writing a really long answer but it disappeared, fuck me.

    Anyways, I guess I am going to skip the scientific explanation, but CachyOS’s optimizations most of the time mean energy efficiency. Most of the time. It’s not a hard guarantee, could make things much worse depending on what’s running.

    Now, as for distributions. Load one of the following with a copy of sway-git or hyprland (or if your box is old enough to have 2D acceleration, better use TWM, DWM…).

    If you want a “traditional” distribution, like when you can just run some random binary from the interwebs and meet most of it’s assumptions to let it “just run”, I suggest Arch Linux (yes, really) with a thing called “ALHP.go” (basically repos that provide optimized packages just like CachyOS, except that this is the original). I don’t know of anything like CachyOS and ALHP elsewhere anywhere, so this may be the most performing option.

    If you are fine with having to run a container for the unity shovelware friends send you, look into Adelie Linux and Alpine. They are energy efficient, but for the wrong reasons: lighter weight component alternatives just means less work to do. In Alpine, the packages are also optimized for storage rather than performance, which has a side effect that your CPU can load whole chunks of programs into cache and use RAM less. If you are fine with a virtual machine on non-Linux, you probably wouldn’t need this advice, but there’s midnightBSD and OpenBSD and such. OpenBSD is meant for security and not performance (even blocks multi threading by default), but it comes with the side effect of being very small and thus energy efficient.

    Technically, a source distribution like T2 or Gentoo would be the most performant AND energy efficient, but you need to burn quite a lot of electricity to get there first and to install updates. Using clang instead of GCC makes this a bit less painful but still. UNLESS you just rent a server and offload everything there with something like distcc.

    Now, a few little remarks:

    • What the other person said about the web is true, the modern web sucks balls. You could use browsers like Chawan, Netsurf (git since last release is old) and Dillo (git), then play videos with mpv + yt-dlp and stuff. However, you will eventually run into one of the abominations of websites that have 3 language translations on top of each other and require the latest of technologies. Also, you would be locked out of most Lemmy instances (some have JSless old.{domain} but not mine :/). Now, ALHP has optimized Firefox, but most of the most important routines have been turned into hand crafted assembly for each generation of CPU (yes, really), so the performance (and energy) impact isn’t as good as you would expect. Your web browser will be using the most power regardless. Although you can make it slightly better with UBlock Origin and decentraleyes (both included in Arch repos)… I’ve heard the Firefox people are starting to upstream a native adblock engine which means it will be faster, though it’s not quite there yet.
    • Sometimes, the Linux kernel will set the minimum CPU frequency above the actual minimum and I couldn’t find a proper reason for it. My workaround is running this script in a few places on startup as root: echo "1" | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_min_freq.
    • Avoid running flatpak, snapd…
    • Disable daemons you don’t need (like Avahi).
    • Avoid running web browser wrappers (Element, Discord, Jitsi meet…), just use your default browser. When you need them (Steam, Signal), stop them after you are done.
    • You may have luck turning off devices physically with “acpi_call”.

    You can also make scripts like this (example is for Arch):

    scripts

    minimize_network_services.sh

    #!/bin/sh
    sudo systemctl stop snowflake-proxy
    sudo systemctl stop i2pd
    sudo systemctl stop ipfs@alex.service
    sudo systemctl stop zerotier-one
    sudo systemctl stop gnunet
    sudo systemctl stop tor
    akonadictl stop
    pkill -9 akonadi
    pkill -9 Telegram
    pkill -9 signal-desktop
    pkill -9 steam
    

    no_network_services.sh

    #!/bin/sh
    . ./minimize_network_services.sh
    sudo systemctl stop NetworkManager
    sudo rfkill block wlan
    sudo systemctl stop ntpd
    

    min_network_services.sh

    #!/bin/sh
    sudo rfkill unblock wlan
    sudo systemctl start NetworkManager
    sudo systemctl start ntpd
    

    yes_network_services.sh

    #!/bin/sh
    . ./min_network_services.sh
    sudo systemctl start snowflake-proxy
    sudo systemctl start i2pd
    sudo systemctl start gnunet
    systemctl --user start ipfs