New Laptop

I picked up a new laptop recently, and I think there’s both a hardware and a software tale to tell.

My big fat MSI GX620 laptop — P8400, GF9800, full HD 17" screen — had given up the ghost somewhere between my desk and the train I got into 5 minutes later. It was a nice laptop, but rather heavy and wide. My requirements have changed over the past two years as well. Last time I wanted a luggable desktop replacement that would be a fine development box at conferences. Now I have a twice-a-day train commute of an hour to my place of work-work (doing wxPython stuff). The big fat box with poor battery life isn’t good for that. It’s also a little too wide to fit comfortably on the tables in the train.

So time for something that meets my current needs. I had settled on 11" — the 10" netbooks are too cramped for my fat fingers while typing while 13" is starting to push into too-big-for-the-train size. Needs good battery life, though not a whole day. Must run Linux well. Must have enough oomph to run Netbeans with a big Python project (this too disqualifies nearly all 10" machines). Less than 500 EUR.

I ended up buying at Hettes, which is a Dutch webshop specialised in Linux-preinstalled machines. That seemed like a good ideological choice. I hadn’t heard of a store like that in the Netherlands before. They advertise shipping with Ubuntu pre-installed, but when I mentioned I was a KDE guy they offered to put OpenSUSE on it instead. Ordered machine, got a personal message a few days later saying there would be a delay along with a good explanation why and what the consequences were. Great customer service, I thought.

Only two days later than originally planned I got my machine, complete with OpenSUSE 11.4, complete with a custom kernel (3.0.3-2-default) to support all of the hardware. The usual stuff works (sound, wifi), slightly exotic stuff too (webcam, repeated suspend and resume with just the lid) and the edge cases too (mobile 3G broadband). I’ve passed Lamarque’s comments about OpenSUSE Networkmanager packages on to them and they’ll update the image for another time.

For me, this is a great experience: purchase laptop and it arrives with the software you want (and only that) and it just works. Good support from the vendor.

What hardware, you might ask? I had picked the AMD E350 platform early on. It’s a nice balance. I believe that an Intel i3 based laptop will get me an hour more battery and possibly a little more processing power, but those models are EUR 200 more expensive than the AMD E350 laptops I looked at. At 40% of my budget, I figured I’d hold on to that cash and spend it two to three years down the road on whatever makes sense for me then.

With this platform and form factor, in the Netherlands there’s the Asus Eee 1215B, an HP model (DM1 something), and the Lenovo X121e. There’s a very lengthy purchasing discussion on Tweakers.net — in .nl a pretty good resource for reviews and also Linux compatibility information.

Anyway, I settled on the Lenovo. I’ve called it "Tomato", for the red lid and in keeping with my tradition of naming machines for parts of an english breakfast. I have approximately this model. Everything works, the keyboard is the nice ThinkPad kind, and there’s a TrackPoint (that red knobby thing; I prefer that over a trackpad). I can use this all day as a programming machine, although it would be nice to have move vertical space than 1366×768 @ 96dpi. For display oomph I hooked it up to a 23" full HD LED monitor and ran dual displays. Now that’s cooking with gas! The Radeon 6310 onboard will give me all the wobbly windows I want. It also gets five and a half hours of battery under normal use (e.g. coding in vi and kate, running MySQL queries and using ogg123 as a music player).

This particular machine came with a 3G modem on-board, which is something extra useful for train commutes (or when I’m visiting customers in remote corners of the country like Amsterdam). Like I mentioned elsewhere, the OpenSUSE packages need a little work, but then it seems to work just fine. It did take me ages to find out where the SIM slot was. Well-hidden on page 94 of the user guide. Well, actually it was behind the battery, one of two nondescript slots in there, and it’s just about possible to insert and remove the SIM card without tweezers.

To sum up: enthusiasm! You can get a Linux laptop in the Netherlands with good hardware that also just works.

OpenSUSE migrations / mobile broadband

Over the past few weeks I’ve been migrating my Linux machines — laptops, desktop, even the VMs at work-work which I use to give me a comfortable development environment — to OpenSUSE 11.4. It’s hard to say exactly why though. Part of it is personal interactions, like the distrbution of DVDs in Bangalore, and Will Stephenson helping me though a weird installation issue. Part of it is technical, where system management just seems better to me in OpenSUSE compared to Kubuntu. I screwed up an otherwise blameless Fedora 12 installation by trying to upgrade it to Fedora 15, so it got replaced as well.

