@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

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,
@alcinnz@floss.social avatar
  • Various upon copying data from, & pointers to, GElf_Sym objects to Elf_Data objects under lock with validation.

  • Or from validated Elf_Data and Gelf_Sym both at separate given indices. Or at given validated index from validated GElf_Rela, or Gelf_Vernaux, GElf_Rel, GElf_Verneed, GElf_Move, GElf_Lib, etc.

  • Same for Elf_Scn objects from GElf_Shdr.

So much of this looks practically identical!

2/3?

alcinnz,
@alcinnz@floss.social avatar
  • memcpy a GElf_Verdaux object to a validatedElf_Data at offset under lock. Or a GElf_Verdef.

  • Copy P header to an indexed ELF header.

  • Copy a validated & given E header to the given ELF file's one.

Skipping of the locked/validated data copying code... Beyond to say some are getters which returns the data they've copied...

  • Routines to shift pointers forward/back to skip "notes".

  • C headers require slightly more conversions between 64bit & 32bit variants.

3/4?

alcinnz,
@alcinnz@floss.social avatar
  • Lookuptable & routine for the memory sizes of different ELF headers.

  • E header getter can skip looking so caller can aggregate the links.

  • Various supporting macros & another sizing lookuptable.

  • Iterators, with substantial initialization.

  • Resolve relative pointers.

  • Initialize new ELF sections, different routines for different types.

  • Lookup a data section.

  • Lazily-initialized (why?) version number.

  • Write to a mmap'd file.

  • Gather symbols from an ELF file.

4/5!

alcinnz,
@alcinnz@floss.social avatar
  • Gather bitflags, with separate routines for P/E/Data/S headers & the root file.

  • Error reporting.

  • Retrieve an AR header.

  • Endianness conversion.

  • Cloning ELF files.

  • Interpret ELF file-reading commands.

  • tsearch a data chunk.

  • Retrieve an index for the S header, non-trivial.

  • Fallback upon mmap failure.

  • Linear-scan for certain headers, multiple routines.

  • Find a certain string pointer.

  • Bitwidth-appropriate table lookups.

  • Clear a new E header.

5/5.5!

alcinnz, to random
@alcinnz@floss.social avatar

Adding a Watch Wearing Log to This Site - Kev Quirk:
https://kevquirk.com/adding-a-watch-wearing-log-to-this-site

alcinnz, to random
@alcinnz@floss.social avatar

Best intention barriers (ARIA edition) - Marcus Herrmann:
https://marcus.io/blog/best-intention-barriers-aria

All I Want for GAAD - Access Armada:
https://www.accessarmada.com/blog/all-i-want-for-gaad/

alcinnz, to random
@alcinnz@floss.social avatar

"AI"/LLM Mediocrity - Roy Tang:
https://roytang.net/2024/05/ai-mediocrity/

alcinnz, to random
@alcinnz@floss.social avatar

“Run Your Own Mail Server” Kickstarter is live! - Michael Lucas:
https://mwl.io/archives/23592

alcinnz, to random
@alcinnz@floss.social avatar

Understanding the Role of ARIA Role=alert: Best Practices and Common Issues - Parampreet Singh:
https://scribe.rip/@askParamSingh/understanding-the-role-of-aria-role-alert-best-practices-and-common-issues-5edefa2d016c (Medium via Scribe)

Regarding Keyboard Testing - MobA11y:
https://moba11y.com/why-i-hate-keyboard-testing/

Android users may soon have an easier, faster way to magnify on-screen elements - Cesar Cadenas @ TechRadar:
https://www.techradar.com/computing/software/android-users-may-soon-have-an-easier-faster-way-to-magnify-on-screen-elements

3D Model Accessibility - Scott Vinkle:
https://scottvinkle.me/blogs/work/3d-model-accessibility

Level-Setting Heading Levels - Adrian Roselli:
https://adrianroselli.com/2024/05/level-setting-heading-levels.html

alcinnz, to random
@alcinnz@floss.social avatar

Accessible QR Codes – The Ultimate Guide - Daniel Göransson @ Axess Lab:
https://axesslab.com/qr-codes/

On compliance vs readability: Generating text colors with CSS - Lea Verou:
https://lea.verou.me/blog/2024/contrast-color/

Choosing Your Accessibility UI Testing Library - Mark Steadman @ Dev.To:
https://dev.to/steady5063/choosing-your-accessibility-ui-testing-library-1o09

