Home
Kris' journal [entries|friends|calendar]
Kristian Rietveld

[ website | My Website ]
[ userinfo | livejournal userinfo ]
[ calendar | livejournal calendar ]

Moved! [14 Oct 2008|06:25pm]
This journal will no longer be updated, I will continue blogging at http://blogs.gnome.org/kris/.
post comment

More GUADEC! [11 Jul 2008|05:53pm]
Okay, I am actually getting hacking done (okay okay it is more like reviewing) and I just committed the fix for #316087 "Resizing columns is chaotic" to gtk+ trunk (finally!). Should be in the next 2.13 releases. This patch does modify the internals of tree view column size allocation, so if people could give the latest gtk+ from trunk a test drive that would be really appreciated :)

By the way, you can find the slides from yesterday's GTK+ state of the Union here.
The plans from the release team for GNOME3 sound cool, exciting times ahead :)
1 comment|post comment

GUADEC GUADEC GUADEC [09 Jul 2008|03:54pm]
My talk "GTK+ State of the Union" at GUADEC has been moved from Friday morning to Thursday 14:30 (the cancelled keynote slot). This was noted in the schedule on the GUADEC website before, but unfortunately this schedule was reverted to the original version as also found on the badges this morning. But the move of the talk is still on :)

Minutes from the GTK+ developer's meeting we had yesterday will follow soon, hopefully early next week. Ah yeah, and during GUADEC I am hacking on Bug 316087, or better known as "column resizing with expand=TRUE columns is entirely fucked up". Seems we are very close to getting this fixed now.

I will probably also hang out at the parties during the upcoming days, so see you all there ;)
3 comments|post comment

Finally getting things done [06 Jun 2008|03:51pm]
I've been meaning to blog again for a long while, and I finally managed to sit down and do it. The last few months have been very, very busy. I got inspired in some way and started studying three times as hard, which is a good thing since I finally manage to get a lot of things done there. This week I finished two more master courses, for both of which we did some interesting stuff. For the first one I have been looking at very low-level cache optimizations (esp. strip lining/loop blocking) with somebody else; learnt a great deal of new stuff and gained experience. The other course was about grid computing; for the presentation and project part I have been focussing on data storage in grids. I've been looking at iRODS, which is an open source system for building data grids. It is a very interesting and promising project, but not yet ready for production deployments. I should probably put my report on this online at some point. Furthermore, my thesis is finally almost done. In the coming weeks I will be working on finishing another course which I had to leave behind for a while at the end of last year. At least the end is coming in sight, I hope to have my BSc and MSc degrees before mid next-year.

Being very busy with studying is nice and all, but it means I had zero time left for spare time (GTK+) hacking. I hope this will change in the coming weeks and get my "getting things done" attitude from University work also applied to GTK+ hacking ;) I am going to look into:

  • Getting the column resizing with > 1 expand=TRUE columns patch updated, fixed and committed in trunk. (finally)


  • Design and implement a proper API for doing DnD (with multiple rows) in GtkTreeView. This should include making it possible to DnD between tree views and apps. (finally)


  • Look into improving the rubber banding behavior as Christian Neumair talked about in his blog. As is stated in the related tree view bugzilla bug about this, probably need to move over the cell_process_action() refactorings from my experimental branch to trunk and then this might be much easier to fix. Moving that refactoring over means writing a good automated layouting test.


  • Look into properly fixing the editing mess. We need a better means to distinguish between committed/cancelled editings.


  • Actually write about the plans for a simple tree view wrapper that I've discussed with Johan and Emmanuele during the hack fest.


  • Continue hacking on my experimental tree view branch. More on this later.


I thought I had more for this list, but this will keep me busy for a good while anyway ;)
post comment

On GtkTreeView and calling iter_next() for each row [08 Apr 2008|08:15pm]
In his last post, Murray writes that GtkTreeView calls gtk_tree_model_iter_next() for every row. This is indeed true, for the simple reason that the internal state keeping of GtkTreeView needs an exact internal representation of what is being displayed. This representation is in the form of an RB-Tree, wherein there is a node for each visible row. The definition of visible that we use here includes all nodes that are outside the current scroll area that is being shown. Visible distinguishes collapsed and expanded nodes from each other. Each node in this RB-Tree contains the properties of that row, such as its height, is it a parent or not, is it selected, etc, etc. In order to build this tree, we need to iterate over all nodes in the model, hence that iter_next() is being called for all these nodes. Even for a million rows this is not a problem, building the RB-Tree is quite a fast operation. This has all been discussed at length recently at gtk-devel-list: see here.

