Blog

  • Performance Improvements, Spreadsheet Features

    The desktop input system is now accurate enough to generally capture every keypress up to an internal buffer limit. This behaviour will probably be replicated for mouse input with some changes (e.g. compounding mouse motion events can be added together).

    This means that text input feels reasonably fast now without the lagginess, so it can potentially run real text editor & terminal workflows once those apps are fixed up..

    The spreadsheet code is also now mostly functioning to edit & load/save documents but it’s just missing any more advanced features. Some of this (“spreadsheet app”) functionality will likely be reused in other editing apps to save time on reimplementing binary format stuff.

  • Why Does Ausgov Spend It’s Money Defending Israel & UAE Instead Of This Country?

    Australian government should just leave and be with their own people, they clearly have no interest in defending this island or anyone on it.

  • Spreadsheet Features Coming…

    I’m dealing with some bugs right now but once those are resolved I expect to be able to integrate full featured spreadsheet functionality across the system. This will probably include using the spreadsheet format for some configuration & app data files, similarly to how SQLite is used on some platforms.

    NOTE: This won’t be a clone of other spreadsheet tools but it does support some of the same syntax.

  • The Palantir People Are Insane

    They just published a whole manifesto about urgently needing to weaponise AI and how the tech sector has to take over the government, but we’ve been doing that since the 1940s and now the general public want it scaled back. What fucking rock have these Palantir people been living under???

    Who is hiring such incapable people to run public companies while anyone who can actually code is shunned from the workforce?

  • Spreadsheet Functionality Coming Soon!

    This is under development now and will be very limited at first, but should help form a basis of a suite of editing apps for my OS.

    I’ve never been a big fan of popular spreadsheet applications so this won’t be a clone of those, but will overlap some of their functionality while also being useful for editing configuration files and other things.

  • I’m Still African

    I will never become a defender of the “white” race like the Palantir guy.

    I will always support businesses run by Black Americans and other diaspora groups, but not those few who serve the “white” ancestors.

  • Palantir Is Apparently Just Ripping Customers Off Anyway

    Ausgov will probably never get delivered whatever they paid their Jewish friends for in their dodgy deal to avoid public tender.

  • 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).