Wanted: A GSoC student

Perhaps it's a bit early, but Toshio and i have been talking about a couple of crazy GSoC projects that will require a bit of a warmup cycle. I'm looking for a couple of highly motivated students who are looking for Summer Jobs and want to do something very crazy and awesome. If you're looking for something to do this summer, leave your email address in the comments, or use my contact information on the Fedora Wiki.

The first project is a content delivery project. Lately we've been bumping into issues with Fedora's No Content policy where people want to deliver wallpapers, themes, books, documentation, Gimp brushes, and so on that are essential to adding value to the packages we provide in Fedora. Alot of this content falls into a grey area that makes it really hard to decide if it should belong in Fedora. In most cases, however, it really doesn't belong there. Faced with the decision to turn down content submissions, we'd like to create a repository where we can point people to instead.

The aim of this project is to put together a content database system and some delivery mechanism and standard to get content to people's computers. What the database is going to look like, and what kind of frontend is completely open to the student working on the project. In the coming months, the goal is to sit down and discuss how you want to solve the problem, and how you plan to go about doing that. We'll plan out what standards already exist to solve part of the problem, who is using them, how to handle licensing questions, how to store data to make it friendly to the systems involved, and what's the best way to locally 'install' it to the computer. A project like this can become very complex, and the biggest challenge is refining it into a 12 week project.

The second project is a bit simpler. We want reliable download statistics from mirrors who mirror linux distributions in general. If you are familiar with Smolt, this will sound very familiar. We're looking for someone to write some tools mirror managers can use to gather statistics on their machines and a way for the stats to be gathered publicly. The details of the implementation are left to the student, but since we're looking for the right umbrella organisation and place to host the project, we are also recruiting now.

Both of these projects will most likely lean heavily on Fedora for support, since we plan on making heavy use of both of them once they are production ready. Both projects will be under a different organisation though, and you do not need to be a Fedora contributor to participate. The only requirement i have is a couple of years of experience with Linux.

T minus FUDCon: FUDCon Live, all systems ready to go

After a pretty uneventful flight over the Atlantic, along with our EPIC FUDPLane-ness, i've safely arrived in Canadia, that silly place where all the government offices have two names. Immigration was a snap, even if i did it in French. Maybe next time i'll go over to one of those bilingual booths just to see how far i could take it.

After waiting for the Belg, we made our way to the hotel and then the Irish Pub nearby for lots of deep fried food and beer. I also had one of the carrot sticks Paul ordered, just to balance it out. After only two beers, jet lag set in and thanks to the stressed out wireless i decided to just go to sleep. The nice part of jet lag is now i'm awake to make full (ab)use of the internet while everyone else is still asleep.

I took the time to get everything setup for FUDCon Live. I'll be making a quick (very quick) presentation on how to do this, where to go and what to do. Just so that we have all the information in once place, you can figure out what to do by doing two things. Read this blog post or consult the landing page for FUDCon.

To start, each room lines up to an irc channel, #fudcon-room-X where x is a value between 1-8. I've also squatted a few breakout sessions channels, but there's no zodbot there, so we would have to log them individually. If you need a breakout IRC channel, let me know so i can join. I will be logging the entire affair as a backup.

Second, if you are recording a session, check out this page, which explains what you need to do to help record. Secondly, once you record a session, please fill in the nitty gritty details on the wiki. The log can be found here. You need to fill out this page to get credit for transcribing. Credit means getting a drink. And we all like drinks.

At this point, i have all the channels setup with hotkeys, so i can keep an eye on the process. I really can't tell what the schedule is going to look like yet, but if i get a chance, i'll try to transcribe a session during the first block of sessions. This way if you're not totally sure what a good transcription session looks like, you can follow this one.

PS. I'll be wearing my Red Hat, so i should be easy to find if you have questions.

FUDCon Live: Status

A while back i posted a call for volunteers for a new concept for FUDCon, which i called FUDCon Live. Not surprisingly, i didn't get an overwhelming number of raised hands, since i think this is a new concept that not many people get. Instead, i think we should restructure the planning just a bit.

There are a couple elements to this idea. The first is having an organized #fudcon-room-* channel for each physical space we have, complete with a meetingbot instance and any other tools people might want to use. Depending on the kind of session, running gobby and other tools will also go along way to helping things along. I'm assuming the people on the ground can help out here because they know what the rooms are. Setting something up like this is pretty low level work.

The second element is the logger. This is someone in each session who is recording the conversation and taking notes via IRC. He's (or a she, but i think FUDCon is still mostly attended by guys) also taking comments from IRC and repeating them to the group. This requires making sure there are enough volunteers. This also means making sure someone is tracking who the volunteers are and are enforcing enough typing breaks. Having done this before, i can tell you it can be stressful to do this for an entire day. Yes, you're a nerd, yes, you type all day, but you don't type at this pace for long stretches. Finally free drinks are involved, anyone who volunteers gets a beer (or other beverage, or well any other reasonable consumable if you don't drink) from me, as a thank you.

The third element is you. To make this worthwhile, you will need to interact with it. If you're at home, use it to follow that session you really wanted to see. Ask questions. If you're at FUDCon, hang out in channels to follow two sessions at once. Find out if there's a session more interesting than yours. Use the extra information to decide where to be. Finally, provide feedback. Let us know how it worked out.

The last element is the organisation. Since i only got a couple of volunteers so far, i want to do things a bit differently. This should solve a few issues all at once. Let's take a page out of Google's playbook. At the Google Summer of Code Mentor Summit, as part of each presentation, the guy running the session was required to ask for a volunteer to log the session. Let's take this route. For everyone giving a session, before you begin, find a volunteer in the room. There's a good chance that someone in the room already has an emotional investment in the session and will be willing to document things. One of the organizers (the original volunteers) will make sure to monitor the channels and update the wiki after each session. This way we know who's been volunteering.


Apologies in advance

Apparently Adam Williamson thinks my Glögg recipe should be nominated as the new QA drink. When Fedora 13 doesn't work as well as Fedora 12, you all have my apologies. It will have been my fault.


Since Nicu got us started with a meme about mulled wine, i bit the bait and decided to throw in my own recipe. Keep in mind, what Nicu said about coding after having one or two cups of this applies three fold for my recipe. Anyone who knows me knows not to drink my mulled wine unless they aren't planning on driving for the next three days. That's because my favourite technique is based on the Swedish variant of mulled wine known as Glögg. Anyone who knows a little drink called Glühwein, this is definitely not it. Glühwein is for kids in comparison. So without further ado.

I can't show this with the same fancy pictures nicu had, but the recipe is more or less the same. If nicu wants to make a cartoon version of me getting wasted off this stuff, that would be awesome, but if you need the ingredients, just follow his recipe and add the couple of things i throw in. If you don't know what an orange looks like, you'll have to use your imagination.

1 Orange, washed, preferably locally grown or organic so you know it's not covered in pesticides, you need the rind.
Cinnamon sticks
Whole cloves
A couple of table spoons of brown sugar or even molasses to taste.
1 Bottle of whiskey or brandy, Wild Turkey won't cut it, get a bottle that costs more than 5 bucks.
1 Bottle of port, find the nicest port you can afford, go down one notch, and get that one instead.
1 Bottle of an adequate red table wine. Bum wine and Liebefraumilch just won't cut it.

For true glögg, you really need cardamom in the pods. I feel a bit rude calling this drink glögg, but i've never had any cardamom around to try it with. After a few sips, you won't care what it's called. Swedes also like to add sliced almonds and raisins to the drink. I like my drinks with as few things floating in them as possible. If you like bobbing things in your drink, i highly recommend it, because it tastes good.

You start by dumping the contents of the bottle of wine into a big pot, adding the cinnamon sticks, the cloves, and the orange rinds. Put it over a low heat and slowly bring up the temperature. At no point should it ever boil, and if you see bubbles forming, lower the heat a bit. While mulling over the wine, the universe, and the essential meaning of life, enjoy a nice orange. Once the wine is warm, add a bit of the sugar or molasses so it can loosen up in the heat. If you use sugar, the goal is to have it very slowly caramelize.

Then add the port and the brandy or whiskey. Add the rest of the sugar, do a taste test to make sure it's not too sweet. Continue to let it mull for a while over the flames. Make sure the flavor from the spices and orange peel are infused, but don't let the hard alcohol mix in too too much. It's a trick of timing where you know that the spices are infused enough to add the hard stuff. If you let the harder stuff infuse too far, then you won't taste the alcohol.

Finally, when the taste is just right, and half the pot is gone from taste tests, remove it from the flame and serve warm. [Insert cartoon of loupgaroublond completely off his rocker.]


Too many irc channels

I'm going to be dropping a few IRC channels, since i've realized i rarely pay attention to them, and they are distracting during work hours. If you're looking for me, there's always a million and one ways to reach me. Just letting those people know, in case they wonder why tab completion on my name doesn't work anymore.

RPM Database Corruption issues

Today i noticed that i was having issues with Yum and RPM on my work machine. It's running a fresh install of Fedora 12, so it's most likely something just weird and out of the ordinary happened. It probably had to do with yumex hanging and then killing it by hand. Fixing it was simple for me. I realized that the problem was most likely corruption, one google later, i knew which files to delete (and backup first) and what to do to rebuild the RPM database. Woot, everything back to normal.

