Code reading and Bug fixing 101

Summer is here, and Google Summer of Code is on its way. The biggest hurdle new contributors often face (after compiling trunk ;)) is to get their head around the project they would like to work on, understanding how it works, where the parts fit in, and how to fix bugs or make improvements. Speaking from my experience, it took me the better part of a month to understand how KWin worked before I could actually hack on it for Season on KDE.

Why you should be at conf.kde.in

conf.kde.in is happening in Bangalore from 9th-13th March. This is a golden opportunity for students to have fun and learn some really interesting things that no college or class can teach. It is also a chance to form friendships that last forever. If you don’t like long posts: here is the gist. Short term benefits – a great time and a cool t-shirt. Long term benefits – create something awesome, lots of friends and an impressive CV that recruiters will notice.

QHttpServer: Web Apps in Qt

Qt is a great GUI toolkit, but it is also an entire C++ standard library waiting to be used for other tasks. In addition the network module is really powerful. I’ve been playing around with node.js for a while now, and realized that Qt’s default asynchronous nature maps over perfectly to create a event-based web server. To make things better, Ryan Dahl’s small and fast http-parser is freely available. So I just combined the two, and here is QHttpServer.

Spreading the KDE love in India

The first ever KDE conference in India takes place this March. On March 9th, 2011, gearheads will descend to the RV College of Engineering for conf.kde.in. If you are interested in using or contributing to KDE, we look forward to meeting you there. There have been KDE contributors in India since the late 90s, but in recent years we have reached a more sizeable number. Contributors usually hang out on #kde-in, the KDE India IRC channel.

Introducing Mugshot

There is a certain fun in hacks, little projects you do on a whim and finish in a few days. And then you go and buy a domain for it and launch it. That's Mugshot. Mugshot is a web service which offers face-detection. It uses the libface library which was implemented mainly as a Google Summer of Code project for KDE. So one day I was thinking that services like Facebook and Flickr allow you to upload images and then tag them.

UPnP MediaServer KIO Slave is OUT!

I’ve released the first version of the UPnP MediaServer KIO slave which allows KDE applications to seamlessly browse UPnP devices on the network, and access their files. An outcome of my Google Summer of Code, this is the first step towards getting UPnP Collection support into Amarok. For now, the slave is meant for application developers since dolphin & co. in KDE 4.5 do not directly know how to launch it.

Hackfest 2010

The usual convention in open source is that new developers get into a project by themselves. They follow online documentation and get into IRC channels and find their way around by themselves. Its not often that we get the chance to meet new guys and teach them the ‘tricks of the trade’. But that is exactly what happened at Hackfest @ Shaastra 2010 Hackfest got together mentors from various projects to introduce students to contributing to open source projects.

Final Evaluations results processed for Amarok and KDE UPnP Integration

Hi Nikhil Marathe, We have processed the evaluation for your project named Amarok and KDE UPnP Integration with KDE. Congratulations, from our data it seems that you have successfully passed the Final Evaluations. Please contact your mentor to discuss the results of your evaluation and to plan your goals and development plan for the rest of the program Greetings, The Google Open Source Programs Team Yay! Posted via email from nikhil's posterous

Whats up doc?

Pardon me for the excessively cliche title, I was short on time :P Its been a week now since college began, and already I feel the extreme busy-ness that occurs trying to squeeze every activity into 24 hours. The vacations were comparatively totally empty. The UPnP collection support in Amarok is concluding pretty well. Today I committed the fix that considerably shortens the amount of data transfer required over the network for subsequent queries once the local cache is relatively filled.

UPnP Searching

I’ve been pretty quite about GSoC progress. But I had a great time at aKademy and forgot all about blog posts. So the current status is thus. If programming was just about getting things done, I am done! But its not, which means although everything I was supposed to do is done in a big picture way, the next few weeks will see bug fixes, optimization and ensuring that certain things can be done faster, more accurately or in a more user-friendly manner.

Akademy Day 5/6

