Thursday, May 31, 2007

games; french techbase; italy; plasma

sleep, the final frontier.

somehow that's how it feels. i got less than 4 hours of it last night before my body decided it had had enough of that and wanted to go again. this happens in the spring and summer to me a lot, especially when the transition from winter first gets underway.

so up at 4am i did a little bit of irc'ing and then a little hacking and then realized that i had to be up in 3 hours anyways to get p. off to school so just stayed up. made breakfast for him, packed his lunch, walked him to school, came home, hacked a bit more and dealt with email. then came the meetings.

we had a plasma meeting today where we covered off on the artwork. the oxygen artists were cool enough to show up and give us some thoughts and direction. the hope is that in short order here we will have some non-fugly, non-whipped-up-in-10-minutes-for-testing-purposes svg's so that when people demo plasma it makes a really good first impression. we know that the art and layout of plasma will be our first impression moment for kde4, and are taking it pretty seriously due to that.

we talked about packaging options so people can ship custom themes easily, which led to a discussion later in the day with both kde-edu and kde-games people who are dealing with similar things. the result is that we're having an add ons and GetHotNewStuff2 BoF at aKademy to nail down the details. huzzah. it also resulted in me doing a bit of hacking on the GHNS2 download dialog, which led to me adding half a dozen TODOs for the API of KTitleWidget as well as the GHNS2 download dialog.

i also unfugged the file dialog's layout yesterday because it was really starting to cheese me off. there are still some issues with the side bar, but that's a new widget and still a work in progress (go kevin and peter!) and doesn't look too bad even now. kde4 has actually becoming a very comfortable development environment, both from the api standpoint as well the "a lot of components work and look decent now". and the latter bit is improving every day. anyways, i ramble... back to the plasma meeting.

we also discussed priorities and needs for data engines and documentation as well as how to handle saving applet configuration. a summary was posted to panel-devel and irc logs made available. and speaking of dataengines, i saw the first screenshot of the weather dataengine in action in the engine explorer today. whee!

i also found a cool little game in playground called kollision. in it you are a little ball and you have to move it around to avoid the nasty red balls that are bouncing around trying to run into you. it's a cute little fun game; best part: it's now a plasmoid. we haven't even finished, let alone released, plasma and already people are writing add ons for it. slick.

from the plasma meeting is was to a quick lunch and then the kde italia meeting on irc. upshot of that meeting is a coordinated effort in Italy by the kde people in that country to really kick up the promo, news and support in Italy. a mailing list is being launched along with a new wiki and a blog planet, both having content in the Italian language. it's just the start towards bigger goals, but you have to start somewhere and usually that's with creating a place for community to gather and share. it also gives the opportunity to get to know each other and figure out working relationships. go kde italia! =)

over in france, thanks to the efforts of our very own kde edu mastermind annma, techbase articles are starting to appear in french. annma gave a kde4 presentation that evidently made a big impression on the audience, so much so in fat that some of the people who were there have started the french techbase effort. that is awesome! we now have articles in english, chinese and french. getting documentation into various languages is a very important step towards lowering the bar to involvement.

to finish the day out, before making dinner for p. and i, i finished implementing the applet constraints system so now applets can adjust their form factor, orientation, etc. i'm going to make a screencast with audio tomorrow showing this off. =)

but right now, i'm off to bed. i feel tired and am going to take advantage of that. *kisses*

i was wrong.

before ie7 came out i was highly skeptical that firefox would break 15% market share. why?

i figured microsoft would simply look at firefox and copy everything good about it. they'd fold all the good pieces into ie7 and add one or two gratuitous extras. then they'd ship it as the default browser with vista which would be a monopoly's juggernaut and ... firefox would slip.

what i didn't see coming was microsoft's complete and total incompetence. billg's anger used to drive that company to, without any shame, copy whatever the flavour of the day was and add something useless to it. billg's money would market the hell out of it. and billg's growing monopoly would seal the deal. this would get microsoft through the first two or three horrible versions of anything microsoft brought out until it was good enough (or, rather, ok enough) to see them through.

today there is no anger. today there is no marketing pinache. today there there is no technical ability that gets past redmond's management.

and so firefox has continued to flourish and hit 25% market share. that is awesome. i'm very happy about that. and i'm not too big to admit publicly that i was wrong about the future of that browser.

what excites me most is that i was wrong because the heretofore "unbeatable" competition is faltering in ways that completely baffle me. we'll be happy to take advantage of that.

and to billg: good job on making something that can't continue beyond your own vitriol. the true sign of success is making something that continues after you are gone.

building a brand

i went out for dinner with p. after his soccer practice. we sat on the deck of a restaurant and watched the sens lose (if that last phrase doesn't mean anything to you, then you're probably not canadian or in one of the states in the usa that cares about hockey =). an unfortunate game. but we had a good time eating and drinking and visiting with people around us.

in the course of conversation, someone asked what i did for a living and i pointed to the shirt i was wearing. it has a kde logo on it. he said, "oh, you work on kde?" a few of them have used it, either currently or in the past.

most importantly, without a word from me they knew what it was.

we are building a brand with recognition. why? because it rocks. because the people behind it rock. because people are looking for the sort of thing we're doing.

i do notice, however, that i'm one of the few people on any of the free software desktop planets to be sharing stories like these. either i'm stupidly lucky and keep meeting people all over the world who know what we're doing .... or the rest of us either aren't getting out enough or aren't sharing.

when i was in brazil last every time someone asked what i did, the people i was with would immediately warn me not to say what i did. i asked why and they said that being a computer geek wasn't sexy and i'd not hook up with anyone that way (ask the people who ate breakfast in the hotel about that). i say: there's nothing to be ashamed of. in fact, it's amazing that we create things and share it with the world.

we are the artists of this modern renaissance. leonardo would be proud. so share it with confidence, because i want to read your stories about people you meet randomly who use and love the stuff we make.

Wednesday, May 30, 2007

kfax vs okular: you can help shape the outcome!

i spent some time today going through each application in kdegraphics, and a couple that aren't right now, to update the status of them. the deadlines for getting the applications arranged in modules is looming, at least for apps moving in.

