📣 #TWIG #28 is out!

The new GNOME Shell screenshot UI got merged, Builder got improved podman/toolbox support, a new third party extension manager, FOSDEM, three new foundation projects... and much more! 🚀



Traversal is a new uprotocol client for sharing files securely: play.google.com/store/apps/det.

I was going to wait until the second release is out, but google is slow to deliver updates (it's been 7 days), so here it is. Give it a try (it is fast).

Been listening to Broods' Evergreen album and I really like it. I love albums with a specific theme or tone.

My MR that adds rstcheck as a plugin to GNOME Builder for linting reStructuredText files has been merged :)

P.S. Fullscreen screenshot because I like my setup.

The first release is in review on Google Play. This will be a continuation of TrebleShot project under a different name and will be fully compatible with it. I already began working on a desktop version that will be released under GPLv3. It will use GTK4 with libadwaita. I know this should be cross platform but what I care about is uprotocol and libcoolsocket being available as libraries that other apps can build against.

I always thought pwned was an acronym for password owned or something. But no, according to the internet, it is just a spelling error. Just disappointing and unnecessary to say to the least.

Btw, have you heard of ethereal R&B? Me neither, but I know it is alive and is among us.

Custom ports will be a thing for uprotocol soon. I needed it for testing, but it will also enable multiple uprotocol servers to run on the same host at the same time.


For the record, considering the type erasure, this should actually be the correct behavior, but like I said, there are cases where it actually worked, so that's why I was going with it here.

FYI, after the type erasure, what happens is Task<X> and Task<Y> become just a Task. X and Y objects are actually a Object type, meaning generics are checked at the compile time and not in runtime.

Show thread

The Kotlin code in the first screenshot gave me a hard time due to it being very hard to catch.

Simply put, filterIsInstance filters a list and returns a new list of given reified type, but in this instance, it lets other types slip through it and thus cause a cast exception.

I tested it in other places and could not reproduce the issue.

The second screenshot shows the value that should be filtered but is not.

Finally, this is hard to catch because inline functions don't appear well in the stacktrace.

My new extension Awesome Tiles is available on GNOME Extensions.

It is good for moving windows around. You can also reconfigure the keyboard shortcuts to your liking.


I developed a new tiling manager for GNOME Desktop. It has the settings page and notifications etc. I just need to finish writing README and other small stuff before the release.

Did GitHub eat the CI logs? Yes, it did! Did Java introduce a bug/change that I can't confirm because GitHub ate the CI logs? Maybe! Does all that boil my blood? Yes, it certainly does! github.com/uprotocol/platform-

Don’t forget to share our messages! We rely on all our supporters to help us spread the word.
#GNOME #FOSS #SupportFreeSoftware

Unlike Flutter, one would expect Compose would draw native views, but it doesn't even use the native view system, which is odd. That explains why it took them so long to come up with. Still, I am happy that stateful and stateless widgets have become a thing. In the old design, it was the developer's job to explain to views what changed. Now, what contributes to the drawing of views is treated as "State"s. DiffUtil.ItemCallback and other similar classes were probably the result of the old design.

Show older
Mastodon for Tech Folks

This Mastodon instance is for people interested in technology. Discussions aren't limited to technology, because tech folks shouldn't be limited to technology either!