xylophone log

2021-02-04 19:43:55 +0200

New X200T Gentoo install

2021-02-04 18:37:52 +0200

Gentoo emerge times (X200 and T420)

After installing Gentoo and doing a world update on my X200T, I ran genlop -tnl on two ThinkPads, that machine (Intel Core Duo SL9300) and my usual T420 (Intel i5-2520M).

The T420 is roughly twice as fast as the X200 for compiling software - 98% faster in the case of Rust, and 120% faster for Firefox. The dreaded qtwebengine emerge times are relatively close, though.


Tue Dec 1 14:46:49 2020 >>> dev-python/pyrfc3339-1.1
merge time: 19 hours, 4 minutes and 45 seconds.

Tue Dec 8 03:01:59 2020 >>> dev-lang/rust-1.48.0
merge time: 3 hours, 41 minutes and 46 seconds.

Thu Dec 31 05:40:53 2020 >>> sys-devel/gcc-10.2.0-r5
merge time: 2 hours, 19 minutes and 16 seconds.

Sat Jan 2 12:37:14 2021 >>> dev-qt/qtwebengine-5.15.2
merge time: 14 hours, 41 minutes and 9 seconds.

Thu Jan 7 04:28:35 2021 >>> sys-devel/llvm-11.0.1
merge time: 2 hours, 20 minutes and 19 seconds.

Thu Jan 7 06:15:23 2021 >>> sys-devel/clang-11.0.1
merge time: 1 hour, 39 minutes and 56 seconds.

Tue Jan 12 06:31:05 2021 >>> net-libs/webkit-gtk-2.30.4-r1
merge time: 7 hours, 15 minutes and 45 seconds.

Mon Feb 1 03:38:12 2021 >>> net-libs/nodejs-15.6.0
merge time: 1 hour, 12 minutes and 28 seconds.

Wed Feb 3 22:03:22 2021 >>> www-client/firefox-85.0-r1
merge time: 2 hours, 22 minutes and 21 seconds.


Sat Jan 30 03:02:23 2021 >>> dev-lang/rust-1.47.0-r2
merge time: 7 hours, 15 minutes and 29 seconds.

Sat Jan 30 05:53:46 2021 >>> sys-devel/llvm-11.0.0
merge time: 2 hours, 35 minutes and 25 seconds.

Sun Jan 31 04:59:02 2021 >>> sys-devel/clang-11.0.0
merge time: 3 hours, 28 minutes and 51 seconds.

Sun Jan 31 07:17:25 2021 >>> net-libs/nodejs-14.15.4
merge time: 1 hour, 42 minutes and 30 seconds.

Sun Jan 31 12:58:41 2021 >>> www-client/firefox-78.6.1
merge time: 5 hours, 13 minutes and 11 seconds.

Sun Jan 31 17:10:03 2021 >>> dev-lang/ghc-8.8.4
merge time: 2 hours, 21 minutes and 9 seconds.

Mon Feb 1 22:04:14 2021 >>> sys-devel/gcc-10.2.0-r5
merge time: 6 hours, 49 minutes and 20 seconds.

Tue Feb 2 06:50:44 2021 >>> dev-qt/qtwebengine-5.15.2
merge time: 15 hours, 35 minutes and 50 seconds.

Thu Feb 4 16:33:58 2021 >>> sys-devel/llvm-11.0.1
merge time: 3 hours, 31 minutes and 20 seconds.

2021-01-14 15:05:16 +0200

fish aliases

alias am alsamixer
alias ea 'sudo emerge --ask'
alias entry '~/.local/bin/entry'
alias es 'sudo emerge --sync'
alias eu 'sudo emerge -avuUD @world'
alias generate '~/.local/bin/generate'
alias hostit '~/.local/bin/hostit'
alias trem transmission-remote
alias treml 'transmission-remote --list'
alias xclip 'xclip -sel clip'
alias yt youtube-dl

2021-01-13 11:34:04 +0200

Permission denied for startx on Gentoo

A recent emerge update seemingly changed my system to use elogind and caused permission errors with startx (unable to open /dev/tty0). Xorg ran with sudo and as root, but loginctl user-status returned no output. I think I fixed it with rc-update add elogind boot, and a reboot. Fucking Poetterware. Off topic: It was an arse to remove PulseAudio last week which was pulled in as a dep for firefox-bin. Thankfully with Gentoo it was easy to add a -pulseaudio as a global USE flag and re-emerge whatever previously depended on it (including removing firefox-bin and compiling it instead).

2020-12-18 21:33:31 +0200

Windows is good for