i'm going to be trying something a little different with kdegraphics in kde4: moving all the niche applications to extragear and keeping a set for essential functionality in kdegraphics. extragear is doing the big kde3/kde4 shakeout on friday, and after that i'll be moving apps into extragear/graphics. then with the release of kde 4.0, and each subsequent release, there'll be two graphics app packages (not counting the apps in koffice =): kdegraphics and extragear-graphics.

the last stable tag in svn for each app in extragear-graphics will ship in the the extragear package. the apps in extragear/graphics will still be encouraged to do their own releases as well; that doesn't change.

there are a few apps and pieces in kdegraphics that just simply won't be making the transition to kde4. this could because there are more sensible options now or the apps hasn't been ported, or perhaps just needs a rewrite plain and simple.

one app i'd like to see in that category is kfax. currently i can't really remove it completely for one reason and one reason only: neither okularn or ligature can load files that contain raw g3 data (mimetype: image/fax-g3). basically these files are tiff image data but without tags (the "t" in tiff =). so libtiff can read and write the data, it just can't open the files directly without some manipulation.

there is an app called raw2tiff that comes with libtiff, however. you can download the source for libtiff here and check out the 640 line file that is raw2tiff in tools/raw2tiff.c. it's pretty straightforward stuff, mostly just making an educated "best guess" as to the contents of the file.

another example of raw loading can be seen in kfax itself, though it's a bit more complicated as it does more than simply figure out the metadata.

if okular got support for loading raw g3 data then we could put kfax out to pasture. it's not actively worked on and it would be nice to offer all the possibilities that okular provides to faxes.

if you're looking for a cool little project that probably won't take too much time or effort, take a look at kdegraphics/okular/generators/tiff/ and raw2tiff.c in libtiff's source distribution and see if you can't bridge this gap. =)

as for me, i need to finish eating lunch (typing whilst i eat here) and then get to some plasma hacking.

Tuesday, May 29, 2007

watch out wesnoth, here comes p.

so p. has decided he's going to grow up and write computer games. he made this decision several months ago almost immediately upon learning how games are made. in the meantime he's become a huge wesnoth fan, and he's becoming disturbingly good at it.

the other day he pointed out to me that having to use the mouse to open the menu isn't so hot and that he should be able to press a key combination (he suggest ctrl-alt-m; obviously an emacs user at heart already. eek.) and it should pop up in the middle of the screen where he can then use the keyboard to select what he wants from it.

he also informed me that he intends on joining the wesnoth project when he is older to help them develop wesnoth 2. he has set also a date of 2020 for its release; i kid you not.

sometimes i just sit here shaking my head in awe and wonder as he shares his thoughts and ideas, reflections of the outside world cast by the mirrors inside his mind.

omg, icons! oh wait, that's not exciting.

so we once again have pretty icons in plasma. they are a layout management compliant graphicsitem that supports loading an icon by name or by passing in a QIcon and which can be themed with an svg that contains some or all of the following element:
  • background
  • background-hover
  • background-pressed
  • foreground
  • foreground-hover
  • foreground-pressed


this should give us some nice basic buttons and allow us to theme them decently and flexibly. this should not be confused with animating effects and transitions (e.g. between hover and pressed or whatever), that's for another purpose-built animations class.

i'm toying with the idea of a chroming class that dress up things like icon buttons itself and pass off to the animation class ... but i think at this point that would be way overdesigning things. =)

in any case ... i'll be swapping out the icon list in krunner to replace it these icons. i'm waiting on a new sliding display widget that asiraj started on yesterday before i go and do that, however. then things should be really slick in krunner.

the icons in plasma will serve a few purposes; one of which is to serve as a FormFactor transition piece. what do i mean by that? well, imagine you have the application launcher interface (in kde3, that'd be the venerable kmenu) on a panel somewhere. you drag that off the panel and onto the desktop. on the desktop, it will expand to show the whole contents of the menu. if you drag it back off the desktop to the panel, it would show the button again which would have to be clicked to pop up the menu.

next i'm forcing myself to address the question of exactly how i want plasmoids to be aware of constraints such as their current FormFactor. i have a few competing ideas in my head; they have been competing for months. i figured eventually one of them would tire of fighting and go its way calmly into the night, or that one of them would grow nasty fangs and tear the other one's throat out. but alas, they are both survivors. so i have to actually intervene and pick a solution and implement it. as stick and carrot, i'm not going to let myself work on the other pieces i'd like to be working on right now until this "detail" is behind me.

meanwhile, milliams has continued working applet creation (drag and drop is now supported), ruphy continues to pluck at the clock, and the raptor menu guys are rumbling again.

what, no screenshots or screencasts? nope. the icon button stuff is actually pretty funny right now because the iconbutton.svg is a debugging image which produces humourous results from a use perspective but which was just about perfect for me debugging things.

if you want to see some really nice screencastcandy, check out rivo laks blogs on kwin's composite effects here and here. wicked cool stuff; congrats to the kwin developers (yes, i'm looking at you lubos! =). given that the new integrated composition manager development only started relatively recently with relatively few developers working on it when compared to other similar efforts out there, i'm very impressed with what is there already.

p.s. if you haven't been watching the progress on api.kde.org, you really should go take a look. they are pretty well done working on it for this iteration, and i have to say it looks really, really nice. props to winterz, danimo and ade. =)

*hugs*

on mistaking the internet for an interface

today on irc i heard tell of a kde library that someone is hacking on that interfaces with a certain well known social networking site's api. (i'll leave everything rather anonymous to protect the innocent and so as not to steal their thunder should this library see the light of day =) my first thought was "woah, cool; we should build a plasmoid around that!" the library author then said something to the effect that that would be a really cool feature to have: social networking melded with your desktop.

in a related vein, i've been keeping one eye open on red hat's mugshot project. i think it's mostly a solution looking for a problem when it comes to end users, though i agree with the stated problem it is attempting to solve of "open source social networking server software". regardless, it's interesting because they are building a desktop interface to it.

for years and years now i've listened to people proclaiming the end of rich client computing. if you haven't heard, it's been slain with a fell blow at the hands of web applications. this meme predates the turn of the century. the reason this is, in my opinion, complete crap is that it mistakes what the internet is, and web applications are.

