💾 Archived View for ftrv.se › _now_202101 captured on 2021-12-06 at 14:29:53. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2021-11-30)
-=-=-=-=-=-=-
Newest entries[1].
Next month[2].
Same as yesterday!
No computers, lots of exercising and chilling.
Worked a bit on the drawterm "app" (see yesterday). It draws Glenda[3].
Fixed theming in zuke[4].
Fixed picker[5] not being able to exit on Del key, when there are no colors passed to it.
Got a simple program compiled on Linux to draw a red square[6] in drawterm. The program only read/writes stdin/stdout to talk 9p[7], for which it's using c9[8]. That's experimentation towards neauoire[9] possibly using that approach to have drawterm as a "frontend" for GUI applications shipped for multiple platforms, perhaps cutting down on required libraries to be linked in, etc.
square
Added window moving/resizing (using hotkeys) to riow[10].
Updated bar[11] so it consumes even less CPU resources and wakes up as little as possible.
Rio comes back (and bites in the ass) by not allowing a window resize through `wctl` unless the window is current (in focus).
bar[12] now writes to stdout the item that was clicked by the user.
bar[13] and riow[14] are now cooperating. `bar` reads standard input line by line and shows it along with the battery charge and date/time. If `bar` is installed, `riow` will use it instead of `aux/statusmsg`.
I'm planning to make `bar` also write whatever text (in between delimeters) was clicked on to standard output. Then it will be possible to customize it in various ways. For example, clicking on the date/time will make `bar` send it to stdout, where a script could in this case launch a calendar.
Received a raspi 4 from echoline!
Found my old (2008) thesis on L4 microkernel in LaTeX format, as well as the source code of the microkernel I implemented back then.
No computers.
Gonna be baking cookies!
Just say no to computers.
(I really have to answer emails...)
If CPU temperature or battery status are not available for reading, `aux/acpi` will no longer expose the file. Simplifies programs that read them.
Querying battery status every second (hello, `stats(1)`) using ACPI is apparently enough to drain laptop's battery faster than one would expect. Changed that to minimum 10s period, and 5s for CPU temperature using ACPI.
Fixed Mod4 ("Windows" key) on USB keyboards so it's mapped the same way as on built-in keyboards. Fixes riow[15] keyboard controls on things like Raspberry PI.
Had to update 9gc[16] again after old 9gridchan registry had some issues. The chat address is hardcoded for now, with no registry being used to lookup the hostname/port whatsoever, until this can be fixed properly later, by moving over to new registry (`registry.9p.zone`, that is).
Not much happened today besides one isolated kernel crash.
[ftrvx@ftrv:~]$ date --date=@$(pcalc 0x60000000 | awk '{print $1}') Thu 14 Jan 2021 09:25:36 AM CET
Fixed another missing feature in mcfs[17]: header stripping. Only with no lacing for now, as I don't have any other samples to test it with. The lucky person who find these will get an error message that hopefull will make sense.
A very quick addition: "iconv" tool in imgtools[18]. For now all it can do is convert an image to a specific channel configuration, ie `xrgb32` or `grey8`, etc. Same as the stock tool, but with more friendly names for channel configurations.
imgtools
Updated `resample` in the same repo to keep the original format if possible, and to assume premultiplied alpha by default (if there is alpha channel). Also added cropping via `-r` argument.
Small things today.
9p zone[19] is taking shape!
Added `gemini://` and `ftp://` to "linkifying" logic of `mothra` (it's executed on urls inside plain text, not enclosed in proper tags).
A very small change to my Gemini[20] client gemnine[21]: don't print URL description if it's the same as the URL itself.
Seems like I could use `webfs` URL resolving logic without copying any code, like `mothra` does.
A log from before (on 9gridchan[22]), regarding voice/video chat with 9p[23]:
sigrid → I think voice chat is mostly just gluing mq, audio/mixfs and audio/opus^(dec enc) together sigrid → with each participant having their own stream sigrid → if you want to mute someone - don't mix their stream sigrid → each new participant can write their stream name to a defined stream like "new" in the group sigrid → and just remove their stream when they leave sigrid → mq -m /n/voicechat /n/videochat/{channel}/{participant}/^(audio avatar name video) /n/videochat/{channel}/event sigrid → hope filenames speak for themselves sigrid → as a bonus the entire session may be recorded while this whole thing is happening
Obviously, 9p[24] brings in latencies.
Fixed root not being writable in ext4srv[25].
Added `-c CHAN` option to 9gc[26] (9gridchan chat client for Unix-likes) to join a different channel (yeah, we now have TWO!).
Mirroring 9front FQA[27] now.
Yet another project who dis: some kind of feed reader/aggregator?[28]. I'm still not sure exactly whether I want it to be just plain text or have a UI so the feeds and items are organized better. Rendering HTML to text (hello, Mastodon feeds) is disgusting, but I know no other way:
reader/aggregator?
{echo .ll 9999i; echo .pl 1no; echo .po 4; cat | html2ms} | nroff -N
Yeah, setting line length to a huge number, and page length? Just no.
`watch` and `clear` are in snippets[29]. They don't destroy the entire terminal, unlike in other operating systems. `clear` only removes programs output, leaving the commands that were executed.
Cleaned up, reworked a bit, and added my XML parser to snippets[30]. The parser is very simple and works as streaming one as well.
Thanks to kvik's mq[31] we can already play streaming WEBM/MKV with treason[32]:
mq -m /n/mq cd /n/mq echo data coalesce > ctl echo replay all > ctl youtubedr -i 247 -o video https://youtube.com/.... & youtubedr -i 249 -o audio https://youtube.com/.... & treason -a audio video
I need to fix mcfs[33] so the same thing can be done with MP4 containers.
Checking a (maybe) faster `memcpy` implementation:
TEXT memcpy(SB),1,$0 MOVQ RARG, DI MOVQ DI, AX MOVQ p2+8(FP), SI MOVL n+16(FP), CX CLD; REP; MOVSB RET
Benchmarking video playback with treason[34] gave 104s vs 108s before. 4s difference, probably not worth it in this case.
"Vendored" some of the 3rd party libraries in treason[35] after it has been reported they either can't be fetched or take a long time to do so. They were huge. Now the installation is much faster.
It also builds and runs on 386 now.
Did more plumb-related work in zuke[36].
Vitamin D seems to be the thing I missed very much.
It's been snowing all day long. Finally, a proper winter. Tried playing vidyagames and got bored with each one of them (three in total) after 5 minutes. Meh. So far I manage to exercise a bit every day, which makes me feel a bit better.
Changed bar[37] to update the battery charge every 10s to reduce CPU load. `/dev/screen` is now only being read when actually needed.
Updated mp3dec[38] (pulled upstream minimp3[39]) and set a define that made the size of the executable even smaller: 119864 bytes vs 260255 bytes (stock 9front's mp3dec).
zuke[40] gets "audio" port plumbs with playlists now. A music file can be plumbed as well, but as of now zuke will play the file only if the currently loaded playlist contains it already.
c9[41] now builds under Plan 9. Would be great to add a higher level API and perhaps use for something under 9, as an alternative to what there is already.
Added more stuff in snippets[42].
Fixing bugs here and there.
`cal` now has an option `-s` for those who prefer some other day to be the start of the week.
Working on plumbing for zuke[43]. It needs to play what's being plumbed. Thinking it should run `audio/mkplist` on the files that aren't in the currently loaded playlist, and probably convert `*.m3u` playlists on the fly as well. That will definitely make changing playlists on the fly much easier than adding a full blown tab-based UI in `zuke` itself.
`juke(1)` actually does work, somewhat. Guess last time I tried it, I made a mistake in the file that was fed to `playlistfs`. Still, it looks horrible and requires editing tags manually???
Reading up papers on Dis VM. I kinda want to make a hobby OS with it that is loosely based on 9 and Inferno, just to play with some ideas.
Went to the city. Not many people wear masks, as usual.
Back to having access to a computer.
Catching up with Beats 'n breaks livestream[44] while coding.
livestream
Pushed `audio/flacenc` to 9front[45].
Fixed a bug in libvorbis port. coughs Guess who introduced it in the first place coughs.
Having last day of vacation. Work tomorrow.
Since I want to redo the UI part of neindaw[46], I'm looking at Andrew's layout[47] to do the work for me. The rest will probably be a set of flat b/w controls drawn with lines and circles. I want to make those controls easy to bind to MIDI knobs.
layout
Looking forward to incorporating Paul's soundpipe[48] into `neindaw` as well.
soundpipe
After yesterday's recording of vocals with Audacity (ahem) I have to write something for 9front...
Wrote audio/flacenc. Need to add error handling, then I can push it to 9front[49].
Fixed 32-bit compilation warnings in mcfs[50] reported by qwx[51]. Made a small change to make non-seekable streams work with `mcfs` and immediately scrapped it because it's useless for treason[52] unless `mcfs` becomes an actual filesystem first.
Looked at my CUE sheet parsing code but did not have time to do anything about it. The computer access time has finished.
Downloaded a ~250 pages pdf about CBT for adults with Aspergers. Since healthcare system in Sweden continuosly did not give a shit about my issues, I'm gonna be my own therapist. Hopefully this book will give me pointers to what should I work on so I can be less fucked in the head when dealing with people and stressful situations I keep ending up in.
Hanged a Teitanblood poster on a wall.