Wednesday, June 27, 2007

engines engines everywhere

plasma data engines keep popping up. usually i find out about them by reading the commit logs. which means people are figuring it out without asking me about it. which means the apidox and examples in svn must be not completely arcane and obtuse. so far i've seen the following engines, roughly in the order i noticed them:


  • time

  • cia.vc

  • weather

  • dict

  • facebook

  • hardware announcements (solid)

  • system monitoring (sysguard)

  • power management (solid)

  • network interfaces (solid)

  • akonadi



not bad. and i know of at least a few more than will be coming for sure as well. each of them, except for the first two, have been written by different people who aren't me. i really need to get those tutorials written...

update: a chemical information engine landed in svn while i was sleeping last night. it uses data from the kdeedu project to provide access to information on various chemicals. this makes it the second engine by sebas (his first being the power management engine).

and when i read success stories like this one from the latest commit digest it makes me so very very happy (emphasis mine):

On the 18th June, Summer vacation started for me so I suddenly received a large amount of free time. The week before I had read that KDict was not going to be in KDE 4. As I had used KDict before and found it useful, I thought that replacing KDict would be a not-so-hard project to start developing on KDE with. At the same time, I also wanted to work on Plasma, the new, cool thing, so I decided to merge the two and write a dictionary Plasmoid. My friend, Jeff Cooper also wanted to get into KDE development so I asked him to help me.

On Monday, we easily wrote the plain text version of the Dict engine in a few hours after figuring out how to do TCP sockets in Qt. We were surprised at how easy it was to get working.


i can only imagine the explosion of plasmoids for these engines that will occur when we start offering script bindings through kross and expose the packaging creation and loading system to the outside world.

and that's just four concepts at work in plasma right now (engines, plasmoids, kross, plamagik packages) ... which is why when i look at other attempts to make "little desktop widgets" i tend to cringe and think, "they really don't get it, do they?" this is just the first set of steps to be able to really do what i want with the desktop. what we're seeing now is just the beginning to bigger and better things, and it really seems like we're already past the design and thought put into pretty much anything else out there.

i'll also be blogging on plasma progress at least daily during akademy. hopefully the hacking goes well so i have something to talk about ;)

packing and other prep work

i usually pack my bag the day i leave for akademy. this time, however, i'm packing the day before. i don't have a particularly good reason for doing so, but there it is: i'm ahead of my usual schedule by a day.

i discovered that, sadly, i'm going to have to bring a larger suitcase than usual with me. usually i have my little guy that fits in the overhead compartments. i can get nearly 10 days of clothes into it, including underwear and socks for each day, with my ninja packing skills. (i am so good at rolling clothes into little cylinders now that i'm thinking of turning out for the canadian olympic clothes rolling team... that is an olympic sport these days, right? the 50 item pack; the overnighter dash; etc..)

but this time i'm bringing some gifts with me (some of which kevin bought while he was here) and a bunch of stuff for the aKademy awards that was kindly donated by Kitware. that and it's forecast to rain for the entire time aKademy is on so i figure bringing a sweater and a jacket might not be the worst of ideas. combined with the fact that 10 days is really at the limit of my trusty companion-on-wheels, i've had to rethink my strategy and have had to bump up to the next biggest size. damn.

i could bring two smaller cases, but that would suck in other ways.

i'm still working on my presentations, though i'm ahead there too as i usually do those on the airplane or even on the ground. i'm really trying to be proactive this time around ;) i'm doing a presentation called "beautiful features" this year where i'll be looking at some techniques to make applications look decent and try and set some goals for what our kde4 application should strive for. some of the stuff will focus on fairly traditional interface elements like toolbars but there will also be discussion of the use of animations and some cute painting techniques. don't expect zack level kung-fu moves for the latter; for that you'll want to go to his talk on graphics =)

looking at my aKademy schedule it's already fairly daunting. between the stuff i want to hack on (all plasma related; i'm going to ignore my other hacking interests as much as possible this week) and the various BoFs and meetings .. i'm already feeling tired ;)

i have a bit of an e.V. board get together on the friday; then the dev conf; then the agm happens; there are GetHotNewStuff, application add-on data packaging (and sharing) and plasma BoFs all on wednesday. and i've got meetings planned with a handful of people already about various development issues.

i don't forsee much sleep over the next week. and then there's lug radio right after that. zoinks.

to preserve myself i've basically decided to limit my drinking and night adventures pretty radically this year. we'll see how well i do with that.

i'm meeting up with people in the airport on friday at around 17:00 or so at the cafe nero just outside the customs area. you can see it on this map as stall #9. if you arrive around that time, come invade the caffeine hut with us =)

Tuesday, June 26, 2007

calm ere the storm

i'm taking a few quiet days before the 10 days of aKademy and lug radio live. cleaning the house, putting together the travel list as well as the "what i want to accomplish at akademy" list, updating the laptop to the most recent kde svn, popped another gigabyte of ram into the laptop as well so now i've got a more hack-fest-worthy 1.5gb to work with, booked a hotel for lug radio live, started in on my presentations ... i have 14 things on my pre-travel todo of which i have thus far accomplished in full only 2 (with another 3 in part).

tomorrow will be busy, but today its nothing taxing and pretty calm (i'm not even all caught up with email =), though it means a bit of a lull in plasma development. though a three day lull seems a bit of a funny concept =) sort of speaks to the pace of things recently?

p. and i picked out his first strategic board game yesterday: battlelore. since he can read pretty fluently and has no problems with the strategy of things like wesnoth, i figured it was time to introduce him to the grand tradition of real strategy games. you know, the kinds with pieces and cardboard maps. ;) we've played three games already, two of which he won. the game is pretty driven by the luck of the draw and roll of the dice but that keeps it interesting. it's a little simplistic for my taste, but perfectly within the upper band of p.'s challenge level.

