6.001 had been conceived to teach engineers how to take small parts that they understood entirely and use simple techniques to compose them into larger things that do what you want. But programming now isn’t so much like that, said Sussman. Nowadays you muck around with incomprehensible or nonexistent man pages for software you don’t know who wrote. You have to do basic science on your libraries to see how they work, trying out different inputs and seeing how the code reacts.
— ILC, Day Two

I worry about my child and the Internet all the time, even though she’s too young to have logged on yet. Here’s what I worry about. I worry that 10 or 15 years from now, she will come to me and say “Daddy, where were you when they took freedom of the press away from the Internet?”
— Mike Godwin, Electronic Frontier Foundation



After years of searching and trying to write one myself, I finally found a good outliner for Emacs! (And I could not have discovered it earlier, because it’s only a few weeks old.)

I am talking of orgstruct++-mode, a minor-mode implemented by org-mode. You probably know org-mode, a whopping monster of over 40kLOC of Elisp. In spite of trying to be an outliner itself, it has, however, a nice feature to edit indented lists of “bullet points”, for example:

- foo
- bar
- baz

You can just write the first line “manually” and then use M-RET to add new bullet points. Then, you can indent them with M-left and M-right. These keys are only bound on bullet points and have their usual behavior else (e.g. I use them for the excellent elscreen to change tabs). E.g. I can indent the “baz”-line with M-right:

- foo
- bar
  - baz

And then I can indent the “bar”-line and it will shift recursively:

- foo
  - bar
    - baz

This sounds pretty trivial, but if you think it is, you haven’t tried to implement it yourself. Your bullet points also can span multiple lines and have several paragraphs. For this you need orgstruct++-mode, the ++ add the indentation features. C-j and M-q work as expected:

- foo foofoo foofoofoo foo foofoo foofoofoo 
  foo foofoo foofoofoo
  foo foofoo foofoofoo

  meh mehmeh mehmehmeh

then turns to:

- foo foofoo foofoofoo foo foofoo foofoofoo foo foofoo foofoofoo
  foo foofoo foofoofoo

  meh mehmeh mehmehmeh

Also, TAB will smart-indent accordingly. Thus, we have almost everything we need for outlining. It simply feels right. A few more features:

- shuffling items
  - M-up: Move item up
  - M-down: Move item down
  - C-c ^: Sort items
- miscellaneous
  - C-c -: Change item marker (-, +, *, 1., 1))
  - C-c C-c: Toggle checkbox ([ ] -> [X])

Unfortunately, there are no options yet for folding in orgstruct++-mode. However, since the thing is indentation-based you can use, for example, selective display with C-x $ to get an overview of your outline. It would be nice to have better navigation in orgstruct as well. In the meantime, you can bind org-next-item like this:

(org-defkey orgstruct-mode-map [(C-up)]
    (orgstruct-make-binding 'org-previous-item 66601 [(C-up)]))
(org-defkey orgstruct-mode-map [(C-down)]
    (orgstruct-make-binding 'org-next-item 66602 [(C-down)]))

Also, for convenience, to create a subitem (please mail if you know how to do this easier):

(define-key orgstruct-mode-map [C-return] 
  '(lambda () "Insert a new heading or item demoted once."
     (execute-kbd-macro [M-return M-right])))

Finally, I have written some tools to load dashed-lists in Ruby and convert them to org-lists, HTML (XOXO) and linear text. It also can insert correct header numbering, either plain depth or Wittgenstein style.


Please don’t bury me
Down in that cold cold ground
No, I’d rather have ‘em cut me up
And pass me all around
— John Prine, Please Don’t Bury Me*

Newton said, “If others would think as hard as I did, then they would
get similar results.”
— Richard Hamming, “You and Your Research”



You’ve got all the armies, you’ve got all the arms
you’ve got all the armories
The harbor’s blockaded, the streets barricaded
every thought is under lock and key
There’s an idea rising that you can’t detect
from the same poor souls you claim to protect
There’s a violent burning hatred in every mothers son
you better watch out, ‘cause johnny’s got a gun
— Dead Moon, Johnny’s Got A Gun*





Aus der Schande tausendjähriger Entwürdigung als Kreatur der Männer ist das Weib erwacht. Es will Mensch sein, die Rechte und Anerkennung des Menschen haben. Daß die kämpfenden Frauen unserer Tage im Langen nach dem Gute der Freiheit vorbeigreifen und statt Menschenrechte Männerrechte begehren, soll uns nicht verdrießen. Die Not und die Verstocktheit der Zeit hat den Frauen Männerpflichten auferlegt. Vielleicht schafft sich doch einmal die Einsicht Bahn, daß nun nicht die Assimilation ans andere Geschlecht, sondern die Befreiung von seiner Herrschaft – das ist die Freiheit des Weibes in Liebe und Mutterschaft – das Glück des Frauentums wäre. Sie müssen ihre Ziele weit setzen, die Frauen, die in den Kampf getreten sind. Die Neubildung aller gesellschaftlichen Formen auf dem Boden des Mutterrechts müssen sie verlangen. Wenn sie es dann einmal erreichen, daß kein Weib mehr ein anderes deswegen verachtet, weil es Mutter ist, dann müssen sie die Genugtuung fühlen, daß ihr Werben und Kämpfen nicht umsonst war, wie sie selbst Zeugnis dafür sein sollten, daß die herrlichen Frauen der Romantik nicht umsonst die Vorbilder freier, schöner Weiblichkeit waren.
— Erich Mühsam, Idealistisches Manifest


Everywhere the lanes have changed leading to the dark
Everytime I go from you it just makes things so hard
All I want to say to you somehow in return
Everything we know from life never will get burned
— Pierced Arrows, The Wait



It’s the same story the crow told me
It’s the only one he know —
like the morning sun you come
and like the wind you go
Ain’t no time to hate,
barely time to wait
Wo-oah, what I want to know,
where does the time go?
— Grateful Dead, Uncle John’s Band



Copyright © 2008–2021