# Notes for January 16-22

This is an abridged list of the non-work things I accomplished during the week.

### Monday, 2023-01-16

Martin Luther King Day in the US. Reasonably slow day, able to go out for lunch for a change.

• Tidied up office again before work.
• Realized my Intel KVM host was running out of disk space, moved inactive images to my NAS and bumped up priority for replacing/upgrading it.
• Investigated and filed #424.
• Walked 5Km uphill returning from lunch break.
• Listened to two more episodes of Oxide and Friends (yes, I have a very long backlog).
• Rewrote most of my RSS-to-Mastodon poster as a plain aiohttp script.
• Did some minor fixes to Piku HTTP header mappings.

### Tuesday, 2023-01-17

Spent most of the day trying to catch up with various things and poking at GitHub during breaks, then attending to some personal stuff.

• Fixed up some of my Azure boilerplate scripts to accommodate the newest fads.
• Reviewed some issues I filed, accepted a few pull requests on personal projects.
• Updated some of my cloud-init bootstrapping scripts, including the Piku ones.
• Started to put together a minimalist application metrics server.
• Spent a while doing some research.

### Wednesday, 2023-01-18

Pretty lousy day due to the .

• Paid bills.
• Spent 20m kicking off apt/dnf upgrades across a few machines.
• Stepped into the front-end cesspool, decided to do a “simple” modular dashboard with Preact and D3, ended up wasting far too much time, filing #236 and rebuilding the htm and preact bundle myself. Seriously, why is this ecosystem so broken?
• Decided to take a break away from computers and the news for the evening.

### Thursday, 2023-01-19

Woke up unusually early due to a commotion in the building, got an extra hour to read morning news (which was not an improvement).

• Set up the new Pythonista beta on my iPad Pro, since I’m planning to replace some of my shortcuts with it.
• Got an HDMI-to-CSI bridge in the post and set up a with a legacy PIKVM image over lunchtime–this way I can at least check my KVM host console. The Zero W, despite slow and not officially supported anymore, can run off a single unmodified USB cable for power, which is a big advantage.
• Ordered a second HDMI-to-CSI bridge from AliExpress (I will be repurposing another Zero W in a few months).
• Started sketching out a case for the above.
• Wrote a little backend for my Preact app.

### Friday, 2023-01-20

Some unexpected personal stuff to attend to. In between that and news of the Google layoffs, nothing much got done outside of work.

### Saturday, 2023-01-21

Pretty productive day, all things considered.

• Personal inbox zero (or close enough).
• Updated my CV and portfolio (you never know).
• Stumbled upon the zero to main() series of posts about bootstrapping an MCU, which made for quite nice reading.
• Did some vacuuming.
• Poked at a couple more 3D models in .
• Did a draft print of an enclosure for the PiKVM on the .
• Finally watched The Matrix Resurrections. Was most emphatically not impressed.
• Reviewed and polished some pending drafts.

### Sunday, 2023-01-22

Couch potato day.

• Tidied some storage boxes.
• Read a fair chunk of The Economist.
• Finished my long-term .
• Played around with the API a bit more.
• Cleaned up and published these notes.

# The Kingroon KP3S Pro

I guess it’s time for another hardware review. For my birthday late last year, I did something I never do: I pre-ordered an untested, unreviewed 3D printer–the .

My rationale at the time was roughly as follows:

• My was vastly improved by upgrading to Klipper, but I wanted a more modern printer that could print both faster and with a bit more quality(my lacks a heated bed and removable nozzles, among other niceties).
• A Voron would take up a lot more volume than I can currently spare, especially while building it (which might take a while). It would make for a great Summer project, but also an expensive one–and I can always wait until kits come down in price.
• The original KP3S is a very popular budget printer that has been modded in various ways, can already run Klipper and was lauded for its solid build quality.
• The new model matches the KP3S’ all-metal construction and adds linear rails for the X and Z axes, as well as getting rid of the external PSU.
• Also, the thing is tiny, especially when compared to a Voron. And, at least for now, space is at a premium in my office.

So for less than 200 Euro, I would be getting an all-metal printer with a build that is roughly comparable to the RatRig V-Minion (minus a premium extruder and hot-end) and that I could tweak a bit without much hassle.

I ordered one in October, and have been messing about with it since November alongside my :

## Component Quality and Pre-Order Blues

Assembling it was trivial, as was getting it to work with Octoprint. However, there were a few things that I found rather annoying.