Monday, June 25, 2007

phase synchronicity

so back to more useful things again: plasma, and specifically phase/animator =)

spent some time tonight smoothing out the API so that its is clearer and more consistent (e.g. the more self-documenting "framesPerSecond" instead of "frameCount"; animateItem and animateElement, etc). the animator now defines the curve shape as well.

in separate conversations with both kevin ottens and frederik h. it was suggested that i should consider a single timer instead of separate qtimelines per animation. so i took the plunge tonight and now all animations operate on a single tick and all the items get updated in sync with each other. this decreases the number of timers for N animations from N to 1. of course, it's still 0 when no animations are ongoing.

i need to reimplement the math to alter the frame interval based on the curve shape, but other than that it's all in place and working well.

it's one of those efforts where success means "the result is exactly as it was before", so i have to take heart in the technical improvement it represents ;) i'm also hoping to avoid the odd disjointed feel i experience with microsoft vista when multiple items are animated simultaneously.

speaking of vista.. one of the early code names i had tabled quietly for kde4 was "clarity". that got ruined pretty thoroughly when "vista" was announced as the name for redmond's new desktop. =)

just a few more days to akademy and lug radio live. going to be a blast.

Sunday, June 24, 2007

executive summary

so here's the executive summary of my thoughts:

facts to date (many of them obvious):

  • we won't sacrifice the code base's integrity in the process

  • we're hoping for more contributors by reaching out to new pools of people

  • we're hoping to take the issues of open interoperability to the people and hopefully open up groupware, office document formats, etc a bit more



open issues/questions:

  • if we do get an influx of developers who really know little to nothing about our culture and community, how do we effectively triage them into the project? or do we just try and keep them developing applications and separated from the project?

  • if we do get an influx of users, how do we deal with them and what influence are we willing to let them have over our priorities?

  • what are the marketing positions we will take?

  • what level of quality and what breadth of features will we commit to on these other platforms?

  • given that market share equals market clout, how do we avoid giving microsoft yet more leverage in industry by helping keep people on their platform as they continue to engage in their efforts against free software (think: hardware vendor relations (and not just kernel drivers), file format hijinks, single-platform / lock-in developer strategies)?



i think each of the above is solvable. i also think that we need to have answers put into words for the above so we can both work together and know we actually have answers rather than trusting quietly that we do even if we don't.

reasons the open issues are worth discussing

  • these are big opportunities that come with reasonable but significant risks ..

  • we need to have a coordinated idea of where the heck we're going with all these new platforms so we can get the most out of them and not (even unintentionally) work against ourselves

  • our project dynamics (community, culture, etc) are valuable and worth ensuring the longevity of



reasons i'm not suggesting too many answers up front but instead asking all sorts of questions and generally poking people think:

  • i probably don't have all the answers (no suprise to anyone, i'm sure ;)

  • i'm not involved with the windows and mac ports and so don't feel like i am the best one to make up these answers, even if i am directly affected by these answers

  • we need consensus.

  • it'll be difficult to coordinate our efforts if the people involved with windows/mac ports are not in the game, too

  • when i'm not poking and prodding the conversation doesn't seem to happen. i don't like that, but that's the way it is.



i don't think this needs to happen on blogs, either, but we lack a mailing list for this topic and even the planned win32 developers sprint won't bring together all the people necessary for this conversation (it will lack many from the other platforms). so i'm at a loss as to where this conversation will reach the audience necessary and not be off-topic.

a serious discussion

dear christian,

you mistake my enthusiasm for freedom for an enthusiasm for a particular operating system (linux, in this case). that linux right now is the brightest light for freedom amongst operating systems available today (due to its licensing, ubiquity, capability and community) makes it a fine subject for my enthusiasm. but make no mistake, it is not for me a question of linux or not linux, but freedom or not freedom; a kde that is in the long term sustainable or not.

if we skip past the bare fact that the majority of free software has come from the efforts of those on free platforms (which in my mind is no coincidence), we are still left with this: we are engaging a platform that is owned and controlled by one of the most predatory and anti-freedom groups in our industry, microsoft. to do so without thought is akin to walking into a burning forest as if it were any other springtime meadow.

bringing kde to windows and mac os is an expansion of the scope of kde and its community that bring with it new populations, new challenges and new opportunities in equal parts. any time new groups of people enter a community they change it, simply by their presence, resulting most often in the irreversible alteration of said community. in its place will be a new thing, though too often that new thing is a diminishment of the old. i have lived in towns where exactly this has occurred, as many others have, so this is not theory but simple fact of how things work.

the cure for diminishment in change? awareness of self and of the system we share. the altered thing can be something better than what was there before, but it requires a dialog which is what we are to date, imho, missing.

had anyone in these porting efforts actually been able to share something like, "this is what we're doing, this is how we want it to be in respect to what already is and these are our goals.. what do you think?" i would not feel compelled to play the provocateur. had i not played the provocateur at all, how much discussion on this would we be having?

perhaps you have great plans that cover all sorts of territory, but if so they remain largely hidden beneath a veil. then again, perhaps you simply don't care and are idling away at increasing the scope of our project without concern, though i do know from discussions with others involved with the win32 efforts that this is certainly not the case for all involved.

