I miss a feature in OS X

My list of missing features in OS X is getting shorter and shorter but there is one thing I’d really like: Access controls based on which wireless network I’m connected to.
In a nutshell I want my laptop to recognize that I’m currently at home (ie. connected to the wifi in my apartment) and therefore don’t need to type in my password whenever I exit the screensaver. Yes, it’s a potential security risk but I’m lazy and I have a non-trivial password so I’d rather not type it two hundred times a day if I can avoid it.

Gmail and fortune cookie signatures

I recently gave up on a text-based MUA, partly because I couldn’t be arsed moving it when my laptop’s harddisk died on me, partly because I figured it was time to embrace webbased email interfaces. We use Google’s mailhosting for the vennemindenet.dk domain, which gives us the nice Gmail-interface. Apart from the Google braindamage that only lets me use the basic html-interface in Konqueror, I also missed my random fortune cookie signatures.
As it turns out, there’s an easy solution for that. A small script that prints an RSS feed with a single fortune cookie and the Random Signature feature from the Labs settings in Gmail. The Labs feature gives you an additional setting under your default signature where you can specify an RSS feed to pull a random message from. Neat!

MPlayer, Matroska and you

2009-08-17 11:49 This issue was fixed a few hours ago. I have bumped MPlayer in our tree to SVN rev. 29532

I bumped MPlayer tonight. Aside from a new VDPAU option and some miscellaneous fixes, the most important news item is that this bump most likely will be built for you by GCC 4.4, at least if you’re up to date. This is going to break playback support of files that use the Matroska container format (these files tend to use the .mkv file extension). The relevant bug in MPlayer’s Bugzilla is Bug #1467. This bug is present in all versions of MPlayer in ::media, including those I removed tonight. There are a couple of ways to work around it:

  • Use -demuxer lavf. The bug is in the libmpdemux Matroska demuxer so you can use the one from libavformat
  • Build MPlayer with the new debug-option. The bug disappears when you enable debugging support (yay!)
  • Build MPlayer with an older compiler. GCC 4.3 is known to work

It is possible this bug won’t affect you if your system is amd64.
You can grab a sample Matroska file if you want or need to test.

The state of the Exherbo Onion

Two perly things have happened in Exherbo recently. First of all, I pushed an exheres for 5.10.1-RC1 last night. I have tested to ensure that it should be possible to up- and downgrade between 5.10.0 and 5.10.1 without any issues, so feel free to test it. You will however need to rebuild anything that links against libperl.so (reconcilio should take care of that for you) so keep an eye out. Yes, this includes vim[perl] ;). RC1 and any further RCs will stay masked for testing indefinitely. 5.10.1 will introduce some changes, notably in features introduced in the 5.10-series, that are not backwards compatible with 5.10.0 so if you feel courageous, install it and see if you can make any packages break.

The second news is perl6. Ingmar has done some bitchin’ awesome work on getting parrot and rakudo in a state where they actually compile and install! As a result you can now play with the current version of rakudo, compiled straight from SCM:

$ perl6 -e'say "Hello, world!"'
Hello, world!
$

Remember to buy Ingmar a beer if you meet him :-)

ハ, パ… what’s the difference?

We get a lot of patches from many people in our main #exherbo channel. When someone is around and have the time to pick them up it works very well but some patches tend to drown in the general noise when we are all too lazy or drunk to do something with them.

Well, not anymore! Our new patchbot ‘hacchi’ (ハッチ) lets you queue a patch for later review, remove a single patch or several at once and get a list of all the currently pending patches. It accepts three different commands:

!patchqueue http://dpaste.com/12345/plain ::arbor
Enqueues the patch.

!patchdone 12345
Removes all patches matching ’12345′, so ‘!patchdone arbor’ would remove all patches for arbor.

!patchlist
Prints the current number of waiting patches to the channel and privmsgs the list to whoever ran the commands. hacchi also responds to this command in private.

The shorthand notations !pq, !pd & !pl also exists.