So, my ancient Canon Pixma printer decided to stop working on Arch, and the change happened overnight. Canon drivres are notoriously broken or outright missing for Linux, so I took it as inevitable. Usually I don't need to print anything with much urgency, but yesterday I had to get a packing label printed in under a day and didn't have time to fuck about by trying to get proprietary drivers working on Linux, so I plugged in a harddrive that came with a used Thinkpad X220 which had Windows 7. I haven't used Windows since Windows 8 - save for a few encounters with friends running Windows 10 - and it was funny to remember that everything had to be installed through the browser. I searched the Canon drivers and found the official source nestled between several probable malware providers. After running the .exe, grimacing through the EULA and unchecking the optional add-ons boxes (what the hell is My Photo Garden?), the drivers were ready and I printed a test page.

With Linux, I'm used to running the barest-bones version of tools, which mostly means a CLI. I'd forgotten that printing can often summon a barrage of dialog boxes and status indicators, and was horrified by the constant appearance of a low ink warning that had a call-to-action to buy more ink! I clicked it for fun, and was directed to the Canon main homepage with a list of retailers... Anyway, here's the worst part: despite the fact that I was printing a grayscale document, the fact that I didn't have color ink literally prevented me from printing in black and white. There are tons of complaints about this in the Canon official forums dating back a decade, but for tech normies it's pretty common to see an error message and go buy a product to fix the problem, so Canon uses this fear and deliberate inconvenience to profit, even if it means pissing off some very publicly vocal users.

I bypassed this error by changing the printing properties to 'B/W only' - an option buried 3 layers of menu deep and never mentioned in the initial popup - but know that so many others wouldn't have had the patience to. Windows is good for compatibility but a fucking nightmare when it comes to user choice. I suppose that's nothing new, but is a realization that can a Linux user again and again.

2020-12-07 22:34:13 +0200

I've been running Gentoo for a few months as my main distro, but this weekend was the first time I came up against a 'broken' portage. Not broken like this, thank fuck, but broken dependencies. When running emerge --sync, I noticed portage needed an update and so ran it with emerge --one-shot sys-apps/portage. I got back a slew of dependency errors which I wasn't sure how to fix, but it's simpler than it first seems. This forum post from over a year ago suggested just unmerging the broken deps and trying the portage update again:

emerge --unmerge --oneshot dev-python/certifi
emerge --unmerge --oneshot dev-python/setuptools

After emerging portage again, it failed but with fewer broken deps. I unmerged those, tried again, and it updated without issue.

Just a message for my future self and any prospective lurker that it's possible without totally removing portage. Phew.

2020-11-11 20:59:59 +0200

PinePhone battery charge lasts far longer than it did just one week ago. I've been following the project's issues and commits, and it seems crust support was added a long time ago but came into effect for me only very recently. It's noticable by how the phone stalls for less than a second when unlocked, and even more noticable how the battery consumption is far lower! Today I listened by music with mpv for 2 hours and noticed less than 25% was consumed. It's almost 12 hours since the phone was last on charge, and it's showing 32% battery remaining. This a huge improvement from when I first bought it. Previously, I could rely on it for 3 hours at most, and when it felt cold in my pocket I knew it was dead. Now, it's cold because suspend works, and it last all day in normal conditions! I'll probably post again with more concrete figures soon.

2020-11-11 18:22:51 +0200

When hacking, you can always fuck something up irrecovably. That's if you don't make backups. With the aim to add custom titles to entries, I added a function that writes back to the file. There was a bug in that function that overwrote the file blank if it didn't have a header. I got a bit too confident with how easy the road so far has been, but File.write can always be a risk! There are a few entries before this - namely me musing about how to add a title to entries... - which are dead forever. It's not all gone to shit, though. I have stable versions of generate.rb on this machine and others, plus a copy of my ~/Documents/entries from a week ago on another machine. I guess we'll live and learn, with the main learning being not to use File.write on your production machine's main entry folder.

2020-11-02 15 25 28 +0200

Adding dynamic paths to entry.rb to make it more usable by someone other than me. Also added $HOME to the makeit script, although the entry and generate scripts should be able to be run in the directory without 'installing' into the .local/bin path.

2020-11-02 15 17 15 +0200

Have been busy with installing Gentoo on a new SSD for use in my T420. Its previous disk with my Artix installation has migrated to the heap (Optiplex) after being useful for a sandbox to see how Gentoo felt to set up and install. This time, base installation took less than 24 hours. That includes the first emerge, compiling the kernel, and emerging Xorg-server. Qutebrowser (or more accurately qtwebengine) took around 17 hours, Wine maybe 6 hours, and dwm just a few minutes including the dependencies. Everything else is pretty lightweight - st, HexChat, Ruby, etc... nothing has taken more than a few minutes, so I'm hardly noticing Gentoo's strain on a second-generation i5.

2020-11-01 20 50 39 +0200

First entry from new T420 install...

2020-10-27 16 01 39 +0200

My GNU/Linux setup and workflows

