@alcinnz@floss.social
@alcinnz@floss.social avatar

alcinnz

@alcinnz@floss.social

A browser developer posting mostly about how free software projects work, and occasionally about climate change.

Though I do enjoy german board games given an opponent.

Pronouns: he/him

This profile is from a federated server and may be incomplete. Browse more on the original instance.

alcinnz, to random
@alcinnz@floss.social avatar

Yesterday I discussed collaboratively editing text, but there's other things you might want to edit!

Implementation notes: I'd keep the data in RAM in its sorted & compressed form, only decompressing it transiently for processing & modifying. Zipping from columnar format into "edit" rows would be most involved step.

For instance we'd want to edit not only individual files but whole directories of them! And the attributes attached to each of its files!

1/?

alcinnz,
@alcinnz@floss.social avatar

To implement such a "mapping" CRDT we can define an operation which sets the value at a given key to a given value, possibly to a "tombstone" value to indicate deletions. The problem comes when 2 peers attempt to set the same key to different values!

If we track our understanding of the latest edits our peers are aware of (a "lampart timestamp"), storing that in our edits' metadata, we can establish a causal ordering to these edits. When that fails we can compare peer IDs.

2/?

alcinnz,
@alcinnz@floss.social avatar

This causal sort is also vital for ordering text insertions!

Talking about text... Lists would be implemented basically the same way but with greater freedom regarding which data you can store in each node.

We may want to incorporate counters, by summing all the nudges up/down collaborators have made.

And once we have collections we'd want to store numbers, constant strings, booleans, etc in them. Combine these datatypes and we should be able to define most other CRDTs you might want.

3/4!

alcinnz, to random
@alcinnz@floss.social avatar

Once again wishing the hypothetical device I've long been describing was real!

An OS & hardware focused specifically on the task of communicating with diverse people! Using existing protocols. Barely any apps!

