Pavol Rusnak #cypherpunk #hacker #openhw #privacy #bitcoin #newmediaart

Xfce 4.6.0 released (and ready for testing!)

xfce_logo

The Xfce development team announced today the release of the long-awaited 4.6.0 version of their Xfce Desktop Environment. There is also a very nice Visual Tour prepared by Jérôme Guelfucci and Jannis Pohlmann, which highlights some of the new and exciting Xfce features. For me, the most vivid change is the complete rewrite of the Settings Manager together with its configuration backend, but I’m sure that everybody will find his/hers own favorite :-).

It took me longer to prepare the updated packages than I expected, because of the busy BuildService, but they are finally ready in our X11:xfce BuildService project and I would like to encourage you to try them. If you encounter any problems, either upgrade issues from distribution 4.4.x series, issues with clean installation from repository or any other defects, please do not hesitate and contact me. Thank you very much and I’m looking for your comments and responses!

Instructions (command-line):

  1. add X11:xfce repository if it is not already added: zypper addrepo http://download.opensuse.org/repositories/X11:/xfce/openSUSE_11.1/ xfce (replace 11.1 with your openSUSE version)
  2. refresh this repository: zypper refresh xfce
  3. get new packages
    • if you have Xfce 4.4.x installed - upgrade the packages from xfce repo: zypper dist-upgrade --repo xfce
    • or install the Xfce packages directly: zypper install Terminal mousepad orage ristretto thunar thunar-volman xfce4-appfinder xfce4-desktop xfce4-mixer xfce4-notifyd xfce4-settings xfce4-taskmanager xfce4-volstatus xfconf xfwm4

Instructions (one-click install):

just click on the link with your distribution:

Parallel command execution with limits

Randy_sk asked today on IRC if we had any idea how to run commands in parallel, but he also wanted to limit the number of the concurrent processes. I immediately responded: “use make”. I started to shape my idea further until I came to this Makefile:

tasks := $(shell seq -s ' ' 1 `cat commands.txt | wc -l`)

all: $(tasks)
    @echo Done

%:
    @echo `sed '$@!d' commands.txt`
    @eval `sed '$@!d' commands.txt`

This expects you had the file commands.txt prepared, which contains one command per line. If you want to call the same command over and over again, just replace commands.txt with values.txt and eval with the command you want to run.

Using this approach you can limit both the number of concurrent jobs: make -j 5 and the maximum load: make -l 2

Others ideas were to use the shell with & and wait, or to use the following one-liner:

while sleep 1; do [ "`ps ax | grep your_cmd | wc -l`" -gt 6 ] || your_cmd & ; done

but I really like mine solution the most :D

Change in command-not-found handler default behaviour

Due to some requests on mailing lists and Feature #305803 I decided to change the default behavior of command-not-found handler (in openSUSE 11.2 and SLE11).

Now it prints this info immediately:

$ blender
If 'blender' is not a typo you can use command-not-found to lookup the package
that contains it, like this:
    command-not-found blender
bash: blender: command not found

$ ifconfig
Absolute path to 'ifconfig' is '/sbin/ifconfig', so running it may require
superuser privileges (eg. root).
bash: ifconfig: command not found

instead of directly performing the search.

If you want the old behaviour back (i.e. search invoked automatically), just add export COMMAND_NOT_FOUND_AUTO=1 to your bash profile. (This is also documented in command-not-found man page).

You can install the updated packages from home:prusnak:scout BuildService repository as usual.

Google Summer of Code Mentors Summit 2008 - Day 2

Day 2 - 2008/10/26

  • The second day started with breakfast and was followed by the bus journey to Googleplex.
  • There we had on opening talk about the first day, what went good, what went bad and we would like to change. We had a lots of comments about Summer of Code organization, mainly about picking right students for project.
  • After that I headed to conference room where I prepared for my openSUSE Build Service presentation. Unfortunately I found out that Apple keeps changing its connectors nearly every year, so I was left without any option to connect my MacBook to the projector and I had to borrow Lance’s computer. At least I could easily prove that Build Service and its OSC command line client (which I freshly checkouted from SVN) could be easily used from any machine :)
  • Went to cafeteria for lunch, where I met Malex. Learned from him that I had missed key signing party the day before, so at least we signed our keys.
  • Rushed to “DVCS Boxing Match” as I was really looking forward to it. It was presented by Shawn O. Pearce (Git) and Dirkjan Ochtman (Mercurial). Result: both are pretty mature, but have some features missing, so the audience is a bit different.
  • Pretty in-depth session about Android internals by Romain Guy.
  • Went outside to take a group photo near the Android statue:

