p.o.d logo

PLANET.OPENSOURCE.DK

Folk:
 Alexander Færøy
 Anders Lund
 Anders Ossowicki
 Andreas Bach Aaen
 Anton Berezin
 Bryan Østergaard
 Carsten Pedersen
 Christian Jørgensen
 Christian Sejersen
 Christina Rudkjøbing
 Dan Leinir Turthra Jensen
 David Zeuthen
 Erwin Lansing
 Esben Mose Hansen
 Flemming Jacobsen
 Frederik S. Olesen
 Georg Sluyterman
 Henrik Brix Andersen
 Henrik Lund Kramshøj
 Jesper Jarlskov
 Jesper K. Pedersen
 Jesper K. Pedersen
 Jesper Krogh
 Jesper Louis Andersen
 Jesper Nyerup
 Josef Assad
 Kenneth Christiansen
 Kenneth Geisshirt
 Kenneth Geisshirt
 Klavs Klavsen
 Kristian Høgsberg
 Kristian Nielsen
 Lars Sommer
 Leif Lodahl
 Mads Toftum
 Martin Hansen
 Martin Pihl
 Martin Schlander
 Martin von Haller
 Niels Kjøller Hansen
 Nikolaj Hald Nielsen
 Peter Hansteen
 Peter Larsen
 Peter Makholm
 Peter Makholm
 Peter Rude
 Peter Toft
 Phil Regnauld
 Poul-Henning Kamp
 Sidsel Jensen
 Sune Kloppenborg Jeppesen
 Sune Vuorela
 Søren Bredlund Caspersen
 Søren Hansen
 Søren Hansen
 Søren Sandmann
 Søren Straarup
 Thilo Bangert
 Thomas Alexander Frederiksen
 Thomas H.P. Andersen
 Thor Dekov Buur

Sidst opdateret:
February 06, 2010, 07:01 CET

Disclaimer:
Dette er folks egne meninger og har ikke nødvendigvis nogen forbindelse til hvad danske opensource-foreninger mener.

Kom på:
Kontakt planet@opensource.dk hvis du føler du vil være her.

Inkluder venligst URL for det feed du ønsker optaget, samt en redegørelse for opfyldelsen af nedenstående krav.

Krav:
  • Du er aktivt involveret i free/open source software (udvikling, foreninger e.l.)
  • Du skriver på skandinavisk og/eller på engelsk
  • Du har en tilknytning til skandinavien
  • Du skriver en gang i mellem om noget relevant for free/open source software-verdenen




Powered by:
Planet
       
February 05, 2010
Martin Schlander a.k.a. cb400f
Free culture i 1930′erne (February 05, 2010, 15:54 CET)
Martin Schlander

Forleden søgte jeg nogle informationer om Woody Guthrie da jeg faldt over følgende. I 1930′erne optrådte han i radioen og tilbød at sende sine tekster i en lille sangbog, hvor han brugte nedenstående copyright-notits:

“This song is Copyrighted in U.S., under Seal of Copyright #154085, for a period of 28 years, and anybody caught singin’ it without our permission, will be mighty good friends of ourn, cause we don’t give a dern. Publish it. Write it. Sing it. Swing to it. Yodel it. We wrote it, that’s all we wanted to do.”

Måske gør det Woody Guthrie til en af pionererne indenfor “free culture” og brug af ophavsretslovning som platform til eksplicit at give folk større frihed end de måske normalt ville forvente. Er der nogen derude der kender til ældre tilfælde af noget tilsvarende?

Uanset steg Woody Guthrie yderligere i agtelse hos mig, hvilket jeg hidtil ikke troede muligt :-)

Peter Larsen a.k.a. czar
Peter Larsen

Læste, igen, en fantastisk artikel om det som gør Danske Spil våde i trussen:

Blokering af udenlandske spillesites

Nu skal jeg være diplomatisk og direkte:

Read my lips… NO F*CKING WAY!

Jeg har i forvejen et gammelt påkrav fra Skat om at stoppe med at give ydelser til udenlandske booking firma’er. Det værende domæne, DNS og andre ting.

Der er ingen vej hen over helvede jeg har tænkt mig at følge et sådan påkrav, ej heller at respektere et ønske fra Skat eller den danske politikkerstand om at rende og lege politibetjent. Mit firma flytter udenfor Europa, og jeg flytter til et andet sted førend der kan komme på tale om at følge sådan “regler”.

TAG JER SÅ SAMMEN FOR FANDEN!

(Tak til jetlag som har holdt mig vågen hele natten, det er god energi til et raserianfald…)

Leave a comment

February 04, 2010
Stem på skole-IT til Malawi (February 04, 2010, 16:43 CET)

Jeg har tidligere skrevet om FAIR Danmark, som samler udtjent IT-udstyr ind fra private og virksomheder, renser dem for alt data, og genbruger det som hele IT-løsninger i Afrika – særligt Malawi.

Nu har FAIR Danmark brug for din stemme.

Hos PFA – Brug Livet Fonden er det muligt at stemme på IT-udstyr til skoler i Malawi, og får projektet tilstrækkelig mange stemmer, vil projektet blive belønnet med 125.000,-

Stem her: http://fonden.pfa.dk/VisSag.aspx?id=122

FAIR Danmark arbejder for at mindske den digitale kløft mellem Afrika og Vesten, og arbejder efter devicen: Fremfor at give en sulten mand end fisk, er det bedre at give ham en fiskestang og lære ham at fiske.

Malawi er et af verdens fattigste lande, og har ikke store uudtømmelige naturressourcer, som mange andre lande. IT er ikke bare en nødvendighed for at følge med resten af verdens udvikling, det er også en mulighed for at bruge nationens vidensressourcer fremfor dens naturressourcer som eksportvare.

Stem på det fantastiske gode formål her.

Og tag så lige og meld dig og din virksomhed ind i FAIR Danmark ;-) Dit kontingent sender udtjent dansk IT-udstyr til Afrika, og tilbage igen når det helt skal destrueres.

Meld dig ind her.

Related posts

Leave a comment

Poul-Henning Kamp a.k.a. phk
Lenovo sagen: De venter stadig... (February 04, 2010, 07:55 CET)
Poul-Henning Kamp Det blev et telefonmøde, af hensyn til snevejret. Sporten kort er at Lenovos pludselig, i modsætning til tidligere hvor det kun handlede om "en til to henvendelser om året", mener at sagen k…
February 03, 2010
Jesper Louis Andersen a.k.a. jlouis

How logging is performed in Haskell-Torrent

First an update: Haskell-torrent has downloaded its first torrent file “from the wild”. Unfortunately, this behaviour is not deterministic yet, and sometimes the download fails in spectacular ways.

For a bittorrent client, which is heavily concurrent, we have a few obvious tools at our disposal to ensure correctness. We can use QuickCheck to generate test cases and test properties. This is best done with the parts of the code relating to encoding and decoding of data in the client. Second, and I think this is important, we can pose invariants on the various processes and check that these invariants hold periodically. Third, we can trace the execution.

In order to trace the execution, we need a logging framework. Several exist for Haskell, but none of these really suits our purpose.

Logging

The first thing we have done is to create a process with a channel. This process is the logger and the only task is to drain the channel and send out log messages on stdout. All other processes log by synchronization on an event where a log message is sent to this process.

Log messages have three components: A /name/ of the logging process, a /message/ to log, and a priority:

> data LogPriority = Debug -- ^ Fine grained debug info
>          | Warn  -- ^ Potentially harmful situations
>          | Info  -- ^ Informational messages, progress reports
>          | Error -- ^ Errors that are continuable
>          | Fatal -- ^ Severe errors. Will probably make the application abort
>          | None  -- ^ No logging at all
>              deriving (Show, Eq, Ord)

Since the log channel is part of so many process configurations, it is beneficial to create a type class of those configurations which can log:

> class Logging a where
>    getLogger :: a -> (String, LogChannel)

For example, the Piece Manager has a configuration

> data PieceMgrCfg = PieceMgrCfg
>     { logCh :: LogChannel
>     , pieceMgrCh :: PieceMgrChannel
>     , fspCh :: FSPChannel
>     , chokeCh :: ChokeInfoChannel
>     , statusCh :: StatusChan
>     }

so to make it possible to log, we instance this

> instance Logging PieceMgrCfg where
>   getLogger cf = ("PieceMgrP", logCh cf)

And to formalize what a log message and channel are:

> data LogMsg = Mes LogPriority String String
> type LogChannel = Channel LogMsg
> instance Show LogMsg where
>     show (Mes pri name str) = show name ++ "(" ++ show pri ++ "):\t" ++ str

The logging itself is done by a logger function. Here is its type:

> log :: Logging a => LogPriority -> String -> Process a b ()

It designates that it takes a Priority and a Message to log (the String). It then logs in a Process monad where the configuration is of type a and the state is of type b. Note that the configuration must be an instance of the Logging class.

The code itself is rather straightforward, save for the call to the logLevel function:

