@lmonterrosa #ZLibrary has a much larger collection than #libgen. #piracy
@DieselBoom Possibly you intended to respond to the person I was quoting, but they aren't on the Fediverse. I provided a link.
@alcinnz Well, so, the effect of any finite-length string on a particular DFA is a finite map from possible states at the beginning of the string to resulting states at the end of the string. For the empty string it is the identity function.
You can compute the effect of a concatenation of strings by composing these maps. If you do this bottom-up on a long string, starting from all its one-character substrings and then consolidating them into a tree of substrings of length 2, 4, 8, etc., each exhaustively covering the original string, you have a log-time parallel algorithm for DFA evaluation on the string. The final step is to apply the finite map computed for the entire string to the initial state defined by the DFA.
Then, if desired, you can propagate the results back down the tree to find the state of the DFA at every character.
Is precisely the parallel prefix-sum algorithm, with the monoid operation being function composition rather than, for example, integer addition.
Does that make sense? I don't know how to evaluate the clarity of my explanation in part because I don't know how familiar you are with the background.
@alcinnz I don't think matters if you're using a nonzero winding rule or an even-odd winding rule; what you care about is which side of each edge each pixel on scanline Y=218 is on, not whether two edges intersected at Y=217.5 or Y=217.2.
Yes, intersections are what reorder the line segments between scanlines. But if you have \(N\) line segments you can have \(\frac{N(N-1)}{2} = O(N^2)\) intersections between them between two successive scanlines; heapsort can nevertheless get them back into the right order for winding-rule tests in only linearithmic time, which you can't do if part of your algorithm involves enumerating all the intersections.
You could be right about Bentley-Ottman; there are surely aspects of the problem you're trying to solve that I don't understand. I've only ever written extremely simple scanline renderers myself.
Quoting [a post on the orange site](https://news.ycombinator.com/item?id=33639015):
*Me and my colleagues will be affected by the end of Z library and co related projects.*
*Here in Brazil and for sure in most second and third world countries, people don't have money to spend in books.*
*You can argue that people can go to the library, but in most cases it's even expensive to take a bus or taxi even a Uber.*
*I'm a law student at an university in brazil. Law books are really expensive. Even though my university have a library, sometimes it doesn't have the books that the professors ask us to read.*
*Since I found z library I could have access to most of books that I needed.*
*I do know that the writers and publishers have costs and they need to make money, but I don't agree with the fact that we have to pay to have knowledge. It's more like if we don't have money, we can't have knowledge.*
Sad #piracy news, Z-Library founders arrested in South America: https://www.justice.gov/usao-edny/pr/two-russian-nationals-charged-running-massive-e-book-piracy-website
@alcinnz Right, the parallel prefix sum algorithm generalizes to arbitrary monoids (the observation that launched Stepanov on the exploration that led to the STL) including, in particular, the finite map composition that gives the semantics of DFA execution.
(Does that make sense? I'd be happy to elaborate if it's too telegraphic.)
@alcinnz If you're just rasterizing trapezoids to pixels, do you really need to know the intersections of the edges? I'd think it would be enough to know the ordering of edges on the current scan line, which you can generate in guaranteed linearithmic time by heapsorting the current edges by their current X-coordinates.
You can also do this in usually linear time by insertion-sorting the list, but then your worst-case execution time guarantee is only quadratic, because you can construct a pathological case where the ordering of active edges reverses from one scan line to the next, hitting insertion sort's worst case.
@freemo, is there a chance of getting Markdown code blocks fixed on #qoto? I'd like to be able to explain what I mean in cases like this to Adrian using actual code instead of prose, but that's not really feasible if the pseudo-Markdown handling is eating all my newlines and indentation. And I imagine this kind of desire is common among your intended target audience, people who discuss ideas using reasoning and evidence; evidence very often comes in the form of code nowadays.
@bitsavers @ceejbot How could I forget it? It was a major institution for more than a decade!
@freemo Yeah. On the other hand, even defederating based on lies is a kind of de-escalation; will tend to result in less interactions, but the interactions avoided will be disproportionately harmful interactions.
@alcinnz Generally I think that in cases where glyph selection depends on context, the context function needed can be expressed as a DFA, and DFA execution can be parallelized using the log-time parallel prefix sum algorithm (I saw a paper a few years ago using some version of SSE for this for regular expression evaluation).
Would be pretty cool to support glyph selection that *can't* be expressed as a DFA, like TeX parenthesis size selection, but for just rendering writing systems like Arabic, Devanagari, and country flags, I think a DFA is probably enough.
@freemo Thank you for being willing to take this on. I know how dispiriting it can be.
@bitsavers I greatly appreciate your work, including wiretap.spies.com.
@digital_carver @ner Oh hey, that makes sense. Thanks!
@dec_hl like, under FreeDOS with Russ Nelson's packet drivers for an ISA Ethernet card or something?
This one is for all the new people on #Mastodon: did you know that the #fediverse has more than just a microblogging replacement? And that they can all interoperate with your Mastodon account?
Check them out!
Facebook replacement: Friendica
Instagram replacement: Pixelfed
YouTube replacement: PeerTube
Spotify replacement: Funkwhale
MeetUp replacement: Mobilizon
Reddit replacement: Lemmy
Podcasting replacement: Castopod
GoodReads replacement: BookWyrm
@radehi being at peace, now there's a skill worth having
@vihart By the way, "Twelve Tones" is my favorite information of any kind about music theory and something I have watched at least three times. So thank you for doing things you were bad at long enough to get good, and then doing things you were good at to make it. I wouldn't say has changed my life but definitely contributed to it.
@vihart Unfortunately I'm still pretty bad at *almost* everything, so I guess I have the skill of being bad at things down. But I think is important to be at peace with being doing things I'm bad at. Otherwise how will I get better?
I read a lot. Sometimes I learn things. I like making things. I think reading and doing are complementary.