KDevelop does a decent job of mapping out classes in a project, but does nothing at all for traits or interfaces.

Just so you don't think my tendency to is a recent thing, possibly due to becoming old middle-aged growned-up and cranky, here's one I wrote in 1997 as a mere stripling of 32!

One thing that drives me crazy on a regular basis is that well-known graphical user interface convention, the double click.

Certain screen widgets only respond to double clicks; however, the GUI (whether it be Windows, Mac, or Other) is pretty picky about the timing of these clicks, and I often find myself double-clicking over and over again with no response. Click too slowly, and the widget sees two single clicks -- it highlights itself and then goes back to sleep. Click too quickly, however, and some helpful code buried deep in the OS decides the mouse must have a dirty switch contact, and you really meant a single click. The OS may also be getting confused about which clicks are "paired"; e.g. was this click the second part of a double-click or the first part of the next double-click?

I could go off about how there ought to always be a way to adjust the minimum time (the “dirty single-click” ceiling) to accommodate users who click quickly sometimes and slowly other times, but really I think the whole double-click concept was poorly conceived in the first place. I'm convinced that GUIs ought to discard the double-click concept and instead respond to what I call state-based clicking.

So let's go back in time a little bit. We're designing the first GUI. We have widgets on the screen, and we have a mouse to point at them and a button to push (click). We find pretty quickly that there are two major things you might want widgets to do in response to a button push: select themselves (for inclusion in a set to be operated on by another control e.g. the keyboard or an application), or execute themselves (i.e. open a file or run a program).

So how do you signal which of two actions you want using only one button? Somebody decided that if you click twice in rapid succession, that should mean the more "active" of the two options, i.e. execute. Fair enough. But how about this: click once, the object selects itself. Click on a selected widget -- whether 0.025 seconds later or tomorrow morning -- and the widget executes.

Potential problem #1: what happens when you want to move a selected object? Possible solution: an object must not be selected before it is grabbed. If you accidentally select it first, de-select it by clicking anywhere else. Potential problem #2: what about dragging multiple widgets, which must be selected in order to be part of the drag-group? Solution: when more than one widget is selected, only dragging is possible.