they are a means of achieving non-locality of data and function. this is a very compelling idea that has all sorts of amazing ramifications. social networking sites such as myspace and facebook are one of them; youtube is another. informational non-locality allows not only one to access their information anywhere they can connect to the network, it allows other people's information to mix, mingle and synthesize with their own. really cool stuff.

but, and here's the salient point, it isn't a user interface.

web browsers are being pushed and punished to house interfaces and over time these methods and slowly becoming more and more similar to the toolkits and methods we use in rich client computing, only they are more resource intensive, less mature and ... well .. suck. when we drool because some webmail app allows us to drag a mail from one folder to another, we ought to step back and check ourselves.

face it: we're excited about ... drag and drop?!

i won't even go on about how the internet is not ubiquitous now, nor will it be for several more decades at best.

now, i will give the "web 2.0 pwns your children" crowd this much: rich client computing will die a slow and painful death if it doesn't adapt to the new concepts of information non-locality. rich client software needs to be able to extend out beyond the confines of your desktop/laptop/tablet/handheld and into the wider world. more importantly, it needs to be able to meld that reality with the local one.

so .. as i was saying, it would be really cool to have a plasmoid that interacted with that social networking site's api. ;)

postcard

"We're having a lovely time, wish you were here" - the who

today i got two postcards, one from honolulu and one from tokyo. both of the senders are back home already (hi mr. ottens! hello t.!). very cool to get them all the same =)

got up at mid morning and started the day. food for p. and a shower for me, email, svn up, e.v. board conference call meeting, some minor commits, lug radio interview, email, news, more email, look some patches, dinner ... and dinner at 17:15 was my first meal of the day. i had coffee for breakfast and lunch due to being too busy to get food together for myself. boy do mondays suck =)

i'm going to relax for a bit and then see if i can get some more serious plasma hacking in when it's quiet and night time =)

Monday, May 28, 2007

data engines and transitions

i got some more work over the weekend in on plasma, though it was pretty low key due to everything else going on. i wrote a small engine that grabs rss feeds from cia.vc and publishes them.

this enabled me to test some new data engine features that are needed, such as placing an upper limit on the number of data sources available with an engine. the least used ones get dropped off automatically when a limit is set.

then i wrote an applet that starts to display the current strengths and weaknesses of the new layout stuff, which is still in its infancy. but in 127 lines of c++ code, including the header, it displays the information published by the cia.vc engine in a series of text boxes in a vertical layout. now that we have something that demonstrates the layout code easily, i expect that to start firming up even quicker. well, not that it was going slow lately, but.. yeah.. easier when there are real use cases about.

which was my entire intention with writing this engine/applet pairing. though it is neat to see kde's commits on the desktop =)

my plan had been to work on a transition effects class which i'm tentatively calling Phase. i did the design this afternoon based on thoughts that have been collecting for quite some time on it. in essence, the idea is to allow this class to manage all manners of animated transitions: objects appearing and disappearing, sliding, joining, getting attention, etc.

the base class handles managing the timelines (which controls the animation firings) as well as informing the Corona (which is the plasma graphicsview implementation) when the animation is complete. the base class then calls the actual animation producing methods which get all the state information they need delivered to them.

it will support pluggable implementations so we can ship a basic (e.g. none ;) transition implementation but people can create pretty much any sort of transition they can think of and code up.

there will be one method per transition type, and the method will be called with a QGrahpicsItem object and where in the animation it currently is. that means that creating new animation sets means simply working on the animations themselves, none of the boring framework bits like the timelines and what not. that's my job ;) given the ability to draw on top of, around as well as modify the passed-in QGraphicsItem itself this should be a pretty flexible system that opens up all sorts of doorways for useless eye candy ;)

this, along with a few similar things that we're doing, should also allow plasma to also scale from a high end system with a local desktop to a low capability system running a desktop over the network simply by setting the complexity of the effects and imagery.

my goals this week are to get the start of script support, ghns2 and packaging (working with ruphy towards that end) and grouping... lots to do, indeed, but the progress is encouraging me to go even faster =)

Sunday, May 27, 2007

stuff

if you don't care for that 'personal life' blah blah blah, skip this post =)

friday night was a family dance at p.'s current school. it was held in the gym. they had 4 activity centers (a bowling game, a bean bag toss, a wheel of fortune and a snacks table) and a dj. the dj played some 'classic' wedding / lame party stuff like the chicken dance song and locomotion. but he also played stuff like the pussycat dolls' "don't cha" and some of gwen stefani's new stuff. it was really odd being at an elementary school event where they played music that gets played in nightclubs.

and apparently p. has picked up some breakdancing from somewhere because during one of the songs he dropped to the floor, executed a back spin and a few other moves that were rather unexpected.

i watched a movie called "find love". happens to have the guy who played dexter's brother in the showtime series "dexter". it's a pretty brutal little movie; low budget but the story line is pretty interesting. if you've recently been shot down when proposing to someone or been told of an unexpected pregnancy you're responsible for, though, you may not want to watch it. at least not without sedatives around. ;) i found the scene where the girlfriend invites the other woman who the guy is falling in love/lust with over for dinner against both their half-hearted protestations enjoyable, for memories' sake.

a cat has appeared in the neighbourhood recently; cute little black and white number. has taken to hanging out with my cats and occasionally comes in the house. he's got a collar but only a city number on it and isn't full grown yet. apparently both my neighbour and i have taken to giving him some food in case he's lost, given that he recently appeared and seems to be around all the time. i'll probably end up needing to do something with him soon.

my sister finally got an invitation to our mother's wedding. it's put together a little differently than mine, though. it has a metallic twist tie holding it together rather than the nice gold pin and lavender ribbon mine had. one of my half-brothers phoned; he's moved closer to calgary and is probably coming in for some partying this weekend. wanted to hook up; informed me that my other half-brother is back smoking crack again. but then again, they don't get along and brother 'a' has been known to have issues with accurately relaying reality so who knows what is what.