Day 5 of Akademy was spent hacking too. Then I had a great meal at Plevna), Tamperelainen, which was mashed potatoes + lingonberry jam + Tampere’s famous blood sausages. Well it lived up to its expectations, the sausages were definitely good, but different. It was kind of like sabudana vada. Unfortunately Germany lost :( The final will still be a good watch though. Once again, I would like to raise my fictional hat to COSS and all the volunteers for the excellent organisation of this year’s Akademy.

Akademy Day 3/4

Akademy just keeps getting better and better, and this year's location couldn't have been more perfect. The Demola office, if it could be called that, is the perfect hackspace. Lots of tables strewn over the place, no partitions, sofas to relax on and even a retro arcade game! Yesterday and today and the rest of the week will be hackdays and BoFs, so there isn't really much to report. But at the end of today I just took a random walk across Tampere, and its a beautiful city as you can see.

Akademy Day 2

Today was the day of fluffy, hands down! Frederik Gladhorn gave a super lightning talk introducing his quite serious pet project Other than this I attended Lubos' performance talk, and Milian and Aleix's great KDevelop feature promo. I mean if Ctrl+Space can give a complete program, why am I even learning C++? :) In addition Casper gave a very nice talk about getting KDE to work on windows, and hats of to the KDE-Windows team for there efforts.

Akademy Day 1

Into the sea of existing akademy posts enters another one. Technically its my second day in Finland. I arrived on the 2nd with Pradeepto from mumbai. We met seele and Justin at Schiphol itself, while blauzahl and Mek were on the same flight! If that wasn’t enough, the bus from Helsinki to Tampere found aseigo and Hans Chen on it too, making it the Akademy bus. The Student House TOAS city is an awesome place to live in, with rooms just like in college, a bit better :)

Notification madness