If there are any patches in the queue, hacchi will nag the channel about them once an hour to ensure they won’t be forgotten.

This is not a substitute for leaving a decent comment with an explaination that states what the patch is supposed to fix!

You should obviously still feel free to highlight a specific dev if you think your patch should be reviewed and applied by that person.

Pirate Pontén

“The way I see it, there is a campaign against anyone who disagrees with the piracy movement,” notes Pontén. “They are trying to restrict our freedom of speech. Previously they have tried threats, now they are trying other methods,” he added. — Aftonbladet (swedish) via Torrentfreak

The way I see it, there is a campaign against anyone who disagrees with the anti-piracy movement. They are trying to restrict our freedom of speech. Previously they have tried threats, now they are trying other methods.

Topic repositories! Use them!

During his various talks Bryan has mentioned the use of unofficial topic repositories in Exherbo – repositories hosting packages related to a specific topic that are either mostly or completely maintained by non-developers (and by non-developers I mean people who cannot push to the official Exherbo repositories). So far, we haven’t really seen any of those mainly because most people have just kept packages in their own repositories. It gets tedious to add a lot of personal repositories just to get the latest and greatest packages people maintain though and at the end of the day it’s easier to collaborate and coordinate efforts if we can keep the related packages together, so we’ve (and by we I really mean Ali Polatel) created a media-unofficial repository hosted at github. So far alip, replica and I have pushed our media-related packages there and the repository currently contains stuff like Audacity, ncmpcpp and envtag.

Now, the point of a topic repository isn’t to give any and all push access – we want to exert a proper level of QA, even if it is an unofficial repo. But as with the official ones, pinging one of us with a decent git format-patch is all you need to contribute stuff. If you want to contribute a new media-related package, please consider whether it would be better off in -unofficial. Keeping the number of packages that we (and by we I mean Exherbo developers) have to maintain is essential if we want to continue keeping the number of developers (and by developers I mean non-non-developers) near-constant (and we want that).

The name media-unofficial does not imply that the packages are of a lesser quality than those in media.git, it does not imply that Exherbo developes want nothing to do with them, it does not imply that the packages are of dubious legality. The packages in that repository are maintained by smart people (including current Exherbo developers and current and former Gentoo developers) and we expect the quality to be as good as any official Exherbo repository.

I like the idea of topic repositories when it’s possible to draw a somewhat clear line between relevant and irrelevant packages. The whole notion of restricting who can directly touch a set of packages should help keep people from stepping on each others toes while still letting those who want to do really crazy stuff with their packages (and keep them private thankyouverymuch) do that just by copying the exheres’ to their own repositories. I hope we will see more of these as Exherbo grows – repositories maintained by groups of users and (optionally) a couple of Exherbo devs. They do all the work and we take all the credit!

Oh, and regarding that last sentence… anyone who wants to start an unofficial scientific repository and add all those things I’ve been too lazy to package? Pretty please?

Exherbo in numbers

Lies, damn lies and statistics…