i got my hair cut the other day. new stylist. went with andy; boys morning out to the salon. how very metrosexual of us. we got highlights while we were at it; he got blond tips on top, i got a sunkissed look to break up my rather uniform and drab dark brown with copper strands. it looks very natural; you wouldn't even know it was colour if you were to see me for the first time. pretty happy about that.

p.'s room has really come together; we've tossed a stupid amount of useless crud out and have a few boxes of stuff to donate to the thrift store. the room feels so much better; the energy is completely changed. was a good weekend project for us.

and so there it is ... another weekend in the odd life of me. managed to get some hacking in as well, but i'll leave that for another post.

how can we dance when our beds are building

(and the music inspired titles continue)

p. got a new bed from ikea last weekend, but i hadn't put it together yet as i wanted to couple it with a cleaning of his room. we spent an hour or two each evening over the last two days of the school week doing prep and moving some of the easier stuff around. today, after a bit of a sleep-in, we tackled his room head on. we got rid of tons of stuff that was either broken, neglected or which he had simply out grown (e.g. books that were uninteresting to him now, toys that he left behind or clothes he'd gotten too big for). we moved furniture around and started building the bed. we were foiled in the end by the battery in the drill going flat. i plugged it in and we went to see a movie.

he was asleep by the time we got home, so we'll finish the bed together tomorrow.

i also did laundry (3 loads; my god[dess], where does it all come from?) and answered emails, responded to im's and scanned over the odd patch whilst walking past the computer desk between tasks.

needless to say i'm pretty tired, but the house looks better and p. and i had a great time of it.

if you missed it, allen winters has been plugging away at api.kde.org to get it well functioning. as you see on the main page, there is a nice table now that lays out all the options a basic search box that finds a class by name for you. you need to know which module (kdelibs, kdebase, kdepimlibs, etc) it's in, but it does the rest for you. pretty nice. hopefully one day we'll have a full text search as well, but even this is a nice step up. there are, of course, also download links so you can have a local copy of the documentation.

if you are wondering how to write API documentation, there are also some nice tutorials on the topic as well over at techbase. they were originally on api.kde.org and i was going to settle in and move them over to techbase as i promised winters yesterday that i would, but it seems that our techbase heroes, danimo and dhaumann, beat me to the punch tonight. rock on!


instead, i'll do a little more api doc writing for libplasma. too knackered to do any real coding at the moment. =)

Friday, May 25, 2007

laptop lust

as much of a geek as i am, i never caught the gadget bug. i have a really hard time getting excited over new gizmos that hit the market. i appreciate beauty in design when i see it, but can (and generally do) live just fine without the latest and greatest hotness of the day.

however, when i saw this i just about wet myself.

assuming that they actually make this thing, that the performance is decent and that it arrives with a comprehensive set of open source drivers i would love to get one as my next laptop.

*joyful shudder*

Thursday, May 24, 2007

plasmoidal

i woke up today to snow on my front lawn. yes, it's the end of may and we're still getting the odd snow fall. it was probably 3 centimeters or so deep on the car. typical for spring snow it was fairly wet and very heavy. yes, "typical" because it happens that often. silly canadian prairie weather.

on the upside, i got word yesterday that p. has been accepted to the waldorf school. so now we just need to complete the admissions process and that's done. i'm very happy about that. he'll be spending fridays in june at the school to start getting acclimated and make friends with some of the other students. neat-o.

also, as of today plasma now loads applets as plugins and by next week that will be upgraded to full on plasmoids. what is the difference, you ask? good question!

from a user's perspective an applet is an implementation detail. from a developer's perspective it's the code, be it a script or a bunch of c++ compiled into a library, that creates a Plasma::Applet object.

it takes more than just that to have a full widget in a plasma container, however. and that's where a plasmoid comes in. a plasmoid is the collection of files that, taken in sum, make up a plasma widget. these files include:
  • metadata (.desktop file(s), sample screenshot, etc)
  • svg image files (to be registered with Plasma::Theme)
  • configuration data (KConfigXT xml)
  • and of course ... code
by the time we're done for 4.0 there may be other files in there as well.

the really good news is that we have, thanks to work by riccardo iaconelli, a packaging format that is tightly integrated with GetHotNewStuff2. for those who have been living under a rock for the last few years or simply aren't very familiar with kde, GetHotNewStuff is a way to provision application data add-ons over the network. the project has grown since kde3 and is now hosted on freedesktop.org. it includes both server and client side tools, and for kde4 we have some classes that allow developers to easily interact with packages of updates.

these packages are very simple, essentially documented zip files. they don't do complex dependency resolution or fight with your operating system's package system. they aren't meant to deliver complex pieces of software either. but they are perfect for plasmoids.

this part of GetHotNewStuff2 will appear in libplasma for 4.0 with the idea of proving them first in the workspace area and then moving more mature versions of them to kdelibs for 4.1. they are in playground right now, but should be svn mv'ing over to libplasma next week.

in the meantime, milliams is starting work on listing known applets in the desktop toolbox, which is handy little slide-out-of-the-side-of-your-screen widget that gives you access to things like adding new plasmoids to the desktop or panels, layout switching and desktop zooming. have i said how much i hate popup dialogs?

oh, and alexander "wirr" wiedenbruch has brought superkaramba into a library so now superkaramba themes can be rendered in plasma. he posted a screenshot the other day of it working. there's still more work to be done on it, but this is a major step towards providing a migration path for superkaramba users.

so .. things continue on a nice clip in plasma. lots left to do, so i don't foresee these blog entries stopping any time soon =)

Wednesday, May 23, 2007

boy can i ramble.

While in Brazil for FISL 8.0, a film crew with Celepar was wandering around interviewing, filming and taking pictures of the speakers. They found me in the hacking room where keithp and i were sharing a table in quietude. They had a small list of questions to ask me, mostly about KDE, and asked if I would participate in their film project. Of course, I said I would and so they started. But they didn't actually ask me any of their prepared questions. Instead they asked me to say something about the topic of their film: free knowledge. I think the idea was that I'd say a little something about free knowledge and then we'd talk about KDE. Or something like that. Instead I went on a huge ramble about free knowledge, some of the reasons why it is so important and how free software helps ensure free knowledge. Then they asked me what I knew about Celepar, I rambled a bit more, and then all a-smile they packed up their things and thanked me for my time.

