@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

This morning I'm skimming over the rest of LibPopplers core library & describing what I missed in using the pdftohtml command as a guide in studying it.

Which includes:

  • Parsed & binary searched Unicode Mapping tables, used in various Output Devs & the Global Params.
  • Various dataheaders, especially related to Unicode & builtin fonts. May be paired with lookup routines.
  • Convert between UTF8, UTF16, & UCS4.
  • UTF8-handling utils.
  • Parsed viewer preferences.

1/2?

alcinnz, to random
@alcinnz@floss.social avatar

How Do I Prepare My Phone for a Protest? (Updated 2024) - Dan Phiffer, Tomas Apodaca, Miles Hilton, & Maddy Varner @ The Markup:
https://themarkup.org/the-breakdown/2024/05/04/how-do-i-prepare-my-phone-for-a-protest-updated-2024

I must emphasise: Simplest & safest guide to bringing phones to protests: Don't!

If you want to take photos use a dedicated camera.

alcinnz, to random
@alcinnz@floss.social avatar

Printing music with CSS Grid - Stephen Band "Cruncher":
https://cruncher.ch/blog/printing-music-with-css-grid/

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

A to Z of Assistive Technology for Reading Digital Text - Veroniiiica:
https://veroniiiica.com/a-to-z-of-assistive-technology-for-reading/

alcinnz, to random
@alcinnz@floss.social avatar

Brainstorming puzzle for you devs:

As a computer boots up we often want it to offer hardware configuration & testing tools. What's the simplest yet most capable infrastructure we could build for those tools to offer a UI?

Would the answer change much for the hypothetical hardware I've been exploring? Including:

  • A main processor specialized in parsing & reformatting strings
  • Sine wave generator
  • "Layout Coprocessor" which can perform running-sums (& other maths) on trees
  • Sprites
  • etc
alcinnz, to random
@alcinnz@floss.social avatar

Having discussed the challenge of text layout/rendering yesterday, & reboosted some jokes about it: What all is involved?

In GNOME's stack we use FontConfig to lookup fonts for a particular style, Pango to split lines, FriBidi to normalize text direction, LibICU to find split points, FreeType to parse fonts in a wide variety of formats, Harfbuzz to size runs of text positioning "glyphs" within it, & Cairo (or OpenGL) to composite those glyphs onscreen.

Doing the job properly is hard!

1/2?

alcinnz, to random
@alcinnz@floss.social avatar

