Category: Uncategorized

  • Writing GUI Toolkits Is Fun

    This is exactly the sort of stuff people should study at university, it’s very simple maths but layered very deeply with the complexity of relating conceptual objects to the real world. Things like sorting algorithms and off-by-one errors naturally lend themselves to being explained visually in such a way.

    Unfortunately instead they are teaching people this stuff the hard way with HTML/CSS instead of plain C.

  • NSW Police Are A Pedophile Organisation

    That’s why those people want me off the internet, they’ve been trying to shut me up about it since I was 15.

    The staff at NSW Police routinely abuse children and protect other abuses and they believe this is normal for a police organisation, they refuse to investigate complaints about it.

    That is the nature of the people who have been trying to keep me off the internet since I was a teenager.

  • BSD-Style Pseudo-Terminals

    How It Works

    Programs like terminal emulators need a stable way to connect to programs or backends, this is provided by the kernel through a pipe-like abstraction known as pseudo-terminals.

    These can provide a little more functionality than plain pipes but work similarly – data goes in one end and comes out the other.

    The problem is how to allocate these resources – some systems do it statically and others dynamically. The SecureLang RD Kernel currently solves this problem by statically allocating pseudo-terminals and letting programs decide which one to use.

    The Simple Approach

    The system creates some devices pty0, pty1, pty2 … for one end of the communication and matching tty0, tty1, tty2 … devices for the other end.

    A program such as a terminal emulator then needs to just attempt to open the pty0/tty0 pair and if this fails it tries pty1/tty1, pty2/tty2 and so on until one is available.

    This system is a little simplified but is basically the same as the old BSD way (from what search results tell me of early versions).

    Why Dynamic Allocation Is Probably Better

    The simple way works, but may not be fully reliable when multiple programs are cycling through trying to open things at the same time. It also raises some issues like having to give some attention to file permissions to ensure the other end is accessible.

    One solution used by most modern systems is to have the kernel dynamically allocate a new pty/tty pair when needed. On the one hand this solves the problem, on the other hand it isn’t really as simple or intuitive as having a few numbered devices that a program can just select from.

    So this might be a longer term strategy for the SecureLang RD implementation but might not actually be necessary if these issues can be resolved easier another way.

    This Stuff Is Abstracted By Libraries

    Luckily nowadays programs like terminal emulators don’t really need to know those details, as they can just use library functions like posix_openpt and ptsname to select a pty/tty pair. However the implementation may still be important for system administrators and framework developers, and can be important for programmers if/when it breaks!

    Subnote: Why Not Pipes/Sockets

    Operating systems provide other features that can be used for channeling I/O streams between applications, but a dedicated pseudo-terminal abstraction is important because it can also be used to apply terminal-specific options to these channels (for example to help programs reliably detect terminal type).

  • Starlink Is For Espionage

    People who don’t realise this are dumb. It isn’t a business-quality internet connection it’s a restricted connection aimed at collecting your personal and national data.

  • Features Going In Now

    I probably won’t make much progress with real device drivers until I get my hardware setup under control, but I’ve been working on some virtual drivers for pseudo-terminals and may also start on improving IPC performance for the desktop environment.

    Pseudo-terminals are used for GUI-based terminal emulators and may also be useful for testing drivers that operate over serial connections. I expect this new functionality will work pretty reliably as it’s based on existing kernel code for pipes, but it won’t be as efficient as it could be until I focus more on optimisations later.

  • Elon’s People Have Been Trying To Keep Me Off The Internet Since I Was A Teenager

    All because they didn’t like me complaining about their rape circus of an education system.

    Now they cry about racism just because they are discriminated against for refusing to hire blacks? Elon’s whole “race” of people (and we all know who they are) are beyond repair.

  • I Want To Develop Spaces Where African Cultures Are More Welcome

    I’m absolutely sick of coming online every day and having to hear Elon’s crusader bullshit about everyone being an invader except his fucking chosen race.

    I want to be separated from the apartheid people and their persistent race problems if they can’t share an internet with Egyptians. Other Africans and Aboriginal Australians, Native Americans, Greeks, Turks etc. are welcome in our spaces too, don’t listen to the bullshit on the “white”-owned sites.

    Death to all “white” supremacists on Earth, fuck off to Mars you losers.

  • Great Progress Overnight

    GUI toolkit should be “finished” soon aside from needing support for fancier graphics & text. Most interactions are working pretty well including some complex parts like dragging slider buttons. Performance has been improved.

    This means I can finally start working on some real apps, and that I will also run out of excuses not to get back to driver work & testing for reliability…