Newest entries.

Previous month.




Fixed text mode and special keys handling with repeats in npe’s SDL2 reimplementation. AltGr is now treated as right Alt.

uxn and FastTracker II should have keyboard working correctly now.


Even further with rtmp. I got a spec and rewrote parts that were initially based on librtmp. So now it’s (as most of my code) Public Domain.


Got further with rtmp:

; ./6.out -d -v /tmp/example.ivf rtmp://
← type=Invoke chan=3 ts=0 sz=264: 'connect' 1 {app:'app/live_REDACTED',
	tcUrl:'rtmp://', fpad:false,
	capabilities:15, audioCodecs:3191, videoCodecs:252, videoFunction:1}
β†’ type=ServerBW chan=2 ts=0 sz=4
β†’ type=ClientBW chan=2 ts=0 sz=5
β†’ type=Control chan=2 ts=0 sz=6
control packet: StreamBegin 0
β†’ type=ChunkSz chan=2 ts=0 sz=4
new chunk size: 4096 bytes
β†’ type=Invoke chan=3 ts=0 sz=236: '_result' 1 {fmsVer:'FMS/3,5,7,7009',
	capabilities:31, mode:1}
	{level:'status', code:'NetConnection.Connect.Success',
	description:'Connection accepted.', data:{string:'3,5,7,7009'},




A bit of gaming (Quake II).


Live-streamed fixing a crash in FT2 clone port for Plan 9 to Twitch. This was done by capturing video with hj264 natively, sending the video to ffmpeg running in Linux on vmx, streaming to Twitch directly using RTMP.

Stream A.

Stream B (continued).

Connection broke in the middle, so it’s split into two.


More work on rtmp for Plan 9.

Fixed a bug in nvi causing fetching of videos from some Peertube instances to fail. Improved usage error.

Fixed a bug in mp3dec. Non-seekable streams are playing fine now.


More work on rtmp for Plan 9.


The logic some people produce on Twatter…


Thought it should be clear by now, but here we go again:

THERE ARE NO NAZIS IN 9FRONT. Stop spreading this bullshit.

Saying that as one of the 9front devs, who happens to be an out anti-fascist anarchist queer trans woman (ain’t I a clichΓ©?).

I swear to god, we had this as an inside joke, but it really does seem like people see pictures in B/W (or the word “front” anywhere in the text) and instantly assume it has something to do with nazism.


The “two communities”, or whatever, is referred to #cat-v and the rest (like 9grid) being a bit separate. That’s not about 9front as a project or its devs, although there are the same devs in both. It’s about communities, among which I still haven’t noticed a single nazi.


Time to try RTMP with hj264 and see if it can be made to work with Peertube and Twitch.


More work on hj264. It now outputs IVF format by default, which means any ffmpeg-based player will be able to play it as is.




I got the domain and directed it to for now.


It’s “QUICK PORTING WITH SIGRID” section again! Happy to see y’all.

audio/aacenc. It outputs raw ADTS stream, which means it can be played by audio/aacdec directly, but is not very useful on its own. I’m going to use this encoder along with hj264 to capture video AND audio so it can be recorded (or livestreamed, eventually).

Both video and audio should probably be wrapped into separate PES and then remuxed into a single contrainer/stream with another tool to be written, don’t think I am going to put that logic into mcfs.

Now, to record the audio on Plan 9, one needs to have a filesystem wrapping /dev/audio and providing another file to act as a loopback device, so the audio played on the system can also be recorded. Perhaps even pipefile alone would be enough, I will have to find out.


hj264: with some additional work managed to pull out capturing video at 70fps, 1024x768, Quake 1 gameplay. No assembly has been written, still.

Night biking.


Managed to pull 30fps of 1920x1080 with hj264 I’m working on.

Grabbing /dev/screen (or a rio window) continuosly in a separate proc helped. This operation is actually introducing quite a delay on its own. I will need to see if maybe memimage stuff can be replaced with something more lightweight if it’s slow. Profiling helps too.

Night biking.


Successfully captured frames from a rio window and encoded to H.264, all on Plan 9.

Twitched some ORCA livecoding done on 9front.




I set up twitch account where I’m going to be streaming oldschool shooters (Q1, Q2, UT99) and working in 9front as well once I set up drawterm.


Heh. Heh. Javascript for Plan 9.


nvi: fixed a crash if either audio or video stream is not available. nvi will leave the file empty in this case.

Video of yesterday’s screen capturing experiment uploaded.


nvi: made full URLs work when fetching videos from Youtube, both (short) and style.

Tested screen capturing by segattaching to framebuffer directly. Of course it’s not tear-free, but is fast enough to make use of for video capturing, without having to rewrite the whole devdraw for userspace. Still, userspace devdraw would be REALLY nice to have.


No recollection.


Came back from the hike. I went back on-trail, it was much easier, and I managed to take one good picture on my way.

It would be nice to have some kind of ESP32-based battery-powered terminal with e-ink screen that doesn’t do anything besides running an embedded variant of drawterm that connects to remote machines. I could use it for hacking AND my full time job while being outside. Perhaps I should build one.


Today I’m going to be hiking alone. I took two film cameras and paper with pencils for some creative fun. Going to stay overnight in a hammock. E-reader and a small music speaker is with me as well.

There it is, my camping spot. As per usual, most of the pics are on my Insta.


One of my gel 12V batteries seems to be dead (~12mV). The other one is 4.5V :(

Going to see if I can still charge at least one of them.

Started (over) on sndio server for Plan 9. This is mostly to play audio with stuff running in vmx, since Linux and OpenBSD both support sndio pretty well.


Updated Rio theming patch and instructions (no hg in 9front anymore).

Same with riow.

Patch for “select command and its output with a double click on the rio prompt” patch is now at /n/

All three patches can be (optionally) applied in any order.


Older entries







Last update: September 17, 2021 04:21PM