Just today I introduced an editor framework to it so basically every editor has infinite undo, collaboration, & composability! (I wasn't responding to anything, just how the scheduling worked out...)

This a bit more "from scratch" than I'm capable of though...

alcinnz, to random
@alcinnz@floss.social avatar

Seeing all the encouragement to try "Linux" & the common pushbacks against it...

If you insist your existing apps should run on "Linux"... I'm impressed by how imperfectly well we've achieved this! Its significantly easier said then done.

To me its very much akin to saying "Don't blame people for driving when our infrastructure is built for cars". There too I'd say we shouldn't be driving.

alcinnz, to random
@alcinnz@floss.social avatar

Continuing my study of ELF Utils' commandline tools...

After initialization both I/O & internationalization as well as parsing commandline flags ar configures LibELF to a specified format version, parses/validates the commandline flags some more ensuring additional args remain, pops the archive name as a commandline arg, & branches over the subcommand specified by those flags.

This may output some help text via LibArgP. Or it may...

1/5? for today

alcinnz, to random
@alcinnz@floss.social avatar

Workshop in Barcelona: How to Build a Low-tech Website - Low Tech Magazine:
https://solar.lowtechmagazine.com/2024/05/workshop-in-barcelona-how-to-build-a-low-tech-website/

alcinnz, to random
@alcinnz@floss.social avatar

There's a widespread impression that "Linux" isn't user friendly. I say if you choose the right distro & desktop... I endorse elementary OS!

Despite what some will tell you, don't need to use the commandline!

(getting this out of my system without jumping down anyone's throats)

Incidentally, I encourage recommending something more specific than "Linux" to avoid giving others choice paralysis.

alcinnz, (edited ) to random
@alcinnz@floss.social avatar

To ensure this order independence, we must never incur a merge conflict! Instead we'd apply arbitrary yet deterministic priority based on peer IDs. With this peers can merge as frequently or infrequently as they like! Maybe we'd integrate this collaborative editing into the SRTP/XMPP videocalls I've established?

Our established text editor already logs a sequence of editing operations, which we can reformat into a text-CRDT by adding some provenance metadata.

2/3 for today!

alcinnz, to random
@alcinnz@floss.social avatar

ELF files can be queried from the commandline, so I'm starting studying thse tools!

After init'ing i18n & parsing commandline flags addr2line parses addresses from stdin or remaining commandline args. For each (if valid) it might parse trailing text, iterates over DWARF modules list is available to find the specified one, iterates over the module's ELF SCN headers to build a relocations table to locate given address & offset it. With possible postprocessing based on additional parsing.

1/?

alcinnz, to random
@alcinnz@floss.social avatar

I've described enough tooling to make it easy to individually implement software for our string-centric hardware on the device, but building an entire browser & OS as a solo-endeavour is inconceivable... So what tooling do we need to collaborate on it!

In just the past decade Computer Science brought us the concept of CRDTs! Which represents your document as a series of edits, which combine such that no matter in which order these edits you recieved we get the same result!

1/?

alcinnz, to random
@alcinnz@floss.social avatar

Links and photos (20 May 2024) - Baldur Bjarnason:
https://www.baldurbjarnason.com/2024/links-17/

Some links from it...

Updating from macOS Ventura to Sonoma silently enables iCloud Keychain - Jeff Johnson:
https://lapcatsoftware.com/articles/2024/5/3.html

Google Cloud shows it can break things for lots of customers – not just one at a time - Simon Sharwood @ The Register:
https://www.theregister.com/2024/05/20/google_cloud_network_outage/

Complicated Sticks. - Stephen Farrugia:
https://fasterandworse.com/complicated-sticks/

alcinnz, to random
@alcinnz@floss.social avatar

Tangentially to current events...

Who's your favorite AI from fiction?

I say HERA (Michaela Swee) from Wolf359 in a heartbeat! You?

Go as obscure or mainstream as you want...

alcinnz, to random
@alcinnz@floss.social avatar

Code isn't the only thing which would be included in an the OS for our hardware-Internet Communicator! It'll need images, fonts, audio, voices, etc to communicate with you! Can we self-host much of this development too?

Up to a few thousand pixels, we could have a UI for setting the colour at any given pixel of an image (stored in Arithmetic Core) displayed onscreen. Probably worth sacrificing colour-depth for resolution. Include flood-fill!

1/3?

alcinnz, to random
@alcinnz@floss.social avatar

Unless your programs are truly trivial (and even then you'd want to call OS "libraries" for I/O) they are constructed from multiple parts each compiled separately, so we need tooling & formats to "link" these parts together into a singular whole. The other day I explored how Linux does this as it is running, today I'll be exploring the official implementation of the ELF file format.

Aside from trivial accessors, memory-mapping, hashing, & wrappers LibELF (from ELF-Tools) includes...

1/?

alcinnz, to random
@alcinnz@floss.social avatar

The deskilling of web dev is harming the product but, more importantly, it's damaging our health – this is why burnout happens - Baldur Bjarnason:
https://www.baldurbjarnason.com/2024/the-deskilling-of-web-dev-is-harming-us-all/

Personally I'm not bothering keeping up with frameworks...

alcinnz, to random
@alcinnz@floss.social avatar

I've been fuzz-testing my FontConfig language bindings...

Turns out I was never iterating over the charsets correctly... Glad to know! Quite a clunky API I'm ending up fixing!

alcinnz, to random
@alcinnz@floss.social avatar

We'd want our hardware-Internet Communicate to speak as many languages as we can, I even went out of my way to write an entire metathread ensuring it can render them all! So we'd want to reimplement Gettext!

Except... It turns out it to be practically builtin to this hypothetical string-centric hardware!

The primary runtime component is a "dictionary" in persistent flash memory mapping from untranslated strings to translated ones, which the Parsing Unit was partially designed for!

1/4?

alcinnz, to random
@alcinnz@floss.social avatar

We can have a different web - Molly White "[Citation Needed]":
https://www.citationneeded.news/we-can-have-a-different-web/

alcinnz, to random
@alcinnz@floss.social avatar

As it turns out our hypothetical hardware-browser is pretty much already an IDE! Including multiple tabs/windows, text editing (with zero-overhead syntax highlighting!), & a file browser possibly-rendered in a sidebar. All we need to add is alternate viewers/tools for the opened file!

We may even have the syntax highlighters gather symboltables to add helpful links, tooltips, & autocompletions! Maybe even render it as a table-of-contents, & highlight other uses of the selected name!

1/5?

alcinnz, to random
@alcinnz@floss.social avatar

In compiling software graphs come up all the time!

For our hypothetical string-centric hardware we may want to view parsing code at different levels of compilation! Or how about editing any parsing code visually (requires a bit more tooling...)?

Furthermore we may want to get a highlevel view of how all the components hook together! Or to debug the implied control flow in the Layout Coprocessor!

Maybe it'd even be useful for disassembling Arithmetic Core code...

1/5?

alcinnz, to random
@alcinnz@floss.social avatar

The latest Trope Talks video has Red discussing "trickster heroes", & it strikes me that these are quite reliably the heroes to appeal to me!

She gave examples of the TV shows Leverage & Columbo, as well as various gods, Bugs Bunny, Briar Rabbit, & Spiderman.

Off the top of my head I'd add The Doctor, The Red Panda, & Rocky from Lackadaisy.

Any more examples you like?

alcinnz, to random
@alcinnz@floss.social avatar

How about a tool where you take some sample input, annotate with an approximation of the desired Abstract Syntax Tree, & it'll generate a parser? By merging rules to match each sample string for each rule?

A postprocessing pass would generalize away from any overfitting, auto-incorporating a Unicode library to steer devs in the right direction. Where that Unicode library would be code-generated indirectly from Unicode's datafiles via this very tool!

2/4?

alcinnz, to random
@alcinnz@floss.social avatar

When we're loading additional code into Linux, we'll inevitably want to remove it again! So how does Linux's delete_module syscall work?

After checking access control, copying & resolving parameters into kernelspace, logging, grabbing appropriate locks, & validating those parameters delete_module() decrements the module's refcount, calls its exit function, notifies registered callbacks, for each "livepatch" adjusts CPU datastructures whilst calling callbacks, calls debugging hook, ...

1/2?

alcinnz, to random
@alcinnz@floss.social avatar

Whilst the Parsing Unit would arguably be the centre of our string-centric processors, the code its designed to run is of the sort I IRL find tedious to write. So, inspired by our optimization techniques, what tools might help make it enjoyable?

Since we have techniques to merge parsing rules & optimize them for (in this case) human legibility, what if the Parsing Unit could directly or indirectly write its own code, based on sample inputs & outputs?

1/4?

  • All
  • Subscribed
  • Moderated
  • Favorites
  • JUstTest
  • kavyap
  • DreamBathrooms
  • thenastyranch
  • magazineikmin
  • tacticalgear
  • khanakhh
  • Youngstown
  • mdbf
  • slotface
  • rosin
  • everett
  • ngwrru68w68
  • Durango
  • megavids
  • InstantRegret
  • cubers
  • GTA5RPClips
  • cisconetworking
  • ethstaker
  • osvaldo12
  • modclub
  • normalnudes
  • provamag3
  • tester
  • anitta
  • Leos
  • lostlight
  • All magazines