> log prio msg = do
>   (name, logC) <- asks getLogger
>   when (prio >= logLevel name)
>       (liftIO $ logMsg' logC name prio msg)
>   where logMsg' c name pri = sync . transmit c . Mes pri name

For the sake of convenience, we want it simpler for most uses, so without much further ado:

> logInfo, logDebug, logFatal, logWarn, logError :: Logging a => String -> Process a b ()
> logInfo  = log Info
> logDebug = log Debug
> logFatal = log Fatal
> logWarn  = log Warn
> logError = log Error

Filtering

The missing piece of the puzzle is now the “logLevel” function. In the function above, we only log messages which has a priority higher than the current log-level. The log-level is discriminated by the process name in question that tries to log.

Basically, what we want is a simple way to filter log messages. Rather than log all messages, we want to selectively log only part of these, depending on what we are currently debugging or tracing. A log filter is:

> type LogFilter = String -> LogPriority

That is, given a process name, they return a minimum priority for that name. The log function then filters the message if it is not above this priority. Here are a couple of simple combinators:

> matchP :: String -> LogPriority -> LogFilter
> matchP process prio = \s -> if s == process then prio else None
> 
> matchAny :: LogPriority -> LogFilter
> matchAny prio = const prio

The first of those matches a process by name. If there is a match it sets a specific priority. Otherwise it punts by returning the highest priority possible. The second is a simple wrapper for always matching at a given level.

With this down, we get to action. Log priorities are Monoids in the sense that None is the neutral element and composition ignores None by “eating” it:

> instance Monoid LogPriority where
>     mempty = None
>     mappend None g = g
>     mappend f g    = f

Since there is already an instance:

> instance Monoid b => Monoid (a -> b) where ...

Log filters are now monoids. So we can write:

> logLevel :: LogFilter
> #ifdef DEBUG
> logLevel = mconcat [matchP "SendQueueP" Fatal,
>             matchP "ReceiverP" Fatal,
>             matchAny Debug]
> #else
> logLevel = matchAny Info
> #endif

Which means that we do not care much for log messages from the processes “SendQueueP” and “ReceiverP” unless they are fatal. Otherwise we want Debug messages or above. The only restriction is that the first match in the monoid chain is the one that steers the level.

Peter Larsen a.k.a. czar
orango.dk – nu med ny virkelighed.. (February 03, 2010, 16:11 CET)
Peter Larsen

Jeg har en glædelig nyhed (og en trist nyhed).

Den gode nyhed er at vi nu bare venter på retten i Næstved skal afsige en dom, som ud fra Orango ApS’s henvendelse til retten i forrige uge, bliver en dom uden retssag og deltagelse fra Orango ApS’s side.

Argumentet for dette er at man troede man “kun skulle vinde domæneklagesagen”, og ikke var forberedt til et slagsmål i retten om retten til domænenavnet efterfølgende, og slet ikke at man kunne ende i en principiel retssag om rettigheden, og man “i øvrigt ikke anser resourcerne som en evt retssag koster, som at være dækkende for værdien af domænetnavnet” (!)… Orango ApS har derfor valgt at trække sig fra retssagen.

Den dårlige nyhed er nu bare, at vi bliver nød til at vente på endnu flere tåbelige sager fra domæneklagenævnet, sager som igen sætter vores retsfølelse over styr og som får os til at bryde sammen i grin og gråd, samtidigt.

Men de vil komme, de eller den sag, og der er jeg også klar til at smide de første 25000,- til retssagen *) som endeligt og uomtvisteligt kan ændre denne praksis.

Jeg vil være stolt af at kunne sige det er resultatet af forbrugernes vagthund, forbrugerrådet, ombudsmanden eller i det mindste DIFO som havde gået ind og rusket op i loven. Det kan jeg ikke.

*) under forudsætning af vurdering af principiel karakter fra husets advokat.

Leave a comment

February 01, 2010
Another Facebook TV interview (February 01, 2010, 22:09 CET)

TV2 Go'Aften Danmark Interview

I appeared this evening for another interview on the legal aspects on the use of Facebook. This time the topic was hategroups on Facebook. It really seems to me that we are near the end of what can be said about this topic :-)

Check out the interview here (in Danish).

Poul-Henning Kamp a.k.a. phk
19" rack fra IKEA (February 01, 2010, 13:18 CET)
Poul-Henning Kamp Jeg plejer ikke at blogge om tilfældige links jeg har modtaget, men her vil jeg gøre en undtagelse: Vidste I at IKEA sælger 19" racks ? (tip med hatten til min geekgirl) phk
Peter Makholm a.k.a. brother
Strip fitness (February 01, 2010, 08:50 CET)
Peter Makholm

Re: dagens XKCD så har FitnessDK et “strip fitness”-hold. Desvære kun for kvinder…

Leave a comment

Sune Vuorela a.k.a. pusling
Toying with maemo and rotating apps (February 01, 2010, 00:29 CET)
Sune Vuorela

I have been playing a bit around with Maemo and writing Qt apps for n900. I ended up needing a rotation aware QMainWindow a couple of times, so I ended up abstracting it away in my own MaemoMainWindow, which I just wanted to share. It has enough ifdefs to also build against ‘normal’ Qt, outside Maemo.

Have fun. Available under any license.

maemomainwindow.h:

#ifndef MAEMOMAINWINDOW_H
#define MAEMOMAINWINDOW_H                                          

#include <QMainWindow>

class MaemoMainWindow : public QMainWindow
{
  Q_OBJECT
  public:
    MaemoMainWindow (QWidget* parent = 0, Qt::WindowFlags flags = 0);
    virtual ~MaemoMainWindow();
  protected:
    virtual bool event (QEvent* event);
  Q_SIGNALS:
    void orientationChanged(Qt::Orientation newOrientation);
  private Q_SLOTS:
    void orientationChangedSlot(const QString& newOrientation);
  private:
    Qt::Orientation m_orientation;
};                                                                   

#endif // MAEMOMAINWINDOW_H

maemomainwindow.cpp:

#include "maemomainwindow.h"                                         

#ifdef Q_WS_MAEMO_5
#include <mce/mode-names.h>
#include <mce/dbus-names.h>
#endif                     

#ifdef Q_WS_MAEMO_5
#include <QDBusConnection>
#include <QDBusMessage>
#include <QEvent>
#endif

MaemoMainWindow::MaemoMainWindow (QWidget* parent, Qt::WindowFlags flags) : QMainWindow (parent, flags) {
#ifdef Q_WS_MAEMO_5
  QDBusConnection::systemBus().connect(QString(), MCE_SIGNAL_PATH, MCE_SIGNAL_IF,
                                       MCE_DEVICE_ORIENTATION_SIG,
                                       this,
                                       SLOT(orientationChangedSlot(QString)));
#endif
}

MaemoMainWindow::~MaemoMainWindow() {

}

void MaemoMainWindow::orientationChangedSlot (const QString& newOrientation) {
#ifdef Q_WS_MAEMO_5
  if (newOrientation == QLatin1String(MCE_ORIENTATION_PORTRAIT)) {
    setAttribute(Qt::WA_Maemo5ForcePortraitOrientation, true);
    emit orientationChanged(Qt::Vertical);
  } else {
    setAttribute(Qt::WA_Maemo5ForceLandscapeOrientation, true);
    emit orientationChanged(Qt::Horizontal);
  }
#else
Q_UNUSED(newOrientation);
#endif

}

bool MaemoMainWindow::event (QEvent* event) {
#ifdef Q_WS_MAEMO_5
  switch (event->type()) {
    case QEvent::WindowActivate:
      QDBusConnection::systemBus().call(
           QDBusMessage::createMethodCall(MCE_SERVICE, MCE_REQUEST_PATH,
                                          MCE_REQUEST_IF,
                                          MCE_ACCELEROMETER_ENABLE_REQ));
      break;
    case QEvent::WindowDeactivate:
      QDBusConnection::systemBus().call(
           QDBusMessage::createMethodCall(MCE_SERVICE, MCE_REQUEST_PATH,
                                          MCE_REQUEST_IF,
                                          MCE_ACCELEROMETER_DISABLE_REQ));
      break;
    default:
      break;
  }
#endif
  return QMainWindow::event (event);
}

Update: reformatted code. Thought wordpres and <code> was smart. Thanks Ken.

Leave a comment

January 31, 2010
Mads Toftum a.k.a. quasi
Open Source Days 2010 (January 31, 2010, 21:48 CET)

This year I'll be presenting at Open Source Days.

DTrace tutorial


Introducing DTrace for system administrators, developers and performance tuners.
Topics include:
  • Basics of the D scripting language
  • Tracing system behavior
  • Digging depp: kernel tracing
  • Tracing dynamic languages
  • Adding probes to your own code
  • The DTrace toolkit

Last time

Last Open Source Days was in 2008. My talks then. I never got around to posting slides, so here they are - OpenSolaris Storage Platform - Storage revolution in the making. (Actually these slides are from about a month later at DTU where the 1 hour from Open Source Days became 2.5.)

Open Source Days 2010 (January 31, 2010, 19:29 CET)
Open Source Days 2010

Open Source Days 2010

This year everyone nearby Copenhagen and beyond who thinks that Open Source is interesting will come together at the Open Source Days 2010 event at the IT-University of Copenhagen, 5. & 6. March 2010. I will give a presentation Saturday 6. March on – big surprise – open source licenses. Stay tuned for more details.

Enhanced by Zemanta
Off to Bangalore (January 31, 2010, 19:18 CET)
itechlaw2010

ITECHLAW 2010