Planet, my slave went awry :( I terminated the processes, but is there a way to kill all the notifications at once.

GSoC Week 4: Experimenting with Collections

I didn't write a post last week, and it looks really bad in my form completion :) but I didn't have any user visible updates at all. This week is much better. First the visual then the text. That's cover art fetched from the UPnP device when the Content Directory has it available! Other updates include smoother full and incremental scanning of the Collection. This is one area which needs a lot more improvement.

GSoC Week 2: Experimenting with Collections

Another week is already gone, and although it didn't see much progress feature wise, I've been working a lot on the project. Three days were spent on a nasty little hard to produce bug, one that would only occur 4 levels deep into the Content Directory, and not always in that case either. Finally with a lot of debug statements, many hours talking to Tuomo Penttinen of HUpnp we fixed a little bug in his library.

GSoC Week 1: Kioslave is shaping up

(This post was published on Friday, but I put in a wrong tag and I didn't get aggregated, so, republished) Although I've been hacking on my GSoC project for quite a while, doing little experiments and getting my mind around various factors involved, this week was my first official coding period, since that was what I had in my timeline. The first piece to implement is the kioslave to browse UPnP MediaServers.

Success! Google Summer Of Code

Well after all the micro-blogging at night and the IRC chat, and writing an exam, here is a really good post! The proposal is Amarok and KDE UPnP Integration. I'll be working with mentor Bart Cerneels. This news was awesome! Last year I didn't get in for kwin-tiling, but I participated in Season of KDE and did a few other contributions all year and it paid off. This year I started of quite early and worked hard on the proposal.

KWin tiling is merged

I'm glad to announce that yesterday the kwin-tiling branch was merged into kwin trunk by commit 1118677!. It will be available in KDE SC 4.5. Please keep in mind that it is an experimental feature with rough edges. Bug fixes are already on the way, but some things, like session saving and so on are absent. Please do add feature requests and bugs to the KDE bug tracker. This screencast should show off a few things.

Foss.in Day 3

This was KDE Project of the Day at foss.in/2009 This was best captured by Sujith, so you should go there. My slides “My next KDE application”

KDE introductory talk

The Open Source Initiative in DA-IICT is our effort to get more students interested in open source, and get them to start contributing to projects. As part of that I evangelized KDE, showed off our cool apps, and demonstrated how Krunner + Kwin + Plasma come together to improve productivity a LOT. Here are the slides, Unfortunately my notes were handwritten, so you can't glean much from here. But someone else might be able to use it ( please attribute it to me though, thanks ).

Tiling screencast

With a lot of requests to see tiling in action, I've uploaded my first ever video. Unfortunately I couldn't get my microphone to work. There are also a few glitches, forgive me for that.

Dynamic layouts are here

kwin-tiling now features dynamic layout switching per desktop. Use Meta+PgUp for Columns and Meta+PgDn for Spiral. Watch the windows change their place on the fly! A few bugs in both the layouts are also fixed. Overall kwin-tiling is pretty stable for now, so give it a whirl and notify me of any bugs you can find. What it still lacks is Xinerama awareness, but otherwise its virtually feature complete for the first release.

Introducing Cq

Cq ( Commit Queue ) is a bridge between Mercurial and Subversion. Its whole objective is to allow you to work offline on Subversion repositories, but continue doing atomic commits. Useful when you are on the move and don't have internet access. The premise is that you copy the working copy into a Mercurial repository. Hack away in the repository, and commit to the repository. Once you are back online, run cq commit to actually commit the changes to the Subversion repository.

Hello Planet

( One of my entries already got aggregated, but this is the traditional introduction ) Hello KDE people! My name is Nikhil Marathe. I'm a relatively new KDE developer ( ~3 months ), currently working on implementing tiling in kwin. I started using KDE when I switched to ( what was ) Mandrake in 2001. I think it was KDE 3.2. Well I loved it, and have stuck with KDE ever since, following every release with great excitement.

KWin tiling progress

Between yesterday and today I made quite a lot of changes in kwin-tiling. Layouts now have a superclass which manages certain things. Each desktop now has its own layout. The root tile is no longer stored directly by the workspace, instead the workspace stores layouts for each desktop. For now each desktop has the Spiral layout, but it should be possible to dynamically change layouts for each desktop a few weeks down the line.

The little things screw up

I had this really weird bug in kwin for half a week. When you started resizing windows, all of them would start dancing about the screen. There would be little gaps between them and so on. And I couldn't figure out why. So today I finally tried comparing ( x + width ) and ( right ) of a window. Turns out they are always off by one. So to the QRect::right() documentation:

Kwin : tree based tiling

In the quest to implement tiling in KWin, I've decided to use binary trees as an internal representation. This morning, I hacked on it to produce a decent prototype, just to check if the idea would work well enough, without introducing too much complexity in the code. At the moment, it does tend to crash or have repaint issues once in a while. But it works, and it does what tiling is supposed to do.

KWin preliminary tiling

Yesterday I committed code which adds a semblance of tiling to kwin. Every time you launch a window, it will be maximized vertically, but each window shares the width of the screen equally. You can check out code from KDE svn. The location is /home/kde/branches/work/kwin-tiling/ You'll need to edit $KDEDIR/share/config/kwinrc and set Placement=Tiling. Then you are ready to go. Right now there are no configuration options, no key bindings, nothing!

I didn't get in, better luck next time

Well, none of my two proposals got selected for Summer of Code 09. Of course I will be applying to Summer of KDE soon, and getting a lot of experience over the next year, so that I have higher chances next time. Which reminds me, I am on the way to getting a KDE svn account, and I already have 5 patches into KGet. :) My code will be in 4.

aseigo on KDE 4

Talking Bluntly Refreshing. That will shut up the pessimists.

How cool is Alt + F2

I am always discovering new uses for the Run Command dialog of KDE. And now I learnt it can even do basic calculations, right there. Now if only it could handle scientific functions...

Ambigram Konqi

The KDE Mascot, good ain't it?

Beryl Screenshots

Here are some screenshots of my computer running Beryl. The customary Cube: Windows can be made to look like a negative(Konqueror here) and so can the complete desktopHave too many windows and don't want to Alt+Tab, get a view of all the windows on all desktops or on current desktop depending on which screen edge you take the mouse too(configurable) Transparency. The Konqueror window on top is partially transparent(Alt + mouse scroll) and shows the blogger window beneath

Beryl is AMAZING!

I have got Beryl working with AIGLX and all its cool effects on an i845 and 256mb ram with almost no difference in performance than non beryl. This is absolutely amazing. The beryl devs are really great. Compiz used to be really slow. Now I can finally have all this eye candy on all the time.

KDE Ambigram

Here is a simple KDE ambigram I made in Inkscape. KDE is a perfect word for ambigramming. Not only is it a rotational ambigram, but a flip one too as well as a mirror ambigram. How cool is that!