1. Barnaby Walters: Notes from the first day using a Slimbook Executive running Kubuntu (probably applies to anyone moving from macos to Kubuntu on similar hardware) Generally, very good first impressions. The hardware is nice, the connectivity is perfect for me, it boots fast, the screen looks amazing. The keyboard and trackpad are fine, except for the surfboard trackpad button design. Came with a bunch of stupid marketing stickers on (what year is this, 2005?), most of which were easily removed. Here are the first settings I tweaked to make things more familiar: UI Scaling Settings -> Display and Monitor -> Global Scale = 200% for a readable UI while still remaining beautifully crisp. Settings -> Appearance -> Cursors -> Size: 48 Settings -> Startup and Shutdown -> Login Screen -> Apply Plasma Settings so that your login screen is a sensible size. Right click status bar, enter edit mode, Panel height: 100 Sleep Default sleep mode seems to be a hibernation which takes 10-20s to wake up from, including whenever you close the lid. Fix this by: In settings -> Power Management, in AC Powered tab set lid close to just turn off screen (or lock if desired). This will just turn off the screen when closed on AC power, but actually put the laptop to sleep when the lid is closed on battery power, to reduce power consumption. Then, sudo nano /etc/systemd/sleep.conf and uncomment AllowSuspendThenHibernate=yes, and reboot. This changes the behaviour of sleep to initially just suspend the system, keeping data in RAM and allowing immediate wake-ups. When the battery goes under 5%, it’ll instead hibernate, which takes 10-20s to wake up from but stores the contents of RAM on the SSD. EDIT: On further testing, this sadly doesn’t fix the issue completely (or at all? It’s hard to tell). Putting the computer to sleep using the meta menu works absolutely fine, but using F1 or the laptop lid (which I assume are handled the same way internally) leads to this blank screen with a cursor and hidden password entry field for 20s on wake up issue. I have no idea what’s causing it, and IMO it’s a big reason not to use KDE Plasma on these laptops — sadly, as it’s easily my favourite of the linux desktop environments I’ve tried so far. FURTHER EDIT: turns out this was all due to the laptop coming with an outdated linux kernel installed, which didn’t support the hardware. A fresh install of the latest Kubuntu works perfectly. Firefox By default, Firefox treats scroll events from the trackpad as scroll wheel inputs, causing jerky scrolling. To fix: echo MOZ_USE_XINPUT2=1 | sudo tee -a /etc/environment Touchpad Settings -> Input Devices -> Touchpad Pointer acceleration: 0.6 Tap-to-click, tap-and-drag enabled Two-finger tap: right click Scrolling: two fingers, invert scroll direction Right click: press anywhere with two fingers Function Buttons Boot holding F2 to open BIOS settings, dig around to find and enable “Fn lock” to make the function keys perform their alternative functions by default (with numbered function inputs available by holding Fn, as on a MacBook) Next pain points which I didn’t find a solution to yet: Occasional trackpad issues where the cursor freezes and only starts moving again after a two finger tap (right click). At the beginning this happened all the time, now it seems much better. Need to keep an eye on it. File browser not having a column view. Apparently this is an ongoing struggle for years in Kubuntu, which seems hard to believe. I tried to install the ElementaryOS file viewer but it didn’t seem to work. Setting up the keyboard for international typing. I got extremely used to typing special characters, diacritics and fancy punctuation on my macbook keyboard and am reluctant to have to re-learn all of that. Ideally I’d like to get a least a large subset of the key combinations working again.

    Macbook -> Kubuntu Slimbook update 2:

    After a brief dalliance with PopOS (which I liked well enough, but convinced me that I much prefer Plasma over Gnome), thanks to advice from someone on r/Kubuntu I discovered that most of my Kubuntu issues had been due to Slimbook delivering laptops with an old version of Kubuntu and the linux kernel on, which isn’t really compatible with their laptops (and I had foolishly assumed that the system software update would also update the kernel — not so) tl;dr: if you buy a Slimbook laptop and want to run Kubuntu on it, install it yourself!

    Desktop Environment

    After trying out Plasma on both X11 and Wayland, I decided to opt for sticking with Wayland, despite a few “showstoppers” and other minor annoyances. It has excellent support for a lot of quite slick features, such as fractional per-monitor UI scaling and multitouch gestures for switching virtual desktops (currently not yet configurable, hopefully this will change in the future).

    The current stable release of GIMP uses an old version of GTK which doesn’t scale well under Wayland, but fortunately the development release (2.99.16) has GTK3 support and the UI scales just fine.

    VLC also looks very weird under Plasma. I kept it around as it’s so useful, but also installed Celluloid 0.25.1 from their PPA as a potential Plasma-friendly replacement.

    Keyboards

    I type almost exclusively in ABC-Extended on my macbook, which gives me quick access to all the international characters I need access to, as well as some nice punctuation like en+em dashes, ellipses and curly quotes.

    I tried several keyboard layouts on my slimbook, and eventually settled for the English (Macintosh) one, which is almost the same with a few small differences. I will probably end up making my own keyboard layout which shifts some things around and replaces unused things with useful characters.

    For quick reference and learning different keyboard layouts, I recommend assigning this command to a global shortcut (I used ctrl+alt+shift+k), which brings up a keyboard preview, scaled to look good on my monitor. I haven’t found a good way of dismissing it other than using the trackpad (ideally I’d like it to only be displayed while I hold the shortcut), but it’s still very convenient.

    tastenbrett -qwindowgeometry 2500x850
    

    For some reason, my F2 button’s special feature is “toggle whether the super key is locked, without indicating the current status to the user at all”. Apparently this is a common feature, but some cursory research did not reveal why this would ever be useful, or what the intended use is. I also didn’t find many other people asking about it. What am I missing here? Why does anyone need an entire button dedicated to disabling another, unrelated button? Why can’t I make it do something useful?

    Mail

    For the moment I decided for Thunderbird for mail, contacts and calendars (more about those later), and it was easy enough to set up for mail. I’d much prefer something which looks and works like mac os Mail, but installing the Conversation extension went a long way to making it usable (despite not always finding all messages in a thread for some reason).

    Music

    For the moment I chose Quod Libet as a basic iTunes replacement. It successfully scanned the contents of Music/iTunes/iTunes Media/Music with no complaints, and even played the AAC m4a files after I installed kubuntu-restricted-extras. Unfortuantely Quod Libet (and every other media player I tried) seems to be unable to inhibit sleep under Wayland — hopefully this will be remedied soon, as the “create a NoSleep activity and switch to it whenever you want to play music” ““workaround”” is not particularly appealing. I’d also settle for a status bar widget which let me switch power profiles quickly.

    Photos

    Moving my photo library took a little more effort, but not much, thanks to osxphotos. Additionally installing exiftools and then running one command created a structured export of my entire library, with all the metadata I care about stored safely in EXIF fields:

    osxphotos export /Volumes/migration/photos --directory "{created.year}/{created.mm}" --filename "{created}T{created.hour}{created.min}{created.sec}{title?_,}{title,}" --skip-original-if-edited --jpeg-ext jpeg --exiftool
    

    This command takes the edited version of each file (falling back to the original), and stores them in a /YYYY/MM/YYYY-MM-DDTHHMMSS[_title].jpeg folder structure, which is my preferred way of organising photos on disk.

    I then imported this library into DigiKam, which quickly read all the metadata and made everything searchable. To get newly imported photos to fit into the same structure, I had to go into the Import Settings (plug in a camera or card, go “Import from device” and then open the sidebar on the right — unfortunately these settings don’t seem to be exposed anywhere else) and set the default filename to be the datetime, and the default “Album” to be YYYY/mm.

    I’m not a huge fan of DigiKam, as it’s cluttered, unstable and requires some very awkward workflows (editing images opens them in a separate window? adding a tag requires opening the “tag manager”?? “hierarchical tags”??? I think the developers did not understand what a tag is and what makes them useful) but will do for now. To ensure longevity (and ease migrating to a different management application if I find something better suited to my workflow) I opted to store all metadata in EXIF fields in the files themselves. This way, DigiKam’s external database works as an ephemeral index and cache, which I can throw away or rebuild at any time without losing anything.

    A useful tip I learned along the way (thanks to ChatGPT): exiftool -a -u -g1 <file_name> will list all EXIF data found in a given file.

    Calendars and Contacts

    I set up a Nextcloud instance on my web host to see how much of my (already limited) iCloud usage it could replace. Despite learning that Hostinger doesn’t allow access to the .well-known directory required for zero-config carddav and caldav setup, I successfully managed to get my calendar and contacts migrated there. Thunderbird was able to sync with both without any issues, and mac os Calendar did eventually read my calendars from Nextcloud. No such luck with mac os Contacts unfortunately, but that’s much lower priority than calendar anyway.

    Pages and Numbers documents

    I had hoped that there would be a way of easily and mostly-losslessly batch converting all my Pages and Numbers documents into their microsoft XML equivalents, before then converting them to Libreoffice documents later on. Alas, that is only partially true. I ended up modifying a script provided by Viking OSX, which finds all Pages documents in a given folder and exports them as word docs to a separate folder. My changes instead export them in-place, and additionally export a PDF version so that I have a lossless read-only copy of each document exactly as it was:

    #!/bin/zsh
    
    : <<"COMMENT"
    Do a recursive descent on a folder hierarchy gathering Pages document. Export these
    documents from Pages as Word .docx and .pdf documents in the same location.
    Tested: Ventura 13.0.1
    VikingOSX, 2022-12-06, Apple Support Communities, No implicit warranty or support.
    Adapted by Barnaby Walters 2023-09-08
    COMMENT
    
    typeset -gi pagesCnt=0 docxCnt=0
    
    STARTDIR=$1
    
    function pages_export () {
    
        /usr/bin/osascript <<-AS
        use scripting additions
    
        tell application "Pages"
            activate
            try
                set infile to POSIX file "${1}"
                set outfile to POSIX file "${2}"
                set outfile_pdf to POSIX file "${3}"
    
                set thisDoc to open infile as alias
    
                with timeout of 1200 seconds
                    export thisDoc to file outfile as Microsoft Word
                end timeout
                with timeout of 1200 seconds
                    export thisDoc to file outfile_pdf as PDF
                end timeout
                close thisDoc saving no
            on error errmsg number errNo
                display dialog "[ " & errNo & " ]: " & errmsg
            end try
        end tell
        -- unhide the exported filename extensions
        tell application "Finder"
            if exists (item outfile as alias) then
                set extension hidden of (item outfile as alias) to false
            end if
        end tell
        return
    AS
    }
    
    function completion () {
        /usr/bin/osascript <<-AS
        use scripting additions
    
        set DialogIcon to "/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/MultipleItemsIcon.icns"
    
        display dialog "Pages documents found: " & "${1}" & return & ¬
            "Pages documents exported to Word and PDF docx: " & "${2}" with title "Processing Complete" with icon POSIX file DialogIcon
        return
    AS
    }
    
    # do a case-insensitive recursion finding Pages documents and sorting by name
    setopt nocaseglob
    for f in ${STARTDIR}/**/*.pages(.Non);
    do
        (( ++pagesCnt ))
        # if there is no Word folder at this file location, then make one
    
        # construct the full path to the word docx document to be exported
        wordfile="${f:a:h:r}/${f:r:t}.docx"
        pdffile="${f:a:h:r}/${f:r:t}.pdf"
    
        pages_export "${f}" "${wordfile}" "${pdffile}"
    
        # do we have an exported docx that is non-zero in size?
        [[ -s $wordfile ]] && (( ++docxCnt ))
    done
    
    # give the user statistics
    completion $pagesCnt $docxCnt
    

    (aside: I initially tried to get ChatGPT to generate the necessary applescript to do this entire task for me, as I’d heard that it was good at that, and applescript is a notoriously unintuitive and badly documented language. It seemd to get fairly close but I was unable to debug the (incomprehensible) errors in its scripts. The approach taken by VikingOSX is much more efficient: use applescript only for the things it’s absolutely necessary for, and do the rest in bash or python)

    I did the same thing for Numbers documents, the necessary script changes for that are left as an exercise for the reader.

    Unfortunately, these exports (and/or their subsequent imports into Libreoffice) were not very successful except for the simplest of documents. I only actively use a total of maybe 5 documents, which I will simply reconstruct from scratch in Libreoffice, and for the rest a combination of lossless read-only PDF and potentially-broken Office XML files should be sufficient.

    Prusa Slicer, AppImages and KDE Plasma LC_ALL issues

    The official way of installing Prusa Slicer on linux is using an AppImage, a format which I’ve had mixed experiences with. This was no different, as opening it in Dolphin had no result. Opening it in a console revealed some sort of locale error, and suggested some commands to fix it, but they also had no effect.

    After doing some digging, it turns out that it’s KDE Plasma’s fault. Plasma splits your localization settings up into various categories (language, time format, currency etc.) — an excellent feature by itself. Unfortunately, if you pick different locales for any of these categories, it leave the LC_ALL environment variable empty.

    The Prusa Slicer AppImage (and who knows what other software) was expecting an LC_ALL environment variable, and refused to run without it. tl;dr, editing /etc/defaults/locale to set LC_ALL and LANG to en_GB.utf-8 allowed PS to run, without having caused any other issues (yet…?).

    Once it managed to run, Prusa Slicer somehow told the system about itself in a way which lets me launch it from the application launcher (not something every AppImage does), and worked absolutely fine. Importing my settings as a config bundle worked perfectly.

    Documents and file syncing

    For the moment I decided against trying to set up two-way sync of my ~50GB documents folder between os x and Kubuntu. Nextcloud on my cheap web host is out of the question, and Syncthing look promising but I’d want to test its limitations and performance on something smaller first. For the moment, I decided to just use rsync for a one-way migration, and can repeat it in the future as I convert more proprietary files to linux-compatible formats.

    rsync -avzu --exclude venv --exclude .DS_Store --exclude .h5 Documents/ slimbook:Documents
    

    venv and .h5 files are excluded to avoid transferring another ~30GB of unnecessary data. For syncronization after the first one, I need to make sure that rsync isn’t going to delete or replace newer files, but I will figure that out when I get to it. -u makes sure that files which are newer (i.e. made or changed) on the kubuntu side are not overwritten on subsequent syncs

    Pain points and next steps

    • DigiKam seems powerful but its UI kinda sucks
    • Plasma is great but has some drawbacks which will hopefully be fixed Soon™
    • Notes — I’m a heavy mac os Notes user, and have fairly high standards for its replacement. Nextcloud notes looks promising, but the iOS app has two editor modes: one which is fast but sucks, and another which is good but takes ~7s to load each note.
    • Converting proprietary file formats to their linux equivalents. I have some old Sketch documents and a LOT of Eazydraw documents, all of which need converting losslessly and perfectly to well-structured SVGs for use with inkscape, before I can switch completely to Kubuntu for work tasks. I had hoped to use a similar Applescript trick, but haven’t been able to figure it out yet as Eazydraw lacks an applescript interface. Using System Events to manually manipulate the menus could work, but seems fiddly
  2. Aaron Parecki: I sold a washer/dryer on Facebook Marketplace, and now it's showing me new listings for washer/dryers. Glad to see the algorithm hard at work here.

    Apparently FB learned nothing from the classic “I bought a toilet seat on amazon and now amazon’s trying as hard as it can to fuel the toilet-seat-collecting hobby I’m apparently hooked on” problem

  3. Barnaby Walters: You’ve heard of biblically accurate angels, now get ready for bowl-accurate demons (cc @apocrypals)

    That first one was definitely the funniest, but the some of the other bowl-demons are pretty great too.

    A ceramic bowl with text around the rim, and a line drawing of two figures in the middle, one raising their arms up, the other upside-down and with a funny smile

    A ceramic bowl with text around the rim, and a line drawing of a figure in the middle with a large curved sword and a mischevious grin

    There’s a bit more detail about exactly what’s going on in this article.

    I’m surprised how timeless and appealing these little drawings are. They avoid a lot of the foibles which make a lot of late antique/medieval art look dated, and the exaggerated proportions, noodly limbs and googly eyes wouldn’t be out of place in a webcomic or cartoon.

    I also love that these bowls refer to themselves as “amulets”. Next time someone describes something as an “amulet” in a novel or TTRPG I’m definitely going to imagine it as an inverted bowl with a googly-eyed stick figure demon on.

  4. Aaron Parecki: Ok that was fun, thanks for all the responses! Lots of great stuff in there. Now take your favorite programming language and tell me the 3 things you most dislike about it. No complaining about languages you don't use!

    For python, the lack of type information for function signatures and return values in the documentation has always annoyed me.

    The lack of naming consistency in the standard library, too — it’s almost as bad as PHP, with nospaces, under_scores and CamelCase at every level: modules, classes, functions, arguments.

    I can’t think of a third major annoyance off the top of my head though, and almost every time I use another programming language, I end up realising just how well designed some aspect of python is, so it’s not doing too badly.

  5. Aaron Parecki: hot take: Dutch is basically German with a funny accent

    I’ve gotten through entire (admittedly short) conversations in dutch just by speaking german in a dutchey way. It’s not just a weird version of german though, they have some (adorable) words of their own too!

  6. Quinn "kind of here" Norton: I've never liked gendered they/them because it introduces ambiguity in plurality. So I have an idea, hear me out. We already use single sound vowel pronouns with no problem, I & (kinda) You, so they're already natural in English. So just take they and them and strip the TH...

    although I’m not convinced that the singular/plural ambiguity is a big problem. “you” already has ambiguous quantity, and both “you” and “we” are inherently ambiguous and context-dependent

  7. Quinn "kind of here" Norton: I've never liked gendered they/them because it introduces ambiguity in plurality. So I have an idea, hear me out. We already use single sound vowel pronouns with no problem, I & (kinda) You, so they're already natural in English. So just take they and them and strip the TH...

    as a staunch “they” proponent, I’d say it’s not a bad idea. I’d type ey/em/eir and pronounce [eɪ] [ɛm] [eə]. Possible use singular verb conjugation too for reduced ambiguity e.g. “ey wants to be referred to using “ey””

  8. Brian Suda: came home to a solicitation for apartment cleaning tapped to the front door window. Firstly, don’t use crap tape to secure your notice to the window. Now it needs a good cleaning after removing it! Secondly, good luck, but no thanks if this is how you leave your notes.pic.twitter.com/TpKezu6d2b

    Maybe the idea is “pay me to clean up the mess I made on your window”…

  9. Brian Suda: could argue that form input is what made the modern Web more than any other development. The first browsers had no forms (only global search). Thought of releasing a working app based on old code that works today, but without forms we lose so much functionality more than JS/CSS.

    I can think of ways of doing it, but they’re not pretty — e.g. onscreen keyboard made of <a> elements, each keypress is a full screen refresh which stores the new contents of the fake textbox server side (either cookies or URL param to identify session). Makes me wonder… did anyone do something like this at the time, before HTML forms were invented?

  10. bex edmondson: my (girls) high school's highest computer-related qualification was HALF a GCSE, a qualification taken aged 16 - i had about 12 of them, and ONE HALF was computer-related. half my grade was a POWERPOINT. i asked for them to start an a level - they said no IT WAS 2010!!!!!!!!!!!!https://twitter.com/alicegoldfuss/status/1096142571837960192

    I feel the pain :/ I was already freelancing when I took my GCSEs and was forced to do the ICT BTEC you’re probably talking about. It ended up being my worst grade overall because I got so angry with it halfway through and tried (but sadly failed) to fail it on purpose. Plan was that if a job interviewer asked why IT was my lowest grade I would take great pleasure in ripping the course content to shreds.

  11. Brian Suda: digs around in an old NeXT box used by CERN to build the first graphical browser. Looking through the source code, this really was a grand experiment.pic.twitter.com/KpDDz3h1FI

    Please tell me that’s the original “this is a server, do not turn off” sticker?!

  12. Aitor García Rey: Today I Learned the Slavery Abolition Act of 1833 provided £20M for compensation payments to British Empire slave-owners. British government financed this massive amount (~5% GPD) w/ a £15M loan (banker Rothschild). It was not fully paid back until 2015! Bankers, we always win

    just imagine how long it would have taken if they had compensated the slaves :/

  13. Aitor García Rey: For a long time I felt dumb (or even betrayed!) helping people both professionally & personally and not getting love or recognition back. A few years ago I decide to change that. Now, I’ve *zero* expectations for anyone, I expect nothing. Literally. I just try to help. Period.

    @_aitor I mostly reached a similar place and it’s very relaxing. I occasionally have to remind myself that I’m helping purely because I chose to. The help might be ignored or even rejected, and that’s fine. Might have an impact on whether I chose to help that particular person in the future, though…

  14. emma winston: For someone who complains bitterly about everything I sure am easily pleased by rain/thunderstorms

    oh man, I go wild in thunderstorms and high winds. I have yet to find somewhere with both, Iceland had great wind but no thunder, central europe is the other way round.

  15. holy indifference: I have not! Will keep a look out. The Centrotrans drivers are my besties though.

    Their website vectortours.de is one of the most confusing I’ve ever seen. A German domain with a weird mixture of Albanian and German text. Most of the phone numbers don’t work, and when I tried calling the German number and asked in German about their lines from Macedonia to Montenegro, they were dumbfounded and had no idea what I was talking about. Some of the ticket desks in Skopje firmly denied the existence of the company, until we eventually found one who gave us a ticket. Then, by chance, we ended up staying in a hostel in Prizren which was literally next door to the Vector Tours office, which was adorned with three completely different logos! I think some other weird stuff happened which I forgot, but in total this was enough to cement them as a semi-legendary entity and permanent in-joke.