ToyKeeper

Joined 3 months ago

Karma
141
Submissions
33
Member since
Jul 7
Shiny things, weird noises, and free software. :: toykeeper.net/tktsto :: toykeeper.net/anduril
View on Hacker News

Recent submissions

Comment · 25 days ago
It's interesting to read that this happened, but that was 6 years ago.
Comment · 26 days ago
I dunno. I've been making free software for 3 decades and I still think it's fun. While I do get slop PRs sometimes, it's not frequent. And when I want to land a patch in someone else's project, I haven't really been having difficulty doing so.

The main change for me has been... if I want to send someone a patch, it's more important now to talk to them about it first. But I was doing that anyway. Join the chatroom, let people know I found an issue and am working on fixing it, maybe get their advice on how they think it should be solved (to make sure it fits with their project and goals), and then send code. And stick around to help with testing and stuff. It's not much different than how things were before everything moved to GitHub.

Talk to people. Be a part of the community. That's what made free software work in the past, and it's what makes free software work now. As the article said, it was never just the code.

Comment · 26 days ago
Developers are also creative professionals.

It's a bit like saying you never hear complaints from piano players, only dentists. But dentists also play piano, just like everyone else. Dentists just know more about teeth than the average pianist.

Comment · 27 days ago
Sure, anyone can list ten features Photoshop has that GIMP, for example, lacks. But it's just as easy to list ten features GIMP has that Photoshop lacks. They're not trying to be the same program.

I see the same argument all the time about Windows vs Linux. Linux lacks this, Linux lacks that, etc... but somehow, people fail to notice that Windows lacks a whole lot of important things that Linux has. Because a Windows user won't be aware of what they're missing. But for me, coming from a Linux background, Windows is missing so much I would view it as unusable.

Changing from one to the other is painful, because of the differences. It's not a drop-in replacement you can keep using exactly the same way. But that doesn't make either one better or worse. They're different, and that's a good thing. But different requires learning, and learning is hard.

Anyway, you're correct that $FreeProgram isn't a drop-in replacement for $ProprietaryProgram. But that's not a valid argument on the relative value of the two programs.

Comment · 27 days ago
It's wild that anyone still uses Adobe software these days. Adobe is one of the most famous companies for enshittification, and the open-source alternatives are generally very good.

Personally, I switched to open-source alternatives way back in the late 1900s, and they've only continued to improve ever since. Adobe has been lagging behind for over a quarter of a century, in the ways which matter to me, and they keep getting farther behind as they turn to worse and worse methods of extorting money from people.

YMMV, of course.

I can get behind almost anything which reduces lock-in for Adobe's remaining customers, but from what I see in other comments, this probably ain't it. It seems very vibey and buggy. But maybe after more work is put in, it could be good. It looks like it wasn't supposed to go public yet, and they're aware that it's not ready yet.

Comment · 28 days ago
Dang, looking at this later, I realize I forgot again that HN doesn't support common list formatting. If I put one "- item" per line, it joins them all into a single paragraph. And now it's too late to edit. It should work if I put a blank line between each item though.

That last bit was supposed to say:

- Supported: Firefox, Chrome, Edge, Floorp, Chromium, Brave, Vivaldi, Librewolf, Waterfox, Ungoogled Chromium, Thorium, Mullvad, Tor, DuckDuckGo, Yandex, ...

- Impractical to support: Orion

- Impossible to support: Zen Browser

This probably won't be the last time I trip over that. I use lists a lot, and almost every other platform allows them to be one per line without anything between.

Comment · 28 days ago
The full answer for this is a long, wild ride which would fill entire chapters... but the short answer is: Zen's author broke the extension API so badly it's literally impossible to do a lot of what my extension needs to do... and the author is aggressively opposed to fixing it or even admitting that he broke it.

More generally, Zen Browser is the buggiest browser I've ever encountered... by a wide margin. Some of the issues are jaw-dropping. It's notorious for losing user data. And looking at its history, it has mostly just kept getting worse over time. Extensions which used to work don't any more, because he keeps breaking more and more stuff.

I tried to support it. But instead, I got a quick education on why nothing supports Zen Browser. They can't... because of the guy behind it. Sometimes due to his incompetence, sometimes because he actively intervenes when people try to support it.

So... my experience with Zen Browser rapidly went from "hey this seems neat" to "wouldn't touch this with a ten meter pole".

Comment · 28 days ago
It could run extensions a lot better if it ran on other platforms, so the extension developers could actually test it and support it properly.

I'd love to support Orion, but I can't because I don't have a practical way to run it.

