ChaniBlog











{November 4, 2009}   Qt DevDays SF

wow. it’s been a long few days. and suddenly they’re over.

devdays was great. :) I arrived on monday for the education track – nokia needs more qt developers, so it wants schools to use qt more. :) there were several discussions about available resources, upcoming resources and how people have been using qt in schools so far. I was surprised to find one of my former teachers here from BCIT – plus jeff’s teacher from SFU, and someone from UBC too. :)

We weren’t even the only Vancouverites here – later on I was introduced to some others, plus someone from Victoria. :) it’s a small world indeed. and of course there were friendly trolls here. :) it’s always nice to see familiar faces and make new friends.

tuesday and wednesday went by in a bit of a blur. the network wasn’t giving out IPs most of the time, so we weren’t online much. There were presentations, there was yummy food, a quiz thing during tuesday’s dinner where gary and alex both won n900’s… wednesday there were more prizes, and alex won *another* one. :)

In one of the presentations today, the Qt4 Dance song was played… I tried to get people singing (*cough*alexis*cough*), but they’re no fun ;P

I met lots of people here; some are interested in using kde stuff on devices, some are *already* using kde stuff, some are looking for interns and/or hiring… some are just generally cool ;)

oh, and Froglogic and ICS are especially cool; thanks to them (and alex) I’m sleeping in a hotel and not on the street. ;)

Tomorrow morning I head back to the airport; back home I have homework and a midterm and people’s birthdays. seems like another world sometimes… a world where I get a lot more sleep ;)



I’m down in San Francisco this week for Qt Developer Days. It actually hasn’t started yet, though; this weekend blauzahl and des organized an informal kde sprint. Gary joined us too, and Knut was kind enough to let us use the Nokia offices. :)

I arrived saturday… afternoon. eventually. :) the flight was delayed due to fog, and delayed again; I’m lucky I didn’t have a connecting flight. There was one bonus; the flight was circling over the fog just long enough for my movie to finish. ;)

Despite the fog trouble at the airport, SF is quite warm and sunny. :) It’s weird, but nice; Vancouver’s been having normal autumn rain so I haven’t seen much sun for a while.

At the nokia offices, Knut gave us a bit of a lecture on how to organize a sprint, and greeneg talked about where KDE needs to improve for enterprise users. Then we had lunch at 4pm (yes. lunch.) and chatted. We came up with a bit of an agenda for sunday. I don’t remember much after that, just that I was on my computer and very *very* tired. :) I do remember that knut’s n900 is very very shiny.

Eventually, rather late, we pulled ourselves away from the laptops and went out for dinner. Me, blauzahl and des wanted to go out for halloween next… but we hadn’t had much luck finding somewhere to *go*… I got dressed up in my costume (but I’d left my homemade mask at home! waah :( I ended up using a cheap dollar-store mask instead) and we drove around looking for a bar… well, we did find one, but by the time that happened it was so late (probably 1am) and we were so very tired… so we changed our minds and headed home. We took the scenic route back, though, and saw plenty of fun costumes. :)

Sunday we went out to the day of the dead festival (sorry, forgot my camera *again*). After lunch we headed to the nokia office. Me and greeneg worked on techbase’s git documentation. There’s only a little new material so far, but there’s a framework sketched out. Feel free to help us fill it in. :)
After that, blauzahl went through some questions about the new activity stuff (I understand what I mean a lot better after trying to explain it to her) and asked us questions about konqueror use.

Now it’s dinnertime again. We don’t get to use the office on monday, so we’ll probably hang out at the hotel then. :)



So what have I been up to lately? Mostly school.

My stats and AI courses are easy, but still take up time (I’m trying to actually do homework and study instead of just cramming ;)

The robocup project is… Well, it’s a group project. :) It’s not going too badly, though.

I’ve also got martial arts and choir in the evenings (although I think I’m going to drop choir, the schedule’s just a bit too inconvenient). And I found a go club at sfu, which always seems to end in late-night gaming… :) One of the really nice things about school is that every semester there’s a chance of making new friends. Although it is a bit odd to hang out with teenagers – I feel old now ;P

Life is fun and busy… so very busy…

I’ve still been sneaking in a bit of plasma time here and there, though- little fixes for my gsoc project n’stuff. Popup applets can be right-clicked properly. You can add & remove activites without zooming out, too.
Now with those buttons and my activity-list mouse plugin, activities are a lot more convenient:

but that’s a bit ugly. We have better plans being worked on… they are shiny… ;)

Oh, and virtual desktop are more convenient too – you can add a desktop just by right-clicking the pager now. There’ll probably be a remove button soon, but… well.. virtual desktops weren’t really designed for convenience, so it’ll probably have to be a “remove last” button.

Oops, I almost forgot. I can finally commit a bugfix I wrote at tokamak that uses a 4.6 function. whee!

Oh, and i’ll be at dev days in SF. Yay! :) That’ll be fun. And I have midterms directly before and after… Yes, i’m crazy ;)