I implemented this solution as part of a custom-made file-open dialog for an image processing program, and found it quite satisfactory. I never had to stop myself from clicking madly, wait a full second, and then carefully click in a deliberate and methodical way in order to load a file. (The other custom-made part was that the file dialog stayed open after the file was loaded -- but that's another rant.)

I'll be solving more of what's wrong with computers as time permits, and then we’ll start in on death and taxes. Happy clicking!

Bonus for those who read this far: here is the original, complete with deadname! ^.^

Mouse operations have obviously become a lot more complex since then, not to mention touchscreen stuff, but I always felt like we kind of went down the wrong path by making duration semantically significant in GUI interactions -- and the whole "press-and-hold" paradigm (now popular with power-switches and smartphones) feels like further digging in.

...but of course there are many more-obviously-terrible choices that computing has made since then, so this is kind of nitpicky anymore.

If you have to click outside of a drop-down or popup to make it go away, that same click shouldn't also trigger an action on what's behind it.

@nextcloud takes, like, half an hour just to scan for new changes in our main fileset. There's got to be a better way, surely? (provisional)

It's annoying that in I can't declare an interface with very general terms (e.g. a class that handles some kind of variable, type unspecified, in various ways) and then implement it with more specific terms (e.g. this class handles strings in the same ways, this other class handles objects of a certain class family...).

So, I get a popup saying my system drive is nearly full. (Understandable; it's this 256 GB SSD drive about the size of half a business card.)

I run FileLight and find there's a log file taking up about 95 GB -- so I delete that.

Still 0 GB.

I try emptying the Trash folder, but... apparently that isn't a thing when you're running Caja (MATE flle manager) under KDE. There is no right-click option to empty it.

I run FileLight again and find where the Trash folder is located. I go there and use CLI (well, okay, a Caja action I set up which uses rm) to delete the file from Trash.

Still 0 GB... though FileLight now says I'm only actually using up about half the drivespace, 123 GB. Both df and Caja say no space free, even though the 95 GB file is no longer in evidence.

I had to reboot before the free space would finally show up. This seems like maybe a design flaw in the filesystem API? Like, apparently a block of space can remain allocated for the remainder of a session even when the file attached to it has been deleted.

So, I get a popup saying my system drive is nearly full. (Understandable; it's this 256 GB SSD drive about the size of half a business card.)

I run FileLight and find there's a log file taking up about 95 GB -- so I delete that.

Still 0 GB.

I try emptying the Trash folder, but... apparently that isn't a thing when you're running Caja (MATE flle manager) under KDE. There is no right-click option to empty it.

I run FileLight again and find where the Trash folder is located. I go there and use CLI (well, okay, a Caja action I set up which uses rm) to delete the file from Trash.

Still 0 GB... though FileLight now says I'm only actually using up about half the drivespace, 123 GB. Both df and Caja say no space free, even though the 95 GB file is no longer in evidence.

Never make "cut" the first option in the menu. Never make something destructive, or anything that changes the data in some way, the easiest option to use accidentally. Even if there's an undo. Just don't.

"copy" should come first, always.

me: [painstakingly copies entire .firefox folder from other machine]
Firefox: Hi, welcome to your new setup! Wanna import settings from somewhere?
me: Uh, you don't see the ones that are already there? Then ok, I guess so... import, plz.
Firefox: No programs that contain bookmarks, history or password data could be found.
Me: You didn't exactly ask me where to look for them. How about asking? Cuz all the data is literally in your profile folder right now.

This always happens. I think it's probably part of the scam to get everyone to sign up for Firefox Sync, which I refuse to use on principle since they now force you to connect to their server instead of allowing 3rd-party servers.

It's annoying the way inheriting traits in doesn't confer parentage.

Like... if trait B uses trait A which has function X() which is re-implemented in B, B can't call parent::X(); you have to alias it in the use statement and call the alias... or else split off the functionality you want them both to have in common into a separate function, and call that from each version of X().

(The latter technique is kind of good, in a way, since it forces you to be more descriptive and compartmental in your functions... but then why not make class inheritance work the same way?)

(albeit minor)

O mighty @nextcloud , y u automatically support embedded video but not audio?

Just wondering.

Yrs.,

a frequent producer of videoless audio

links which cannot be right-clicked upon so as to open them in a new tab, thereby requiring you to remember to use the browser back-button when you're done if you don't want to lose your place.

I mean, seriously. .

(Yes, I know the technical reason this happens, but it's unnecessary. DO BETTER.)

"Software Boutique" shows NextCloud's icon in its little teaser screen, but it's nowhere to be found when I search or browse for it.

What's weirder is that I'm pretty sure I installed it from the Boutique just a couple of weeks ago on another system (same Ubuntu release, same hardware).

Worse: When I seach for "next", it says "1 applications found" but won't take me to it.

I finally found it in a secondary installer, whose relationship to the Boutique I kind of don't really understand.

Did I already do a about file manager search functions that don't show any indication of progress?

Even if I did, it seems worth repeating. .

Client apps which won't let you see the server settings after you set up the account.

Like, CalDAV works on my phone but not -- using the URL which I thought was correct -- on @Harena's. Am I actually using the same URL? No way to tell for sure. Hopefully I can figure it out from the Apache log, but I shouldn't have to pull teeth like that. :-P :kestraglow:

Is it just me, or is the new WYSIWYG editor in really fragile?

I've gotten it working several times, only to later find that it's not working.

It doesn't work at all on my home server.

Where are the diagnostics?


file-scanning software which somehow find a file which it then decides doesn't exist, causing the scan to fail on that file, at which point it quits scanning. No way to resume.

(How about, you know, just skipping that one??)

Lookinatchu, :kestraglow:

...or is this a ?

When you indent in using lists, and one of the items has a blockquote, you lose all the indentation after the first line-break.

This makes it impossible to neatly indent blocks of text with line-breaks in them.

There may be a way to fix this with CSS, but I don't know it.

Okay, , I got some more bones to pick with you. 🤦‍♀️

  1. "Mix and Render" should not include muted tracks -- by the same logic which respects the mix levels in each track. A muted track is a track with the volume set to zero. "Mix" means "take what I'm hearing and render it to a single track".
  2. "Mix and Render" should include all (non-muted) tracks by default; I shouldn't have to explicitly select them. There should be a "mix and render selected tracks" option, if you think it's really necessary (CoolEdit Pro does it this way). I don't. (...though a way of storing multiple configs for the same set of tracks would be nice.)
  3. The mixer board should include a master volume slider, so you don't have to tweak every track (in equal proportion) to quiet a mix that's slightly too loud.

Can someone plz explain to me why an image scanner isn't an input device that I can configure with the control panel and share over the network??

I was told 15 years ago that Linux, because it separates the back and front end of the scanning process (unlike the way Windows did or does with TWAIN), makes it possible to share scanners over a network -- but every time I've tried to follow the (fiddly, non-user-friendly) instructions on how to do this, it worketh not.

Show more
Toot.Cat

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!