At the time of writing (Wed Feb 11 11:22:48 CET 2009), the following numbers might be of interest:

  • 269 days since official announcement
  • We’ve been working on Exherbo for longer than that but serious work on packages and “userspace” stuff began around the time of the announcement.

  • 30 official package repositories
  • This includes individual developers’ supplemental repositories. Thanks to Paludis’ excellent support for multiple repositories and in particular the unavailable repository type, keeping track of packages in 30 different repositories is easy as an end-user (my laptop/server currently uses 16 of those repositories). Does any other distribution make it as easy to keep track of many small end-user oriented repositories? The Debian/Apt approach is definitely more painful than this.

  • 7 unofficial package repositories
  • These are repositories belonging to Exherbo users rather than official developers. The difference between these and the official ones is that these aren’t hosted on Exherbo infrastructure and they’re listed in unavailable-unofficial rather than unavailable.

  • 1313 packages in official repositories
  • Believe it or not but chances are you will find most of what you need here. There’s a long way to the tens of thousands of packages in distributions such as Gentoo and Debian but we don’t really have to go there. Adding packages with importare is easy and there are whole groups of packages that doesn’t really have to be hosted in official repositories. If a group of people want to add robotics-related packages to Exherbo they can just create an unofficial repository (could be anything, $scm repo, tarball, rsync) and get it listed in unavailable-unofficial. We really want to keep the number of packages we have to maintain low to allow us to spend time developing the system and its related tools. Maintaining packages doesn’t require any magic cloaks.

  • 76 packages in unofficial repositories
  • This isn’t a lot, in part because some people prefer to provide packages as patches for official repositories but mainly because Exherbo is just now crawling out of its infancy, taking its first steps towards being used by a wider audience. As this audience grows, we expect the number of unofficial packages to grow as well.

    Unofficial is actually a somewhat misleading term. It’s true that we don’t maintain them, but we do glance over the repositories before they are added to unavailable and if we hear of major breakages from these we can quite easily remove them again. Most (if not all) of the people with unofficial repositories listed in unavailable tend to hang around in #exherbo on IRC, so submitting patches to them is simple.

  • 20 developers
  • As currently listed on the wobsite. You will notice this number has been near-constant over the last year (I think one developer joined since the announcement). There’s no real reason to let this number grow at the moment, since all package maintenance can be done without push-access to the official repositories.

  • 20 contributors to official repositories
  • Over the last year, patches from 20 people against the official repositories have been accepted and pushed. Several packages are currently maintained by non-developers. Switching to Git early on was a great decision since it makes the whole patch-dance incredibly easy. We owe a great deal of thanks to these people.

  • 90 people in #exherbo
  • This is also one of the near-constant numbers. A majority of these people idles in the channel, but if you ping a developer with a link to a git format-patch, it’s likely to get pushed or rejected with suggestions for improvements quickly. Keep in mind that most Exherbo developers lives in Europe and some of us (usually not Ingmar) also sleep every now and then.

  • 50 kicks & 27 current bans in #exherbo
  • Given the potential for flames and the number of assholes on the internets these numbers seem fairly low. It’s usually a peaceful channel.

  • 3 platforms (x86, amd64, ppc64 [unofficial])
  • Exherbo currently has stages for three different platforms though not all packages has been tested on all platforms. Paludis will refuse to install untested packages and mark them as ‘Masked by platform’. Feel free to submit a git format-patch if you find that a masked package works well on your platform (you can override the platform mask in /etc/paludis/platforms.conf).

  • Activity in 12 official repositories over the last 24 hours
  • Even though it’s been nine months since the initial announcement we’re still doing lots of work all over the place.

  • 6896 commits in official repositories ~ 56 minutes between commits
  • The most important number of them all!!! This comes from ohloh and is a little more than a day old. It’s not too bad for forty people working on this project in their spare-time.

  • 31 open bugs / 120 closed bugs
  • We usually only use bugzilla when we need to keep track of issues for an extended period of time. Most issues are quickly resolved over IRC.
    If you file a bug, remember to attach a git format-patch!

  • 1174 quips
  • Don’t say we’re not funny! If you know a bit about Gentoo, you should recognise many of the quoted people.

  • 1 supported PM
  • No-one has stepped up to provide an alternative implementation of the exheres-0 EAPI, written in Haskell. Patches are welcome (in /dev/null, that is).

  • 1 (unwanted) slashdotting
  • That certainly turned what should’ve been a low-key announcement in a few relevant places into a lot more attention than what we wanted (or was prepared to recieve at that point in time). Still, it was a fun couple of days.

  • 0 flamewars
  • That’s right. It’s hard to start a serious flamewar among 20 people.

  • 1 awesome mascot
  • ‘Nuff said

  • 1 deleted wikipedia article
  • Someone wrote a wikipedia article just after the announcement, which was swiftly deleted as Exherbo didn’t meet the notability guidelines for wikipedia back then. Since wikipedia is all about verifiable, third-party information it will probably take a while before we’ll meet that requirement. But that’s all for the better – the people browsing wikipedia in search of their next distribution probably aren’t the kind of people we need/want right now.

  • 3 talks (only 1 video)
  • Bryan gave the talk on Genesis at FOSS Aalborg. It was this talk that prompted the announcement of Exherbo, and at the moment, this is the only talk we have a video from.
    Bryan then gave a talk about the visions and long-term goals of Exherbo last October at Open Source Days. This talk was a lot more interesting in general but unfortunately no video recording has been made available so far.
    Lastly, Bryan was invited to talk at FOSDEM four days ago. The video isn’t out yet, but it probably will be soon.

  • >9000 people pissed off by our honesty
  • For some reason a lot of people felt offended by the fact that we didn’t want them to waste their time on a half-working, most-likely-broken distribution. If you tell them to use it, they will complain that it’s broken. If you tell them not to, they will complain that you’re an arrogant bastard. Even so, scaring these people away was a lot better the wasting time on supporting them. We’re reaching a point where we feel Exherbo is usable by a wider audience, but we certainly weren’t there nine months ago. If you look a the frontpage you will see that its content was changed a short while ago, to better reflect the current state of Exherbo.

  • Too many offers of community management/PR/HR help
  • We still don’t need that thankyouverymuch!

