@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 established that compiling SQL queries & many of the more tangential features of a relational database can be framed as queries themselves, just on internal tables which we already know the schema of. So today: How do we read the desired data?

The common approach today is to store extra electrons between a transistor & its enable wire, I'll get into how we write those electrons tomorrow! Now that we've mastered the technique, it can store enough data for most non-archivists!

1/?

alcinnz,
@alcinnz@floss.social avatar

We've even refined our circuits fine enough to read back analogue data stored in this "flash" memory, though I strongly suspect there's limits to how cost-effective this strategy will be to further refine.

Stuff a silicon wafer full of these flash storage cells in 3D adding a decoder, place multiple such wafers in the same microchip package, & place multiple microchips into the hardware until we've got enough storage to meet your needs!

2/?

alcinnz, to random
@alcinnz@floss.social avatar

Taking an initial look at PeePDF...

It rolls its own AES decryptionn. Not great, but at least its decently well tested & they didn't roll their own encryption...

They vendor utils to format terminal output.

As well as utils for evaluating (via terminal command) or analyzing embedded JavaScript.

0.5/0.5 Proper study of PeePDF's central code tomorrow!

alcinnz, to random
@alcinnz@floss.social avatar

A common web component learning blunder - Dave Rupert:
https://daverupert.com/2024/05/cold-turkey-wont-fix-your-javascript-addiction/
Boosted by Robin Rendle "The Cascade":
https://csscade.com/a-common-web-component-learning-blunder/

The Gap - Ahmad Shadeed:
https://ishadeed.com/article/the-gap/
Boosted by Robin Rendle "The Cascade":
https://csscade.com/the-gap/

Hints & Suggestions - Miriam Suzanne @ International Symposium on Making Web Sites Real Good:
https://invidious.private.coffee/watch?v=iLxJ6PtuF9M&si=UmqNz2JfyDfWh0pN&t=4191 (Youtube via Invidious)
Boosted by Robin Rendle "The Cascade":
https://csscade.com/hints-and-suggestions/
Great talk, must see for any webdev!

alcinnz, to random
@alcinnz@floss.social avatar

New zine: How Git Works! - Julia Evans:
https://jvns.ca/blog/2024/04/25/new-zine--how-git-works-/

alcinnz, to random
@alcinnz@floss.social avatar

Every dependency is a potential vulnerability - Go Make Things:
https://gomakethings.com/every-dependency-is-a-potential-vulnerability/

alcinnz, to random
@alcinnz@floss.social avatar

The tech industry likes to portray itself as pursuing linear "progress", but to me it feels a lot more cyclical than linear...

I've started describing my position as: I'm a rock in the ocean. The tide wants to keep dragging me in & out, whereas I try to stay steady.

For all the talk about "constant change" I reckon "illusion of change" is a good meme to spread...

alcinnz,
@alcinnz@floss.social avatar

Could it be that this illusion of change is having the effect of keeping people too busy to effect real change?

alcinnz, to random
@alcinnz@floss.social avatar

Having recently finished discussing how I'd implement a web browser (and server) from the hardware on up, how'd do the same for a relational SQL database?

To start I'd have a central processor parse the SQL sent to this machine, & compile it in reference to queries upon some internal tables. The architecture of this central processor (whether x86, ARM, RISCV, 6502,or my hypothetical string-centric design) doesn't really matter, we're not asking much of it.

1/3?

alcinnz,
@alcinnz@floss.social avatar

Its worth digging into those "internal tables" some more.

This would include tables listing all the tables & table-columns in the database, with or without including themselves. Aside from needing to assume its schema, these'll be queried like any other table. Maybe like PostgreSQL we'll store code for processing the different data types in yet more tables?

Additionally there'd be tables for "views" which we'd parse to subqueries. As well as user accounts & access rights.

2/3?

alcinnz,
@alcinnz@floss.social avatar

Finally I'd include a table of precompiled "triggers" to run before or after the query itself.

So compiling a query to run involves running several other queries! How'd we evaluate these queries?

Lets see the data is stored in flash memory, that should be plenty for most people today! Which allows me to say: What if we paired every flash wafer with a (RISC64fim?) CPU core?

We'd want non-trivial ALUs to process the common SQL types, but barely any RAM. Separating code from data.

3/3today!

alcinnz, to random
@alcinnz@floss.social avatar

For the last of ELF Utils' commands, unstrip restores the the extra debugging information (not strictly required to run the program) strip has removed. Across all the software comprising an OS this can really add up!

After initializing I/O locking & internationalization whilst parsing commandline flags unstrip may take 1 of 3 codepaths. 2 of which are mostly the same.

It might open the given ELF file, possibly by validated 2nd unstripped ELF file, ...

1/3?

alcinnz,
@alcinnz@floss.social avatar

... iterates over the unstripped file's program headers if any locating the PT_LOAD entry & computing the "bias" between the 2 files, validates the file, & copies over the stripped sections (involving gathering sorting, filtering, & outputting them before adjusting other sections to match & applying relocations until fixpoint) with or without generating a new output file.

Or it retrieves the DWFL modules possibly outputting them, opening the corresponding ELF file to process same, or ...

2/3

alcinnz,
@alcinnz@floss.social avatar

it may generate new output file before locating the ELF module.

There's a decent amount of code for the equality comprising the merge & sorting operation I described.