For the second year in a row I have the privilege to speak at the ITECHLAW Asia conference. This year the event takes place in Bangalore. Again this year my presentation will be on open source. The title is “Distribution in Open Source” and I am trying to give an overview of how the concept and definition of distribution is understood differently in different open source licenses and under different legal system. Of course, the reason why this is an important topic is because the copyleft provision in different open source licenses in particular in the General Public license is triggered when modifications to the original code is distributed by the licensee.

Enhanced by Zemanta
ports feature freeze starts in February 8 (January 31, 2010, 18:41 CET)

In preparation for 7.3-RELEASE, the ports tree will be in feature freeze after release candidate 1 (RC1 )is released, currently planned for February 8.
If you have any commits with high impact planned, get them in the tree before then and if they require an experimental build, have a request for one in portmgr hands within the next few days.

Note that this again will be a feature freeze and not a full freeze. Normal upgrade, new ports, and changes that only affect other branches will be allowed without prior approval but with the extra Feature safe: yes tag in the commit message. Any commit that is sweeping, i.e. touches a large number of ports, infrastructural changes, commits to ports with unusually high number of dependencies, and any other commit that requires the rebuilding of many packages will not be allowed without prior explicit approval from portmgr after that date.

Related posts:

  1. Ports feature freeze now enforced As an experiment, there will not be a complete ports...
  2. Ports tree frozen in preparation for 7.2-RELEASE The ports tree is now frozen for the 7.2 release...
  3. Ports freeze schedule for FreeBSD 8.0-RELEASE Below is the tentative schedule for the ports freeze in...

Related posts brought to you by Yet Another Related Posts Plugin.

Leave a comment

Thilo Bangert a.k.a. bangert
MTKII as /dev/ttyACM0 in bt747 (January 31, 2010, 13:17 CET)

During summer I got interested in GPS and mapping and bought myself a mtkII based device. For these there is a java app called bt747 in the tree. However I couldn't get it to work - bt747 would not accept the device name I tried to convince it of using.

Turns out that older devices where using a USB to serial converter to provide the USB interface: these show up as /dev/ttyUSBx - with x being an integer. The device I bought is a newer generation who appear to have an on-chip USB port, which will show up as /dev/ttyACMx (x again being an integer). So, support for ttyACMx type devices is needed in BT747. See bug #281888.

It turns out BT747, being a java app, uses rxtx to provide support for serial device communication. So lets fix rxtx - see bug #301126.

Meanwhile there is also mtkbabel in portage, which is not so picky about the device names.

Leave a comment

January 29, 2010
Sune Kloppenborg Jeppesen a.k.a. jaervosz
Good and bad password practices (January 29, 2010, 13:51 CET)

I just stumbled across an article in the Danish newspaper Politiken, which give some recommendations about how to create strong passwords, which is all fine. However it also recommends that you test your password with passwordmeter.com (I actually expected something like this before clicking on the article).

At least one good password practice is to not disclose your password to third parties and especially a site like passwordmeter.com which you know nothing about (wouldn't it just be a genious way to collect passwords and origin IP adresses?).

So first thing is to make a whois lookup on the domain:

Registrant:
Domains by Proxy, Inc.
DomainsByProxy.com
15111 N. Hayden Rd., Ste 160, PMB 353
Scottsdale, Arizona 85260
United States

I didn't know who Domains by Proxy, Inc are, but just the name certainly make some bells toll. It's definately not a site I want to use to test passwords!

Reports on the web range from describing it as a normal service to a hideout for spammers. Why on earth would any legitimate business want to hide their identity and especially if you want users to type in all of their passwords?

Update: As some of the comments pointed out it actually does everything client side (at least with Konqueror and Firefox), however for the average user it's still bad practice to type in their password on any third party site.

Leave a comment

Victory (January 29, 2010, 12:36 CET)
The Danish Parliament has decided to create a list of allowed standards. The standards MUST be implemented before end 2011.The decision includes two important things:ODF is on the list - OOXML is NOT!New standards MUST live up to certain criterias, among others it must be fully inter-operable with existing formats (formats already on the list). Microsoft is therefor responsible for
Poul-Henning Kamp a.k.a. phk
Rough concensus and working code... (January 29, 2010, 11:09 CET)
Poul-Henning Kamp De vigtigste ord i den aftale som ministeren måtte bide i sig idag, er noget i stil med: Citat:Det skal demonstreres, at standarden i sin helhed kan implementeres af alle direkte i sin helhed på flere…
January 28, 2010
Ubuntu Software Center: Stjernerne kommer (January 28, 2010, 06:30 CET)

Da Ubuntu 9.10 bød på endnu en ny måde at installere programmer på, nemlig Ubuntu Software Center, og den gamle måde med Tilføj/Fjern blev fjernet fra standardinstallationen var en af de mest savnede ting, at man ikke længere kunne se programmernes popularitet længere.

Men vi vidste jo også godt, at der kommer til at ske meget udvikling på Ubuntu Software Center den nærmeste tid. Og nu ser det endelig ud til, at vi kan få løftet lidt af sløret for, hvad der kommer til at ske i den applikation i Ubuntu 10.04 LTS :-)

Giv programmerne karakter

For det første kommer stjernerne igen. Men denne gang ikke kun baseret på hvor mange som har programmet installeret, men bliver baseret på et decideret rating-system. Ja, du kan ganske enkelt tildele det enkelte program et antal stjerner i Software Center, efter hvor godt du synes det er.

Ubuntu_Software_Center-10.04

Hvis du lægger godt mærke til det på billedet, kan du under stjernerne se, at der står noget: Nemlig antal reviews.

Giv programmerne en anmeldelse

Det er nemlig rigtigt. Ikke nok med at du kan give programmerne karakter, du kan også skrive en mere fyldestgørende anmeldelse, som andre kan bruge til at finde ud af, om programmet er noget for dem.

Med godt skrevne anmeldelser behøver man ikke engang længere at åbne en browser for at finde mere information om programmet, man måske/måske ikke ønsker at installere. GODT skrevne anmeldelser, vel og mærke ;-)

For at kunne give programmerne karakterer og anmeldelser, skal man logge ind med sin Launchpad-konto. Launchpad-kontoen er den samme konto du bruger, når du logger ind i Ubuntu One, eller den samme konto hvis du har indgivet en bug eller skrevet i Ubuntus wiki. Har du ikke en Launchpad-konto – så få en og tag del i glæderne :-)

I Ubuntu Software Center mangler vi stadigvæk…

Nu startede jeg med at skrive, at popularitetsvisningen var for mange en af de mest savnede ting i Ubuntu Software Center i forhold til Tilføj/Fjern.

Den absolut mest savnede ting, ser dog stadigvæk ud til at være savnet.

Jeg taler naturligvis om afkrydsningsboksene ud for alle programmer. I den gamle Tilføj/Fjern kunne du krydse 20 programmer af på en gang og trykke OK, og så gik programmet igang med at downloade og installere alle programmer.

I Ubuntu Software Center er det sådan, og det bliver det åbenbart ikke ændret ved i denne omgang, at man skal dobbeltklikke på hvert program enkeltvis, hvorefter Software Center øjeblikket starter med download og installation af det program.

Det er et problem, eller en irriterende ting, fordi hver gang du dobbeltklikker på et program, skifter den over til et nyt faneblad. Så skal du trykke tilbade på det gamle faneblad, og videre med at installere programmer. En triviel manøvre som jeg håber der findes en anden løsning på i enten Ubuntu 10.04 til april eller 10.10 til oktober.

Nu får vi at se… :-)

Du kan læse meget mere om den nye Ubuntu Software Center på bloggen omg! ubuntu!

Related posts

Leave a comment

January 27, 2010
Lars Sommer a.k.a. lasg
Hvad gør man når hotmail-kontoen er hacket? (January 27, 2010, 21:32 CET)

Jeg blev kontaktet af en bekendt via Facebook, som spurgte til lidt gode råd efter noget malware eller en spamrobot havde haft fingre i hendes mailkonto.

Hendes spørgsmål og mit svar er generelle nok til det kan hjælpe andre, og den sidste lille krølle på historien er sød.

- – - – - -

Hej lars.

Jeg har et lille problem med min hotmail… den bliver ved med at sende de her engelske spam mails til alle i min kontaktbog. anja anbefalede at jeg ændrede mit password for det virkede for dennis, men er der andet jeg kan gøre for at “rense” min mail?

mvh pernille

- – - – - -

Hejsa

Det bør være nok at ændre adgangskode ja.
Hvis du har brugt den samme kode andre steder, skal den naturligvis også ændres der.Din adgangskode er jo blevet opfanget af noget ondsindet, på en eller anden måde, så du bør overveje:

Hvis du har haft en svag kode (kun små bogstaver, under 8 tegn eller lign), har den været nem at gætte, og så skal du huske at ændre den til noget mere avanceret.

Hvis du bruger den samme adgangskode mange steder på internettet, bør du finde på et par forskellige adgangskoder, og kun bruge dem et par steder hver.
Til vigtige ting som email og netbank bør du bruge en kode du ikke bruger andre steder.

Og husk at holde dit anti-virus-program opdateret dagligt. Ellers er det super nemt at komme til at klikke på noget uheldigt og få en virus ind. (og de kan eksempelvis ligge og lure på hvad du taster på tastaturet, inkl. adgangskoder).

