@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

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
@0x4d6165@wanderingwires.net avatar

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/

alcinnz, to random
@alcinnz@floss.social avatar

Imagining State in Programs - Simon Safar quoting Charles Simonyi:
https://simonsafar.com/2024/imagining_state/

alcinnz, to random
@alcinnz@floss.social avatar

We Are the Curators of the Web - Barry Hess:
https://bjhess.com/posts/we-are-the-curators-of-the-web

I'm doing my part! And had to get more creative sense searchengines began enshittifying.

alcinnz, to random
@alcinnz@floss.social avatar
alcinnz, to random
@alcinnz@floss.social avatar
alcinnz, to random
@alcinnz@floss.social avatar

Since I see some chatter along these lines, reminder: Government vs individual action is not a dichotomy!

See what we can do for your neighbours to improve society to be more sustainable & just!

Have you checked e.g. whether there's a Repair Cafe local to you? Which you can volunteer for?

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

We'd want to ensure our software behaves correctly, which can be monitored using a tool which runs the given transcoder (or a wrapper around Layout Coprocessor code) over each file inside a directory tree. Then count up success/failures (in Arithmetic Core) & format a nice report (Output Unit)! Trivial to implement on our hardware!

A certain suffix(es) could indicate expected output to compare the results to (in Parsing Unit). In which case we'd want to output diffs, later topic!

2/4?

alcinnz,
@alcinnz@floss.social avatar

Its trivial to find sample inputs, so I think it'd be most convenient to dump all them into a common folder. Hence that design.


To ensure our software is performant we'd create a tool which runs a transcoder with some given inputs (possibly of different lengths) taking timestamps & possibly other firmware-exposed metrics before & after to estimate how much resources it took.

Except... What impact are other tasks having on these measurements? We'll turn to statistics!

3/5?

alcinnz,
@alcinnz@floss.social avatar

We'd take multiple measurements repeating the tasks different numbers of times, from which we can compute the average (mean).

We can then send these numbers over to the Layout Unit to prepare (consisting mostly of rescaling) charts for the Compositor to render as dots, & lines. Computing a layout to communicate numbers would be quite similar to computing one to communicate text, just much easier since they're already numbers! Text would be added to communicate what the numbers mean.

4/6?

alcinnz,
@alcinnz@floss.social avatar

We can compute a straight line which minimizes the distance from each of the samples, sending that to the Compositor to render as a trendline. We can bucket how often we've seen each time measurement & have the Compositor compute a smoothed line for Kernel-Density function, upon which we could add a vertical line indicating mean. And we could have a bar graph showing the means for each benchmark.

This could be verbalized as beeps with an underlying square wave indicating the trend.

5/6?

alcinnz,
@alcinnz@floss.social avatar

To ensure our software is secure there's a few tools we could build! We could monitor (using a reverse breadth-first search) which inputs ends a transcoding to ensure it matches expectations.

We can also have the Arithmetic Core feed it random input whilst running parsers on its output until we find some input which causes the output to become invalid. As that would indicate likely bugs. Running a breadth-first search afterwords could help find a simpler input that triggers the error!

6/7!

alcinnz,
@alcinnz@floss.social avatar

To find errors faster we could use the breadth-first search to generate valid inputs, & feed random variations upon them to the transcoder. I suspect that truncating valid inputs would be a common source of bugs!

6.5/6.5 Fin for today! Tomorrow: Version control with CRDTs & AutoMerge!

alcinnz, to random
@alcinnz@floss.social avatar

There's a class which complains upon seeing a colour value > 3b, due to CVE2009 3459. There's a routine locating parsing an INI configuration file.

But primarily PDFID consists of a routine & wrapping class to parse the PDF with that minor analysis to output XML via ETree & some additional utils. Or to a Python dict, or human-legible string, or via XML...CSV or JSON.

There's also a class for parsing those XML files, augmented by a Count class. It can load plugins.

2/2 Fin! Tomorrow: LibELF!

alcinnz, to random
@alcinnz@floss.social avatar

Upon request (lost note as to whose) today I'm studying the PDF testing Python library/tool pdfid! Skipping over the fetching & parsing akin to what I described for LibPoppler, which forms the majority of the library!

There's a Entropy class which buckets various bytes from the file to estimate how predictable they are. There's some utilities for traversing the PDF structure. There's some trivial string reformatting utils, which can be incorporated into the parsing.

1/2?

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