(editorial addition: i should be clear that the above paragraph is not meant to suggest a lack of caring, though my clumsy words can certainly be read that way; rather what i was attempting to note is that these things may not be topics that fall within one's personal scope of interest.)

today all i have to reference is something akin to that joke: "step 1, steal underpants. step 2 .... step 3, profit!" in this case it is "step 1, port to windows and mac. step 2 .... step 3, success!" to be honest, i have no idea even what "success" refers to and it has been up to those of us who were here before these efforts to figure it all out. that seems to me to be very backwards.

the first time around this particular discussion, we arrived at the conclusions that we can access new bodies of contributors and create new avenues of interoperability with this expansion. this was a positive step in defining goals (the "success" part), but in no way have we formulated a method towards them other than hand-wavey prognostications. interestingly, these thoughts seemed to come nearly exclusively from people who are firmly rooted in open source systems.

where are the voices from these new platforms? how do we build this into a bigger, better community effort? i would feel remiss to make an agenda upon your efforts without your consent and acknowledgment, and i would feel equally remiss to have no clue as to what the agenda may be.

so as you can see, i am not looking to win or even start and argument with you, nor disparage or discourage your work. rather, i am looking for those such as yourself to ponder with seriousness and openness how we weave all of our efforts together and how we respect the principles of freedom and community that we have built all this upon and from.

we can, of course, simply ignore the win32 and mac efforts and take the attitude of, "hey, let them figure it out and make what they can with it." we could quite simply remove all attention and care from such efforts and allow it to founder without backing or public awareness. i think that would be a travesty in that we'd be losing out on something potentially great, not to mention betraying our own principles of inclusion. it is also plain to me that it is not a fair act to put the burden of interpreting these efforts upon those who are not involved with them. as someone who is expected on occasion to speak on behalf of this project, it is often quite discomforting to speak on behalf of those who i do not feel and connection with.

if we do expect our marketing team to trumpet these new platforms; if we expect our software developers to provide allowances for and efforts towards what you are doing; if we expect our translators and documenters and artists and ... everyone in our community to broaden the scope of their efforts in even in the smallest of ways to buoy up and fully realize the advantage of being on these new platforms then those leading these efforts owe it to the rest of us to engage not in silent biding of your time building upon the great works done by others who came before you but to engage with those who steward the project's various aspects and provide direction.

so instead of making a funny discussion, i'd like to invite you to make a serious one on how we improve the kde community and the freedom that is its wellspring. i also like to invite the others involved, such as Jaroslaw, to help create a public record for our community.

i am excited by these developments. if i weren't i wouldn't spend any time whatsoever thinking about them, let alone writing about them. but i continue to wait for word on how we would like this community and technology to be. i continue to wait for word on how we plan to shore up and expand the freedom inherent in our project and pay good mind to those who have supported us in the past and present.

and while i can think of more fun (and funny) discussions to have, i can hardly think of ones that are more important to have at this point in time. i know the majority of participants simply wish to engage in a creative process and scratch their itches and i know that this is absolutely fine; but for that to continue indefinitely some of us must look at the bigger picture together.

and personally ... i'd prefer not to feel compelled to rake the coals with my words to find the source of the fires that drive you. i'd rather have a place where i can cozy up, watch them in full view and comment on them in awe. give me a fireplace to look upon your flame so that we may warm our hands together.

Friday, June 22, 2007

hoping and wishing

hi nikolaj..

read your self proclaimed rant on porting amarok to windows. it was very clearly written =) i feel there are few important points to be recognized while making the arguments you do:

- the "first we take the apps, then we take the operating system" effect you describe has not been happening with firefox, open office or any other free software on windows. i know reality is a bitch, but someone is going to have to explain why those use cases are different to make your line of reasoning cogent. personally, i think it's because of all the other apps available on the win32 platform (we're catching up, and in some areas, surpassing them there); the support for various bits of consumer desktop hardware including the utility software that comes with them (we're catching up there); and a simple matter of inertia/familiarity.

- you describing the economics of it in terms of "lowering the barrier until it is easy enough". i'm of the opinion that "easy enough" is not the missing incentive at all. it seems that people don't switch because it is easy enough, which implies there is some sort of latent desire that i've really yet to see on a wide scale that is being held back. it seems they switch when there is a positive, motivating reason to switch. it's a matter of inertia and we all know that inertia must be overcome with positive input rather than simply undermined by reinforcing the status quo, which is precisely what delivering apps to win32 does.

- the "relearning apps" thing has been debunked some time ago as a difficulty. there is certainly a fear of the unknown, but if you consider that in the context of windows being that which they know it isn't helping much of anything to make the known more useful, now is it?

i have came to grips with the fact that there are people with various motivations who will port whatever software they can to predatory, proprietary operating systems regardless of implications. i understand the desire for people to be able to give corporate clients software today without them changing their platform, and i'm actually fully supportive of the idea of providing apps that bridge interoperability gaps (kontact, koffice). i boggle at those who enjoy working with the win32 APIs, but hey, it takes all sorts. fact is, the motivation is there and you are right that we can't stop people from doing things. it is freedom software after all.

but what use is there in dreaming up rationals that neither line up with recent history or with the incentives that move users? it may make us feel better now about things, but if it is simply turning a blind eye to the real consequences then we'll get blindsided.

i think we need to just get very comfortable with the fact that on its own the porting, if done well (and i am certainly working with the assumption that within a few releases the kde apps on windows and mac will indeed be good representatives of the kde project), will likely:

- increase our user base
- probably increase our contributor base
- make it more difficult to make Free operating systems attractive

i think we can mitigate the latter by doing a better job of integrating applications and taking full advantage of platform features on Free operating systems so the experience is better when using those apps on a Free o/s. couple that with a concerted communications effort to every user of kde software on windows and macOs and we might have a game plan.

i also think that putting even more emphasis on business, educational and government users will also help as they tend to view things a bit more strategically. this sort of sucks for amarok in the short term since amarok is a consumer software product, but whatever =)