This is a big fail whale. It has nothing to do with the coding skills of any of the RPM, Yum, or Yumex maintainers, and i'm pretty sure between them and the PackageKit guys, they've gotten more than a life's share of flames and trolls already. This is a failure, because if i were the average user, say my dad, after smacking the keyboard once or twice to get yumex to continue working, i would have restarted the machine. Then i would be just as stuck.

From where i see it, telling someone to try to rebuild their RPM database on the command line is error prone and coudl just make things worse. Fortunately, the process itself is pretty simple. You backup some files, delete them, and run rpm --rebuilddb. The entire process should just work, so long there aren't bigger failures. From the perspective as a sysadmin, i know that if the RPM database is broken on a server, then chances are other bits, like package headers could be missing or corrupted too. Running such an operation as a knee-jerk reaction would be wrong. On a desktop though, that chance is there, but there's also a better chance that the database got corrupted due to something such as a power outage, or a well placed boot up the computer's sphincter. Such a process, including said backup, would be relatively non destructive if presented in a 'recovery toolkit' of sorts for the end user. Especially, perhaps, if there was a way to verify that the package headers were intact from the last known good configuration.

So in all seriousness, when these things go wrong, how can we offer an option to the user to try and recover the system?

Can haz Fedoar 12?

Fedora 12 is out, and i'm already installing it. Once again, another release goes by and i'm wishing i could have done alot more to help out. There's alot of things i certainly could have been doing if only i made more time for it. Well, there's always Fedora 13 to focus on.

Since i always tell people that Fedora should be just as good as Debian when doing live upgrades, i think it's time to give it a test. At the moment, my system's installing the 2026 packages needed to upgrade my system. All that XZ goodness is definitely coming in handy. Even if Dutch internet is notoriously fast. At work i've contributed some serious bandwidth to seeding torrents. Unfortunately, my computer only has a 100mbit connection to the network so i cannot even try to saturate the network without some serious forethought. Still, if you're in the Netherlands, be sure to try using a torrent, because there's a good chance you'll get a damn fast connection from Utrecht. I just hope my computer isn't a smoking pile of rubble from all that torrenting when i go back to work on Thursday.

In a completely unrelated note, Jan Wildeboer wins the Silly Dutch Word of the Day Award. Rijksoctrooiwet. It's a national legal body.

Get to know a Fedora Contributor

Name: Yaakov M. Nemoy

IRC Name: loupgaroublond

Channels: #fedora-ambassadors #fedora-haskell #fedora-nl #fedora-unity #fedora-devel #fedora-admin #fedora-science #fedora-bacon #fedora-social #smolt #haskell #xmonad #wplug #unixnl on freenode, #dyne #freej-devel on dyne, #eth0 on eth0, #piratenpartij on piratpartiet

About Me: Fedora Ambassador, Packager, Hang Arounder and No Good Doer.

Google Summer Of Code Mentor Summit

So all i can say is that the Mentor Summit is pure awesome. A quick blog post using this qwerty keyboard won't cover it. (Damn you qwerty). There'll be a full write up in the future. Here are some impressions.

After all the issues we had with Fedora being an umbrella organisation for other projects, Toshio and i held a session about being such an org. Most notably was having KDE, ASF, and OSGEO present to share their experiences. They have had similar issues on a much larger scale.

I was surprised to see Mario Behling from LXDE here. We had a few good chats about doing deployments of LXDE on the XO 1.0 in Afghanistan and Vietnam, and using Freifunk to deliver internet. Hosting a school server in the "cloud" anyone?

Its nice and warm here, cant wait to go home to the Netherlands.

I'll write more when i have access to a real keyboard.

Doing Denyhosts a bit better

At my $dayjob we have been using denyhosts to help protect our systems from potential bad guys and botnets trying to break into our systems. Apparently the latest craze has been trying to get rooted unix systems incorporated into botnets using some combination of iframes, nginx, and the usual array of normal hacking methods. One attack vector is to bruteforce ssh, which isn't new, but it's been an increasing threat. As proof of the increasing sophistication of attackers, yesterday i noticed that we had an incoming attack using common Dutch firstnames. The goal, obviously is to find a legitimate user with a weak password.

There are a few ways to protect yourself against this vector, some easier than others. Using a mix will help you further as well. The usual logic, such as making the usernames not obvious, enforcing strong password policies and all the usual niceties that manage to start flamewars so easily. You can also make sure to disable remote login as root with password authentication or block root completely unless you're already logged in. One step further is to enforce sudo only access.

One step we also take is using denyhosts to blacklist the IP addresses that are clearly showing behavior matching that of a hacker. Examples of this behavior is logging in with a non existant username, logging in with an obviously bad username such as 'www-data' or 'oracle', logging in as more than one or two users, too many bad password attempts, logging as root and so on. Denyhosts handles the heuristics for us nicely but we wanted to take this a step further. The admins before me put together a nice script where one server could convert the output from denyhosts, pass it along to our puppet configuration which would in turn deploy a blacklist across the entire network. This would in turn do two things, it would protect servers who have not yet been touched by a certain attacker, and denyhosts running on each machine would provide an initial level of blockage.

In this process, we discovered a few problems with how denyhosts works in terms of network performance. One problem we had is that processing the output from denyhosts can be pretty heavy on a system and can involved a huge number of DNS queries. When i tried to tweak script to block more things, it overloaded the system, took out our LDAP server, users couldn't authenticate, and denyhosts started systematically blocking our own network. While certain critical paths were whitelisted, we still ended up with a screwed up network for a few hours, and had one hell of a morning. One local best practice we have now is to run processes like these on a seperate VM dedicated to the task. The further we can offload the processing from critical network space, the lest likely we'll overload the network. The VMs are also running on a hypervisor that's dedicated to running our failover services that are only activated when the primary network goes down.

The second problem we had is that denyhosts will put hostnames as well as IP addresses in /etc/hosts.deny. We realized that network traffic was just a bit laggier than normal once we had the setup running for a bit. Ultimately doing both a firewall level blacklist and then running a nearly identical blacklist in /etc/hosts.deny will reduce traffic more than is necessary. Instead, i cleaned up the /etc/hosts.deny from what denyhosts did, and in the future we'll have to look at another low performance hitting method of having more computers protected faster.

One idea i have for the future is to make the system more event based rather than cron job based. When denyhosts decides it needs to block a hostname or server, it calls something that sends a message across the network to the server that will do all the processing, sanitizing, checking to make sure the host is not on a whitelist, and so on, so that computers can respond right away, but still protect the whole network. Realistically, what we should be doing is just blacklisting the entire intarwebz except for our external webservers, and having our users work from a VPN. But that's a story for another day. All in all it was a fun exercise in how to think practically about the actual load we're deploying to our servers before we do it.

Emotions Rising

Dear Lazyweb,

Could someone please explain why people seem to get more emotional about what software handles their sound than they do about which distro they use or even which DE they use?

Thanks in advance.

FUDCon Live: Call for volunteers

I've typed this paragraph three or four times tonight in different versions, so i'll just pass you all a link that summarizes it better than i ever could, even if i did. The basic idea is that i want to make it easier to get people not present at FUDCon involved. I want to see better live documentation of the upcoming FUDCon in Toronto. As an extra bonus, if this can be pulled off correctly, people can sit in more than one session at a time. It will make multitaskers happy, and make it easier to decide if you're really sitting in the room you want to be sitting in. I'm looking for a few good men or women to volunteer to help out.

I'm looking to document the entire event via IRC like we did at FAD EMEA. Each room will get a separate IRC channel, and if we can get it coordinated, there'll be a zodbot in each one to take notes. This will let people take advantage of zodbot features in person, provide more community at each session, make the entire process more accessible, and who knows what other creative ideas could come out of it.

In short, read this: https://fedoraproject.org/wiki/FUDCon:Toronto_2009#Documentation

Please sign up to volunteer! We need quite a few people to guarantee complete coverage.

(If you have a better idea how to do this, comments and improvements are always welcome :-) )

Moving Day

Yesterday i took the day off from work in order to finish moving to a new flat across town. It's with great sadness that i won't be able to tell people i live in the Nude anymore. If i ever feel like being in the Nude though, it's not far away at all. It's almost literally across the street even.

I can honestly say i came out of the Nude on bike though.

Credits to Björn Lammers who took all the photos.

You can see more on Flickr and Facebook

I Had a Rant Brewing

I had a pretty nasty headache all day, which led to a huge nasty ugly rant brewing. There's been alot going on that's just been bugging me badly about the community and communities which was just ending in some really bad nastiness. There's also been alot of certain kinds of whining in various channels that has been getting on my nerves. All in all, it's a good thing i was busy at work, and i never got the chance to sit and write it down, because the last thing the Fedora Planet needs is more fire and brimstone. A few minutes ago, Tatica announced in #fedora-ambassadors that she's reconsidered and will start posting her photoblog on the Fedora Planet again. Suddenly, the fire and brimstone seemed to melt away.

Lately there have been alot of issues with a few individuals in the greater community making sexist remarks with an insane back and forth about what is right or not in a community. I'll let the journalists and pundits slag that battle out, because on one is paying me enough for my opinions (anymore). It reaches a point where we cross a line in the community, though, and that's when we don't just make of colour comments, but we start excluding community members. This is a point where we're not discussing what's right or not, but we're actively hurting people.