At home I have three laptops and one PC - a T420 for everyday use, an X60s for light browsing and media playback, a T460s which I set up for my SO, and an Optiplex 7010 running Gentoo. Here's a little more about what I use on each system and why, starting with the most obscure.

The Optiplex has a 1TB HDD, 3GB of RAM, and is used mostly as a seedbox. I run transmission-daemon and transmission-cli, but mainly use it as a way to learn Gentoo. Previously, I ran ArcoLinux with the Herbstluftwm ISO because it was simple to install. The main interface tools are Xorg (I mention it to give credit to the amount of time it took to compile with the 3GB of RAM and 3rd gen i3), dwm, st, and qutebrowser. Its 1TB HDD makes it a great machine for torrenting and as a file server. I sync books and photos there via Syncthing, which is a great way to automatically back up important files and ensure .epubs and movies are available regardless of which computer I'm using at that moment.

My T420 is not far beyond stock specs - a second generation i5, a 256GB SDD, and 6GB of RAM.

In key with my lack of systemd so far, I run Artix; open-rc is great and I'm happy to have a higher degree of control over very basic, venerable parts of the Linux desktop like timezone and hostname. Again, qutebrowser is my browser of choice. Here's why: vim-like keybindings are easy to adapt to. You can define your own shortcuts - one example in the qutebrowser documentation is hint links spawn mpv, which is a great leap towards becoming independent of YouTube for media consumption and something I've even seen people outside of the mpv-loving ecosystem think is an amazing alternative. You can define your own bangs for sites like reddit, Arch Wiki, or anything with predictable suffixes for search queries. Hinting links with 'f' is amazing and gets you away from using the mouse more than necessary (which could be not at all when using a window manager + qutebrowser). As I've hinted at a little in the past on this log, I use a custom set of scripts on my T420 to write log posts and send them to my VPS. I may upload the repo for that when I feel it's useful for others. Those scripts use Ruby, shell, and rsync to upload the new index.html and stylesheet.css here. In fact, with my PinePhone, I'm forever using rsync for little tasks like refreshing my remote repository of music and videos. In its ultimate state, my T420 will run Gentoo with the help of a better processor (and coreboot...) and at least 16GB of RAM. I have an i7-3632QM on my shopping list along with a 1TB SSD.

I love the light build and small keyboard of my X60s. I never have to stretch my hands - it's just so well optimized for typing. I try to do most of my typing on this machine, so should probably get entry.rb, the program that generates this blog, on here too. Since it's from 2004, this little cutie is librebooted, and runs a 32-bit OS. At first this was a bit of a roadblock, but it turned into my first (forced) opportunity to install Arch from scratch instead of just using a GUI-install ISO like Artix or Arco. Again, I installed dwm as the WM here, and wrote my own scripts for dwmblocks to show disk space, RAM, and CPU usage. As I said, I usually use the X60s for media. It sits off to my right side while I'm in the office so is great for mpving youtube-dl'd videos. It has 1GB of RAM and an Intel Duo L2400, but don't really notice how low-end that is since I run very lightweight software.

My SO's T460s was the first Thinkpad I bought. It's super capable for our needs, easily running most games, tons of browser tabs, etc. It runs ArcoLinux and herbstluftwm, which was the window manager I first fell in love with. herbstluftwm interfaces with herbstclient, its control application, via ~/.config/herbstluftwm/autostart, a shell script that I like to see as a program that extends .xinitrc - autostart controls keymaps, shortcuts, and programs that run when the WM starts. It's a great place to define scripts for things like screenshotting, default layouts, etc. I moved away from herbstluftwm for dwm basically because it's easier to have new windows appear as the main window in the stack than having to enable them as a frame, resize the frame, switch the position, and so on. I still love hlwm, but dwm just takes less time out of my day to get right.

Finally, and something of a sidenote, I use a PinePhone as my primary mobile device. I don't need (or want) much from a phone; I want it to be a literal phone in the sense that it can take calls and send/recieve SMS. I've found that postmarketOS with Phosh meets this basic criteria. It also runs telegram-desktop which I managed to talk most of my family into using at least instead of Facebook Messenger or WhatsApp. I'll write another entry on phones, I'm sure, so I won't go too in-depth here. I use mpv to listen to albums, and videos grabbed with youtube-dl which I rsynced to my phone. The battery life is terrible, which I've read is mostly due to the fact it runs desktop-grade software. There's a great project working on bringing the power of dwm to the Pinehpne (sxmo), but it's not as far along as Phosh and is less reliable and more of a drain on battery. Anyway, since I use a phone only when I'm out of the house for a couple of hours, this is more than sufficient.

Here I sit, surrounded by Thinkpads and other devices that run Linux only. A few things I have my eye on for the future: an upgraded Optiplex for more modern gaming. A CPU upgrade for the T420, or perhaps a keyboard-modded T430, to make installing and running Gentoo more possible. The flip-out keyboard mod for the PinePhone. Maybe even one of those dual core Macbooks from early 2000, so I can libreboot it and install Linux. Okurr.