Og spørg bare løs hvis det lød for kryptisk, eller I har andre lignende problemer eller spørgsmål :)

VH Lars

- – - – - -

Tak skal du have…

men jeg ved faktisk ikke helt hvad og hvordan mit antivirus program virker…

jeg har mac…er det noget jeg bør tænke mere over??

- – - – - -

Jeg havde glemt du er på Mac.

Så er livet meget lettere for dig.  Der er ingen funktionelle vira af betydning til endnu. :)

Men husk de andre ting med at ændre koden andre steder også, hvis du har haft brugt den samme osv… :)

Sociable plugin buttons:
  • Digg
  • Google Bookmarks
  • email
  • Print

Leave a comment

Kenneth Geisshirt a.k.a. kneth
Kære politikere - stem rigtigt (January 27, 2010, 21:15 CET)
Kenneth Geisshirt I morgen fredag er der forespørgelsesdebat i Folketinget omkring åbne dokumentformater. Muligvis er der - i følge Folketingets kalender - først afstemning tirsdag i næste uge.

Leave a comment

Ubuntu One kommer til Windows (January 27, 2010, 15:00 CET)

ubuntu_oneMange Windows- og Linuxbrugere har længe anvendt fildelingstjenesten Dropbox, når man har skulle dele og synkronisere filer mellem flere maskiner og/eller flere bruger.

I 2009 fik Ubuntu-brugere den ekstraluksus, at Canonical lancerede tjenesten Ubuntu One, der blev en standard applikation i Ubuntu 9.10. Med Ubuntu One får man gratis 2 gb online plads og en mappe i hjemmemappen, hvor filer bliver synkroniseret på andre maskiner og via et online interface.

Ikke bare filer kan du dele gennem Ubuntu One, men også fx notater fra Tomboy, bookmarks fra Firefox eller kontakter fra mailklienten kan deles. Meget praktisk for os som ofte veksler mellem en stationær PC i hjemmet eller på jobbet og en bærbar på farten.

En af de store hindringer for en større udbredelse har været en manglende klient til Windows. Jovist kan man downloade og uploade filer via webinterfacet, men det er stadigvæk en besværlig ulempe i forhold til eksempelvis Dropbox.

Nu kan Ubuntu One teamet derfor meddele, at der er en Ubuntu One klient på vej til Windows.

Der bliver åbnet et sprint på årets PyCon i Atlanta, hvor Ubuntu One teamet og andre interesserede vil arbejde på en Windows-klient.

Personligt har jeg ikke brug for en Windows-klient, men jeg velkommer initiativet, som er nødvendigt for alle som arbejder i et mixed environment med både Windows og Ubuntu.

Og nævnte jeg i øvrigt, at hvis de 2 gb ikke er nok, så får du 50 gb online plads, synkroniserng (og altså backup) for kun 10$ om måneden? :-)

Læs mere om Ubuntu One sprintet på PyCons hjemmeside her.

Related posts

Leave a comment

Jesper Louis Andersen a.k.a. jlouis
Haskell Torrent is nearing a preview release (January 27, 2010, 12:36 CET)
Since the last blog post, a number of new things have been developed for Haskell Torrent. Here is a list of the highlights:
  • John Gunderman documented a queue interface and helped me with haddock.
  • The code doing SHA1 Digests have been abstracted into its own module.
  • We now handle interest as intended in the bittorrent protocol. We update interest based on what peers tells us they have available.
  • We now pick pieces in Random order rather than linearly.
  • We correctly inform peers when we have retrieved a full message by sending them HAVE messages.
  • We can now track how many bytes are left on a torrent. This is needed for the tracker.
  • We have some preliminary rate calculation code, based on a 20 second window and running averages. It ensures a somewhat fair treatment of the rates of different peers.
  • The Choke Manager now uses the rate calculation code to choke peers based on their current speed.
  • The Readme file has been updated with what extensions and protocol-parts we support.
The current goal:
We currently aim for two things: BEP-003 support and a preview release (version 0.1). The BEP-003 is the support for the basic bittorrent protocol with no extensions at all present. This is the bare minimum needed to be able to call ourselves a bittorrent client. The list of missing items for BEP-003 is as follows:
  • When the torrent file is initializing it needs to calculate how many bytes there are left to download before completion. This number is reported to the tracker.
  • We need to make sure that the tracker is informed of Torrent completion in the right way.
  • The client will have to handle multi-file torrents. That is, torrents where there are more than one file. We can punt this to after the preview release if needed, because it is not that important for a preview of the client.
  • We must correctly change to a seeder mode when the torrent file in question completes. This is currently not happening.
  • We use a Pure Haskell SHA1 checksum code. Rather than doing this, we should outsource our digest calculation to OpenSSL through the hsopenssl package. The abstraction should make this easier. This is not strictly needed for BEP-003, but it is nice to have.
The client will currently not handle the endgame in any special way. This means that a torrent will take considerably more time to complete. On one hand this would be nice to have before the preview release. On the other hand, I think it is better to bump it.
On the Preview:
The preview is not a working client. The purpose is to get the client tested in different environments by different people so we can find some bugs and get them sacked. I would like to have a client which has shown itself able to download files in non-lab environments, but perhaps with many bugs still left. This is also to get a test of the release engineering involved in the process. The release will also mark a milestone in the development: we can use it as a stepping stone and a breathing space while we decide what to work on next.
The plan is to use hackage for the release. I am using the Haskell Platform here - but that means GHC6.10.4. We could use a couple of compilation tests on what will become the next Haskell Platform. I am afraid we use some stuff which changed. A quick heads up would be nice.
Also, before the release, I would like some janitorial code work done. I have not enabled -Wall while developing, but around now might be the time that someone enables it and begins cleaning up dead code, limit module exports and similar janitor-work.
Watch this blog. The moment the client has downloaded its first non-lab torrent will be worthy of an announce. I can't predict the future, but my gut feeling says it is going to be soon.
(Note: The layout of this post is miserable. This is what you get in return for using blogspots built-in editor :)
Sune Vuorela a.k.a. pusling
Maemo-udvikling og nokiakonkurrencer (January 27, 2010, 01:06 CET)
Sune Vuorela

Nokia har startet en konkurrence i at lave gode maemo-applikationer, hvor man kan vinde op til 15000 kroner. Mere herom på http://NokiaOpen2010.RockingMaemo.dk. Det ser ganske interessant ud.

Jeg har lige for sjovs skyld leget lidt med at skrive en medieafspillerapplikation til min n900. Bare for at lege lidt med Phonon og for at se hvordan det var at arbejde med. Kildeteksten kan findes her: maemoplayer-0.1.
En prekompileret eksekverbar (ikke en pakke) kan findes her: player. Den kræver at libqt4-maemo5-maemo5 og libqt4-maemo5-phonon er installeret. Og vær opmærksom på at store dele af /home/user er mounted noexec.
Og det er mest interessant at bruge ‘run-standalone.sh‘ til at starte den med. Så bliver den Maemo-temaet. Ellers kører applikationen med Qt’s standardtema.

Min medieafspiller er primitiv, men virker. Den bruger også Maemo’s banner-funktionalitet, ligesom den er i vandret modus når telefonen er på siden, og i lodret modus når telefonen er på højkant. Derudover bruger den også Qt’s multimedieframework, phonon, og Qt’s model-view framework.

Hvis man ønsker sit eget udviklingsmiljø, så har jeg fundet det lettest at følge denne
guide på KDE’s wiki.

Dog måtte jeg lige i gennem et par ændringer.

  1. Når installationen af alarmd fejler, så åbn /var/lib/dpkg/info/alarmd.postinst inde i scratchbox og tilføj ||true til den fejlende linje (linje 47).
  2. Når en masse gconf-ting fejler, så inde i scratchbox, så kan man lige køre dpkg-divert --rename --divert /usr/sbin/gconf-schemas.real --add /usr/sbin/gconf-schemas og oprette en ny /usr/sbin/gconf-schemas fil med følgende indhold:
    #! /bin/sh
    /usr/sbin/gconf-schemas.real $@ || true

    (husk x-bit)
  3. og sidst men ikke mindst, resolv.conf inde i scratchbox skal fixes

Disse trin skal gennemføres både for ARMEL og X86-udgaverne.

Til NokiaOpen2010 kan man også vinde n900-telefoner og få gratis deltagelse i et OpenSource event i starten af marts.

Jeg håber på at rigtig mange deltager i NokiaOpen2010 og generelt skriver endnu flere gode programmer til n900.

Leave a comment

January 26, 2010
Husk tilmelding til Ubuntu kursus (January 26, 2010, 16:58 CET)

Som tidligere beskrevet starter FO Århus et Ubuntu kursus med to hold op den 2. februar med undertegnede som underviser.

Efter et næsten fyldt introduktionsforedrag den 19. januar, er der kommet godt med tilmeldinger ind, men der er stadigvæk plads til flere på de to hold.

Har du overvejet at tilmelde dig, eller kender du nogen, som kunne bruge et grundkursus i Ubuntu, så skynd jer at tilmelde jer kurset hos FO Århus.

Medbring gerne din egen PC eller bærbar den første gang, som står på installation af Ubuntu, og lær det hele på din egen computer :-)

Læs mere og tilmeld dig hos FO Århus her.

Related posts

Leave a comment