The main performance problems have always been the measuring of all rows, which is something you can avoid by using fixed-height-mode. A lot of people have heard about me working on some experimental tree view improvements, this is also true. In my experimental branch fixed-height-mode has been removed, since the need for validating all rows has been removed. It can handle 4 million rows just fine.

So, do we really have to put the entire model in the internal representation? This is actually an unanswered question. It of course greatly simplifies the implementation of GtkTreeView, but nobody says that it would not be possible to modify GtkTreeView in such a way that this is not required anymore. I haven't looked at this in depth myself yet, maybe at some point in the future when I have time and finished studies and and and ... (I spent a lot of time on University stuff these days, it has been years since I have been so much motivated to work on finishing studies).

While Philip and Jürg's ideas on iterator types and GtkTreeModel improvements are certainly interesting, it is not a (complete) solution for this particular problem. It will especially easify the implementation of data sources/tree models and their testability. The solution for large data sources is really in the view part and not (so much) the model part.


Time for more Minix hacking now ...
7 comments|post comment

Our vision on GTK+, continued [14 Mar 2008|12:00am]
In some of the feedback we've received so far we feel that some of the points on the slides have been misunderstood. All people that haven't been in Berlin of course miss a part of the story, since the bullet points don't tell it in full. We've just done some more touches to our paper describing our vision on the GTK+ and you can read it here. As you can imagine, the paper is much more elaborate than the slides.

If there are more questions/suggestions after reading the paper, be sure to let us know!
6 comments|post comment

happy birthday gtk+ 2.0.0 [11 Mar 2008|08:31pm]
People here figured that today is GTK+'s 2.0.0 6th anniversary, woo! We go to celebrate this later tonight. Today most of the talks have been about introspection. I spent some time talking with ebassi and jdahlin where they showed me the "simple tree view wrappers" that exist for perl and python. Both seem to be similar and very nice. Hope to look into creating something like this in C soon (maybe this week still?) to make the simple uses for GtkTreeView much less time consuming to program.

My hacking project seems to be progressing nicely. pixbuf-demo is running fine already with all graphics properly loaded via CoreGraphics. It loads photoshop files nicely as well. Next steps are getting it to do progressive loading and support animations and then a first version should be ready to hopefully commit in trunk. After that I will look into getting saving support done :)
post comment

Grussen aus Berlin [10 Mar 2008|04:18pm]
So we are in Berlin now with a good amount of people for the hackfest. The apartments are nice, the wireless is working out fine so far and there are plenty of snacks and beer. Though we seem to have run out of beer already, but I heard rumors it's going to be fixed soon ;) One problem is though that the weather outside is too nice to actually sit inside all day and hack. However, it looks like this is going to change Tuesday/Wednesday.

This morning we started with presentations after we finished transforming one of the living rooms into a "theatre". Everybody just fit in the room and it's a pretty funny sight :) I had the honor of starting off the presentations track this morning. I think a lot of people have actually been thinking about the future of GTK+; what new features to add and how to move forward. We hope to have a lot of discussions about all these ideas everybody has. At Imendio we've also been thinking about where we want to go with GTK+. We presented our "vision" on GTK+ during this mornings presentation; my slides can be found here. We hope to have more discussions about this this week. Later on we will post a document with a more elaborate description of these ideas.


As for hacking, I was recently inspired by dom's and arc's GDI pixbuf loader. For this week I've decided to do something similar for Mac OS X. The CoreGraphics framework has an ImageIO library with loading and saving support for a lot of image formats. I hope to get a pixbuf loader using this running during the hackweek. It will greatly simplify the build process for GTK+ on the Mac as well as shipping applications.
22 comments|post comment

Just very happy [13 Dec 2007|02:32am]
[ music | Punk Rock on shuffle ]

