#SyncThing, like #MailPile, is another cross-platform app that launches it's UI in the default browser, rather than running most of Chrome(ium) in the background so it can have it's own window that doesn't look like a browser tab. App makers using #Electron, take note.

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

I pushed out v0.3.2 of gophwr, my graphical #gopher client in #Racket!
It now supports clickable links, queries, and adjustable colours.

(Binary releases don't require Racket to be installed.)

It's still very unpolished, so patches and bug reports are welcome!

Compile-time data typing is perfectly designed for a world where every time any data anywhere on the Internet changes its structure, you stop and recompile every program on every computer on the Internet

Also I wrote a little bit about about using this same protocol for synchronizing browser sessions. By encouraging browser UIs to store their data in an XML database.

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: archagon.net/blog/2018/03/24/d

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.

Fight back.

Does anyone know a (preferably community supported) service that mirrors #RSS feeds? I frequently stumble upon sites that block #Tor traffic, thus preventing my reader from accessing their feeds. Thanks!!

WASI aims to bring cross-platform, sandboxed executables using webassembly as the base to non-browser systems github.com/CraneStation/wasmti

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) medium.com/@benlaurie_18378/ho

Are there any better document management systems than Sharepoint? I would like to find something that is viable for commercial use that doesn't feed the beast called Microsoft.

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!

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.

Using an RPC protocol
Using HTTP
Using SMTP
Putting the request in a SQLite database and uploading it to a Web form that emails it to the backend server which will email you back in 1-2 business days

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

LENS, my #RustLang Linux-based non-Unix-like operating system project, has released version 0.3.0, now including the first ever contribution by someone other than me!


Show more

For people who care about, support, or build Free, Libre, and Open Source Software (FLOSS).