{September 5, 2009}   and that was tokamak 3

wow, the week just flew by. it’s saturday night now, and I’m in zurich, checking email n’stuff. early tomorrow morning I’ll head to the airport.

it’s been a really awesome week. lots of hacking and hiking and very little sleep. it was wonderful to see the plasma family again. I miss you guys already. but I feel like I want a vacation to recover :P

no vacations for me, though. school starts tuesday and I’ve already got reading assigned. I’m in this cool new course where we’re going to be working on projects with students from other universities… here’s the blog for the course. it should be a lot of fun. :) but… the downside is it might be very busy, too, so I’m not sure how much time I’ll have for KDE this semester. we’ll see. after everything that’s happened at tokamak I really want to make *some* time to keep hacking. :)



time for more javascript! yay.

First, a quick little thing: my last javascript post was slides from my LFNW presentation, which had an extra little thing about dataengines. I never did blog about that code, though.
It’s pretty simple. I wanted the time engine to give me an update once a day, so that I can reset the flag. For demonstration purposes, though, once a day isn’t so great, so I set it to reset every ten seconds instead.


plasmoid.dataUpdate = function(source,data)
{
progress.setIcon("flag-red");
progressValue = 0;
}
engine = dataEngine("time");
engine.connectSource("Local", plasmoid, 10*1000);

I define my dataUpdate function, which gets the source and data – but doesn’t actually use them. It just resets the flag back to red (maybe later I should set it to double-check the date, in case there’s a forced update). then I grab the time engine, and connect the local time to my plasmoid with an update of ten seconds.

now for something a bit harder: I want more than one task.

So, first attempt. I put the task creation into a function, and calling this function made things work just the same as before. So far so good. Next, I changed all references to the label, icon and progress counter into arrays. New tasks are appended to the end of each array, and the dataUpdate clears them all. the config UI only controls the name of the first task for now; a second one is hardcoded in there.

Then I realised that the slot for changing the flag could only work for one icon. huh. :/ maybe it would be possible to add the function to each icon? but it’d still not know its index in progressValues. what I really want here is for the label, icon and counter to be wrapped up in their own little class. and if that class was a widget with its own layout, then I could easily stack them vertically instead of having everything all in one row.

I haven’t a clue how to do classes in js though. inheriting graphicswidget, creating slots…
well, I read up on javascript prototypes, and found out about the extends keyword… but I bet we don’t have QGraphicsWidget in the js bindings. :P ok, for now I’ll skip the inheritance.

I spent a long time trying to understand how to do classes in javascript. It’s weird. It hurt my brain (probably didn’t help that I was half asleep the whole time). I did get it working eventually, though. and then discovered that connecting signals and slots in javascript didn’t work quite as I thought it did. if you want to connect to a function that’s in your class, you have to use either foo.mySignal.connect(this, this.mySlot) or foo.mySignal.connect(this, “mySlot”) – with these it refers to the function in the class (not a global function) with “this” properly set.

Here’s the code using classes – I ended up reorganizing the code a bit in the process. There’s the Task class constructor, which sets up all the variables (label, icon and progress counter) and layouting and connections. Then there’s the reset function, which is called on timeout, and the moreProgress function, called when the icon is clicked. After that I have some setup code that creates two Tasks, and the old dataengine and config stuff. Only the name of the first Task is configurable, still (and I’m being bad and setting it directly instead of putting a function in the class for that).

So now what? Well, the layouting is ugly. Let’s see if we can improve it a bit. Wow, I managed to crash plasmoidviewer. It doesn’t like me doing new LinearLayout(plasmoid) more than once – riight, because the plasmoid itself can only have one controlling layout. I want new LinearLayout(layout) to have layouts inside layouts. Fixed that, and now I have nested layouts. :)

Notice that the flags aren’t aligned with each other. that’s what happens when you put hboxes in a vbox instead of using a gridlayout. I could hide it by putting the icon on the left, but really I should do it properly…
uhm. looks like we don’t have gridlayout bindings ATM. we do seem to have qgraphicsitem bindings… but I don’t want *those* any more, because with a gridlayout there’d be no point.

Oh well – I think that’s enough for now. I’m going to go work on something else… or see when lunch is… :)



{September 2, 2009}   tokamak continued

so it’s wednesday now, and tokamak continues to be awesome. all of the gsoc students that came here, and all but one of plasma’s gsoc students overall, have merged their code into trunk. we have remote widgets, a new applet browser, and more… then there’s netbook stuff, and web stuff, and we’ve been talking about the future of virtual desktops and the ZUI, and playing with the Mystery Device (whisky + wine -> making plasma look like gnome), and… I’ve already forgotten a lot of things, I’m sure :)

personally, I’ve been working on a bunch of little things: getting folderview to play nice with my mouse plugins, trying to make activity removal work better, chasing obscure bugs that popped up in the middle of that, making little fixes here and there (plasmoidviewer can be run with just a containment now, no applet – I got sick of having a clock in the way of my testing)… yesterday I returned to my javascript plasmoid, and I’ve got half a blog post about that, but right now my mind keeps wandering off to Overview ideas, which we’ll be discussing again tomorrow.