For starters, the PSU fan makes a considerable amount of noise (which seems to be a common complaint) and is always on–so much so that I thought it was faulty, complained to Kingroon (to pretty much zero effect, I should add) and started researching replacements within an hour of assembling it:

I carefully dripped some WD40 into the fan, but it didn’t do much. Raising the printer on foam pads did a lot more for the noise than anything else.

Given that the stepper motors are almost completely silent, this is just a shame for Kingroon and feels like a missed opportunity for the sake of saving a few bucks on the PSU.

Another thing that many reviewers have pointed out is that the filament path is somewhat nonsensical, with the runout sensor bolted to the side of the printer (near the barcode on the X-axis) and a reverse Bowden tube (that doesn’t even attach properly) running from there to the extruder.

I decided to just skip it and set the filament spool above the printer, which is more manageable anyway–but I did cut a short length of teflon tube to guide the filament in at the top of the extruder.

### That Beta Feeling

Also, shortly after mine arriving, I found out that Kingroon was making available an Y-axis upgrade kit with dual linear rails. which was… annoying. Why didn’t they design the thing properly in the first place?

And, sure enough, before Christmas Eve, I found out that they were shipping an “S1 Pro” version with built-in rails, which was, well, even more annoying (and reminiscent of my plight with the ).

So I likely won’t play pre-order roulette again to sponsor beta products, at least not with Chinese manufacturers.

## Hardware and Firmware

But I did order the Y axis upgrade (as well as a 3D Touch probe and some spare heat blocks and nozzles), and I must grant that the printer is, indeed, quite nice to use in practice.

My machine is still running the stock firmware, but with a high flow nozzle (see below) and moderately tuned settings, it can already print way faster than the , and I can’t wait to see what I can do with Klipper.

The Y-axis parts arrived within a couple of weeks and were easy to install, but I should point out that the finish was a bit shoddy: The new Y-axis stopper is a full centimeter off, which means that I will have to design a spacer of some sort to be able to use the entire print bed.

As to firmware, even though it seems to be Marlin firmware with a custom UI, I can’t find an official Kingroon firmware source tree anywhere. There are a lot of non-pro KP3S modded GitHub repositories, though, and it is essentially the same printer, so I assume it should be easy to find something tweakable if I wanted to stay on Marlin firmware.

### Control Board and LCD

While trying to sort out my PSU fan I took a good look at the control board, which is using one of the cheap STM32 replacements (a GD32 family chip):

This used to be a problematic chipset a year or so ago from what I can see of the Klipper commit logs, but apparently not anymore.

From my research so far, the only thing that I might lose by upgrading to Klipper on this board is support for the onboard touchscreen (even though to be honest it has little to recommend it), but I’m investigating whether someone has written code for it yet (even if only as a passive display).

## Software and Print Profiles

I didn’t bother with anything on the shipped SD card, and just set up the printer directly in both and (using the original KP3S profile in the latter), both connected to Octoprint.

I’ve had zero issues other than the usual retraction tuning, and I also had to tweak my starting Gcode to do an initial filament purge along a different axis than the one on the because of the wonky Y-axis stopper.

Over the past few weeks, I have been progressively tweaking a set of print profiles for both precision printing and fast drafts without any fuss – I intend to experiment with a 0.2 nozzle soon, and it works very nicely with a 0.28 layer height for functional parts.

But print quality has, overall, been excellent with PLA, likely due to the sturdiness of the machine and the smoothness of the linear rails.

PETG is a bit all over the place at the moment because I haven’t tuned things properly, so I am still printing that material mostly on the , but I expect it to turn out at least as great on the Kingroon.

I did buy the with the intent of tweaking it (although I was certainly not expecting to replace the entire Y-axis…), but only minimally. So I already changed a few things:

My shipped with a textured glass bed. You’ll see YouTube reviews and some folk who got a flexible PEI sheet, but, again, I was not so lucky (there wasn’t even an option for one when I ordered).

One of the “catches” of the is that the 210x210mm bed size is atypical, so I decided to order two sheets of GR4/FR10 (i.e., garolite, which is essentially layered fiberglass) cut to size from an AliExpress vendor.

I went with 210x210x4mm to match the glass thickness, and ordered both green (flat) and black (slightly textured on one side) panels.

After a bit of experimentation I decided to stick with the black one for the moment, since (at least with PLA) initial layers stick very well and parts pop off cleanly as the bed cools.

I also got a 3D Touch probe, but haven’t yet set it up since I intend do do that when I install Klipper.

### Swapping the Nozzle and Heatbreak