Oddly, many of the things I like technically about OpenSUSE are exactly what some folks don’t like about it. Chatting with a customer over coffee at work I found they’re Debheads and that we stood squarely opposite each other regarding what drives OS choice (e.g. apt vs zypper).

Now that I use OpenSUSE in a variety of places I also bump into bugs every now and then. Most recently with mobile broadband, where I could not get knetworkmanager (or whatever it is that lives in the systray) to start a 3G connection. It would either repeatedly ask for a root password or, if I went through "Manage Connections", crash with a segfault after asking for a provider.

That bug made it to the "most annoying bugs" list, which goes to Novell bugzilla #673755. I was about to follow the advice from SuseStarted saying "remove the KDE NM and use GNOME NM", but the instructions seemed rather long-winded. Instead of removing things, I just tried installing NetworkManager-gnome. While watching that install I saw that it pulled in a package called mobile-broadband-provider-info. "Hey," thought I, "I wonder if crashes around the provider information are related?"

With that provider information installed, the out-of-the-box KDE mobile broadband wizard worked, I could pick T-Mobile NL as a provider, and everything seems to work (with the SIM that I pulled from my n900 for this testing).

So that’s one "most annoying bug" that’s remarkably simple to work around, even if it’s a bad thing that the shipped packages apparently (a) don’t have all the dependencies set up correctly (b) don’t handle missing data gracefully. Given Lamarque’s work on Plasma NM, I do wonder if this is worth looking into further.

Now to deal with the fiddly bits like all my desktop settings (no, Lydia, I’m not pinkifying this desktop).

A licensing information surprise on FreeBSD

I love FreeBSD. If perhaps the relationship has been cooler in recent years, it was because I was messing around with a red-headed stepsister called OpenSolaris and because suspend didn’t work on the laptop I was mostly using for the past two years.

KDE on FreeBSD is very much alive. Oh, and there’s EuroBSDCon in the Netherlands in a month and a half.

In my case, FreeBSD remains the go-to place for getting stuff done at the server end of things. Today, that meant installing bugzilla so I could test a patchfor bugzilla information harvesting in XML format. I love how it’s a dead-simple "portinstall bugzilla" and it does whatever heavy lifting and interactive configuration is necessary.

While running that, I did notice the following license information line in the output (screenshot of a FreeBSD VM in VirtualBox):

So this is telling me I’ve accepted ART10 GPLv1 — I know that’s Artistic License 1.0 and version 1 of the GPL, (which is probably considered deprecated and replaced by GPLv2 and GPLv3).

I like this. It tells me, when I’m installing something, what the license obligations are. Naturally it’s Free Software, so my freedom to use it for any purpose doesn’t hinge on the license. However, if I were to further distribute the software (eg. as a VM image), then the license obligations are relevant, and I’m happy to have this stated up-front.

That’s a wrap

Congratulations to the organizing team of the Berlin Desktop Summit (or Desktop Summit in Berlin). Lots of good stories of collaboration. (That’s collaboration that might not show up in any kind of measurements or indicators, though, if there’s no electronic record of interaction)

The weeks including Akademy were crunch time at work for me, trying to replace a home-grown Python ORM (with its own implementation of String, List and Number) with SQLAlchemy. As in any refactoring project after five years of development, it turns out that everything is connected to everything else. Every nice clean design diagram with three layers or decoupled components just hides hideous purple tentacles reaching into every interface.

So, yeah, Akademy week was busy, but not in the way it has been for the past few years for me.

Although my term on the board of KDE e.V. was to run another year, I found that I really didn’t have the time to put into it properly, and stepped down before the desktop summit. Lydia was elected, as well as Cornelius who was renewed in his mandate. Congratulations particularly to Lydia, who brings a good deal of community management and organization skills to the group.

Meaning of Collaboration

My previous post, which referred to Paul’s Oracle of ERVIN, should perhaps also have pointed at Rolf Eike’s criticism (and part 2) of the Oracle directly.

