1. 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.
  2. I’m a couple of weeks into 3D printing with a Creality Ender 3 S1 Pro. My initial impressions are: tl;dr: mechanically good, firmware bad. Either install synman’s pro firmware (requires a screen downgrade) or klipper (drops the screen and requires a raspberry pi — I went with MainsailOS) and you’ll have a very good printer for the price.

    Here’s my best 3D Benchy so far, printed in 55 minutes in PETG using Klipper

    Pros:

    • Mechanically solid and well built, comes very well packed, does not feel like the stereotypical “cheap chinese” product at all
    • Quick and easy to assemble (I recommend using loctite on all screws to prevent them coming loose from vibrations)
    • Some replacement parts available
    • Well supported with (mostly quite good) profiles available for various pieces of software
    • Touchscreen interface is fast and convenient to use if you’re satisfied with the stock firmware
    • Main board is not locked-down so it’s easy to install different firmware, and just as easy to revert to stock in the unlikely event that you want to

    Cons:

    • The stock firmware is very limited and has various problems.
      • Most notably, the “print on resume” feature causes uncontrollable pauses between layers, during which the nozzle will leak filament, causing huge blobs and stringing. Not possible to turn off in the UI, requires a M413 S0 command added to the start g-code in your slicer (or changing to a different firmware, which you should do anyway). Here’s a comparison of the exact same part with and without “resume on power loss” enabled, both printed back when I was using the stock firmware:
      • The auto bed leveling feels extremely unreliable and hard to trust
      • You can only see the first few characters of gcode files, so it’s impossible to differentiate between two similar files with different suffixes
    • Fiddly to perform firmware updates — screen and main board require separate files, sometimes in different folders depending on the chipset you have (which you can only check by opening the printer and looking at the hard-to-read MCU part number), always with a new filename otherwise it’ll fail silently, both will accept firmwares for different models with weird failure modes like a rotated screen
    • v-wheels riding in aluminium extrusions have a limited accuracy. Definitely good enough for a lot of purposes, but can warp and wear over time, will never be as good as precision-ground linear rods or (even better,) rails
    • XZ gantry arrived with loose Z nuts, causing huge amounts of Z kickback and preventing any kind of accurate movement. No indication that you have to tighten these in the instructions, and sources on the web inconsistent about what you should do about it. I ended up tightening mine up so they don’t rattle and have had no further issues.
    • Flex cable XZ clip position sticker was placed slightly wrong and awkward to adjust once in, and the flex cable end at the extruder requires better stress relief IMO. I added ~6cm of heatshrink tubing around it which works great
    • The provided slicer is horrible, I only tried it out to see if it’d fix my z blobbing problems. Fortunately Prusa Slicer works great with these printers

    I tuned mine up with the usual tools until I was satisfied with the prints using the stock firmware. Then I installed klipper and set up pressure advance and input shaping, vastly improving performance and usability.

    20mm calibration cubes printed 1) on the stock firmware, 2) Klipper with a speed profile, and 3) Klipper with a detail profile (i.e. slower outer perimeters):

    Here’s my current Prusa Slicer config files for the printer itself (Klipper) and my 0.16mm layer height optimal speed print profile.

    Here’s what my Klipper START_PRINT and END_PRINT macros ended up looking like:

    [gcode_macro START_PRINT]
    gcode:
      {% set TOTAL_LAYER_COUNT = params.TOTAL_LAYER_COUNT|int %}
      {% set BED_TEMP = params.BED_TEMP|float %}
      {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|float %}
    
    SET_PRINT_STATS_INFO TOTAL_LAYER={TOTAL_LAYER_COUNT}
      G90 ; use absolute coordinates
      M83 ; extruder relative mode
      M140 S{BED_TEMP} ; set final bed temp
      M104 S{EXTRUDER_TEMP - 90} ; set temporary nozzle temp to prevent oozing during homing and auto bed leveling
      G4 S10 ; allow partial nozzle warmup
      G28 ; home all axis
      M190 S{BED_TEMP} ; wait for bed temp to stabilize so that the bed mesh is accurate
      BED_MESH_CALIBRATE
      M104 S{EXTRUDER_TEMP} ; set final nozzle temp
      G1 Z50 F240
      G1 X2 Y10 F3000
      M109 S{EXTRUDER_TEMP} ; wait for nozzle temp to stabilize
      G1 Z0.28 F240
      G92 E0
      G1 Y140 E10 F1500 ; prime the nozzle
      G1 X2.3 F5000
      G92 E0
      G1 Y10 E10 F1200 ; prime the nozzle
      G92 E0
    
    [gcode_macro END_PRINT]
    gcode:
      M140 S0 ; turn off heatbed
      M104 S0 ; turn off temperature
      M107 ; turn off fan
      # Move nozzle away from print while retracting
      G91
      G1 X-2 Y-2 E-3 F300
      # Raise nozzle by 10mm
      G1 Z10 F3000
      # Move out of the way
      G90
      G0 X20 Y150
      # Disable steppers
      M84 X Y E
    
  3. Finished the ER rando run by pivoting to the ever-reliable blasphemous blade. I tried to deal with Fire Dragonkin+Placidusax with rot daggers and the ornamental straight swords, but it just wasn’t happening. Farum Azula was a breeze, with Godskin Horah Loux, Field Trip Rennala and Fire Giant. Godskin Duo replaced Gideon Ofnir (continuing the theme of duo fights in that arena), which also wasn’t much of a challenge.

    Unfortunately, Gideon had moved one step ahead as the first phase of Godfrey/HL, followed by Mohg, Lord of Blood. Two of my least favourite fights, but blasphemous blade prevailed.

    I was getting pretty tired of the rando at this point, but my patience was rewarded when Leonine Misbegotten of the Golden Order was followed not only by Elden Apostle, but also Elden Noble, resulting in a four-phase final boss fight culminating in the dramatic defeat of… Elden Snail.

  4. First Elden Ring randomiser attempt highlights so far:

    Started out with dual rot daggers, quickly found Ornamental straight swords, Millicent’s Prosthetic and consecutive attack tear for a no-brainer dex build

    Malenia, the Fell Omen. I’m good at the Malenia fight… in her arena, with a level 125 character. Stormveil is off-limits for most of the game, but it doesn’t prevent progress.

    First hard wall was Valiant Gargoyles, The First Elden Lord. Their poison clouds can almost fill the entire arena. Eventually got them with Death’s Poker and a +10 Mimic Tear, well-supplied with rotten meat dumplings for healing.

    Smooth sailing through the underground and mountaintops until Fire Giant turned out to be ice lightning dragonkin into Placidusax. Time for a break, I’ll figure out how to deal with them later. Maybe dig out the rot daggers again…

  5. Does anyone have any experience getting serial data out of the multimeter quarter of a PeakTech 4110? Tried flicking through all modes and functions both via a cheap RS232 to USB adapter, and monitoring pins with a logic analyser, but I don’t see anything happening.

  6. Finally got koreader and plato set up on my Kobo, and calibre set up for managing and converting ebooks. The default {author}/{title} file structure for moving ebooks to the reader doesn’t work at all for me, but fortunately(?) calibre supports no less than three different template languages allowing for very flexible ebook organisation schemes. These can be configured by opening the “Configure this Device” menu and editing the “Save Template” field.

    I ended up using this little script to organise books in a way which makes navigation easy for my collection:

    program:
    # If the book is in a series, make a folder for that series, and ensure books are in order
    # by prepending their series index to their file name.
    if (field('series')) then
      strcat(field('series'), '/', field('series_index'),  ' - ', field('title'))
    # Otherwise, if a book has tags, make a folder for the first tag and put it there.
    elif (list_count(field('tags'), ',') > 0) then
      strcat(sublist(field('tags'), 0, 1, ','), '/', field('title'))
    # Otherwise, simply place the book at the top level for easy access and future sorting.
    else
      field('title')
    fi
    

    A couple of books ended up in the wrong folders, presumably due to some error with tag ordering or metadata syncing, but it was quick to clear up manually in the filesystem.

  7. For anyone who wants to play current patch Hollow Knight enemy randomiser but is confused about where to find it and doesn’t want to wade through/sign up for discord: here is the google docs list of HK mods linked from discord. Enemy Randomizer [1.5 port] is the one you’re looking for

    If playing with item rando, I’d recommend NOT randomising boss geo or the coloseums, as both seem buggy and unreliable.

  8. The “every single tweet has a pop culture gif” era of science communication is a curse and my fervent desire for it to end is balanced only by horrified anticipation of what might replace it

  9. Not the most notable, but possibly my favourite 2022 sighting: a dancing caterpillar!

    Sadly, this isn’t an extremely rare musical species which will revolutionise animal rhythmic entrainment research! It’s a defensive behaviour triggered in this case by the fly which I was actually trying to photograph.

  10. 2022 Day 4 Highlights — was pretty tired at this point so just went for a short walk through the Laaer Wald. Not much of note, but I did finally get to see a bristly millipede

    Also found a buzzing spider and a weevil with an amusingly long nose

    That’s a total of 260 observations over the four days, of which 106 have already been IDed to species. I’ll wait a few days before posting my usual unique and notable species analysis, and will update it a few times as more observations get IDs.