Besides a set of cheap brass nozzles and replacement heatblocks, I also bought an all-metal heatbreak, since although I have no intention of printing ABS, I do have a lot of PETG filament, and some of it prints better in the 220-235oC range.

And since in I clogged the extruder with Sunlu matte white PLA (which I’ve named “the filament from hell”, since the thing is chalky and hellish to print), I decided to swap the whole thing–nozzle, heatbreak, etc.

The timing was good, since over the holiday break I had gotten a couple of 0.4 and 0.6 “high flow” CHT clone nozzles to test.

If you’re not familiar with these, what happened is that CHT patented a “high flow” design that forces the filament through three convergent openings in the nozzle to maximize the filament surface area that is in contact with hot metal by doing some sophisticated drilling.

But some clever Chinese folk realized they could achieve the same effect with a (apparently simpler and cheaper) copper insert instead, and are selling these at way cheaper prices:

So I bought both V8 and MK6 nozzles, since I am planning to upgrade my with a new extruder ASAP1. And the results on the KP3S have been very encouraging indeed (the video above was shot while printing with one).

### Extruder Maintenance and Heatbreak Swap

As to unclogging the extruder and exchanging the heatbreak, disassembling the toolhead is reasonably straightforward but somewhat annoying since Kingroon decided to use three different screw sizes.

But once you remove the metal cowl and another set of screws, the extruder mechanism mechanism is easy to clean, although a bit too plasticky for my liking:

I couldn’t easily get the heating element off the original heatblock, so I kept it and just replaced the heatbreak and nozzle–only to realize that once fully screwed in, the new heatbreak was offset a couple of tenths of millimeter from the cooler axis, which caused the ends of new filament to catch on it and jam.

So much for manufacturing tolerances, I guess.

I fixed that by filing the heatbreak inlet–I inserted it into an electric drill, took a conical file and slowly widened the hole a little, creating a smoother gradient:

Now the filament doesn’t jam and goes directly through.

## Likes and Dislikes

It’s been three months of use and several functional parts printed, so I think I now have a well-rounded opinion of the .

### Things I like

• Very nice print quality (almost no ringing, even at the speeds I’m pushing it to).
• Has become my go-to printer for both quick drafts and final, quality prints.
• The metal build, even considering it is a cantilever, is very sturdy.
• I love the silent stepper motors.
• The bed is easy to level manually (it’s rather small, so there’s very little in the way of warping).
• Relatively easy to disassemble and maintain, at least so far.
• Quality of life improvements compared to my : compactness, all-metal frame, heated bed, swappable nozzles.
• Plenty of potential to tweak it to print even better and faster.

### Things I dislike

• No Open Source firmware tree I can find. Seriously, people, is it that hard?
• Lack of attention to detail (power cord on the side, filament sensor placement, Z axis stopper screw design, wonky LCD UX, multiple screw sizes for any kind of maintenance).
• Kingroon really ought to have stabilized the design before shipping, I feel like I got an early prototype (even if it is a decent one).
• That noisy PSU fan. It’s either a QA issue or just a very poor component sourcing decision.
• The build quality, despite sturdy, could be better (the bed is very slightly misaligned along the Y axis, and the linear rails upgrade didn’t help much, although it was an opportunity to realign the Y extrusions a bit).
• The bed springs are a bit meh, and the adjustment wheels can be fiddly (perhaps that’s because the springs could be better).
• The extruder feels cheap.

So, would I buy one again?

Almost certainly yes, but only three to six months after it shipped, to avoid BOM reshuffles and make sure I didn’t have to compensate for a wonky product lifecycle.

And still, for the price, I don’t think I can complain–and I have to wonder if they could pull off a compact CoreXY machine with a similar sturdiness2.

## Next Steps: Klipper Prep Work

Like I said above, I haven’t set up Klipper on it yet, but it will likely happen soon (probably during Carnival or Easter breaks, since I like to take my time for doing all the tuning involved).

In the meantime, and since I don’t really expect to be able to make use of the built-in LCD, I picked up a couple of cheap TFT touchscreen-and-box combos that actually have decent Open Source drivers (always a good thing to check first if you intend to have something that lasts3) and installed KlipperScreen on both:

The screen won’t win any awards for responsiveness, but then again neither would the built-in Kingroon one, and these things aren’t high precision, low latency devices like a phone. It’s… fine.

I have been using one on my for a couple of months since I might as well run both printers the same way, and have the other ready for when I decide to tackle the upgrade.

## Conclusion

