2025-10-18.log

+ paperManu_ (~paperManu@198.58.139.163)00:11
- kensanata (QUIT: Quit: Ping timeout (120 seconds)) (~alex@user/kensanata)00:26
+ kensanata (~alex@user/kensanata)00:27
- kensanata (QUIT: Ping timeout: 248 seconds) (~alex@user/kensanata)00:40
+ kensanata (~alex@user/kensanata)00:43
bremnerminute: as promised, a writeup of what changed with SR's new patch for hibernation: https://www.cs.unb.ca/~bremner/blog/posts/hibernate-pocket-13/00:56
bremnerI don't really know who to bug about the PCI reset series not applying anymore. I guess I should see if it applies on a tagged upstream version.00:58
- kensanata (QUIT: Ping timeout: 244 seconds) (~alex@user/kensanata)00:59
+ kensanata (~alex@user/kensanata)01:02
minutebremner: you could write to sebastian.reichel at collabora.com01:07
minutebremner: after all he already read your blog posts01:08
bremnerminute: ack. I just wanted to see where the conflicts are happening, but it does seem to be with the active work at collabora more than what is in released linux01:14
bremnerbut the patch series is by someone else, so...01:14
elbtuigreet also doesn't start a full session01:14
- kensanata (QUIT: Ping timeout: 248 seconds) (~alex@user/kensanata)01:14
elbI'm going to have to learn more about how modern ridiculously overcomplicated desktop environments work than I had wanted to01:14
+ kensanata (~alex@user/kensanata)01:21
- kensanata (QUIT: Ping timeout: 256 seconds) (~alex@user/kensanata)01:30
elbjosch: it's not just gdm that won't run with the bad firmware-misc-nonfree, gnome-session also fails01:31
+ kensanata (~alex@user/kensanata)01:32
- kensanata (QUIT: Ping timeout: 260 seconds) (~alex@user/kensanata)01:37
+ kensanata (~alex@user/kensanata)01:39
elbok I dunno if I have all the stuff a fancy session wants, but i have ssh-agent, so I'm happy ;-)01:43
- kensanata (QUIT: Ping timeout: 260 seconds) (~alex@user/kensanata)01:45
+ kensanata (~alex@user/kensanata)01:47
joschif i didn't mess up, this pipeline will produce fixed firmware-misc-nonfree packages: https://source.mnt.re/josch/reform-debian-packages/-/pipelines/488501:57
joschIt's too late over here to wait for the pipeline to finish and test. I'll do that tomorrow but maybe somebody in a different timezone feels motivated to do this before I get to do it in about 8 hours. :)01:57
- kensanata (QUIT: Ping timeout: 244 seconds) (~alex@user/kensanata)02:00
minutejosch: uff! what was the bug?02:00
+ kensanata (~alex@user/kensanata)02:01
minutebremner: btw did you try removing that cqe flag from emmc node in dts?02:02
minuteanyways, really really need to slee02:02
minutesleep02:02
minute(sent from my MNT Reform Next)02:02
minutenighty night02:02
- kensanata (QUIT: Quit: Ping timeout (120 seconds)) (~alex@user/kensanata)02:21
+ kensanata (~alex@user/kensanata)02:21
- kensanata (QUIT: Client Quit) (~alex@user/kensanata)02:25
+ kensanata (~alex@user/kensanata)02:25
- kensanata (QUIT: Quit: Ping timeout (120 seconds)) (~alex@user/kensanata)02:34
+ kensanata (~alex@user/kensanata)02:34
- kensanata (QUIT: Ping timeout: 246 seconds) (~alex@user/kensanata)02:41
+ kensanata (~alex@user/kensanata)02:46
- kensanata (QUIT: Ping timeout: 248 seconds) (~alex@user/kensanata)03:08
+ kensanata (~alex@user/kensanata)03:11
- kensanata (QUIT: Client Quit) (~alex@user/kensanata)03:15
+ kensanata (~alex@user/kensanata)03:15
- kensanata (QUIT: Ping timeout: 246 seconds) (~alex@user/kensanata)03:20
+ kensanata (~alex@user/kensanata)03:20
- kensanata (QUIT: Ping timeout: 256 seconds) (~alex@user/kensanata)03:36
- paperManu_ (QUIT: Quit: WeeChat 4.7.1) (~paperManu@198.58.139.163)03:37
- paperManu (QUIT: Ping timeout: 248 seconds) (~paperManu@198.58.139.163)03:40
+ paperManu (~paperManu@198.58.139.163)03:43
+ kensanata (~alex@user/kensanata)03:48
- kensanata (QUIT: Ping timeout: 246 seconds) (~alex@user/kensanata)03:53
+ kensanata (~alex@user/kensanata)03:54
- kensanata (QUIT: Ping timeout: 248 seconds) (~alex@user/kensanata)03:58
+ kensanata (~alex@user/kensanata)03:59
- kensanata (QUIT: Client Quit) (~alex@user/kensanata)04:04
+ kensanata (~alex@user/kensanata)04:04
- kensanata (QUIT: Ping timeout: 244 seconds) (~alex@user/kensanata)04:09
+ kensanata (~alex@user/kensanata)04:10
- kensanata (QUIT: Ping timeout: 260 seconds) (~alex@user/kensanata)04:15
+ kensanata (~alex@user/kensanata)04:22
- paperManu (QUIT: Ping timeout: 246 seconds) (~paperManu@198.58.139.163)04:29
- kensanata (QUIT: Ping timeout: 248 seconds) (~alex@user/kensanata)04:48
+ kensanata (~alex@user/kensanata)04:49
- kensanata (QUIT: Quit: Ping timeout (120 seconds)) (~alex@user/kensanata)04:56
+ kensanata (~alex@user/kensanata)04:56
+ sevarat (~sevarat@2601:647:6511:f9b0:2354:2d68:5792:891c)05:21
- kensanata (QUIT: Quit: Ping timeout (120 seconds)) (~alex@user/kensanata)05:24
+ kensanata (~alex@user/kensanata)05:24
- sevarat (QUIT: Quit: nyaa~) (~sevarat@2601:647:6511:f9b0:2354:2d68:5792:891c)05:26
+ sevarat (~sevarat@2601:647:6511:f9b0:2354:2d68:5792:891c)05:30
- mjw (QUIT: Ping timeout: 264 seconds) (~mjw@gnu.wildebeest.org)05:30
- kensanata (QUIT: Ping timeout: 256 seconds) (~alex@user/kensanata)05:36
+ kensanata (~alex@user/kensanata)05:37
- kensanata (QUIT: Ping timeout: 240 seconds) (~alex@user/kensanata)05:55
+ kensanata (~alex@user/kensanata)05:59
joschoh, of course qcacld fails.. XD08:22
+ rwa_ (~rene@2001:9e8:33b8:6300:ac4d:8aa0:b7ef:664a)08:30
- rwa_ (QUIT: Remote host closed the connection) (~rene@2001:9e8:33b8:6300:ac4d:8aa0:b7ef:664a)09:11
+ pomel0 (~pomel0@user/pomel0)09:16
- pomel0 (QUIT: Remote host closed the connection) (~pomel0@user/pomel0)09:24
+ gustav25 (~gustav@c-78-82-53-102.bbcust.telenor.se)10:02
- wakest (QUIT: Remote host closed the connection) (m-a7d6fe@45.77.48.108)10:51
f_Is Reform Next available for purchase btw?11:13
joschf_: it's available for pre-order at crowdsupply: https://www.crowdsupply.com/mnt/mnt-reform-next11:17
joschminute: could you please merge this: https://source.mnt.re/reform/qcacld2/-/merge_requests/1311:18
f_okay cool!11:18
f_compatible with every MNT Reform CPU module I suppose?11:18
joschf_: theoretically, probably yes but so far we only have the dtb for rk358811:19
joschf_: in practice, there are probably issues with SoMs like ls1028a which need an eDP adapter for the display, for example11:24
f_> Dual screen (tested with 1440P, 120 Hz display)11:28
f_\o/ so there's a non-zero chance of me being able to use my ultrawide screen at its max resolution of 3440x1440@165Hz :D11:29
f_I wasn't sure whenever it could output 1440p 165Hz .. my laptop can output 1080p 165Hz but can't do 3440x1440 165Hz11:29
f_josch: ok. rk3588 is what I will probably go with11:31
f_so that's good11:31
joschgo for rk3588 -- it's *really* good :)11:32
joschi'm only still sticking with a311d because i don't like change XD11:32
joschbut at some point the performance of firefox/chromium on that cpu will make me switch :D11:33
f_josch: performance isn't really an issue heh11:34
f_actually I have an S905D3 which handles firefox just fine11:35
joschoh a311d also handles firefox just fine11:35
f_and youtube tv (it's a webapp) and stuff11:35
joschthe problem is not firefox but websites with too much javascript11:35
f_youtube tv is a huge blob of javascripting11:35
f_but yes this is an issue here too11:36
joschdid you try gitlab or twitch? :)11:36
f_twitch no, gitlab I use it everyday11:36
f_laptop barely handles it11:36
f_inside tor browser it works .. ish11:36
joschanother issue is only having 3.6 gb ram which means that the memory used by firefox is constantly getting swapped out when i do actual work and needs to be loaded back in when i switch back to my firefox workspace and that is sloooow11:37
f_aahh11:37
f_even 8 GB isn't enough these days11:37
f_(laptop has 8 GB of RAM, upgradable up to 32 GB of RAM .. but I didn't really feel the need to upgrade it)11:38
joschi don't need much. Before i switched to the reform my intel laptop had a slower processor and less ram than rk3588. So rk3588 is actually overkill for me. XD11:41
f_Kinda overkill for me too lol11:44
f_but it's the one that lets me use 2 displays with one of them maxed out at 1440p@165Hz :p11:44
f_Has anyone tried to compile a whole linux kernel on it btw?11:45
joschmultiple times on all mnt SoMs, yes11:45
f_On my laptop, compiling the linux-postmarketos-amlogic kernel takes ~4 hours11:45
joschit heavily depends on the kernel config11:45
f_(kernel package in postmarketOS with amlogic kernel config)11:45
joscha minimal config created with localmodconfig takes 15 minutes11:46
joscha full debian kernel takes 1:15 hours11:46
f_and an allyesconfig?11:46
f_oh, not bad at all11:46
joschi didn't try allyesconfig but i can give it a go if you're interested :)11:46
minutejosch: i'll do MR, CI etc after coffee!11:53
minutebtw i just turned on my pocket and my next and the next arrives at desktop much faster11:54
minutemy pocket has experimental plymouth still, need to turn it off to see what's going on maybe11:54
joschminute: cool, no rush -- i'm using my own brances on gitlab in the meantime. I'm currently waiting for the next pipeline results to build and test new system images.11:55
minuteafter entering decryption passphrase, there is a long delay before it arrives at gdm. on next, there's no delay _but_ it also doesn't use an encrypted ssd at the moment (uses emmc)11:55
* buckket1 -> buckket12:05
joschthank you for merging qcacld2!1312:07
- buckket (QUIT: Quit: buckket) (~buckket@vps.buckket.org)12:08
joschfixing that driver is not much fun... took me 3 hours doing that today which is the same time that i spent yesterday to do something actually productive: fixing the firmware-nonfree issue...12:09
+ buckket (~buckket@vps.buckket.org)12:09
minutejosch: oh noo :/ i'm so sorry12:12
joschnot your fault -- it's the the result of vendors not upstreaming their drivers :(12:15
joschi'm just surprised i didn't break the thing yet because i cannot test anything12:16
joschbut i heard grimmware is working on changing that and increasing my motivation for qcacld2 :P12:16
grimmwareI have an anti static bag, some padding and a box, I just need to remember to send it:)12:23
minuteelb: josch: CI runner assigned to https://source.mnt.re/elb/pocket-reform12:24
- sevarat (QUIT: Ping timeout: 248 seconds) (~sevarat@2601:647:6511:f9b0:2354:2d68:5792:891c)12:30
joschoh great, the emmc problems on ls1028a are back... https://mister-muffin.de/p/Fo4A.txt12:46
minutejosch: ugh, that looks annoying12:55
joschroot@reform:~# cat /proc/device-tree/model 13:03
joschMNT Reform 2 with LS1028A Module13:03
joschLinux reform 6.17.2-mnt-reform-arm64 #1 SMP PREEMPT Debian 6.17.2-1~exp1+reform20251015T205418Z (2025 aarch64 GNU/Linux13:03
joschreform-setup-wizard also started successfully (just heard the screen reader voice)13:04
joschso the problem might be a very funny one13:04
joschthe kernel which currently booted just fine on LS1028A was built from the *exact same sources* locally on my a311d13:04
joschthe kernel that does not work with above output on dmesg was built my MNT gitlab CI13:04
joschmaybe this problem is a random one13:04
joschor maybe it's a problem which is related to what is installed in the build environment13:05
minutehuh13:05
minutecould also be a driver module loading timing thing13:06
minuteremember how usb3 on ls1028a only works if kernel/dmesg logging is active ;D13:06
joschwhat i don't *want* to remember?? XD13:11
joschi'll put this aside for now -- futer me has the irc history to pick this up again13:12
joschrk3588 is a bit more funny :)13:13
joschand it works out-of-the-box13:17
joschhats off to collabora13:17
joschmy firmware-misc-nonfree fix also works13:17
joschi'll cherry-pick that one into reform-debian-packages main until it gets fixed in Debian13:17
minutenice13:17
minuteah btw still curious what caused the breakage in firmware-misc-nonfree13:18
minutei'm currently building box64/32 (not 86) on next13:18
joschminute: the version of box64 is debian is too old?13:18
minutejosch: don't know, i just wanna try the latest git stuff13:19
minutejosch: does the debian build build box32?13:19
minutebecause it's still experimental according to the build options13:19
minute(so i didn't expect it to be there)13:19
joschups, yes it builds it but i forgot to add the file into the binary packages XD13:21
minutealso i'm testing latest reform next build at home with various things to see how it behaves :D13:21
josch0.3.8 got released 5 days ago, let me do another upload13:24
minutenow installing steam using the script included with box6413:24
joschtell me if that script works, then i can stuff it into the Debian package13:27
minutewow, steam just works13:27
minutejosch: yes, the script works13:28
minutethis is astounding, steam just works and it works without armhf arch13:28
grimmwarewait what13:29
josch\o/13:29
grimmwarebtw my CI runner for reform-debian-packages times out before it can get to the reprepo stage due to the intel builds which I don't need - is there a way to disable this?13:31
joschgrimmware: two options: edit .gitlab-ci.yml or ask minute to enable the runner13:32
grimmwarewell I don't know how the fuck I missed that last time I looked13:34
gordon2wat13:35
minuteso far steam runs very well, even the desktop notifications incl sound13:36
gordon2i managed to make steamcmd work but that required some trickery with box6413:36
minuteand i updated my profile inside of it13:36
gordon2maybe it's gentoo thing13:36
minutei did zero trickery!13:36
minuteexcept enabling box32 in box64 build13:36
gordon2oh that didn't work for me at all, it wasn't able to run any 32-bit stuff13:37
gordon2interesting13:37
minutei think they fixed it quite recently... when did you build it?13:37
minutebtw i'm also on gnome13:37
gordon2overall i had very bad experience with box64, wonder what am i doing wrong13:37
gordon2except using gentoo ofc13:37
minutei remember sway was more troubling because steam doesn't expect tiled window manager perhaps13:37
gordon2i built it a while ago, let me check13:38
minutegordon2: weird. box64 worked quite well for me for lots of things13:38
minutehaha but axiom verge doesn't launch, at least not in vulkan mode13:38
gordon2and it does not work in wine for me at all13:38
gordon2yeah, it was in august i last compiled it13:38
gordon2maybe need to try again13:39
minuteoh but it launches in opengl mode13:39
gordon2oh, i use that thing for it13:39
gordon2one sec13:39
gordon2the thing that translates opengl to es or something13:40
joschminute: you were wondering above about firmware-misc-nonfree. The problem was, that the package included a broken symlink for the mali_csffw.bin firmware blob. It should be fixed by this change: https://salsa.debian.org/kernel-team/firmware-nonfree/-/merge_requests/13213:41
grimmwareI love using steam on my pocket. Absolutely marvelling at playing amd64 Quadrilateral Cowboy on my arm64 open source linux machine without skipping a beat is incredible13:43
gordon2minute: gl4es 13:43
grimmware18 year old me would lose his tiny mind13:43
gordon2here we go, that took me a while13:43
gordon2https://ptitseb.github.io/gl4es/13:43
minutegordon2: gl4es is not needed on rk3588 i think... what was your usecase again?13:44
gordon2... i don't quite remember, i think it just was suggested by box64 ebuild13:44
minutegrimmware: yeah i also feel kind of vindicated r/n because gaming is an integral part of computering for me / how i grew up with c64, amiga etc13:45
gordon2tbh i think it was that nothing worked and i was desperate to try anything13:45
gordon2duskers still refuse to run :(13:45
minutegrimmware: ah you're using steam for longer on pocket already? :3 with full UI?13:45
gordon2with new box6413:45
minuteaw. is that a game?13:46
gordon2yep https://www.gog.com/en/game/duskers , native linux13:46
gordon2but x86_64 ofc13:46
grimmwareminute: yeah, I fucked around with it a whole bunch installing armhf libraries and stuff a while ago and got kinda close and then at some point in the intervening time (probably a package upgrade) it just started working13:46
grimmwareI did have some problems with the mouse on fullscreen games for a bit but that turned out to be a bug in niri which was fixed in main by the time I thought to look13:47
gordon2ACTION meanwhile is trying few more trackball cup designs13:47
grimmwareniri is fantastic by the way, it matches the pocket reform so well13:47
minutegrimmware: ah nice, need to look into it and find a way to configure it with the same shortcuts etc13:48
minutebut first, more battery system fixes...13:49
grimmware<3 battery system fixes are top of my wishlist13:49
grimmwarethe movement on that front has really enthused me about using my pocket again13:50
minutegrimmware: on my test with charging board v2 with fresh cells i didn't have any more reboot issuse13:50
minutegrimmware: would you like to betatest one? (charging board v2 that is)13:50
grimmwareminute: I would absolutely love to betatest one13:51
minuteok cool, gonna put that in my todo for monday13:51
grimmwareexcellent :)13:51
minutegrimmware: can you DM me your shipping address or previous MNT shop order number, then it'll be easiest for me13:52
grimmwareyeah lemme dig out a shop order number13:54
+ paperManu (~paperManu@198.58.139.163)14:01
joschthe pocket reboot issues are really funky. The last reboot I had was with old firmware on battery while watching a video. Since then: nothing. It had a week uptime (on power) and recorded 1.5 hours of video without problems. So the reboots are really seldom for me for some reason. Maybe my cells being different has to do something with it?14:05
grimmwareI can see that. It occurred to me that mine may be so consistent and problematic because of my extra i2c peripherals drawing that extra bit of power14:07
grimmwareI think spiking load average is a huge factor14:08
grimmwareI would imagine that if my pocket could make it past boot it would actually be able to run fine until I do something like launch a browser14:08
grimmware(when it's in the undervoltage state that is)14:09
grimmwarealso I've ridden this thing *hard* since it turned up, and I got mine pretty early on14:09
+ paperManu_ (~paperManu@198.58.139.163)14:13
joschspeaking of riding things hard, i need tips for how to take care of copper surfaces14:16
joschpure copper heatsinks look awesome when new14:17
joschbut after some time: https://mister-muffin.de/p/VXw8.jpg14:17
joschi wonder if there are easy ways to protect the surface without compromising on the heat-transfer properties14:17
grimmwareoh gosh is that actually oxidizing?14:18
minutejosch: for me the reboots are gone now14:18
minutejosch: omg grünspan14:18
grimmwareI kinda love the tarnished look on the pocket's logo but I will agree that is a bit extra14:19
josch:D14:19
minutejosch: we should send you the updated heatsink in any case14:25
joschoh? why?14:25
minutejosch: it's a bit thinner, less warp14:30
joschi read about the warping from others but i somehow haven't seen this issue here so far -- i don't know what's different14:31
minutejosch: yeah it's maybe differences in case parts that play into it also14:32
joschmaybe -- but in any case, i'm happy with the heatsink and...14:32
joschi actually think the one with the fins looks a bit cooler XD14:32
joschf_: i'm currently timing a "allyesconfig" on rk3588 for you -- temperatures stay below 74 °C, so no throttling of the cpu due to overheating14:33
joschi have the acrylic back open to help with the temperatures14:34
joschbuilding firmware-nonfree increases the time that reform-debian-package pipeline takes from 40 minutes to over 1 hour. It also increases the artifact size by 400 MiB.14:43
joscha fived version of firmware-misc-nonfree is now in the MNT repos: https://mntre.com/reform-debian-repo/pool/main/f/firmware-nonfree/15:05
joschelb, cararemixed: in case you want to test ^15:06
elbis there a way to slow down the rk3588 console16:15
elbI get terrible corruption16:15
elbjosch: confirmed works here16:16
josch\o/16:19
grimmwareoh my god how is it the case that every time I want to test out a change I get in a fight with a fucking build system16:20
+ mjw (~mjw@gnu.wildebeest.org)16:27
grimmwareHilarious side effect of the font patching used for the MNT logo in waybar if you use the window title module https://usercontent.irccloud-cdn.com/file/qO8cSUC5/1760797729.JPG16:29
grimmwareKinda love it.16:29
+ pomel0 (~pomel0@user/pomel0)16:40
gordon2yeah, there is too much variation, i printed 5 trackball cups and some of them work well with SiN and some of them just refuse to register any tracking, more research needed16:48
f_josch: you're awesome16:49
joschf_: 151 minutes16:51
f_Impressive!16:51
joschindeed, i recently built the Debian kernel on my A311D with -j2 and it took 14:20 hours :D16:53
elbthis is what I get on my RK3588 console: https://lostbits.net/elb/private/unfortunate_messages.png16:58
joschouch o016:59
joschelb: rk3588 pocket reform, right?16:59
f_elb: did you connect ground?17:01
f_also love the >.> in the logs17:01
elbI connected the ground, rk358817:06
elbI think my serial dongle is just not reliably fast enough17:06
elb1.5 Mbps seems ... excessive17:06
elboh, yes, sorry, I answered the wrong part of that question -- pocket reofrm17:09
elbI set up a getty on tty2 so that I don't get into this trap in the future, and I see the getty running, but neither alt+hyper+2 nor ctl+alt+hyper+2 is taking me to tty2; any ideas?17:14
- swivel (QUIT: Ping timeout: 255 seconds) (~swivel@shells.gnugeneration.com)18:19
+ swivel (~swivel@shells.gnugeneration.com)18:21
grimmwareminute: that additional soft reset did not fix the flicker :/18:35
grimmwareat least I've got my build pipeline working now though. I can go back to the other branch I was working on with a more speculative attempt at the fix.18:36
+ wielaard (~mjw@gnu.wildebeest.org)19:28
- mjw (QUIT: Killed (uranium.libera.chat (Nickname regained by services))) (~mjw@gnu.wildebeest.org)19:30
* wielaard -> mjw19:30
grimmwareI've just tested a branch where I've reordered init to map better to what it says on the v1 for the datasheet, but it has the annoying side effect of only succesfully initializing the display every other time (obviously not that helpful) and doesn't appear to have fixed the flicker, but it no longer does that thing where it'll look like it's browning out and has the screen fade19:53
grimmwareI'll be testing out some iterations of the same over the coming week I guess19:53
grimmwareminute: is there any rationale to the two patches on the pocket panel other than that's just what happened? I'm wondering if it's worth consolidating them.20:13
minutegrimmware: yeah i already did22:09
minutegrimmware: a week ago or so. but i couldn't test it because CI was broken and then i ran outa time22:09
minutegrimmware: https://source.mnt.re/reform/reform-debian-packages/-/commit/a10e45e0001e9f3a29eb95f78cc6f63733805b9622:11
- gustav25 (QUIT: Quit: Quit) (~gustav@c-78-82-53-102.bbcust.telenor.se)22:15
+ colinsane (~colinunin@97-113-71-58.tukw.qwest.net)22:23
minuteelb: sometimes resetting uart adapter helps, i.e. replug it22:50
minutegrimmware: lol @ mnt logo font glitch22:50
minuteelb: you can change the baud rate by kernel parameter i think, and/or DTS22:51
minuteelb: i.e. console=ttyS2,115000, see https://www.kernel.org/doc/html/v4.14/admin-guide/kernel-parameters.html -> console=22:52
minuteinstalling test kernel on my pocket reform...23:18
minutegrimmware: i think my MR fixes the flicker issue. but i still have some residual flicker from last reboot, so need to wait a little more.23:24
minutegrimmware: sometimes i also get color snow but it goes away after turning the display off and on again in gnome, so this is useful for tweaking the sleep intervals for fixing that issue too. i'm thinking to maybe make sysfs attrs for the delays so i can dynamically adjust them while testing, skipping rebuild loops23:25

Generated by irclog2html.py 2.17.3 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!