The result is this 5:21 of video. Given that I was speaking on my feet (nothing was prepared) I think it came out Ok.

Update!: Fabián was nice enough to encode the video in Ogg format so you don't need proprietary software to view it! Fabián: You rock! The link to the ogg can be found in the comments to this blog entry.



Oh, and as you can see, I'm using capital letters in this blog entry. Don't get used to it though. I'm doing it just so those who whinge about my love affair with the lower case will leave me alone for at least this one entry. ;)

hugs and kisses, aseigo.

Tuesday, May 22, 2007

japanese boy

<title-reference>ah, aneka, where have you gone</title-reference>

t. got back from a month in japan last night. she emailed me at 4am to let me know. unfortunately i was out partying with a bunch of british soldiers who adopted me for the night. i became their tour guide showing them calgary by night and they introduced me to various games, mostly involving drinking, that they are evidently quite well practiced in. they are in town on some sort of training exercise a couple hours outside of calgary. they had a couple days off at the end and so a bunch of them trucked up to the city and have been painting the town red. and omg can they paint. er, party.

i woke up this morning a bit sore but started going through email and what not .. was about to tuck into some api docu when t. phoned, inviting me for brunch and a trip to the gym. we fit in a stop at the mall in between. essentially she abducted me for the day, not that i put up much resistance. she told me about her trip, which sounds like it was awesome, showed some pictures she took and we basically caught up. after the gym she was full of yawns as she didn't get much sleep last night, suffering from the time change.

m. leaves tomorrow for detroit so she's on her way over with p. who will be here for the next 10 days or so, to say goodbye and what not. lots of people coming and going =)

so, long story short my night will be taken with api docu instead of my morning. so be it.

and speaking of people coming and going, kevin ottens (lead solid developer, libs hacker and all around great guy; like dfaure and laurent he's also french... what is it with coders from that country being so insanely productive?) is coming for a stay at the house here on june 6th. kevin and i will be hacking up a storm while he's here, so that should be fun. =)

icon types

i added a new "type" of icon: Dialog. this augments Desktop, Panel, Toolbar, MainToolbar, etc. i was tired of my large desktop icons making every icon that appeared in a dialog to appear ginormous. no more! so adjust your usage from Desktop to Dialog where appropriate. i need to do that in a few places in kdeui, actually =) i'd also like to add a FileManager icon type so that the desktop and file managers can also go their separate ways.

what other icon types should be special cased?

plasma engine explorer

here's the result of my work today:


Engine Explorer


in a nutshell this gives those developing a Plasma::DataEngines the ability to see what is being published, and people developing plasmoids can see what they can connect to. the code can be found in kdebase/workspace/plasma/engineexplorer/. the binary name is plasmaengineexplorer so as to not run into all the other engineexplorer executables out there ;)

it's not a perfect user interface by any means, but it works. and it started by hacking a bit in kdelibs. and being monday that meant compiling kdelibs several times ;)

you can also see Urs Wolfer's neat new KTitleWidget at the top. that little guy was being used quite a bit in kde4 and it became apparent that it was going to be a nightmare if we ever decided to change how it looked. so Urs whipped up a little class to do the magic. besides being used in KPageWidget, i'm already using it in krunner and the engine explorer.

Monday, May 21, 2007

kde/solaris irc meeting

if you use kde on solaris or opensolaris and are interested in getting involved with the kde/solaris community, join us on irc in #kde-solaris on freenode tomorrow at 13:00 GMT.

the meeting is being led by stephan stefan teleman, and he's provided a loose agenda for the meeting:


  1. Extra Contacts for #kde-solaris on IRC

  2. Community Involvement

  3. Sun Involvement

  4. Library Dependencies on Solaris

    1. QT 3.3.8

    2. QT 4.3.x / 4.4.x

    3. KDE 3.5.7

    4. KDE 4.x


  5. KDE Solaris Distro Components
    1. KDE 3.5.7

    2. KDE 4.x


  6. Distro Bitness : 32-bit / 64-bit

  7. Build System

  8. Build Servers / Home Workstations

  9. Division of Work
    1. KDE 3.5.7

    2. KDE 4.x.x


  10. KDE Solaris Patches / Customizations

  11. KDE Solaris Testing

  12. Linux Compatibility Testing

  13. FreeBSD Compatibility Testing

  14. Submitting Patches Upstream to KDE SVN

  15. Branding

  16. Packaging

  17. Administrivia for KDE Solaris



see you there =)

clockwork plasma

with the time engine working, ruphy went to work on the clock a bit. i pitched in a few fixes to Plasma::Svg for what we are doing with the clock and we now have a fully svg themable clock interface. well, as long as its an analog goes-around-in-a-circle kind of clock. adding additional types of clock faces will be a future effort.

adding a rather unfancy text clock was pretty easy:

Plasma::LineEdit* l = new Plasma::LineEdit;
m_grahpicsScene->addItem(l);
Plasma::DataEngine* time = PlasmaApp::self()->loadDataEngine("time");
time->connectSource("time", l);


what's neat is that it uses the same data source as the analog clock being shown on screen, so there is only one thing waking up the cpu to look at what time it is. we
this has brought me to the issue of configuring DataEngines. since they are meant to be shared, i'm going to have to think a bit on how i want to do that. meanwhile i'll work on the laundry list of other things that need doing.

what's double neat is that you could connect any engine to that line edit =) we have a few other widgets already done: radio buttons, checkboxes, pushbuttons ... more to come including an html widget.

#plasma and panel-devel (irc and mailing list, respectively) are healthily active and happy places again. whee.

people are already working on other DataEngines, so that's happiness. doxygen pages are being generated, which means i need to get my ass in gear and start writing class docu for the ones that are missing it. like DataEngine ;) i also need to provide some tools for testing and exploring DataEngines. those are my next two tasks.

p.s. if you want screenshots or, better yet, screencasts of this stuff, that's coming with next week's commit digest. and speaking of commit digests, i'm rediculously hungry and i only ate a few hours ago. gah. stupid metabolism.