2.2/2.2 Fin! Next: PeePDF!

alcinnz, to random
@alcinnz@floss.social avatar

Finishing my studying of Elf Utils' commandline tools...

After parsing commandline flags srcfiles gathers an array of all source files (via LibDWFL & a callback which iterates over each entry's sources canonicalizing filepaths), & outputs that data with or without LibArchive compression. This command's implemented in C++, not C.

After initializing I/O locking & internationalization whilst parsing commandline flags stack might output a list of all modules via LibDWFL & a callback.

1/?

alcinnz,
@alcinnz@floss.social avatar

Once its initialized some data it retrieves the callstack(s) from the DWFL file, outputs them as text, & cleans up.

After init'ing I/O locking & i18n whilst parsing commandline flags strings iterates over remaining commandline args (falling back to processing stdin) opening each given filepath.

`strings read the file in a pagefull at a time (or mmap it if possible) reformatting it into text. Or it iterates over the ELF file to determine which section to apply that processing to.

2/?

alcinnz,
@alcinnz@floss.social avatar

After initializing I/O locking & internationalization whilst parsing commandline flags strip iterates over remaining arguments defaulting to a.out & cleans up. For each it carefully opens the non-archive ELF file, finalizes some parameters, retrieves the E header, retrieves string table index, retrieves P header count, opens an output ELF file adding a basic E header, copies over P headers if any.

3/4?

alcinnz,
@alcinnz@floss.social avatar

strip might copy sections over, update string index to match, iterate over sections & their symbols again removing debug ones, & iterate over sections a 3rd time compacting them.

For each section (1st iteration) it retrieves various data possibling setting some bitflags, validates that data, & gathers summary data.

A 2nd iteration determines which sections we should remove. A repeated 3rd iteration applies a GC until fixpoint. An optional 4th iter copies removed sections to a debug file.
4/

alcinnz,
@alcinnz@floss.social avatar

A 4/5th iteration rellocates indices. A 5/6th outputs new sections. An optional one tidies section types, with another optional one tidying symboltables.

4.1/4.1 Fin for today! I need to get going! Tomorrow: Finish with unstrip!

alcinnz, to random
@alcinnz@floss.social avatar

What characterizes the different I/O mediums?

Audio tends to lean heavily on prerecorded samples, often with some degree of artistic post-processing. Getting timing spot-on is critical! Which we often achieve using an atomic ringbuffer.

Imagery require whole infrequently-changing megabytes if not gigabytes of data 30+ times a second. Often generated using symbology, "interpolations" across time and/or space, & geometric transforms. Once we've computed where to put everything onscreen!

1/2

alcinnz,
@alcinnz@floss.social avatar

Text is an information-dense medium for computers to work with, even if its very specific to the "locales" (a.k.a. cultures) you're dealing with. Its rare to find hardware today which can directly output text, for great reason! Our apps tend to lean heavily on domain-specific languages & internationalization tools.

Under the hood we tend to iterate over text, parse it, & concatenate it.

Time we can only observe passing. Randomness we can approximate, mix, & extrapolate; not create.

2/2Others?

alcinnz, to random
@alcinnz@floss.social avatar

Can I finish studying ELF Utils' commandline tools today?

After initializing I/O buffering & internationalization whilst parsing commandline flags objdump iterates over remaining arguments, handling single-arg specially.

For each arg it opens the given ELF file recursing into archives, opens an LibEBL backend, outputs a header, initializes various strings, retrieves the section-header string table index, & outputs it in a choice of format each involve an iteration over the ELF sections.

1/?

alcinnz,
@alcinnz@floss.social avatar

... readelf iterates over remaining args opening those files & cleans up.

For each arg readelf considers iterating over an ELF archive to output its index, considers short-circuiting, possibly scans to a desired section data over to a new file, initializes a LibDWFL output file, retrieves an array of DWFL moudles, & cleans up. Utilizes LibDWFL callbacks.

The DWFL processing may reveal ELF files for readelf to read. This involves retrieving the E header, initializing a LibEBL backend, ...

alcinnz,
@alcinnz@floss.social avatar

... retrieves S & P header counts, considers initializing fresh LibEBL output, & outputs desired attributes amongst numerous choices. This is the vast majority of readelf's code! Some of these function-calls are macro-generated.


After initializing I/O locking & internatoinalization whilst parsing commandline flags size iterates over remaining args defaulting to a.out, before outputting resulting counts.

4/5? for today

alcinnz,
@alcinnz@floss.social avatar

For each commandline arg recursing into archives size may output data from it in one of 4 formats iterating over P headers or sections once or twice. For the BSD format it sums memory-sizes from the section-iteration with and across all args to output them at the end.

4.5/4.5 Fin for today! Tomorrow: Finish Elf Utlis' commands!

fkooman, to random
@fkooman@floss.social avatar

Are there search engines out there that:

  1. Have their own index, i.e. not using (any part of) "big search";
  2. Community funded/publicly funded? i.e. do not take VC money;
  3. EU based/owned;
  4. Actually returns results with links, i.e. no "AI" bullshit, also not optional;
  5. Does not require you to host it yourself.

The bar is SO low these days that even a mediocre search will be more than adequate.

#search

alcinnz,
@alcinnz@floss.social avatar

@fkooman Stract I believe fits your wishlist, and I doubt there's any other contenders...

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