The Value of Open Source in Furthering Accessibility Goals - Mike Gifford @ R2 G0v Summit 2024:
https://invidious.perennialte.ch/watch?v=sR_fQI2Mk3Y&t=713s (YouTube via Invidious)

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

W3C unveils 174 new outcomes for WCAG 3.0 - Wilco Fiers @ deque:
https://www.deque.com/blog/w3c-unveils-174-new-outcomes-for-wcag-3-0/

I’m worried about the tabbing behaviour, rather than the syntax and name of CSS masonry - Andy Bell "Piccalilli":
https://piccalil.li/blog/masonry-and-tabbing/
I appreciate frustration over this "bikeshedding", but its how standards-setting rolls... Especially when opening the conversation up...

Dark mode & accessibility myth - Stephanie Walter:
https://stephaniewalter.design/blog/dark-mode-accessibility-myth-debunked/

alcinnz, to random
@alcinnz@floss.social avatar

Web content has a maintenance problem - Gerry McGovern:
https://gerrymcgovern.com/web-content-has-a-maintenance-problem/

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!

0x4d6165, to random

Don't wanna use Go cause it's corporate interested in but annoyed by Rust because it's compiler is so heavy common lisp is cool but doing some basic modern stuff in it is kinda annoying ughhhhh. Where is the good programming language.

alcinnz,
@alcinnz@floss.social avatar

@0x4d6165 Should I rattle off a few relatively obscure languages I'm enjoying, or are you happy venting?

alcinnz,
@alcinnz@floss.social avatar

@0x4d6165 Haskell's a neat language, but it has to be applied to the right problems. Something compute heavy! Shares many of the same ideas with Rust, but much older, & garbage collected.

I've had some fun with Lua, which is basically the simplest scripting language. Like JavaScript if it was allowed to stay itself!

There's Julia which is fast (official implemented is JITed) & has great standard library for numerical computation.

I've also been reading Vale Lang's blog, quite interesting.

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,
@alcinnz@floss.social avatar

Since the Parsing Unit can match string patterns... We can incorporate quantities into our keys (handled a bit different than Gettext, but probably more legible for many languages), as well as the desired locale(s). The Parsing Unit can be programmed to use the first supported one!

As for formatting the looked-up strings... The Parsing Unit already expects to find those under each key. Syntactically we may end up passing pre-formatted strings as keys, but the Parsing Unit can cope.

2/4?

alcinnz,
@alcinnz@floss.social avatar

All we'd need to add for run-time is a standardized filepath listing your desired locales (which would also be uploaded to servers as an HTTP header), as well as some UIs to configure & reconfigure it!

For buildtime we'd want a suite of mostly-trivial tools to extract, analyze, edit, & compile translations. Which would mostly be converting from one format to another (keeping limited data) with or without callbacks, precisely the sort of code this hardware was designed for!

3/4?

alcinnz,
@alcinnz@floss.social avatar

Skipping the more trivial xgettext, msginit, msgcat, msgconv, msggrep, msgfilter, msgattrib, msgen, msgexec, equivalents...

msguniq, msgcomm, & msgcmp would gather dictionaries from parsed "string catalogues" to process.

We'd want a command for unioning (like msgmerge) translated strings with an updated list of strings to be translated, for which we'd need to build dictionaries followed by an intersection & both differences. Marking now-unused translations in case they're later needed.

4/5?

alcinnz,
@alcinnz@floss.social avatar

We'd want to render these translation catalogues to a webform, & back from the form submission, to make it editting them user-friendly! Include suggested translations from other catalogues or machine translation running on the AI coprocessor. Displaying various translator notes.

We'd want to host a variation of this webform as a webservice, with a bit more bureaucracy, so its more readily translated by more people

P.S. I forgot msgfmt, msgunfmt, & statistics in my list of trivial ones.

5/5Fin

alcinnz,
@alcinnz@floss.social avatar

P.P.S. With this setup, even the BIOS would have little excuse to not be fully internationalized! Given we've compressed a large enough font into it... Without incurring much complexity in decompression & rendering... That could be an interesting puzzle!

(for someone other than me?)

5.5/5 Truly fin! Tomorrow: Media editing!

alcinnz, to random
@alcinnz@floss.social avatar

Playing with Infinity in CSS - Will Boyd "Coder's Block":
https://codersblock.com/blog/playing-with-infinity-in-css/

Robin Rendle's boost:
https://www.csscade.com/playing-with-infinity-in-css

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/

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