Saturday, May 19, 2007

plasma, media centers

a couple weeks ago i'd just about had it with the constant harrasment about plasma-this and plasma-that. it drove my moral right into the ground, to be honest, and unfortunately i don't have too many crutches in the form of people available for when my legs give out. which is probably 100% my own fault, but hey .. it is at is.

it all came to a head after a really annoying conversation on irc where i asked the most annoying of fellows to stop discussing why i shouldn't be surprised at the state of things and just suck it up. unfortunately, the conversation just kept going. i got really frustrated and ended up not on irc for the next 10 days or so.

instead i busied myself with other things that kde needed from me. i also spent a few nights out partying perhaps a bit harder than is good for my internal organs. eventually i got over it.

not, i'm sure, that many of you care ;)

so here's something you may care about: as of now, plasma sets itself as the desktop layer, sets up a graphicsview canvas and paints a desktop background. DataEngine, DataSource and DataVisualization work now. what the heck does that mean?

well, there is a cute little svg clock that is a DataVisualization which tells plasma it needs the Time engine. plasma loads the Time engine plugin and the Time engine starts feeding the clock .. well .. the time and date. the clock displays what it gets.

what's neat is that this is all quite generic. you can connect any DataSource to any DataVisualization, all you need to know is what Engine provides it and what the name of the Source is. and for the latter you can get a list of them from a given Engine.

there's more API needed still, but it generally works. which is to say, you can now tell the time and look at something nicer than a black or grey background using plasma.

i posted a list of about a dozen or so "next steps" to the panel-devel list. assuming that this start is enough to make people shut the hell up and leave me alone so i can enjoy breathing again, i'm feeling pretty good with how things went the last over day or two of coding and figure that i can keep this pace up for a good while now.

wait ... what, no screenshots? nope, not tonight. =:P

before i finish this blog entry out, in my last entry (written whilst coming off a night of partying =) i mentioned cool stuff to talk about at akademy. someone posted a comment asking me not to leave everyone hanging. fair enough.

i've been recently (as in "over the last 2 months or so") working with a group of people to bring a full fledged, kick ass, "just works" media center suite into kde. we're working off a proven code base; 'proven' as in 'you can find it on commercially available consumer electronic devices'.

this is completely different to (and complimentary with, imho) amarok, kaffine, etc. some of the stuff it can do is just crazy ranging from integration with telephony, controling HD TVs (in ways that puts vista mce to shame), sweet eye candy 10' interface and cool hardware gadgets like a wii-like motion-control remote. this won't, obviously, make it into 4.0 given where we are in the release cycle and the amount of integration work left ahead, but there's already a proof-of-concept of this integration target based on kde 3.5 and kubuntu feisty and we'll be working to provide it as an easy to get/integrate add-on for 4.0. the proof-of-concept will be publicly available as a downloadable customized kubuntu iso soon.

and that's really just the start of it. i don't want to steal too much of the thunder that'll be in the weeks to come, but i think that this could be a huge deal for post-4.0 kde. besides being cool technology, it will also be bringing financial investment, new partnerships with name brand companies and give us an extra boost when trying to break into the early majority band of user adoption.

at akademy i'll definitely be talking more about this in detail. until then, there you go: cool media center stuff is coming.

Thursday, May 17, 2007

early majority

where are we headed? tonight i went out to see some music. it was open mike night. there was a guy who was great on the guitar and the harmonica. i ended up chatting with his girl while he was up on stage and it turns out ... she's a kde user. no kidding. he's a gnome user who uses mostly kde app.

when musicians and the general counter culture are off using free software .. we're on the way to the early majority indeed.

at that's just the beginning. i have some interesting news to announce at aKademy regarding end user technology.

exciting times.

Saturday, May 05, 2007

radiant city

last night i took a walk downtown. it was raining lightly (i love walking in the rain) and i hadn't gone for a downtown evening walk in a while, so it seemed time to do so.

on the way i passed a movie theatre playing radiant city, a documentary (with a bit of fictional drama thrown into the mix) about suburbia and urban sprawl. i thought i'd check it out.

as the movie found its pace on highlighting the challenges (read: problems) with modern suburban development i thought, "wow. how true. this so reminds me of the city i live in." (calgary)

the people looked so .... familiar. then i started to notice scenery that i recognized. and roads. and ... street names? yep. it was filmed in calgary. it was so surreal to watch a movie about a particular modern ill that i was agreeing with and whose message i was relating to and to slowly realize it was my city they were using as the example.

so if you want to see the city i live in and the biggest reasons it sucks, check out this movie. they don't cover the good parts of this city, and there are many, but boy... do they hit the nail on the head. and yes, if you see "radiant city", this city is sadly really like that.

afterwards i went out dancing. someone asked me if my umbrella was a club ("the way you were holding it made it look like a club"; boy, didn't know i was so menacing ;). the music was tolerable and the crowd was young. literally upon walking onto the dance floor, a girl in a really cool 1970s style green dress grabbed me and we danced the night away.

see, there are good things about this city, you just have to get away from the suburbs =)

when i forget why i pick a title

i completely forgot to write the bit that fit with the title i picked in my last blog entry ("tell me that you'll open your eyes"). i got carried away on a stream of consciousness and ... yeah.

so, here goes try #2: in an article about a gtk+ app, i read today about how great d-bus was when an application uses it to export internal api and functionality; and i completely, wholeheartedly concur! the article went on to note how you can write scripts that automate things. how wonderful! the writer seemed to be writing from a place where this was the first time they'd really experienced this flavour of coolness. either that or they are good at getting excited repeatedly.

now, why would i say such a thing? because since version 2.0 kde has provided this same functionality via dcop, a tradition we continue in kde4 though via d-bus. kde apps have been exporting interfaces since the turn of the century to the joy and merriment of kde users around the globe. was the writer aware?

it does surprise me how people who don't use kde as their primary desktop never seriously bother to take a look into applications that run on their own platform (which is linux, bsd, solaris, etc). normally i'd be tempted to say, "hm. obviously we're not communicating about this well enough." but no, because in this particular case our user base tends to know about dcop and what it can do.

