Unstart

I am an idiot and a fool.

What I should have done many months ago when my car’s starter was beginning to bog down while cranking the engine was to take it to a shop and have it replaced with no downtime.

What I did instead was ignore it until last weekend when the starter stopped. At my apartment, the motor spun but the solenoid did not engage. It took a few tweaks of the key to get it engaged and start the engine.

What I should’ve done was stay at my apartment and tow it somewhere on my own time.

What I did instead was drive it to the cafe, park it, and find it will not crank at all, leaving my car dead in the lot. The rainy, crowded lot. With me a mile from home.

So, in a panic, I found a tow truck through my insurance and had it towed to the dealership 6 miles away. Insurance then told me I didn’t actually have free towing on my plan, so I had to pay. To add insult, the tow driver arrived 2 hours late, and dropped me off at the dealership after-hours, dumping my car in the wrong lot and costing me at least 2 days of lost shop time. I had to schlep bags around the building to the key drop. Took a rideshare home. Ordered pizza.

Next day I scrambled out of the house, via rideshare, to the only car rental place in town open until 2pm on Sunday. Rented an economy car online. They gave me a massive truck at the counter instead. A goddamn truck? None of their economy cars were clean. Fucking timing.

Didn’t hear from the dealership until Tuesday, when I myself called them. Service manager said they’d been hit with ransomware and were 3 weeks into getting their systems back online. Not my problem, but now it’s my problem. Fucking timing.

What I should’ve done was find a new aftermarket starter for relatively cheap and either replace it myself or find a nearby mechanic to do it cheaper than the dealership. What I did instead was pay the dealership 7 times the amount. I think that’s the last time I take it to the dealer.

After extending the rental another day, buying gas, dropping off the truck, and hailing another ride to the dealership, I got my car back on Thursday. The new starter sounds great, by the way; it’s the only positive out of this whole debacle.

$150 tow
$400 car rental (4 days, plus gas)
$1400 shop service
$50 rideshares

I am an idiot and a fool.

Enfreshen

Saying “Hello!” to my new FreshRSS server that I set up at home last night.

Drunk Sysadmin gets the job done!

Seriously, I’ve been looking for a Feedly replacement, since Feedly seems hell-bent on adding AI integrations and inserting interpretive links into the text of fetched RSS feed documents. (No. Stop. Don’t do that. Bad dog.) Feedly’s gathering some feces, for sure.

I needed a central server to collect all my feeds and a mobile app to read them. After finding this friendly post by some guy named Neil mentioning FreshRSS server and FeedMe app as his solution, I had to try.

With my sysadmin experience, it took me an evening to set it up. I grabbed the v1.24.1 tarball and unrolled it into /usr/local/share/freshrss, made a symlink of the public ./p/ folder into my Apache webroot, reminded myself how to login to MySQL create a new database and user (with grants), and got FreshRSS up and running after answering the setup questions on the WebUI panel. It took longer to export my OPML feed list from Feedly and import it into FreshRSS (and fix all the broken feeds that the Feedly UI was too opaque to even bring to my notice) than it took to read the HOW-TO and install. Did some config hacking tonight to get the PHP mailer settings right so it could send out verification emails.

Installed the FeedMe app on my Android phone, pointed it to the right self-hosted hostname with my username and API key, and now I can use my own aggregator from anywhere.

This FreshRSS install is piggybacking on my Owncloud server’s VM, using the same Apache server, MySQL server, PHP version, LetsEncrypt certificate, and everything, and the VM doesn’t even notice (2GB ram, 2 cores, 20GB storage). So far, so good.

And I’m almost done with marking previously read articles as read. I’ll get down to my actual new article count soon. But, y’all, I feel good about this.

Can’t believe it’s taken me this long to bother. Life’s too short.

Sharing Is

Honestly, I think sex is great; I like the idea of sex. On paper, it’s just the best. The best. In thought, that is.

I mean, I remember having good times and whatnot with a handful of great partners over the years. But, let’s be real here: people are gross. I mean, ew. Have you even looked at people?

Remote Bird

While waiting on dinner at the restaurant tonight, I noticed on my phone’s mail app (K-9 Mail) that my emails weren’t being filtered like they should. Automated notifications that normally would be Marked as Read by one of the many rules I have in Thunderbird were going unmodified.