January 24, 2010
Peter Toft a.k.a. pto
Open Source Days 2010: Mød, del og oplev (January 24, 2010, 19:46 CET)
Peter Toft Holdet bag Open Source Days konferencen er blevet overrendt med spændende foredragsforslag de sidste par uger, og alt ser nu rigtig godt ud til endnu en kæmpe konference med fokus på Open Source såsom…
January 21, 2010
Anders Ossowicki a.k.a. arkanoid
I miss a feature in OS X (January 21, 2010, 20:50 CET)

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.

Leave a comment

Sjov tobak fra videnskabsministeren (January 21, 2010, 13:52 CET)

I morgen fredag vil jeg være tilstede, når Folketinget afholder høring om åbne standarder, som jeg tidligere har skrevet om, og i det omfang det er muligt, vil jeg tweete fra høringen.

Under overskriften:

Vil Sander ryge fredspibe med it-ordførere?

har Version2.dk gennem SF’s IT-ordfører Hanne Agersnap fået oplyst at Helge Sander i den kommende uge har indkaldt IT-ordførerne til et møde om det offentliges valg af dokumentformat.

Der spekuleres i, at det ikke er lykkes videnskabsminister Helge Sander at udskyde beslutningen yderligere, eftersom der alligevel ikke kom en regeringsrokade inden den planlagte forespørgseldebat i Folketinget og efterfølgende afstemning, som ellers ville have bragt Venstre og Konservative i mindretal.

Selvom der bestemt vil komme spændende indlæg på morgendagens høring, blandt andet om praktiske erfaringer fra Holland, Region Midtjylland og andre, kommer der næppe meget nyt til debatten. Ikke desto mindre er det håbet, at indlæggene vil repræsentere det sidste kapitel i en sag, som desværre er blevet forhalet mange gange af Helge Sander.

Jeg håber ikke det er “sjov tobak” Helge Sander har proppet i den fredspibe, men at det nu snart får en ende, og det rigtige valg bliver truffet. :-)

Related posts

Leave a comment

January 20, 2010
Peter Toft a.k.a. pto
Smart mount af Linux USB enheder (January 20, 2010, 23:40 CET)
Peter Toft Jeg vil gerne lige dele et smart trick, som jeg har lært at Bryan Østergaard fra SSLUG. Når jeg sidder med en Linux-maskine og indsætter et par USB-diske/memory-sticks så får jeg /dev/sda, /dev/sdb os…
Poul-Henning Kamp a.k.a. phk
1000 ord ? (January 20, 2010, 16:18 CET)
Poul-Henning Kamp Her er et plot over Varnish-projektets udvikling igennem tid: X-aksen er varnish-commits, y-aksen er linier kode. Op til og med den violette "incl+lib" er det jeg vil kalde "selve varn…
Martin Schlander a.k.a. cb400f
Microsoft-skatten – hvad gør vi? (January 20, 2010, 15:40 CET)
Martin Schlander

De fleste kender selvfølgelig til problematikken. Det er vanskeligt at købe en bærbar computer uden at der følger et styresystem fra Microsoft med – det er træls at skulle betale en merpris for et styresystem man måske ikke ønsker at benytte – måske er det endda ikke kun et økonomisk spørgsmål, måske ønsker man ikke at støtte Microsoft fordi man ikke bryder sig om deres produkter eller forretningsmetoder, eller måske fordi de er den største konkurrent til et styresystem, man selv er engageret i. Spørgsmålet er så om der skal gøres noget ved problemet, og hvad det eventuelt kunne være.

Retslige eller politiske løsninger

Poul-Henning Kamp kører for tiden en meget omtalt sag mod Lenovo for at få pengene retur for en Microsoft Windows-licens der fulgte med en computer han købte. Selv når PHK forhåbentlig snart får medhold i sagen, vil problemet desværre nok ikke være løst på længere sigt – blandt andet pga. ændringer i EULA’en for Microsoft Windows 7.

At løse problemet ad politisk vej gennem EU eller Folketinget kræver nok en større lobby-indsats end vi kan mønstre. Selvfølgelig bør vi alligevel benytte enhver lejlighed til at minde vores EU-parlamentarikere/-kommisærer og folketingsmedlemmer om problemstillingen – for en ordens skyld.

Markedsbaseret løsning

Hvis vi ikke kan løse problemet på retsligt eller politisk niveau (“top-down”), kan vi i stedet forsøge at gøre det som fri software-communitiet historisk set har været bedst til – at gøre verden bedre “bottom-up”.

En markedsbaseret tilgang vil naturligvis også være vanskelig, ikke mindst fordi markedet for styresystemer fungerer rigtigt dårligt – men det er måske værd at prøve med en stærkere og mere koordineret indsats end tidligere.

Først og fremmest bør vi som community og foreninger gøre en større indsats end hidtil, for at bakke de få spredte forhandlere og producenter op, som faktisk tilbyder bærbare computere enten uden styresystem eller med et alternativt, billigere styresystem end MS Windows.

Jeg mener at have kendskab til følgende aktuelle muligheder:
Vision Notebooks (sælges uden styresystem)
HP Mini 5101 (sælges med SUSE Linux Enterprise Desktop 11)
Dell Latitude 2100 (sælges med Ubuntu 8.10)

Skriv gerne kommentarer hvis du kender til andre forhandlere af bærbare computere i Danmark med dansk tastatur og uden Microsoft Windows præinstalleret.

Men er det nok?

Måske kan vi handle endnu mere proaktivt, måske kunne vi nedsætte en form for arbejdsgruppe på tværs af relevante foreninger som SSLUG, BSD-DK, DKUUG m.fl. – måske ville det også være interessant for IT-Politisk Forening, Prosa og lignende. Denne arbejdsgruppe kunne tage kontakt til forskellige producenter/forhandlere og måske tilskynde til salg af maskiner uden styresystem.

Jeg mener trods alt at vi har noget at handle med. Vi repræsenterer tusindvis (titusindvis?) af personer – som formentlig har et over-gennemsnitligt forbrug af computer-hardware, og desuden ofte fungerer som rådgivere og supportere for andre i IT-spørgsmål – og nogle har formentlig endda en vis indflydelse på IT-indkøb på deres arbejdspladser. Vi ville kunne tilbyde en betydelig mængde goodwill og gratis positiv omtale – evt. via vores foreninger og konferencer.

Det eneste en forhandler/producent skulle gøre til gengæld ville være at tilbyde nogle udvalgte modeller til salg uden styresystem – evt. via en form for gruppekøbsordning. Og der er sikkert ingen der ville beklage sig hvis producenten stak halvdelen af en besparelse på OEM-versionen af styresystemet i egen lomme.

Har i andre/bedre ideer? Eller skal/bør vi bare acceptere status quo?

Why I work on Free Software (January 20, 2010, 10:50 CET)

I happened upon this old LinuxJournal article about how the University of Zululand in South Africa used MySQL and other Free Software to make do with a 128 kbit (and later 768 kbit) internet connection for their staff and students.

This made me remember the trip I made to another African country, Burkina Faso, 15 years ago:

With the huge amount of work and numerous difficult obstacles facing my work on the MariaDB project, it can be hard to keep up motivation at times. It helps to remember why I am doing this.

It must be about the time when some of these kids should go to University or start up new projects. Maybe some of them will work with software. I want them to be able to invest in local skills and infrastructure that they need, rather than in software licenses funding nice houses and boats in other countries:

(House and yacht pictures courtesy of Wikipedia under the Creative Commons Attribution ShareAlike 3.0)

Kenneth Geisshirt a.k.a. kneth
N900 - konkurrence og konference (January 20, 2010, 08:42 CET)
Kenneth Geisshirt Kommer du til Open Source Days 2010 den 5. marts, kan du opleve Nokia Open 2010.

Leave a comment

January 18, 2010
Thomas Alexander Frederiksen a.k.a. Theo a.k.a. Thuba a.k.a. Tuba
A strange take on physical security (January 18, 2010, 11:54 CET)
During my time as a consultant I’ve seen many interesting takes on security. Today has been no exception. When visiting a client, we found that a new security policy has been enforced. In order to ensure that only authorized personnel and invited guests are in the building, they now require that guests are wearing guest access cards. The procedure for getting a card is as follows:
  1. Enter the building
  2. Take the lift to the floor mentioned on the sign
  3. Sign list and take card
Now, this could have been okay(ish), if not for the shortcomings inherent in the implementation of this physical access restriction scheme:
  1. The front door is unlocked
  2. The lift allows going to any floor with no sort of identification or security – including the top floor, which has most helpfully been labeled “authorized personnel only”
  3. The list/card procedure is not managed or reviewed, the guest is left to do all paperwork alone and unsupervised
  4. The card is a simple cardboard guest card, and serves no other purpose than to visually identify guests
  5. Employees are generally not wearing ID cards
  6. Doors are generally not locked, not even on the restricted top floor
The right way of restricting access would have been to lock the front door, and man it with security guards in charge of the guest list and the guest verification procedure. As for the lifts and doors, proper access control using swipe cards would the way to go. All off this is 1970’s technology, and is readily available from all major vendors of building security. Even better methods exist if using modern technology – sadly, they settled for a “solution” which is neither here nor there…

Leave a comment

January 17, 2010
Blogging 2.0 (January 17, 2010, 21:13 CET)
23 twitter test