Dakon (that’s Rolf Eike) points out that words tend to have some generally accepted meaning. So true, although there’s various nuances and language is not static (ask Paul about the semantics of "dude"). Some meaning can be lost in electronic transmission where there’s a no side-channel information available. (On that note, that’s why conferences like Akademy and the Desktop Summit and developer sprints are so important: side-channel communication and a reduction of the barriers to communication).

The word Paul used was collaboration. Let’s take a moment to think about what it means. dict:collaboration helps a little. One could put on a Latinist’s cap and bells and futz with the word for a bit, but here’s my personal sense of the word: It’s about working together on some artifact. That’s a short and simple definition, which is attractive.

So if you want to know if persons A and B collaborated on artifact X, just ask them: "did you work together on X?" And they’ll say yes or no, right?

Well, no. That definition hides a lot of corner cases, which make the definition untenable if we want to analyse patterns of collaboration — or even just in winnowing pairs of people to potential collaborators.

Let’s start with a scenario where the answer is a clear "yes", then carry on into scenarios where things are less clear. I’ll try to use names and interactions from KDE development as examples. In a later post I’ll consider indicators and what they bring to bear on these scenarios.

  1. Paul and I sit in one room, chat about our definition of collaboration, and one of us types up a paper while the other does some literature checks and produces a biography. Several pints of Guinness and some take-out Peruvian later, we’ve got a nice article definiting indicators of collaboration. That’s a clear yes, because: we worked on a shared artifact (the paper), there was explicit communication about it (chatting), there was a shared goal (production of the paper), the work together was con-temporal (at the same time or in a planned timespan).
  2. I start a paper about Eyeball numers, stick it in SVN, but never get around to finishing it. Sebas picks it up, modifies the text and ends up with a nice joint paper about collaboration through eyeballs. I’ll call this a murky yes, because neither of us would have reached the end result without the other. There was neither contemporaneity nor communication, though.
  3. I wrote a plugin for Kate once (katemake, which ran make and parsed gcc output and set up bookmarks). Adrian L. is working on Kate Code Folding. Collaboration? No. Although there’s a shared artifact, (we both worked on kate), there is no communication, no shared time, nor a shared goal beyond "improve kate".
  4. I worked on KPilot, which had translations. Rinse worked on the Dutch translation. Collaboration? No, for the lack of direct communication and because there’s no shared artifact.
  5. But if I correct an error in the translation? I’m going to still say no, because there’s no shared goal and no explicit communication.
  6. Albert fixes up some of my i18n (translation) code and tells both me and Rinse about the new strings that are going to show up in the code. Collaboration? Not between me and Albert, but you could argue that Albert and Rinse have a shared goal and shared artifacts even if Albert does not personally create the files with which Rinse works.
  7. I committed a weird-ass giflib check for Solaris to CMake some years ago. Now Alex asks me what it actually meant and fixes it up as he commits it upstream. I’ll call this a murky yes. There’s explicit communication, which induces a shared timespan as well. However, my actual work on the artifact falls way outside that period. Of course, Alex has also worked on the same artifacts, but not as part of collaboration.
  8. I change something in libferris so it compiles in Solaris; Ben changes it back so it compiles in Linux again and tells me I’m a doofus (a different kind of animal from the dangeroo). In spite of a shared artifact, communication, etc., I’d say no. Except if there’s further communication.

I hope this illustrates some of the special circumstances that may surround the notion of collaboration. Each factor, such as communication, can indicate that there’s collaboration going on, but there seem to be cases where the factors I’ve identified here are the same yet one is, and one isn’t, an instance of collaboration.

This suggests that either the factors are incomplete, or that the definition of collaboration I’m using in my mind is just broken.

Now there’s one factor I haven’t mentioned here, which is intent. I can imagine that this is the most important and most intangible factor in Free Software communities where we’re loosely organized. We think about collaboration when we intend to work together, and otherwise we’re just .. working together in an uncoordinated fashion?

If I’ve missed some characteristic of collaboration in this description, please point it out in comments.

And to wrap up, the reason I’m harping on the meaning of collaboration and what characteristics it has, is because of the ALERT project. The models and definitions used by that project need validation, and they’re going to need validation along the lines of this kind of description: does the model yield results that match our intuition and if not, what needs adjustment (it may be our intuition).