Sometimes you have to have thick skin to trudge through all the muck there is in the extended community. But it's not all that easy for everyone. I'm not going to get into the details about an issue i don't know all the details about. What i do know is this: some persons' responses to one of our community members extracurricular activities convinced her to stop showing us her art. In my point of view, everything everyone does inside and outside of Fedora is their art. Even if you get paid for it. Your life revolves around it some way, and it's a massive multi participant creative project. But it's also the sort project that can include a bewilderingly wide array of people. When i say this, i don't mean every person who likes to stay up until ungodly hours of the morning, puts up black curtains to sleep during the day, and wears socks with sandals, yet living in different time zones. When i say wide, i mean from all walks of lifes, in all professions, with all sorts of hobbies. That's what makes up our community. Stopping people from displaying their art is counter-productive to what we fundamentally do. Think about that the next time, before you are about to push send on that flame.

It gets worse though. I can't for the life of me remember when i was reading this, but it was at least 4 or 5 years ago, when i was reading through the Linux HOWTOs for fun. There was one document on encouraging more women into the community. I don't really want to single out women with these comments, because i think there's a lesson for working with all kinds of people here, but here it goes. The point was that these new people we want joining our community aren't just going to chug ramen noodles every night. They are going to try new foods, and talk about it, with each other, and in public. Working with them means accepting and appreciating that these conversations, be it off topic, are going to occur in the community. The correct approach is to encourage people to tell you what they are doing in life. Who knows, it might even lead you to trying new things once or twice too.

In my mind, though, there isn't a good history here at all. When i first joined the community, i remember there was alot of debate about multiple languages on the Fedora Planet. I know that people were not made to feel welcome just because they blogged in a different language. While there were some good suggestions on how to filter what some people saw as noise, the whole conversation really seemed just as counter-productive. It seemed to me that the planet the represented our community as a whole. This is it, and people were expressing their art. Making rules about how to do this wouldn't help. It seems like everytime we have an identity crisis though, i feel like we're missing that crucial detail.

(I would think that the people involved in this latest incident are not the same as in other debates, but again, i don't know the details.)

That notwithstanding, i still have enough material for a rant of a slightly different nature, but at least the dark mood has calmed down quite a bit since there was some marginal amount of daylight out. At this point i'm just glad to see that we have a community that encourages our own to keep on doing what they do best. I'm also really happy to see Tatica post her photoblog to the planet too. It means alot when the community is free to talk about other things besides just Fedora. It's part of what makes it art.

Fedora at the Dutch HUG

Unfortunately for myself, i've managed to land another speaking engagement, which means in between moving this weekend, i have to sit down and prepare a presentation. This coming Monday, the 12 of October, i'll be speaking at the Dutch HUG to talk about Fedora a bit. I will spend a bit of time discussing how to use Haskell in Fedora, what the status of things are, and how to build your own packages for Fedora. I'll explain how to use cabal2spec, a brief explanation of spec files, and a bit about the packaging process in Fedora itself. I will also cover what you'll need to do to run Haskell programs on enterprise distributions that are also RPM based. You won't need much Fedora experience to understand the presentation, though i'm assuming that you are already a Haskell programmer.

The presentation will be given at the monthly Dutch HUG meeting, which will be held at the Utrecht University Library in the Uithof. The presentations will start around 19.00 (7.00 PM for the Americans).

On Concerns about a Fork

People have asked me about Bluetile because it essentially ships with its own branch of XMonad. The concern, of course, is that we don't want to ship a fork that's so closely aligned without good reason. The less code we need to ship and the fewer packages, the less room there is for error, less load on our servers, and less for the user to worry about. I asked myself the same thing, but in the chance that bluetile could turn out to be its own thing entirely, i originally started the package review as a kind of wait and see what could happen approach.

Even so, i had some of my own concerns. One of the patches Jan, the Bluetile developer, ships helps improve Gnome compatibility. Without it, XMonad is very hard to configure with Gnome. I repeated these concerns to him, but Jan's reaction is that he was intially unsure that all his patches would be accepted by upstream. I've noticed over the past couple of days on the XMonad mailing list, Jan has been pushing his patches one by one to upstream. So far, they are being accepted one by one, sometimes as is, sometimes with comments. Although i don't know exactly how far Jan has to go, it looks he's building a pretty good relationship with upstream, and i feel pretty confident the bluetile bits will all eventually find their way upstream.

Consider it another open source success story.

This might have been said before but...

Yo dawg, i heard you like operating systems, so i installed emacs, so you can operate your system while you operate your system.

Git doesn't like absolute paths

Note to self, while writing a script to do something on top of git, do not use absolute paths when passing things to git. Git doesn't like them. Especially when you're replacing some crusty insecure SVN code.

Fedora True Blue

For FAD EMEA i brought a Fedora stickered blue lockbox with a few important Fedora EMEA things in it in case we needed them. On my way back through Basel airport, the security curtain is set up so you can actually see the security personnel scanning your bags in the scanner as they go past. I have to give the designer of the airport kudos for the transparency into the process. As i was putting things in my pockets, i saw my bag go past. For what ever reason, the false colouring added on the X ray gave the metal in the lockbox a nice blue colour pretty close to the actual colour of the box.

I won't write too much else about FAD EMEA, personally. According to ZodBot i already wrote a grand total of 645 lines in #fedora-fad, not counting the meeting we had with Pamela at Red Hat about a number of trademark issues. At the end of the day, i felt just a touch burnt out, trying to paraphrase everyone's thoughts into slightly more condense pieces and also trying to participate in the conversations. Please keep in mind, the transcript has the same value as an impression. In some cases i echoed the words people used, but in some cases i summarized paragraphs into sentences. THIS IS NOT AN EXACT TRANSCRIPT. If you're interested in reading up about the FAD, the minutes are here, and the full log was here.

The goal i had in mind was to act as a conduit for anyone who would be awake so early and would have liked to participate. I'm curious how we can do this in the future for FudCon, where we have volunteers monitoring IRC to take comments and questions from non present attendees, while they are listening or watching any streams we make available. If no stream is available, the volunteer could even transcribe and summarize like i did. It might also get interesting if present attendees use these IRC channels to be in more than one session at a time :P.

Fad EMEA Rheinfelden: Friday

Yesterday I arrived in scenic Basel for the FAD EMEA and i was pretty impressed with the classy muted feel of the Basel airport. It was a pretty strong contrast from Schiphol, which is just as nice, but busy and noisy most of the time. For my second culture shock, i got interrogated by the French border control in German, and confused them thoroughly when they decided to rummage through my pockets and backpack. For better or worse, they let me through in the end. From there, Gerold picked me up on the French side, we crossed over into Germany to take care of some Fedora EMEA business at the bank, and finally stopped off at his place so i could check my email after the trip and say hello to Max, Jörg and Fabian who were already hard at work at Gerold's dining room table. Just to make sure i could be in four countries in one day, Gerold and I drove over to the Swiss border, walked across the Rhein into Switzerland so we could pick up Pierros from the train station and i could buy some chocolate. I love being able to pay in plastic, because for the few swiss francs i needed to by the chocolate, i didn't have to convert a metric tonne of currency just to do so.

When we came back, Gerold announced that he had to walk the dog, so we decided to join him so we can start discussing our plans for the following day. This was a great opportunity, because the entire area is gorgeous. Of course Gerold decided to show us his sadistic streak and sent us on a hike climbing up and down said beautiful mountainous landscape. In then this was a good thing, because we really had an appetite for dinner afterwards. For dinner, Gerold's very lovely wife put together a very traditional autumn dish for us. We had Zwiebelkuchen with Federweißer, which is a very potent way of getting you drunk if you don't watch out. The food was excellent, and for that i was grateful, because i was in a much better mood to handle the unfortunate conference we had to have with Red Hat legal. But i'll let other people discuss that.

1e Nerdavond in Wageningen

Last night we held the first Nerdavond in Wageningen at the Dikke Draak.

The setup was pretty simple. We sat around the table with wifi, power, and lots of greasy junk food in the middle. You might note the halo over the fries. This may be a sign from the $deities that the food is sacrosanct, but i tell you it's probably just the light reflecting off the grease. The Dutch don't skimp when it comes to greasy foods, despite century old stereotypes about puritan behaviour.

I spent most of the time talking with Edwin who runs his own company Syn-3. He's been working on tools similar to devshell (which he calls dev's hell) to do the custom Red Hat and Debian builds they do for their customers. We went over how both our workflows go and comparing notes. It was definitely enlightening to see how devshell could be simplified to be more reliable.

Bluetile is packaged

About a year and a half ago i discovered xmonad and i was instantly converted to the tiling manager way of life. It was the perfect excuse to start doing something practical with Haskell, which i had been wanting to experiment with for a couple of years. Then it was also a perfect excuse to get more involved with packaging, which sent me on a long twisty adventure. In order to give back to the community, i became more involved with Haskell packaging in order to make the experience much better in Fedora in general, and since then Haskell itself has come a long way too.