How would these guys have done it?

However much I hate to name anything these days as “something 2.0″, I nevertheless think that it is time for a serious reboot and and a new version of my blogging activities.

I started OpenLife way back in the beginning of 2002 and since then it has been the outlet of a tirade of more and less (mostly less) relevant rants from my side. The posts have been pretty unstructured and chaotic spanning from personal stuff over posts about chocolate and music to a lot posts about open source and IT law.

After the advent of social media such as Facebook and Twitter a lot of my online activity has moved away from my blog. The small quick post are now added to Twitter and Facebook. So what is the role of my blog these days?

I think there is still plenty of reasons for someone like me to keep on blogging the old fashioned way. Here are three reasons that I can think of.

1. I have little control over my content at online social media such as Linkedin, Facebook, Plaxo and Twitter. Yes, I might still hold copyright to my postings at all these places, even though most of these sites would probably try to sneak in terms in their terms of service that try to erode these rights. But as long as all the data shared on these sites are not both de facto and de jure based on open format, it will be very difficult to export any of my content and data in a format where I can actually use or re-use it.

So I need to maintain, update, evolve my blog, as this is where I have ultimate control over my content.

2. It’s been good to learn to limit rants and outburst to 140 characters. The Haiku style of Twitter and other status updates forces you to limit yourself to what is important. But sometimes I need to have more space. On occasions, believe or not, I feel that I have something relevant or important to say that takes up more than 140 characters.

So in the future I will try to make far fewer post to my blog, but each longer and more compelling. History – and Google analytics – will judge me mercilessly.

3. Finally, my blog have to be targeted. As mentioned, OpenLife has been dealing with tons of unrelated topics. A visitor’s only change to find anything coherence has been to use a purge based on “categories”. This does not work. I know from my own experience as an avid blog feed subscriber that I only have time to read postings from blogs that deal exclusively with issues that have my interest and from which reason I have subscribed to.

So my plan is to split OpenLife into three blogs. First, openlife.dk that will deal exclusively with my life and interests. Second, lexlinus.dk where I will blog on issues related to open source. And finally, third, newmediahouse.dk (or another name) that will deal will new media law and IT law in general.

Let’s se what happens!

Enhanced by Zemanta
Nyt Ubuntu kursus i Århus (January 17, 2010, 10:37 CET)

Så afholder FO Århus igen grundkursus i Ubuntu for begyndere.

Der er to hold, som starter henholdsvis den 2. februar kl. 16.00 og den 9. februar kl. 18.30.

Ønsker man at høre lidt mere om det, inden man tilmelder sig, kan man komme til et introduktionsforedrag om Ubuntu, og høre nærmere om Ubuntu, kurset og om Ubuntu overhovedet er noget for dig.

Tilmeld dig introduktionsforedraget eller et Ubuntu-hold hos FO Århus snarest muligt: Tilmelding til Ubuntu.

Spred gerne ordet om kurset til venner og bekendte, som kan have interesse i et grundkursus for begyndere :-)

Related posts

Leave a comment

January 16, 2010

In the Autumn, I wrote about some experiments I did using KVM and virtual machines to build and test MariaDB binary packages on a number of different platforms. In the period since then I added some polish and refinements, and the system is now running well for some time. We build and test packages for Debian (4 and 5), Ubuntu (8.04 to 10.04), Centos 5, and generic Linux; amd64 and i386 architectures.

To better control the startup and shutdown of the virtual machines, I created a small wrapper script around KVM called runvm. This wrapper encapsulates the steps needed to boot up a virtual machine, run a series of commands inside it, and shut it down gracefully afterwards. Some special care is taken in the script to ensure that the virtual machine is always shut down after use (gracefully if possible), even in case of various failures or the loss of the parent process or controlling TTY. And if a conflicting virtual machine somehow manages to escape shutdown, runvm automatically attempts to terminate it before starting a new one. This extra robustness is important for fully automated testing as in our Buildbot setup, to ensure that the system can run unattended for longer periods of time.

So for example, here is how to run a build inside a virtual machine using runvm:

  runvm --port=2222 ubuntu-hardy-i386.qcow2 \
    "= scp -P 2222 mariadb-5.1.41-rc.tar.gz localhost:" \
    "tar zxf mariadb-5.1.41-rc.tar.gz" \
    "cd mariadb-5.1.41-rc && ./configure" \
    "cd mariadb-5.1.41-rc && make"

Here, ubuntu-hardy-amd64.qcow2 is a KVM image already installed with compilers and set up for password-less ssh access (using public key authentication). Port 2222 on the host side is forwarded to the ssh service (port 22) on the guest side (so by specifying different --port options it is easy to run multiple runvm invocations in parallel; in our Buildbot setup we run 3 builds in parallel this way).

Note the use of the scp command, prefixed with an equals sign "=". Commands prefixed in this way are run on the host side rather than the guest side; this is a convenient way to copy data in or results out of the virtual machine while the runvm session is running.

Using runvm in this way we are able to easily and flexibly manage a large number of virtual machines for automated builds with very little overhead and complexity. In fact we have around 70 distinct virtual machines! The only resource they take is a little disk space (around 37 GByte). And the virtual machines images are also simple to set up, requiring only a minimal install; no need to set up networking bridges or IP addresses, or to install a Buildbot client. All the complex logic runs on the host system, which only needs to be installed once.

By keeping the virtual images simple, we also achieve that builds and tests run in a minimal environment, which is useful to detect any missing dependencies or other problems that do not show themselves on normal developer machines with a full desktop install (we even do install testing on a separate virtual machine from the one used to build, with compilers etc. not installed on the one used to test installation).

A further refinement of this is to create a new temporary virtual machine image before each step as a copy of a reference image, run the build, and throw away the temporary image after the build. This avoids any possibility of a previous build influencing a following build in any way (and thus also simplifies the build setup, as we can install stuff freely without any need to do cleanup). It also avoids having to fix a broken image, like needing to manually run fsck after a crash or similar. We use this technique for most of our binary package builds in Buildbot.

To use this copy-and-discard technique with runvm, the --base-image option is useful:

  runvm --port=2222 --base-image=ubuntu-hardy-i386.qcow2 tmp.qcow2 \
    "= scp -P 2222 mariadb-5.1.41-rc.tar.gz localhost:" \
    "tar zxf mariadb-5.1.41-rc.tar.gz" \
    "cd mariadb-5.1.41-rc && ./configure" \
    "cd mariadb-5.1.41-rc && make"

This will run the build in a temporary copy tmp.qcow2 of the reference imageubuntu-hardy-i386.qcow2, without modifying the reference image in any way. This uses the copy-on-write feature of the qcow2 image format (see qemu-img(1)), so it even takes only very little time (fraction of a second) and minimal space (only changed blocks are written to the new image).

This is basically how the package testing in our Buildbot setup is done. There are some further details of course, like more options for the build commmands and extra care to get logfiles out to debug problems; the full details are available in our Buildbot configuration file. But the basic principle is just a number of runvm commands like the example above.

The runvm tool is available under GPL on Lauchpad in the project Tools for MariaDB. In the bzr repository it is found as buildbot/runvm. If someone finds it useful or has suggestions for improvements, please drop us a line on the maria-developers@lists.launchpad.net mailing list.

Here is the output of runvm --help:

Usage: /home/knielsen/devel/maria/my/mariadb-tools/buildbot/runvm <options> image.qcow2 [command ...]

Boot the given KVM virtual machine image and wait for it to come up.
Run the list of commands one at a time, aborting on receiving an error.
When all commands are run (or one of them failed), shutdown the virtual
machine and exit.

Commands are by default run inside the virtual machine using ssh(1). By
prefixing a command with an equals sign '=', it will instead be run on the
host system (for example to copy files into or out of the virtual machine
using scp(1)).

Some care is taken to ensure that the virtual machine is shutdown
gracefully and not left running even in case the controlling tty is
closed or the parent process killed. If a previous virtual machine is
already running on a conflicting port, an attempt is made to shut it
down first. For this purpose, a PID file is created in $HOME/.runvm/