That’s when I remembered that, an hour before, I closed Thunderbird on my Ubuntu desktop to free up some memory before launching it again. What I failed to do was launch it again.

So here I am with my usual ever-present safety net no longer present. How to fix this?

Well, duh, the answer isn’t simple until I see the answer. Then it’s a forehead-smacking “DUH” moment.

On my phone, I open JuiceSSH and click the SSH profile that logs into my home’s workstation.

From the shell, if I try to run nohup thunderbird & what I’ll get is a notice that it can’t connect to my display and it exits. Well, that’s because I don’t have JuiceSSH doing any X forwarding, so the environment variable $DISPLAY is unset.

nohup launches its argument in such a way that prevents the subcommand from dying once the ssh TTY connection exits (it takes the typical IO streams stdin, stdout, and stderr and redirects the output streams to nohup.log in the local folder).

The fix to the display issue is to simply say your display is the display of the running X process. In most cases, that’ll be :0.0 (it’ll be different if there are multiple users logged into the GUI or whatever; use system tools to find the one currently running).

export DISPLAY=:0.0 && nohup thunderbird &

That’s it. That adds the display variable to the environment and tells nohup to run thunderbird, which will pick up the DISPLAY variable and draw its window on that display. The final ampersand backgrounds nohup so you can go on with your day.

user@machine:~$ gnome-mahjongg 
Unable to init server: Could not connect: Connection refused

(gnome-mahjongg:2651021): Gtk-WARNING **: 17:29:13.980: cannot open display: 
user@machine:~$ pgrep gnome-mahjongg
user@machine:~$ echo $DISPLAY

user@machine:~$ export DISPLAY=:0.0 && nohup gnome-mahjongg &
[1] 2651154
user@machine:~$ nohup: ignoring input and appending output to 'nohup.out'

user@machine:~$ pgrep gnome-mahjongg
2651155

Here you see me trying to run gnome-mahjongg on the command line. There’s no $DISPLAY variable, so it fails. pgrep shows there is no mahjongg running.

But, if I export the correct value for $DISPLAY and wrap the game in a nohup runner and send it to the background, gnome-mahjongg starts and is now running on my workstation. I can either kill the process 2651155 here with the usual kill tools (which exits the nohup process running at 2651154), or I can just wait until I get home, unlock my screen, and click the X to close mahjongg after a few rousing games (for testing, of course).

This resolves a fear that I’ve held that I will be out of town and something will happen to make Thunderbird stop running my filters. All it takes is an app crash, an out-of-memory exception, a power outage, the PC rebooting on its own, whatever. Now, as long as X is running, I can send apps to its display. This fear is quelled.

Granted, this doesn’t resolve issues if X is running but I’m not logged in — like if the Gnome Greeter is waiting on me to login. That’s a different issue altogether. Maybe I’ll test that later! But let’s not worry about ourselves too much, eh? Baby steps.

Duty

For those following along at home, yes, I was out of town for 2 weeks. I burned 2 of my 5 weeks of vacation time in Texarkana, certainly not having a vacation. My mother had lung surgery, and she needed my and my sister’s help to get through it.

If you smoke, quit now while you’re ahead. Stop. Fuck you, stop. Just stop.

I have a lot of heavy emotions and thoughts about all this. I’m glad I was there to help, and glad that I’m finally in a position where I can help. But outside of that, it was all labor. It was all work. It was all duty. I’m duty-bound to help, and nothing I want or feel supersedes that. I have to help, no matter how stretched and exhausted I am.

And I didn’t reach out to any of my old Texarkana friends for reasons. I half apologize for that, but otherwise zero chill. I kept close to my family and chores for 2 weeks because that’s all the time I had.

I returned to Austin last weekend, and work this week has been unrelenting, with all the breakfix and catching up. None of the past month has been enjoyable. And none of the past week has been fulfilling. My own life is suspended. I’m questioning why the fuck I do all this. And then I look at my mother’s case and realize that if not for my employ at a multinational corporation, I would not be able to take care of her.

This is where I’m at.

When does the joy come back?