Randa is a really beautiful place, too. even when it rains. :) on monday we went out for a walk and ended up building a dam (exercise! team building! oh my!). Then we watched it get washed away by water released from a *real* dam somewhere upstream. :) the weirdest thing I’ve seen so far, though, is a moth that’s been hanging around the flowers outside, behaving just like a tiny hummingbird. I thought it *was* a hummingbird, but it has antennae. Davide was trying to get photos of it, but I’m not sure whether any turned out well… darn thing never stopped moving. it was fearless, though, buzzing around our heads.

anyways, time for another walk. adventure awaits! and then more hacking when we return…



{August 30, 2009}   tokamak 3

so, thursday morning I got on a plane again and headed off to switzerland. I met ivan in frankfurt airport, and friday afternoon we arrived at tokamak safe and sound. :) it’s so nice when travel goes so smoothly.

I spent a good portion of the train ride staring out the window… switzerland is quite beautiful. mountains, ravines, waterfalls… the place we’re staying at is in a little valley, tall snow-capped mountains on either side. there’s a little pond behind the house, with frogs, and flowers all over the place. At night, it’s so dark you can see the milky way. :)

we had no trouble finding the house, because there was a giant stuffed konqui sitting outside. :) most of the gang was already there hacking and getting their internet fix.

Saturday morning(ish), tokamak officially began. We had introductions (at least four newbies here!), presentations, and a bit of planning. We’ve got a *lot* of cool stuff going into plasma for 4.4 :)

Saturday evening was our social event… we went out to the nearest town and had lots of fun, then came back and stared at the stars for a while… some of the guys attempted to make bread, too (we’ve been making our own bread here). it doesn’t work so well while drunk. ;)

Now it’s sunday morning. Despite being up very late, I still woke up early this morning, and went for a little walk. The mountains are so high that I couldn’t see the sun until about 9:30, so it was a little chilly. :) but still breathtaking. the scenery here is truly inspiring.

anyways, we’re doing our last few presentations now, and after that we’ll have the rest of the week to hack together. :) :) this is gonna be awesome.



{August 17, 2009}   gsoc wrapup

Well, today is the official end of gsoc. Conveniently it’s also the day I merged my code into svn. I’m still working on some behind-the-scenes cleanup, but it feels good to have the code actually in trunk. :) And now other people get to test it out easily, yay!

I haven’t written any particularly interesting code this week; just doing code review with Aaron, getting it ready to go into svn. And now it’s in. :) Other than that I’ve been enjoying the parties and sunshine. And thunderstorms… vancouver’s got the seasons on shuffle right now ;)

Another summer, another project complete… :) A plugin API, a config UI, and six plugins. yay!

so, if you’re running trunk, go play with it! :) the config page is in the Desktop Settings dialog.



{August 8, 2009}   gsoc week 11: two new plugins

This week I created two plugins: a window list and an application list.

The window list, well, shows a list of windows. :) I added config so you can show only the current desktop’s, or show them in submenus if you tend to have a lot of windows. (although perhaps that should happen automagically?)
Since there was already a tasks engine for getting info on windows, it was pretty easy to write the plugin. :) I just had to add a feature and fix a couple of bugs, and the engine did nearly all the work. :)

For the application list… well, it turns out that none of the people writing launchers had actually written a nice generic app engine. :P So I wrote it. that actually wasn’t much work either; I based it on the tasks engine, and it gives info on all apps, with a service to launch them. No favourites or recent docs – but feel free to add that to the engine when gsoc ends (that’s in one week! eep!) :)

That’s it for plugins from me… at least for now. I’m going to spend next week fixing up and polishing things, then gsoc will be over, and I have a few other things I’d like to do before school starts.

There are two plugins I’d originally planned to do that aren’t in here: a zoom plugin, which is on hold while we reinvent the whole ZUI thing, and a quicklaunch plugin, which I would have done this week if I’d had a kmenu plugin to build on already (that was the week I had to send the laptop away). Making a quicklaunch plugin could be done by just adding config to the app list plugin so that the user can pick just some apps or menus to show; not too much work, so if someone’s interested, come see me when I’ve got this code in trunk. :)



{July 30, 2009}   gsoc week 10

whee! thursday evening and I’m done for the week. I made the desktop menu configurable, so that most standard plasma actions could be chosen. this means that I can check off the zoom actions, and have my preferred way of zooming back again. :)

tomorrow I’ll do some cleanup of various little things – need to get the API in better shape so it can go into trunk. after that I’m going to have a busy weekend (parties, fireworks and chores) and probably won’t be online much (yet somehow I always end up in irc despite saying that ;)

[update: I got *all* my cleanup tasks done on friday! yay! now the code's up on reviewboard.]



et cetera