Available options:

  -p, --port=N        Forward this port on the host side to the ssh port (port
                      22) on the guest side. Must be different for each runvm
                      instance running in parallel to avoid conflicts. The
                      default is 2222.
                      To copy files in/out of the guest use a command prefixed
                      with '=' calling scp(1) with the -P option using the port
                      specified here, like this:
                          runvm img.qcow2 "=scp -P 2222 file.txt localhost:"
  -u, --user=USER     Name of the account to ssh into in the guest. Defaults to
                      the name of the user invoking runvm on the host.
  -m, --memory=N      Amount of memory (in megabytes) to allocate to the guest.
                      Defaults to 2047.
  --smp=N             Number of CPU cores to allocate to the guest.
                      Defaults to 2.
  -c, --cpu=NAME      Type of CPU to emulate for KVM, see qemu(1) for details.
                      For example:
                          --cpu=qemu64      For 64-bit amd64 emulation
                          --cpu=qemu32      For 32-bit x86 emulation
                          --cpu=qemu32,-nx  32-bit and disable "no-execute"
                      The default is qemu32,-nx
  --netdev=NAME       Network device to emulate. The 'virtio' device has good
                      performance but may not have driver support in all
                      operating systems, if so another can be specified.
                      The default is virtio.
  --kvm=OPT           Pass additional option OPT to kvm. Specify multiple times
                      to pass more than one option. For example
                          runvm --kvm=-cdrom --kvm=mycd.iso img.qcow2 ...
  --initial-sleep=SECS
                      Wait this many seconds before starting to poll the guest
                      ssh port for it to be up. Default 15.
  --startup-timeout=SECS
                      Wait at most this many seconds for the guest OS to respond
                      to ssh. If this time is exceeded assume it has failed to
                      boot correctly. Default 300.
  --shutdown-timeout=SECS
                      Wait at most this many seconds for the guest OS to
                      shutdown gracefully after sending a shutdown command. If
                      this time is exceeded, assume the guest has failed to
                      shutdown gracefully and kill it forcibly. Default 120.
  --kvm-retries=N     If the guest fails to come up, retry the boot this many
                      times before giving up. This helps if the virtual machine
                      sometimes crashes during boot. Default 3.
  -l, --logfile=FILE  File to redirect the output from kvm into. This includes
                      any (error) messages from kvm, and also includes anything
                      the guest writes to the kvm emulated serial port (it can
                      be useful to set the guest to send boot loader and kernel
                      messages to the serial console and log them with this
                      option). Default is to not log this output anywhere.
  -b, --base-image=IMG
                      Instead of booting an existing image, create a new
                      copy-on-write image based on IMG. This uses the -b option
                      of qemu-img(1). IMG is not modified in any way. This way,
                      the booted image can be discarded after use, so that each
                      use of IMG is using the same reference image with no risk
                      of "polution" between different invocations.
                      Note that this DELETES any existing image of the same
                      name as the one specified on the command line to boot! It
                      will be replaced with the image created as a copy of IMG,
                      with any modifications done during the runvm session.
Jesper Louis Andersen a.k.a. jlouis
The state of Haskell-Torrent (January 16, 2010, 10:31 CET)

Implementing processes

The Haskell Bittorrent project is evolving at a steady state these days. In the last couple of days, we have implemented most of the code relevant for carrying out choking of peers. Choking is the process by which you only communicate to a few peers at a time. Thus TCP/IP congestion can be avoided which drives up the download and upload rates. This post is not on this part however, which must wait a bit.

A fellow dane, Thomas Christensen, heeded my call and did some hlint runs over the code. Hopefully, we’ll see more work from him (github). Alex Mason has added even more parsing stuff through Cereal to the code, fixed a number of bugs in the parser and improved its general state. His venture is described on his blog (here).

Processes

I will be talking about processes in this post. When haskell-torrent started, our processes were simply “things spawned in the IO monad”. The approach works, but it quickly becomes inadequate for several reasons. In Haskell and FP in general, a lot of power stems from the idea that we can write a large set of small building blocks and then compose them together to form increasingly larger and larger blocks as we go. When composing, we use a fairly small number of helpers — readily present in the standard libraries.

When running in IO, we quickly end up with a lot of state. This can of course be passed around by “hand” and tail-calls. Unfortunately, this means we will end up using a lot of our precious coding time doing just exactly that. To optimize, we need a way to reflect away configuration and state when we don’t need it, and reify the information at certain points in the program where it is necessary to know the state.

The ubiquitious tool in Haskell for this are Monads. Not a single monad like IO, but a for-the-case relevant monad built from monad transformers. A couple of days ago, I installed XMonad by Spencer Janssen, Don Stewart, Jason Creighton and many more. This is a window manager — but surprisingly, it needs to solve some problems similar to the one in haskell-torrent. By inspiration from XMonad, we define

> newtype Process a b c = Process (ReaderT a (StateT b IO) c)
>    deriving (Functor, Monad, MonadIO, MonadState b, MonadReader a, Typeable)

That is, a Process is a type. It contains some configuration data a, an internal state b and is in the process of evaluating to a value of type c. We use a Reader transformer so we can ask for configuration data when we need it. We do not expect this configuration data to be altered when the process runs. A State Transformer takes care of the internal state of the process. Finally, we let the underlying monad be IO. This gives us access to CML and the outside world.

We let GHC derive a large set of things automatically (using several extensions in the process). This gives an easier way to manipulate the state when the process is running.

Running a Process is easy:

> runP :: a -> b -> Process a b c -> IO (c, b)
> runP c st (Process p) = runStateT (runReaderT p c) st

which is exactly like in XMonad. Spawning a new process is also fairly easy:

> spawnP :: a -> b -> Process a b () -> IO ThreadId
> spawnP c st p = spawn proc
>   where proc = do runP c st p
>                   return ()

In general different processes will have different configurations a. These will usually contain the channels on which the process can communicate. We then define a type class

> class Logging a where
>   getLogger :: a -> LogChannel
> 
> instance Logging LogChannel where
>   getLogger = id

of types that contain a logger channel. This means we can define a generic log function like this:

> log :: Logging a => String -> Process a b ()
> log msg = do
>     logC <- asks getLogger
>     liftIO $ logMsg logC msg

Type classes are a magnificent tool when we want to coerce a general function on top of different types. Many of our configurations in the client will instance the Logging class and then the log function knows how to access the logger in the Reader.

What does this buy us

The advantage of doing this change on the code is twofold: First, the amount of parameter passing is considerably reduced. Reflection into the monad solves this problem. We are now able to compose easier. Function composition is considerably harder when there are many parameters abound. With the change, preliminary restructuring of the Peer process shows a much simpler flow. Also, there are now ample refactoring opportunities available with the change.

Second, the monad means we can use locality much more to our advantage. A common idiom is to modify the state of the process or to retrieve the current state for query. This now happens locally at the point where it is needed. Before, we might have needed to pass a parameter through several functions and then use it.

What next?

There are a small number of things that needs to be addressed before we can claim that the client is a full bittorrent client:

  • The client needs to correctly handle the concept of interest. It must tell other clients if it is interested in the pieces they have at their disposal for transmission. I have some preliminary code for doing this.
  • The client needs to correctly tell the tracker how many bytes it uploaded and downloaded. This measure is needed on many private trackers as they require people to upload data back.
  • The client needs to be better at choosing the next eligible piece. Choosing one randomly is good enough.
  • The client needs to handle multi-file torrents. It is not as hard as it may sound — the only part of the system that needs to know about files is the code handling the file system. All other parts can just keep on transferring pieces.
  • For choking to work correctly, we must know how fast we are currently transferring to a peer. This is an interesting little problem if somebody feels their curiosity tickled :)
  • We currently take space proportional to torrent size due to our SHA1 calculation being slow and not use a file descriptor. Research into a faster SHA1 library would be really beneficial.
  • We need to accept incoming connections. The system only connects outward at the moment.

And of course, it needs some testing in a non-lab setting. Currently it can seed and leech, but my setup is very simple: Opentracker and rtorrent on another computer.

The main github repository for haskell-torrent is here.

January 15, 2010
Poul-Henning Kamp a.k.a. phk
Lenovosagen: lukket retsmøde. (January 15, 2010, 10:26 CET)
Poul-Henning Kamp Jeg modtog en "duplik" fra Lenovos advokat igår. Intet nyt. Svært at afgøre om de ikke kan eller ikke vil forholde sig til sagens substans. Har ikke umiddelbart nogen planer om at svare derp…
IBM og Canonical i nyt Ubuntu push (January 15, 2010, 08:40 CET)

På bloggen The VAR Guy beretter man fra kilder, at Canonical, firmaet bag Ubuntu, har nyheder at præsentere på den kommende IBM Lotusphere konference i Orlando den 18. januar.

Det skal ses som et modtræk mod Microsofts Windows 7 kampagne, og foregår i et samarbejde mellem Canonical og IBM.

Ifølge kilden vil Canonical fremover kunne tilbyde et supportprogram til IBM’s Lotus Symphony, IBM’s kontorpakke baseret på OpenOffice, og vil tilbyde dette direkte samt gennem Canonicals partnerkanal. Supportprogrammet er naturligvis rettet mod IBMs Client for SmartWork (ICSW) på Ubuntu, som IBM og Canonical tidligere har annonceret samarbejde omkring.

Der er selvfølgelig intet revolutionerende i dette, men det skal ses som endnu et skridt og endnu en mulighed for kunder, som ønsker at skifte til en anden platform, men som stadigvæk ønsker de store IT-virksomheder som garant for deres software valg.

I Danmark er O-Biz Ubuntu Partner, og forhandler derfor Canonical løsninger.

Related posts

Leave a comment

January 14, 2010
ODF er standard i Region Midtjylland (January 14, 2010, 15:05 CET)

»En medarbejder sendte et Office 2007-regneark til en Office 2003-bruger og bad ham følge op på de celler, der var markeret med rødt. Men da modtageren åbnede excel-dokumentet, var der hverken røde, gule eller grønne markeringer,«

Version2.dk beretter, at for at løse medarbejderes problemer med at dele filer mellem Microsoft Offices forskellige versioner, er Region Midtjylland nødt til anvende ODF som standardformat.

Det amerikanske IT-firma, SUN, som i sin tid lavede startede kontorpakken Open Office, og der som standard benytter ODF, har lavet et særligt ODF-plugin til Microsoft Office, som kan installeres, og gør brugere i stand til at gemme i ODF-format.