Much of what you see in PDFs is text, rendered via some font. So how does PDF (specifically LibPoppler's implementation) handle fonts?

It gathers the fonts into a FontDict class (indexed presumably by numeric ID). With fonts themselves storing various textual names, Ref into the PDF file, weight & stretch (enums), the encoding, bitflags, transformation matrix, bbox, width for missing chars, ascent & descent dimensions, flags whether it can convert to/from Unicode, & flags validity.

1/2?

alcinnz, to random
@alcinnz@floss.social avatar

How computer scientists think about performance boils down to: Reduce loops & loop iterations! Especially nested loops!

They write highly-approximate (CPU-independent) formulas describing how much the CPU-time & memory-space used scales with the amount of data processed.

Modern CPUs though want us to show a heavy preference for arrays...

alcinnz, to random
@alcinnz@floss.social avatar

LibPoppler Gfx (Graphics) class stores a linked-stack of state, so what does this state hold? What does it do?

They hold horizontal & vertical resolution, matrix, bbox, size, integal rotation, blend mode (an enum), integral overprint mode, 4 transfer "functions" (instances of Function subclasses), whether alpha is a shape, integral render mode, path with current coords (& separate line coords, clip bbox, rendering intent 32byte string, colourspace transformations, & default colourspaces.

1/?

alcinnz, to random
@alcinnz@floss.social avatar

React, Electron, and LLMs have a common purpose: the labour arbitrage theory of dev tool popularity - Baldur Bjarnason:
https://www.baldurbjarnason.com/2024/react-electron-llms-labour-arbitrage/

alcinnz, to random
@alcinnz@floss.social avatar

Save the Web by Being Nice - Andrew Stephens:
https://sheep.horse/2024/4/save_the_web_by_being_nice.html

alcinnz, to random
@alcinnz@floss.social avatar

Bill Gates, Man United and 20 other sites that ban linking to them - Malcome Coles:
https://malcolmcoles.com/no-linking/

alcinnz, to random
@alcinnz@floss.social avatar

Apple, Google and others don’t care about your data and photos – but you should - Craig Grannell @ Stuff TV:
https://www.stuff.tv/features/back-up-everything-because-apple-yahoo-pocket-and-others-dont-care-about-your-data-and-photos-but-you-should/

alcinnz, to random
@alcinnz@floss.social avatar

As I prepare to discuss developer tooling for my hypothetical string-centric hardware, I'm considering include tools to give an intuition for how the software's behaving. Some outputting statistical charts or diagrammed graphs.

The thing is I like my discussions of this hypothetical OS to be, as far as possible (I have discussed a graphics stack!), ambivalent towards its output medium. So how'd I verbalize such things?

Please make suggestions!

1/2!

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

Something that strikes me about the Super Nintendo sound system (as described by Retro Game Mechanics Explained on YouTube) is that it has lots of multipliers! Which I believe were expensive at the time (1990)?

I think I now have good guess at the trick Nintendo used to keep this "SPC700" sound card cheap, learning that it had a serial output to its DAC: The double&sum multiplication algorithm can give output 1 bit at a time, & accept an input a bit at a time. To be little more than an adder!

alcinnz, to random
@alcinnz@floss.social avatar

Own Your Web – Issue 14: Webmentions - Matthias Ott:
https://buttondown.email/ownyourweb/archive/issue-14/

Some links from it...

“read, write, own” web - olia "One Terabyte of Kilobyte Age":
https://blog.geocities.institute/archives/7358

The Cascade - Robin Rendle:
https://www.csscade.com/

Robb Owen's personal site:
https://robbowen.digital/

On Opening Essays, Conference Talks, and Jam Jars - Maggie Appleton:
https://maggieappleton.com/openings

We Need To Rewild The Internet - Maria Farrell & Robin Berjon @ NOEMA:
https://www.noemamag.com/we-need-to-rewild-the-internet/

alcinnz, to random
@alcinnz@floss.social avatar

Thanks to @risottobias for sharing https://tailscale.com/blog/how-nat-traversal-works with me!

Its a great link to include in the version of the thread which prompted @risottobias to share it that I'm sharing on my site!

Thank you.

alcinnz, to random
@alcinnz@floss.social avatar

What makes communication difficult for computers?

Most digital communication & storage channels are a linear sequence of text (or other bytes), so we need to "serialize" & "parse" the data from & to that format.

If the channel isn't reliable enough, we add error detection (or error correction).

If it doesn't have enough bandwidth, we add compression.

If its not confidential enough we add encryption.

These are all entire fields of themselves. Yet we haven't touched on human communication!

alcinnz, to random
@alcinnz@floss.social avatar

Humble Chronicles: Shape of the Component - Nikita Prokopov:
https://tonsky.me/blog/humble-defcomp/

Humble Chronicles: The Inescapable Objects:
https://tonsky.me/blog/humble-objects/

alcinnz, to random
@alcinnz@floss.social avatar

The most complex task a computer pertakes in: Communication!
With other software & machines, & especially with you on the otherhand!

The actual computation we ask of them , when its not just datastorage or sending messages, is typically trivial.
Thin clients are never that thin...

This I find is the crucial piece to understanding computing.

alcinnz, to random
@alcinnz@floss.social avatar

A new search engine I'm really starting to enjoy:

Stract! https://stract.com/

404 recommended it.

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

If anyone wants to discuss fuzzers (or profilers)...

I'd love to plan how I'd design ones for my hypothetical hardware!

Takers?

alcinnz, to random
@alcinnz@floss.social avatar

LibPoppler includes a Gfx class abstracting away its graphics infrastructure.

It tracks the source PDF (Doc, XRef, Catalog, & Parser) & target OutputDev, some flags (subpage, print commands, profile commands, command aborted, font changed, & OC state), linkedlist graphics resources (font dictionaries & various Objects out of the file) & state, integral update level & stack height, integral array to guard against unmatched pops, whether/how we're clipping, default matrix transform, ...

1/3?

  • 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