taking notes


2005-12-19 21:00 CET

For all those of you who are currently thinking which tome next to dig through, here's a list of publications i'm currently consuming:

  • Professionelle Softwareentwicklung mit PHP 5 by Sebastian Bergmann is a very recommended book to get a general idea of the new features PHP5 provides when it comes to error-handling or OOP matters for example. It is written in a straight "hands-on" style, gives a small impression on topics like XML and next to all this it is even available for free download online. Sadly, as the title suggests it's written in german and i'm not aware of any english translation yet, please let me know if you know better.
  • Those slices about LiveJournal's hard- and software architecture (today Sixapart), an international blog-hosting service, are imho an interesting read for web-developer and -administrators, too. They outline the evolution of their system-, database- and codestructures under the aspects of availability and scalability, and please allow me to draw your attention to page 28 ;-)
  • For those calm moments i'm reading The Art of Unix Programming by Eric S. Raymond at the moment. Contains some history-blabla, but also a lot of things you should've thought about at least once. This book is available for free download on it's homepage as well.

Server downtime

2005-12-12 21:30 CET

As some of you may have noticed my server "unixuni.org", which hosts "lenix.de" among some other pages, wasn't available during the last 23 hours.

The original reason for that were modifications to my providers power- infrastructure. After these were finished the computer started up just fine, but it didn't seem to have a network-connection anymore.

The network device was recognized and initiated by FreeBSD normally, but although the LEDs on the device kept flashing really fast there were no packets transmitted, not even ARP. Trying to reboot or using another switchport brought no luck neither.

A breakthrough was finally achieved by completly switching off power and unplugging the cables, waiting some seconds and booting again. After this procedure the systems operation was restored to normal: that's how simple hardware works sometimes ;-)

Devil's Pie - Matters

2005-11-22 05:30 CET

UPDATE 2005-12-19 20:00 CET

I've learned that foosel came up with a much more complete documentation of the "Devil's Pie" configuration format. She has even colored syntax-highlighting, so you better go there :-).

Starting with the release of Devil's Pie 0.13 the configuration-syntax of this program has changed completly and lot of questions arose. I'll write down here what came into my mind related to those questions i've stumbled into or which were directed to me by others.

  • All those example s-exprs i've seen yet in context of devilspie-configuration seems to be one-liners only. I would like to point out that it is possible to spread an expression over multiple lines which increases readability dramatically. For example, compare:
    (if (or (matches (window_name) "Skype") (matches (window_name) "formMain")) (begin (geometry "230x500+1046+44") (set_workspace 1)))
          (matches (window_name) "Skype")
          (matches (window_name) "formMain")
          (geometry "230x500+1046+44")
          (set_workspace 1)
    and see yourself.
  • Next to this, it is confusing in first place to distinguish when to put something in parentheses or not. Here's a simple rule:
    A function call + its parameters is wrapped into one set of parentheses.
    There are no variables in Devilspie, so (window_name) in the above example is actually a function which returns the name of the window currently examined,
    (if ..) is a function, too, which evaluates the parameter and executes the second one if the evaluation resulted to a bool true.
    (geometry "...") is a function expecting one parameter - the geometry string and will apply some action on the window in question, same thing with (set_workspace..), a.s.o.
  • Knowing this it would be nice to have a reference of functions at hand, so here it goes extracted from parser.c and e-sexp.c:
    • expandos
      (window_name), (window_role), (application_name)
    • evaluations
      (if condition action),
      (and condition [condition ..]), (or condition [condition ..]),
      (not condition),
      (= value value), (< value value), (> value value),
      (is term pattern), (contains term pattern), (matches term pattern)
    • actions
      (+ value value), (- value value),
      (begin action [action ..]),
      (geometry value),
      (fullscreen value),
      (maximize value), (maximize_vertically value), (maximize_horizontally value),
      (shade), (unshade),
      (pin), (unpin),
      (set_workspace value),
      (skip_pager value), (skip_tasklist value),
      (above), (below),
      (undecorate), (wintype)
    Be aware of the fact that this list might be incomplete and/or outdated and in some cases just wrong.
  • As a side note: The (debug) function doesn't print the (window_role) any more, as reported by Victor B. Gonzalez on irc. Is there a special reason for that?
    How about generating output which is re-usable, like:
    (and (is (window_title) "title string") (is (application_name) "app name") (is (window_role) "roleStr"))
    Even better would be accepting an optional format-parameter in (debug..) so any potential interaction with configuration-interfaces and such could be designed freely.

I would have written all this directly to devilspie-homepage to the release commentary, but i guess the formatting would have been screwed up and since there isn't any preview available i decided to put it here for the time being.

Mommy, i'm getting hits!

2005-11-07 13:30 CET

Hey, i feel constrained to write something down here since i just recognized all you visitors coming from Ross Burtonini.

I'm sorry for not presenting too much content yet, but actually i just asked Ross if he would mind linking my name in his Devil's Pie section 'cause if you google for "Guido Boehm" Devil's Pie currently turns out to be the first result.

Sorry again for not providing any interesting stuff in english yet, i'm reworking the "'bout me" area in german at the moment, but i didn't had any chance to translate it yet.