March 19, 2010
Dag Wieers
Removing all 32bit RPM packages
If you happen to come across a pure 64bit system that was installed the default way and includes lots of 32bit stuff. And you know for a fact all the 32bit functionality is not needed, just proceed to:
[root@system ~]# rpm -qa --qf '%{name}.%{arch}\n' | grep 'i[36]86$' | xargs rpm -e
Clean and simple...
Filip Van Raemdonck
Indeed it is

Here's to another company with a sense of humour.
Granted, this is actually a former Sun webspace, so it wasn't Oracle that put the PostgreSQL “most advanced” badge on there.
But Sun did own the MySQL brand, before.
Frank Goossens
ORI vouwfiets geplooid en gewogen
Eergisteren plat gereden met m’n Vero in Brussel, de nochtans bijzonder stevige maar vooral nieuwe buitenband bleek grondig naar de knoppen. Ik heb m’n fietsje dus binnengebracht bij Mobibikes en daar kreeg ik als vriendelijke maar ongetwijfeld ook commercieel verantwoorde geste ter vervanging een Ori MI8 in de handen gestopt. Als Christophe hoopt op een vermelding op m’n blog, heeft hij geluk, want dit lijkt wel heel sterk op een blogpost over Ori vouwfietsen, niet?
De Ori (ook verkocht als Mezzo) is even Brits als oer-vouwer Brompton en werd ontworpen door ex-Benetton F1 ingenieur Jon Whyte (die eerder ook al “full rear suspension” MTB’s voor Marin tekende). De MI8 lijkt overigens op een modernere versie van z’n befaamde stalen landgenoot (kijk maar op deze foto), met een scharnierloos monocoque aluminium frame met zelfsluitende koppelingen aan achter- en voorwiel, Shimano Nexus 8-speed “potversnellingen” en een heel strak design dat mooi assorteert met m’n zwarte fietsmuts.
Enkele korte ritjes maken geen uitgebreide test, maar ik kan wel zeggen dat de overstap van m’n Vero (Dahon) naar de Ori MI8 niet zonder slag of stoot ging. Ge had me moeten horen vloeken toen ik dat klereding op de trein niet proper opgeplooid kreeg. En de goeie raad van de conducteur, heel de weg tussen Lokeren en Dendermonde, hielp ook voor geen meter. Het kan nochtans best snel, kijk maar:
En inderdaad, ik ben over de middag nog even gaan oefenen en dat ging al heel wat vlotter. Voor de rest is de afstand tussen het zadel het stuur de stuurpen betrekkelijk klein, maar al bij al is de Ori MI8 is een knappe, lichte en snelle vouwfiets. Een ideaal opstapje naar een Birdy, misschien?
Possibly related twitterless twaddle:
Thomas Vander Stichele
Twisted training
Today is an exciting day at the office!
Jean-Paul Calderone (exarkun from Twisted arrived in our office this morning to give our development team an in-depth training on Twisted.
For now, the schedule is two days of Twisted training, one day of code sprinting on Twisted, and two days of consulting on our platform and various issues and projects we have.
For us it’s exciting to get a training from one of the top hackers in Twisted, and I hope it is exciting for him to see a commercially successful use of the project he worked on.
But mainly I’m looking forward to a bunch of days of high-level technology talk.
Time to get started!
March 18, 2010
Dries Buytaert
Enterprise social communities and Drupal
Jay just posted a blog post, called Building enterprise social communities with Drupal, sharing a white paper that we have written at Acquia. In this white paper, we answer questions like: what kind of social features Drupal supplies, why Drupal is the best choice for building a social site, what Drupal modules are useful when building a social site, and some examples of successful enterprise Drupal communities.
The reason we wrote this white paper is simple: many of the enterprise organizations that we talk to ask us these questions over and over again. Building social business sites is a very hot topic in the enterprise. The work environment in these organizations is evolving, and increasingly more, people want to connect, create, share and find people and information relevant to their work. Needless to say, not all social business sites are equal -- some are team collaboration sites, some are community sites, and others might be networking sites. They can exist behind the firewall for internal teams, or they can be external facing sites to engage with partners and customers.
We wrote this white paper because we wanted to demonstrate that Drupal provides a great platform to build these kind of social sites for the enterprise. If you are interested in building a social site for your enterprise and don't know where to start, have a look at our white paper. Also, if you've built, or have a Drupal site around which you have built a successful community, we'd love to learn about it, and learn from it.
Philip Paeps
Temples, Zen gardening and manga
19:15 JST
Last weekend was AsiaBSDCon. Great stuff as usual. It's always good to see friends from the BSD community again. Again, I focussed more on the hallway track than on the actual conference, but I did catch some good talks. Ana's talk about secure neighbour discovery in particular caught my attention, as did Peter's talk about DNSSEC. Unfortunately, I fear my brain may be too small to understand DNSSEC.
During the conference, Max helped me set up SIP so I can theoretically experience less expensive phone calls when I'm somewhere in the world with wifi. I don't want to think about roaming costs.
Over the weekend, "Neville-Neil Travel Translation Services" helped Brooks, Kristof and me get contiguous seat reservations on a Shinkansen to Kyoto (and beyond). Tasty food in a box on the train, but I snoozed most of the way. Conferences are exhausting.
Sadly, the weather in Kyoto is not cooperating this time round. Rain, rain, rain. Good for culinary tourism, rather less so for sight-seeing. Zen dry gardens are best experienced--well, dry.
Dinner last night followed my usual "get lost first, then hop into the nearest place that smells nice" and was immensely tasty. A combination of teppanyaki and okonomiyaki. I think we confused the staff by getting their "special" as a starter and then continuing with smaller dishes until full. Also sampled a very tasty "unfiltered" sake (bit like sparkling water, lemony) and an entirely (to me) new kind of meat: "hoso". From the sign-language discussion with the waitress, I learned that it's some internal structure of a mammal, but not much more than that. Quite tasty, if somewhat fatty and tendonny.
Sadly, part of the meal was spoiled a bit by a group of annoying tourists complaining about not liking one of the things they ordered and refusing to pay for it. I wanted to switch off my comprehension of English at that point. Or quite possibly hit them with a cluebat. If there's something you don't like, and it's not obviously rotten or "bad", just deal with it and be careful not to order it again next time. I have a (very) short list of things I steer clear from too and I'm practically omnivorous.
This afternoon, we fled back to the city when it started pouring down on our way to a temple. On a whim, we decided that the international manga museum would be an interesting thing to do (it would be dry). Unfortunately, as a museum, the place seems mostly to focus on the building it's in rather than the subject it treats. Also, most of the contents are encrypted in Japanese, which makes me wonder a bit about the "international" part in the name.
There were some interesting English (translations) manga in one room though, and I read Gyo by Junji Ito. If you think H.P. Lovecraft is weird, you haven't seen anything yet. "Weird" doesn't begin to describe it.
If only it would stop raining.
Out for tasty tempura dinner now, I think.
Pieter Colpaert
Wat aan te vangen met de Auvibel heffing

March 17, 2010
Philip Van Hoof
True or false?
Let’s discuss this abstract quote about mailing lists:
At the end of the day, there are some people who deserve to be unpopular and we have no way to do that.
– Luis Villa March 17 2010, on his blog
Working hard at the Tracker project
Today we improved journal replaying from 1050s for my test of 25249 resources to 58s.
Journal replaying happens when your cache database gets corrupted. Also when you restore a backup: restore uses the same code the journal replaying uses, backup just makes a copy of your journal.
During the performance improvements we of course found other areas related to data entry. It looks like we’re entering a period of focus on performance, as we have a few interesting ideas for next week already. The ideas for next week will focus on performance of some SPARQL functions like regex.
Meanwhile are Michele Tameni and Roberto Guido working on a RSS miner for Tracker and has Adrien Bustany been working on other web miners like for Flickr, GData, Twitter and Facebook.
I think the first pieces of the RSS- and the other web miners will start becoming available in this week’s unstable 0.7 release. Martyn is still reviewing the branches of the guys, but we’re very lucky with such good software developers as contributors. Very nice work Michele, Roberto and Adrien!
Amedee Van Gasse
Pakje...
Yay!!!
Dankuwel @rrradiogirrrl!
E-Tracker
|
Bert Deferme
status dot net!
I installed my own status.net service!
People who are using their own status.net service, or identica can still follow me remotely by going to: http://status.paradize.be/bdeferme and clicking on subscribe.
In the subscribe box you have to fill in your account, e.g. myusername@identi.ca or myusername@mystatusnetinstall.tld
/dev/out
Wouter Verhelst
Baobab
So, we recorded the performance. As I mentioned in my previous blog post, the sound for sunday was not recorded properly, so while the image looks far better, having a video with no sound is hardly interesting.
But as a 'sneak preview' for the people involved, I uploaded one fragment of the Saturday recording to youtube:
There's a lot of grain in this image, courtesy of the fact that two of our three cameras just weren't very good. But beyond that, it looks quite good, I'd say...
Frank Goossens
x-frame-options coming to a Firefox near you
Microsoft IE8 introduced it, Apple Safari4 has it, Google Chrome4 does it and now somewhere in the not too distant future, Firefox will ship it too; support for X-FRAME-OPTIONS.
X-cuse-me? Well, X-FRAME-OPTIONS is the HTTP response header that broke Google Talk chat badge a few months ago, remember? It allows you to specify whether your site or page can be (i)framed or not, by setting it to “DENY” (not allowed to be framed) or “SAMEORIGIN” (allowed if the framing site is on the exact same domain). The most important reason for this functionality is as a prevention-mechanism for “clickjacking” (a.k.a. UI redressing), a type of web attack that tries to trick victims into clicking a framed site by hiding it behind another innocent element.
So now that feature is finally coming to Firefox as well; Mozilla’s Brendan Sterne, one of the driving forces behind Mozilla’s much broader content security policy, grabbed the bug by the balls and came up with a first patch. If all goes well, this would be an ideal candidate to get pushed out with a minor version update as per the new release process, no?
Possibly related twitterless twaddle:
- Google inadvertently kills Talk badges with x-frame-options
- Browser choice, vacuming & security for father-in-laws
- Browser enforced web application security; IE8 safest?
March 16, 2010
Wouter Verhelst
Stuff
I'm running again.
No, not running in a bubulle style; I'm running for DPL. It started as a fairly last-minute decision because I would hate to see an election with only one candidate, but then two other people submitted their candidacy right after me.
As I stated in my candidacy email, I had "a concert" this weekend. Actually, there were three two-hour performances; two on saturday, one on sunday. Early on, I also suggested videotaping the performance (using the excellent dvswitch, for which I added a patch to support crossfading transitions) to the organising group within the choir, and they liked that. Apart from dvswitch, we used the theatre's own audio mixing setup (so I wouldn't have to worry about that too much) and the theatre's intercom system. I'd made some tally lights, but in the end we were not entirely able to use them, because there were some issues to be dealt with that meant I couldn't quite get them working properly.
So on saturday, I was in the theatre pretty early to get everything set up, did some explanations to the volunteers who would do the actual recording, drove my dad (who'd done the direction for the video parts) home, went home, and found my bed at around midnight.
On sunday, I got up fairly early, booted my laptop to update the live images with some fixes for some issues we'd encountered on saturday, left for the theatre fairly early again, set up the extra camera position, found out that one of the laptops was actually running at 100Mbit rather than a gigabit and that therefore the extra camera wasn't going to work, learned that one of the volunteers for sunday had done some other camera work for another performance right before that, for which he'd rented some high-end DV-capable cameras. So we broke down the two low-end set-ups, set up the high-end cameras, connected them to the laptops, recalibrated the whitebalance and the diaphragm setting, and restarted the streams. Then one laptop started failing. Since we had had to remove one camera anyway, I just replaced it. By that time, I had about 15 minutes left before sunday's performance would start, so I went to prepare for that.
After the performance had finished, I found out that something had gone wrong with the sound of sunday's performance; rather than music, we only heard crackling all the time. Luckily, the sound had also been separately recorded to a different medium, and that recording is fine, so we only need to resync the audio to the video, which should not be a problem.
All in all, I had an extremely busy weekend. The alert reader will note that I didn't mention 'food' anywhere in the above paragraphs, mostly because I hardly ever found the time to eat. But it was also extremely satisfying. We still have some postprocessing to do, but I expect I'll put some videos online once we've done that. They're truly stunning, at times.
And then yesterday I still had to spend some time writing my DPL platform, and doing some campaigning work. All in all, I didn't find my bed until approximately 4 AM... oh well.
I look forward to the election time, and hope that I will do well. I don't need to win, but I'd hope my result will be at least as good as the last time...
Update: we used the theatre's audio setup, not video setup -- oops :-)
Bert Desmet
deadline cfp load is changed
hi sys admins!
We changed the deadline for the call for papers. You have now one week extra to think about a talk you want to give during LOAD . We want to see your papers before march 23.
hope to see you there!
Philip Van Hoof
RE: Food: a reminder
Nat Friedman wrote about food. The problem with content of what the presenter in the video shows is that although he’s getting applause (which by itself is easy), it’s not as fashionable as the ‘idea of the nineties’: the idea that you can do whatever you want.
We have to work on creating a new idea that also is fashionable. For this generation. Only that will reduce problems like obesity, I think.
March 15, 2010
Kristof Willen
Unkillable processes

An issue I lately encountered was that a collegue complained about several processes which kept hanging on a Solaris 10 machine. After investigation, processes like format, powermt and even a for diagnostics invoked dtrace kept hanging, and could not even be killed :
# pkill -9 format # ps -ef |grep -c format 2
In such cases, a good old truss session mostly explains what's going on; but in this case, truss came back with a quite peculiar message :
# truss -p 26632 truss: unanticipated system error: 26632 # # pstack 26632 pstack: cannot examine 26632: unanticipated system error # # pfiles 26632 pfiles: unanticipated system error: 26632
In those cases, the only option you have is to rely on the kernel debugger to determine the cause :
# mdb -k
Loading modules: [ unix genunix specfs dtrace ufs sd pcisch md ip hook neti sctp arp usba fcp fctl ssd nca lofs zfs cpc fcip random crypto logindmux ptm nfs ipc ]
> ::pgrep format
S PID PPID PGID SID UID FLAGS ADDR NAME
R 1241 1 942 686 0 0x4a004900 000006001414c060 format
> 000006001414c060::thread
ADDR STATE FLG PFLG SFLG PRI EPRI PIL INTR
000006001414c060 inval/2000 1424 de50 0 0 0 0 n/a
> 000006001414c060::walk thread | ::findstack
stack pointer for thread 300012b7700: 2a10055cb01
[ 000002a10055cb01 cv_wait+0x38() ]
000002a10055cbb1 PowerSleep+0x14()
000002a10055cc71 PowerGetSema+0xe8()
000002a10055cd31 power_open+0x364()
000002a10055cea1 spec_open+0x4f8()
000002a10055cf61 fop_open+0x78()
000002a10055d011 vn_openat+0x500()
000002a10055d1d1 copen+0x260()
000002a10055d2e1 syscall_trap32+0xcc()
In this case, it was the PowerPath MPIO which was blocked on a semaphore. Further investigation revealed that the drivers for PowerPath were removed from the /etc/system file. Restoring the correct version of that file and a reboot solved the problem.
Visualisations

Michael Paukner is a graphic designer from Vienna and publishes on his Flickr photo stream several nice visualizations ranging from the list of oldest trees on earth to ancient Hebrew cosmology. Very informative and beautifully visualized.
March 14, 2010
Nicolas Trangez
Book review: Python Testing – Beginner’s Guide
As mentioned before, some days ago I received a copy of a recent book from Packt Publishing titled “Python Testing – Beginner’s Guide” by Daniel Arbuckle. I read the whole book (it’s not huge, around 220 pages), and wrote a review, as requested by Packt.
The book targets people who know Python (it doesn’t contain a language introduction chapter or something alike, which would be rather pointless anyway), and want to start testing the code they write. Even though the author starts by explaining basic tools like doctests and the unittest framework contained in the Python standard library, it could be a useful read even if you used these tools before, e.g. when the Mock library is explained, or in the chapter on web application testing using Twill.
The text is easy to read, and contains both hands-on code examples, explanations as well as tasks for the reader and quiz questions. I did not audit all code for correctness (although in my opinion some more time should have been invested here before the book was publishing: some code samples contain errors, even invalid syntax (p45: “self.integrated_error +q= err * delta“), which is not what I expect in a book about code testing), nor all quizes. These could’ve used some more care as well, e.g. on p94 one can read
What is the unittest equivalent of this doctest?
>>> try: ... int('123') ... except ValueError: ... pass ... else: ... print 'Expected exception was not raised'
I was puzzled by this, since as far as I could remember, int(‘123′) works just fine, and I didn’t have a computer at hand to check. Checked now, and it works as I expected, so maybe I’m missing something here? The solution found in the back of the book is a literal unittest-port of the above doctest, and should fail, if I’m not mistaken:
>>> def test_exceptions(TestCase): ... def test_ValueError(self): ... self.assertRaises(ValueError, int, '123')
This example also shows one more negative point of the book, IMHO: the code samples don’t follow PEP-8 (or similar) capitalization, which makes code rather hard to read sometimes.
The solutions for the last quiz questions are missing as well, and accidently I did want to read those.
Don’t be mistaken though: these issues don’t reduce the overall value of the book, it’s certainly worth your time, as long as you keep in mind not to be too confused by the mistakes as shown above.
Topic overview
The book starts with a short overview of types of testing, including unit, integration and system testing, and why testing is worth the effort. This is a very short overview of 3 pages.
Starting from chapter 2, the doctest system is introduced. I think it’s an interesting approach to start with doctest instead of using unittest, which is modeled after the more ’standard’ xUnit packages. Doctests are useful during specification writing as well, which is in most project the first stage, before any unittestable code is written. The chapter also introduces an overview of the doctest directives, which was useful to read.
In chapter 3 gives an example of the development of a small project, and all stages involved, including how doctests fit in every stage.
Maybe a sample of Sphinx and its doctest integration would have been a nice addition to one of the previous chapters, since the book introduced doctest as part of stand-alone text files, not as part of code docstrings (although it does talk about those as well). When writing documentation in plain text files, Sphinx is certainly the way to go, and its doctest plugin is a useful extra.
Starting in chapter 4, the Python ‘mocking‘ library is introduced. The chapter itself is a rather good introduction to mock-based testing, but I don’t think mocks should be used in doctests, which should be rather small, examplish snippets. Mock definitions don’t belong there, IMO. This chapter also shows some lack of pre-publishing reviews in a copy-paste error, in the block explaining how to install mocker on page 62, telling from now on Nose is ready to be used.
Chapter 5, which you can read here introduces the unittest framework, its assertion methods, fixtures and mocking integration.
In chapter 6 ‘nose‘ is introduced, a tool to find and run tests in a project. I use nose myself in almost every project, and it’s certainly a good choice. The chapter gives a pretty good overview of the useful features nose provides. It does contain a strange example of module-level setup and teardown methods, whilst IMHO subclassing TestCase would be more suited (and more portable).
Chapter 7 implements a complete project from specification to implementation and maintenance. Useful to read, but I think the chapter contains too much code, and it’s repeated too often.
Chapter 8 introduces web application testing using Twill, which I never used before (nor did I ever test a web application before). Useful to read, but Twill might be a strange choice, since there have been no releases since end 2007… Selenium might have been a better choice?
A large part of the chapter is dedicated to list all possible Twill commands as well, which I think is a waste of space, this can be easily found in the Twill language reference.
Chapter 9 introduces integration and system testing. Interesting to read, the diagram-drawing method used is certainly useful, but it also contains too much code listings.
Finally, chapter 10 gives a short overview of some other testing tools. First coverage.py is explained, which is certainly useful. Then integration of test execution with version control systems is explained. I think this is certainly useful, but not at this level of detail. Setting up a Subversion repository is not exactly what I expect here, especially not when non-anonymous, password-based authentication over svn:// is used (which is a method which should be avoided, AFAIK).
Finally, continuous integration using Buildbot is tackled. No comments here, although I tend to use Hudson myself
Final words
Is this book worth your time and money? If you’re into Python and you don’t have lots of experience with testing Python code, it certainly is. Even if you wrote tests using unittest or doctests before, you’ll most likely learn some new things, like using mocks.
I’m glad Packt gave me the opportunity to read and review the book. I’d advise them to put some more effort in pre-publishing reviews for future titles, but the overall quality of the non-code content was certainly OK, and I hope lots of readers will enjoy and learn from this book.
March 13, 2010
Elise Huard
Cancan: after a closer look
Well, we’re into our first weeks of using cancan, and my earlier enthousiasm has been tempered somewhat.
It turns out that Cancan, although being well-written, is an Opinionated plugin. It may have been intended only for very simple applications.
Let me explain. Authorization happens mostly at controller level. Cancan offers sweetened before_filter for this purpose.
One being:
load_and_authorize_resource
which will do some standard loading action for you (nesting is possible). It is implied that the model has the same name as your controller, let’s say a CommentsController will load and authorize based on the model Comment.
It’s made flexible to a certain extent, because you can specify another model, like
load_and_authorize_resource :class => Post
Besides that, you can decide to use your own before_filter to do your own custom loading of the model.
If you don’t want to load, you can use
authorize_resource
(without the load)
But for me we’re already in muddy waters, First off, I want authorization only, it’s unnecessary to load the instance variables for me, that’s not what I expect from this plugin. So I’ll stick with authorize_resource.
Secondly, we’re wanting to authorize a resource, not a model A resource, as in REST, should be disconnected from the model, that’s implied in the MVC pattern. The resource is what we expose to the outside world, whether as URL or in a more general API. Models are the developer’s business and nobody else’s. Linking both is awfully restrictive: usually, you’ll also have controllers that use several models, controllers that use a cache or set off background tasks etc.
This is possible with Cancan in a rather roundabout way, by using symbols when defining an authorization rule and making a before_filter.
This is why I decided to fork and add the required behaviour to the plugin. To quote what I added to the README:
If the resource is not linked to a model, you can use the authorize_resource filter with the :resource option. When the resource name is the controller name, use
authorize_resource :resource => :controller(for instance CalendarsController will authorize on :calendar)
When another name is required, a symbol can be used.authorize_resource :resource => :coffee
This may be enough for us to be able to work with it … we’ll see.

Geert Vanderkelen
A reason for these weird product or website names..
You've see them, those product/website names meaning nothing but making millions. Names which seem to come from stupid teenagers writing short messages on their phones.. Today I figured out a possible reason why we have such names.
I'm brainstorming a new project and came up with a good name to brand it. The problem? Assholes have parked any combination of the name for most top domains out there.
There you go: a good idea down the drain.. Or I'll just come up with a weird name and hope people will forgive me. Buying the domain? LOL.
Chitlesh GOORAH
Nedit’s Ctrl-y for emacs

March 12, 2010
Ruben Vermeersch
Mono @ FOSDEM 2010: Slides + Videos
09:15 - 10:00 MonoDevelop
Lluis Sanchez Gual | MP4 | YouTube | Slides
10:00 - 11:00 The Ruby and .NET love child
Ivan Porto Carrero | MP4 | YouTube | Slides
11:00 - 12:00 Mono Edge
Miguel De Icaza | MP4 | YouTube
12:45 - 13:15 The evolution of MonoTorrent
Alan McGovern | MP4 | YouTube | Slides
13:15 - 13:45 Image processing with Mono.Simd
Stéphane Delcroix | MP4 | YouTube
13:45 - 14:15 ParallelFx, bringing Mono applications in the multicore era
Jérémie Laval | MP4 | YouTube | Slides
14:30 - 15:30 Building The Virtual Babel: Mono In Second Life
Jim Purbrick | MP4 | YouTube | Slides
15:30 - 16:00 Moonlight and you
Andreia Gaita | MP4 | YouTube
16:00 - 16:30 OSCTool - learning C# and Mono by doing
Jo Shields | MP4 | YouTube | Slides
16:30 - 16:45 Smuxi - IRC in a modern environment
Mirco Bauer | MP4 | YouTube | Slides
Buy Andrius a drink if you happen to run into him. He deserves it.
Update: All videos are now on YouTube too. The MP4 ones are of much higher quality though.
Rudy Gevaert
Gezocht: architect
Voor een renovatie in het Gentse.
Paul Cobbaut
We zijn in 2010!

Deze reeks bevat fotos van 280x180 en 280x140 pixels. Een resolutie van 1024x768 of zeker 800x600 lijkt me een minimum om in 2010 van een foto te spreken.
Dries Buytaert
Druplipet, a Drupal chia pet
And the answer to yesterday's "Eye grow Drupal" question is: Druplipets. Hundreds of cute little Druplipets, your friendly Druplicon chia pet. Druplipet is the newest member of the Acquia and Drupal Gardens family and will be making appearances at industry events this year. It is making its first appearance at SXSW along with a fun contest. Needless to say, Drupal chia pets are fun and powerful stuff!
March 11, 2010
Frank Goossens
Speed up your (WordPress-)site!
Google likes fast! Visitors like fast! So why don’t you go make your site really fast?
Suppose you just bought yourself hosting and you just installed WordPress for blogging or lightweight-CMS-purposes, how can you improve your site’s performance in that case? Easy!
- speed up PHP: use a caching optimizer (I use APC) to significantly speed up PHP performance (don’t bother signing up for shared hosting with a company that doesn’t offer PHP with acceleration).
- cache dynamic output: install the “WP Super Cache” WordPress plugin. Configure and then forget about it; if you create/edit a blogpost, impacted pages are automatically removed from cache.
- optimize CSS and JS: install the “CSS JS booster” WordPress plugin, which (amongst other things) grabs all CSS and JS from WordPress and Plugins and outputs it in one CSS- and one JS-file (some plugins, e.g. Sociable and WordPress Mobile Pack, might need tweaking of the css media-attribute though)
- avoid calling 3rd party javascript: tracking (e.g. Google Analytics, which I removed), widgets (e.g. Twitter badges) or other 3rd party gadgets (e.g. AddToAny, which I removed) can slow down your site’s performance significantly
- optimize images: fire up your favorite photo editor and make that image just a bit smaller, use an acceptable level of compression (I end up between 70 and 80% for JPEG’s, depending on the image) and upload to smushit.com to squeeze out the last optimization-drop (example; I used a 20KB picture from Flickr, resized it to 80%, saved it with 77% compression and smushed it to end up with a mere 6KB).
The impact of a number of these steps can be measured easily; below are the response times of my blog’s homepage (the html including css, js and images) as measured by Pingdom Tool’s Full Page Test.
- default Wordpress (on a Linux VPS with 320Mb RAM memory): 6.5 seconds
- (1) with PHP APC activated: 4.1 seconds
- (2) with WP Super Cache: 3.1 seconds
- (3) with CSS JS Booster: 1.3 seconds
So there you have it, from 6.5 to 1.3 seconds in only 5 easy steps! WordPress specific, but easily applicable to other platforms as well. Now go and make your site fast! And then go and make it even faster!
Possibly related twitterless twaddle:
Leo Eraly
Resizing/Adding VMware disk + Linux guest
You have Linux guest running on top of a (recent) VMware esx and you want to extend one of the disks (Not the root fs) ? You can do it without a reboot/downtime
- Resize the disk on VMware (e.g via virtual center)
- Go to the Linux guest os and run:
echo "1" > /sys/class/scsi_device/your_device/device/rescan
Check with dmesg is the kernel sees the new size. Should show something like this:
SCSI device sda: 209715200 512-byte hdwr sectors (107374 MB)
sda: test WP failed, assume Write Enabled
sda: cache data unavailable
sda: assuming drive cache: write through
sda: detected capacity change from 85899345920 to 107374182400
Now you can use parted or some other tools to resize the partition+filesystem.
Suppose you added a disk to a running VMware instance. No problem
- From within the Linux guest OS run:
echo "- - -" > /sys/class/scsi_host/host0/scan
Check with dmesg if the system sees the new disks
Vendor: VMware Model: Virtual disk Rev: 1.0
Type: Direct-Access ANSI SCSI revision: 02
0:0:1:0: mptscsih: ioc0: qdepth=32, tagged=1, simple=1, ordered=0, scsi_level=3, cmd_que=1
target0:0:1: Beginning Domain Validation
target0:0:1: Domain Validation skipping write tests
target0:0:1: Ending Domain Validation
target0:0:1: FAST-40 WIDE SCSI 80.0 MB/s ST (25 ns, offset 127)
SCSI device sdb: 1048576000 512-byte hdwr sectors (536871 MB)
sdb: test WP failed, assume Write Enabled
sdb: cache data unavailable
sdb: assuming drive cache: write through
SCSI device sdb: 1048576000 512-byte hdwr sectors (536871 MB)
sdb: test WP failed, assume Write Enabled
sdb: cache data unavailable
sdb: assuming drive cache: write through
sdb: unknown partition table
sd 0:0:1:0: Attached scsi disk sdb
sd 0:0:1:0: Attached scsi generic sg1 type 0
Another interesting (related) read: http://www.vmware.com/pdf/esx3_partition_align.pdf
Dries Buytaert
Eye grow Drupal
Frederic Descamps
openERP spec files
As requested by Pieter, here are the spec files I used to create the openERP rpms for fedora and centos.
As some packages have different names or different user management commands, I need two different spec files for same pakages in each distro.
(only the client can be the same)
I wait for your feedback
| Attachment | Size |
|---|---|
| openerp-server_centos.spec | 3.48 KB |
| openerp-web_centos.spec | 1.74 KB |
| openerp-client_centos.spec | 2.21 KB |
| openerp-server_fedora.spec | 3.63 KB |
| openerp-web_fedora.spec | 2 KB |
| openerp-client_fedora.spec | 2.25 KB |
March 10, 2010
Dries Buytaert
City of Athens using Drupal
The City of Athens has launched a new Drupal site to serve as its official website, along with a Drupal-based site at http://www.breathtakingathens.com/ that provides visitor and tourism information.
Athens is a large city (3.5 million residents and 6 million tourists each year), with a large tourism base due in part to its role in the 2004 Olympic Games. To support the city's needs, the site includes a large calendar of city events, a comprehensive map-based index of city services and interactive tools that allow citizens to access city resources. The site builds on Drupal's multilingual capabilities to provide information in both Greek and English.
March 09, 2010
Kris Buytaert
DevOPS, SecOPS, DBAOps, NetOps
This post is long overdue, as the idea struck me when dicussing with Lefred while preparing his Fosdem talk on Maintaining too big tables
I got triggered finishing this post by Mr BuidlDoctor
Fred has been struggling with a typical DevOps problem resulting in the most unmanageable database setup possible, there's little room for him to move but he managed is way out .. because he is good at his job
It set the mark for me that because in different organisations even the Opsteam is fragmented `in different groups that there also we need to get the Devops idea going.
Typical setups here are the Network guys vs the Platform guys , specially with the growth of virtualization where the network stack doesn't stop at the physcial switchport anymore but the vlan trunks go deep in to the VM's a lot of discussion happens. There where traditionally the story for the network engineer stopped at the switch they now want control much deeper in the infrastructure.
But an even bigger group that needs integration are the security folks, it's no secret that in some organisations the security guys job is to be the bad guy, their default reply to something is NO. Specially to people wanting to drill holes in their architecture .
Patrick wonders if its the specialist vs generalist dillemma, I think it's the Web vs Enterprise IT way of thinking ..
DevOps first gained ground in Web environments , the battle has only started ..
We still have a long way to go before in say a banking environment the Devs and SecOffs' and the DBA's and the Ops are on the same line ... they all need to break the walls of confusion, they all need to come out of their silos. And when you are a generalist in charge of a bunch of these things you have to make sure your tuesday afernoon security persona talks with his other persona's from time to time ... otherwise you are really gonna need those meds :)
Trackback URL for this post:
Frank Goossens
Fix iframe-positioning problem with frameMagic.js
A short followup on my previous post about iframes; as I happen to like simple drop-in solutions, I updated the javascript that handles the ‘blank 2nd page in an iframe bug’ to automagically work upon inclusion in the html.
So if you happen to have problems with the positioning of 2nd (or later) pages in iframes (due to the top part of the iframe not being visible in the ‘viewport’), just upload frameMagic.js to your webserver and add the following to the head of your html to ease your iframe-blues;
<script type="text/javascript" src="path/to/frameMagic.js"></script>
Optionally you can specify which iframes are to be treated this way (excluding the other ones) by doing
<script type="text/javascript">
var fM_conf="iFrame1,iFrame3";
</script>
You can find more information and examples on http://futtta.be/frameMagic.
Possibly related twitterless twaddle:
- 5 tips to tackle the problem with iframes
- HTTP upload MIME type hell
- Onclick event handler in A HREF’s?
Philip Paeps
Why I gladly suffer jetlag
23:56 JST
The weather today was disgusting. Rain, rain rain. Horizontal sheets of water. Really unpleasant.
This morning, we went to see the giant panda at Ueno Zoo, but it turned out that Ling Ling died of a heart attack a couple of years ago. Perhaps I need to rethink my fondness of Japanese cuisine a bit. Happily though, there were many other animals to cover for the disappointment. Particularly interesting was the aye-aye forest. Most of them asleep, but the one or two who were awake were highly entertaining. There was also a hyperactive Galapagos Tortoise, but of course it can't compete with an astro-chelonian.
Pity about the Panda. There's one in the Berlin Zoo I've consistently failed to visit for the past couple of years though. Maybe next year we should visit Berlin a couple of days early and see about the Panda.
Dinner this evening reminded me of why I don't mind sitting in a small metal tube pointed at this island for all too many hours. We spotted the restaurant by the (very!) cute waitress letting out the previous party. It was a tiny place. Three tables only. The kind of place I gravitate to.
Our starter was sashimi, including a bowl of small living fish. I'm actually not sure which fish they were. It was not ikizukuri, which I've had in Kyoto two years ago, but a bowl of small eelish creatures. I understand other people's sensitivities towards things like that, but really - carrots weren't uprooted by choice either, get over it. Just bite once and the vital problem isn't so vital anymore. Also on the plate were uni and some other tasty things. It was realy, really tasty
This was followed by a fried fish and udon and then cold soba. Yum yum!
All this was of course accompanied by some tasty sake.
The cute waitress disappeared at some point, but the food made up for her absence. We have the address of the place, we'll be sure to visit it again.
I asked Sato-san to ask Them to turn off the rain. It seems They have misunderstood though, and it now started snowing. This is suboptimal. I'll have to spend more time in restaurants. I'll end like the Panda, mark my words!
Geert Vanderkelen
There are only bad habits
Vacation, and the mind is free. Then I scribble something, unleash it upon Earth where only a handful might read it:
Stop for a moment And watch around Hush for a second And hear the sound Think of your past step And watch the road ahead Pick up a fight And try to flight Break your habits Stop living by one's wits Take another curve And make some surf
Thomas Vander Stichele
ski
As we are deluding ourselves here into thinking it’s snowing in Barcelona, I thought it appropriate to post some videos from the past few snowboarding trips.
Coincidentally, this is my first foray into the HTML5 video world – more on that later.
Let’s start with my favorite, the one where I show off how years of gymnastics in my youth help me keep my body in one piece:
Could not use HTML 5 or Flash for playback. You can download the file as MPEG4/H.264 or Ogg Theora file.
(Also notice the cool new orange snowboard pants that I settled on. Snowboard fashion was really boring this year, mostly grey and black only, with some ugly flashy colours as exceptions. I leave it to you to judge whether orange is one of them).
We spent eight full days in Tignes, France, with only about three days of sunny weather, and the rest filled with clouds and snow.
My goal this year was to learn how to do a 180. With the help of an instructor, that’s exactly what I did! Here’s an admittedly simple one – all the good ones are not caught on video.
Could not use HTML 5 or Flash for playback. You can download the file as MPEG4/H.264 or Ogg Theora file.
Here’s a more aggressive one with a bad ending:
Could not use HTML 5 or Flash for playback. You can download the file as MPEG4/H.264 or Ogg Theora file.
A few weeks before our snowboard trip, we also had a business planning weekend which included one day of skiing. Xavier risked life and limb following me around with his iPhone to record this. It’s not the most exciting descent in the world, and he ended up missing my one fall in it, but I was surprised to see how short the whole descent really is if you don’t take any time to stop!
Could not use HTML 5 or Flash for playback. You can download the file as MPEG4/H.264 or Ogg Theora file.
And here are Xavi and me relaxing over cheese fondue and raclette the day before the skiing:

Some notes about the HTML5 video part:
- there is an enormous difference in colour between playing Ogg in Firefox, MP4 in Safari, and MP4 in Quicktime, on the same MacBook. My pants range from a soft orange to a bright red. Something is obviously up!
- To learn about HTML5, I started with Dive into HTML5 Video, then learned about Video for Everybody, some web code that handles all of the stuff I don’t know how to do for me and just makes sure the video can play on Firefox/Chrome/Safari/iPhone/…
- Then I looked for WordPress integration, and found a plugin with a long name that implemented most of Video for Everybody. I modified it a little to do something more sensible for the poster image in case it’s external, and to accept .mp4 as an extension instead of .m4v (which is not suggested by Dive into HTML)
- I configured our transcoding platform to generate the three types of output file needed to support HTML5: the thumbnail, Ogg/Theora/Vorbis, and .mp4 with H264 and AAC.
The embedded video should work fine in Firefox/Safari/Chrome/iPhone/Opera (except in Aitor’s “I plug mplayer into Opera” case), and work fine in Explorer too where it falls back to Flash.
I couldn’t get this to work in Android. 2.0 is rumoured to support the video tag, but so far no dice, and I couldn’t find a single HTML5 video page online that the Android phones over here can play. If you can see these videos embedded in Android, or know what I should to fix them, please do let me know!
March 08, 2010
Philip Van Hoof
The future of the European community, a European Monetary Fund.
I’m worried about the EURO’s M3 if a European version of the IMF (a EMF) is to be installed.
Nonetheless, I think the European community should do it just to strengthen Europe’s economy. I’m not satisfied by Europe’s economic strength: I want it to be undefeatable.
We must not let the IMF solve our problems. Europe might be a political dwarf, but we Europeans should show that we will solve our own problems. We’re an adult composition of cultures with vast amounts of experience. We know how to solve any imaginable problem. And let’s not, in our defeatism, pretend we don’t.
A EMF is a commitment to future member states: Europe often asks them fundamental changes; economic strength is what Europe offers in return. This needs to come at a highest price: Greece will have to fix their deficit problem. Even if their entire population goes on strike. Greece will be an example for countries like my own: Belgium has to fix a serious deficit problem, too.
An EMF comes at an equally high price, and that frightens me a bit: I don’t want the ECB to go as ballistic on money creation as the FED has been last two years. I want the EURO to be the strongest relevant currency mankind has ever created. No matter how insane the rest of the world thinks that ambition is: I believe that keeping the EURO’s M3 in check is a key to creating a wealthy society in Europe.
Politically I want European nations to negotiate more and more often. The European Union is a political dwarf only because finding agreement is hard. But in the long run will our solution be the most negotiated, most tested on this planet.
Together we can deal with anything. That doesn’t mean it’ll be easy; it has never been easy: just seventy years ago we were still killing each other. We’re all guilty of that one way or another. And before that it wasn’t any better. Today, not that many people still care: “it wasn’t me”, right? So stop being a bitch about it, then.
It’s time to let it be. It’s time to start a new European century that will be better. With respect for all European cultures, languages, nations, nationalities, values, borders and interests.
But also a European century with economic responsibilities for each member. It’s our strength: we figured out how to keep our population wealthy: let’s continue doing so in the future.
Dries Buytaert
The history of MySQL AB
MySQL, the open source database product that puts the "M" in LAMP, was created by MySQL AB, a company founded in 1995 in Sweden. In 2008, MySQL AB announced that it had agreed to be acquired by Sun Microsystems for approximately $1 billion.
The story of MySQL AB is pretty amazing, so I unleashed my "inner academic", did some research and compiled a timeline of MySQL AB's history. This timeline is assembled based on different resources online, such as MySQL press releases (example 1) and interviews with MySQL AB executives (example 2, example 3), etc.
Things to add? Let me know in the comments and I'll update the post.
1995
- MySQL AB founded by Michael Widenius (Monty), David Axmark and Allan Larsson in Sweden.
2000
- MySQL goes Open Source and releases software under the terms of the GPL. Revenues dropped 80% as a result, and it took a year to make up for it.
2001
- Mårten Mickos elected CEO at age 38. Mårten was the CEO of a number of Nordic companies before joining MySQL, and comes with a sales and marketing background.
- 2 million active installations.
- Raised series A with undisclosed amount from Scandinavian venture capitalists. Estimated to be around $1 to $2 million.
2002
- MySQL launched US headquarters in addition to Swedish headquarters.
- 3 million active users.
- Ended the year with $6.5 million in revenue with 1,000 paying customers.
2003
- Raised a $19.5 million series B from Benchmark Capital and Index Ventures.
- 4 million active installations and over 30,000 downloads per day.
- Ended the year with $12 million in revenue.
2004
- With the main revenue coming from the OEM dual-licensing model, MySQL decides to move more into the enterprise market and to focus more on recurring revenue from end users rather than one-time licensing fees from their OEM partners.
- Ended the year with $20 million in revenue.
2005
- MySQL launched the MySQL Network modeled after the RedHat Network. The MySQL Network is a subscription service targeted at end users that provides updates, alerts, notifications, and product-level support designed to make it easier for companies to manage hundreds of MySQL servers.
- MySQL 5 ships and includes many new features to go after enterprise users (e.g. stored procedures, triggers, views, cursors, distributed transactions, federated storage engines, etc.)
- Oracle buys Innobase, the 4-person Finnish company behind MySQL's InnoDB storage backend.
- Ended the year with $34 million in revenue based on 3400 customers.
2006
- Mårten Mickos confirms that Oracle tried to buy MySQL. Oracle' CEO Larry Ellison commented: "We've spoken to them, in fact we've spoken to almost everyone. Are we interested? It's a tiny company. I think the revenues from MySQL are between $30 million and $40 million. Oracle's revenue next year is $15 billion."
- Oracle buys Sleepycat, the company that provides MySQL with the Berkeley DB transactional storage engine.
- Mårten Mickos announces that they are making MySQL ready for an IPO in 2008 on an projected $100 million in revenues.
- 8 million active installations.
- MySQL has 320 employees in 25 countries, 70 percent of whom work from home.
- Raised a $18 million Series C based on a rumored valuation north of $300 million.
- MySQL is estimated to have a 33% market share measured in install base and 0.2% market share measured in revenue (the database market was a $15 billion market in 2006).
- Ended the year with $50 million in revenue.
2007
- Ended the year with $75 million in revenue.
2008
- Sun Microsystems acquired MySQL AB for approximately $1 billion.
- Michael Widenius (Monty) and David Axmark, two of MySQL AB's co-founders, begin to criticize Sun publicly and leave Sun shortly after.
2009
- Mårten Mickos leaves Sun and becomes entrepreneur-in-residence at Benchmark Capital. Sun has now lost the business and spiritual leaders that turned MySQL into a success.
- Sun Microsystems and Oracle announced that they have entered into a definitive agreement under which Oracle will acquire Sun common stock for $9.50 per share in cash. The transaction is valued at approximately $7.4 billion.
Frederic Descamps
openERP 5.0.7 for Centos and Fedora
I created rpms for CentOS and Fedora of openERP 5.0.7
I didn't test them yet but you can try them and send me your feedback to improve them.
| Attachment | Size |
|---|---|
| openerp-server-5.0.7-1.noarch.rpm | 14.56 MB |
| openerp-client-5.0.7-1.noarch.rpm | 847.93 KB |
| openerp-web-5.0.7-1.noarch.rpm | 1.52 MB |
| openerp-server-5.0.7-1.fc12.noarch.rpm | 14.32 MB |
| openerp-client-5.0.7-1.fc12.noarch.rpm | 833.84 KB |
| openerp-web-5.0.7-1.fc12.noarch.rpm | 1.48 MB |
Geert Vanderkelen
How do you name the device found in your pocket?
Since a few decades, humanity got more and more cursed and/or blessed with a little device now fitting perfectly in a trousers' pocket or womon's purse. But how do you call it these days? Here are some possibilities which crossed my mind:
- Mobile
- GSM
- Handy (German)
- iPhone
- MP3 player
- Walkman
- PDA
- Alarm
- some kind of berry
- Book
- .. or.. Phone?
I just read my first book using Amazon Kindle on my iPhone. Although odd at first, it was surprisingly pleasant. Old books mind you, like ‘Adventures of Sherlock Holmes’. I still prefer the normal, papered books, but reading using one's phone is sometimes handy (pun intended). Suddenly, my phone turned into a .. a book.
Raf Nijskens
OSD2010: Day 2
Day 2 at the conference was much more interesting then day 1, cause it the talks way more technical.
Only on the lego talk I had some comments: java on embedded devices --> WTF.
Sejo had some issues with his server while doing his presentation on djagios, but nevertheless it was like the best talk I saw.
For both lunch and dinner we ended up in Haiku sushi which was VERY good. For dinner we took a bunch of people with us, cause the lunch was so good. So if you're in Copenhagen and like sushi, that's the place to be!
Philip Paeps
Back in Japan
16:49 JST
Hard to believe another year went by. I got back to Tokyo last Friday via Copenhagen. I tried to burn some expiring miles to upgrade Kristof who is travelling with me to business class too, but it turns out they gave him the upgrade without deducting my miles. Very nice. Conversation made the flight over much less boring than usual.
So far, the food is working out very well. Last night, Sato-san recommended us a yakiniku-style establishment in the vicinity of Shinjuku station. The one with 200 exits and millions of people using them all at once. Despite the daunting location, we found it very easily. And the food was scrumptious, as expected.
Earlier today, we met up with the Italian invasion and went to check if Meiji Shrine was still where it was last year. While taking my annual picture of the enormous wooden structure leading to the shrine, a Dutch voice over my shoulder wanted to know if we were sure we could take pictures. Turned out to be Paul and Cor. Bumping into familiar people by accident in a city the size of Tokyo is a bit unexpected. On the other hand ... can't avoid the Dutch, right? ;-)
Food tonight promises to be interesting again. Watch this space!
Amedee Van Gasse
I Love Lucy
Is het alweer een maand geleden dat ik nog een blogpost gedaan heb? Hmmm, rap mezelf eens een schop onder m'n kont geven. 
Ubuntu Lucid Lynx komt er aan, en ik heb het risico genomen om nu al een upgrade te doen van 9.10 naar 10.04. Hey baby, take a walk on the wild side!
Eventjes dit intokkelen:
sudo do-release-upgrade -den een dik half uur later was de upgrade afgelopen.
In de known issues staat wel het volgende:
The fglrx binary driver for ATI video chipsets does not yet support the X server in Lucid. As a workaround, users should use the open source -ati driver instead. (506656)
Inderdaad, na reboot kreeg ik een waarschuwing van Xorg en werd mij een failsafe scherm voorgeschoteld. Nu heb ik 2 schermen, met verschillende afmetingen, en met een failsafe configuratie tonen ze alletwee hetzelfde beeld. Dat is dus niet de bedoeling.
Mijn oorspronkelijke xorg.conf was aangemaakt met de Catalyst Control Center voor ATI Radeon, fglrx-amdcccle, met vrij veel details (zie bijlage). Ik heb die radicaal verwijderd zodat Xorg automatisch zijn configuratie vaststelt. Beide schermen heb ik met behulp van lxrandr op hun maximale resolutie gezet: 1920x1080 en 1280x1024.
Het was mijn bedoeling om daarna de onderlinge positie van de verschillende schermen in te stellen met grandr, maar daar kreeg ik deze vriendelijke foutmelding:
User set screen size larger than max screen size
Oeps. De wijziging kan niet opgeslagen worden.
Geen probleem, Google is mijn beste vriend en zo kwam ik terecht op http://www.thinkwiki.org/wiki/Xorg_RandR_1.2. Met behulp van xrandr kan je op de console hetzelfde doen als met de gui-tool grandr.
Eerst vraag ik de informatie van mijn beeldschermen op:
amedee@fangorn:~$ xrandr -q Screen 0: minimum 320 x 200, current 3200 x 1080, maximum 3200 x 2048 VGA-0 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 375mm x 301mm 1280x1024 60.0*+ 75.0 1024x768 75.0 70.1 60.0 800x600 72.2 75.0 60.3 640x480 75.0 72.8 59.9 720x400 70.1 HDMI-0 disconnected (normal left inverted right x axis y axis) DVI-0 connected 1920x1080+1280+0 (normal left inverted right x axis y axis) 477mm x 268mm 1920x1080 60.0*+ 60.0 1440x900 59.9 1280x800 59.9 1152x864 75.0 1024x768 70.1 60.0 800x600 60.3 56.2 640x480 66.7 59.9 720x400 70.1
Daarna probeerde ik de schermen in te stellen:
amedee@fangorn:~$ xrandr --output VGA-0 --auto --left-of DVI-0 xrandr: screen cannot be larger than 2048x2048 (desired size 3200x1024)
Hetzelfde probleem dus als met grandr, maar deze keer met wat meer details.
De oplossing was het aanmaken van een eenvoudige /etc/X11/xorg.conf met uitsluitend dit:
Section "Screen"
Identifier "Default Screen"
DefaultDepth 24
SubSection "Display"
Depth 24
# ADD A VIRTUAL LINE TO PROVIDE FOR THE LARGEST SCREENS YOU WILL HOTPLUG
Virtual 3200 2048
EndSubSection
EndSectionNa herstarten van X hadden grandr en xrandr geen probleem meer met de nieuwe ultrabrede desktop. Zie ook de screenshot in bijlage.
Voor de rest werkt Lucy perfect! 
| Bijlage | Grootte |
|---|---|
| 2010-03-08--1268011498_3200x1080_scrot.png | 1.36 MB |
| xorg.conf-backup-100307180651.txt | 2.74 KiB |
| xorg.conf_.txt | 295 bytes |
March 07, 2010
Philip Van Hoof
Emotional (and social) intelligence
It was the dawn of the 1970s, at the height of worldwide student protests against the Vietnam War, and a librarian stationed at a U.S. Information Agency post abroad had received bad news: A student group was threatening to burn down her library.
But the librarian had friends among the group of student activists who made the threat. Her response on first glance might seem either naïve or foolhardy — or both: She invited the group to use the library facilities for some of their meetings.
But she also brought Americans living in the country there to listen to them — and so engineered a dialogue instead of a confrontation.
In doing so, she was capitalizing on her personal relationship with the handful of student leaders she knew well enough to trust — and for them to trust her. The tactic opened new channels of mutual understanding, and it strengthened her friendship with the student leaders. The library was never touched.
(More available at the flash preview widget’s page 21)
– Daniel Goleman, Working With Emotional Intelligence, Competencies of the stars. 1998
In Working with Emotional Intelligence, Daniel Goleman explains several practical methods to improve the social skills of people. Before I bought this book a year or two ago, I read Daniel’s first book Emotional Intelligence. This weekend I finally started reading Working With.
I recommend the section Some Misconceptions. Regretfully ain’t this section available for display in the flash preview widget. Instead of violating copyright laws by typing it down here, I’m recommending to just buy the book.
You can find audiobooks online. The section about misconceptions is at track three. Track five talks about two computer programmers, which is very illustrative for many of my blog’s readers (and possibly myself). I hope you wont illegally download using torrents. Instead, buy the material.
Also very interesting is this lecture by Daniel:
Here you can also find a Authors@Google talk by Daniel Goleman:
What distinguishes Daniel Goleman from old line proponents of positive thinking, however, is his grounding in psychology and neuroscience. Armed with a Ph.D in psychology from Harvard and a first-grade journalism background at the New York Times, Dr. Goleman has authored half a dozen books that explore the physical and chemical workings on the brain and their relationship with what we experience as everyday life.
– Peter Allen, director of Google university, introduction to Daniel Goleman. August 3, 2007
I hope readers of my blog will shun away from pseudo science when it comes to emotional and social intelligence, but instead read and learn from authors like Daniel Goleman. I also (still) recommend the books available at The Moral Brain by for example Dr. Jan Verplaetse.
Dieter Plaetinck
Uzbl, monitoring, AIF talks
I recently did two talks, for which the videos are now online.
- Uzbl lightningtalk @ fosdem 2010
- Open Source Monitoring tools lightning talk @ Kangaroot showcase 2009. This one is password protected. If you were a participant, you should have received the pass
If all goes well, I'll be at ArchCon this summer, where I'll be doing these talks:
- AIF: The Arch Installation Framework
- Uzbl – web interface tools which adhere to the unix philosophy. Whereas in the fosdem talk I had to focus a lot of information into a short timeslot, here I'll elaborate a bit more
We're not sure yet if those talks will get videotaped.
March 06, 2010
Kris Buytaert
Better days Arrive when Dev Meet Ops
A couple of weeks a go Brian Profitt pinged me for a chat about Devops , the result of that chat , his article can now be found on the Zenoss blog, it's titled Datacenter Barometer: Better days arrive when dev meets ops
It's a very nice read with some pointers to places regular readers of my blog should already know ;)
So with lots of leading Open Source infrastructure companies on different levels, such as config management (OpsCode and Reductive Labs) , monitoring (Zenoss) , deployment (openQRM, RPath, and obviously Consultancy companies , the upcoming Devops conferences around the planet promise to be a lot of fun ! ;)
Oh, and apparently there is some more on the story on /.
Trackback URL for this post:
Ruben Vermeersch
GSoC Infosession at K.U.Leuven next week

Google Summer of Code 2010
Bram Luyten (mentor at DSpace) and Vincent Verhoeven (2 year as student) will do most of the talking, but as I happen to work there, I (2 times student and now GSoC admin for GNOME) will be present too and talk about doing a GSoC with GNOME. Obviously there will be plenty of time for questions as well.
If you want to be the next GNOME rockstar, this is your chance, come over and have a chat!
More info
Raf Nijskens
OSD2010: Day 1
I have to say we didn't see that much talks at day 1. First of all day 1 is the commercial day and second we had some things to do.
As we, Sejo and I, are now members of the exherbo infra team, we had to introduce us to all exherbo people here and start our contribution to it.
So we ended up in the cafeteria ( best place for wifi access ) setting up some virtual machines for the infrastructure we want to setup and debugging some issues with bind for delegated subdomains.
The only talk we did see, was the nokia talk about QT. After that one we left with a bunch of guys to eat something downtown. We called it a day after some more drinks in the hotel with a few people of the dinner.
Bert de Bruijn
HZ divider effect on timer interrupt overhead
I did a little test today to see what difference that makes when running CentOS5.4 on vSphere. Tests were done with the current 2.6.18-164.11.1.el5 x86_64 kernel in a single vCPU VM. These are the results from my test environment:
- standard settings: HZ=1000: 60 MHz cycles used when idle.
- divider=2: HZ=500: 36 MHz cycles used when idle.
- divider=5: HZ=200: 25 MHz cycles used when idle.
- divider=10: HZ=100: 20 MHz cycles used when idle.
- divider=25: HZ=40: around 10-15 MHz cycles used when idle (results slightly variable, also for higher dividers)
- a nohz "tickless" kernel (I used 2.6.24.7-146.ay, not currently available in RHEL/CentOS by default) used 70 MHz cycles when idle in my test environment. This is a surprise, and I don't have a good explanation (yet) !
On your own machines, you can easily check:
- the current divider setting by looking at the currently active kernel parameters: cat /proc/cmdline . No divider parameter means divider=1, the default.
- the measured timer interrupt rate (close approximation of HZ value): dstat -i -I timer
Summary: before RHEL 5.4, divider=10 was recommended for timer accuracy. This is no longer true, but as I've shown, it still helps lowering the timer interrupt overhead. Don't forget that the ideal divider setting depends on your application: thread wake-up delays can occur in high divider scenario's, and responsiveness could potentially suffer because of that.
March 05, 2010
Philip Van Hoof
Tinymail 1.0!
Tinymail’s co-maintainer Sergio Villar just released Tinymail’s first release.
psst. I have inside information that I might not be allowed to share that 1.2 is being prepared already, and will have bodystructure and envelope summary fetch. And it’ll fetch E-mail body content per requested MIME part, instead of always entire E-mails. Whoohoo!
Wouter Verhelst
Netgear WNDR3700 and OpenWRT
I wanted a machine on which I could easily run OpenWRT. So I'd went to the #openwrt channel on freenode a while back, and just asked for suggestions; people suggested to me that the Netgear WNDR3700 was a good choice, so I ordered that.
I assumed that it would be easy enough to install OpenWRT on this device, but hadn't actually looked into it, planning to wait with that until the device had arrived. Little did I know that the machine actually comes with OpenWRT preinstalled. Now there's an interesting twist.
Now you do need to run some "telnetenable" thingy to be able to get a shell, after which "telnet <device>" gets you a root shell (with no username or password by default). Supposedly you should update that by using "passwd", but they managed to break that in the firmware that comes with the device.
I am missing a few things, though.
root@WNDR3700:/bin# dmesg /bin/ash: dmesg: not found root@WNDR3700:~# uname -a /bin/ash: uname: not found root@WNDR3700:~# hexdump /bin/config |more /bin/ash: less: not found
Unh?
root@WNDR3700:~# alias more='less' vim='vi' root@WNDR3700:~#
Aahh.
And for those who were wondering: no, it does not have any 'vi' installed, either.
Oh well.
The fun thing is, this device has a USB connector, too; so it should be possible to connect a USB storage device, install Debian, and use it as a very potent home server/router/switch/whatever. That'd require me to understand how hostap works, though, which I haven't played with yet. I'm sure I'll figure that bit out -- at some point.
Raf Nijskens
OSD2010: Pre notes
Because of the injury of my colleague Sejo I had to go with him to OpenSourceDays. One of the Exhebo developers, Ingmar, joined us.
As Sejo doesn't like to take a plane, we drove all the way up here. After some detour and two border controls we arrived at Copenhagen after a 13 hour drive. ( Me likes! ) Was a very nice roadtrip!
We did meetup with some people of the organisation and after checking it at the very fine hotel ( A big thanks to the OpenSourceDays organisation ) we went out to dinner. ( First food of the day ). After that we called it a day.
Frank Goossens
electro-jazz-folk: Bibio hartje Pentangle
Ge zou het misschien niet geloven, maar ik luister niet alleen naar Gilles Peterson. Akkoord, de man draait mooie plaatjes en toen ik in de aflevering van afgelopen zondag Ali Farka Touré hoorde, was ik weer totaal overtuigd van het genie van Mr. Brownswood. Maar ik mag niet zo overdrijven, mensen hebben dat niet graag, zo van die blinde idolatrie.
Dus nee, deze blogpost gaat echt niet over Gilles Peterson. Als ik niet in een eindeloze loop naar GP’s Worldwide luister, stem ik dikwijls af op KCRW, een radiostation uit California, USA. En wat ik daar hoorde heeft me blij gemaakt;
Bovenstaand YouTubeken is “Ambivalence Avenue” van Bibio (zie ook z’n myspace pagina), artiestennaam van de Brit Stephen Wilkinson, die iets geloofwaardig met electro en folk doet. Ge moet maar eens rondsnuisteren op YouTube, hij heeft zo nog leuke melodietjes.
Het zal wel iets met het grondwater of met Stonehenge te maken hebben, maar Bibio’s vernieuwingsdrang is niet nieuw. Eind jaren ‘60 begin jaren ‘70 bijvoorbeeld, deden Terry Cox, Bert Jansch, Jacqui McShee, John Renbourn en Danny Thompson samen prachtige dingen met jazz, folk en blues. En nu ik zo geheel toevalligerwijze aan Pentangle (want zo heette hun groep) heb, ben ik ervan overtuigd; Bibio is ook een fan en onderstaande “Light Flight” heeft hem diep geraakt;
Possibly related twitterless twaddle:
March 04, 2010
Fabian Arrotin
Extending (live) a SR (storage repository) on XenServer 5.5
For my new job I have to learn how to deal with Citrix XenServer (yeah, because of a mixed workload of CentOS domU’s and Windows TSE servers, for which XenServer has been optimized). I liked the fact that I’m directly feeling “like home” , as Citrix XenServer dom0 is based on CentOS (still 5.3 at this time though). One of the things i had to do was to extend a Storage Repository served from an IBM DS3200 through dual HBAs, and using mpp/rdac (the default on XenServer 5.5 when it sees a rdac disk storage backend). Great, I’ve never had problem doing this on plain RHEL or CentOS machines, so after having extended the LUN on the IBM DS3200, I was back on the XenServer side. I always like to read the official documention before doing something (and it’s even faster when you know what you’re searching for) and I found this on the Citrix XenServer documentation : “How to resize a Storage repository after changing the size of an LVM-base storage” . Hmmm, WTF ? Their recipe is : “live migrate the guests, restart the host and proceed for each host”! . No, it has to work without a reboot, we’re not Windows admins, right ? Here is what i did : (that was tested on a test machine !)
We have first to list the current status/size :
[root@xen1 ~]# xe sr-list
uuid ( RO) : c945d1bb-2432-36ac-2766-ebd2bc7f2e81
name-label ( RW): Hardware HBA virtual disk storage
name-description ( RW): Hardware HBA SR [IBM - /dev/sdb]
host ( RO): xen1
type ( RO): lvmohba
content-type ( RO):
[root@xen1 ~]# xe sr-param-list uuid=c945d1bb-2432-36ac-2766-ebd2bc7f2e81|grep physical-size
physical-size ( RO): 85886763008
[root@xen1 ~]# pvscan|grep c945d1bb-2432-36ac-2766-ebd2bc7f2e81
PV /dev/sdb VG VG_XenStorage-c945d1bb-2432-36ac-2766-ebd2bc7f2e81 lvm2 [79.99 GB / 16.12 GB free]
Now we’ll extend with the IBM DS StorageManager script editor : “set logicalDrive ["XenPool1"] addcapacity=139 GB;”
Back on the xen host we have to rescan for the new size (using a MPP device presented as /dev/sdb on the xen host) and confirm with dmesg|tail
[root@xen1 device]# echo 1 >/sys/block/sdb/device/rescan ; dmesg|tail
sdb: detected capacity change from 85899345920 to 235149459456
[root@xen1 device]# pvresize /dev/sdb
Physical volume “/dev/sdb” changed
1 physical volume(s) resized / 0 physical volume(s) not resized
[root@sicxen1 device]# pvscan
PV /dev/sdb VG VG_XenStorage-c945d1bb-2432-36ac-2766-ebd2bc7f2e81 lvm2 [218.99 GB / 155.12 GB free]
PV /dev/sda3 VG VG_XenStorage-9c1e7a2a-2fc0-83eb-3e32-7cea2c9e9d93 lvm2 [60.59 GB / 60.59 GB free]
Total: 2 [279.58 GB] / in use: 2 [279.58 GB] / in no VG: 0 [0 ]
Rescan now that SR :
[root@xen1 device]# xe sr-scan uuid=c945d1bb-2432-36ac-2766-ebd2bc7f2e81
[root@xen1 device]# xe sr-param-list uuid=c945d1bb-2432-36ac-2766-ebd2bc7f2e81|grep physical-size
physical-size ( RO): 235136876544
Done ! and i confirm that the CentOS domU’s were still running after that …
PS : while talking about Citrix XenServer, I have to add that I used only ssh/xe to manage it, as their XenCenter gui app is a Windows only GUI (relying on .Net). But I found several days ago an interesting GPL project: OpenXenCenter, something to keep an eye on as it’s still alpha but quickly involving …
Guy Van Sanden
Microsoft proves it has a sense of humor
You really have to hand it to Microsoft, apart from bad software and a lousy OS, they also produce their fair share of comical material like the Get The Facts campaigns.
But the guys in Redmond are rarely satisfied with any great piece of work, so their humor department produced this very funny article in Computer world.
Their Senior Chief Clown is suggesting to put a general tax on internet-connected computers to pay for the cleanup of botnet/virus/malware infected windows PC.
Very funny and probably not so unrealistic since it would be hugely cheaper to pay for the cleanup costs of botnets than fix an OS that is broken from the ground up, I'll give them that.
So, thanks again to MS for starting out my day on a comical note and pointing out to people once again why they should be running GNU/Linux or FreeBSD or even OS X. Though if everyone did that, Microsoft would probably run out of funds to keep their humor department... That's the one product of theirs actually worth any money.
March 03, 2010
Kris Buytaert
Apparently Devops is not a JobTitle
Devops, Devops, Devops, everybody talks about it but we're still defining it ...
There's so many different interpretations possible for the term Devops , It's automated infrastructure, it's agile infrastucture, it's getting devs and ops closer to eachother, it's briding the gap between devs and ops , it's agile system administration, it's the movement , it's the mindset , it's the spirit.
Lots of people, lots of opinions .. Indeed some people have been doing this kind of work for ages, some claim the cloud is what makes devops become visible (but we've been doing cloud since before the cloud marketeers called it cloud)
Some define the devop as a European based , open source backgrounded , thirtysomething senior sysadmin , or should I say infrastructure architect , originated concept . Others claim it's developers gone sysadmin gone partly developer again ..
But it seems like lots of people claim that Devops is more about the team, not about the unique individual doing a job.
You'll have to agree however that our jobs are significantly different from the system adminstration type jobs you'll find at the average IT department. With that in mind: How shall we call this breed of people cooking up chef stuff, playing the puppeteer or cranking up the CFEngines ?
And no I don't like Devministrator :)
Trackback URL for this post:
Dries Buytaert
Mollom CAPTCHAs are "intelligent"
Every other week or so, someone asks me the following question: How are Mollom CAPTCHAs better than those created by CAPTCHA module?. This is an important question, and understanding it is central to understanding our philosophy with Mollom.
First, when using Mollom in "text analysis" mode, a CAPTCHA is only displayed when Mollom is uncertain about whether a message could be spam. Mollom analyzes the text of comments and combines that analysis with what it knows about the internal reputation of the posters, to determine whether a message is "spammy". Non-spam submissions are accepted without a CAPTCHA, and posts that are certainly spam are rejected automatically. By only presenting a CAPTCHA when necessary, we avoid penalizing normal (non-spamming) users with CAPTCHA challenges. The CAPTCHA module is different in that it does not perform text analysis and therefore must always display a CAPTCHA challenge.
Second, the Mollom module for Drupal has a "CAPTCHA only" mode, which is useful when clients would prefer not to use text analysis, or for when the forms have almost no text to analyze (like Drupal's user registration form). In "CAPTCHA only" mode, the user experience of the Mollom module is very similar to that of the CAPTCHA module -- the user is always prompted to complete a CAPTCHA in order to perform a certain operation. The similarity ends here, however. While the user experience is the same, the actual CAPTCHA generation is not. Mollom CAPTCHAs are "intelligent", in the sense that Mollom tracks the behavior and reputation of IP addresses from all sites using Mollom. A known spammer, operating from a known IP with a poor reputation, won't be able to complete a Mollom CAPTCHA no matter how hard he tries. And, as more users install Mollom, its performance increases as it learns from the additional data. A stand-alone module like CAPTCHA doesn't learn from user behavior, as it simply generates CAPTCHAs without regard to their context and delivery.
This second difference between the Mollom and other CAPTCHA modules is, in fact, huge. When we analyze our server logs, we see that 20% of all correctly completed CAPTCHAs are submitted by known spammers. Spammers don't seem to solve CAPTCHAs algorithmically; instead, they persuade humans to solve CAPTCHAs for them by using botnet infected machines. Two blog posts that detail this process are How to defeat Koobface and Breaking Koobface's CAPTCHA solving process. As spammers evolve and their arsenal of tools become increasingly powerful, CAPTCHA solutions must keep up to remain effective. We believe Mollom's "intelligent CAPTCHA" processing represents a significant benefit from traditional CAPTCHA generation and is one way we'll continue to stay a step ahead in our goal to eliminate posting spam.
Different protection modes in the Drupal module for Mollom.
Frank Goossens
5 tips to tackle the problem with iframes
Iframes have always been frowned upon by web-purists (confession: myself included). But things are never black and white and sometimes iframes can be the best solution for a problem (you could substitute “‘iframes” with “Flash” in the previous 2 sentences, but that’s another discussion). So here are 5 quick tips which might lessen some of the SEO- and usability-problems associated with the use of iframes;
1. Google loves doesn’t hate iframes done right!
Although Google is rather vague about the subject, iframes and SEO do not have to be mutually exclusive. But you will have to make sure it’s your main page that shines in search results, not the iframe-content. The main page (where the iframes are defined) has to be more then a mere placeholder for one or more iframes. Migrate as much information (titles, description and other text) from the iframe-content to your main page, which should describe what goes on in the iframe(s). Use the iframe title-property and insert alternative content between opening and closing iframe-tags. A quick example:
<h2>Calculate your mortgage rate</h2>
<p>Calculating your mortgage rate was never easier; just enter the loan-amount and the duration below!</p>
<iframe src=”http://page.url/iframe-container-page1″ … title=”Calculate your mortgage rate here”>Your browser does not seem to handle frames properly, but you can calculate your mortgage rate <a href=”http://page.url/iframe-container-page1″>here</a></iframe>
2. Own the stage
Avoid visitors viewing the iframe-content out of the context of the main page (e.g. because they followed a link in search-results). Add javascript to the iframe-content to check if it is accessed stand-alone and redirect to the main page (or explain and provide link to the main page) if that is the case.
if(self.location==top.location) top.location.replace('http://contain.er/page-url/here');
3. Don’t draw blanks
When a visitor clicks a link at the bottom of a long page inside an iframe and the target is a shorter page inside the same iframe, then he/she will see a blank page which is … well not very usable, no? The (hackety-hack) solution; tell the browser to scroll to the top of the iframe each time a new page in it is loaded, by calling the function below (with the iframe id as parameter) when the iframe’s onLoad event fires:
<script>
var firstrun = new Object();
function frameMagic(el) {
if (typeof firstrun[el] === ‘undefined’) { firstrun[el]=true; }
else { document.getElementById(el).scrollIntoView(); }
}
</script>
<iframe id=”iframe” onLoad=”frameMagic(‘iframe’);”>
4. Your users really do need scrolling=”auto”!
Help your visitors access all iframe content no matter what configuration they’re using: don’t disable the iframe scrollbars! Disabling them will render the iframe partially inaccessible for some of your users, because the size your iframe-content needs depends on things outside your control such as operating system & versions (e.g. font & screen resolution), browser (e.g. css-implementation) and browser configuration (e.g. non-default font-size). Instead define a reasonable iframe-width and height, make the iframe-content width flexible (fluid) and let the browser decide if a vertical scrollbar is needed.
5. Smart sizing without scrollbars
If you really really really don’t want scrollbars, if you want your iframe to adapt to the size needed by the iframe-content automatically and if you’re not afraid to experiment; there are some nifty javascript-solutions that allow the iframe-content to communicate the required height to the main page. Check out Framemanager (stand-alone, has some issues though) and the JQuery-postmessage iframe-example (which does everything in javascript, which isn’t really ideal from an accessibility point of view).
Conclusion: iframes aren’t necessarily evil (either), but you’ll have to make a small effort to render them somewhat SEO- and user-friendly.
Possibly related twitterless twaddle:
- Fix iframe-positioning problem with frameMagic.js
- 5 valuable Cufón tips
- Embedding YouTube HTML5-video with newTube
Wouter Verhelst
dpkg vs RPM
Thomas blogs about some issues he had with his N900's facebook plugin. This post isn't about that, as I don't use facebook.
But as part of his blog post, he mentions the following:
This reminded me of a pet peeve I have with those people who claim Debian’s packaging system to be far superior to rpm – apparently dpkg doesn’t have any equivalent of rpm -qv which allows you to verify that the files that should be installed by a package are indeed on disk
True, probably because the script would be so trivial:
for i in $(cat /var/lib/dpkg/info/nbd-client.list) do [ -f "$i" -o -d "$i" ] || echo "$i missing" done
There, that wasn't hard, was it?
Now I'm not sure whether rpm's -qv option actually checks the checksum of the files, too. If it does that, then the semantically similar way would be:
(cd / && md5sum -c var/lib/dpkg/info/nbd-client.md5sums)
... except that MD5 is totally and utterly useless these days, and that we should be changing to something else. And that md5sums is an optional feature, provided by some, but not all, packages. And it may also be that maemo packages don't have md5sums (which would make sense). But, anyway.
March 02, 2010
Dries Buytaert
Open Source in the Enterprise and in the Cloud
In a couple of weeks, I'll participate in a panel discussion on The Future of Open Source in Business. In preparation for that discussion, I figured I'd write down my current thoughts and solicit some feedback. I'll talk about two important trends relevant for the future of Open Source, but there are certainly more.
First, Open Source adoption in the enterprise is trending at an incredible rate -- Drupal adoption has grown a lot in 2009 but we saw by far the biggest relative growth in the enterprise. Fueling this movement is the notion that Open Source options present an innovative, economically friendly and more secure alternative to their costly proprietary counterparts. Second, Cloud Computing is a transformational movement in that it enables continual innovation and updating - not to mention a highly expandable infrastructure that will reduce the burden on your IT team.
Two years ago, when starting Acquia, we predicted this would happen so it is no surprise that Acquia's strategy is closely aligned with those two trends: Drupal Gardens, Acquia Hosting and Acquia Search are all built on Open Source tools and delivered as Software as a Service in the cloud. Combining Open Source tools and Cloud Computing makes for the perfect storm for success. It provides real value to end-users and it enables companies to monetize Open Source. It creates a win-win situation.
At the same time, I think we have an opportunity to go beyond that, and to redefine the Software as a Service model based on Open Source values, almost exactly like we started doing 10+ years ago with off-the-shelf software. Almost all Software as a Service providers employ a proprietary model -- they might allow you to export your data, but they usually don't allow you to export their underlying code. While a lot of these services might be built on Open Source components, they have a lot more in common with proprietary software vendors than Open Source projects or companies.
There is room for Open Source companies to disrupt this model, and it is probably not something that can be done without the help of Open Source companies. Drupal Gardens provides a good example of this model.
For example, users of Drupal Gardens can help improve Drupal Gardens, simply by contributing to Drupal. By staying close to the Open Source project, everyone can help shape the service. Along the same lines, we want people to be able to export their Drupal Gardens site -- the code, the theme and data -- and move of the platform to any Drupal hosting environment. By doing so, we provide people an easy on-ramp but we allow them to grow beyond the capabilities of Drupal Gardens without locking them in.
It is Software as a Service done right -- it will offer enterprises a much more secure and low-cost alternative to proprietary counterparts and provides many Open Source projects the opportunity to have a much bigger reach. It creates a triple win scenario -- for the customer, for the Open Source project and the Open Source company -- in a way that wasn't really apparent five years ago. At least not to me.
Have you taken the 2010 Future of Open Source Survey yet? If not, please take a few moments to share your thoughts on where you think Open Source is headed.

Technorati Tags: 