The , even in the somewhat unfinished shape mine turned out to be, makes for a nice, compact and fast printer that works fine out of the box even without any modifications.

I don’t know if I would recommend it to someone as a first printer given all the above, but I can understand why some people would given the print quality I’ve gotten out of it in the meantime.

But as a (relatively) no fuss hardware platform and a testbed for unambitious mods, I think it is a pretty good deal–as long as you make sure to get the updated version, and assuming Kingroon makes some improvements on component sourcing (shipping a properly silent PSU, for starters).

1. I actually ordered a new extruder for the from E3D for Christmas, but the Royal Mail strike caused it to be lost in transit, so I am trying to get a replacement as soon as I can get the shipment acknowledged as lost. ↩︎

2. I would love to try out a CoreXY machine that can fit into a square that is roughly 45cm on a side, since that is roughly the space my currently occupies (and the depth of the furniture it rests on). ↩︎

3. I also snapshotted the repository to my , just in case. ↩︎

# Notes for January 09-15

This is an abridged list of the non-work things I accomplished during this week.

### Monday, 2023-01-09

Not a very quiet Monday, honestly, but had a slow start.

• Tidied office again after the weekend.
• Dealt with customs to pay taxes for and release a stray package that I had lost track of (thank you Brexit!).
• Fiddled with Azure Functions a bit more, partly for work. Wrote about that.
• Changed batteries on a couple of Aqara Zigbee sensors, tried to figure out why zigbee2mqtt keeps dropping another set.
• Investigated adding an ADXL345 accelerometer to Klipper using a tiny 2040. Sketched out a very rough 3D model for a mounting bracket to attach it to printer beds and toolheads.

### Tuesday, 2023-01-10

Busy day. Didn’t have time to do much but solving problems.

• Wasted nearly an hour investigating why my MacBook Pro suddenly refused to connect to my LG Ultrawide when my iPad Pro and Thinkpad worked fine, eventually realized it was due to the new cable I had bought to test .
• Revisited a Raft protocol implementation in Thespian I had done some 6 years ago.
• Wrote a new version of my EXIF/HEIC photo filing script and ran some tests.
• Noticed and filed #388.

### Wednesday, 2023-01-11

Lots of focus time, plus a brief outing.

• Noticed and filed #393 in Takahē.
• Marathon session of Oxide and Friends during chores and inbox zero time (best geek “talk radio” on the planet).
• Wrote some as exercise (trying to set a new habit). Investigated cross-compiling, looked at resulting binary with arm-elf-objdump.
• Resumed modeling a replacement bottom inset for the Vodafone/Sagem ONT I have been meaning to mount into my network closet for months now.

### Thursday, 2023-01-12

Pretty fragmented day, but lots of 15-minute tasks done.

• Set up Sendgrid so that my test Takahē instance can send password recovery e-mails and invited a few friends to test it.
• Noticed and filed #400 in Takahē.
• Closed my Google Cloud billing account.
• Upgraded my PaaS VM so that it can be scaled up to support more applications with modern nodejs.
• Did a partial print of the router bottom inset piece and tuned retraction and support interface on the .
• Investigated using cgroup-opt in uwsgi for partitioning workloads in Piku. Stumbled upon #2504 and #2180 in various ways before realizing uwsgi just doesn’t work well with cgroups v2.

### Friday, 2023-01-13

A late afternoon outing to run various errands after work and minor indisposition, so not much free time altogether.

• Futzed about with various cgroup management options, none of which I was happy with.
• Wrote a little more for practice.
• Did another test print of router bottom inset using Voronoi lattices to save on material and print time. Still needs some fine tuning.

### Saturday, 2023-01-14

Spent the day focusing on personal stuff.

• Inbox zero. Tried to follow up on lost RoyalMail package and a pending AliExpress parts order.
• Sorted out personal calendar for the next week.
• Tweaked my EXIF filing script to handle .cr2 and .dng files.
• Finally triaged and organized all of my photos from 2021 and 2022.
• Wrote up on batch photo handling.
• Tried on my to check out Proton 7.0.

### Sunday, 2023-01-15

Slept well, for a change. Completely forgot it was until I posted these.

• Did some minor site cleanups.
• Re-tagged some old music files with .
• Renewed some of my domains into 2027.
• Added another domain to my instance for testing.
• Deployed an Odoo instance in Piku to see how viable it would be to bootstrap a small business, found it was still too nerfed for my liking.
• Looked into job market data from various sources.
• Spent a little while belatedly dabbling with synthesizers.
• Built a draft flow to post RSS items to Mastodon.
• Collated and posted these notes.