ODF-formatet har, i modsætning til OOXML, bevist sin modenhed, og at det er klar til at blive brugt som standardformat til udveksling af dokumenter.

Den 22. januar er der høring om åbne standarder i Folketinget. Regeringen med Helge Sander i spidsen vælger bevidst at trække beslutningen ud, da man ikke ønsker et valg af ODF, mens oppositionen og Dansk Folkepart danner flertal for ODF.

Der er indkaldt til høring for at få belyst sagen fra flere vinkler endnu, da oppositionen foretrækker at få Helge Sander og regeringen med på en aftale fremfor at sætte regeringen i mindretal.

Ønsker du at deltage i høringen, kan man tilmelde sig her: http://surl.dk/6xi

Related posts

Leave a comment

January 13, 2010
Poul-Henning Kamp a.k.a. phk
Hvem hepper kineserne på ? (January 13, 2010, 14:26 CET)
Poul-Henning Kamp Kinas Centralkomite imod Google har alle mulige muligheder for at blive årets brag, om ikke andet så i pressen. Det er nogenlunde givet at Centralkomiteen vil give Google en lille gul plastikspand at …
Kom til høring om Open Office (January 13, 2010, 06:30 CET)

Det kan ikke have forbigået mange IT-interesseredes næser, at Folketinget står overfor at vælge dokumentformat det offentlige skal bruge i de kommende år.

Kort fortalt er der to formater i spil: ODF og OOXML.

Valget som folketingspolitikerne står med, er om at man kun skal anvende ét format, eller om man skal vælge to. OOXML findes nemlig i to udgaver: Transitional og Strict, hvor transitional er et overgangsformat til det endelige OOXML format i form af Strict engang ligger klar.

Bag ODF står firmaer som Google, IBM, SUN, Oracle og mange andre, og bruges primært i Open Office og lignende kontorpakker. OOXML er derimod lavet af Microsoft, og er dennes bud på en åben standard.

I Open Source branchen er der enighed om, at hvis man vælger 2 formater: ODF og OOXML Transitional, så vil det betyde en uændret position på marked for kontorpakker, fordi OOXML er så vanskelig at implementere, og fordi Microsoft kan fortsætte med business as usual.

ODF er ganske lettere at implementere, og et valg af ODF vil betyde at konkurrerende produkter som Open Office får det betydeligt lettere at få fodfæste på kontorpakke-markedet.

Venstre og Konservative har holdt stejlt på, at der skal vælges ODF og OOXML T,mens oppositionen inkl. Dansk Folkeparti foretrækker ODF og OOXML S. Helge Sander har i lang tid med held fået udsat og udsat beslutningen, som gang på gang forlyder at være tæt på en afgørelse.

Den 22. januar er der derfor en høring i Folkepartiet om emnet, hvor udvalgte parter skal tale, og hvor politikerne vil være til stede. Intet bliver afgjort her – det er igen de to lejre som mødes, men hvem ved om der kommer noget nyt frem, eller positioner rykkes.

I hvert fald kan man deltage i høringen, men skal blot tilmelde sig på forhånd:

http://surl.dk/6xi

Det er Dansk Folkeparti, som har arrangeret høringen.

Related posts

Leave a comment

January 12, 2010
Peter Makholm a.k.a. brother
DIFO vil gerne høre din mening (January 12, 2010, 20:51 CET)
Peter Makholm Vel hjemkommet fra DIFOs debatmøde om domænenavneskik og typosquatting ville det være på sin plads at komme med et referat, men jeg sidder lidt målløs. Hvad gik det egentligt ud på? DIFO siger de gern…
Peter Larsen a.k.a. czar
Fra typoskik mødet.. Et dejavu til Lissabon (January 12, 2010, 19:12 CET)
Peter Larsen

… just hjemkommet fra det “store” typosquatting og domæneskik møde.

Nu skal jeg sige noget positivt.. være glad for at vi flytter os, og at der er håb for ende af tunnelen. at vi mødes positivt med en domæneadministration som vil samarbejde med os almindelige mennesker, domæneejerene og registratorerne. Det er hvertfald illusionen..

… selve setupet har jeg set før, jeg sidder pludselig i Lissabon i mit hoved.. Anders sidder ved siden af mig.. Folk råber, det gør de ikke i København, noget forstyrre min drøm.. eller, Nej, det er det samme, det er “Just be nice” der taler.. Jeg bliver forvirret, er det her et dejavu?

Der tales pænt, folk smiler, men man har fornemmelsen af en kløft, dels en kløft imellem de mange advokater og de mange tekniske folk.. De taler ikke samme sprog, de forstår ikke samme sætning ens.. Hvad er et aktivt domæne, juristen forklarer.. Teknikken spørger igen.. Der svares igen.. Der spørges igen.. Det samme spørgsmål.. Det samme svar.. Intet svar.

Juristen gennemgår sager som hun mener viser en rød tråd igennem domæneklagenævnets fortolkning af domæneskik, ting værdilades, men værdien, og en reele hensigter er sværre at forstå for teknikkerne.. Værdi er lig med penge, hvor mange penge? Eller er det metaforisk værdi?

Der er ikke forståelse.. Jeg sidder pludselig igen i Lissabon i drømmen, eller er det reelt et mareridt, jeg kan stadig se Bob fra EURid der prøver at forklare masserne at man skal bare opføre sig pænt, så skal det nok gå med det nye .eu domæne.. på samme måde ser jeg at Mads Bryde Andersen forklare at det ikke er et problem at skifte email adresse, selv på tusindvis af sites, det er ikke et kriterium for kritik.

EURid skiftede stil efter Lissabon mødet, og lavede to advisory boards, et teknisk, og et politisk, jeg arbejder i det politiske advisory board for EURid.

Bob arbejder ikke mere for EURid, og har i en årrække ikke haft direkte kontakt til registratorer.

Leave a comment

January 11, 2010
Pihlen Peger På Podcast #2 – GIMP og PiTiVi (January 11, 2010, 19:58 CET)

Hej alle sammen

Ja, så blev det til et podcast igen :-)

Det blev længere end jeg lige havde regnet med, og jeg har muligvis vrøvlet for meget :P . Smid gerne en kommentar om afsnittet – det er så dejligt med feedback, og kom også gerne med forslag til emner, jeg kan tage op.

Jeg vil også gerne lige høre, om i synes det ER for langt, eller om længden og formatet passer jer fint. Det er jo JER, der skal lytte til det ;-)

Afsnittet handler om beslutningen fra UDS i november om at fjerne GIMP som default application i Ubuntu, og i stedet inkludere videoredigeringsprogrammet PiTiVi. God fornøjelse! :-)

Related posts

Hej alle sammen Ja, saring; blev det til et podcast igen :-) Det blev laelig;ngere end jeg lige havde regnet med, og jeg har muligvis vroslash;vlet for meget :P. Smid gerne en kommentar om afsnittet - det er saring; dejligt med feedback, og kom ogsaring; gerne med forslag til emner, jeg kan tage op. Jeg vil ogsaring; gerne lige hoslash;re, om i synes det ER for langt, eller om laelig;ngden og formatet passer jer fint. Det er jo JER, der skal lytte til det ;-) Afsnittet handler om beslutningen fra UDS i november om at fjerne GIMP som default application i Ubuntu, og i stedet inkludere videoredigeringsprogrammet PiTiVi. God fornoslash;jelse! :-)

Leave a comment

Frederik S. Olesen a.k.a. Freso
Slowly getting back in the game... (January 11, 2010, 07:32 CET)

So last night, I finally dug into Matt Butcher's Drupal 6 JavaScript and jQuery, which I actually got for review back in February. :/ Ah well, life has been hectic, but hopefully, I'll be able to look it through now, without too many interruptions. Thanks to ProxyChains and Hacklab.dk's server, I've also been able to access CVS and Subversion repositories outside of the school's rather restrictive firewall, which means I'm going to try and be an active Drupal contributor again; which means getting Language Icons ready for Drupal 7 and pushing Pathauto forwards in general.

I also have quite a few Drupal sites to do - Libertære Socialister, Skibslag 5, and Musik & Ungdom - so it looks like 2010 won't be entirely Drupal-free. =)

Leave a comment

Kenneth Geisshirt a.k.a. kneth
Kære politikere - standarden betyder noget (January 11, 2010, 07:00 CET)
Kenneth Geisshirt Vi nærmere os snart en beslutning i "formatkrigen". Personligt finder jeg ikke selve filformatet så vigtigt så længe det er åbent og tillader implementation af open source software. Men kære politikere, jeg vil bede jer om at tænke over to ting når I stemmer.

Leave a comment

Peter Toft a.k.a. pto
Peter Toft En ting som irriterer bla. min ven Sune Vuorela og mig - er priser på monitorer. Sune og jeg jager begge en lille sød skærm til en server. Størrelsesordenen 5 til 8 tommer og med VGA adapter. Opløsnin…
January 10, 2010
Kenneth Geisshirt a.k.a. kneth
Jeg skal til Open Source Days (January 10, 2010, 21:07 CET)
Kenneth Geisshirt Open Source Days 2010 nærmer sig - og jeg skal med. Fredag den 5. og lørdag den 6. marts 2010 åbnes dørene for nok Nordens største konference om Linux, FreeBSD og andet herligt open source software!

Leave a comment