Andrew Kaster

106 Followers
55 Following
341 Posts

Maintainer for Ladybird by day

Maintainer for SerenityOS by night

I’ve launched a Citation Needed membership drive to celebrate publishing my 100th recap issue!

Citation Needed critically covers cryptocurrency, the crypto industry, and its influence on policy. Paid subscriptions support much more than just the newsletter — here’s what goes into this work:

https://www.citationneeded.news/membership-drive-2026/

Citation Needed membership drive

Celebrating 100 recap issues and sustaining critical independent coverage.

Citation Needed

Kudos to Robert Nagy (robert@). Without much fuss, he committed OpenWV and enabled Widevine support in Chromium. Now we can all enjoy Netflix, Disney+, and other DRM content on #OpenBSD.

https://marc.info/?l=openbsd-ports-cvs&m=176850784406383&w=2
https://marc.info/?l=openbsd-ports-cvs&m=176850824206836&w=2

@b0rk the -p options for add, reset, checkout, etc. Managing and splitting hunks is critical for crafting a coherent atomic commit. I don't know how I'd have ever learned how to do that without it.

@pemensik here's how Ladybird does it. Getting peer information is probably the least portable socket operation I've ever seen. Every unix does it slightly differently just for fun.

https://github.com/LadybirdBrowser/ladybird/blob/master/Libraries/LibCore/Socket.cpp#L482-L521

ladybird/Libraries/LibCore/Socket.cpp at master · LadybirdBrowser/ladybird

Truly independent web browser. Contribute to LadybirdBrowser/ladybird development by creating an account on GitHub.

GitHub
@bugaevc That librsvg news is both a relief and makes me kind of want to cry. I spent so long trying to make the librsvg-for-gtk branch behave on Windows and actually produce pkg-config files that played nice with the rest of the packages in vcpkg. https://github.com/microsoft/vcpkg/pull/48344
[librsvg] Update to 2.40.23 by ADKaster · Pull Request #48344 · microsoft/vcpkg

This is a special "for gtk" backport release that doesn't require rustc librsvg was added as a dependency of GTK in gitlab.gnome.org/GNOME/gtk/-/merge_requests/8541. The initial commi...

GitHub

@bugaevc @bugaevc Thanks for the details! The intialization order of parent classes definitely makes it hard to do what c++ wants to do...

> So are/were you considering peel for some project? What are you trying to do?

I'm reviving my efforts to create a GTK4 UI for Ladybird. Last summer/fall I had scaffolding in place, but now I'm actually implementing the UI itself.

(Side note on that: the adoption of librsvg by gtk and the move of librsvg from C to rust caused problems for vcpkg that have taken a lot more effort than I hoped to resolve... and I still need a final review from vcpkg on that)

I was looking at the 'gotchas' in the peel documentation and ran across the constructor issue, and the 'weak ptr in lambda' issue and found them particularly unfortunate. I'm unsure how to create a 'proper GTK app' in C++, but looking at the Qt and AppKit UIs we already have, meshing our C++ ViewImplementation and C++-like UI concepts feels like there would be a lot of friction. Especially if we try to keep the UI components 'feeling' like Ladybird/Serenity C++. Adopting an entirely different style for one component is a bit of a non-goal as it would require contributors to gain extra knowledge from... somewhere in order to hack on the UI layer.

@bugaevc following up on this old post, why does peel not call object constructors?

That feels ... c++-hostile, at the very least. I saw in the README/docs and some issues that the goal of peel is to be as faithful to GTK as possible, but ... maybe I'm missing something.

Is it truly not possible to

```
auto* p = g_object_new(...)
new (p) MyClass; // call c++-generated constructor
static_cast<MyClass*>(p)->init();
```
?

The documentation I saw that suggested doing

```
void
MyClass::init()
{
new (&m_vec) std::vector<int>{};

...
}
```

feels like a bridge too far in being C-like.

I would expect a C++ library to either call my class's constructors, or enforce that all 'classes' are trivially constructible, to avoid foot-guns/awkward situations like that.

I remember reading about the good old days. You know, when deposing a democratically elected South American leader was done with finesse and deniability. Months and years of training rebels with CIA and special ops folks. Deniable assets so that while everyone knew it was us, politicians could go to the UN and claim that it was an "internal matter" while our new puppet government started gutting the place for parts and selling natural resources to American-run conglomerates.

Now we have the current administration just... Flying in helicopters over the capital to kidnap the president, announcing it to the world that it was us 2 hours after the operation while our military is there blockading the place. Where's the respect for the global logistics and local rebel training regime we've been using for the past 80 years? Honestly, the administration should do better. How are we supposed to grandstand from a position of moral superiority on the global stage if we're so blatant with our illegal military operations?

@bkardell I'm using Firefox on all platforms. I switched from Chrome when my ad block extension stopped blocking mid roll ads on video streaming sites I'm paying for, about a year ago I guess?

The ad landscape for sites and streaming is just infuriating as a user. Block the ads, hurt the provider. Don't block the ads, and the user experience is untenable. I don't understand why sites are even offering ad-supported paid tiers. Either I'm giving you money, or I'm watching ads. That's how it used to be anyway.

@gregkh Thanks for the posts on kernel releases and commit tracking!

I will note that some of the 'code' elements on this post and the diagram in the previous one don't look great/are illegible in Firefox's dark mode (likely a media query prefers-color-scheme: dark thing). The setting is here in Firefox's settings if you're not familiar: