alcinnz, to random
@alcinnz@floss.social avatar

More news: Seems I forgot something vital in my recent CatTrap release... I need to know which fonts to use! What text to render!

I'll see what else I want to add to CatTrap (<table> support?) before publishing a new release & resume the integration test...

Whilst I've written the core code to expose this text info, I'll ensure its nice tomorrow before implementing <table> layout!

alcinnz, to random
@alcinnz@floss.social avatar

Bureaucromancy can now type & delete text! Using links the rest of my browser engine can handle.

Tomorrow I'll tidy that code up, & then over the weekend I'll prepare to move on to other input types!

alcinnz, to random
@alcinnz@floss.social avatar

I've successfully implemented typing in my webform engine "Bureaucromancy"! Appending characters to the end.

Any webdev who can use a static-site-generator or serverside-framework should have all the skills needed to implement additional onscreen keyboards!

Next: Deletion...

I think I'll leave out moving the text cursor for now...

Pretty good day!

alcinnz, to random
@alcinnz@floss.social avatar

O.K., I'll call my HURL/Stylist/CatTrap integration a tentative success! Now I'm throwing Typograffiti in to have something that can actually work as a "Haphaestus" web browser! As such I'm putting it in a new repo!

Took a bit to get something compiling here... Tomorrow I'll see what I can get running...

Now I'll resume my Bureaucromancy work!

integration test.

alcinnz, to random
@alcinnz@floss.social avatar

It seems I've been neglecting this...

CatTrap 0.3 has been released!

This pulls in Balkon updates to inline layout, some performance/reliability improvements, and allows downstream projects to inherit its length units support.

Hopefully I'll be adding more layout options soon!

alcinnz, to random
@alcinnz@floss.social avatar

news: I'm investigating some memory leaks in my FontConfig language bindings.

It seems if I ensure all garbage is collected before finalizing FontConfig then that mostly takes care of it.

The remaining leaks, as best as I can tell, appears to relate to vital performance optimizations I've put in.

I'm tempted to not worry about this & resume pulling components into my integration test...
If you want to fix this properly... Contributions welcome!

alcinnz, to random
@alcinnz@floss.social avatar

news: Looking over the FontConfig API to see if I've made the same mistake (which caused my segfaults) elsewhere... I find a couple candidates to investigate, but it appears that I'm clean.

Tomorrow if I find time, I'll see what else FontConfig's cleanup might be complaining about...

alcinnz, to random
@alcinnz@floss.social avatar

news: That fix to FontConfig-Pure did in fact fix my segfault!

But I still have some validation failures on cleanup... Tomorrow I'll do another audit to see if I made similar mistakes elsewhere in FontConfig-Pure!

alcinnz, to random
@alcinnz@floss.social avatar

news: Once Valgrind pointed me to the function that was causing me issues, I think I might have found my problem.

I got my foreign-function declarations wrong, it doesn't match FontConfig's actual ABI!

I'll have this fixed tomorrow...

But I've proofread these language bindings so many times ensuring I'm managing memory right, my ABI bindings are correct, & that I've covered the features. Somebody please take this headache off my hands! Maybe rewrite in better tooling?

alcinnz, to random
@alcinnz@floss.social avatar

I'm asking Valgrind why my integration test crashes.

Without --track-origins=yes it gave me some results fairly quickly. Though not as quickly as my Pantheon desktop would've liked, & a tad light on details.

Attempting to get some fuller output now, but that's taking forever to get started...

By tomorrow I should have enough to attempt a fix!

alcinnz, to random
@alcinnz@floss.social avatar

Ugh, the (my FontConfig language bindings specifically) are still segfaulting! Its just segfaulting faster now that I've added more laziness...

I guess I need to test under Valgrind...
I'm guessing there's a double-free somewhere...

alcinnz, to random
@alcinnz@floss.social avatar

A couple polls ended. Both of which indicate mild curiosity.

So regarding Haphaestus: In the new year I will set up an Open Collective account (OS Collective or failing that Open Collective NZ) . Depending on how much this collective receives I hope to smooth my personal income, pay people who wouldn't otherwise be able to afford to contribute, & send some money to dependencies so I don't have to take them over.

I want to ensure the works for everyone who wants it!

1/2

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

When the iPhone came out we lost good tools who didn't respond fast enough to the disruption. Computing most certainly wasn't better back then, but it did feel like we had a better vision.

XMPP was in a fragile state with few end-users being aware of how ubiquitously it powered most instant messengers of the time. Especially with them refusing to federate (in no way the fault of these standards!).

Despite hearsay from those who haven't tried it, today XMPP is a painless IM protocol.

1/?

alcinnz,
@alcinnz@floss.social avatar

XMPP (despite its incorrect reputation) is a full-featured mobile-friendly lightweight encrypted federated instant messaging protocol based on streaming XML over (amongst others) TLS. Once I setup a @snikket_im server for my , it has been extremely painless. Even when I tested federation against a personal YUNoHost server, which I hear good things about.