Tiling Window Management has many practical benefits to it, and can be useful even to 'non technically savy' users. What's important when starting out with a new WM is having a good way to explore it that fits your paradigm of exploration. At the time, xmonad fit mine perfectly; i needed better window management via the keyboard, and my then most recent configurations of compiz was heavily keyboard biased. For other people though, especially the aforementioned group, the initial mode of exploration is with the mouse cursor. This is why we have graphical file managers, (especially dolphin, seth), desktop environments full of widgets and glowey shiney things, and rich web pages full of javascript. As the user learns to be more productive, there is ultimately some kind of shift to the keyboard, especially when the mouse clicking exposes this clearly.

Recently, as part of a research project Jan Vornberger has put together a new tiling window manager on top of xmonad, called bluetile. Bluetile aims to close the gap between highly technical oriented tiling WMs and the everyday user who can benefit from such a design but is reliant on the mouse. His project looks to integrate a tiling WM into Gnome, provide both mouse and keyboard access for every feature, communicate clearly to the user what is going on, and provide a gentle introduction to the concept of tiling. As a new generation of users become more sophisticated, i'm sure either bluetile will grow with them, or they will eventually migrate to xmonad proper. Bluetile also ships with a bunch of patches, many of which will hopefully find their way upstream, so there will definitely be some good synergy between the two communities. I'm really looking forward to it.

I had a chance to play with bluetile in my free time, and i was really impressed at the quality and the ease of use already. It's the sort of program i would not hesitate to put on my family's computer to see what happens. I've put together some packages for bluetile, which are now sitting in the review queue. If you're morbidly curious, or just looking for some relatively easy packages to review, have a look here:




In case anyone missed it....

In my previous post, i was trolling. That is all.

Fedora Core?

From now on, any time i see someone complaining about Fedora Core, especially on IRC, i could do so well as to remind them that Fedora Core is very much End Of Life and they could do so well as to upgrade to Fedora. There hasn't been a release since version 6.

Wageningen Nerdavond is a go

Last night i had a quick chat with the staff at the Herberg de Dikke Draak (The lodge of the fat dragon), and we agreed that Thursday night is definitely our Nerd night at the Draak. Tonight there won't be any nerding, we'll start next week, though i'll there tonight anyways to meet some people.

The first session will be Thursday, September the 17th, (2009 if you can't figure that out) at Hoogstraat 9, Wageningen. There's be internet, electricity and beer, the three most essential things necessary. If anyone is interested in doing some kind of set project, we can always discuss it then.

In the future, this should be a weekly event, so if you can't make it next week, there'll definitely be another chance to come.

Hack / Nerd Avond in Wageningen

I'm thinking of trying to put together a regular hack meet in Wageningen. The problem is that there isn't quite a unified hack culture in Wageningen yet, though there are plenty of individuals who are no stranger to spending hours behind the screen. Even the beloved Draak, the Rock / Metal bar in town is partly owned by a programmer. There have also been people talking about setting up a hackerspace in town, but then again, there's no sense in waiting on that to build up a community.

Currently the plans stand at doing a weekly meetup at the Draak thursdays and nerding. I'm aiming to find about ten people who are interested so that we have about 5 people there each week. Since four of the possible people already use Fedora, there'll definitely be alot of that. There will of course be electricity and internet, although because smoking is allowed there, don't bring your super sensitive electronics projects. I'll know more by the end of the week.

Haskell Platform

Recently Bryan posted four reviews to get the Haskell Platform supported in Fedora, and i'm glad to say that i just finished the last one. This means that for Fedora 12, we'll be able to support the Haskell Platform in both 11 and 12. I'm left with a couple of questions though.

The Haskell Platform specifies a very specific version set of packages, which use a 4 digit version numbering scheme. Within reason, i presume we can provide certain higher versions of these packages that are ABI compatible, but realistically, it's going to be hard to provide the latest and greatest if we have to stick to the platform. We also don't have a mechanism for delivering more than one version of the same Haskell package in fedora (yet). So the question is, how do we manage to give the user the best of both worlds?

My two cents is that we start linking a particular release of the Haskell Platform with a particular release of Fedora. The logic being is that that version of Fedora was the state of the art at the time of the release of said platform. There's also the package cabal-install.

Another option is to provide out of line repositories that automatically have the latest and greatest, but then we don't have the scripts to do that yet. Something to think about for the future.

Reprovisioning a VM

I've just discovered that if you reprovision a VM with koan, like baremetal, you do not need to rebuild up the VM in libvirt and xen. This should save a couple of steps in the future.

For reference, i'm talking about:

koan -r && reboot

on a running machine.

Exit Interview for GSoC

A few days ago i sent Satya an exit interview for the human interest angle of things, that she can voluntarily answer publicly or privately. Since this interview, namely the questions, might be useful to someone else, i want to post them here:

  • What did you learn this summer? Tell me both about technology and
    community, and about things you learnt because of GSoC and otherwise.

  • What motivated you to keep going for three months and not just stop
    after the first week?

  • What kinds of frustrations and challenges did you come across this
    summer? It doesn't have to be GSoC related either.

  • How did you overcome these challenges?

  • What else did you do during your free time in the summer?

  • What motivated you to do this in the beginning in the summer? What
    need did you feel like you were filling?

  • Is this still important? Or perhaps you have other reasons for keeping up?

  • Given the chance, would you do this project again?

  • Given the chance, would you do another GSoC project again?

  • Did you make any good relationships with in the various FOSS or hacker

  • What are your future plans in life?

Facebook Casualties

Maybe i'm turning into an old man, but i think there are probably better ways to communicate than Facebook.

Recently the ACLU has released a facebook app that demonstrates how much a single app can find out about your friends. If you're curious what i'm getting cranky about, and you use facebook, i suggest you try it out. (Either that really is the ACLU or a very clever social engineer impersonating the ACLU, but the point is the same.)

Since Facebook allows any app to see anything about anyone's friends, i've decided this is a severe privacy risk because i cannot control which applications i trust with my personal details. While Facebook is a great platform with alot of potential, Facebook's policies are not something i can live with. Rather than being a luddite and deleting my Facebook account, i've decided to start dropping people who use sensless applications without a reasonable privacy policy. These people i'm calling casualties.

I'm debating if i should start putting up a Wall of Shame, or if that would be an equal invasion of privacy. I guess for now i'll say i've already dropped a Fedora contributor. This is gonna get tricky once i start dropping family members.

FreeJ Release Party

Last night i attended the FreeJ 1.0 release party at the Nederland Instituut voor Media Kunst, or in english, the Dutch Institute for Media Arts. The NIMK is an art gallery / studio / institute for multimedia arts and it really focuses on some avant garde work. As a bonus, most of the exhibits there run on free software, and it's very rare they host an exhibit using windows. Since one of the core developers works there, it make perfect sense to hold the release party there. Congratulations to all the developers for finally making it to 1.0.

As part of the release party, Jaromil surprised us with a panel on the future of media codecs, which i was invited to participate in. The history of FreeJ is heavily involved in activism and the arts, and the developers have been heavily invested in promoting Theora and other Free as in Freedom codecs. It's very hard to broadcast a controversial message when your message is 'jailed' in a proprietary codec that relies on patent encumbered software, not only to distribute it, but to receive and view it as well. While the patents on MP3 and MPEG are eventually going to expire, there will always be new codecs with new patents, or worse yet, other encumbrances that will make it an uphill battle.

On the panel sat Jaromil, Bastiaan "buZz", Chris "MrGoil", Pablo "caedes" and myself. Jaro opened up the conversation asking us about the future of codecs in general and where we're going. Obviously, there were some setbacks a few months ago with the lack of video standardization in the HTML 5 standard, and how there were conflicting needs for the (then) better but patent encumbered H.264 codec and Theora. We discussed the need for making sure the platform itself is open so the user can install any code wanted, even if free codecs aren't provided out of the box.

After explaining half the issues to a partly non technical audience, we transitioned to talking a bit about Pablo's work on Crystal Space. His latest projects is an open platform for people working on any visual media, including both 2d film and 3d objects. In short imagine Git for content that's not just one dimensional streams of text. Many graphics shops have issues where once one person checks out a model, it's a single binary blob that no one else can edit. These tools enable the content editors to work on different aspects of the same model simultaneously and intelligently handle merging. We got a bit 'psychedelic' explaining how we are going from a single one dimensional model to a 4 dimensional model. (That word was picked by one of the audience members ^_^). I think switching from a dubbel to a trippel help explained the paradigm shift too.

While it wasn't part of the panel, i also want to mention Tatiana's work "acracia". She has been working on a distributed platform for icecast and content browsing under the project GISS, Global Independent Streaming Support. The project works two fold. The first part is a distributed network for streaming content, where people can pool together private stream servers, and share each other's load when one particular stream suffers the slashdot effect. This significantly lowers the barrier to streaming any online media to a project with little resources. The second part is a frontend like youtube that can also be run on a local server and is far more customizable. Not including the workload involved in transcribing submissions, they are running the entire thing inside a single VM at the moment, so for a website hosting alot of video, it's pretty resource friendly.

All in all, it was a pretty enlightening evening.

The end of GSoC 2009

Today i filled out my evaluation for Satya for the Google Summer of Code. I'm not sure if i'm allowed to discuss the grade yet, though i think everyone involved is smart enough to guess what it is. I just want to share some comments i put at the end of the form about what Satya has done:

I think the most important
qualifications of Satya's work are the
end results. The Fedora Project now has
a decent Docbook editor. The upstream
Beacon project has been motivated into
becoming a better upstream (read: a
better website) and the community there
has been revitalized. Fedora and Gentoo
now share a common project, which fits
in with Fedora's mission of working with
both upstream and the community at
large. Satya can definitely take credit
for being the catalyst for these
changes. Therefore, i give her a passing

If you're familiar with Red Hat culture, you'll understand that "catalyst" is a great Buzzword Bingo word there. I think Satya will fit in quite nicely there.

Some more HAR coverage

I found a great blog post that describes nicely what HAR is like. Check it out.

Live as if you are already in the future at hacker camp

Saves me a bit of blogging trouble :)