and perhaps that is what bothers me the most and why i keep poking at the issue: i believe that the onus for coming up with that plan does lie with those who are opening this particular flood gate (it is, in a phrase, "taking responsibility"), but i have yet to hear a game plan that meets up with our stated goals which revolve around the concept of free software from the kde/win movement that doesn't seem remarkably flimsy.

well, that's not entirely true. when i first went nuclear about the topic two important points surfaced:

- opening new avenues to contributors
- bridging important interoperability gaps

i am today a proponent of both those goals and reasons for doing kde/win and kde/mac. but they stop a bit short of answering the full question; most i've talked with either shrugging their shoulders or taking the same approach of rationalization you are.

addressing the issue is, imho, much more useful than pasting blinders on and saying "there is no problem! in fact, it's only beneficial to everyone!".

i guess what i'm asking for in my usual long winded way is that instead of arguing with people who say "but it is going to hurt adoption of free operating systems" with the reply of "no it won't!" provide some sort of game plan for how it won't. hoping and wishing works in fairy tales, pop music and movies, but we need strategy.

(p.s.: i am assuming there is agreement that free software operating systems are important and valuable things that we need to ensure not only exist but thrive; i'm also going to assume that me playing devil's advocate and pushing for the harder but more interesting answer is not overly unexpected. oh, and it's been 'fun' getting to represent the project on this issue publicly; i've had to do a good amount of thought and open-minded listening to others to find the points i could in all honesty be publicly supportive of.)

Thursday, June 21, 2007

plasma.progress();

today was spent mostly getting rid of bugs plasma, working on other parts of kde (oh, to be an app developer only =), some bits of community management, aKademy and lugradio presentation and fleshing out the next things i'll be coding in plasma.

there is a growing number of people working on plasma these days, which is great. the more i work on it, the more other people show up and start throwing lines of code on the cart. it's an odd phenomenon but one i won't question. i'm just happy that as my hands move, so do those of others. in short order they will make mine completely insignificant, i am sure.

the weather engine has appeared, the dictionary engine/applet takes more shape, frederikh has started lending his graphics knowledge to phase/animator. i'm completely astounded by the number of people working on dataengines and plasmoids right now; it's a horribly hostile environment of changing APIs and naught but apidox and my samples to go by.

we're also on the front page of linux.com today with story on plasma by nathan sanders.

i did manage to take a walk along the boulevard today. i found a curiously great book ("the. cryptographic. shakespare.) published in 1987 that uses computer based analysis of shakespeare's works to "prove" it wasn't him at all but francis bacon that wrote those wonderful works of english prose and poetry. personally, i don't particularly care who wrote them for they stand on their own and were certainly penned by some gifted englishman.

what makes this particular book so great, however, is: the wonderful english it itself employs; that it is signed by its author (penn leary); that it is copy 158 of the first 2000 printed. reading the first couple dozen pages has proved to be a great joy. i don't care if it is right or wrong, the writing says much about the author, human tendencies and the pursuit of fact.

i also got it cheap (cheaper than amazom.com even), which is always good. =)

"Good intentions, founded upon ancient assertions, have jealously built ivory fortresses against new, and therefore suspect, inquiries. The guards athwart such towers warn us against any change, and fresh dry charges are kept near their cannon." given that the author is writing about literary history, "cannon" is a wonderful play on words. beyond that, there are so many wonderful things one might say about just those two sentences, ranging from prose style to the tactic of warding people towards belief in a conspiracy by attacking those that guard the accepted story with undeservedly dark descriptions of their commitment to doing so.

it is the form of the work of others, rather than the accuracy of their content, that tends to inspire me the most. as such, i can empathize with the agnostic priest.

system activity window

in kde3 pressing ctrl-esc would pop up ksysguard with the process table. useful feature, but with three things that could be made better:
  • speed: opening a whole new app can be slow, especially when the system is under unusual load which is often exactly when you want it
  • user interface: since it was the whole ksysguard app there were menubars and tabs and all sorts of clutter
  • discoverability: ah, ctrl-escape.. how many found that little gem? not nearly enough


so at last year's akademy john tapsell, who had taken ksysguard under his rather capable wings, and i chatted about the situation. we charted a cunning plan to fix all three of these issues. ok, maybe "cunning" is a bit of an overstatement. well, you be the judge.

to fix the speed issue, we decided to put the process table into krunner. this would make it faster to bring up because krunner would already be running. this meant getting the widgets into a library for external usage, which john came through on. now when you press ctrl-esc it appears instantly, even the first time, and better yet it is populated with information before you can blink. the kde3 sysguard takes a couple of seconds with no load to populate the window after the app has started up. this is such an improvement it's not even funny, and the credit for this goes almost exclusively to john's efforts (though qt4's model/view stuff probably helped out =)

and now that these widgets are all in a library, here's one for your inner geek: you can start Qt designer and pop a process listing on a form and interact with processes, live, from inside designer. not talking about doing a preview of the form, but right there when it is in edit mode. talk about sickeningly cool.

with speed addressed, what about user interface? since the table was going to be hosted by krunner, we could make the user interface quite slim. here is where it was at earlier today:



the buttons are a bit odd and the window title are wrong in the screenshot, but you get the idea. we're also adding an expander arrow that will grow the window to show some basic stats below the table (cpu, memory, etc). but notice the lack of a menu bar, tabs, etc.. and once the buttons are all squared away it'll be pretty nice.

think of it as a ksysguard-superlite-in-a-window. 100% of the code is shared with ksysguard; in fact, if you launch ksyguard it will share the library =)

this leads us to the solution for the discoverability problem. we are putting a button in the run dialog to get to your system activity monitor:



this shot is pretty bad, but it works (the important bit) and the oxygen team are currently nearly finished with the rework of the krunner ui so i figured i wouldn't bother trying to make it pretty in its current form. the important thing is that it's pretty easy to see how to pull up a system monitor now when you go to the run dialog.

ctrl-esc is still there and we may offer a link in the application launcher interface (the successor of the application menu) though that is still yet to be decided on for sure.

speaking of krunner's interface: i just got the final draft artwork by email late yesterday ... it's hot! =) there was also a bunch of work done on various bits of plasma, but this was more exciting. well, for me at least =)

yep ... today was one more baby step towards total desktop world domination. kde4: be free. boo yah! =)

Wednesday, June 20, 2007

canadian divas

dear wade,

"canadian diva" is redundant.

love, aseigo.

p.s. i'd be filled with joy to lend my support and effort to helping follow through with your promise of luvin on the high seas blogosphere for those who publish vm images and live cd's for kde4 alphas/betas =)

Tuesday, June 19, 2007

phase/animator

so i hit the "publish" button on my last entry about the new phase/animator screencast when it occurred to me that i hadn't actually explained what phase/animator is or does.

in short, p/a is meant to solve three related problems:

- make it easy to use animated transitions in desktop elements so that authors of add-ons will do so
- make the animations consistent by doing them all in one place (phase)
- make it easy to change the animations (animator)

why change the animations? well, besides the obvious "because people like to tweak stuff!" there's the issue of performance: what if you are using plasma over a network and you just don't have the bandwidth to have all those animations going on? what if your cpu is really short on power? what if you just don't like animation to begin with?

phase manages the registration and lifespan of various graphical effects, including animations and transitions. it hands off all the actual image processing to an animator, one of which (that doesn't do much of anything) comes built in. if you want special effects, then plasma loads an Animator plugin and uses that instead.

to try out the default animator, open plasmarc and put this in it:

[Phase]
animator=default

there's still a good amount of work left to do on Phase/Animator, but the design essentially works at this point which is a good thing.

plasma screencast

finished up some work on phase/animator today so that now it is capable of supporting widget element (as opposed to whole widget) animations and did a couple of api cleanups.

the icon minibutton appear/disappears are now done using phase/animator. i'm pretty happy with that. so happy that i did a a new screencast. it's a bit big, weighing in at 34mb. i'm hoping someone will re-encode it for me at a smaller size or better compression ratio, as i just took what record-my-desktop spat out and really don't have time today to play with it.

update: liquidat uploaded the screencast to dailymotion. thanks, guy!

we also got two new data engines submitted today: a dictionary engine (in playground/base/plasma/engines/dict) and a facebook engine (in playground/pim/kfacebook/plasma/engine). there's also an applet for the facebook engine in playground (guess where? =). anmma has also added her picture frame applet in playground/base/plasma/applets!

the dict engine was written by a couple of people new to qt/kde development and they said it only took a couple of hours, including the time they spent on the applet (which isn't in svn yet). which is pretty decent given they were starting from the basics and had to work their way on up from there. =)

it was really neat to open up the engine explorer, pick the dictionary applet and look up what the word "plasma" meant ;) i'm pretty amazed by how many contributions plasma has gotten already given that we're still in the middle of erecting the whole thing.

it's like having a really nice dinner party in a house without walls. i suppose that works ok in the tropics. which would mean free software is the tropics.

or something like that. =)

why i'd sooner vote for a seven year old these days

last night p. and i went out for sushi to quietly celebrate june 18 together. (it's a special day in my life due to it being the date i officially left the life support system known as "mom" to flail about on my own.) during said dinner p. observed that when animals are going extinct, "first we hurt them, and then we help them."

i didn't quite understand so i asked him to elaborate: "well, first we hurt all the animals so that there are not that many of them and then they start to go extinct. so then people start helping them so that they don't go extinct." he then observed that this really didn't make much sense: why help them only after we hurt them? in fact, why not just avoid hurting them in the first place?

imagine the conversation in the world's capitals if such logic could be grasped by our so-called leaders:

"mister/madam president/prime minister: it just occurred to me that if we stop destroying habitats and food chains through our blind striving for greater economic gain, we wouldn't need to be swooping in and saving animals from the brink of extinction with sudden and drastic measures that often cause economic hardships for those impacted by such measures! perhaps we should actually start to think about the consequences of our actions. maybe we should actually make it cool and 'common sense' to prevent rather than to cure. you know, sort of like how those medical doctors do it."

"holy crap, mister minister of the interior, it's so obvious that it just might work. let's get creative and hard nosed about this issue and enact a plan with sustainable existence at its heart."

but yes, that's too easy and too much common sense and we're all too afraid to do what is obvious to any 7 year old who ponders the topic. perhaps knowing about things like modern economic and political structures results in the inability to apply truly meaningful fixes. we become so wrapped up in the complexities of it all, so afraid to upset the apple carts of industry and so comfortable with the status quo (my, that pork barrel is tasty!) that those at the reigns end up being increasingly useless to us.

it didn't always used to be that way, but then again it has been that way before. this is a pathos known from darker periods of human history that has risen from dormancy to infect our societies great and small, a pathos where a child is wiser and more dangerous in his thinking than those we pledge to follow. we have lost some of that human fire and imagination to recent generations being raised not as agitators and thinkers but as social automatons strapped with a dual burden of fear and materialism. but having beaten this back before, we can do so again.

if you have a child or are part of a child's life in some way, keep their minds open, their hearts beating their own rhythm and their soul willing to hold no apple cart in such reverence that common sense gets left behind to gather dust alongside their toys as they grow up. educate them about the world as it is and not only as how it is portrayed on the arrays of screens we have built around us. stick their hands in the dirt and their heads in the clouds, which is to say let them dream while teaching them how to work. then maybe, just maybe, we'll get a generation where barriers are not self-erected insurmountable obstacles of despair, but interesting puzzles to figure out, solve and even avoid in the first place.

(hope that wasn't too preachy for y'all. =)

Monday, June 18, 2007

google soc

this year's google summer of code seems to be really productive for kde. past years seem to have had a lower ratio of useful projects. but watching the commits roll in this year is fun and exciting... marble seems to be getting a general purpose way of overlaying data onto the globe; kalzium is getting 3d molecule viewer loving; krdc is rejuvenated; koffice is getting collaborative editting (something that i'd love to see as a kde-wide framework); kbabel is getting a successor; there's an icon cache underway .... and much more. this year's SoC is going to have a noticeable impact on kde, i think. i can also see a large number of the participants sticking around the project after SoC 2k7 is over.

take the icon cache as an example ... lubos lunak and i are co-mentoring rivo on that project and he has been producing some astounding results there. so far he's managed to shave half a second or so off of start up time of apps when using the iconcache and disk caches are cold. i just wanted to see somewhere we could efficiently store runtime rendered icons, so this is a really nice development. rivo's also been working on kwin composite stuff ... so, rock on rivo!

speaking of runtime rendered icons i've got a bit of work to do tomorrow on the icon loader to support some of the new features we need for the icon spec naming (which wants to allow for fallback, so that e.g. if 'media-optical-foo-bar-baz' doesn't exist it may return 'media-optical' instead) as well as to get rid of uglies like all the -mounted icons by properly supporting overlays and emblems.

i also compressed the svg icons in svn resulting in a drop of disk usage from 164mb to 32mb for the svgs. tackat showed me a script he's been using that shaves another 15% off of that; we'll probably run that over the release tarballs as it removes some information from the svg's that make editing them easier in inkscape but which for rendering purposes are completely superfluous.

the kde4 amarok stuff is also rocking. i lent a hand tonight in getting a translucent qgraphicsview overlay in there for jeff who's working on some cool user interaction stuff.

there are going to be some seriously rocking kde4 apps out there, and SoC is helping make that happen.

plasma.progress();

dannya asked me tonight what had gone on with plasma this last week and when i looked over the commits it sort of surprised me how much had =)

ruphy did up a little screen cast showing the new icon hovers, but most of the rest of things happened beneath the covers. tomorrow i'll be doing a screencast of the new phase/animator framework that lets us do these transitions using plugins which both makes these transitions more consistent across the desktop as well as letting us bump the eye candy up or down depending on what the user wants or their hardware is capable of. the icon fade in/out will be used by several elements on the desktop, for instance, though it could be replaced with no effect (better for thin client systems) or something even more wild. anyways, more on that in the screen cast tomorrow.

there are a number of new data engines in the works, including ones for solid. upon getting it together and compiling, chris blauvelt tested it in the plasma engine explorer and found it worked right the first time. when someone comes in and learns api's from scratch like solid and plasma, write some code using them and it just works ... that makes me smile a happy smile.

i also fixed some annoynaces in the engine explorer for chris and added a couple features for shawn "the weatherman" starr. what was just a testing app for me that i figured others might find useful for debugging is becoming a rather handy little tool. as the number of engines grows i feel increasingly bad every time i adjust the api. i have one more set of functionality (source configuration) to add and then (i keep telling myself) i'm done screwing with it for 4.0. having these other engine efforts going on has been great, though, as every flaw in the api gets found almost immediately. hanging in #plasma is fun when this happens because someone will ask a question about the api and i'll go "oh crap....", hack for a bit, commit and then answer, "svn up". very satisfying.

i also finished up and then merged in the plasmagik package stuff into libplasma. hopefully it'll migrate to kdelibs for 4.1 after we've kicked the crap out of it in workspace/. the way it works is the app defines a package structure and this gets used to guide the user in creating the package (there's a little UI for this that's still in playground but will make it out in the coming weeks) as well as for pulling files out of the packages. this forms a nice, self-documenting "contract" between the app and content creators. right now there are package structure defs for plasmoids and svg theme packs. i'm sure we'll get more over time in plasma =)

i'll be showing off plasmoid packages in next week's screencast, methinks.

and speaking of svg theme packs, the oxy artists have started working on various bits of final artwork for things like krunner. their work is looking really hot and while it's getting down to the wire as far as time goes (only another 5 or 6 weeks for new features!) i think we're going to come out of it with some truly beautiful as well as functional bits. i hope to be able to screencast krunner in a couple weeks with the new layout and design.

but this week is all about writing my presentations for akademy, data source config, writing a techbase tutorial on writing data engines, implementing save/load of layouts and panels. i have a rather nasty/cool idea for how to do the latter using only one graphicsscene for all the panels as well as the desktop. model/view and, for planting the idea, kevin both rock my world. we'll see how it all works out.

i was better off alone

(title thanks to ani difranco)

on friday kevin, p. and i went up to canadian olympic park with his school and visited the olympics museum and went up to the top of the ski hill on the chair lift. great views from up there, but on the way down it started to rain and get rather cold. on saturday we took kevin back to the airport and said our goodbyes. a nice end to a great 10 days of visiting, hanging out, watching kevin smith movies and hacking.

it's all quiet around the house now. just me and the cats. last night i went dancing and had a great time. it was raining something awful, so i grabbed my bright green and silver umbrella and headed out for a walk. i walked to downtown and then started back.

there were line ups at all the popular clubs, yet very few people had umbrellas. i got asked for directions twice during my walk, and was complimented on the umbrella once. the quiet walking punctuated by odd random interactions with people reminded me how much i actually like being alone.

i passed by broken city and figured i'd stop in. the music was good and i ended up dancing. next thing i knew it was two in the morning and i'd met a number of new people. i find people interact with me more when i'm alone and leave me alone more when i'm with someone. funny, that. i danced with a few different people, chatted with a few more, enjoyed laughs with several.

i particularly enjoyed watching the wickedly drunk cute young guy who kept dancing with all the girls. he'd just walk up to one, put out his arms as if he was going to embrace them and then when the said 'ok' he'd take their hands and dance. when they were done and left for a break he'd head for the next nearest. another person wandering alone tiring out the people around him but not abashed to keep trying someone new, anyone new.

on the way out i popped my umbrella and realized i was rather hungry. probably due to not having eaten dinner before dancing for 3 straight hours. so i popped over to my favourite pizza by the slice place in the area. they serve cheap but rather decent pizza and always have veg on the rack and are open until ludicrously late in the night. as i walked out the door with my plate heaped with two giant slices it occurred to me that i've never gone there with someone that i started the evening with. i've met people there whom i've later spent time with, but never spent time there with someone i'd met before that day. it seems i don't hang out much with the pizza eating type, or maybe i just don't steer towards such venues when i'm with someone.

a homeless guy asked me for change as i rounded the corner. i gave him my second slice of pizza instead (which is why i got 2 in the first place). he was visibly surprised (not to mention wet from the rain) but tucked hungrily into the pizza after saying thanks. this is another thing i do less often when i'm with other people, mostly because i just don't pay as much attention when i'm with someone. rather, i'm usually thinking about things related to my company and interacting with them.

on the way down 17th in front of a viet sub shop i was randomly approached by a very drunk guy who asked for a hug ... and then a kiss. i have a strict no touching policy when it comes to random bodies on the street at night. i was still assessing the best way to extricate myself without offending when his somewhat more sober friends apologized and said he hadn't been out in a long time and was just "coming out of his shell in life" or something. one of the girls with him was cold and shivering. she noted my umbrella was a good idea, and that she wished they could find a cab so they could get home where it was warm and dry. the cab company phone lines were all busy, she said (no kidding! it's saturday night. of course they are busy! they have to cart the city's enormous nocturnal drunk community home). they apparently been waiting for some time and every cab that passed was full.

well, i knew something they apparently didn't: they were precisely 2.5 blocks too far east. if they had just walked down west a bit they'd have passed a little cluster of clubs from which stumble people who grab every passing cab which tend to pass west-to-east. it's like getting upwind from a bad smell: go past those clubs and it's an unending stream of cabs.

so i said if i happened to pass a cab i'd get it to come pick her up. she said that would be wonderful, but obviously didn't hold much faith in the offer. of course, she didn't know what i did. when i returned in a cab 5 minutes later she was overjoyed. i said goodnight and wandered back towards home.

again, another thing i probably wouldn't've done had i been with someone.

and upon arriving home i stretched out and enjoyed the warmth and silence. my house all to myself.

now, i love being around people and i love people in general. but i also love being alone. and in many ways i'm better off that way. the house stays tidier; i don't feel guilty about sleeping in and i don't have to tiptoe around quietly when i get (or stay) up early; i can work on the computer as much as i like; i can leave when i want and come back similarly; i can obsessively think about whatever is on my mind without interruption or feeling like i'm neglecting someone. and oddly, i tend to drink less when i'm alone.

and so it is that i love being around people, like when kevin was here or when i am in a steady romantic relationship, but i live better when i'm alone.

and homeless people eat a little better on saturday nights. and wet shivering girls get cabs quicker. and the rain gets to beat its rhythm (which is why rain falls, right?) upon my umbrella.

Tuesday, June 12, 2007

podcast crazy

i was on lug radio season 4 episode 20 for a chat with jono and the crew about kde 4.0 progress and upstream/downstream relationship dynamics in free software.

i'm also on the upcoming ubuntos podcast. we recorded on saturday, so i assume it'll be in next weekend's edition. we talk about kde 4.0 (surprise!), the future of various kde components, women in free software and who would win in a no holds barred street fight between ballmer and stallman.

check 'em out if you're into listening to kde people ramble on about things.

Animator

over the weekend i finished the first implementation of Phase/Animator in plasma. the idea is to make it easy to create animations, transition effects and graphical "polish" to plasma elements via plugins. this allows me to strip plasma down to a very resource friendly event or pop it up with eye candy without touching any applet or plasma core code.

i will be doing some more working on the first Animator plugin this afternoon after my e.v. board conference call and then hopefully screencasting a demo of this aspect of plasma.

theme: plugins, plugins everywhere =)

kdegraphics

yesterday was a libs monday, but a pretty calm one. kevin committed some pending changes to Solid for mount/unmount-able devices, the beginnings of work on an extended colour scheme for usability/accessibility needs in applications, a consolidation of nepomuk libraries, improvements to kjs and a handful of other changes went in. but we're very much into application development land at this point, which is good and the way it should be.