on irc or a mailing list when the answer is, "try dcop" i almost never see "what's dcop?" in response. 5 years ago, yes. today, rarely. so i think we've communicated it decently, but somehow primarily to the kde user base.

is it because we aren't talking enough to the wider spectrum of free software users? well, our communication is often popped onto sights such as lwn, linuxtoday, osnews, etc.

or is it because the group of people who don't use kde, which is a sizeable minority of the total user base, just don't bother as soon as they see those three letters "k, d and e" in succession?

given that i've heard people who are not just users but contributors to and even supposed thought leaders in our community spout the most heinously wrong stuff, like "linux doesn't offer good printing GUIs" (the issue was cups integration, if anyone cares =) which i heard at an osdl desktop architects meeting to "free software pdf readers don't provide ways to honor drm" (not that i think drm is a good thing; that's a whole other topic) and all sorts of things in between.

well, free software desktop community (not that they are reading my blog en masse ;) : if you think it doesn't exist and you haven't yet looked at kde, you're risking looking a bit foolish if you open your mouth and say "XYZ does not exist/work/etc on the free software desktop" or "such-and-such only works in Foo environment".

now, i've met free software desktop users who don't use kde who are aware of what is available on kde and elsewhere; to them: bravo and my sincere applause. i just wish they were the majority. i wish more people who actually use the platforms we support would open their eyes to what is around them. (there, that was the title tie-in ;) of course, i encourage kde people to do the same thing as well.

another reason i think it's the people closing their eyes is the reaction i often get from people who don't use kde when i remark that inkscape is a great vector app so why should the kde community invest huge amounts of time in creating a k-version of it? to me this is common sense. few kde users do more than nod when i say that. but i get all kinds of comments, usually of the unexpected-but-great-to-hear variety, from non-kde users/supporters/developers. weird.

yet another reason i think it's the people closing their eyes is that i have been told, point blank, by a group of gnome developers at a dev conf that kde and gnome are separate platforms just like windows and mac are and so who really cares about little things like, say, being able to share default app settings. (yes, that was the actual issue.) i responded with, "i bet google, with their mix of desktops, cares. i can name a dozen more such places if you'd like ..." not that that budged anyone. after all, if our eyes are closed, we can't see the users either can we?

we have a real issue in the free software desktop community here. and maybe that's partly why some projects tend to recreate what kde already has done years after we've done so and moved on to other things. this happens at an astounding rate.

of course, if you don't mind waiting for your features that's fine. but try at least to be aware of the landscape before talking about it like you know the terrain.

please:
* don't go around stating things don't exist when they do.
* don't feign surprise and excitement when your desktop gets a feature that's been elsewhere on the same platform for years
* don't recreate what's already good; we have enough stuff that's missing. so when i hear of an app whose stated goal is making a gtk+ version of amarok (exaile) or a gtk+ version of kalzium (i forget the name of that one) it just about makes me puke.

just don't. it makes us all look like fools, starting with you.

now, i should probably say a wee bit more about the third point above about application duplication. if you're doing something different in an interesting way, the toolkit choice is a personal and secondary issue to that in my most humble opinion. but if your goal is to clone another free software tool, particularly one that is well maintained ... i have to ask you: why? yes, i understand the "because i want to write a foo app" but that's not what i'm talking about.

example: i understand the duplication between gaim and kopete based on the integration issues. i think it's interesting that the backends of instant messaging apps on the free software desktop are moving towards commonalities (read: sharing) since the innovation, integration, etc happen above that: they all speak the same protocols, but provide different ways to interact with them. cool.

example: i understand the duplication between gimp and krita; both are essentially bitmap editors but the latter has an emphasis on things like natural media and colour spaces which isn't seen in the former and both are performing interesting and, imho simultaneously successful, experiments with user interface.

counter example: i understand juk, amarok, banshee, etc, etc.. they each do things a bit differently and there's probably an element of "beacuse i wanted to". but i don't understand exaile, which is described as a gtk+ clone of amarok. seriously, go look at wikipedia (i can't get to the exaile website right now, but that was how i was initially introduced to it: as a gtk+ amarok)

now, i'm sure someone is going to jump up and say "but i like all my apps to look the same!" as a justification for blatant cloning. ok, that's cool. overrated and largely mitigated by universal theme engines (a sub-set, indeed, of all engines), but understandable. however, i don't think it validates the blinders i see on people's eyes and it certainly does not explain away non-gui reimplementations. remember, this blog started way back there about d-bus, which is decidedly non-gui.

next someone might say, "but Foo apps take too long to start up / too much extra memory overhead / <insert rational&;gt; in Bar environment". this is indeed something we need to work on; that said, it's gotten better over time (and i'll bet will get a bit better even in kde4 =) and operating system vendors and system integrators could do things to help out in how they install and set up systems ... but again, these are issues we can and are addressing. is it really a reason to utterly ignore what others are doing?

i am aware that this isn't just free software desktop related: i see it all the time in other free software realms such as open source databases. mysql users are frequently innocent of what is offered by other solutions. more than once i've seen someone bung something together clumsily with mysql simply because they didn't know there was a better solution for that particular problem out there in the free software world.

perhaps this is all because for many in the community, from enthusiast to professional (and back =), the ability to be involved gets confused with an expectation of loyalty. can we grow past that? (honest question)

a related concern to me is that many people who don't use kde will miss out on a lot of the very nice features that kde4 is bringing to the table. and just as in the past, others will probably get around to duplicating some or even many of them eventually, perhaps unnecessarily to boot.

i'm already seeing it in articles written about kde4 by people who don't use kde. such a recent one that claimed kde4 had moved from aRts to gstreamer; yes, there is gstreamer support in kde4, but the real story is that it's not the only backend thanks to phonon; i fully expect other projects to eventually adopt similar solutions in the future after retracing our steps versus paying attention and learning something. but it kind of amazed me that someone would write that kde is now using gstreamer ergo gstreamer is becoming the de facto standard. holy not paying attention and applying other project's agendas to kde. whether or not gstreamer does become the de facto standard (that's something i'm probably not the most qualified person to comment on) is moot compared to writing about something you've obviously not really looked at.