gsocms2008-4 gsocms2008-5

(Photos taken by Pınar Yanardağ and Austin Ziegler)

Google Summer of Code Mentors Summit 2008 - Day 1

Day 1 - 2008/10/25

  • woke up and headed to the hotel parlour for breakfast
  • met Werner and talked a little bit about Java and Java packaging in openSUSE
  • back in the hotel room shown BuildService to David like I promised; he was interested in packaging, because he wanted to build Tux4Kids packages for OLPC
  • we all took a shuttle to Googleplex

googleplex gsocms2008-1 gsocms2008-2

  • all herded into the largest of the conference rooms called Tunis
  • summit’s opening talk held by Leslie Hawthorn and Chris DiBona, the open source manager at Google
  • learned some details about this year’s Summer of Code, e.g. that the youngest mentor Dmitri Gaskin was only 13 years old! he was unable to attend the Google Highly Open Participation Contest so he decided to do mentoring for Drupal :)
  • we were presented with giant grid where rows represented times and columns conference rooms
  • asked to write the name of the session in the correct cell, if we wanted to host it (learned that this type of conference has its own name and it’s called unconference)
  • decided to give a short presentation of openSUSE Build Service on Sunday
  • to my surprise, after a few minutes the board was actually full and it seemed that we’ll have a very interesting program ahead of us
  • met Zonker, the other openSUSE Mentor and Community Manager, told him I’m having a session on Sunday
  • found out that we’ll be attending completely different sessions :)

  • first session - ‘Monetizing Open Source without Being Evil’ by Mixxx guys
  • pretty good, learned a couple of real-life examples:
    • Firefox - has Google search on home page and in navigation toolbar (paid by Google)
    • Rhytmbox and Amarok - last.fm / Jamendo / Magnatune integration (increases program value and is paid by the studios/companies)
    • Ardour - optional donation 10$/month - has around 120 subscribers (1200$ a month)
  • short session about developing for iPhone by Matt from Adium; more particularly about how GPL and other open source licenses clash with iPhone SDK NDA

  • veeeeery long queue for lunch; agreed with Assaf Raman from Ogre3D that Americans love queues :)
  • everybody is throwing Google colorful frisbees and balls
  • lunch is actually tasty, but I miss warm food, every choice is a cold dish :(

gsocms2008-6 gsocms2008-3

  • going to session called ‘Human Supercomputer Workshop’ held by James from Audacity

  • have no idea what this could be, but sounds like fun
  • 9 people divided into groups of 3; each group has worker, facilitator and observer
  • worker says how he/she would solve the problem and also refines the problem itself
  • facilitator can interrupt worker to prevent preconceptions of the speaker
  • observer notices when the interactions were most effective and is allowed to give feedback only at the end of the session
  • session lasts for around 15 minutes and after that the groups are dissolved and the new ones are created, ideally so that none of the members of the new group is in group with the person he has met before
  • after 3 or 4 sessions, one large group is created and everybody gives feedback
  • totally fascinated how this “architecture” could solve problems in a very short time
  • interesting thing is that human supercomputer is working better when it is “under-clocked”, i.e. when speakers speak more slowly, as compared to CPUs which work better if they are over-clocked

  • rushed to ‘Dynamic Languages’ initiated by Giovanni Corriga from Squeak project

  • seems not to be a one-man show, rather a large debate
  • it would be interesting if there was a way how to translate programs in various dynamic languages to some common intermediate language
  • unfortunately .NET’s CIL is suited for statically typed procedural languages
  • maybe even design a processor that could run this CIL
  • Update (2008/11/05): learned from Anders Hejlsberg’s PDC2008 talk on C# 4.0 that Microsoft is actually planning to implement something like dynamic languages runtime

  • Android lecture by Chris DiBona, Shawn O. Pearce and Brian Swetland

  • learned about architecture of Android, where the code is and how can we contribute
  • lot of this could be found on Android website

  • concluding remarks held again by Leslie and Chris

  • traveled back to hotel
  • lots of chatting in the hotel parlour and around the pool

  • chat with Brian Swetland about Linux kernel changes in Android
  • learned a lot about NTP protocol and its pitfalls from Harlan Stenn
  • talked with VLC guys about Dominique Leuenberger’s great packaging work using Build Service (he uses it also to create VLC upstream packages)

  • dropped into bed, again very tired, but with a very good feeling after the great day

(Photos taken by me, Pınar Yanardağ and Chris DiBona)