Licht, Light, Lumo

warning: Creating default object from empty value in /www/htdocs/w0062791/arnebab/modules/taxonomy/taxonomy.pages.inc on line 33.

timezones of tccon stations

Timezones of most active TCCON stations in UTC+x (without daylight saving time (DST). Because I needed it and could not find a simple list quickly.

anmyondo: +9,
ascension: 0,
bialystok: +1,
bremen: +1,
caltech: -8,
darwin: 9, # Timezones2008 says 9 1/2???

NetzwerkB auf Bild-Niveau :(

→ Kommentar zur Aktion gegen Volker Beck von NetzwerkB.

Sie werfen hier soviel in einen Topf, dass ich Sie dabei nicht unterstützen kann und will.

Schlimmstes Beispiel:

Am Mittwoch, 10.

Ich lerne Steno, weil…

Ich lerne Stenografie, weil ich meine Schrift immer weiter entwickeln können will.

Ich lerne Steno, weil…

→ Mehr zu Steno…

Seite aktualisiert

Ich habe endlich draketo.de von Drupal 5 auf Drupal 6 aktualisiert. Das Theme habe ich noch nicht portiert, daher benutzt draketo.de jetzt erstmal das Standard-Layout von Drupal.

Menschenfeindliche Systeme

Du musst alles tun, was du kannst.

Gedanken zur Ausprägung verschiedener menschenfeindlicher Systeme.

Wenn du alles tun musst, was du kannst, hast du selbst kaum mehr Wahlfreiheit.

Druck:

  • Staats-Kommunismus: Staat stellt fest, was du kannst. Das ist deine Aufgabe.
  • Amerikanischer Kapitalismus: Wenn deine Qualifikation nicht passt, wirst du nicht genommen (zu schlecht oder zu gut → aufmüpfig). Ideologischer Druck.

Equal-Area Map Projections with Basemap and matplotlib/pylab

PDF (read as slides)

Org (reproduce)

Plotting global equal area maps with python, matplotlib/pylab and Basemap.

Table of Contents

information-disbalance creates a power-disbalance

→ a comment to You call it privacy invasion, I don't from Flameeyes.

What you state is a strong version of the “I’ve got nothing to hide” argument. If you’re interested in a thorough debunking, there is a very good article in the chronicle about that: Why Privacy Matters even if you have nothing to hide.

Thank you for your Flattr’s! | Danke für eure Flattr! | Dankon por vian Flattrn!

It’s always a great feeling to see a flattr - Thank you for your support!
You can find new free works for you enjoyment on draketo.de (infrequent and bursty) and 1w6.org (currently weekly but mostly in German).

ArneBab on Flattr

Es ist ein tolles Gefühl, geflattrd zu werden - Danke für eure Unterstützung!

Wahlprogramm der „Alternative für Deutschland“, kritisch gelesen

Ich habe inzwischen von mehreren Leuten gehört, diese Professoren von der AfD wären ja gebildet und hätten ein gutes Programm.

PDF (drucken)

Org (bearbeiten)

Um nicht nur meine Meinung zu schreiben, sondern sie auch zu belegen, habe ich das Programm nochmal Schritt für Schritt gegengelesen und kommentiert.

Ich bin nicht auf viel gestoßen, dem ich zustimmen kann (dafür auf einige Horrorstellen) - abgesehen von Punkten, die eh schon Gesetz sind.

Jetzt aber zum Programm.

Basic usecases for DVCS: Workflow Failures

If you came here searching for a way to set the username in Mercurial: just edit $HOME/.hgrc and add
    [ui]
    username = YOURNAME <EMAIL>
If that file does not exist, simply create it.

Update (2013-04-18): In #mercurial @ irc.freenode.net there were discussions yesterday for improving the help output if you do not have your username setup, yet.

1 Intro

I recently tried contributing to a new project again, and I was quite surprised which hurdles can be in your way, when you did not setup your environment, yet.

So I decided to put together a small test for the basic workflow: Cloning a project, doing and testing a change and pushing it back.

I did that for Git and Mercurial, because both break at different points.

I’ll express the basic usecase in Subversion:

  • svn checkout [project]
  • (hack, test, repeat)
  • (request commit rights)
  • svn commit -m "added X"

You can also replace the request for commit rights with creating a patch and sending it to a mailing list. But let’s take the easiest case of a new contributor who is directly welcomed into the project as trusted committer.

dvcs-basic-svn.png

A slightly more advanced workflow adds testing in a clean tree. In Subversion it looks almost like the simple commit:

dvcs-basic-svn-testing.png

Programm der „Alternative für Deutschland“

Belege für die Aussagen hier habe ich im Artikel Wahlprogramm der „Alternative für Deutschland“, kritisch gelesen geschrieben.

Ich wollte heute einen Artikel zum Programm der „Anternative für Deutschland schreiben und habe es geschafft, nach 3 Stunden Schreiben und Recherche den Artikel zu löschen. Aber die Nachdenkseiten treffen die Kritik in meinem Artikel zum Glück mit noch mehr Hintergrund, so dass ich stattdessen jetzt einfach auf den Artikel der Nachdenkseiten verlinke:

Hintergrund zur AfD von den Nachdenkseiten:
Können Markt­radikale und Nationalchauvinisten eine „Alternative für Deutschland“ sein?
— mit Unterstützerliste (und Hintergrund zu den Unterstützern).

Babcore: Emacs Customizations everyone should have

1 Intro

PDF-version (for printing)

Package (to install)

orgmode-version (for editing)

repository (for forking)

project page (for fun ☺)

Emacs Lisp (to use)

I have been tweaking my emacs configuration for years, now, and I added quite some cruft. But while searching for the right way to work, I also found some gems which I direly miss in pristine emacs.

This file is about those gems.

Babcore is strongly related to Prelude. Actually it is exactly like prelude, just with the stuff I consider essential.

But before we start, there is one crucial piece of advice which everyone who uses Emacs should know:

C-g: abort

Hold control and hit g.

That gets you out of almost any situation. If anything goes wrong, just hit C-g repeatedly till the problem is gone - or you cooled off far enough to realize that a no-op is the best way to react.

To repeat: If anything goes wrong, just hit C-g.

wisp: Whitespace to Lisp: An indentation to parentheses preprocessor to get more readable Lisp

I love the syntax of Python, but crave the simplicity and power of Lisp.
display "Hello World!"      ↦    (display "Hello World!")
define : hello-world        ↦    (define (hello-world)
  display "Hello World!"    ↦      (display "Hello World!"))
Update (2014-10-17): wisp v0.6.6 has a new implementation of the parser which now uses the scheme read function. `wisp-scheme.w` parses directly to a scheme syntax-tree instead of a scheme file to be more suitable to an SRFI. For more details, see the Guile 2.0.x and bootstrap wisp:
wget https://bitbucket.org/ArneBab/wisp/downloads/wisp-0.6.6.tar.gz;
tar xf wisp-0.6.6.tar.gz; cd wisp-0.6.6;
./configure; make;
guile -L . --language=wisp
That’s it - have fun with wisp syntax at the REPL!
Caveat: It does not support the ' prefix yet (syntax point 4).
Update (2014-01-04): Resolved the name-clash together with Steve Purcell und Kris Jenkins: the javascript wisp-mode was renamed to wispjs-mode and wisp.el is called wisp-mode 0.1.5 again. It provides syntax highlighting for Emacs and minimal indentation support via tab. You can install it with `M-x package-install wisp-mode`
Update (2014-01-03): wisp-mode.el was renamed to wisp 0.1.4 to avoid a name clash with wisp-mode for the javascript-based wisp.
Update (2013-09-13): Wisp now has a REPL! Thanks go to GNU Guile and especially Mark Weaver, who guided me through the process (along with nalaginrut who answered my first clueless questions…).
To test the REPL, get the current code snapshot, unpack it, run ./bootstrap.sh, start guile with $ guile -L . (requires guile 2.x) and enter ,language wisp.
Example usage:
display "Hello World!\n"
then hit enter thrice.
Voilà, you have wisp at the REPL!
Caveeat: the wisp-parser is still experimental and contains known bugs. Use it for testing, but please do not rely on it for important stuff, yet.
Update (2013-09-10): wisp-guile.w can now parse itself! Bootstrapping: The magical feeling of seeing a language (dialect) grow up to live by itself: python3 wisp.py wisp-guile.w > 1 && guile 1 wisp-guile.w > 2 && guile 2 wisp-guile.w > 3 && diff 2 3. Starting today, wisp is implemented in wisp.
Update (2013-08-08): Wisp 0.3.1 released (Changelog).

Wirtschaftsaufsicht für legale Prostitution

→ Antwort auf die Aussage „Es gäbe so viel Sinnvolleres anzuprangern als legale Prostitution“ von Antje Lang-Lendorff in der Taz.

Bei legaler Prostitution gibt es sehr wohl etwas anzuprangern: Dass im Zuge der Legalisierung nicht gleichzeitig eine effektive Wirtschaftsaufsicht eingeführt wurde.

Für jede Masseurin, Psychologin oder Gastwirtin gibt es hierzulande klare Gesetze, und ein Verstoß dagegen führt zur Schließung.

Wir haben Gesetze dafür, wie Salat in Dönerbuden aufbewahrt werden muss, und ein Verstoß dagegen wird direkt geahndet. Wir dürfen nichtmal ein Soya-Getränk auf der Verpackung als Milch bezeichnen.

Warum haben wir dann keine geprüften Vorgaben, die regeln, wie ein Bordell geführt werden muss, damit die Rechte aller Beteiligten gewahrt bleiben? Und die Auskunftspflichten definieren, die natürlich geprüft werden?

Was wir dafür brauchen ist einfach eine Definition, was gute Prostitution ist und wie sie funktionieren kann.

Spaß mit import from in Python

→ Antwort auf Is it in this case : http://identi.ca/url/75523035 (see : [01:16]1 — Julien-Claude Fagot, die eine Antwort war auf One more reason why you should not use “from bla import foo”: print __import__(obs.__class__.__module__).__file__ — ArneBab

Datei: bla.py

def foo():
    print "bla"

Interaktiver Test:

\>>> import bla
\>>> bla.foo()
bla
\>>> def fu():
...   print "fu"
...
\>>> fu()
fu
\>>> from bla import foo
\>>> foo()
bla
\>>> bla.foo = fu
\>>> bla.foo()
fu
\>>> foo()
bla

Profifrage: Was passiert, wenn du from bla import foo nach bla.foo = fu ausführst?


  1. dsop: if you use 'bla.foo', then yes, you can assign to bla.foo and you'll see the change. If you do 'from bla import foo', then your locally imported 'foo' will not 'see' changes to bla.foo. 

Going from a simple Makefile to Autotools

Table of Contents

Links

Intro

I recently started looking into Autotools, to make it easier to run my code on multiple platforms.

Naturally you can use cmake or scons or waf or ninja or tup, all of which are interesting in there own respect. But none of them has seen the amount of testing which went into autotools, and none of them have the amount of tweaks needed to support about every system under the sun. And I recently found pyconfigure which allows using autotools with python and offers detection of library features.

Namespaces in Emacs Lisp - ohne den Interpreter zu ändern

» Adding namespace support to emacs lisp in a macro with just 15 lines of code - it’s things like this which make lisp feel like the mother of all languages.«1

(defmacro namespace (prefix &rest sexps)
  (let* ((naive-dfs-map
          (lambda (fun tree)
            (mapcar (lambda (n) (if (listp n) (funcall naive-dfs-map fun n)
                                  (funcall fun n))) tree)))
         (to-rewrite (loop for sexp in sexps
                           when (member (car sexp)
                                        '(defvar defmacro defun))
                           collect (cadr sexp)))
         (fixed-sexps (funcall naive-dfs-map
                               (lambda (n) (if (member n to-rewrite)
                                               (intern
                                                (format "%s-%s" prefix n)) n))
                               sexps)))
    `(progn ,@fixed-sexps)))
(provide 'namespace)
(require 'namespace)
(namespace foo
           (defun bar ()
             "bar")
           (defun foo (s)
               "foo"))
(foo-foo (foo-bar))

Disclaimer: This code is not perfect. It will likely fail in unpredictable ways, and the number of not supported corner-cases is probably huge - and unknown. But (and that’s the relevant result) you can do this right. Rainer Joswig gives pointers for that on Stackoverflow: “What you actually need is a so-called code-walker”. Also he shows examples where the code breaks.

(Der Hauptteil dieses Codes stammt von vpit3833 und konr und ich darf ihn verwenden. Er funktioniert dank einer Korrektur von Stefan. Er ist nicht perfekt, aber da er mir v.a. dazu dienen soll, meine eigenen Codeschnipsel besser zu organisieren, sollte ich das verschmerzen können)

Der Code mag schwer lesbar sein, hat aber riesige Implikationen: Du als einfacher Endnutzer des Lisp-Interpreters kannst Namespace-Support hinzufügen, ohne dass die Hauptentwickler dafür irgendetwas machen müssen.


  1. Der Code stammt größtenteils aus einer Diskussion auf Stackoverflow

Tail Call Optimization (TCO), dependency, broken debug builds in C and C++ — and gcc 4.8

TCO: Reducing the algorithmic complexity of recursion.
Debug build: Add overhead to a program to trace errors.
Debug without TCO: Obliterate any possibility of fixing recursion bugs.

“Never develop with optimizations which the debug mode of the compiler of the future maintainer of your code does not use.”°

UPDATE: GCC 4.8 gives us -Og -foptimize-sibling-calls which generates nice-backtraces, and I had a few quite embarrassing errors in my C - thanks to AKF for the catch!

1 Intro

Tail Call Optimization (TCO) makes this

def foo(n):
    print(n)
    return foo(n+1)
foo(1)

behave like this

def foo(n):
    print(n)
    return n+1
n = 1 while True: n = foo(n)

Test of the hg evolve extension for easier upstreaming

1 Rationale

PDF-version (for printing)

orgmode-version (for editing)

repository (for forking)

Currently I rework my code extensively before I push it into upstream SVN. Some of that is inconvenient and it would be nicer to have easy to use refactoring tools.

hg evolve might offer that.

This test uses the mutable-hg extension in revision c70a1091e0d8 (24 changesets after 2.1.0). It will likely be obsolete, soon, since mutable-hg is currently moved into Mercurial core by Pierre-Yves David, its main developer. I hope it will be useful for you, to assess the future possibilities of Mercurial today. This is not (only) a pun on “obsolete”, the functionality at the core of evolve which allows safe, collaborative history rewriting ☺

Steno: Eindeutig rekonstruierbare Piktogramme

Steno1 strukturiert den Prozess der Vereinfachung der Schrift, so dass sichergestellt ist, dass die für des Verständnis des Inhaltes notwendigen Teile der Schrift erhalten bleiben.

Mir ermöglicht es gleichzeitig entspanntes, schönes und schnelles2 Schreiben, das ich mein ganzes Leben lang verbessern kann.

Beispiel:   Steno Stufe 23
             „Wir danken dem Käufer des Essens“

In der Schule hatte ich immer Probleme mit der Schönschreibung. Die Schrift war für mich ein Werkzeug, um Informationen festzuhalten. Ich habe daher nicht eingesehen, warum ich Zeit darauf verwenden sollte, meine Buchstaben besonders rund, glatt oder verschnörkelt zu machen. Schließlich waren selbst grausig verstümmelte Buchstaben noch lesbar.

Beim Versuch den Aufwand beim Schreiben zu reduzieren habe ich meine Schrift verkleinert und die Formen der Buchstaben und Wörter reduziert (zum Beispiel wurde die Nachsilbe -ung einfach zu einem angehängten -g, erkennbar durch die Schleife unten).

Ein großer Teil der Schrift war für mich einfach nur Ballast.


  1. Steno steht für Stenografie (Kurzschrift) und ist nicht zu verwechseln mit Stego: Steganografie (der Kunst, Informationen in anderen Informationen zu verstecken). 

  2. Um meine eigene Geschwindigkeit zu testen, habe ich Testtexte mit im Deutschen häufigen Wörtern getippt und in Steno geschrieben. Beim Tippen komme ich auf 423 Zeichen pro Minute. Beim entspannten Schreiben in Steno auf 250 bis 3004. Allerdings verbrauche ich bei Steno immernoch viel Zeit mit Denken (vor jedem Wort), weil die Umsetzung von Wort in Druckschrift in ein Steno-Kürzel bei mir noch nicht komplett automatisch läuft. Und Steno fühlt sich deutlich entspannter und natürlicher an als Tippen. 

  3. Das Bild ist mit Inkscape erstellt. Dank Glättung der Pfade sieht man nicht so deutlich, dass ich die Zeichen mit der Maus gemahlt habe… ☺ 

  4. 250 Zeichen pro Minute sind etwa 100 Silben pro Minute. Professionelle Stenografen müssen mindestens 360 Silben pro Minute schreiben können, ich hätte also noch einiges an Weg vor mir, wenn ich mit Steno Geld verdienen wollte ☺ 

Frauenfeindlichkeit auf Hacker-Treffen

Ich lese gerade zum zweiten oder dritten Mal dieses Jahr von einer Frau, die sehr engagiert in die Hacker-Gemeinschaft eingestiegen ist und rausgedrängt und angegriffen wurde, ohne Hilfe zu bekommen.

Update: Asher Wolfs Seite wurde gehackt. Der Text ist auf pastebin gespiegelt. Ich habe ihn in freenet hochgeladen: asher-hacker-community-talk.txt.

The dynamics of free culture and the danger of noncommercial clauses

NC covered works trick people into investing in a dead end

Free licensing lowers the barrier of entry to creating cultural works, which unlocks a dynamic where people can realize their ideas much easier - and where culture can actually live, creating memes, adjusting them to new situations and using new approaches with old topics.

But for that to really take off, people have to be able to make a living from their creations - which build on other works.

Motivation and Reward

Debunking the myth that you can increase the performance of creative workers with carrot and stick.

Update: I sent this text to the gnu maintainers, and after the original article had been offline for several years, they now managed to convince Alfie Kohn to allow them to distribute the article again. So Studies Find Reward Often No Motivator is finally online again! → gnu.org/p/motivation.html
My text might not have been included on the GNU websites, but it fullfilled its purpose - though in a different way than I had expected.

Update: I got the feedback that some messages in this article are still unclear. It should not implicate, that “in order to increase motivation in the free software world people need to be offered a high income and a long term contract”. Paying a good income in a long term contract is a way to avoid the harmful effect payment can have on performance while enabling someone to work full-time on the project. An empirical study found, that the source and intensity of motivation of free software developers does not differ significantly between people who work for hire and people who work without payment, so many companies employing free software developers seem to do it right (or only the companies who do it right can keep their free software programmers).1

A few months ago, the GNU project had to withdraw its article on motivation and monetary reward, because its author did not allow them to spread it anymore. So I recreated its core - with references to solid research.

Executive Summary

For creative tasks, the quality of performance strongly correllates with intrinsic motivation: Being interested in the task itself.

This article will only talk about that.

The main factors which are commonly associated with intrinsic motivation are:

  • Positive verbal feedback which increases intrinsic motivation.
  • Payment independent of performance which actually has no effect.
  • Payment dependent on performance which reduces the motivation on the long term.
  • Negative verbal feedback which directly reduces intrinsic motivation.
  • Threatening someone with punishment which strongly reduces intrinsic motivation.

To make it short: Anything which diverts the focus from the task at hand towards some external matter (either positive or negative) reduces the intrinsic motivation and that in turn reduces work performance.

If you want to help people perform well, make sure that they don’t have to worry about other stuff besides their work and give them positive verbal feedback about the work they do.

Note: In the paper »Why Hackers Do What They Do: Understanding Motivation and Effort in Free/Open Source Software Projects« from 2005, Karim R. Lakhani and Robert G Wolf showed empirically that the payment people get to work in free software projects has no detrimental effect on their intrinsic motivation. In their sample 40% of the developers were paid for their work on free software projects and their intrinsic motivation was as high as the motivation of unpaid developers.


  1. We find […], that enjoyment-based intrinsic motivation, namely how creative a person feels when working on the project, is the strongest and most pervasive driver. The source and intensity of motivation of free software developers does not differ significantly between people who work for hire and people who work without payment. From Why Hackers Do What They Do: Understanding Motivation and Effort in Free/Open Source Software Projects by Karim R. Lakhani* and Robert G Wolf** from the * MIT Sloan School of Management | The Boston Consulting Group and ** The Boston Consulting Group. 

Monitor bringt typischen Tauschbörsen-FUD: Fordere Richtigstellung

→ Offener Brief an die Redaktion von Monitor (Kontakt).

Sehr geehrtes Monitor-Team,

In der Urheberrechts-Sendung vom 26.04.2012 stellten Sie einige seltsame Aussagen auf:

„Wenn das geschieht wird das gesamte Musikalische Programm aus Tauschbörsen frei erhältlich sein“

Das ist doch schon seit Jahren so…

„und das wird dazu führen, dass nur noch sehr wenige Konsumenten aus legalen Quellen diese Musik erwerben“

Realitäts-Check: Die Musikverlage verdienen mehr Geld denn je.

Freie Software kann Geld bringen

→ Kommentar zum Artikel Open Source ist tot von Stefan Wienströer, in dem er sich über anmaßende Benutzer beklagt, die von ihm gratis Telefonsupport fordern….

Hi Stefan,

Lass dich bitte von so ein paar Idioten nicht unterkriegen. Wenn ich ein Programm geschrieben hätte, das so viele Leute toll finden, dass sogar Leute dabei sind, die Telefonsupport wollen, würde ich einfach antworten: „Du willst Telefonsupport? Kein Ding: 20€ die Stunde, dann machen wir das.

Amokläufer sind UNAUFFÄLLIG - die Ultimative Theorie des Spiegels

Der Spiegel hat heute die ultimative Theorie aufgestellt, wie man Amokläufer erkennt.[^link] Was alle Amokläufer vereint:

Sie sind UNAUFFÄLLIG

An Bildung sparen…wo wagen sie es nicht, zu sparen?

Die Grünen in BW wollen über 10 000 Lehrerstellen streichen. Nadine Michel aus der Taz nennt das richtigerweise einen Verrat am Bürger und an ihren Wahlversprechen. Aber es gibt eine ganz essenzielle Frage, die sie nicht stellt:

An welchen Stellen wagen sie es nicht, zu sparen?
Oder mehr Geld reinzuholen?

Das sind die Fragen, die jetzt wirklich wichtig wären!

Denn wer an Bildung spart, will damit in erster Linie vermeiden, woanders zu sparen - oder wo anders Geld zu holen.

SPD: Das Kernthema zurückgewinnen - oder untergehen

Die SPD hatte mal ein Kernthema: Soziale Gerechtigkeit. Oft als Kampf von unten gegen oben. Dann haben sie es mit Hartz 4 verraten. Und für den stichhaltigen Teil des Themas ist die Linke entstanden.

Bringt halt nichts, wenn man argumentiert, dass gut laufende Wirtschaft wichtig für Beschäftigte ist, wenn die Beschäftigten sehen, dass es ihren Firmen immer besser geht, sie aber immer weniger Lohn kriegen und immer weniger Beschäftigungssicherheit haben.

Neither Humble nor Indie Bundle

Comment to New Humble Bundle Is Windows Only, DRM Games.

The new Humble Indie Bundle is no longer free, indie, cross-plattform or user-respecting.

How to make companies act ethically

→ comment on Slashdot concerning Unexpected methods to promote freedom?

Was it really Apple who ended DRM? Would they have done so without the protests and evangelizing against DRM? Without protesters in front of Apple Stores? And without the many people telling their friends to just not accept DRM?

That “preaching” created a situation where Apple could reap monetary gain from doing the right thing.

Inhalt abgleichen