Categories
Computers Family Feelings

GNUThink

I sometimes get to a point where I question a lot of what I do and what matters to me. Sometimes it’s because of simple things, like a broken tool, or a frustrating problem. Sometimes it’s more of a philosophy problem, where I question how I feel about something and if I should change my ideas or mannerisms behind some action.

Lately, it’s been a little of both. I use an iPhone, Apple Music, iCloud (storage, etc), Office 365, and probably other tools and services that would be considered “non-free” in the “libre” sense. This has lead to me thinking about what I actually want out of computing. It’s such a thorny question, because there are so many comfortable choices that I’m in, that upending them would probably throw my life (and my family’s) into temporary turmoil.

For instance: Office 365. I pay for just the Exchange Online component, because I don’t need the actual Office suite as we (my family) get it free from my school and other organizations that we’re associated with. Exchange Online has been fine from a end-user perspective. Very rarely do I have any real issues to speak of, other than paying for it. My real problem here is that it’s a very proprietary platform, and because of that, it’s moderately difficult to get out of and to connect to with free-software tools. The IMAP support is… functional, but the contacts and calendars are tied down.

Similarly, I have lots of Apple devices and services. Like Office 365, I don’t have any complaints, per se, it’s just that they’re extremely proprietary and that means getting out of the ecosystem is difficult, and like above, connecting using free-software tools is straight up impossible.

The reason I have these things in the first place is that my family, who don’t hold my free-software ideals, want/need access to reliable tools they can use from multiple places. This is not an unreasonable request, and is one that can be solved with enough time, free-software, capital and expertise. Unfortunately, I’m not willing or able to host all of that, or even administer it. I don’t have the time, and I certainly don’t have the specific expertise to do all of it. Hence the current implementation.

Balance between freedom, convenience and cost is a tricky one. While I’d personally like to model myself more in line with the FSF’s computing ideals. The problem is that I have family members that I have to support as well. I’d also like to move them toward more free-software systems. While I recognize their choice in platforms is their own, I also get to say what I will and will not support (kind of, family is so complicated).

I don’t have any kind of resolution for this, I’m still trying to figure out what kind of path I want to take. Is pragmatism the smarter choice? Idealism feels right, but is massively more difficult to implement. There is probably a good middle of the road, but I don’t know if I’m on it. Maybe it doesn’t matter?

What should I do?

Featured Image

“Ugh, a Mac”, by Joe Wilcox – License: CC BY-NC-SA 2.0

Categories
Computers Rants

Historical Function

Today, I delved into a tiny bit of X11/xorg plumbing to see if I could move this damnable .xsession-errors file to someplace more out of the way. For those of you not in the know about Linux or X11, it’s basically a holding tank of any GUI application errors that aren’t normally logged. To me, it seems vestigial of a time before centralized system logging via systemd, but who am I to question our forefathers?

Well, damn it, it’s open source! Lets see if I can fuck with it and make it do what I want it to do!

Turns out no. At least not easily.

Inside /etc/X11/Xsession (on Debian, anyway), exists the following bit of code to create or temporarily create an error log file:

ERRFILE=$HOME/.xsession-errors

# attempt to create an error file; abort if we cannot
if (umask 077 && touch "$ERRFILE") 2> /dev/null && [ -w "$ERRFILE" ] &&
  [ ! -L "$ERRFILE" ]; then
  chmod 600 "$ERRFILE"
elif ERRFILE=$(tempfile 2> /dev/null); then
  if ! ln -sf "$ERRFILE" "${TMPDIR:=/tmp}/xsession-$USER"; then
    message "warning: unable to symlink \"$TMPDIR/xsession-$USER\" to" \
             "\"$ERRFILE\"; look for session log/errors in" \
             "\"$TMPDIR/xsession-$USER\"."
  fi
else
  errormsg "unable to create X session log/error file; aborting."
fi

exec >>"$ERRFILE" 2>&1

The gist (haha) here is that if you don’t have one, make it, if you can’t make it, create a dummy one in the system temp folder and if that fails, just give up. All well and good, right? Right.

So, what happens if we, say, modify the ERRFILE path to something else? Well, I tried that and I got an unexpected result: The file being created correctly in the right location (yay) and an empty file created in the original location (boo).

Excuse me, what the actual fuck?

Right now, I’m kind of at an impasse here. It seems like changing the code above to do what I want it to do works but there is something probably hard-coded elsewhere that just goes “DUMP IT IN $HOME/.xsession-errors“, which is frustrating. I don’t know where else to look. If anyone has any ideas, let me know, I’d be glad to credit you.

Update

I thought I had a smoking gun. I redirected everything in my .xprofile to two different logs, manually. This logged correctly, but I still got a leftover file, let’s see who has it open:

Oh, hello i3bar….

So, I go and re-introduce my changes to Xsession, like so:

# Original
# ERRFILE=$HOME/.xsession-errors
ERRFILE=$HOME/.cache/xorg/errors

# attempt to create an error file; abort if we cannot
# if (umask 077 && touch "$ERRFILE") 2> /dev/null && [ -w "$ERRFILE" ] &&
#   [ ! -L "$ERRFILE" ]; then
#   chmod 600 "$ERRFILE"
# elif ERRFILE=$(tempfile 2> /dev/null); then
#   if ! ln -sf "$ERRFILE" "${TMPDIR:=/tmp}/xsession-$USER"; then
#     message "warning: unable to symlink \"$TMPDIR/xsession-$USER\" to" \
#              "\"$ERRFILE\"; look for session log/errors in" \
#              "\"$TMPDIR/xsession-$USER\"."
#   fi
# else
#   errormsg "unable to create X session log/error file; aborting."
# fi

exec >>"$ERRFILE" 2>&1

I checked and it dumps the standard rigamarole from X starting up. That’s good(tm). Problem is, I still get an (empty) .xsession-errors file.

Time to investigate sway/wayland.

Categories
Computers Rants

UnFantastical

So, Fantastical, a heretofore “fantastic” calendar dropped a big new update for version 3.0. To celebrate, they decided to make it have a subscription component for stuff that was already in the app, and stuff that doesn’t need any external tooling or servers.

It’s really telling when a company that is awarded by consumers and the platform owners, has a product so good/popular that they only thing they can do is ruin it.

I was once a proud user of the app. I enjoyed it so much that I bought their contact management app, CardHop. Now, I’m back to the stock iOS apps for contacts, calendars and reminders because they got greedy (or didn’t have a strategy). Either way, good riddance. I have no place in my heart for yet another subscription.

Categories
Awesome Computers

Emacs Occur

I love Emacs. It’s a great text editor and platform for doing all sorts of things. One of the ways that it makes a great editing environment is that things are extensible, often live in the environment. One of the things I used to use is a package called “ioccur“, this allowed you to edit occurrences of a specified text across the document. This mirrored a built-in function called “Occur“, which showed you each line or instance of the occurrence across the document. The biggest problem was that once you found stuff, you had to swap back and forth between the list and the actual document. I have since learned about the ability to edit the document right from the “Occur” results.

Once you have a list of items, you can press e to enter edit mode. Each line becomes linked to their buffer line and you can make edits to whatever you want and they’ll be reflected, live. Once you’re done, you can return to the “Occur” mode (which allows you to do more) by pressing C-c C-c (a common Emacs ‘complete’ command).

Here is the feature in action:

Here is the effect in action, inside my .profile file.
Categories
Computers Misc

Free Software

No big exposition on free software, or anything like that. I just wanted to write about how I re-enrolled as a Associate (Student) Member to the Free Software Foundation. I encourage anyone who believes in Open Source to do so as well.

I also wanted to upload this.