@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 got into audiofiction for the political cause of avoiding DRM (not risking perceived endorsement or justification of action opposing my work), I stay because I love these stories! I have no regrets leaving popculture largely behind.

If you think I'm missing out, I say: No, you are!

I see plenty of anti-capitalism beyond occasional evil capitalists. Representation. Great historical depictions. Scifi that's more than an aesthetic. I see art creators are intrinsically compelled to make!

1/2

alcinnz, to random
@alcinnz@floss.social avatar

As a means of exploring some of what's involved in modern CPUs... What would we need (microarchitecturally) in a CPU fast enough to output decent audio & video unaided by a sound or graphics card? That is a megahertz-fast vectorized-32bit machine with megabytes (if not gigabytes) of RAM... Non-trivial!

To handle that much RAM at those clockrates we need caching, which relies on "data locality" & prefetching. Except the hardware has no idea how the software structures the data.

1/?

alcinnz, to random
@alcinnz@floss.social avatar

With the enshittification of Bandcamp & Patreon, I'm wondering if we need to build a new (non-cryptocurrency) payment processor? One more friendly to FOSS & indie creators?

People interfacing us to the banking industry whilst minimizing their sway over us. This'd be more a business endeavour than a software one...

I want understated branding, & ideally easy to setup paywalls (authenticated proxy?).

Stripe's pretty good though... TideLift, LiberaPay, & OpenCollective should have the skills...

alcinnz, to random
@alcinnz@floss.social avatar

I wonder: If we lean on software as much as possible, what's the bare minimum we'd need in a computer?

For stereo audio output We'd want to output 2 16bit numbers at 44.1khz. For graphics we'd want to manipulate say 2,073,600px (1920x1080), with each pixel being 3 or 4 8bit numbers. That is 8MB of framebuffer RAM, 20bits of address.

Overall a vectorized 32bit machine would work great!

So a fairly beefy CPU compared to 1980s standards... Nothing compared to today's!

1/2?

alcinnz, to random
@alcinnz@floss.social avatar

Yesterday I discussed how I'd build a codeforge for & upon our string-centric hardware (as well as clientside feedreader, crash reporter, & fallback crash reporter) comprising of a repo viewer & issue tracker. What else would we want to include in it?

We'd want to let you down the AutoMerge documents to fork them & attach them to issues to request they be merged. We may add a minor integration between the 2 components to merge with a click of a button, but that might not be worth it.

1/5?

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

In our hypothetical string-centric hardware basically all the unpredictable memory accesses to the Parsing Unit's instruction prefetch/predocode. Yet there's only so much it'd be able to handle a time, hence we'd periodically need to optimize the Parsing Unit's code to fit in a rigid structure we can hope to prefetch/predocode!

We'd implement a smaller-scale firmware version triggered upon inserting new rules into existing parsers, & a larger-scale version as part of the compiler.

1/6?

alcinnz, to random
@alcinnz@floss.social avatar

My take on machine-narrated books:

This "speech synthesis" tech is vital, there's people who rely on it! And it enriches many lives to build more natural sounding ones!

But don't advertise them as "audiobooks", a good narrator brings more than a speech synthesizer can (Eleven Labs is awfully good though). Any ebook can be speech-synthesized, so just call these ebooks! They don't deserve a separate marketplace, or to compete directly with audiobooks!

alcinnz, to random
@alcinnz@floss.social avatar

Linux Elitism...Again - Kev Quirk:
https://kevquirk.com/linux-elitism-again

This behaviour is shameful! Flooding a request for empathy with pushback. This is no way to promote software freedom, it rightly turns people off!

Some people (not me) have had a bad experience with "Linux", we must respect that.

alcinnz, to random
@alcinnz@floss.social avatar

LibPoppler ships a vendored vector graphics library "Splash" as an option for rendering PDFs to images. I'll briefly describe it this morning!

It includes a suite of classes for rendering fonts, consisting of little more than accessors. Loaded using FreeType (via wrappers) with caching, then matrix-transformed.

There's an array of path points with corresponding flags & "hints" (for recovering from low-res displays) arrays. Has methods for encoding common curves into these arrays.

1/3?

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

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

Today I'm studying the rest of GPerf, focusing on its input 7 output formats.

For input it reads a line-based parser incorporating configuration options ("declarations") & escape-syntax.

The output is C code split into macro-definitions, an enum, & (through more sophisticated logic) the code to compute the chosen hashfunction. Utilizing template classes to output those macros & enums, as well as the output results & their comparisons.

1/?

alcinnz, to random
@alcinnz@floss.social avatar

To display video, GStreamer includes a couple plugins for rendering to a GTK (3?) widget, with most of the code going towards that GTK widget for it to render into. There's 2 variants of this code, one rendering via OpenGL & the other rendering via Cairo. Including shared baseclasses for both the plugin & widget.

To render via Cairo we get the dimensions & decoded frame, computes scaled frame, constructs image surface, draws a background rect, & draws the scaled frame-filled image.

1/?

alcinnz, to random
@alcinnz@floss.social avatar