Comment · 28 days ago
I would like my extensions to support every browser possible, but if a browser only runs on Mac, I won't be able to test my stuff in it. I've had users asking me for Orion support for ages, and I keep telling them I'll add it once I can run it... but now it looks like that's not going to happen.

Dropping the ports doesn't necessarily make the Mac version better. It makes the entire browser unsupportable by developers who want to make their sites/programs/extensions work in Orion but can't run it.

So my support list now is...

- Supported: Firefox, Chrome, Edge, Floorp, Chromium, Brave, Vivaldi, Librewolf, Waterfox, Ungoogled Chromium, Thorium, Mullvad, Tor, DuckDuckGo, Yandex, ... - Impractical to support: Orion - Impossible to support: Zen Browser

Comment · 1 month ago
I've got an overview of a lot of it in another thread here... https://news.ycombinator.com/item?id=49827552

Some of the main parts are:

- Basically never logging out. Everything just stays running.

- Lots of desktops, usually one per project or task or ... whatever grouping makes sense.

- No minimizing windows. No taskbar, tray, dock, etc. Things just stay open, and I change desktops when I want to change to a different project or task or whatever.

- Logging at multiple levels. Like, there's a script which checks the complete session state every 15 seconds, and logs it if it has changed. It's exported as a tree or outline of each desktop, each tab group, and each window... with the title and size+position. Archived daily. That way, if the computer crashes or something, I have a recent snapshot I can restore.

- Also, detailed logging of what I'm doing. Like, every 100ms or so, a daemon checks the title of the focused window. If it has changed, it logs the new title and the timestamp, and how many input events happened since the last log entry. If the time of day changes to a new minute, it logs the number of input events since the last log entry. These logs can then be used for all sorts of useful things. Like analyzing my erratic sleep schedule and predicting when I'll be awake so I can schedule appointments. Or automatic time tracking for billing clients.

- I make sure to put useful info into my window titles, in each program. This makes the logs way more useful.

- Also, whatever other logging is relevant... like zsh history, autojump for getting to oft-used directories easily, a todo list / calendar text file with one heading per day and a list of stuff relevant to that day, a new directory each day for miscellaneous files which are worth saving but don't fit elsewhere, a lot of screenshots, an entire web archiving system to save copies of pages I view, etc.

On a side note... a lot of this stuff is explicitly forbidden in Wayland. It doesn't allow these features to exist, because most of this stuff is viewed as a security risk. So if you're using Wayland, entire categories of useful features are off limits. Their reason is basically "what if a hacker collected data about you? what if a hacker wanted to remotely control your computer?" ... but they ignored the case of "what if the user wants to collect data about themself? what if the user wants to remotely control their own computer?".

So yeah. A lot of my setup only works in X11.

Comment · 1 month ago
From an insider's perspective, the Ubuntu Touch thing looked pretty promising... and then management pushed everything sideways. The regular developers kept trying to fix it and make it good, but then upper management would step in and forbid it. The VP of "Future Engineering" in particular. Lots of stuff was forbidden because it "goes against the vision". So things didn't work, and couldn't be fixed.

The worst was one day at a big sprint... the VP of Business gave an all-hands powerpoint presentation right after the workday ended, with a catered dinner afterward. He looked and spoke like a caricature of an Italian mobster, and spent 45 minutes gleefully explaining exactly how we were going to screw the user to make more profit, by taking control away from the user and giving that control to phone corporations. Like, selling corps the ability to place ads directly onto the user's home screen. He was so excited he was practically vibrating.

Afterward, I just went straight to my hotel room and cried.

Eventually, the phone project was cancelled because it had failed pretty spectacularly, for exactly the reasons everyone said it would... and upper management laid off nearly the entire Ubuntu Engineering business unit, about a third or a quarter of the company. The people in charge had decided the problem wasn't a bad design... it was just all those uppity devs who wouldn't follow orders. They kept the managers who were responsible for making it fail, and got rid of all the devs who tried to warn management that the "vision" was broken.

At least sabdfl seemed somewhat aware of the situation... aware of how bad it was. A day or two beforehand, he started the day by giving everyone a pep talk. The talk was pretty somber, talking about how we were supposed to have a mature product to launch by now, but instead we were cancelling the launch and hoping for an optimistic scenario where some tech magazines would at least say it "showed potential". The best case scenario he could muster for the team's motivation was ... we might get a couple reviews stating that it could eventually be good someday, with enough work.

Comment · 1 month ago
I used to think task bars were pretty neat, back in the 1990s. But once I started keeping more than a dozen windows open, it became a waste of space. And now that I typically have 200+ windows open, the concept of a taskbar is ... like trying to get a fish to ride a bicycle, or like having a rock in my shoe. It gets in my way and provides no benefit to me.