to be honest, sometimes i think "maybe i should care less about the whole ecosystem and care a whole lot more about only kde. i can't fix what i'm not fixing, after all. and i certainly do spend much of my time supporting kde ... " but isn't that the exact attitude that annoys me? =) yes, it is. so i'll keep on caring and hoping; i'll continue to challenge our community (particularly as that community grows) to open our eyes. because, as the song says, "i need you to look into mine."

i really want the idea of someone "from" project X caring also about project Y to be the norm, not an anomaly.

(hm. re-reading this blog entry i think maybe tonight's yoga session really got to me. =)

Friday, May 04, 2007

tell me that you'll open your eyes

you know, i almost feel bad using a snow patrol lyric for a blog title. but it is a catchy little tune, and did appear in an episode of the black donnellys. i wonder how many other of my song inspired blog titles people catch. i abuse lyrics fairly often for titles. easier than coming up with titles all on my own.

today i took a look through the labyrinth that is kdesu (a lib in kdelibs that has both the inner workings as well as a client api which speaks to a daemon; and in kdebase-runtime, a client side app (kdesu) and a daemon (kdesud)) to look into a bug related to usage with sudo where it sometimes just doesn't work. thanks to some debugging by a fellow on the kubuntu bug report, that gave me a good idea of where to start looking.

an isv that services system integrators had run into the problem, prompting me to take a look.

i also spent a bit of time today taking stock of what did and didn't make it into kdelibs and sketching out plans for 4.1 in that regard. so now i can hopefully ignore kdelibs for a while. well, mostly. got an interesting bug report about the new clear button in klineedit where the stylesheet is either not working, or else isn't being set properly. need to debug that as it looks like crap with the text flowing under the button in certain situations. (hm.. and typing this, it just occurred to me why it might be happening... )

but yeah ... started in on kdebase things this afternoon after cooking up lunch, which consisted of a lightly curried rice and a more heavily curried oyster mushroom sautee. the curry came from egypt via my sister; a friend of hers had recently been there and brought back various spices and what not and knowing that i love to cook my sister sent some on to me. cooking is one of the passions her and i share.

anyways ... some more work this afternoon and then i'm going to yoga in the early evening. i even went on irc for the first time since earlier in the week today; i needed a break from people. essays i'm working on still lay incompleted and in need of editting, but i think i need a break from them too right now.

p. and his mom m. are in california visiting family until monday. the day at the school went really well; according to p. the kids are "way, way, way nicer" there. his comment on not being able to understand a word of what the german teacher was saying because she didn't say anything in english, only german, was pretty cute too. but it apparently went very well. now we wait and see if p. gets accepted. if so, i'll be in calgary for another year. if not, i'll probably move back to the west coast; most likely, vancouver.

Wednesday, May 02, 2007

new schools; bar fights; weddings; whatever

took p. to the waldorf school here in calgary for a trial day to see how he likes it and if he "works" with the rest of the class. if so, he'll probably be going there next year. it's a very nice and calm atmosphere and within a couple of minutes p. was smiling and playing with the other kids. so different than his current school, which is part of alberta's woefully underfunded public system; this is ironic as we are the richest province in the country. but hey, why not stack up billions in surpluses every year (literally) even if it comes at the expense of the education system. i mean, who needs educated citizens, right? *sigh*

i hope things go well today at the school for p. so that he can enjoy better opportunities next year. they have german, music and painting today in addition to the main lesson plan. neat.

a couple nights ago i went out for some drinks and dancing. ran into one of my ex's sister's recent ex, who is on the police force in town here. he was with a very pretty woman who happened to have been born on the same day as me. he invited me to join their table so i did and we sat and talked and drank. they left around midnight and i followed shortly afterwards ... only to walk out into a fist fight.

some guy who was there with his 4 sisters thought some other guy was being belligerent with one of the sisters. turns out the brother was just very, very drunk and was one of those people who gets emotional and confused when he is drunk. great. so he goes to attack this one guy right at the entrance of the club, and security throws him out. i was right behind him on the way out and once outside mr. i-am-my-sisters-protector sees some other random guy and thinks it's the same guy from inside (it wasn't) and litterally tackles him to the ground, but not before hip checking one of his (also drunk) sisters into the pavement, scraping her knee up pretty badly.

i went over to make sure she was ok and look up to find drunk brother on top of bewildered bystander and punching him in the face. security was nowhere since it was now happening out on the sidewalk which is not their concern. i helped pull them apart; well, i did the pulling and the sisters did the shrieking. i separated the two guys and had a quick look at the bewildered bystander's head, which was a bit cut up at this point with a rather impressive goose egg above the right eye. i talked the guy down from going back for round 2, and this is when the cops arrived.

they spoke to each of the people involved, then to me. nobody pressed charges, and the cops left. drunk brother was all whiney at this point and seemed to still be looking for retribution for the imagine act against his sister. so i called over a couple of cabs and started putting people in them so as to prevent another fight from breaking out.

one of the sisters said they were going for some food, would i like to come along? i said sure and jumped in the cab. i drank water while they wolfed down food full of meat (drunk brother ordered a steak; surprise!). the youngest sister went to the bathroom and dropped her cell phone in a toilet. that was pleasant. drunk brother fished it out for her and proceeded to wash it. probably good from a hygene stand point, but one would think not so great for the electronics. amazingly, after drying out the thing seemed to work.

over the meal the sister who invited me asked if i was a bouncer at the club. this made me laugh a little, as i don't exactly have the typical bouncer body (you know, 6 foot plus and steroid ridden). oh well ... came home, fell asleep, woke up.

felt a bit better about the multiple instances of dullardism i had to endure the day before by email and on web forums.

in the (postal) mail waiting for me was an invitation to my mother's wedding. this'll be marriage #3 for her and as it is in about 4 weeks time and on kauai in hawaii, i don't think i'll be making it. unfortunate.

last night t. came and dropped off the keys to her mailbox so i can check whilst she spends the next 3 weeks in japan.

and so starts my week to land me on wednesday. new schools, old friends, weird nights out, wedding announcements ... whatever.