Nerds fight like no other

I remember seeing in the Dutch press an article about HAR commented that computer hackers fight the dirtiest. Well, a little friendly joking around can't hurt. One of the great things about hacker cons is it's not really important which distro you use, i even saw people running Windows 7 on the open network. Even so, there's always going to be a bit of goofing off:

Officially, the Ubuntu village was slightly better represented than Fedora, but i think we had alot of great word of mouth advertising. The people who needed Fedora CDs knew exactly where to come to.

You can definitely say we had better uptime and presence at the tent.

It's nice to know that some people know what people are really looking for ;).

Wanted: Web Designer

Dear Lazyweb,

I've decided that i need a Hackers on a Bike website and logo for the future. I was thinking of starting off with a simple wordpress blog, but there's obviously alot of potential for what can be done with such a site, and no matter what happens, there's a definite need for some good design. I also need to come up with a logo, and since programming logo is the extent of my graphics skills, all help is appreciated. Anyone interested?

Hacking at Random: The Aftermath

I think i'm getting old. I decided it would be a good idea to leave a day early to get some extra sleep, and be well rested when i got to work today. Hearing threats about the internet and power being cut off helped motivate things as well.

Hacking at Random is definitely an experience. You never quite feel the same person after these hack camps as you did before you left home, and it's always for the best. If you feel like you missed out, and want to spend a couple of weekends catching up on the lectures, i believe the lectures and the radio feeds are being archived, and a bit of googling will help. A good hack camp isn't just about lectures though. It's about watching someone's FTP server going down, hopping on your bike to tell him in person, and getting side tracked along the way. By the time you've made it there, you're missing your shirt and shoes, and you're covered in paint and dyes. Sure this happens at any other festival, but not because someone's FTP server crashed.

I can't exactly say i was that productive at this event, but i wasn't planning on it. I spent most of my time off the computer, because there was so much going on. Overall, it was a great vacation. Now i'm looking forward to eth-0 and the CCC.

Internation House of Pancakes

We just had an international pancake cookoff at the Fedora / CentOS / Dyne / FreeJ village, and i'm really starting to consider calling the village the International House of Pancakes. First i started off with proper American style pancakes, which are more like a fried pastry, using a very traditional farmhouse recipe. Then we followed up with Dutch style pannekoeken which have the bacon and cheese cooked in. There were also the German kind which skip the bacon and cheese and go for powdered sugar instead, like a crepe. Supposedly there are going to be Canadian and Italian style coming up, but i think everyone is getting pretty full already. Thanks to the Canadian crew who's come to hang out with us, we also have ourselves a nice can of Canadian Maple Syrup. I use capital letters because it's really that great and awesome.


Didi just woke up and said: "I don't drink alcohol".

Hacking at Random: Day 1 Ochtend

So after passing out fairly early last night, i woke up far to early, and now i'm taking advantage of the quietness to get my bearings organized. Unlike most conferences, this one doesn't start presentations until sometime in the afternoon. They know their crowd here.

To give you all an idea of what's going on, let me give you an overview. Hacking at Random is the once every four year Dutch hacking camping conference and lan party. This year, there is a stronger focus towards technology and society than there has been in the past, so much so that the MPAA and Brein have shown up.

As for Fedora, we've put together a conglomerated village between various groups and individuals Alex C. and i know, made up mostly of the people we want to sit around and drink beer with. On the Fedora and CentOS side, we have Andreas Thienemann, Didi and Chris Meyer, and on the other side we have a mix of all sorts of visual artists and DJs from FreeJ/Dynebolic and a group of other people Alex knows from all over. We're also situated right across from the lake and right across from the CCC dome. We also have a few spaces staked out for a couple more people who are coming, including Dag Wieers. True to form, when Jaromil arrived, he managed to squat a tent, which someone set up, but left empty. Being the good citizen that he is, he made sure that the tent didn't stay open for junkies to come in and destroy. Now there's an active community revolving around this tent. (House squatting is legal in the Netherlands.)

We had planned to put together something marketable as a tent, but unfortunately, the Fedora banners did not arrive in time for us to use. I may try to convince someone to drive me home on Friday to check to see if they might be there by then, but until then, we are sitting relatively anonymous. Despite that, we already have a reputation as "Fedora and CentOS" here, and with these sorts of things, word of mouth marketing can be very valuable. We're still trying to get all of our things together in the tent, and at the moment, Alex, Buzz, and Zmatt are setting up lighting in the tent, so we can put on a nice light show later. I really want to publically thank Alex C and give my kudos to him. He's put quite a bit of his time in organizing this tent, and it's come out quite nicely.

I think my next task is to go around and try to market our BarCamp as much as possible. Compared to the rest of the event, our setup is quite small, but we're looking to hold a few media workshops, hackfests, and demos / presentations, and especially if you're doing it on top of a Fedora or Fedora based system. (Or even a derivative of a Fedora derivative, like Jaro is using.) Since BarCamps are the preferred format by Fedora for things, i will be giving the BarCamp presentation to the birds, and then people will go ahead and do their thing. If you're on the terrain, you should definitely come check it out on Saturday.

Hackers on a Bike: Done

So i'm alive at the Hacking at Random terrain. My GPS gave me a grand sum of 58km. Now i'm sitting in my tent about ready to go to sleep. I'll post more as events unfold.

EDIT: I should add that i'm right across from the CCC dome. Sleeping is going to be a challenge.

Extra HAR ticket available

It seems that Bert has come down with the Taco Hoest, and now i have an extra ticket for Hacking at Random available. If you are a Fedora Ambassador and would like to go to Hacking at Random last minute, i can arrange it for free. If you are just looking for a ticket, i can sell it to you for the original discount price of 150 euros. If you're in some kind of financial straits, we can work out a better deal as well, as the ticket is already paid for.

If you're up for it, i also have some space in my tent for you, and as i've already gotten the flu that's going around, you stand very little chance to get infected from me. Also appreciated is if you can come to Wageningen Tuesday night to help out with Hackers on a Bike, though this isn't required.

So let me know via the usual methods, but do it quick, HAR starts this Thursday.

Off to Arnhem

Because Jeroen was relocating his servers today, i got stuck with a two hour blocker at work due to stale DNS entries in the local server. Instead of doing nothing, i decided to go home to fix my bike to get ready for Hackers on a Bike. I was planning on finishing up at home later in the evening.

Of course, i love sudden changes in plans. On my way home, Alex C. sent me a message about going to Arnhem to pick up some saddle bags with him, also for HoaB. So now i'm off on a bike trip to Arnhem and back tonight. This should be fun.

Infra on a stick

No sorry, that's not infrared but infrastructure. At work, i've been looking at switching our infrastructure over from our current puppet setup to a combined cobbler + puppet setup on top of puppetmanaged.org. The idea is to get our servers provisioned as quickly as possible with the right kernels, and just enough information to hook up to the network so we can remote connect to it. From there, everything can be managed via puppet, even puppet.