That’s what I could think of at the moment. Are there any other interesting Exherbo-related numbers out there?

Konqueror > *

I’ve never really been able to grok firefox. It’s just been too bulky and heavy to use. Opera was somewhat better but seemed too alien and contained vast amounts of useless crap. Links is awesome but not really state-of-the-art when it comes to all this fancy web 2.0 stuff. The one browser I’ve always enjoyed using is konqueror. Rather than listing all the things I find wrong about other browsers, I though I’d take a look at the features that really makes konqueror stand out. Not big features but the small areas that just helps to make everything work smoother.

NB: I’m still using konqueror 3.5 and I haven’t got a clue what parts, if any, hasn’t made it into konqueror 4. Feel free to elaborate in a comment if you know something about it. It will at least let me know if I’ll lose any features when I switch.

And just for the record, I use firefox at work several hours each week so I do have my reasons for calling it a crappy browser. Much of this is really based on things that firefox won’t do unlike what I wrote just before. But it’s features you don’t really miss until you know they’re not there.

I guess some of this can be implemented in other browser through their extension systems. But I don’t like installing things outside my package manager and I like the fact that I don’t have to carry 10 extensions with me and install them on other people’s computers just to make their browser usable for me.

  • Kioslaves
  • Kioslaves aren’t really konqueror-specific, but konqueror makes good use of them. Basically, kioslaves binds a protocol spec (http://, sftp://) to a protocol handler. I don’t know how many different protocols firefox or opera handles, but I’m fairly sure konqueror does more. This sort of ties into file-management, which is something other browsers doesn’t do at all (and for a good reason). And while I tend to do all file-management from a shell, these kioslaves lets me do some quite awesome things. Say you want to move a group of files from machine A to machine B through sftp (or rsync, scp or whatever). You could obviously ssh to machine A and then do your thing, but you could also just split a tab in two panes, sftp to machine A in one pane and to machine B in another pane and move things between the panes transparently. This goes for any kind of kioslave of course, so if you only have ftp (eww) access to machine A, that’s no problem. Just ftp to A from one pane and sftp to B from the other and you’re all set.

    There are other kinds of kioslaves too, like man:// which provides access to man-pages. I’ve never used that much, but audiocd:// provides access to an audiocd in your drive, letting you rip files by copying them from a directory on the audio cd onto your harddrive (or to sftp://B maybe).

    There is a large number of kioslaves giving you transparent access to everything from tarballs to subversion repositories.

  • Form awesomeness
  • A part of HTML-forms is the <input type=’file’ />-one. It allows you to upload a file with an HTML form. Usually, you use the browse-button next to it and find whatever file you want to upload. But what if said file is somewhere on the interwebs, rather than on your local machine? You will have to download it first and then upload the downloaded file. This isn’t any different in Konqueror compared to any other browser, but konqueror allows you to specify a URL in the field and Konqueror then parses said URL, downloads the file to some temporary place and sends it along with the form. In other words, Konqueror performs the superflous step for you. You can use HTTP-urls in the field, but thanks to the aforementioned kioslaves you can actually use any kind of URL Konqueror normally understands. This a good example of a very small feature in terms of how often you use it, but it saves time, trouble and mouseclicks and makes the overall experience a lot nicer.

  • KParts
  • KParts (Kparts or however it’s capitalised) again veer off into a sort-of-but-not-really different area. KParts allows other KDE applications (those that export a KPart) to be put “into” Konqueror. This instantly turns Konqueror into a PDF-reader, a text-editor (vim really ought to export a KPart) and a dozen of other things. What’s interesting, when it comes to browsing, is that it lets you view PDF-files, text-files or whatever a webserver might throw at you in the same window you use for browsing. I use awesome as my window-manager, and I have a tab dedicated to Konqueror where all windows are maximised. So being able to open a PDF-file from a website in a new browser tab, rather than a new window, fits very well into the overall scheme. Oh, and having a KPart for handling textfiles also gives me proper syntax highlighting. In your face, firefox!

    KParts aren’t just for PDF-files and textfiles. It also gives Konqueror good capabilities for manipulating displayed images, adjusting colour or brightnesss, zoom, rotate and just about anything else you might need to display the image exactly how you want or need to. I particularly enjoy this on my old, very dark CRT-monitor.

  • Web shortcuts
  • This is perhaps one of the most overlooked features of Konqueror. At the same time, it’s probably the one that has saved me most time and irritation. Web shortcuts turns a “prefix:stuff” URL into a proper URL depending on which prefix you use. Maybe an example is in place here.

    I’m looking at some webpage when I come across the term ‘helicoid’. Wondering what exactly that is, I hit Ctrl-t to open a new tab, type “wp:helicoid” and hit enter. Konqueror then expands that into http://en.wikipedia.org/wiki/Special:Search?search=helicoid&go=Go which instantly redirects me to http://en.wikipedia.org/wiki/Helicoid which is where I really want to go. How many keystrokes/mouse clicks did I save there? I don’t know, but over time it adds up to a lot.

    By default, my Konqueror does a Google (I’m feeling lucky) search on whatever I type into the address bar if it doesn’t parse. Web shortcuts then allow me to type “gg:something” to get an ordinary google search instead. This beats using a special search bar by a huge margin, simply because I know the keyboard shortcut (Ctrl-l) for clearing and focusing the address bar. Want to do a google image search instead? “ggi:” is your friend. Want to do a more specific google search? “gg:konqueror site:kde.org” is your friend. Want a calculator? “gg:2+2″ is your friend. Want a currency calculator? “gg:5000 JPY in DKK” is your friend. Want to search cpan? “cpan:Data::Dumper” is your friend. Need to look up a word? “wt:crap” or “ths:crap” or one of the other web shortcuts pointing to different dictionaries is your friend(s). Konqueror comes with a craptic megaton of web shortcuts and you can easily add your own as well.

There’s a whole slew of other things I tend to miss whenever I use other browsers. Most of these are equally small and not very interesting in themselves, but added together they make using a browser (and a GUI-one at that) something that doesn’t make me want to cut both my hands off. I have yet to come across a single feature from other browsers I miss in Konqueror.

And by the way… as said I use awesome, rather than KDE and right now, a Konqueror instance with 23 tabs uses exactly…

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 5856 arkanoid  20   0  146m 110m  30m S    3 10.9  21:27.52 konqueror
15865 arkanoid  20   0  201m  90m  25m S    4  9.0   1:03.86 firefox-bin

… not a lot of memory. The firefox-session was launched because I needed to see whether the form-awesomeness feature worked in firefox (it didn’t). It has four tabs opened and all four websites are also presently open in konqueror (along with the 19 other sites). I never quite understood why people consider KDE a huge memory hog.