Engineering Blog

Gertrude Engineering Blog

In February of 2024, I randomly sampled an exhaustive list of over 167 million .com registrable domains using a custom-built Rust app which used a combination of manual hueristics and machine learning to test each for pornographic content. I was able to test a statistically significant sample size of 103,676 (0.1957%) reachable websites, and found 0.64% of them were porn.

Building a re-usable, typesafe radio or select component shows why we might need a generic React component. This tutorial explains how you can build your own well-typed and ergonomic generic components in typescript.

I've been writing a lot of heavily generic Swift code lately, and figured out what seems (to me at least) to be a really useful quirk/edge-case having to do with how Swift selects between a protocol extension static method, and a static method implemented on a conforming type.

If you want to list out all of the currently running applications in a MacOS app, you can call NSWorkspace.shared.runningApplications, and filter down the ones you're interested in using the apps .activationPolicy.

If you need your app to have access to global events (like keystrokes) which require that the app is granted authorization to control your computer in the Security and Privacy pane of system extensions, you can prompt the user for this privilege with the below code

When building a Content Filter System extension for Mac OS, the instance of NEFilterFlow you receive in your NEFilterDataProvider class doesn't have much information (apart from the not-to-be-relied-upon flow.description string). Deriving useful data from these objects is tricky, and poorly documented.

I needed to challenge for an admin user/password to protect an area of a MacOS app I'm developing. After much pain and sorrow navigating the incredibly lacking and confusing Apple documentation, I got the basic challenge working.


The Gertrude mac app helps you protect your kids online with strict internet filtering that you can manage from your own computer or phone, plus remote monitoring of screenshots and keylogging. $5/mo, with a 60 day free trial.

Start free trial →