But that's okay. I don't have to use one. Different people have different needs and preferences, and their choice to use a taskbar-free workflow doesn't interfere with their ability to get serious work done.

Comment · 1 month ago
Same... ish. 2D grid of desktops. Can add/remove them with a hotkey, but I normally have a 3x5 grid. Hyper+Arrows to navigate them. Hyper-s to stick/unstick a window, which also works for moving a window to a different desktop. Hyper-g to group/ungroup windows into a single shared frame with tabs. Hyper+Alt+Arrows to move a window, Hyper+Shift+Arrows to resize, Hyper+PgUp/PgDn to raise/lower, Hyper+Tab to change tabs in the current frame, etc. Lots of other keys, mostly Hyper+something.

Each desktop has a project or something, a related group of windows which I leave open until I'm done with it. Some desktops have remained more or less the same since the 1900s since they've been relevant and useful for that long.

Over time, my desktop hasn't gotten fancier... it has gotten simpler. Bells and whistles are inversely proportional to useful life span. Similarly, over time I've relied less and less on big, full-featured, specialized applications and databases... and more on plain text files, a text editor, short scripts, clean filesystem organization, and a whole lotta terminals.

Comment · 1 month ago
(part 2/2)

I have my dotfiles and other stuff checked into Subversion, with different programs in different modules so I can build each host's config out of a set of modules, and not have to have everything checked out on every host. There's an article about the setup on my site. Git didn't exist at the time, but you could probably do something similar with git submodules. I run a revision control server of sorts in a lxc guest on one of my computers, to make it easy to sync things. Or depending on the nature of what I'm syncing, sometimes "unison" works better, or sometimes "syncthing", or sometimes git + github, or sometimes just rsync.

I have a little python program constantly monitor the title of the focused window, and look for anything which looks like a filesystem path. This gets saved to a ramdisk, like ~/ram/last-dir and ~/ram/focused-window-title, so other programs can use this info for context-sensitive things. Hotkeys which react in different ways in different programs, or always know what directory to work in, or whatever.

I also basically keylog myself, with another little python program I wrote. It monitors the title of the focused window, logs the timestamp when each window was focused, and logs the quantity of input events... but not the actual individual content of keystrokes. So I can tell which window was used when and how active I was, but not exactly what I was typing.

To make these title-based things work better, I make sure to put useful info into my window titles. Zsh is configured to put the command line (so far) into the title, along with the current host and path, or put the finished command line into the title while a program is running. I added a browser extension to put the current URL into the window title. I configured Vim to put useful info into the title. Etc. So the logs are very detailed. This info comes in handy quite often, and is also used for other things like generating a heat map graph of my erratic sleep schedule, and predicting when I'll be awake so I can schedule appointments more easily. Can also easily tell exactly how much time I spent working on pretty much anything, for invoicing clients or working toward productivity goals or whatever.

I've put together several things which work in a daily log directory... like ~/daily/YYYY/MM/DD/ . There's a key to open a shell in today's directory, or open a minimalist filemanager there. I made a screenshot program which saves things there... like, press a key, click or drag to select what I want to save onscreen, then it shows a preview I can edit if I want, and asks for a title, with recent titles available for easy recall or searching or tab completion so I can save a series of images without having to retype the title... and then it saves to a timestamped file in today's dir. Shift+Screenshot to do the whole screen, Ctrl+Screenshot to turn off all controls and just save automatically using the most recent title, Meta+Screenshot if I want to add metadata (like open "hacker-news.2026-09-24_11:59:23.png.md" in Vim to save extra notes). Or any combination of modifiers to combine effects.

And, of course, a nice terminal and shell. I've found rxvt-unicode is lightweight and can run hundreds of terminals with near zero resource use. And zsh is very powerful and customizable. But YMMV, use whatever you like. Build up your own vocabulary of tools over time, and the shell becomes incredibly powerful.

I've had the same $HOME, basically, since I first installed Linux in the 1900s. It occasionally gets moved from one hard drive to another, and now is scattered across an entire network of many hosts, with pretty much everything replicated and synced and backed up... but it's still the same data, collected and curated and organized and optimized over decades. When one's computing environment is stable and built for user empowerment instead of corporate growth... one can really settle in and get everything "just right".

I've also had mostly the same browser session for like 15 years. Even when switching between browsers. The session is much like my $HOME filesystem, just an organized hierarchy of arbitrary stuff, whatever I found useful or notable or worth keeping. At first, I did this using Tabs Outliner in Chrome, but it has degraded over the years and has a lot of the best features paywalled, and it doesn't work on Firefox, and it didn't adapt well to Manifest V3, and it's buggy and unreliable and awkward now... so I made my own replacement. I suck at naming things though, so I just called it "TK's Tree Style Tab Outliner". Still working on the feature to auto-sync between browsers, but at least it can export and import manually and do automatic backups, to make sure data won't be lost.

... which reminds me. It's also very helpful to run Chrome (or Firefox, or whatever) in a memory jail cgroup so it won't grow until it squeezes every other program into swap space. A cgroup like this also makes it easy to pause and unpause the entire browser session so it won't do anything while you're not actively using it. Slow down the memory leaking, reduce CPU use to zero to make the rest of the system run faster and cooler and make the battery last longer, and completely stop data leaking out to corporations while the browser is idle. Yet another thing I made a little script for.

And a ton of other things which didn't even come to mind, because I'm so accustomed to it that I don't even think about it any more.

Most of this is niche and weird and probably has very few users, and took a lot of time to discover and integrate... but a lot of the stuff people want in a desktop is already possible and has been for a long time, if you're willing to look around and try things until you find what works for you. Just try to use systems which are designed to be powerful and flexible, and you'll never hit the ceiling. It may be harder initially, compared to something mainstream, but you'll be able to go a lot farther with it.

Comment · 1 month ago
It's a lot of stuff accumulated over a long period of time, sort of pieced together... but here are some of the details:

The overall setup is X11 with a Sawfish window manager. X11 provides a lot of cool features like network transparency and automation and generally being wildly flexible. Sawfish is like the Emacs of window managers, written in a flavor of Lisp, and you can literally rewrite its code while it's running. So whenever I want something to work differently... I just find that part of the code, change it, and activate it.

If I manage to crash it, that's fine... Sawfish isn't the outer process for my session. For that, I have my .Xsession just do a simple loop. It keeps running until I touch a file called ~/.xlogout, and can restart the window manager or other tools if necessary.

I pretty much never log out or reboot unless it's time to do a dist-upgrade... which means once every couple years on average. Everything just stays running.

The main limit is that Xorg is usually compiled to use an 8-bit ID for each client, so it can only have 255 clients connected at once, which usually means a limit of 255 windows open at a time. But you can push this a bit using programs which do multiple windows in a single client connection, like "urxvtcd" in rxvt-unicode can have hundreds of terminals sharing just one client slot. I've occasionally had 500+ windows open on a single computer (though this is kind of a bad habit, and I try to keep it under 200).

I configured Sawfish to do soft tiling, and also to do tabbed windowing, and made all of it work via keyboard, including things like moving and resizing windows. Sawfish is also where I implemented the "every flavor of F1-F12" hotkeys thing, and implemented mouse warp, and it already had a lot of things built in like sloppy focus and the ability to add and remove desktops with a keypress.

I added another thing to it to save the contents of every desktop, every window, size and position and title and tab grouping, etc... every 15 seconds or so if it has changed since last time. This gets archived daily. So if the whole system crashes, or if I need to actually log out, or if something bugs out, I can restore things mostly how they were.

A lot of the stuff I don't have, like a task bar, or a desktop notifications system, is simple enough to do by just not installing one or not running any of the relevant programs or services.

As for traditional-ish desktop stuff, there's not much. I set the wallpaper using a small program I made decades ago, which basically just picks a file at random from a big nested directory structure of images I've accumulated over the years. I use a 2D grid style desktop pager in the corner of the screen to see which desktop I'm on, with Hyper+Arrows keys to navigate the grid, but I barely ever look at the widget and it sticks to the bottom stacking layer so other programs are free to draw over it. Similar story for a Conky instance configured in a thin vertical strip with all sorts of realtime system stats and any other info I care to put there. It's a quick, easy way to see what's going on, but I often cover it up and use that space for other things. It's basically just system stats rendered onto the wallpaper.

I mostly use keyboards with open-source firmware like QMK, with a pretty extensive personal keymap tailored to my needs and tastes. I also added some stuff to QMK, like a better MouseKeys motion mode called "inertia" mode, to make mouseless use easier. But on notebooks and legacy keyboards, I can at least use Kanata to get most of the same features.

Macros recording/playback is built into the keyboard, or X11 in general is pretty easy to automate with small programs or shell scripts or even one-liners. Like, with xdotool.

For remote controlling other systems, x2x is great. Ancient program which "just works". Or running remote programs on the local screen, ssh + normal X11 stuff. Or for a full remote desktop, there's VNC (there's a tigervnc xorg extension, and the tigervnc viewer is good too... I patched it to make it handle larger desktops better, and the patches are upstreamed).

(continued in next comment, my post was too long to fit in one comment)

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton