ampland al4a

Just for fun(tm) July 20th, 2008

I wrote this tiny python app about a year ago, over the course of a weekend just for fun. I’m sure that someone will find it useful and fun to play with and hack on so I’m putting it out there for everyone to enjoy :)


flies.py

Just run it with python, “python flies.py” as long as you have all the gumpf installed it needs :) I was going to use this to develop an interesting genetic algorithm system for these flies, allowing them to have predatory eyes or defensive eyes, and give various food sources, having the bottom feeders, feeding off some conways life generated scum and let the whole thing evolve a little… What can I say, sometimes I have the attention span of a newt!

Define Irony July 19th, 2008

Irony: iro-ny (noun)

The two people who wouldn’t say sorry to a monopolistic corporation using Microsoft Windows and Outlook Express.

Maybe its just my sense of humor, but this tickles me slightly

My take on GTK+ 3.0 July 17th, 2008

I’ve been asked to make it clear that this does not in any way reflect the belief of Nokia. I’m just adding mine where others have added theirs… Also some of this will bleed over into parts of the GNOME 3.0 discussion so please don’t shout at me for things going out of the toolkit scope.

Important points about the current plan

  • Killing the dead weight - deprecated code needs to get out of there once and for all.
  • Removing access to what should be private structures
  • Easily bound
  • Easier to extend
  • Easier to develop with

Now down to the nitty gritty of it…

GTK+ for the most part has served us all very, very well over the years, we’ve failed to gain any real improvements in it because of maintaining legacy compatibility. We’ve also stagnated[1] a little with this toolkit, and this has created the need for things like libsexy to be built in order to fill a gap. I’m not saying supplementary widgets are a bad thing, but when some of them have been implemented so many different times all over the place it pains me to watch.

Now we need to make sure that this time we can continue to not break the API/ABI for a good number of years, however there doesn’t appear to be any statement to the public about how long this will last. I think there needs to be clarity as to how long this toolkit will maintain API/ABI compatibility this is to ensure that developers in the closed source world which use GTK+ can have confidence that they will not be required to put in effort above and beyond because we decide to change it again in a years time because mistakes were made. I think it would be fair to say 8 years without API/ABI breakage, this would be quite appropriate as we’re expecting around 8 years from 2.x. We also need to make sure that if we do make a statement about how long, that we don’t paint ourselves into a corner until that day comes.

The next thing we must be very clear on is how we’re going to ensure that we don’t end up loosing traction to other toolkits. In order to achieve this we must think carefully about some very important things, from my perspective[2] we need to be clever about some very crucial points.

  • User Interface
  • Parental/Heirarchical styling - I want widgets which can inherit a certain look from their parent or parents, for instance I want one button, if I put that button in a toolbar it should be a toolbar button. I see no point in having a GtkToolbarButton, and a GtkButton! They behave in the same way in real terms. This is one of the main advantages of using CSS for styling. Styles defined on a per object basis, or inherited from the parent, or inherited from the parent for a specific type of child.
  • Custom styling - Sometimes I would like to customise a style, for instance changing the background colour of a widget and have all the child widgets inherit that colouring. Or completely change the look of my application without changing the code that powers it or having to reinvent everything from scratch[3] just to fit my UI design concept. Doing this by applying local themes/styles which are identical to the code used in the CSS for our overall theme engines.
  • Access to the colour palette in a logical way - When working on system monitor I found I could only get the colour of the background for a notebook from the notebook widget. Why isn’t there a global colour palette which can be accessed from anywhere. Integrating cairo can be made much simpler with this functionality.
  • Full scalability - Building a toolkit in this age should always consider and be very concerned with scaling, DPI is increasing, and we need the UI to be smooth, also from an accessibility point of view its important that when I have a high DPI screen with a certain physical size it can look the same[4] as a lower DPI screen of the same physical size. My best example of this was Rob Taylors new laptop which has an awesome DPI but the text can be difficult to read as a result.
  • Polymorphism - Widgets should be dynamic in their appearance to stop the user interface being boring. I don’t mean animated, I mean like Seth Nickell was musing about on his blog back in 2005 which he called dynamic themes.
  • Putting widgets wherever you like - I’ve had it mentioned to me in the past that putting some widgets in some places is hard. For instance putting a button in a treeview. This is not outside of the realm of possibility but these kinds of things could and should be easier.
  • Flowing, not boxed in - I’ve seen some great designs come up for having nautilus select files as if they were a continuous selection, and the same thing happening in various other UI designs. Button bars for instance should be a continuous bar of buttons rather than just tightly packed buttons.
  • Borders, alignments and spacing - in the future I don’t even want to care about aligning my widgets, setting borders and spacing so they’re positioned not too close to each other but not too far away. I want the widgets to know how this should be done globally from the theme. I want all my applications to look more or less the same. Specifying good practice rules in the HIG is one thing, but taking the option away from the developer for disobeying the HIG might be drastic, but it is also sensible. There should be some options regarding how it works but for the most part it should be automatic, and with a heirarchy of styles it should also be possible.
  • Canvasing - Cairo does some of it, Clutter does some more, WebKit does different things but similar in lots of ways. It is important to consider that we need to be able to treat items on a canvas as objects, and we also need to think in terms of there is no difference between paper and screen on a canvas. I should be able to send a GtkCanvas(?) to a printing API and have it print as it is on screen, cairo already considers this, but clutter doesn’t (AFAIK). There needs to be some middle ground.
  • The Bling - We should have alpha which can be applied to windows and widgets etc… but we should make this part of the framework on which we are drawing, it should be exposed to the theme engines and style sheets as well as exposed in the individual widgets via custom styling. In a similar way we need to keep in mind a framework for how animations can be performed, a universal governer of time so animations don’t step out of time with each other desktop wide as it can make me a little sea sick. We need to consider whether or not GDK is the right tool to be doing all of our widgeting on top of, and maybe write something lying under GTK+ which has the power to take us forward for another 10 years.
  • Interface Description Language - Microsoft did this with the Windows Presentation Foundation and Extensible Application Markup Language. We do need something like this, however we shouldn’t be designing our logic into the IDL, we need to think about where the IDL is meaningful and what benefits it provides to the developer, it should never be the focus of our developments but yet another tool to assist us into the future.
  • User Experience
  • Animations which mean something - It sometimes excites and sometimes amuses me looking at some of the things that have made it into compiz, for instance my windows can fold up like a paper aeroplane and zip off to the corner of the screen. This would be cool for sending and email, but a bit dumb for closing an error dialog. If we’re going to animate the toolkit we need to think about how, when, where and why. We can’t just animate things for the sake of being animated. Animated pathbars are a good example of things making sense, as are animated progress bars.[5]
  • Sounds - Sounds are a good indicator of things happening and what’s happening. Subtle sounds on the desktop are important keys to what’s going on now, when I say sounds I don’t mean everywhere for the sake of having them[6] I mean in appropriate places appropriate times, good quality, very subtle and using them as hints rather than features. Is this a toolkit item? Maybe and maybe not, its definitely a desktop item and maybe there are important places in the toolkit for this to be hooked into.
  • The computer as a tool, not a machine - A screwdriver is pretty easy to use, but a train is quite hard to drive. Knowing how to interact with a widget should not be a prerequisite to using a widget, in the same way knowing how to use the desktop should not be a prerequisite to using the desktop. It should always be a natural interaction with widgets, applications and tools.
  • Touchy feely - The toolkit needs to be aware of when a touch screen is being used and when a mouse is being used, or when a pen or stylus is being used on a screen or when its being used on a tablet… These different methods of interaction have very subtle differences and these differences need to be considered from the ground up in the toolkit, rather than adapted in as afterthoughts.
  • Paying attention to what has been said before - There are some great papers that have been written for a long time, for instance “A comparison of selection time from walking and pull down menus” these existing papers, and concepts like Fitts’ law and Hick-Hyman law need to be taken into account at all times. For instance our child menus still align down from the parent menu item, when it is more logical to have them aligned centrally. Moreover it is important for developers to exploit this and have the items not frequently used above the cursor entry position and the frequently used items below the cursor entry position. In a flash developers can halve the time it takes to access menu items, for the most important features, as long as the toolkit implements this.

The upshot

We need to think about canvas widgets, we need to think about scene graphs, we need to think about interface description languages, we need to think about themes and animations and most of all we need to think about these things long and hard before we begin with GTK+ 3.0, and we can’t simply put it off until 3.2 or 3.4 or 3.6 and definitely not until 4.0. I agree that 3.0 is overdue and in my opinion the approach that has been delivered is an approach that I’m not completely convinced with, especially after talking with a bunch of people about it and hearing their concerns. Building the future is not as simple as deprecating the past, we need to innovate, be stylish and be prepared for how the landscape of competitors will change in the future.

The delayed text…

  1. I feel using the word decadance is incorrect, stagnation is more appropriate, both gramatically and descriptively.
  2. And lets be very clear this is my perspective and nobody else’s.
  3. Banshee I’m looking at you!
  4. And should always by default.
  5. If it stops there must be something wrong.
  6. Why does internet explorer insist on making the same sound as a mouse click when I click a link?

Things I can’t believe… July 17th, 2008

  • Mark Shuttleworth didn’t turn up to SMASHED… Even though he said he would… Tsk Tsk! - Solution, bring two bottles next time…
  • Google’s party was such a load of horse excrement that people didn’t even drink the free beer… Glad I wasn’t there! - Solution, don’t be so cheap!
  • Pidgin/Purple stores all of my passwords in plain text in ~/.purple/accounts.xml! - Solution, use the frickin’ keyring already!!

The new iPod nano July 13th, 2008

From Sony…

Sony iPod nano
Only available in Istanbul

Whisk(e)y BoF July 8th, 2008

So the second GUADEC related meeting of SMASHED, the Single Malt Appreciation Society for HackErs and Developers should be going off tonight…

Anyone interested in it please come and find me. If you don’t know me, someone can probably point you to me :)

Ideas for where are welcome, we still haven’t quite figured this out yet…

Update: We’ve kind of collectively decided that we’ll get this BoF going on the boat trip… See you all there.

A phone call can do what a thousand comments can’t July 3rd, 2008

I just got off the phone with Mark Shuttleworth. I was very grateful for this phone call as we managed to discuss the issue without the noise, nastiness and bad spirit which was ongoing during the initial posts here.

My sarcasm isn’t always understood by people and I think Mark was shocked at this, I have a wicked sense of humour at times and I understand that this isn’t always appreciated. Although after speaking with Mark I’m now quite impressed with his attitude toward upstream accreditation. The issue over the “About GNOME” menu item was actually trivial, in that someone had mentioned it to him as an option in passing to which Mark refused to budge. It seemed to me like a bad example, and this is yet another case of type being a less eloquent method of communication than talk.

The original issue which has caused this ruckas wasn’t such a big deal and it eventually came down to the way it was handled. Some have said I “demanded” accreditation, this simply isn’t the case. The fact of the matter is I asked if it could be attributed to me because that would have been a nice thing to do. The sequence of events disheartened me a bit, but in the end it wasn’t a big enough issue for me to blog about. It has actually been a fair few months since it occurred and there hasn’t been a peep out of me regarding this. Zeeshan asked me to blog it.

Mark seemed to agree that maybe things in this instance were a little suspect, and that came down to a lack of response regarding my email more than anything.

In the end things have blown up out of all proportion, a few days of getting attacked left and right from anonymous trolls can heat up a situation far beyond melting point. Its unfortunate that there is a massively polarised troll community out there. It seems that comment systems are now getting the slashdot effect all over the place, which to be honest I don’t care too much for. Too many people make a religion out of their software beliefs. I’ve been told that I shouldn’t contribute to open source again, I’ve been told that I shouldn’t ever post on a blog again, I’ve had people criticise and threaten me in various personal ways also… These comments and emails go to the trash as not a single one of the heavily polarised comments came with a name attached. Shame on you people!

However, on the flip side, over the last day or so I have seen a collection of emails come in, and some people even pinging me on various IRC servers in response to what has gone on. The content of these messages was simply, “not all of us are like that, and I’m sorry some of us have been…” these are the people, and you know who you are who should be awarded for their courage to come out and speak to me directly, apologising for other peoples behaviour not their own… I have tried to respond to you all, but I think one big thanks for all of you should be enough :) (I hope)

Censorship on planet GNOME? July 1st, 2008

As many of you are aware Zeeshan made a post about something that happened a while ago. This was mentioned to him merely in passing and he wanted to blog about it. I thought it was fair comment however I was met with a great deal of hostility directed toward myself. Even though I chose not to blog about this a long time ago. People seem to be heavily polarised in Ubuntu’s favour and couldn’t see the point Zeeshan was making, which was valid. Firstly they didn’t respond to my email, and secondly removed the entry from the release notes.

I would have been happy enough to accept an email response telling me it was against policy to do what I was asking. It wasn’t that big a deal and to be honest, it didn’t bother me that much, but the events following my response to Jorge Castro did illustrate something about Ubuntu which maybe some rose coloured glasses had blinded me from.

So the events themselves don’t worry me. Mark Shuttleworths response did, as it seemed to highlight some unsupportable opinions are present at canonical. However this is another matter which I will try to discuss with him directly rather than through blogosphere 2.0.

The next thing that worries me is that Zeeshan’s posts have been removed from planet GNOME. I’d like to know why this was done? I believed that planet GNOME was a place for us to speak about anything that matters to us, and as Og Maciel recently posted about “Planet GNOME is a window into the world, work and lives of GNOME hackers and contributors.” therefore censorship is unreasonable. Furthermore censorship on a service provided by those who consider themselves advocates of freedom and liberty is hypocritical to say the least.

Update: I’d ask that people don’t start off with angry comments at me, I’m not going to approve the comments which are nasty, of which there are already a few. To quote Marius Vollmer’s excellent phrase (of which attribution may actually be to someone else) “We reject Kings, Presidents and Voting; We believe in rough consensus and running code”. This phrase encompasses important points to be remembered, that is that nobody is our ruler, and that we don’t all need to agree all of the time.

I now understand why the item was removed from the release notes. Mark has explained this nicely although I would have liked to be informed about it at the time as I was in discussion with Jorge over the item. Mark’s explanation of the issue in question fails to explain why he would have had to defend the “About GNOME” menu item remaining in Ubuntu. I find the fact that the “About GNOME” menu item was questioned abhorrent.

The full quote for anyone who missed it;

“If you run Ubuntu, you’ll know that we devote a very high-profile menu item to the “About GNOME” dialog box. I’ve defended that on many occasions, because I think it’s vital that a distribution be a conduit for people back to the original projects that actually provide a home for the innovation that makes free software potent”

This quote in itself does not justify anything, does not provide a valid example of anything although it does justify the original question. I have invited Mark to call me specifically to discuss this. I hope he takes this opportunity.

Update 2: As Mathias has mentioned it’s reasonable to assume Zeeshan has triggered a two posts per person limit on planet.gnome.org, its unfortunate that I implied (not accused), that this seemed like censorship but I’m sure I can be forgiven for thinking this way under the circumstances.

Update 3: I’m closing comments on this post, my reasons for this are, people are making accusations that I’m angry. I am not angry. I was not attempting to criticise planet.gnome.org but I was questioning the situation, I saw Zeeshan’s posts removed, not once, but twice, before I blogged about it, and on both occasions the same entry disappeared. This was suspect. I apologise to Jeff for this misunderstanding, however it was never made clear to any of us that there was a two post per person maximum.

My blog is now attracting a lot of negative attention. I never realised that criticising Ubuntu brought down the wrath of the minions, even if you aren’t the one to make the initial criticism publicly. It seems my attempt to clear up what has happened in the last few days has back fired.

I would like to ask all of those who have commented, anonymously or otherwise to take a long hard think at some of the things they’ve said. There have been some horrific insults thrown at me for absolutely no reason. These people have behaved in a far worse way than I have, although they are unable to be identified in most instances simply because they cowardly refuse to publish their names.

Awesome… June 29th, 2008

I recently discovered ClassBrowser for gedit, and its awesome.

But why isn’t it included? I think this plugin is valuable enough for it to be part of gedit, or is there a restriction against using python plugins in the gedit distribution?

And he duth tasteth the wine-1.0 and it was good June 20th, 2008

Fedora packages for wine have lagged a little of late, this I trust is mostly because they were waiting for 1.0 to be released.

Today I started testing wine-doors 0.1.3 which is currently in SVN. Andrew Stormont has been managing this release as I’ve wanted to concentrate on the new 0.2 series which is going to be a big change. 0.1.3 is a bit messy, the code is pretty terrible but marching on we’re still going to push out one last release before we put all of our effort onto 0.2.

So I installed two applications and the various dependencies they require, these were photoshop CS2 and Internet Explorer. After a few minor tweaks to get things working again both installed and run well. We still have a few tweaks to get out of the way before 0.1.3 is ready for public consumption but we’re hoping that it’ll be a major improvement over the last release.

On the subject of wine-doors 0.2, we’ve got a killer feature set in the works. To tantilise you with what we’ve been working on here’s a list of the interesting points;

  • Bottle support like no other - Our bottles system includes tools to generate registry diffs and link bottles together in the case of dependencies.
  • Improved repository system - Our new repository system allows us to specify lots of detailed information about packages so we provide better support for things like upgrading, matching wine compatibility, resolving dependencies etc…
  • Packaging system which does more - The new packaging system allows the packager to specify many install procedures, for instance applying binary diffs, executing scripts, linking dependencies, concurrent execution of processes and specific handling of upgrade/install cases.
  • Wine engines - Our engines philosophy comes from the understanding gained over two years of development that wine behaves differently in various cases, so we want to provide engine packages, these will not be the main wine distribution with wine-doors, however we will provide special case engines to use with specific applications.
  • Aiming for completely cross platform - Wine-doors will from 0.2 be usable on Linux (as our primary focus), MacOSX, solaris and ahem… Windows - Just for fun ™

So I’ll keep hacking on 0.2 and some day it’ll be ready, its quite a long way off though as we’ve got an enormous amount of code to refactor and in some cases completely redevelop. When its done, I’ll let you know, until then you should enjoy 0.1.3 when it arrives sometime soon.

cabinet price warehouse pirodr! 666