XMPP is a feature-full (despite what those who haven't tried it will tell you) federated instant messaging IETF-standard protocol. Which so happens to be perfectly-suited to the web-centric foundations of our hypothetical hardware-Internet Communicator! Though with little extra effort I'm sure you can apply the same techniques to SIP, Matrix, the cellular network, or whatever; this is left as an exercise for the reader!

I'll be exploring the basic Core, IM, & A/V Calling XMPP profiles.

1/3?

alcinnz, to random
@alcinnz@floss.social avatar

While I'd like JavaScript to disappear from the document web (maybe WebASM splits off the app web? Whilst Trojan Horse'ing platforms SDL back to the spotlight?), I do not deny that JS has provided some nice enhancements to the document-web!

I'm not asking anyone to stop using JS, I am asking you to stop relying on it! And I'm keen to explore how to achieve in a more declarative way some of the niceties which are currently provided by JS!

W3C seems to be moving in that direction now too!

alcinnz, to random
@alcinnz@floss.social avatar

Having discussed how to decode FLAC files, today I'll explore how to encode them! Using the reference implementation! This is more involved, there's decisions for the computer to make... Thus require a lot more properties in the "encoder" class... And more hardware-acceleration...

The entrypoints are the FLAC__stream_encoder_process[_interleaved] method, wrapping a verification-ringbuffer, copying data into buffers, & for each "block" of a configurable size...

1/?

alcinnz, to random
@alcinnz@floss.social avatar

Potential usecases for my Argonaut Stack:

  • Browsers (duh!)
  • eBook readers
  • eMail clients
  • Help viewers
  • Simpler Jupyter Notebook reimplementation
  • Office Suites

And coming from a conversation yesterday:

  • Prototype a nicer alternative to the commandline?

What else could use an HTML/CSS renderer?

alcinnz, to random
@alcinnz@floss.social avatar

Hey, can I get some help from an experienced browser engine dev?

I want to understand webpage layout better so I can explain it better to computers. I'm not proud of the code I've written there & I welcome full rewrite! Or at least guidance in doing so!

I'm building my own (no JS) browser engine! :boost_love: :boost_ok:

P.S. I also have a theoretical Domain-Driven-Development approach I'd enjoy seeing someone try! But it feels like too much risk to me...

alcinnz, to random
@alcinnz@floss.social avatar

In our hypothetical hardware-browser how'd we compress data we upload? Like, say, your password/passkey vault?

Deflate is a popular compression scheme, alongside its many variants! What does this involve?

  1. Lempel-Ziv compression, replacing runs of text with backreferences to previous occurrences.
  2. Count frequencies of Lempel-Ziv frequencies.
  3. Compute a "Huffman Code" from those frequencies.
  4. Compress using that Huffman Code.

How'd we do this on our hardware?

(Bonus thread)

1/5?

alcinnz, to random
@alcinnz@floss.social avatar

One thing us developers can do for the environment: Write more efficient software!

You might save some electricity, thus making it easier to switch the grid fully over to renewables. But what really matters is for you not to be the reason your users buy new hardware!

Depending on how large your audience is and how green your other habits are, this might be the single biggest thing you can do! Probably not though.

alcinnz, to random
@alcinnz@floss.social avatar

Periodic reminder: If you oppose DRM, the way to show it is to popularize media published without it! I've gotten quite into audioshows like Wolf359, Magus Elgar, The Red Panda Adventures, & The Magnus Archives! And so much more!

Also there's webcomics like Pepper&Carrot or Lackadaisy. Or shorts like Blender's!

Enjoying "popculture" legitimately is miscounted by politicians (& e.g. W3C) as support for DRM, whilst "piracy" is miscounted as justification.

alcinnz, to random
@alcinnz@floss.social avatar

I've been discussing how I'd reimplement a web browser & its underlying OS upon custom-designed hardware, with additional such hardware needed to output visuals. In brief this involves Parsing & Output Units to reformat input streams into output occasionally consulting a bare-bones "Arithmetic Core" with dedicated 16bit RAM. Add a "Tree-SIMT" for layout & "Compositing Co-Processor" for rendering.

How'd I reprogram this to play videos in Xiph's Ogg formats?

https://adrian.geek.nz/from-scratch/#browser-from-logic-gates

1/5?

alcinnz, to random
@alcinnz@floss.social avatar

To create a standard library for cross-platform make/configure files GNU uses M4 to implement a standard library. Though personally I find this makes those build files quite illegible! Over this week I'll study AutoConf.

The core of this library includes:

  • An inserted call to finalizers.
  • Checks for various peculiarities GNU has faced.
  • Locating testing directories, for your test suites.
  • Globals into which to collect functions, haders, identifiers, libraries, makevars, & programs.

1/2?

alcinnz, to random
@alcinnz@floss.social avatar

Occasional reminder:

If you "pirate" media politicians, corporate executives, etc will use your actions to justify DRM.
Enjoy it "legitimately" & they'll (mis)count you as supporting DRM.

The way out is to seek alternative entertainment! I love Zero Hours, Magus Elgar, Wolf359, The Magnus Archives, & The Red Panda Adventures! Amongst others. You?

I'm currently listening to Hi Nay, & relistening to ars Paradoxica.

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