In order to get a feel for how this might work, i've been working on bootstrapping this from scratch. When you manage puppet via puppet, you need a base config to start from, and i've been trying to figure out the most minimal puppet config i can use to start up another puppet server. This got me thinking about a potential puppetmanaged.org live spin. This could be a CD or USB stick with either a barebones config, or respun for your local organisation with a git checkout of your internal configuration. There would be a running DHCP, DNS, Cobbler, Puppet and Func server on it. (Yeah, i know Func doesn't call it a server.) I'm assuming these are the basics you need to get your network up and running. The spin would also have a couple of scripts, where you can point it to up to five different servers, baremetal or virtual, get them up and running, deploy your local config if needed, and then via func, flip a switch so that they look at each other for updates, rather than at the computer running live.

I'm hoping i can get a good basic puppet bootstrap up and running before i run off to HAR.

Why Setuptools?

I've been having alot of conversations with Jeroen (kanarip) lately about using setuptools instead of autotools for Python programs. He's not convinced, and to be honest, some of our projects in Fedora won't trannslate easily from an autotools setup to a setuptools setup. There's always room to improve, though it would be nice if autotools could automatically generate egg.info metadata and provide a convenient setup.py (or even a pavement.py).

Let me point out though why you might want to consider using setuptools instead of doing it wrong.

Part of the PEP 8 and PEP 328 is that absolute imports are used as often as possible. The idea is that you specify exactly which module needs to be imported to make the code work. Even if the code is relocated, it still works. It also means that the system can arrange the files any way it wants, so long the Python interpreter sees the same structure for the modules. This lets distro developers and operating system designers put Python modules wherever they feel necessary, as well as letting tools like virtualenv override the OS defaults on a per user or per application basis.

However, if you use an 'alternative' directory structure in your project, you might find yourself running into trouble. Say you have a module you're building called 'foo'. In your source directory, you have some directory /src/foo/some_code.py . There's also some script /run_foo.py at the top level of the source tree. If there is a line in run_foo.py that calls 'from foo import some_code', Python will raise an exception that the module foo cannot be found.

One common, although very wrong and messy solution is to catch said ImportError. In the corresponding catch block, there is alot of code to check to see where the code is being run. Then it digs into the internals of the module import system in Python so that it pretends it can really see the module foo and all its submodules. This is a rather unfortunate way of writing code, because it really limits what you can do in the source tree. For every script that you have, you may have to copy and paste this code. Furthermore, if you change the layout in the source tree, you may break all your scripts and have to change them manually. Finally, you have to question the sanity of putting file system specific code in a program. There are clear places where such code makes sense, but tinkering with the filesystem and path environment is not one of them.

Luckily, setuptools can do all this work for you. It can translate any on disk file system layout, such as /src/foo/some_code.py to foo.some_code for you. It can also direct installation to work properly. It can even modify your Python path environment so you can work directly out of your source tree. Any changes you make will show up automatically. Finally, we can isolate all the code into one place. The entire mapping is just a simple dictionary in one file, which is analogous to a configure.ac file.

I may post something later about where setuptools fails, and how we might be able to work around it.

Fedora == Debian ?

Jeroen just told me that Fedora's Everything spin fits on 33 CDs (for the 64 bit version), which is just about as many CDs as Debian takes up. I guess we're the new debian.

I want a Fedora Everything on floppy. My work machine, despite having entirely new hardware inside right down to a complete lack of PATA controllers, has a floppy drive. I want to relive the experience of installing Debian via floppy, but this time in Fedora. For old times sake. I want a pony.

When is Presto not worth it?

Living in the Netherlands means that you're one of the fraction of 1% of the people on this planet who have access to very high bandwidth internet connections. Working for a University means that you get even more access to said high bandwidth. Luckily, i don't need tools like Presto to update my system.

I went to update my system, and noticed something interesting. Yum, while rebuilding the rpms out of delta rpms, gives a bandwidth meter on how fast the operation is going, and as it turns out, yum is slower than just pulling random packages from the internet. In some ways, running Presto actually slows down updates when a fast connection to the mirror is available. It stands to reason that in any network running a local mirror, Presto is probably not needed either.

So do i keep Presto enabled? For the time being, i will. The extra CPU time costs my employer money, which i'd rather do than use up someone else's bandwidth. While we're probably talking fractions of pennies here, with the number of Fedora users, such things do add up.

Last chance for cheaper HAR tickets

Since Hackers on a Bike got mentioned in a recent letter sent out to all the participants of HAR, i am extra motivated to remind everyone here that time is running short on HAR. The organizers posted the following announcement:

Pre-sale closing July 20th, HoaB, first-aid needs help

For those of you who still have not got their ticket for HAR2009: the
pre-sale discount of EUR 20,- only applies for less than 96 hours. With
the discount, a ticket sells for EUR 185,- (or EUR 180,- if you enter
the coupon code `FNLPPRCH'). After July 20th, without the discount, the
price will be EUR 205,-. In addition, if you plan to use direct
transfer (IBAN/BIC), this is really the last chance to buy a ticket in
advance. After July 20th, the tickets will sell for the door-price, and
only credit-card and iDeal transactions will be possible.

So, if you haven't already, [1]head over to the ticket shop now and
get your tickets for Hacking at Random. Not only does it give peace of
mind, knowing that you can get in regardless of whether the event is
sold out or not, you're also making sure that this will be the last
time I have to write a few paragraphs to implore you to get your
tickets :)

Hackers on a Bike

Some of the more sturdy hackers are planning to cycle over to Hacking
at Random: a smart, healthy and environmentally friendly way of
traveling to the camping grounds. Although the title may lead you to
believe this is some crazy scheme involving [2]one of those lethal
beer-bicycles, there will not be multiple hackers on a single bike. The
participants will each commandeer their own bicycle. To find out all
the details, check out [3]the wiki page.

The original plan included departure from Wageningen, NL (which is
actually not too far away from the event) but by now other routes are
being planned. A group will depart from Amsterdam, and there are even
people who start in Belgium or Germany. I tip my hat to your stamina!
Some of the Hackers on a Bike might break free of the regular
proceedings for a day trip cycling around the Veluwe, which (you might
have heard) is one of the better offerings nature has in the

(Actually, Bert is taking the train to Wageningen, he's not actually biking all the way from Belgium ;) ).

Team:First-Aid looking for qualified volunteers

Do you have a first-aid diploma (Dutch EHBO or BHV certificate, or
something equivalent)? You speak English very goodly? Are not afraid of
blood? Capable of staying sober for a sustained period of time?
Prepared to miss some lectures to man the post?? Then you are what the
first-aid team is looking for! The nights are pretty much covered,
however during the day this team can certainly use your help.

The first-aid team is first in line when someone hurts himself. You do
not need to be a MD, however some basic training in first-aid (and
something that says you successfully completed the training) is
required. Serious medical problems will be for the official emergency
services, the team only has supplies and expertise for basic medical
care in case someone cuts her- or himself, burns her- or himself (not
unlikely with all the soldering going on) or sprains an ankle.

If you are interested, please check out this teams [4]wiki page.


1. https://tickets.har2009.org/
2. http://www.fietscafe.nl/images/fiets_amst.jpg
3. https://wiki.har2009.org/page/HackersonaBike
4. https://wiki.har2009.org/page/First-Aid

VirtualBox, SELinux, and FUDCon bracelets

A couple of weeks back i deleted that spare Windows partition i had lying around. I decided that i had no regular need for it, and there was no reason to keep the bloated piece of garbage Vista is lying around. The only (dis)advantage is that i can no longer use it to play games. It never played them perfectly anyways. The advantage though, is that Microsoft can no longer install .Net plugins into my Firefox setup let my computer be infected with their shoddy business practices.

Well, i still would like to have access to a couple of programs that i just can't seem to get to work right on wine and/or other methods. Being the secular stallmanist i am, i don't mind using open source software on windows now and then, and there are a few programs i like to use. Hearing about the updated VirtualBox release that now does 3D acceleration pretty well, i decided to give it a try. Yes it works :D. Unfortunately it does not work with SELinux in enforcing mode, but i don't mind switching to Permissive for the few hours i need to do something with it.

On a completely unrelated note, the FUDCon bracelet i've been wearing for about a year now finally broke at work yesterday. I have another one, but i haven't decided if i want to start wearing that one now. Does anyone else wear them still, or even abuse them to hold doors open to overheating server rooms?

FAD At Random 2009

I would like to formally introduce some plans I've been putting together to hold a proper Fedora Activity Day at Hacking At Random this summer. There has been alot of discussion over the past few months to have a formal Fedora presence there, to come hang out, enjoy the lovely Dutch summer weather, have a beer or two, and just show off how crazy we can be. I've also had talks with people from FreeJ/Dyne:bolic and from CentOS about sharing space, primarily because we all shared the same space last summer at Eth-0 and it worked out great. So without further ado:

The FAD at Random 2009 will be held near Vierhouten, August 15th at Hacking at Random. The topic of the FAD will be Media and Media arts using Open Source in general and Fedora in particular. The format will be pretty free form. There will be a few tents for hacking in and a tent with a projector to do presentations. We will hold a barcamp where people can do presentations or just show off demos. Some people from the village will also be VJing sporadically during the event, although the entire thing is ad-hoc.

We will also be forming a village between these four groups for the duration of HAR, so be there or be something not round.

Green Computing?

The computer i have at work is haunted. The person who had it before me was frequently getting blue screens of doom. We tried to fix that by putting Fedora on it, but today, after loading up the latest updates, i get regular crashes trying to run 3d screen savers. (Seriously, who doesn't run Molecule while working for a genetics laboratory?).

I was given the choice, to run memtest tonight and let it run all the way through or to try with random sticks of RAM tomorrow. I opted for the latter because it means not keeping the machine on all night long. But is it really more green? Those sticks of RAM have a certain environmental load too. Is it better to run energy using tests on the currently existing hardware or check every point of failure with a backup known working set? Which is more green? Should we even worry about such decisions at all?

In Berlin You Can't Have a Pony

We discovered that in Berlin, you can't have a pony. There was a sign on the subway warning us about this unfortunateness.

Flickr Link Here

Literally it means the seat is not a garbage dump, but Berlin is quite a liberal city, so i'm going to use quite a liberal translation.


Today i began my new job in Utrecht as a Systeembeheerder, which is just Dutch for Bastard Operator From Hell. I've been told that while we are in charge of a very wide variety of duties, the problems we have to solve tend to fall under two categories.

1) "Halp! I can't read my email!" - I'm clearly not responsible because that's handled by a central agency.

2) "The printer is broken." - I'm not a janitor, clean up your own mess.

I'm already loving this job.

My Run In with CentOS at LinuxTag

As everyone can now see in Mo's post, my laptop cover is almost completely covered with stickers. Having no room left there, it's time to sticker up my laptop bag. I'm trying to start a new meme where i have Shadowman saying various things, and convincing people to use Fedora stickers. Hopefully there will be some pictures later, if i run into Mo.

On my quest to get some stickers, i decided that a CentOS sticker would also be appropriate. Although i was scheduled to start at the booth just then, i decided a quick jaunt over to the CentOS booth would only take a couple of minutes. The guys there were more than happy to help me sticker up my laptop bag further.

While i was there, i started talking with Didi and others about Hacking At Random. Well, the everyone there likes camping, so it seems we will have quite a bit of a CentOS presence there. They were planning on bringing a larger tent as well, so taking up the opportunity, we agreed to try to combine our tents a bit. Now it seems the FreeJ/Dyne/Fedora Village has just gotten a bit bigger.

For HAR, we're planning on starting an Event Box for EMEA and debuting it there. Hopefully if we get our hands on a projector and screen, we can do a combination of a Fedora/CentOS/FreeJ barcamp as well as VJing and running demos at night. If you want to participate in the process of putting together the Event Box, we'll be having a session at FUDCon on Saturday or Sunday to coordinate planning and hammer out a few details.

The New Treasurer of Fedora EMEA e.V.

Three blog posts in one day. I hope this doesn't become a daily habit.

Today we had our yearly LinuxTag members meeting of Fedora EMEA. For those of you that don't know, Fedora EMEA is The Bikeshed of politics. Picture this, a bunch of computer hackers with access to a legal entity with legal bylaws and rules that run in parallel but outside of the standard Fedora processes. Put us all in one room, give us a two hour time limit, and i guarantee you we'll argue about how to vote for at least an hour. All in all, it's alot of fun.

At our meeting, Max had to unfortunately announce that he is resigning as treasurer. At the time he joined, it was wise to keep the treasurer position tied in with managing the EMEA budget in Fedora while things were being defined in EMEA over the past year. By now though, we have a bit of a rhythm set up when it comes to sponsoring and supporting events. Ultimately, this position should be entirely in the hands of the community.

I had been thinking that perhaps after a year in the Netherlands, where i can get my own routine and rhythm set up, i would run for a position on the Fedora EMEA board. As it turned out, the position opened up and there was only one other volunteer. We took a vote (with alot of debate), and the position fell to me. For now i'm accepting the position, and we'll see where it goes from there.

Why did i vote?

I'm seeing the start of a new meme on Fedora Planet, so i figured i'd chip in a bit of useless information.

I voted because it's the thing to do. You grow up with a certain sense of civic responsibility to contribute where asked and to make sure that your personal views are in some way being represented. The reality about politics, though, is that if you really are so emotionally invested in your views, voting is not nearly enough. You join or form a political party, run for positions of power, write letters and communicate with the others involved, and simply put, make your voice heard. I simply did not feel emotionally involved enough, because i can do my work in Fedora regardless.

Perhaps when we look at the election model for various Fedora Boards, we have to look at voting as nothing more than a thumbs up or thumbs down. We really have to think about how to get people's views better represented and how to get people more emotionally involved.

Where are the trolls now?

I've been seeing alot of nonsense and FUD about Mono, Fedora, Gnome and whatnot bloating the intertubes. In some ways it's really bizarre to consider Mono dangerous when one of the chief developers of GHC and Haskell works gladly for Microsoft.

You can see on Simon Peyton-Jones' Microsoft Research Profile page here that he gladly works for the great evil Microsoft. Despite that, the Haskell community has been relatively FUD free, and there has been very little suspicion of interference by Microsoft. Much of Simon's work in Microsoft has gone on to influence F#, which, yes, is a key part of the .Net/Mono offering.

Personally, i'm quite happy to see GHC and Haskell code in Fedora. I don't quite get what all the fuss is about.

Speaking German After a Hiatus

I have to say, after spending a month speaking Dutch nearly all the time, my German is in a bit of a sorry state. I just got off the phone to reserve a shuttle to the hotel for tomorrow, and i can't say i was too proud of my German skills as much as i was last year at LinuxTag. I'm sure it'll come back in a couple of days, but now you can't say you haven't been warned ;).

See you all tomorrow.

Haskell Bindings to C from Start to Finish

Out of curiosity i wanted to learn how to put together bindings from C to Haskell. The primary need for this on my radar is enabling X composition directly in Haskell, to enable 3D effects in XMonad. Haskell is a great language for doing graphics work, so there is definitely good sense in providing bindings for such things.

However, working with X can be a bit of a large project as the build systems and workflows for bindings are already relatively complex. I decided to familiarize myself with C2HS, which seems like the future of Haskell bindings, based on the brief bit of research i did. Another important set of bindings we may need in the future are good bindings to the RPM library. Problem here is that there is no good documentation on testing bindings with C2HS from start to finish. What follows is roughly a guide to the results i got, minus the swearing, crashing out in a nervous caffinated wreck for a few hours in between, and the tasty "Hollandse Nieuw" herring i had when i woke up.

(This year's herring is really tasty, if you get the chance to visit Holland, try one or two of them.)

The following is just bare metal work, in order to test the basic functionality of your bindings. There will hopefully be posts following this one on how to use autotools and cabal in order to build packages. (As soon as i figure it out myself.)

C2HS's workflow can be summed up as this. Write code in the C2HS format which is passed through C2HS as a preprocessor, which yields Haskell code. You run this code through ghc with extra command line flags to link the right libraries, and it yields a nice Haskell Library that you can link to later. Then just import your code in your program like normal, and you're good to go.

As a sane demo, i am starting with the sample code from the RPM documentation. This can be found here under Listing 16-1

First off, make your project directory. For me this is /rpm/. Since i want the library to be RedHat.Rpm.RpmLib i also need a directory /rpm/RedHat/Rpm/. (I'm debating if i want to keep the RedHat prefix.) Then create a file /rpm/RedHat/Rpm/RpmLib.chs, and immediately begin it with:

{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE TypeSynonymInstances #-}

#include <rpmlib.h>

{# context lib="rpmlib" #}

module RedHat.Rpm.RpmLib (
) where

import C2HS
import Foreign.Ptr

rpmReadConfigFiles is the only function we need so far from RPM. The first two lines enable extensions to GHC. The first is for doing Foreign functions, the second will be used later. Then include a standard CPP include statement. Finally we declare the module and the tokens it exports and import two modules we need from Haskell. Some of these details can be put off into the build system later, but since we are working with the tools directly, we can just put them in our code.

The function we want to bind is defined in /usr/include/rpm/rpmlib.h as such:

/** \ingroup rpmrc
* Read macro configuration file(s) for a target.
* @param file colon separated files to read (NULL uses default)
* @param target target platform (NULL uses default)
* @return 0 on success, -1 on error
int rpmReadConfigFiles(const char * file,
const char * target);

This presents a bit of a unique problem. Normally a C style string presents two possibilities we need to account for. Either it contains characters or it's an empty string. Haskell can handle this equally as well with the String type. However, here we have a third possibility, the two in parameters can be null pointers, which is not exactly the same as an empty string. Internally we can handle all three cases in Haskell as a Ptr CChar which lines up exactly to the C function. However, at the outer levels, we really need to create a function that can accept either a null pointer or a String. In order to handle this, we need a new class of RString, such that:

class RString t where
withRString :: t -> (Ptr CChar -> IO a) -> IO a

instance RString String where
withRString s m = withCString s m

instance RString CString where
withRString cs m = m cs

One of the gotchas of programming C level code in Haskell is that all C level code, namely pointers, need to run inside the IO Monad. There simply isn't a (safe) way to convert something like a String to a Ptr CChar outside of IO. C2HS makes use of a withT function pattern to marshall pure Haskell data to pointers to objects in C.

In our case, if we get a String, whether containing data or empty, we need to marshal it into a CString. If we get a Ptr though, we can assume it's already been marshalled. Chances are, there are cases that can break this, but for our simple example, there's relatively little harm we can do. In any case, withCString first marshals the String into a CString and then does pretty much what the Ptr version of our code does.

With all this squared away, we can define our function pretty much as per the documentation for C2HS.

{#fun unsafe rpmReadConfigFiles
`(RString s)' =>
{withRString* `s' ,
withRString* `s' } -> `Int'#}

This creates a new function that cannot call back into Haskell code, accepts anything of RString class, and marshals it with our code. This returns an IO Int. This is it for our binding.

The fun part is compiling it. The first step is to run c2hs on the .chs file. We need to include parameters to the C Preprocessor that tells c2hs where to find the C header files. We also use -l to copy C2HS.hs into the same directory, as it is needed by ghc later. The next step is to run GHC on the resulting .hs file.

/rpm/RedHat/Rpm/ $ c2hs --cppopts='-I/usr/include/rpm/' -l RpmLib.chs
ghc --make RpmLib.hs

Now that this is done, the next step is to build an executable that uses this binding in order to test it. This file, rpm1.hs goes in /rpm/

module Main

import RedHat.Rpm.RpmLib
import Foreign
import Foreign.C.String

nullP :: CString
nullP = nullPtr

main :: IO ()
main = do status <- rpmReadConfigFiles nullP nullP
putStrLn (show status)

Since we defined our class only for Ptr CChar (aka CString) and not for the general Ptr a, we use a helper to type cast nullPtr. There's probably a more idiomatic way to do this, but all we need is a kludge. The rest pulls the integer result from the function and prints it on the screen. To compile this, we use the following ghc magic. It includes another call to link in the rpm library.

/rpm/ $ ghc -lrpm --make -debug rpm1.hs
/rpm/ $ ./rpm1

That is from start to finish how to write your own C bindings in Haskell. Hopefully i'll figure out how to get this to work via cabal, so i don't need to run so many commands to run tests.

Fedora 11 Release Party Wau Report

I've been a bit remiss in reporting on our release party in a timely fashion, but better late than never.

Our plan was to have an outdoor hackfest following the tradition set by eth0:wau last summer. The rules are simple, grill meat, drink beer, and sit around with the computers outside as long as possible. Last year, it yielded this:

Perhaps we did better this year. I'll let you decide.

We started at a typically undutch time, an hour late. We had the fire up and going at around 6, but it wasn't till nearly seven when we started preparing food in the kitchen. People started showing up around then and kept coming as the night ran on until around 11. Our release party ran along side the birthday parties for two of Alex's housemates. Without that, it might have just been us nerds sitting around in the cold night weather hacking around. As it turns out, some of the guests are also a bit technically oriented, so a couple USB keys laters, we may have a couple switch overs to Linux.

Seeing it was a birthday party, and we had a bunch of extra I <3 Fedora shirts, gave the two guests of honour a very nice Fedora birthday present. Here's Piu, the cat, trying to get in on the action again.

The night ran on and it was the usual share nerdery, installing Fedora on a few machines and swapping files around via a sneakernet. Never underestimate the bandwidth of a truck full of DVDs. In the end i made it to around 3.30, where Alex said i was acting especially loupy, right before i fell asleep. A couple of people made it through all night long, though in the end pretty much everyone got a few hours of sleep at one point or another. As we all woke up at different times, we didn't get around to having a proper breakfast until close to 17:00 the next afternoon. As Alex keeps chickens in his backyard, we were treated to some very fresh eggs.

In the end we had the tents up until around 20:00, ate dinner, packed up and went home. All in all, i think we did it justice.

For more pictures see these links.
Fedora 11 Wageningen on Facebook
Fedora 11 Wageningen on Spacedout

I should be a better tester

Kanarip is right, i should test rawhide more frequently. I've come across some SELinux denials on the livecd using the installer, which don't affect things too badly but can really scare the newbies. Well, in particular, the newbies that use Dvorak all the time.

(Don't worry, i've already reported the bug.)

For this go around i've done things a bit different. Normally i tend to fetch the DVD installer, hand pick all the packages in need a head of time, download them and install. This time, i've decided to go the route we should recommend to the pedestrians. I used the KDE Live CD and so far it's been pretty smooth. KDE 4.2 is pretty fast, KDE 4.3 is even faster. Getting Firefox installed literally took a matter of seconds. I don't know how you can't recommend this to even the most basic users around. The entire system is just plain snappy.

Coming up: Fedora 11 Release Party in Wageningen

More Snarkyness

I've previously commented on how to redefine marketing to your advantage.

Today, i would like to introduce you to a bit more snarkyness at the expense of a direct competitor. We're familiar with the standard IRC conversation:

<luser> ping
<user> pong

In IRC channels, we also see this form (that conveniently lines up):

<luser> user: ping
<user> luser: pong

I propose we change the aspirated voiceless bilabial stop to an unaspirated voiced bilabial stop. To foreigners whose native languages do not include the aspirated distinction between voiced and voiceless variants, this change will be even less noticeable. This will discourage people from referring to a certain biased marketing play by a certain company.

<luser> bing
<user> bong

That is all for today.

Is Microsoft really clumsy and stupid, or a malcious beast?

There have been reports of Microsoft forcing Firefox extensions on users without their permission. If you're too lazy to click on that link, it all boils down to this. Windows Update, the automatic update tool will install an extension in Firefox without asking, one that will enable running .Net applications in Firefox. The problem is the uninstall button is disabled. Never mind the afront to the user, to install plugins for other programs they may never want, but the real chutzpah is to take away the user's choice to remove it.

(Supposedly there are removal instructions that involve editing the registry, which may or may not protect them legally, but from all practical points of view, it's not removable by the user.)

What's also really troubling is that this opens up the browser to all sorts of new vulnerabilities there used to not be. Up until now, if malware managed to get itself installed in Firefox, it was the fault of Mozilla, for not securing Firefox enough. Now, any bug in Microsoft's crapware is yet another vector to get junk into the browser and honestly, Microsoft's track record is far from stellar. Now, the only way to get a secure Firefox experience is to use any OS but Windows. This includes OS X, Linux, *BSD, Haiku, and many others.

Microsoft did this sort of thing once before, but to their own browser. They had this piece of technology, which even got them lawsuits, called ActiveX. If the very name doesn't have you shaking and crying for mommy, then congratulations, you must have been using Linux since 1991. For everyone else, we all know what kind of a failure that was, and Microsoft had no one to blame but themselves. This time around, if something goes wrong, they can just blame Mozilla. You might almost think that Microsoft is doing this on purpose.

Jet Lag is a %^%$^#$#@%$

Just when you think your body has adjusted to jet lag, and you're on a relatively normal schedule, albeit in need of some extra sleep, your body decides it's randomly a good idea to wake up at 4am and not go back to sleep.

That said, i've moved to Holland. For the next month, i'll be taking care of paperwork, bumming around until work starts, and then going to Linuxtag. Hopefully between there and now, there'll be some quality Devshell work going on.

As for the move, it's been pretty simple. The airline schedule a zig zag trip from Pittsburgh to Detroit to Boston to Schiphol that no sane human being could make, even if the plane was on time. Instead i got upgraded to business class in Detroit. Because of the switch, the airline managed to lose my luggage. All in all though, if i ignore the fact that i didn't shower or change my clothes for two days, it wasn't really so bad, because in the end, the airline delivered my luggage all the way here. Saved me the trouble of having to haul twice my body weight in baggage. I even got a discount on my next flight. In otherwords, the airline paid me to deliver my luggage here.

As for my house, it's unfortunately only temporary. I can say, though, that if you want to live like an American with a large house in the Netherlands, you have to live as far away from civilization as possible, which is really only 10 minutes away from town.

What are functional languages?

Yesterday, Conal Elliott wrote on his blog that C is really a pure functional language called cpp that can be reduced to a monadic construct called C. Fortunately for us, there is alot of prior knowledge in reducing C into highly optimized machine code.

I would like to add that Make is also a pure functional language. It is a set of rules that can be reduced to a set of shell scripts, which unfortunately do not share the same optimizations. Fortunately, shell scripting lets you insert code in the form of a variable with some amazing metaprogramming consequences.

If you're on the fence about FP, it's really more pervasive than that silly academic language, Haskell.

Building blocks for world domination

I've been throwing around an idea for a few days that might be useful for the python ecosystem.

It's really easy to praise the bazaar way of doing things. Because of it, i can find four different libraries for manipulating pathnames in Python. There's the built in os.path which comes with every python distribution. There's pathtool which provides a nice api for walking a file system, which can replace the function 'walk' that's ordinarily provided by the Python Standard Library. There's Unipath which replaces paths as strings with paths as objects, to avoid a certain class of type based bugs. It also overrides standard behavior with what the author presumes is more logical behavior. There's path.py which provides the same but is 2 years old, and as far as i can tell, dead upstream. There's a fork of path.py which is in paver, which provides an interesting feature available to Python 2.5 and up, 'pathd'. This is a context manager that works in a different directory than the surrounding code. (No, i won't translate that for non Python users.) I've also had to do something similar in devshell, for the obviously similar reasons.

The end result is that there are so many good ideas out there that we really don't know what to do with them. An intermediate Python developer looking to put together a large application doesn't quite know what to do with all these different options. Does he pick path.py which appropriately follows the os.path behavior? Is Unipath better with it's object oriented behavior? Should he use the fork in Paver and require Paver to be installed with the application? Is doing this kind of research even a good use of time that would be better off spent just writing the tools in a util module on the side? Without prior knowledge or experience, this can muddy up the ecosystem.

This is of course not unique to manipulating pathnames. I'm finding that i'm looking for a wide range of reusable components in my Python work. It is hard for me to decide if i want to build my own parts or work with prior ones. Browsing the Python Cheese shop can be a daunting experience sometimes, although great when looking for brilliant ideas.

I think there is alot of room for a reusable component library. The goal of this library would to pick the best of the breed components and collect them all in one repository. As new ideas spring up in other libraries, we could cherry pick them and port them to the upstreams where necessary. It would exist outside other large projects like Zope and Twisted which provide other large building blocks for certain domains of problems.

Potential types of building blocks could include:
  • Pathname manipulation
  • Configuration file and runtime options management
  • A unified set of functional programming inspired functions (I see way too many implementations of them)
  • Implementations of more advanced functionality than provided by the Python Standard Library
  • Add your own itch here.

I think the end goal would be to provide a platform of libraries that are blessed by the community at large, but don't necessarily have to be included in a default Python distribution. It'll hopefully let systems programmers and application developers do their jobs with one place to find all the information they need.

Anyone interested?