Readings
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
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)))
vs.
(if
(or
(matches (window_name) "Skype")
(matches (window_name) "formMain")
)
(begin
(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 ..]),
(debug),
(geometry value),
(fullscreen value),
(maximize value), (maximize_vertically value), (maximize_horizontally value),
(minimize),
(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.