If you really want to help Firefox succeed, file a bug on webcompat.com/ when you find a broken website. Don't just switch back to Chrome; let Mozilla know there's a problem so they can try to fix it.

When browsers lose market share, they fall into the "compatibility death spiral." Sites don't bother to test, they break, and users flee to the browser that "just works." Mozilla is fighting this battle every day, and it just got harder.

My GUADEC 2018 presentation - how did I forget to post this?

Patterns of refactoring C to Rust - the case of librsvg. people.gnome.org/~federico/blo

this is Betty Holberton. she invented the concept of breakpoints for debugging. ever heard of her? you probably haven't, because our field sucks ass and constantly erases its own history.

EFF is resigning from the w3c over DRM and the Encrypted Media Extensions standardization process. This was probably inevitable once w3c leadership abandoned consensus in this arena, but it's still such a bummer to see eff.org/deeplinks/2017/09/open

Interesting that github.com/KDE/rust-qt-binding - the Rust Qt binding generator - has you write an API definition in JSON (not unlike .gir), and then it spits .rs files, into one of which you write your implementation, and the rest is boilerplate.

Then, the compiled Rust can be used from C++.

Gnome-class has a different approach - using procedural macros to extend the Rust syntax, to generate GObject ABI.

We could then generate .gir from that, or directly from the procedural macros.

If you are looking for a small C-to-Rust project, xdgmime is a good place to start.

Check out @slomo's sample implementation of GObjects completely in #rustlang, with automatically-generated bindings to JS and Python: github.com/sdroege/gobject-exa

Libpng's error reporting is shit, but if you only care about "out of memory" and "invalid PNG", it's manageable. I'm assuming one feeds it data by hand instead of letting it use stdio.h plainly.

Then, Cairo has a bug in the way it converts PNG errors to cairo_status_t: bugs.freedesktop.org/show_bug.

I keep thinking that Rust's error chaining scheme is the greatest thing ever.

About C's implicit conversions - this prints "one point five" "wat".

#include <stdio.h>

main (void)
float one_point_five = 1.5;
float one_point_one = 1.1;

if (one_point_five == 1.5)
puts ("one point five");
puts ("wat");

if (one_point_one == 1.1)
puts ("one point one");
puts ("wat");

return 0;

If you use doubles, it works as expected. Explanation in the next toot.

My GUADEC talk was accepted! It's going to be "Replacing C library code with Rust: what I learned".

Re: MP3: As we all know, something is dead as soon as its original creator can no longer exclusively make money off it. This is why "Romeo and Juliet", "Peter Pan", and the collected works of David Bowie are no longer performed or played in any form. It's just facts.

Hm, if toot.cat is going whitelist-only, I think that's fine for toot.cat, but maybe not fine for me. Maybe I should move.

Any node recommendations I might consider?

Show more

A Mastodon instance for cats, the people who love them, and kindness in general. We strive to be a radically inclusive safe space. By creating an account, you agree to follow our CoC below.

Instance Administration

  • Woozle: Supreme Uberwensch, general support, web hostess
  • Charlotte: tech support, apprentice in warp-drive arcana (aka Mastomaintenance)
  • ash: backend stuff, gay crimes

The Project: