"The Art and Secrets of #Karambola" - a digital 92-page #artbook heavily illustrated with yet unpublished sketches, drawings, paintings and locations from the game - is now out!
Agata (@holypangolin) reveals her thoughts on the curious fruity characters’ personalities and backstories, as well as some difficult decisions she had to make during the design process.
https://store.steampowered.com/app/3172920/The_Art_and_Secrets_of_Karambola/
https://holypangolin.itch.io/the-art-and-secrets-of-karambola
The recording of my #FOSDEM talk - a dive into a bug in USB 2.0 and the problem of spontaneous modem resets that used to be experienced on the #Librem5 is now available to watch: https://fosdem.org/2024/schedule/event/fosdem-2024-3200-universal-serial-bug-a-tale-of-spontaneous-modem-resets/ #linuxmobile #mobilelinux #usb #fosdem24 #fosdem2024 #fossonmobile #mobile #linux
The newest game I've been working on, ODGŁOS, is finally available to play! A cute owl, the history of electronic music, shapeshifting snakes and intergalactic journeys inside the Polish Radio Experimental Studio - all in a stop-motion interactive story :) You'll need a browser, headphones and 30 minutes to spare. Have fun!
https://holypangolin.itch.io/odglos
#Introduction time!
My name is dos; some call me Sebastian. I made dozens of small silly video #games and some slightly less small ones too. I'm one half of @holypangolin studio. Sometimes I pretend to be a musician, but don't get fooled. I'm also a living encyclopedia on a Polish rock band "Perfect". Trams are cooler than trains. The more caramel, the better. I've been using GNU/#Linux on #mobile phones for ages, which led me to work with @purism on the Librem 5. btw I use Arch, but I ❤️ Debian!
It's nothing new and has even been proposed for upstreaming years ago, but I wasn't aware until now. Apparently it broke some iMX7 platforms, but could still be something worth having downstream.
NXP has published their 6.18-based kernel tree and while browsing it I have noticed that they apparently found a way to support custom horizontal strides with mxsfb (by using some undocumented leftover IP for EPDC panels that imx8mq doesn't support). This may be interesting as it potentially opens a way to use linear PE in #etnaviv with the #Librem5's internal screen, so the GPU could render directly to the scanout surface without having to resolve its tiled buffer to linear afterwards. #imx8mq
Q: And it will continue to work on non-Linux systems like FreeBSD?
A: Also correct.
Q: Why have I been hearing that KDE will force systemd down everybody's throats via Plasma then?
A: There are sad people who will do anything for attention and clicks, and will spread FUD and fake controversies to obtain them, including decontextualising comments on merge requests, stating as facts and official communications what are personal opinions, and finally straight up lie.
Don't believe the FUD.
3/3
Despite of its enormous codebase it wasn't that hard to look around and find relevant stuff - the GTK layer is fairly thin. The hardest part was to compile it, but running distcc on a Steam Deck sped it up well 😄
We still need to:
- emit pointercancel when the browser takes the touch gesture over
- not change scrolling targets during scrolling just because a new one "flew" onto the cursor/finger
- have some thresholds to differentiate between vertical and horizontal scrolling
All my #WebKit merge requests have been merged. Now #WebKitGTK supports touch PointerEvent API, touch point coordinates are fractional, synthesized mouse events are unbroken and both WebKitGTK and WPE WebKit handle pointer capture and release according to the spec. This should considerably improve compatibility of #Epiphany (#GNOME Web) with touch interfaces.
There are still some more things to fix in there, maybe someone in #mobilelinux #linuxmobile community would like to give it a try?
@marmarta @dos @camerontw Honestly the right answer to the question of who to disappoint is always going to be "the developers and designers of the thing." Our egos lead us to solve product problems over user problems, to end up with supporting a bunch of "use cases" no real user has.
So, some great conversations at #fossback26 design. And some that really frustrated me. During the "how to bridge the gap between "ultra-nerdy" devs and designers" barcamp, someone said "we have to decide who to disappoint when making design decision", and someone else said "spoiler: it's the power users".
If our attitude towards #uxdesign is "fuck the power users", we'll never have good UX in open source.
It's funny how this phone keeps feeling faster as it gets older.
Looks like GTK is starting to get its renderer inefficiencies sorted out, as updating Flatpak runtimes has made Tuba smoother than ever 😄 #librem5
This is why GiovanH's blog article is a must-read.
People assume that accessible hacks of invasive systems will always exist, and users hacking their devices is to be expected.
THIS SHOULDN'T BE A NORM. THIS IS AN ARMS RACE AND WE'RE OUTMATCHED. /7
https://blog.giovanh.com/blog/2025/10/14/a-hack-is-not-enough/
a decade or so ago, I was writing a H.264 decoder (needed a custom one for stupid reasons which of course had to do with hardware reverse engineering).
the first order of business was to implement CABAC: the final entropy coding stage of H.264 (ie. the first layer I had to peel starting from the bitstream), a funny variant of arithmetic coding. the whole thing is quite carefully optimize to squeeze out bits from video frames by exploiting statistics. in addition to carefully implementing the delicate core logic, I also had to copy-paste a few huge probability tables from the PDF, which of course resisted copy-paste as PDFs like to do and I had to apply some violence until it became proper static initializers in C source code.
furthermore, testing such code is non-trivial: the input is, of course, completely random-looking bits. and the way bitstreams work, I’d have to implement pretty much the whole thing before I got to the interesting part.
so, a few hours later, I figured I’m done with CABAC and reconstructing H.264 data structures, and pointed my new tool at some random test videos. and it worked first try! the structures my program spit out looked pretty much as expected, the transform coefficient matrices had pretty shapes and looked just as you’d expect them to, and I was quite happy with that.
and then I moved on to actually decoding the picture from the coefficients, and this time absolutely nothing worked. random garbage on screen. I spent a long time looking at my 2D transform code searching for bugs, but couldn’t find anything.
and then it hit me exactly what “entropy coding” means. I implemented something that intimately knows and exploits the statistical properties of what video transform coefficients and other structures look like, their probabilities and internal correlations, and uses that to squeeze out entropy and reconstruct it on the other end. my “looks good” testing meant absolute jack shit: I could’ve thrown /dev/urandom into the CABAC decoder instead of actual H.264 video, and it would still look like good video data at this stage until you actually tried to reconstruct the picture.
and sure enough, it turned out I fucked up transcribing some rows from the PDF around a page break or something.
10 years later, I think of this experience every time I see a vibecoded pull request, or other manifestation of AI bullshit. all the right shape, and no substance behind it.
and people really should learn to tell the fucking difference.
I couldn't make any sense out of these #librem5 logs so I yielded to a developer higher in seniority who is now carefully analyzing the issue. #catsofmastodon
This is a real time recording of my git server's web access logs. It's a constant stream of requests from "Claude" attempting to access every possible item on the site.
A couple of months ago, I set up a rule to return an error code for every request its user agent makes. It has not retrieved a single valid item for many, many weeks at this point. Every request is immediately and abruptly terminated.
It hasn't even slowed down as a result.
Tell me again how their operation involves "intelligence" of any kind.

IRCv3 is shaping to be amazingly good!
here's the things it offers, today, right now, on a chat server we just set up in one evening:
you don't need a bouncer (friggin finally). there are moblie clients that work well
you can see backlog when joining a channel
you can browse chat history
you can connect from multiple devices with one account and nickname
if you disconnect, your nickname is still present in a channel you joined, marked as away
you can highlight or DM people who are away and they'll see your message when they join (without crutches like MemoServ)
there is a "last read message" marker and it is synchronized between multiple connections
you don't need to deal with fussy nonsense like NickServ authorization, ghosting, or such; connect with your username and password and that's it
there are typing notifiers, if you want them
there are message reactions, if you want them
here's the things it does not offer:
image, video, or file uploads
stickers
complex onboarding tools
unexpectly, i realized that IRCv3 can completely replace Matrix rooms for my own group chat purposes, and i'm probably not going to set up any Matrix homeservers again; it's just not worth it and frankly I should instead put that effort into coming up with a file upload IRCv3 extension or something
There's a trailer for a new #ToyStory movie out now and at one point it depicts a tablet displaying macOSey looking terminal windows with zsh as a shell being filled with Python code.
This means two things:
- we live in a timeline where fictional children toys from movies offer a more productive environment that the majority of real world's grown-up tablets
- if they don't reference #Debian one way or another in the movie I'll lose any remaining respect towards #Pixar 😜
Call me a Time Lord, cause lately whenever I dig into something in the kernel I end up fixing clocks being all over the place 🕐 🕜 🕢 🕖 #librem5 #linux #mobilelinux
Hi, I'm dos. Silly FLOSS games, open smartphones, terrible music and more. 50% of @holypangolin; 100% of dosowisko.net. he/him/any. I don't receive DMs.