#SyncThing is awesome! I wish I'd got around to installing it years ago, when I first heard about it. It solves the file sync problem proprietary tools like #DropBox solve, and #ownCloud/ #NextCloud aim to replace with #FreeCode. All purely #P2P, with no servers or #DNS required. I'm sharing folders between my laptops and some with a friend back in #Aotearoa (#NZ).
It's still very unpolished, so patches and bug reports are welcome!
Continuing my browser specs, I have now written something about defining a protocol enabling browsers to make collaborative of any webpage a builtin feature - no need for Google Docs.
Though I kept this at a conceptual level because that's complex enough, and the details of serialization don't make much difference.
Superb yet lengthy blogpost on Operational Transforms and Conflict Free Replicated Data Types: http://archagon.net/blog/2018/03/24/data-laced-with-history/
Well worth a read for any developers interested in decentralization!
I've talked about this before, but let me do it again.
The US is more or less run by the entertainment industry.
Creating your own music, art, movies, books, videogames, podcasts, and stage plays within the US is an act that robs the established power structures of attention.
Making media is an act of radicalism, of protest, and of outright rebellion.
Support local music. Go to a community theater. get a bunch of weird nerds together in a basement and film a talkshow.
WASI aims to bring cross-platform, sandboxed executables using webassembly as the base to non-browser systems https://github.com/CraneStation/wasmtime/blob/master/docs/WASI-overview.md
It's also ocap-based so there's some hope for security actually working.
However Ben Laurie (who worked on Capsicum) argues that since we have something resembling a clean slate, why try to build it on a broken POSIX'y type design? (Article also talks about how and why containers continue to break their own sandboxing) https://medium.com/@benlaurie_18378/how-to-ruin-a-perfectly-good-container-d33250fca595
I am trying to build a static site using GNU Make as the "runner", bare PHP as the preprocessor and Pandoc as the document converter.
Make, because it's amazing at not redoing useless work. PHP, because it's a native preprocessor. Pandoc because it supports multiple markup lanfuages including Markdown.
Of course, I am trying to write a generic GNUMakefile as opposed to ine that would only suit this site.
The experience has been quite... interesting!
Fin. Though I might tackle another topic later today.
I also persisted last nights thread now:
Once correctly type-casted, that gives GObject a structure containing the function pointer to call. All in constant time!
But those type IDs serve another purpose for "Prosody" templates. It supports GObject in defining it's own dynamic type system (which Prosody's data model can wrap) called GValue, which even supports auto conversion via functions looked using a binary search.
It's for this it reserves some type IDs for C builtin types, and I'm sure it makes language bindings easier.
To dynamically dispatch method calls, Vala generates wrapper C functions which calls a macro to cast to get at the appropriate "vtable" containing the function to call.
To make those macros work, every object in GObject has a pointer to it's class as it's first field. For single-inheritance subclassing that itself is the vtable once, but for interfaces it's first field is a type ID for GObject to lookup.
That preregistered type descriptor has an array mapping type IDs to interface vtables.
> denies the developer the possibility to control their brand
and rightly so.
If a developer cares more about their brand, and their app having the same UX for everyone, instead of providing the users (and distros which act as a proxy for their users) with building blocks they can use to make a coherent system, then that developer is doing something wrong.
Last night I described how I used Gee.HashMap to dispatch to the correct parser for Odysseus's templating language. This morning I'll describe how I use GObject's interfaces to dispatch to the correct method.
I also use it to abstract over different dynamically typed data sources (including GObject's GValue) for it's data model and to interpret the AST.
In short I use it very heavily.
Posting mostly about how free software projects work, and occasionally about climate change.
Though I do enjoy german board games given an opponent.
For people who care about, support, or build Free, Libre, and Open Source Software (FLOSS).