Don't know exactly why, but I feel very, very happy. But maybe it is because (all done today):


  • I just had a very awesome conference with all of the Imendio crowd

  • I got NOFX tickets in the pre-sale (one of the bands I really like and still haven't seen live yet), though have to wait for June before they come and play.... but but but, I *finally* get to see them!

  • Work on my thesis went okay today, I really hope I can receive BSc in Feb.

  • Made some progress on $paid work too

  • Met new people

  • Helped a friend with getting a Linux server going

  • Today I was just happy in general



Oh, yeah, I know I am really slacking at the GTK+ front, but! There is TreeView stuff happening in the background. More on that later (so yes you can expect another blog entry on that).
1 comment|post comment

Attack of the arrow keys [28 Aug 2007|12:52pm]
In complex widgets there are often so many possible actions and so little keys. In GtkTreeView this certainly holds for the arrow keys. Since its inception, the arrow keys have been used to move the focus cursor (the dotted rectangle). For GtkTreeView configurations with editable and/or activatable cells (think entries, checkboxes) the left/right keys will allow you to navigate between them. When there is a horizontal scrollbar, the horizonal arrow keys also do scrolling. This makes sense for a lot of people.

There is another camp, which claims that left/right should expand/collapse nodes. This is the standard on a lot of operation systems and it does kind of make sense. However in GtkTreeView shift+left/right has been allocated for expanding and collapsing nodes. I've been blocking the idea of making left and right expand and collapse nodes for a very long time, since we really need the arrow keys for moving that focus rectangle.

At the beginning of the 2.12 cycle I kind of gave in, since ctrl+left/right was also bound to moving the focus cursor. This basically accompanies ctrl+up/down that moves the focus cursor up/down without changing the selection. And thus left and right now expand and collapse nodes.

And guess what, other people now find these new key bindings awkward ;) As examples where this is awkward gconf-editor and tag editors are noted. Now note that both of these are lists, where the usually cited example by the "left and right should expand/collapse" camp are things like nautilus, or any application with a tree and no editable or activable cells.

So, as a solution I am currently thinking of the following, to cover both completely different situations and use cases:

  • Left and right moves the focus cursor in lists.
  • Left and right expands and collapses a node if it is a parent. If a node is not a parent and has editable and/or activable cells, move the focus cursor (this will cover testtreefocus even).


When no action is to be done, left and right could scroll as usual.

Does any UI person has other suggestions or opinions?



Some background information:
#105895 - Please add common keybindings for the TreeView
#465516 - Impossible to switch cells with the left and right keys
8 comments|post comment

Lowlands 2007 [23 Aug 2007|01:31pm]
With 4days3hours7mins idle time on IRC I returned last Monday from a Campingflight to Lowlands paradise 2007. Having been there for the fifth time in a row, this year I also enjoyed myself very much despite the crappy line-up. We'd love to see much more punk and metal bands, which seem to be on the decline at this festival.