# Renaming and Filing Photos and Videos in the HEIC/HEIF era

Maintaining a coherent photo archive has been an issue for me ever since I started using a digital camera, and I’ve been hacking scripts for making sure things are consistent , which, if you’ve been using Macs long enough, was a full four years before supported .

# Serving a small static Site from Azure Functions

This is something I keep reinventing from scratch, and that I thought was worthy of posting a note about given that the Functions runtime is now in v4 and function proxies are deprecated (even though you can enable them again).

# Notes for January 02-08

This is an abridged list of the non-work things I accomplished during the week.

### Monday, 2023-01-02

US Holiday break, so very slow day.

• Cleaned up office, desk and shelves.
• Sorted through my lingering hardware project boxes and prioritized what needs to be redesigned/soldered in the coming weeks.
• Upgraded on my and set up a dedicated repository for macros.
• Built a little toy project.

### Tuesday, 2023-01-03

Spent a part of the morning running various errands, and later:

• Mounted a new G10/FR4/fiberglass build plate on my . Also tightened down the Z-axis on the and re-aligned it.
• Drafted a list to RSS flow and set it up in staging to share with friends.
• Printed a Gridfinity MK8/V6 printer nozzle box in Sunlu PETG on my .
• Upgraded the house zigbee2mqtt instance to 1.29.0, which regretfully is still buggy where it regards letting random devices drop off the network.
• Tried Logseq and didn’t like the fact that it cannot cope with iOS filesystem providers and seems to be headed down the proprietary/paid syncing service route.
• Hacked a minimal ag replacement for a-Shell:
#!/bin/sh
# Drop this into ~/Documents/bin and chmod +x it
if [ $# -ne 0 ]; then find . -type f -exec grep -in "$1" {} \; -print
else
echo "usage: ag <string>"
fi


### Wednesday, 2023-01-04

Brief outing to pick up a repaired Intel MacBook.

• Completed one Oxide and Friends podcast episode during outing.
• Set up MacBook admin account and before handing it over.
• Added reblogged media to Mastodon list feed generator and deployed it in production behind the new piku cache feature that I added over holiday break.
• Printed two better nozzle boxes in Red PLA on the .
• Tried to figure out Azure Functions output bindings in the new v2 progamming model–there is still no sample code for queue, blob and table bindings, and those are critical for my use case.
• Tried to tune Sunlu PETG on the
• Backed up settings to .
• Backed up Klipper settings to Azure.

### Thursday, 2023-01-05

More errands, some music stuff in the evening.

• Completed another Oxide and Friends podcast episode.
• Tested disassembled MacBook 12 “adorable” logic board (not working again, looks like bad connector). Ordered a new USB connector from eBay.
• Upgraded my Headless firmware to 2.7.8 (using Windows, because UART support is broken on Chromium). Wrote little ditty on it over lunch.
• Fixed start G-code in .
• Repackaged sunvox for the Pi 4 and contributed patch upstream.
• Finally printed a useful piece with Sunlu PETG on the .
• Began designing a Gridfinity 4mm hex bit holder in .
• Bought SAGA Synth and noodled with it.
• Updated my Bitwig install to 4.4.6.

### Friday, 2023-01-06

Vodafone turned a scheduled intervention during the wee hours of Friday into a several hour long fiber outage, which in turn nearly turned this into a fully offline day. Fortunately, I quite like working on the corporate remote desktop from my iPad, and have friends in networked places.

• Updated my .
• Tried Sunlu matte white PLA (which I term “the PLA from hell” since it prints badly and is so chalky it clogs my machines). Promptly clogged the extruder and decided to disassemble the whole thing over lunch.
• Changed nozzle to a Chinese CHT clone.
• Removed PTFE-lined heat-break and swapped it with an all-metal one.
• Successful “faster” 0.2mm layer height print on with CHT clone nozzle, red PLA (still with Marlin firmware).
• Draft printed a cross-section of the 4mm hex bit box for test fitting. Cleaned up file and adjusted tolerances.
• Got Sunlu matte white PLA from hell to print on .
• Found long-missing alcohol spritzer, wiped down a new, textured, black G10/FR4 build plate and replaced the green one on the .

### Saturday, 2023-01-07

Weekly outing for shopping. Still managed to get some stuff done:

• Added preliminary Markdown support to blog table renderer.
• Updated site builder dependencies, regression tested.
• Asked E3D about an order and why Royal Mail still shows it as uncollected. Apparently Royal Mail cannot do its one job, even after strikes ceased.
• Enabled Redis caching on test instance, updated post.
• Futzed a bit more with the dash shell inside a-Shell.
• Tidied up piku issues and PRs a bit.
• Tried to get a test project going on arm64.

### Sunday, 2023-01-08

A quiet day spent reading most of this week’s edition of The Economist, having a family lunch and other stuff:

• Printed a few adaptors on at 0.1mm layer height.
• Tested new backup Huawei LTE router with Vodafone SIM, got 70Mbps downstream indoors (which is OK if another fiber outage happens), tested manual failover from fiber to it.
• Printed hex bit holder with Sunlu matte white PLA from hell on Prusa (twice, at at 0.4 and 0.3mm layer height, because 0.4 had bad layer adhesion).
• Removed akkoma LXC from , started setting up new test environments for piku.
• Hacked together a small .stl viewer with ThreeJS.
• Wrote and sanitized these notes.

I spent the night from December 30th to December 31st in hospital, most of New Year’s dozing and reading, and the past few days gradually recovering–although slowly and somewhat grumpily.

# How I Use Mastodon

It’s the quiet week before New Year’s, so I thought it worthwhile to tag some loose notes together and take a snapshot of what I’m doing with and how it differs from . Everyone else seems to be doing it, so why not?

# Predictions for 2023

I haven’t done one of these in a long time, but I think it’s warranted, even if these are going to be rather terse:

# 2022 in Review

I’m not going to mince words here: it sucked. There were some redeeming aspects to it, though, and I think it’s worthwhile picking up from and highlighting the differences.

# My Year Of The Linux Desktop

Strangely enough for a Mac/iOS user, I have spent a lot of time using Linux throughout the years, but mostly on servers. Since last year, however, I have started to hedge my bets on what desktop OS I will be using for the next twenty years or so.

# TIL - X11 forwarding in WSLg

Apropos nothing, I was struggling with forwarding an X11 Linux application (, if you must know) to my Windows 11 22H2 desktop, which includes WSLg, the baked in display and audio server, and wasn’t getting anywhere because:

• WSL2 runs inside a Hyper-V environment, so you are effectively behind outbound NAT.
• Every single piece of wisdom on the Internet about this focuses on installing third-party X server software (which I don’t want to do).
• Fedora, for some reason, breaks ssh -X, xauth and setting DISPLAY manually (I still haven’t figured out why).

## What worked

In a nutshell, I had to use an Ubuntu machine, and just doing ssh -X [email protected] worked fine. I will update this post when I figure out why it failed on Fedora.

But there is a technique I’m intrigued about, and that I was trying on the Fedora machine before trying another one: forwarding the remote X11 TCP socket to the local domain socket, something I had forgotten was possible, and which really should have worked:

# OpenSCAD complains bitterly without this
export LIBGL_ALWAYS_INDIRECT=1
ssh -R 6020:/tmp/.X11-unix/X0 [email protected]
# on the remote machine
export DISPLAY=:20


Again this should have worked in Fedora (which was complaining about auth errors with plain ssh -X or -Y), but didn’t. However, it worked first time on Ubuntu, and is a nice technique to have on hand if, for some reason, xauth fails and you don’t want to mess about with such arcane things as MIT-MAGIC-COOKIE-1.

And then I decided to try ssh -X again and lo, it worked on Ubuntu but not in Fedora. Personally, I suspect GNOME, or the tricks modern session managers use to coexist with Wayland. Sigh.

Still, it’s nice to know the WSLg team went to so much trouble to make X11 work seamlessly on the Windows side.

Next I needed to get X11 apps to render in HIDPI without looking like they were designed for ants.

## Forcing Scaling

Setting these on the remote machine worked for me on my :

# for Qt apps like OpenSCAD
export QT_AUTO_SCREEN_SET_FACTOR=0
export QT_SCALE_FACTOR=1.3
export QT_FONT_DPI=96
# GTK, because I also needed the STL viewer to work
export GDK_SCALE=2
export GDK_DPI_SCALE=0.5
# gsettings set org.gnome.desktop.interface text-scaling-factor 2.0 # use sparingly, because it's persistent.


Also, microsoft-edge on Linux honors --force-device-scale-factor, so I could also use 1.3 to get a decent experience.

# Getting Takahē to run on Piku

Last night after work I decided to see how easy it would be to run a Takahē instance under Piku, my tiny -oriented PaaS.