Under the hood Snikket's server is a branded Docker packaging of Prosody, so today I'll start studying Prosody's core.

2/?

alcinnz, to random
@alcinnz@floss.social avatar

This should theoretically fix my freeze/segfault issues...

I've added some laziness to my FontConfig language bindings so I won't wind up reading your entire font library upon layout!

I accidentally introduced a regression doing so, but now in isolation FontConfig still works. Tomorrow I'll release an update to test CatTrap against it...

alcinnz, to random
@alcinnz@floss.social avatar

Rewriting a simpler integration test & running it through LTrace... I think I'm reading too much of FontConfig's output & taking far far too long doing so! Manifests as a massive freeze!

I might also have multi-threading issues because when I run outside the main thread this freeze becomes a segfault...

alcinnz, to random
@alcinnz@floss.social avatar

news: I tried commenting out code to see where the segfault is, which I thought was getting me somewhere but...

When I instead asked GDB instead of saying "the garbage collector segfaulted" it said something useful: "FcCharSetFirstPage, but who's this caller?".

My FontConfig language need fixing! Progress!

alcinnz, to random
@alcinnz@floss.social avatar

I have some good & bad news:

Good news: I now know why I'm continuing to have those performance issues.
Bad news: Optimization isn't really helping as the task is I/O bound, I need to move the task out of the main thread. At least I might be saving energy!
Good news: Laziness has optimally intermingled compute & I/O without me needing to do nothing! That was confusing to diagnose though.
Bad news: I'm still segfaulting.

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

Hmmmm, looks like I need to benchmark CatTrap. It still too slow to be run live!

Or do I need to find a way to move webpage layout out of my main thread?

alcinnz, to random
@alcinnz@floss.social avatar

A faster Harfbuzz-Pure hackage has been published, v1.0.4.0 !

Some added APIs I'd discourage using. I published them for benchmarking. This was all about speed!

alcinnz, to random
@alcinnz@floss.social avatar

I found another optimization to try in Harfbuzz Pure!

I'm telling Haskell not to store the output data from Harfbuzz, its ~40x (depending on which alphabet you use) the storage space & more efficient to recompute. But if that data gets processed at all...

Haskell has a oneShot primitive for this.

This made minor improvements to benchmarks, but there's indications it might make a bigger difference to real code.

I should stop here, surprisingly addictive game...

alcinnz, to random
@alcinnz@floss.social avatar

I'm trying some things to address my performance bottlenecks in my Haskell language bindings for Harfbuzz.

I tried using peekArray, but that's not significantly faster than what I was already using.

Haskellers: How can I rapidly copy & iterate over an array 32bit words? My searches aren't being very helpful.

(My benchmark has almost 1mb input, 40mb output; though usually I wouldn't run that much data through it in a single go)

alcinnz,
@alcinnz@floss.social avatar

I couldn't stop thinking about this, so I managed to implement my even lighter-weight peekArray alternative! Keeping a close eye on benchmarks... (solution in next toot)

My solution moves practically all the remaining overhead (which has improved to something acceptable) to the iteration over results.

But the benchmark indicates the caller's somehow slower...

alcinnz, to random
@alcinnz@floss.social avatar

news: I made another decent dent in improving CatTrap's (or rather Harfbuzz Pure's) performance! I figured out how to cut down on how many data copies occur when initializing a font. Which cut 2.5s to layout Dracula down to 0.8s. 1/3 the time!

I still need to go further as this is a major bottleneck. Doing some clearbox benchmarking, my main issue now is decoding the results. Takes 50x longer then encoding.

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

news: I've written a benchmark to see if my Harfbuzz language bindings are the source of the performance I'm seeing...

Feeding Dracula through it, appears so!

(I considered The Little Prince like upstream uses, but Dracula's public domain status is more solid; & it's almost October)

Now I can see what I'm doing as I attempt to fix this...

alcinnz, to random
@alcinnz@floss.social avatar

news: Bureaucromancy renders onscreen keyboards! Now I need to add support for typing...

Snitched a design I saw on Apple TVs, since I find that more ergonomic than navigating a QWERTY keyboard via arrow keys. It's a tabbed alphabetical square-ish grid. Minimizing how many button presses from one key to the next.

But I'm going out of my way to make it easy for any webdev familiar with Jinja/Liquid/Django/etc templates to contribute alternate or localized keyboards!

alcinnz, to random
@alcinnz@floss.social avatar

news: Finished drafting onscreen keyboards for the Latin1 charset in Bureaucromancy, split across 5 screens.

Also made a small change to add multithreading to CatTrap in hopes that that yields real-time performance. Probably won't, but this was (unusually) trivial!

I suspect my Harfbuzz language bindings are what's slow & the LibICU are what's crashing on me...

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