KHTML ♥

Oz Fox of Stryper
A picture of Oz Fox from Stryper I took ages ago. We’re rock stars.

So, after working on the cool “Large image displaying library” in KHTML I decided to look into other parts of KHTML, and work on getting my lolcat page working in KJS/KHTML. It turned out quite easy, KHTML is very friendly, both the code base and the community around it.

So, after fixing a couple of other small issues, I decided to take on Twitter which has stopped rendering properly in KHTML/KJS. Thanks to the excellent debugging support in the khtml kpart, it only took a couple of minutes to track the error down. The issue turned out to be that the maximum stack size in the KJS interpreter was too small, Twitter is serious about its Javascript. The issue is then if we should bump up the maximum amount of stack frames, since if we eat up all the available stack space we can get nasty crashes without Dr. Konqi (the crash reporting tool) showing up. But for now KHTML in git should render Twitter just fine.

Lastly, a tip if you want to debug production sites with long lines in KJS; turn on the “Reindent Sources” option if it is slow, the katepart embedded in the javascript debugger isn’t a fan of the long lines most websites put together.

And as usual, thanks to the KHTML developers for help with everything.

long time no blog

cat
A random cat picture. I like cats.

So, I don’t blog too often, but I thought I’d blog and write down the most important stuff.

Since last time I blogged, I helped write a pure-Java, Android client for the Quassel IRC client, named QuasselDroid. Not strictly a KDE project, but Quassel has very good KDE integration, and many KDE users use it. It lacks some features compared to for example Konversation, but it’s distributed so the compromise is kind of worth it. I had to reimplement the whole QVariant/QDataStream based protocol with just Java, so that was kind of fun. And it’s still one of the most-used applications on my phone, so there’s that.

I also started using Spotify, and found the excellent KDE client Spokify, found it lacked some features, so I implemented those. I think you can see all of them in the screenshot (except for the last.fm scrobbling).

Then I got bored with Spotify not having the music I listen to, so I started using JuK again. I found it missed last.fm scrobbling, so I implemented that (unfortunately liblastfm seems to be a dead project, so I had to implement it more or less from scratch, but whatever). I also fixed cover fetching in it; Yahoo has discontinued their image search API, and Google has deprecated theirs, so I switched it to fetching covers from last.fm (then I could also reuse some code from the scrobbling I implemented. I also fixed a couple of paper cuts before I got bored.

Then I got bored with all the webpages working correctly, so I found my old love, Konqueror (with KHTML). Unfortunately I spend too much time looking at cat-pictures on reddit, and since imgur shows a downscaled image by default, and KHTML only did nearest neighbour scaling (which is fast, but looks kind of crappy), I implemented a semi-quick bilinear scaling (using a trick which I think Ariya blogged about forever ago). Looking at the before and after screenshots should explain. It still looks kind of crappy for ratios over 2-ish, but it’s more than adequate for my cat picture looking.

Then I got bored of my desktop being state of the art, and remembered that there is a very nice, KDE-based lightweight alternative to krunner and plasma-desktop called “Kor Testudo“. Basically a lightweight KDE desktop, with support for plasmoids and everything (much more feature rich and less buggy than Razor Qt in my experience, even if it’s just a one-guy project). Only problem I had was that with a transparent panel it got kind of hard to read, so I implemented optional blurring support. There is an even older and more lightweight desktop alternative called Blazer, but that’s kind of unmaintained and not as feature rich as Kor, and I haven’t really tried it in a while. Last time I had to hack a bit on it just to get it to build. Just thought I’d mention it if anyone was interested.

Lastly I’ve also been using an excellent launcher/krunner replacement called Mangonel for some time now. It’s inspired by Katapult, if anyone remembers that. The only thing I was missing was the ability to launch config modules directly from it, so I implemented that (and fixed a couple of bugs and paper cuts).

Lastly I’ve started writing on my master’s thesis. We’re using a software framework called LIDA which is a generic and customizable framework written in Java for implementing cognitive/conscious systems, and are using that as a basis for our StarCraft: Brood War bot written with the help of BWAPI (an excellent free software project, under LGPL 3).

Lastly, we (me and my buddy, we call ourselves Legendary) also participated in a couple of competitions at The Gathering. We thought we were participating as compofillers, but then we won 2×2500 NOK, so that was a nice surprise, considering it is our first time competing in anything like that. Covered our trip there at least.