Skip Navigation
Anubis is awesome! Stopping (AI)crawlbots
  • This all appears to be based on the user agent, so wouldn't that mean that bad-faith scrapers could just declare themselves to be typical search engine user agent?

  • Anubis is awesome! Stopping (AI)crawlbots
  • I've been thinking about setting up Anubis to protect my blog from AI scrapers, but I'm not clear on whether this would also block search engines. It would, wouldn't it?

  • Social media incentivised spread of Southport misinformation, MPs say
  • Was it "social media" or was it specific tech companies trading rage for clicks? I find it hard to believe that Mastodon & Lemmy would be comparable to X & Facebook in this area.

  • What's the use-case for Firefox containers?
  • I use them quite heavily in combination with Cookie Autodelete. I then create a separate profile for each surveillance capitalist service I work with. So for example, here's my list of containers:

    A screenshot of my container list

    Every time I visit one of these sites, Firefox opens them in the respective container, and the cookies they create are isolated to that container. When I'm in the LinkedIn container, Cookie AutoDelete nukes every cookie that isn't from LinkedIn (including Google, GitHub, etc.). When I'm not in any container, all cookies are deleted everywhere.

    Basically it's a nice way to leverage Cookie Autodelete without having to whitelist Big Tech for all my browsing.

  • Rightwing campaigners claim there is covert deal to return Parthenon marbles
  • I should hope that they're right. We should return what was stolen.

  • Labour housing plans could destroy 215,000 hectares of nature in England, analysis shows
  • You do not need to pave green space to build homes. There's plenty of paved, ugly, low-density areas in desperate need of upgrades. The problem is the British public's obsession with that idea that everyone needs their own patch of grass and two cars.

  • Devils Panties 07/10/2025
  • As someone else said here, programmers are not a monolith. However, I've seen it multiple times on the job and in social media where programmers are using these tools to write code voluntarily. The code produced is often garbage, and I have to reject it at review time, but there are a lot of programmers using these things willingly.

  • Production breaking driven developer
  • I had a job interview a few weeks ago where the lead developer straight-up said that he doesn't have any tests in the codebase because "it's just writing your code twice". I thought he was joking. Unfortunately he was not.

    I didn't end up getting the job, perhaps because I made it clear that I thought he was very wrong. I think I dodged a bullet.

  • Two Party System
  • Why would they do that? The current system ensures that at least one of them will always be in charge, and they effectively have the same politics.

  • Found a video guide to spotting posts written by LLMs. Thought it might be useful.
  • Please don't give this any credit. Nonsense like this is already being used to filter web form submissions for things like job applications.

    Source: I applied for a role at a medium-sized company a couple weeks ago and was auto-rejected because my cover letter appeared to be AI-generated. I clicked "back", removed an em-dash, and the form was accepted.

  • Trans woman ‘covered in blood and bruises’ after transphobic attack in street
  • How can anyone hate someone so much, when she never did anything to them?

    Imagine that your life is terrible. You're poor, desperate, maybe ill too. You live with your parents who are also poor and desperate, and the lot of you self medicate with copious amounts of alcohol.

    You're miserable, and not terribly bright. Then one day, your primary media sources and even the governing political party starts parroting the same lie that the reason your life if shit is because trans people and immigrants exist. No one with a similarly large platform is telling you the truth.

    Now consider how many millions of purple have been abandoned by the state in this country. How many poor and desperate people we've made in the last 10 years and the incentive the owning class has in laying the blame for that at the feet of anyone but themselves.

    Hate is learnt, and the teachers are holding all the money & power.

  • What is the supposed workflow for vanilla Gnome for keyboard users?
  • I don't think there's an official "way", but here's mine (which I love):

    On start-up I open all the apps I usually use, one per designated workspace:

    1. Slack/Teams/Mattermost, whatever my work requires.
    2. Thunderbird
    3. Kitty
    4. PyCharm/RustRover, whatever the job requires
    5. Firefox

    Workspaces 6-9 are left empty, ready for whatever app I need in the moment, but only ever one app per workspace.

    With this setup, I've mapped Ctrl+Fx to each workspace, so Ctrl+F4 takes me to PyCharm where I write the code, and Ctrl+F5 followed by another F5 takes me to Firefox and reloads the page. Ctrl+F3 is always the terminal, etc., so you quickly start building these shortcuts to mean Fwhatever is $APP_NAME.

    I almost never use the mouse, unless what I'm doing is necessarily mouse-driven: browsing or drawing charts etc. Everything else is keyboard-driven.

  • eev.ee The rise of Whatever

    This was originally titled “I miss when computers were fun”. But in the course of writing it, I discovered that there is a reason computers became less fun, a dark thread woven through a number of events in recent history. Let me back up a bit.

    The rise of Whatever

    Evelyn Woods (aka eevee) has posted some venerable takes over the years (she also wrote my personal favourite rant of all time: "PHP: A Fractal of Bad Design"), but this one, where she connects industry's generic idea of "content" to what she refers to as a "Whatever machine" is really quite excellent.

    1
    Automakers hopeful that Carney will repeal EV sales mandate
  • Honestly, I'd favour dropping any incentives for EVs, so long as Canada were to then redirect its efforts into transit and active transport. You just can't replace every combustion car on the road with an EV, but you can narrow roads, reduce lanes, and add trains, trams, and cycle paths.

  • How to Poison AI
  • I would very much like to do this for code.

  • Canadian Games Sale
  • Oh I've never used it to find games. I just go to the store pages directly. I didn't even know it had such a feature!

  • Canadian Games Sale
  • It's pretty good, but my problem is that if a game doesn't run I assume it's because I screwed something up. For example, Synergy, has a platinum rating and it installs just fine, but once started is just do slow for even drawing the starting menu while my CPU goes crazy. Clearly there's a problem with it not using my GPU, but fucked if I know what package I didn't install/configure properly.

  • Canadian Games Sale
  • Me too! I've been using Steam on Linux for a while, but thanks to American fuckery, I've had to experiment with leveraging Proton in Heroic to play GOG games. It's pretty smooth though. I installed Disco Elysium this morning and it Just Worked™. I then went ahead and bought a bunch of indie games: Dorfromantik, Frostpunk, and Terraformers in GOG's own Sumner sale. Not Canadian games mind you, but also not American ;-)

  • danielquinn.org AI Agents: A Pox on Free Society

    I've been thinking a lot on this lately, and with our seemingly uncritical march toward AI facilitating everything, I feel like I should get in …

    AI Agents: A Pox on Free Society

    I think a lot of people out there are fundamentally misunderstanding the reasoning behind the big tech companies (and their investors) pushing AI into everything. We want to believe that it's just tech bros trying to woo idiot investor cash into their systems — and it is that, a little bit anyway — but the big players: Microsoft, Google, Meta, and even Visa know exactly what they're doing and it's not good news for the rest of us.

    Anyway, I wrote this a few days ago to break down the problem as I see it. I'm hoping it proves helpful.

    0
    Are there any repair/Linux cafés in Cambridge that might want to contribute to "EndOf10"?
    endof10.org End of 10

    Windows 10 ends in 2025. Don’t buy a new PC — revive yours with Linux. It's fast, secure, and help is available to get you started.

    End of 10

    It seems like a great initiative, and I'd be happy to help out, but I don't have a venue myself.

    0
    Has the Deck turned *off* any other Steam users?

    I've been a Steam customer for a very long time, having spent a few thousand dollars over the years with them. Like many of you, I've got a (small?) group of games that I bought and barely-if-ever played, and I'm cool with that. As they say, piracy is a service problem, and Steam is just... easy.

    That was until I bought my Deck. Suddenly, I had two devices on which I could play my games: my proper gaming rig upstairs and my Deck plugged into the TV downstairs.

    I also however, have a kid that likes video games, so sometimes I let her play a few games on the TV... and that's where everything breaks down. If she's playing Lego Marvel on the Deck, my copy of Dyson Sphere Program flakes out upstairs with a warning that "someone else is playing a game, so this game will have to shut off" or some nonsense like that.

    I'm suddenly face to face with the fact that I don't actually own my games and those few thousand dollars weren't spent on what I expected. It's... enraging to put it gently.

    I can appreciate that there would be an attempt to prevent me from playing the same game on two devices (though I think that's bullshit too), but to prevent me from playing two different games on two different machines when both are legally purchased running on my own hardware is not ok.

    83
    Can you configure tmux to use "normal" modifier keys?

    I find the whole "Ctrl+b followed by another key" way of navigating tmux to be too cumbersome to warrant a switch away from something like Tilix where I can hit Ctrl+Alt+| and the screen splits vertically, or Alt+Left to switch to the terminal on the left. I think it's the mandatory release of all keys followed by more keys that does it.

    Is there a way to tell tmux to understand that "Alt+Left means switch to the terminal on the left" and bypass the whole Ctrl+b song and dance altogether?

    15
    Donation page appears to be broken

    This is what I see in both Firefox and Chromium

    2
    An app to post to an arbitrary URL?

    I'm a web developer, mostly with Python and have close to zero Java or Kotlin experience, but I want to build a bunch of tools for my phone where I can Share a URL (for example) to an app that simply takes that URL string and sends an HTTP POST request to a pre-arranged URL with some pre-arranged headers or POST data.

    So basically I'm looking for an app that:

    • Lets you define a series of endpoints
    • Accepts share intents from other apps to then bring up a selector asking "Which endpoint do you want to send this to?", sends it, and exits.

    It seems a little nuts that I should have to develop a separate app for each endpoint, when the app experience isn't really something I'm interested in. Can someone here point me to an app that already does something like this? I'd prefer a FOSS option if possible, but at this point I don't even know what to search for.

    Example use-cases:

    • Send a YouTube URL to a service that downloads said video and stores it on a share on my VPN
    • Send a text snippet to a service that stores that snippet as a Markdown file for use as ideas for future blog posts
    • Send an article URL to a service that strips the ads and images out and saves a Markdown file for future reading.
    gemini @lemmy.ml Daniel Quinn @lemmy.ca
    What's the "gunicorn/uwsgi" for Gemini

    I've recently learnt about Gemini and I'm reasonably sure that I can write a Django extension to allow the same code I use to run my website also serve more-or-less the same information over Gemini. Unfortunately, while I'm familiar with Django internals, I've always relied on Gunicorn + Nginx/Traefik to handle the HTTP portion of the request/response.

    So if I'm going to do this, I need to know what to use to speak Gemini. I found the very simple aiogemini, which I can improve upon and probably link to Django's URL handler, but it's based on asyncio, while Django only partially supports async. I also have no idea what might be fine to replaced the traefik (let alone cert-manager) portion of the process.

    I could try to write something from scratch, but there's no sense in reinventing a square wheel, so I thought I'd ask here.

    1
    Amazon delivery vans were parked in bike lanes all over Cambridge today.
    mastodon.social Daniel Quinn (@danielquinn@mastodon.social)

    Attached: 3 images #Amazon delivery vans were parked in bike lanes all over Cambridge today. #FuckCars

    Daniel Quinn (@danielquinn@mastodon.social)

    cross-posted from: https://lemmy.ca/post/33126960

    102
    How to find what's eating 100% of just one core?

    From time to time, often after I've restored from sleep or finished playing a Steam game, one of my CPU cores is pinned at 100% with no indication of what might be doing it. Running htop, btop, or GNOME system monitor all show the same thing: CPU0 at 100% while the rest are doing near-nothing, and no process in particular seems to be using those resources.

    If I restart, it's back to normal, and sometimes I can play a game in Steam or let the computer go to sleep and it doesn't do this, but it happens often enough that's annoying/confusing so I'd like to know if there's a way to either (a) diagnose which processes are using which CPU cores, or (b) somehow "reset" the checking of these values to make sure that something's not just being misreported.

    This is a desktop system running Arch & GNOME.

    30
    danielquinn.org Developing with Docker

    > **Update**: there's now a [companion repo](https://gitlab.com/danielquinn/developing-with-docker-demo) to serve as a demonstration of the below. You'd think that this topic would have been done to …

    Developing with Docker

    I've been writing code professionally for 24 years, 15 of which has been Python and 9 years of that with Docker. I got tired of running into the same complications every time I started a new job, so I wrote this. Maybe you'll find it useful, or it could even start a conversation, but this post has been a long time coming.

    Update: I had a few requests for a demo repo as a companion to this post, so I wrote one today. It includes a very small Django demo user Docker, Compose, and GitLab CI.

    19
    My UX seemed to really slow down after the update
    mastodon.social Daniel Quinn (@danielquinn@mastodon.social)

    Attached: 1 image After an update, my #Fairphone appeared to slow down, but it wasn't overloaded. Apps all performed their jobs quickly, but the *animations* were sluggish. Digging into the "Developer Options", I noted that the drawing animations were all set to `2x`, and bumping them down to `1`...

    Daniel Quinn (@danielquinn@mastodon.social)

    ...so I found out how to fix it

    5
    The number of lines for each character by percentage of the series

    It would seem that I have far too much time on my hands. After the post about a Star Trek "test", I started wondering if there could be any data to back it up and... well here we go:

    Those Old Scientists

    | Name | Total Lines | Percentage of Lines | | ---------------- | :---------: | ------------------: | | KIRK | 8257 | 32.89 | | SPOCK | 3985 | 15.87 | | MCCOY | 2334 | 9.3 | | SCOTT | 912 | 3.63 | | SULU | 634 | 2.53 | | UHURA | 575 | 2.29 | | CHEKOV | 417 | 1.66 |

    The Next Generation

    | Name | Total Lines | Percentage of Lines | | ---------------- | :---------: | ------------------: | | PICARD | 11175 | 20.16 | | RIKER | 6453 | 11.64 | | DATA | 5599 | 10.1 | | LAFORGE | 3843 | 6.93 | | WORF | 3402 | 6.14 | | TROI | 2992 | 5.4 | | CRUSHER | 2833 | 5.11 | | WESLEY | 1285 | 2.32 |

    Deep Space Nine

    | Name | Total Lines | Percentage of Lines | | ---------------- | :---------: | ------------------: | | SISKO | 8073 | 13.0 | | KIRA | 5112 | 8.23 | | BASHIR | 4836 | 7.79 | | O'BRIEN | 4540 | 7.31 | | ODO | 4509 | 7.26 | | QUARK | 4331 | 6.98 | | DAX | 3559 | 5.73 | | WORF | 1976 | 3.18 | | JAKE | 1434 | 2.31 | | GARAK | 1420 | 2.29 | | NOG | 1247 | 2.01 | | ROM | 1172 | 1.89 | | DUKAT | 1091 | 1.76 | | EZRI | 953 | 1.53 |

    Voyager

    | Name | Total Lines | Percentage of Lines | | ---------------- | :---------: | ------------------: | | JANEWAY | 10238 | 17.7 | | CHAKOTAY | 5066 | 8.76 | | EMH | 4823 | 8.34 | | PARIS | 4416 | 7.63 | | TUVOK | 3993 | 6.9 | | KIM | 3801 | 6.57 | | TORRES | 3733 | 6.45 | | SEVEN | 3527 | 6.1 | | NEELIX | 2887 | 4.99 | | KES | 1189 | 2.06 |

    Enterprise

    | Name | Total Lines | Percentage of Lines | | ---------------- | :---------: | ------------------: | | ARCHER | 6959 | 24.52 | | T'POL | 3715 | 13.09 | | TUCKER | 3610 | 12.72 | | REED | 2083 | 7.34 | | PHLOX | 1621 | 5.71 | | HOSHI | 1313 | 4.63 | | TRAVIS | 1087 | 3.83 | | SHRAN | 358 | 1.26 |

    Discovery

    Important Note: As the source material is incomplete for Discovery, the following table only includes line counts from seasons 1 and 4 along with a single episode of season 2.

    | Name | Total Lines | Percentage of Lines | | ---------------- | :---------: | ------------------: | | BURNHAM | 2162 | 22.92 | | SARU | 773 | 8.2 | | BOOK | 586 | 6.21 | | STAMETS | 513 | 5.44 | | TILLY | 488 | 5.17 | | LORCA | 471 | 4.99 | | TARKA | 313 | 3.32 | | TYLER | 300 | 3.18 | | GEORGIOU | 279 | 2.96 | | CULBER | 267 | 2.83 | | RILLAK | 205 | 2.17 | | DETMER | 186 | 1.97 | | OWOSEKUN | 169 | 1.79 | | ADIRA | 154 | 1.63 | | COMPUTER | 152 | 1.61 | | ZORA | 151 | 1.6 | | VANCE | 101 | 1.07 | | CORNWELL | 101 | 1.07 | | SAREK | 100 | 1.06 | | T'RINA | 96 | 1.02 |

    If anyone is interested, here's the (rather hurried, don't judge me) Python used:

    ```python #!/usr/bin/env python

    This script assumes that you've already downloaded all the episode lines from

    the fantastic chakoteya.net:

    wget --accept=html,htm --relative --wait=2 --include-directories=/STDisco17/ http://www.chakoteya.net/STDisco17/episodes.html -m

    wget --accept=html,htm --relative --wait=2 --include-directories=/Enterprise/ http://www.chakoteya.net/Enterprise/episodes.htm -m

    wget --accept=html,htm --relative --wait=2 --include-directories=/Voyager/ http://www.chakoteya.net/Voyager/episode_listing.htm -m

    wget --accept=html,htm --relative --wait=2 --include-directories=/DS9/ http://www.chakoteya.net/DS9/episodes.htm -m

    wget --accept=html,htm --relative --wait=2 --include-directories=/NextGen/ http://www.chakoteya.net/NextGen/episodes.htm -m

    wget --accept=html,htm --relative --wait=2 --include-directories=/StarTrek/ http://www.chakoteya.net/StarTrek/episodes.htm -m

    Then you'll probably have to convert the following files to UTF-8 as they

    differ from the rest:

    * Voyager/709.htm

    * Voyager/515.htm

    * Voyager/416.htm

    * Enterprise/41.htm

    import re from collections import defaultdict from pathlib import Path

    EPISODE_REGEX = re.compile(r"^\d+\.html?$") LINE_REGEX = re.compile(r"^(?P<name>[A-Z']+): ")

    EPISODES = Path("www.chakoteya.net") DISCO = EPISODES / "STDisco17" ENT = EPISODES / "Enterprise" TNG = EPISODES / "NextGen" TOS = EPISODES / "StarTrek" DS9 = EPISODES / "DS9" VOY = EPISODES / "Voyager"

    NAMES = { TOS.name: "Those Old Scientists", TNG.name: "The Next Generation", DS9.name: "Deep Space Nine", VOY.name: "Voyager", ENT.name: "Enterprise", DISCO.name: "Discovery", }

    class CharacterLines: def init(self, path: Path) -> None: self.path = path self.line_count = defaultdict(int)

    def collect(self) -> None: for episode in self.path.glob(".htm"): if EPISODE_REGEX.match(episode.name): for line in episode.read_text().split("\n"): if m := LINE_REGEX.match(line): self.line_count[m.group("name")] += 1

    @property def as_tablular_data(self) -> tuple[tuple[str, int, float], ...]: total = sum(self.line_count.values()) r = [] for k, v in self.line_count.items(): percentage = round(v * 100 / total, 2) if percentage > 1: r.append((str(k), v, percentage)) return tuple(reversed(sorted(r, key=lambda _: _[2])))

    def render(self) -> None: print(f"\n\n# {NAMES[self.path.name]}\n") print("| Name | Total Lines | Percentage of Lines |") print("| ---------------- | :---------: | ------------------: |") for character, total, pct in self.as_tablular_data: print(f"| {character:16} | {total:11} | {pct:19} |")

    if name == "main": for series in (TOS, TNG, DS9, VOY, ENT, DISCO): counter = CharacterLines(series) counter.collect() counter.render() ```

    12
    What's the best way to remote into a Mac?

    My father is 75 and not very capable on a computer. He's got an old MacBook Air at home behind a typical ISP router for which he has no access controls (so no port forwarding).

    My immediate need is actually not his machine at all, but the Raspberry Pi I installed at his house before I left the country and forgot to enable cron on so it's not doing what I need yet. However, it would be really nice if I could also do one of the following as well:

    • VNC (or something) into his computer whenever something "isn't working" rather than doing the talk-him-through-it dance over Skype.
    • Install a new OS (the Mac is no longer supported by MacOS). I don't know how plausible this is though.

    My current plan is to email him a shell script that should create a reverse SSH tunnel to a server in Montréal or something and then I can shell into his Mac through there. It's not ideal though since we're still talking shell scripts and he's easily frustrated.

    I know that in Windows land there are all sorts of tools scammers use to take over a machine remotely. Does Mac allow for the same thing? Note that I only have Linux machines available to me on this side of the Atlantic.

    7
    I made a thing: "django-cool-urls"
    danielquinn.org django-cool-urls

    It's taken the better part of six months, working a few hours in the evenings when I can scratch the time together, but my latest …

    django-cool-urls
    6
    What're some of the dumbest things you've done to yourself in Linux?

    I'm working on a some materials for a class wherein I'll be teaching some young, wide-eyed Windows nerds about Linux and we're including a section we're calling "foot guns". Basically it's ways you might shoot yourself in the foot while meddling with your newfound Linux powers.

    I've got the usual forgetting the . in lines like this:

    $ rm -rf ./bin

    As well as a bunch of other fun stories like that one time I mounted my Linux home folder into my Windows machine, forgot I did that, then deleted a parent folder.

    You know, the war stories.

    Tell me yours. I wanna share your mistakes so that they can learn from them.

    Fun (?) side note: somehow, my entire ${HOME}/projects folder has been deleted like... just now, and I have no idea how it happened. I may have a terrible new story to add if I figure it out.

    274
    I'm having serious problems with Omega

    I've got a very simple Kodi setup:

    • Arch Linux on a laptop behind the TV
    • Media files on a server upstairs, shared over NFS

    I've been running Kodi quite successfully on this machine for years, but with the Omega update, videos play without audio for about 10seconds, then freeze. Sometimes if I wait a while, I see subtitles for the episode while the video is frozen. Music doesn't play either. The interface freezes too, to the point where I have to kill -9 it. Switching from Wayland to Xorg hasn't had an effect.

    I tried deleting ~/.kodi and restarting, but nothing changes.

    Has anyone else run into this?

    3
    Some dude 3D printed a little house for his local frog
    mastodon.social Maaike (@MaaikeV@mastodon.social)

    Attached: 1 video Makers rule! Meet Frodrick and the evolution of his house Trust me, it’s worth it, it’ll make you smile #maker #frodrick #3DPrinting

    Maaike (@MaaikeV@mastodon.social)

    A break from the usual in this community, but I trust it'll be appreciated. I think this is very solarpunk: using technology to improve the lives of all creatures.

    4
    danielquinn Daniel Quinn @lemmy.ca

    Canadian software engineer living in Europe.

    Posts 30
    Comments 814