Anyway, we made loads of fun on the festival terrain and did see some of the bands: Heideroosjes, Madcaddies, Editors (partly, I think it was kinda boring because I don't remember what they played), Kasabian (partly, and from the outside while chatting), Eagles of Death Metal, The Killers (partly, because it was boring), Brand New (these guys have an identity crisis or something, seriously, such crap), Games in Concert (partly, this was quite cool: a big Dutch orchestra playing music from video games), The Rifles, Turbonegro, The View, Interpol (this concert, was really, really good; superb sound and lightshow), Kaiser Chiefs (a big contrast, boring music, bad vocals, annoying light show), Balkanbeatz/Russendisko (this is awesome party music), Funeral for a Friend (partly, really as bad as the name), The Answer, Nine Inch Nails (partly, not my kind of music, but the sound blowed people out of the tent), Motörhead (sat outside and enjoyed), Arcade Fire (partly, scarily happy people), Tool (which was just way too awesome).

So that's it, I guess we should go again next year if they manage to get a better line-up ;)

Oh oh oh, and before I went to GUADEC and vacation and Lowlands this year I finally saw Me First and the Gimme Gimmes! Awesome band, really.


(more blog entries later since I am a bit behind).
post comment

Back again and left the country again [23 Jul 2007|10:10pm]
The last months have been very busy. Lots of stuff to do, exams, little stress and not feeling all that well mentally. Fortunately fixed most of the stuff up in the week before GUADEC by dropping some things, something that was really, really needed. This took a long time, because I felt really bad about dropping it. Eventually got over it and hope people will pick up the work (which I am sure they will).

Heard I passed one of the exams (which I thought I ruined), don't know about the other one yet. Bought a ticket for Lowlands (5th time!!!) anyway, even though I might have to do a re-take the day after.

Then off to GUADEC. Had a really good time there, meeting up with a lot of people. I think my talk went okay as well, my slides can be found here for the people that are interested. I will post notes/minutes of the GTK+ meeting we had at the GUADEC Monday ASAP.

Flew back to the Netherlands on Sunday, and right now, on Monday, I am sitting in Berlin having a beer. We don't know where we will go next since we didn't book hotels yet, but it looks like a nice start of a really needed vacation. I will be trying to work a lot on my BSc thesis though, since I want to receive my BSc in September...

I also started hacking on a new application!! More on that later, it is not very special though and people are telling me that I should really start using something called "git".

My co-workers are still in the process on learning how to pronounce the Dutch "sch"., they are getting there though.
1 comment|post comment

Thank you very much ... [03 Jun 2007|09:43pm]
... NMPA and MPA for continuing to destroy the variety of guitar/bass tablature sites out there on the web. I started playing guitar for fun, didn't feel like taking lessons so I am kind of self-taught and did that by trying to play songs I like using those tabs. I don't think I would have been able to learn myself to play guitar and bass without those tabs.

It would be very, very sad if all those tabs disappear from the web. Most sites which went down are pointing to sites where you can buy books with the official sheet music. I even had a quick glance at what kind of those books are available at a big local book store here; there sure are nice books for the bigger bands like Nirvana, The Offspring, RHCP and whatnot. But for the things I like to play, there is nothing available. And heck, most of these artists are just fine with people writing up and putting online tabs for their music.

Looks like this entire community will be destroyed too, just like what is happening with the Internet radio community right now. Apparently it will be a long while before these (American) associations "for music publishers" get that real music is not about the money.
1 comment|post comment

Ronduit belachelijk [21 Mar 2007|11:43pm]
(het volgende stuk is mijn persoonlijke mening en zeker niet bedoeld om bepaalde mensen, groeperingen, etc te kwetsen).

'Vloekverbod bij metalfestival Rijssen' (nu.nl) -- dit is naar mijn mening ronduit belachelijk. Waarom zou er in Rijssen een vloekverbod moeten zijn, daar dit elders niet nodig is? Alleen omdat Rijssen een gereformeerde gemeente is? Naar mijn mening moeten religie en politiek strikt gescheiden zijn, wat jammer genoeg niet zo is op dit moment. Als dat zo zou zijn, zouden dit soort dingen niet meer voor kunnen komen. Waarom heeft Nederland nu een kabinet dat voor meer dan 50% uit overtuigd Christenen bestaat, terwijl meer dan half Nederland zeker niet actief/overtuigd Christen is?

Dit voorval is een schandalige inperking van de vrijheid van meningsuiting. Ja, het zou inderdaad gereformeerde mensen kunnen kwetsen; wie zegt dat uitspraken van gereformeerde mensen niemand anders kwetsen?

Waarom willen de Christelijke partijen euthanasie en abortus weer inperken? Als ik dat wil en daar een goede reden voor heb moet dat toch gewoon kunnen? Waarom moet de koopzondag worden afgeschaft? Als Christenen willen rusten doen ze dat toch op zondag, of kunnen ze de verleiding niet weerstaan als de winkels "toch al open zijn"? Ik heb geen God of bijbel nodig om dingen te kunnen beslissen, ik doe dat liever zelf wel dan niet in overleg met mensen die ik goed ken, in persoon kan spreken en kan vertrouwen.

Ik ga graag de discussie aan, mocht dat nodig zijn.
13 comments|post comment

Column resizing, part two [16 Feb 2007|08:16pm]
People will remember my post on column resizing from about a month ago. I did some more work on this over the last few days, based on the nice suggestions left in the comments of that blog entry and some discussions with people.

I ended up implementing something which basically only recalculates the expand values when the width of the tree view itself changes, or the number of expand columns. So if the user resizes a column, the expand values will not be changed and the weird/chaotic behavior is gone. You can find the results in the latest patch in the bug (#316087).

A small side effect at this moment is that when the expand flag is turned off, the column will be "reset" to use its original requested size (see the last comment in the bug report for some more detail). I am not yet really sure if I like this.

Opinions appreciated of course. At this stage I am pretty happy with the behavior, so good chance that this patch will find its way into GTK+ 2.11.x soonish.
post comment

Annotating the past [07 Feb 2007|05:43pm]
When I am busy hacking on bugs (which is about the only thing I do these days when I have time for hacking ...) a thing which I use very, very frequently is cvs/svn annotate in the viewcvs web interface. For files as big as gtktreeview.c (almost 15000 lines), it is impossible to remember every little detail of the code; why is it like this? which parts are affected when I change this? Before changing things I usually check the history of that code portion using annotate, to see what kind of changes were made before. With a few little clicks I can find reasonings, old bug reports with stack traces and test cases. I know you can use svn annotate from the command line, but having it in a web interface with cross reference is much more convenient. For me annotate in a terminal is useless.

I was pretty disappointed to see that on svn.gnome.org, annotation is not possible in the web interface. Is there any way this can be made possible? I am pretty sure a lot of other people would also appreciate to have this feature back, since it is so useful for tracing back changes.

(This has been filed as #395908 -- together with the request for the old "theme" of the revision log page, which is much more clear IMHO).

For now I continue using cvs.gnome.org for this, but at some point the amount of changes between the last cvs version and svn will be so big that this won't be useful anymore ...
post comment

New tooltips API in GTK+ trunk [06 Feb 2007|08:09pm]
Well, it finally happened, the new tooltips API hit GTK+ trunk. Ever been annoyed by the fact that GTK+ does not support tooltips on insensitive widgets? Ever wondered about an easy way to implement tooltips for specific tree view rows? The new tooltips API solves these and other issues, to get started quickly see the example application aka test program: gtk+/tests/testtooltips.c. There will be some more improvements in trunk as the code matures; probably a bug fix here and there, and the positioning code isn't quite right yet...
1 comment|post comment

wooops [15 Jan 2007|02:02pm]
(Apparently the planets don't support lj-cuts and everybody is being bored with a too long blog entry. Sorry! Fixed the formatting too).
4 comments|post comment

GtkTreeView column resizing [15 Jan 2007|01:51pm]
[ music | Anti-Flag -- Underground Network ]

The infamous column resizing bug, #316087, has a good amount of duplicates. While it might look like a programming bug which needs to be fixed, there is actually much more involved: what you see happening is actually "correct", but it looks really strange. I've been looking at some other toolkits to see whether they support a likewise expand flag and how they solve this issue. More details under the cut, since it's a pretty lengthy piece.

resizing-analysis )

8 comments|post comment

Scrolling bugs fixing spree [26 Dec 2006|05:10pm]
[ music | Anti-Flag ]

This has been going on for a while already :) The fixing spree actually began already 2 months ago, and I decided it was about time to finally write a GtkTreeView scrolling test suite. I've been wanting to write such a test suite since my scrolling bugs fixing spree around GTK+ 2.6 and 2.7. Back then I had a bunch of test cases in my ~/testcases/ and before committing I would check whether a fix would break any of those test cases. A lot of work and prone to errors. Around that time I was already thinking about combining those test cases to one test app. Of course it never happened. Of course I also lost track of the test cases I was testing with.

So during Imendio conf this year (back in November) I slowly started working on this test suite. Finishing it took much, much longer than expected and I kept finding small bugs and adding tests. But finally I ended up with a pretty useful test application, it already helped me a lot when testing a bunch of fixes which will go into GTK+ HEAD today.

For those interested, the source is here (reading it in a browser messes up the formatting btw):

http://www.babi-pangang.org/~kris/testcases/testtreescroll-26dec06.c

It does need some more improvements at this point, it relies on the font used and the speed of the machine for example. And of course I intend to add a test case to this thing for each new scrolling bug I get. When GTK+ gets a proper testing framework I hope to integrate this test suite with that testing framework.

I hope most bugs are gone now. If you find any regressions or new scrolling bugs in HEAD, please file a bug.

So what's next? Writing a test suite for tree models. I already have some notes on this, hopefully I can write the code during January. (I suspect I will be mostly busy partying during the SVN cut-off :) ).


(And of course, a happy 2007 to all of you!)

3 comments|post comment

navigation
[ viewing | most recent entries ]
[ go | earlier ]

Advertisement