š Hi, the current time is about four oā clock in the afternoon š .
My mate and I went on a hike earlier. Yesterday, we had lovely 12°C. But today, it was down to at most 4°C. Oh well. At least the sun was out and and there was just a tiny bit of wind. We knew upfont that scarf, beanie and gloves were mandatory. Especially at the more windy sections like up top the hills. The view was absolutely terrible, but we made the best of it.
With the sun shining on us during our lunch break at a forest edge bench, we still enjoyed the lookout in 01. I brought some old carpet scraps to sit on and was happily surprised that they isolated even better than I had hoped for. Some hot tea helped us staying warm.
After five hours we returned just after sunset. Iām quite tired now, completely out of shape.
@lyse@lyse.isobeef.org (At least I didnāt break all the links again. In late 2015, I switched from a PHP backend to the current static website, which changed just about everything. I hope doing a disruptive change like this one every 10 years is tolerable. š )
@lyse@lyse.isobeef.org Oh, right. Forgot about that. š«¤
Well, the Atom feed entry IDs changed, too. I had to mark everything as read again.
@movq@www.uninformativ.de I still think that your original domain is cool as fuck! :-)
I didnāt change any subscriptions, and I still see your messages, so whatever you did worked fine. :-)
Did it work? Am I still here? š¤£
@prologic@twtxt.net I think I found an easy way to redirect anything except the twtxt stuff. Thatās probably better. š¤
I love using #ThonnyIDE, and, on Linux, I can use !pip install, !jupyter lab, and !py5-live-coding mysketch.py on the interactive shell console, I wish this would work on Windows too :(
@movq@www.uninformativ.de Right š
So, are you guys up for an experiment?
Iām really not happy with the domain āuninformativ.deā anymore. Iām going to switch to āmovq.deā soon (or maybe something else if I get another fancy idea).
If I keep the url = field in my twtxt file, nothing should break, right? Right? š¤£
@prologic@twtxt.net Yup. š
Fark me OS Dev is hard š¤£
@movq@www.uninformativ.de thatās just š šÆļø.
@movq@www.uninformativ.de infinite interaction!
./bin/mu -B -o ... -p muos/amd64 ... target.
@lyse@lyse.isobeef.org Thanks!
Wow, as I anticipated, this is waaay out of my capabilities to really understand it. But Iām quite happy to just have spotted a mistake in an explanatory comment in section 4.5.2 āThe icode Arrayā. Of course, it should be /e + tc + /i + ni + t\0. Letās hope that my e-mail with the patch actually makes it into Briamās inbox. I fear GMail just hides it in the spam folder.
@bender@twtxt.net gemini-cli, something something https://github.com/google-gemini/gemini-cli/issues/16723
I recently got an email with this byte sequence:
\xf0\x9f\x8e\x81\xf0\x9f\x95\xaf\xef\xb8\x8f
Thatās U+1F381, U+1F56F, U+FE0F. The last one is a āvariation selectorā:
https://unicodeplus.com/U+FE0F
My toolkit renders this incorrectly ā and so do tmux and GNU screen.
Unicode aināt easy. š„“
/me clones the repository, calls gemini-cli, and asks for an executive summary. Gemini-CLI replies āDonāt bother!ā LOL.
@movq@www.uninformativ.de Just 323 pages! Thatās cool, letās have a look. :-)
./bin/mu -B -o ... -p muos/amd64 ... target.
@prologic@twtxt.net Tada! Maybe one day I might look into this lowlevel stuff, too. But I canāt see it on the horizon yet. Happy hacking! :-)
https://github.com/unix-v4-commentary/unix-v4-source-commentary
A comprehensive, line-by-line commentary on the UNIX Fourth Edition source code (released November 1973; tape recovered from June 1974 distribution).
./bin/mu -B -o ... -p muos/amd64 ... target.
@prologic@twtxt.net Iād love to take a look at the code. š
Iām kind of curious to know how much Assembly I need vs. How much of a microkernel can I build purely in Mu (µ)? š¤
Canāt really answer that, because I only made a working kernel for 16-bit real mode yet. That is 99% C, though, only syscall entry points are Assembly. (The OpenWatcom compiler provides C wrappers for triggering software interrupts, which makes things easier.)
But in long mode? No idea yet. š At least changing the page tables will require a tiny little bit of Assembly.
./bin/mu -B -o ... -p muos/amd64 ... target.
Iām kind of curious to know how much Assembly I need vs. How much of a microkernel can I build purely in Mu (µ)? š¤
./bin/mu -B -o ... -p muos/amd64 ... target.
Iāve only got a handful of syscalls working right now. Taking inspiration from the calling convention of the Linux kernel and even made the service/interrupt handler int 0x80h 𤣠Iāve only got read, write, alloc and exit working righ tnow š„²
./bin/mu -B -o ... -p muos/amd64 ... target.
@movq@www.uninformativ.de Yes!
Did you do the whole dance with BIOS boot and everything?
Yup! Farkān LBA shit and all, loading up the GDT, TSS and switching to x86_64 long mode š¤£
./bin/mu -B -o ... -p muos/amd64 ... target.
@prologic@twtxt.net Damn, nice! I know exactly what you mean ā the output/screenshot looks trivial, but thereās so much going on behind the scenes. š
Did you do the whole dance with BIOS boot and everything?
./bin/mu -B -o ... -p muos/amd64 ... target.
Whohoo! š„³
You have no idea how great a feeling this is! This includes the Mu stdlib and runtime as well, not just some simple stupid program, this means a significant portion of the runtime and stdlib ājust worksā⢠š¤£
Btw @movq@www.uninformativ.de youāve inspired me to try and have a good āol crack at writing a bootloader, stage1 and customer microkernel (µKernel) that will eventually load up a Mu (µ) program and run it! 𤣠I will teach Mu (µ) to have a ./bin/mu -B -o ... -p muos/amd64 ... target.
@eldersnake@we.loveprivacy.club haha! I read as Golang the first time too. It is just the way our minds work. :-P
@kiwu@twtxt.net problems are aplenty everywhere, Kiwu. As we all know, ups and downs flare often times when we least expect them. When downs come, donāt despair: nothing lasts forever, and ups will soon come, one way or another. Paālante!
@kiwu@twtxt.net me too, me too! Thank you for sharing! š«¶
Took me nearly all week (in my spare time), but Mu (µ) finally officially support linux/amd64 š„³ I completely refactored the native code backend and borrowed a lot of the structure from another project called wazero (the zero dependency Go WASM runtime/compiler). This is amazing stuff because now Mu (µ) runs in more places natively, as well as running everywhere Go runs via the bytecode VM interpreter š¤
Could it be that Source Sans Pro changed recently? No⦠Somehow at some point Ⳡwas replaced with ⹠in my markdown files⦠I have no idea how this happened.
#Unicode #Typography
@kiwu@twtxt.net Always stay positive! š
tcell.Key constants and typing different key combinations in the terminal to see the generated tcell.EventKeys in the debug log. Until I pressed Ctrl+Alt+Backspace⦠:-D Yep, suddenly there went my Xā¦
@movq@www.uninformativ.de I guess so, yes. I read something about that in some ticket. In v3 the terminfo support was dropped, though. Iām still on v2 at the moment.
tcell.Key constants and typing different key combinations in the terminal to see the generated tcell.EventKeys in the debug log. Until I pressed Ctrl+Alt+Backspace⦠:-D Yep, suddenly there went my Xā¦
@lyse@lyse.isobeef.org ⦠I sure hope that they generate these files from the general terminfo database instead of maintaining their own DB. š³
tcell.Key constants and typing different key combinations in the terminal to see the generated tcell.EventKeys in the debug log. Until I pressed Ctrl+Alt+Backspace⦠:-D Yep, suddenly there went my Xā¦
And tcell seems to support my urxvt in general: https://github.com/gdamore/tcell/blob/v2/terminfo/r/rxvt/term.go#L144
@movq@www.uninformativ.de Woah, thatās really amazing progress! :-)
@bender@twtxt.net Iām already using it for tracktivity (meant for tracking activities and events, like weather, food consumption, stuff like that), which is basically a somewhat-fancy CSV editor:
https://movq.de/v/f26eb836ee/s.png
I have a couple of other projects where I could use it, because they are plain curses at the moment. Like, one of them has an āedit boxā, but you canāt enter Unicode, because it was too complicated. That would benefit from the framework.
Either way, itās the most satisfying project in a long time and Iām learning a ton of stuff.
tcell.Key constants and typing different key combinations in the terminal to see the generated tcell.EventKeys in the debug log. Until I pressed Ctrl+Alt+Backspace⦠:-D Yep, suddenly there went my Xā¦
@movq@www.uninformativ.de Yeah, I know that terminals are super weird and messy. In both the KDE Konsole (identifying itself as TERM=xterm-256color) and xterm (TERM=xterm) it just works flawlessly. My urxvt (TERM=rxvt-unicode-256color) just doesnāt. I also tried messing with TERM in urxvt, but no luck so far.
tcell.Key constants and typing different key combinations in the terminal to see the generated tcell.EventKeys in the debug log. Until I pressed Ctrl+Alt+Backspace⦠:-D Yep, suddenly there went my Xā¦
@lyse@lyse.isobeef.org Unix terminals are quite limited in that regard. 𫤠You know how Ctrl works? The XOR 0x40 thing? And Alt doesnāt exist at all, itās just a prefixed ESC byte.
I was surprised to see curses knowing about āShift+Tabā, wondering how that is supposed to work. Well, itās an escape sequence, of course (depending on the terminal, of course).
tcell.Key constants and typing different key combinations in the terminal to see the generated tcell.EventKeys in the debug log. Until I pressed Ctrl+Alt+Backspace⦠:-D Yep, suddenly there went my Xā¦
Well, in Xterm, I actually do get key combinations with the Shift modifier. Also, combinations of several modifiers just work exactly as I expect. But not in URXvt. Hmm.
@movq@www.uninformativ.de that some lovely development from the initial one. Curious to know where this will lead!
Here am I looking at the different tcell.Key constants and typing different key combinations in the terminal to see the generated tcell.EventKeys in the debug log. Until I pressed Ctrl+Alt+Backspace⦠:-D Yep, suddenly there went my Xā¦
So far, it appears as if I can have either only Ctrl or Alt as modifiers. But not in combination. And Shift is just never ever set at all. Interesting.
Some work on the menu system to brighten my mood a little bit. No mouse support yet.
@prologic@twtxt.net Probably not, but thanks. š Itāll get better.
@movq@www.uninformativ.de Anything we can do? Lend a listening ear? š
Ainda ando pasmado com o facto de uma série cheia de body horror, violência contra crianças, gore e violência gratuita (#StrangerThings) estar a ser agressivamente marketizada para um público infantil
Ontem um amigo de 9 anos do meu filho estava a contar-me como é a melhor série de sempre, e eu ainda estou burro de como hÔ miúdos que estejam a ver isto
Btw nĆ£o tenho problemas com a sĆ©rie (acabei ontem a 5ĀŖ temp e acho profundamente meh), Ć© este esforƧo em vendĆŖ-la a crianƧas quando Ć© claramente uma sĆ©rie 16+ no mĆnimo
@prologic@twtxt.net Work and the general state of (gestures broadly) everything.
Amanhã vou rolar uma demo de Tidalcycles no primeiro meetup de livecoding do Porto :szterminal:
@movq@www.uninformativ.de Whatās up? hmm š§
Frustration level: Through the roof.
tt. Boy, is parsing the key names into tcell.EventKeys a horrible thing. This type consists of three information:
Ha, I just stumbled across https://codeberg.org/tslocum/cbind, perfect!
@movq@www.uninformativ.de I figure thatās exactly what it is.
@bender@twtxt.net ICQ, yeah, I vaguely remember these times, despite I still know my ICQ number like it was yesterday. :-D
@shinyoukai@neko.laidback.moe No, itās not dead. The one account in question actually is on jabber.org.
@bender@twtxt.net I vaguely remember this, some leftover from the old-style hashtags? The (#foo) stuff? š¤
Heh I thought I fixed that bug? (is it s abug?!)
@bender@twtxt.net it works fine under jenny. Maybe it is a bug on Yarn?
Yes, if a twtxt contains something like ā(This is a test. Will this work as it should?)ā, it will show empty on Yarn.
@prologic@twtxt.net it really is not blank. It reads:
2026-01-12T23:34:11+01:00 (you must be root)
This week, Mu (µ) get s bit more serious and starts to refactor the native backend (a lot). Soon⢠we will support darwin/arm64, linux/arm64 and linux/amd64 (Yes, other forms of BSD will come!) ā Mu (µ) also last week grew concurrency support too! š¤£
@klaxzy@klaxzy.net nothing like a blank twt eh? š
@shinyoukai@yume.laidback.moe Jabber = XMPP.
Iām trying to implement configurable key bindings in tt. Boy, is parsing the key names into tcell.EventKeys a horrible thing. This type consists of three information:
- maybe a predefined compound key sequence, like Ctrl+A
- maybe some modifiers, such as Shift, Ctrl, etc.
- maybe a rune if neither modifiers are present nor a predefined compound key exists
Itās hardcoded usage results in code like this:
func (t *TreeView[T]) InputHandler() func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
return t.WrapInputHandler(func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
switch event.Key() {
case tcell.KeyUp:
t.moveUp()
case tcell.KeyDown:
t.moveDown()
case tcell.KeyHome:
t.moveTop()
case tcell.KeyEnd:
t.moveBottom()
case tcell.KeyCtrlE:
t.moveScrollOffsetDown()
case tcell.KeyCtrlY:
t.moveScrollOffsetUp()
case tcell.KeyTab, tcell.KeyBacktab:
if t.finished != nil {
t.finished(event.Key())
}
case tcell.KeyRune:
if event.Modifiers() == tcell.ModNone {
switch event.Rune() {
case 'k':
t.moveUp()
case 'j':
t.moveDown()
case 'g':
t.moveTop()
case 'G':
t.moveBottom()
}
}
}
})
}
This data structure is just awful to handle and especially initialize in my opinion. Some compound tcell.Keys are mapped to human-readable names in tcell.KeyNames. However, these names always use - to join modifiers, e.g. resulting in Ctrl-A, whereas tcell.EventKey.Name() produces +-delimited strings, e.g. Ctrl+A. Gnaarf, why this asymmetry!? O_o
I just checked k9s and theyāre extending tcell.KeyNames with their own tcell.Key definitions like crazy: https://github.com/derailed/k9s/blob/master/internal/ui/key.go Then, they convert an original tcell.EventKey to tcell.Key: https://github.com/derailed/k9s/blob/b53f3091ca2d9ab963913b0d5e59376aea3f3e51/internal/ui/app.go#L287 This must be used when actually handling keyboard input: https://github.com/derailed/k9s/blob/e55083ba271eed6fc4014674890f70c5ed6c70e0/internal/ui/tree.go#L101
This seems to be much nicer to use. However, I fear this will break eventually. And itās more fragile in general, because itās rather easy to forget the conversion or one can get confused whether a certain key at hand is now an original tcell.Key coming from the library or an āextendedā one.
I will see if I can find some other programs that provide configurable tcell key bindings.
@movq@www.uninformativ.de Sorry, I meant the builtin module:
$ python3 -m pep8 file.py
/usr/lib/python3/dist-packages/pep8.py:2123: UserWarning:
pep8 has been renamed to pycodestyle (GitHub issue #466)
Use of the pep8 tool will be removed in a future release.
Please install and use `pycodestyle` instead.
$ pip install pycodestyle
$ pycodestyle ...
I canāt seem to remember the name pycodestyle for the life of me. Maybe thatās why I almost never use it.
Pep8 is deprecated, I think
Hmm, I donāt think it is, this still says āStatus: Activeā: https://peps.python.org/pep-0008/ š¤
@lyse@lyse.isobeef.org I even got spam on ICQ, back when ICQ was a thing. I see spam as an innate thing. š
Oh no, spam via Jabber is new for me. Fuck them!
rustfmt. I now use similar tools for Python (black and isort).
@movq@www.uninformativ.de @prologic@twtxt.net Thatās what I like about Go, too. However, every now and then I really dislike the result, e.g. when removing spaces from a column layout. Doesnāt happen often, but when it does, I hate it.
I think I should have a look at Python formatters, too. Pep8 is deprecated, I think, itās been some time that I looked at it.
@kiwu@twtxt.net whatās going on, Kiwu?
@kiwu@twtxt.net Oh? š¤ Whatās up? Can you share? Or just having a hrd time? š¤
rustfmt. I now use similar tools for Python (black and isort).
@movq@www.uninformativ.de Welcome to the dark side š¤£
Since I used so much Rust during the holidays, I got totally used to rustfmt. I now use similar tools for Python (black and isort).
What have I been doing all these years?! I never want to format code manually again. š¤£š
@shinyoukai@yume.laidback.moe Hopefully, yes. Havenāt tried it yet.
@movq@www.uninformativ.de I donāt think he is š¤
@shinyoukai@neko.laidback.moe mckinley is back? Where? š¤
Okay, I had heard of āRiverā before but I was not aware of this:
https://codeberg.org/river/river
River defers all window management policy to a separate window manager implementing the river-window-management-v1 protocol. This includes window position/size, pointer/keyboard bindings, focus management, window decorations, desktop shell graphics, and more.
This sounds promising and it follows the old X11 model. River does all the nasty Wayland work and I can make just the WM? š¤š¤Æ
āREMINDER: Laser pointers banned in Switzerlandā
https://home.cern/news/official-news/cern/reminder-laser-pointers-banned-switzerland
@shinyoukai@neko.laidback.moe Whoohoo! Thatās a start to cross-platform support š¤£
Patch applied!
** being goblin **
In response to my most recent week notes, Adrian shared this lovely quote on goblins with me. It comes from my favorite game designer, Avery Alder,
being goblin is a way of flagging that you want to include people not in spite of their sloppiness and uneven emotional growth, but because of itāāābecause goblins come as they are, and they grow in community with one another. Being goblin means being intergenerational in an un-pr ⦠ā Read more
@movq@www.uninformativ.de Aha! Well, happy hacking. A tiling window manager seems to be good fun. :-)
It drizzled all morning when we picked up the old christmas trees in town with the scouts. Right after lunch the snow storm suddenly hit and dumped three centimeters of snow in just 15 minutes. I cycled home in these crazy conditions, freezing rain hammered my face. As soon as I arrived, it stopped. Itās now down to drizzling again.
All my soaked gear is now hung up to dry. The next 11 months, Iām going to find needles over needles in all kind of impossible places.
@shinyoukai@neko.laidback.moe No email has arrived here? š¤
@shinyoukai@neko.laidback.moe Okay I pushed a commit that hopefully fixes this. I hope!
@shinyoukai@neko.laidback.moe Yes; however the interpreter is also platform dependent and relies on making raw syscalls. This is so the runtime semantics remain the same between the two execution modes.
Iāll see if I can add support for linux/amd64 and netbsd/amd64 for the VM at least.
@lyse@lyse.isobeef.org Itās not super comfortable, thatās right.
But these mouse events come with a caveat anyway:
ncurses uses the XM terminfo entry to enable mouse events, but it looks like this entry does not enable motion events for most terminal emulators. Reporting motion events is supported by, say, XTerm, xiate, st, or urxvt, it just isnāt activated by XM. This makes all this dragging stuff useless.
For the moment, I edited the terminfo entry for my terminal to include motion events. That canāt be a proper solution. Iām not sure yet if Iām supposed to send the appropriate sequence manually ā¦
And the terminfo entries for tmux or screen donāt include XM at all. tmux itself supports the mouse, but Iām not sure yet how to make it pass on the events to the programs running inside of it (maybe thatās just not supported).
To make things worse, on the Linux VT (outside of X11 or Wayland), the whole thing works differently: You have to use good old gpm to get mouse events (gpm has been around forever, I already used this on SuSE Linux). ncurses does support this, but this is a build flag and Arch Linux doesnāt set this flag. So, at the moment, Iām running a custom build of ncurses as a quick hack. š And this doesnāt report motion events either! Just clicks. (I donāt know if gpm itself can report motion events, I never used the library directly.)
tl;dr: The whole thing will probably be ākeyboard firstā and then the mouse stuff is a gimmick on top. As much as Iād like to, this isnāt going to be like TUI applications on DOS. Iāll use āWindowsā for popups or a multi-window view (with the āWindowManagerā being a tiny little tiling WM).
@shinyoukai@neko.laidback.moe if you donāt show me the actual full stacktrace, I canāt fix the problem š¢
Most of it should work on other platforms, the bytecode VM that is. You may run into some platform quirks though that rely on syscall() ā Let me know what you run into and Iāll try to fix them nw. The problem right now is I havenāt even begun to start work on another platform/architecture yet.
Mu (µ) is coming along really nicely 𤣠Few things left to do (in order):
- Finish the concurrency support.
- Add support for sockets
- Add support for
linux/amd64
- Rewrite the heap allocator
- Rewrite Mu (µ) in well umm Mu (µ) š
Hereās a screenshot showing off the builtin help(): 
Itās gone. š
@shinyoukai@neko.laidback.moe the whole bridge idea is a mistake done twice (I encouraged the first time, it was a mistake to do so). In this case, the āBabel Towerā works; there is no need to interact with āothersā, let it be just twtxt.
** no beautiful things **
Thereās this line in The Hobbit that haunts me. For one thing, it is part of a wider problematic habit running throughout all of Tolkien that, moving in the mythopoetic space, leads to these sweeping statements that define or collapse an entire culture into a single stroke. It seems to me to be like the most damning thing you could say about a culture, though:
Now goblins are cruel, wicked, and bad-hearted. They make no beautiful things, but they make many clever ones.
Emphasis my own, and the quote ⦠ā Read more
@movq@www.uninformativ.de Oh, I see. Unfortunately, there seems to be no box drawing character for a corner with a diagonal line. Indeed, this is probably the best you can do.
Is the single character enough to hit it comfortably with the mouse, though? Maybe one additional to the left and above could be something to think about. Not sure. Of course this complicates it a bit more. Personally, I like fullscreen windows, so Iām definitely the wrong guy to judge this or even comment on. :-)
@lyse@lyse.isobeef.org Ah, the lower right corner is different on purpose: Itās where you can click and drag to resize the window. https://movq.de/v/cbfc575ca6/vid-1767977198.mp4 Not sure how to make this easier to recognize. š¤ (Itās the only corner where you can drag, btw.)
@bender@twtxt.net Seriously, if I ever get a CRT monitor again, I want it to be an amber one and then hook it up to some 8086. š Only problem is that this stuff is expensive as hell now ā¦
Hey folks! We have recently had a wonderful new release of #py5, read about the new 3D trimesh integration feature and the matplotlib TextPath integration.
That release was quickly followed by a release to fix some small issues that surfaced this last week. Please check out py5 0.10.9a1 and join us at https://github.com/py5coding/py5generator/discussions to share your experiences!
#CreativeCoding #Processing #Python #genuary (sorry for the hashtag spamming, I couldnāt resist!)