i spent much of the day straightening out kdegraphics for the coming 4.0 release. there are only three outstanding issues in the module now: kghostview (to be eventually superseded by okular), kfax (ditto) and the kfile-plugins (many of which haven't been ported and some of which probably should be in strigi itself). kooka itself went bye-bye, as did kmrml.

but extragear now contains kcoloredit (the more straightforward kcolorchooser was broken out and remains in kdegraphics), kgrab (ksnapshot + featuritis), kgraphviewer, kiconedit, kpovmodeler, kuickshow and ligature.

so now kdegraphics contains a basic set of apps for the basic and common desktop needs: basic painting (kcolourpaint), files viewing (okular), image collection viewing (gwenview), screenshots (ksnapshot), screen ruler (kruler), scanning (libkscan, used by apps like krita and kword for integrated scanning support), digital camera access (camera:// ioslave). several of these apps sport improved/streamlined interfaces and have been feature enhanced for kde 4.0.

extragear-graphics will have a release along with kdegraphics for 4.0 as well, so if you use kpovmodeler or ligature or whatever you won't have to go scrounging.

assuming this experiment works out, i hope that other modules take a similar approach to providing an "essentials" pack in the main module and a broad selection of apps in extragear with a coordinated release. it will make "default KDE installs" more focused while raising the profile and exposure of the large number of truly great KDE apps out there via extragear.

Monday, June 11, 2007

banff

kevin, p. and i went up into the rockies mounties to explore around the banff area. we saw the hoodoos, hot springs, bow river falls, forests, banff springs hotel and the downtown area. so essentially no work got done this sunday, but we had an awesome sunday wandering through nature in varying levels of awe and wonderment.

i'll leave the details and the pictures to kevin (m. has my camera from her trip to boston still, so kevin had the only shutter). among his pics, i think he has about 50 of a certain chipmunk.

we also found t-shirts we will be wearing to akademy. *evil grin*

Friday, June 08, 2007

my plan for immortality

kevin, t., p. and i went to watch a documentary about curitiba, brazil. it's a rather remarkable city in that it was both master planned (something that many lefty anti-pov's rail against, and given the track record of master planning rightfully so), successful in the sense of creating a city that stands out globally as far as functionality and not only respectful of but enabling to both the poor and the wealthy, the educated and the illiterate. i'm not going to purport that curitiba is perfect, utopian or a panacea, but it does illustrate how pragmatism, empathy and sheer will can make amazing things happen. the documentary was called "a convenient truth: urban solutions from curitiba" and was hosted by a local eco group.

p. was mesmerized by the entire show. he was amazed by the things they were doing and often i heard him say "woah!" or "wow!". for a 7 year old, i think that's pretty healthy. i hope he grows up with the same feeling of "it can happen" that some of the people in the documentary displayed. my largest dreams include him making more of a difference than me.

and speaking of me making a difference, i finished out the first implementation of Phase class today, including the Animator plugin superclass. tomorrow i'll implement an Animator plugin that does background blurs and fade in/out transitions. the background blurs take advantage of the backing store composited window drawing in qt4, something other toolkits are only starting to explore. Phase takes extensive advantage of QTimeLine as well, another thing other toolkits are just now playing with. the end result is a very dynamic desktop that can be easily changed via plugins to either take advantage of today's best horsepower or tame it down to networked desktops and old hardware.

it's so fun to be at the leading edge of things, i have to say, and even more so to be part of a community where we all play off each other.

where we can say in the same breath "eat my dust, mofo!" and "oh yeah? we're doing that now too!" it's like those cartoon races where the cars inexplicably pass each other back and forth every few seconds. fun entertainment, but it's not supposed to work in real life. either we didn't understand real life, or we've changed it. either way, i'm having fun.

and yes, i'll be screencasting the results this weekend. the next step after this is panels. finally! =)

kevin is getting closer to finishing out the last few things in Solid he needs to normalize. we spent quite a bit of time discussing the naming and API of some new classes. well, mostly i listened and provided a sounding board to his thoughts.

hacking in proximity. gotta love it. but like love of the heart, it often takes distance first to appreciate the proximity.

now, i suppose i didn't get to the part about my plan for immortality. but if everyone knew what it was then people could copy it and then where'd that get me? a long, long time with the same people, that's what. ;)

love, hugs and adventures in the rain...

Wednesday, June 06, 2007

rainstorm!

i had to pop out this evening after picking p. up from school to pick up a package down in the south of the city. it was raining when we left, but as soon as we pulled out of our street the rain really started to come down.

within 15 minutes of being on the road, entire intersections were flooded out. streets, sidewalks and parking lots turned into turbulent rivers. cars and trucks were stalling in the deeper areas, some cars were abandoned in the street with water up to the windows. fountains of water were erupting from manholes, spouting nearly a meter in the air out of one. lightening was striking with regularity all around.

it was, in a word, mayhem. we made it to the store and back home thanks to picking the right roadways (e.g. ones that were higher elevation), but it took quite a while and was quite the adventure.

hopefully m. will send me some of the pics from her phone so i can post them here later.

Tuesday, June 05, 2007

while (blogger.stupid()) { blogger.prevent(); }

my blog got cut off this past friday since blogger's wildly brilliant automated blog spam bots decided my blog was a "spam blog". it didn't get un-blocked until late on monday. gah.

between now and then more coding on plasma and kdelibs. i hope to have more screencast worthy material by end of week. the last ones have been viewed some 10k times between the various sources. neat.

i also found out about afterhours.fm, a live d.j. site run by a friend of a friend here in calgary. some truly great music if you're into the trance. it even has 192kb feeds for really nice quality beats. the d.j.'s are pretty outstanding.

and speaking of music and outstanding, love 2.0 is pretty damn funny.

that's all for now. i'm just happy i have my blog back ;) kevin arrives in less than two days. hoo-yah.

p.s. google for "plasma". fun to take words like that. i bet all the plasma t.v. manufacturers love it. we're updating the website this week too, so that'll be one less annoying question i'll have to deal with ;)