2020-10-27 11 35 34 +0200

Set up a new router today, which meant remembering all of the different ways various machines were connected to the internet in the first place. For the X60s, it's NetworkManager/systemd with wifi-menu as the front end. The T420 is configured via Connman (not netctl, wpa_suppliant or dhcpcd as I first thought) and cmst as the front end. The T460s uses nm-applet since it actually has a sys tray! Another setup task was opening a port for P2P. The last router, iirc, came with a usable port open by default...

2020-10-26 12 55 42 +0200

screenshot of gentoo on optiplex

2020-10-26 12 32 22 +0200

Good discussion on the Gentoo forum about experiences running Gentoo both a) on old hardware, and b) back when software was simpler, less dependencies, etc. I started the topic because it was an interesting experience to get a working install going on a machine with a modest CPU and RAM, but back when Gentoo started in 2000, everything had a modest CPU and RAM. Some general points of interest: gcc used to be much faster to compile, even on weaker systems. In 2000, more code was pure C (there's currently a bit of unrest about the fact that man pages pull in a python dependency which shouldn't be necessary). Big packages like Qt, KDE, libreoffice were still overnight jobs to update or install. Generally, users with memories of the 2000s report that compile times didn't differ much to nowaday; computers with 100 times more RAM and CPU power might not feel much snappier than a Pentium 4 with 512MB of RAM did back then.

2020-10-26 12 20 45 +0200

Added a Generator class to entry.rb to hold some messy miscellaenous methods and solve the issue of needing global variables. Surprised at how little I broke when refactoring, but also wary that the Entry class is sub-optimal; there's a new markdown parser being created for each entry because the Entry class is where the plain text is parsed into md. It probably makes more sense to move the markdown generation methods to the Generator class...?

2020-10-25 21 23 09 +0200

Just finished an initial refactor of the blog script. Up until now, I've been writing entries in the command line as one-liners. The latest edit means I can pass in markdown files, convert them with redcarpet, and add them to the top of the blog's index.html. Also, what was once one (not very) long script is now two classes - Entry and Site. Entry holds the logic to turn a file path into a block of HTML-formatted text, and Site ensures the directory of markdown files is pulled in, in order. I'm doing this because Jekyll feels a bit heavy for a log like mine, but I do like how it works from a directory of plain text files. Things that I scripted around Jekyll in the past, like new post creation and syncing to a VPS, are part of the 'suite' of self-made scripts that come with entry.rb (working title!1one) by default.

2020-10-24 23 57 24 +0300

check new makeit worked fine

2020-10-23 17 33 48 +0300

Back on the venerable 3GB after reseating. Seems the failed qtwebengine build was related to the limited amount of RAM so I edited make.conf to -j1 for this package.

2020-10-23 15 35 36 +0300

I had 'rigged' up a smoke alarm above the furiously-compiling Optiplex to make sure I was forcibly awoken in case it set the house on fire, but it just came crashing down directly onto the exposed RAM sticks and rendered a couple of them unusable. Reseated and rebooted, it's running on ~700MB RAM. :)

2020-10-23 14 58 46 +0300

As for the rest of the day, I'll be refactoring and making improvements to the scripts that generate this log. Oh, and qtwebengine just failed to compile, so there's that adventure waiting to be embarked upon.

2020-10-23 14 56 07 +0300

re: memes, I'm currently writing this on my Thinkpad T420 running, btw, Arch, next to my Librebooted X60s also btw running Arch. Oh and also btw I've spent the morning trying to fix ModemManager issues on my PinePhone running sxmo. Not popular enough to be a meme, but, whether or not I'm successful with fixing the modem, I'm safe in the knowledge right now that I'm just as hard-to-reach as always.

2020-10-23 14 49 13 +0300

I've been installing Gentoo on an old Optiplex (3GB RAM, i3-3220) for most of the week so far. It's taken a couple of days to install the base system, including some overnight compiling, and then another day to get Xorg, dwm and st up and running. Right now, the only browser I have is Links since it doesn't depend on a heavy web engine or graphical toolkit. I'm currently waiting on a qutebrowser install which has been running all morning, mostly on the qtwebengine part. Did I fall for the meme? If I did, a lot of people on the #gentoo IRC channel who take the meme very seriously did too.

2020-10-22 12 19 59 +0300

Next steps: write a script to move index.html to the right folder on a VPS... set up the VPS to point to my domain... figure out how to serve two sites since one already uses the /var/www directory.

2020-10-22 12 18 04 +0300

test entry && generate

2020-10-22 12 16 36 +0300

This blog is generated by a Ruby script which turns a directory of text files into html-formatted entries. Another script is used to record entry text at the command line. The idea is to have a simple, feed-style log on my own platform instead of something like Twitter.