So K. called me a brat, and rightly so. Now I could go on about
the bizarre dysfunctional ways A. and M. keep trying to drag me
into their extramarital insanity, but that would be overuse of
initials. I could tell you about Fatslaps and his plans to
splatter Harry with onions, but Harry is whimpering just about
the right amount. I'm talking about Harry, not Harry.
I could do a Marxist literary criticism of
The Garbage Pail
Kids Movie, but something disturbing happened to me,
indirectly leading me to have a flashback.
It was another century, though not more than a couple
miles away. As with all progress , some things are
better now, and some things are worse. Maybe that's
just how I see it. It's stereotypically geriatric to
reminisce about the past,
accentuating
the positive, but it's stereotypically me to only
comment on the negative. So in the interest of stalling,
here comes a m lange of the two. Value judgments are
left as an exercise for the reader, assuming the
prostitute/lover question isn't still getting top billing.
Warren Zevon was still alive. Nouvelle Vague hadn't
released any albums yet. I only knew one person who
spoke Brazilian Portuguese. I hadn't seen Rent yet.
I used to eat a lot more Colombian food. I refused
to eat tomatoes. Actually, I ate quite a few things
then that I don't now, and quite a few things now
that I didn't then. I don't remember what I ate that
night, but it wasn't Kraft dinner ; I'm sure of that.
I know because I went to see a free concert as performed
by the
Barenaked
Ladies. The concert was free because they were almost
completely unknown. I was introduced to them a while before,
by a dirty, dirty slut who squealed with delight because
the lyrics featured words such as erection . It took me
years of recovery to be able to appreciate that song. Years.
If she hadn't, I would have found out about them through
Minna Bromberg because she does a cover.
One of the people I was with shouted out to
Steven Page,
calling him by the wrong name. If being a
starstruck poseur weren't enough cause, I think
the error would have made me implode from embarrassment.
He took it on the chin.
I know this Canadian who keeps telling the same tired
old story that the Barenaked Ladies is the only Canadian
band to ever become famous outside of Canada. He uses
this dubious claim to segue into his bit about how
The
Tragically Hip is really popular in Canada, but unknown
everywhere else. I tell him that I've heard of The Tragically
Hip. He doesn't believe me. I try telling him that I've
never heard of Moxy Fr vous or Rush, at which point he breaks
down and admits that everyone has heard of Rush. Then we
repeat the conversation a month later.
So BNL did get all famous and mainstream and STUFF. That
night, they urged everyone in the audience to promote them
so they could GET PAID and sell out to The Man. I must
confess not comprehending their earnestness and the
gravity of the situation. I also never expected them
to be played on
Z100.
Boycott ClearChannel. They're sellouts now, but they
weren't then, and a good time was had by all.
At the time,
If
I Had $1000000 might've been their most popular song.
AS SUCH, the more rabid fans in the audience had brought
boxes and boxes of macaroni & cheese, as well as a stuffed
monkey or two. These items were flung at the stage, at
appropriate times, frightening the band. I don't believe
that anyone threw a green dress.
Now, Canadians are funny people. They like to flap their
heads and do medleys and covers and rap gratuitously in
the middle of concerts. Well, Rush doesn't, but
Moxy Fr vous and BNL do, and that's enough for me to
make a sweeping generalization, because Rush can be
disqualified purely on the mullet factor.
You probably don't know this, but
If
I Had $1000000 is a song which gets a lot of variation
and perhaps improv. For example, the owner of the remains
will vary, and they'll vamp the introduction with the lyrics
of some other song. You can hear it on the
Rock
Spectacle album, where they lead in with
Grade 9.
That night they did Prince's
Raspberry
Beret. We swooned.
We swooned.
Decorators in Python are just fantastic. Here are a few I've used in
Postr. Update: the wonderful James Hensbridge expanded
the decorators, so I've updated this post.
def threaded(f):
def wrapper(*args, **kwargs):
t = threading.Thread(target=f, args=args, kwargs=kwargs)
t.setDaemon(True)
t.start()
wrapper.__name__ = f.__name__
return wrapper
This decorator (stolen from
O'Reilly)
calls the method in a new thread, so execution returns straight away. I
use this for long-running tasks that cannot be handled in an asynchronous
manner (such as the photo uploading in Postr, which currently uses
urllib). The main thread returns straight away so the interface
doesn't block, and the uploads continue in the background.
Of course this new thread cannot just call GTK+ methods, as GTK+ itself
isn't threadsafe. So, I have another decorator that causes a method to be
always executed in the main loop by scheduling an idle handler that calls
it.
def as_idle(f):
def wrapper(*args, **kwargs):
event = threading.Event()
ret = []
def task():
ret.append(f(*args, **kwargs))
event.set()
return False
gobject.idle_add(task)
event.wait()
return ret[0]
wrapper.__name__ = f.__name__
return wrapper
Erich Schubert requested return values, so James added those too. The
calling function will block until the idle handler has called the
decorated function. I've split the decorators out into a separate file in
Postr, so you can
view the
latest version online.
Magic stuff!
While trying to introduce Linux at the SOS Hermann Gmeiner International College in Tema, Ghana, I encounted a very strange problem. Here are the results, I spare you the list of things I tried to find out:The BIOS on the Gateway PCs they use here, with the id bf86510A.15A.0066.P13, will freeze when it encounters a disk with a linux created partition table. It will do so before even deciding what to boot, so you can't boot from CD then. It does not matter if the orignal MBR is on it, or the one created by Window's fixmbr, or lilo -M, or install-mbr, or grub. Changing the partition table using Windows XP (diskpart in the recovery console) will make the BIOS boot nicely. This only happens with the hard model drive that came with the PCs, after replacing it with a different model any partition table is ok.The only way to keep working with the hard drive is to power the computer without the hard drive attached, wait until it is done detecting it (for example wait until the BIOS complais about the lack of harddrives), then plug it in while the computer is running. Of course, the hardware is not meant to be used this way, and it might destroy everything, so don't try this at home (unless you have to). For me it was the only way, since when I know boot from a CD (Windows Installation Disk, Knoppix, FAI-Installation CD, anything that does not rely on BIOS information regarding the hard disks), the hard drive can be used just fine...So how did I get Linux on it in the end? One can say I tricked the BIOS: I made the automatic Linux installation add another, unused and small partition at the end. After the installation is done and I can't boot regulary any more, I use the mentioned power trick to boot the Recovery Console of a Windows XP installation CD, to delete the unused partition with diskpart. This makes Windows write the table, and thus make the BIOS happy. Unfortunately, this kills grub, so I have to boot any Linux boot CD, chroot into my installed system and run grub-install...If anyone has encountered similar problems before and maybe found a nicer solution, which maybe could bring me back the "A" in "Fully Automatic Installation", or at least frees me from the need to make IDE hot-pluggable, I'd be grateful.
So i have travelled to Slovakia again, for a weekend this time.
I have been painting window frames. Since i have a new iPod (4G nano,
black, yummy), i could also listen to music (Tristania, In Flames,
Kamelot). The last time, it was somewhat of a patience exercise, but
this time... I guess i got better at painting and maybe i have become
more patient, too :). It was pretty enjoyable, more than i would have
thought a work like that could be. And i am sure the music helps, too.
(The next day)
And to continue the last blog... There, i have concluded that hardship
was important factor in becoming better:
And apart from hardship... Problem is, hardship alone, if it stays the
same, is not enough to make people change. It is the change from
contentment to unhappiness, that drives people forward. Because in
that change, one starts to change, and hardship together with dynamics
helps a lot. Static, unchanging hardship will only do little to change
a person. One can get used to it, like to anything else. Like to
contentment. So an initial change can start a cascade. Like for me,
breakup caused a domino effect. The change alone brought a lot of
hardship with it, and i had to change to accomodate to it. And the
change in me provoked more changes and so on. I have learned many new
things, or, things i have learned before but went unnoticed took my
notice. And in light of such things, i had to change again, because i
knew i couldn't be happy any other way.
A human being is as good as dead, when captured in a period of
stagnation, in an unchanging moment that lasts. Only through change,
through dynamics of life, we are alive. A man that does not change is
a statue, a dead piece of matter, only useful as a memento. And that
was what i have become, and now the statue is again starting to move,
to breathe, to live. Because there is just no perfection that one
could capture in a moment. No matter how perfect a moment, if frozen,
the perfection decays, the little cracks are noticed. That is why
trying to freeze time is futile, trying to preserve. One cannot enter
the same stream twice. Life is a constant change, and this constant
change is its only manifestation. Take the change away and you take
the life away.
The past is important. The past is what resulted into present, and
present is what makes future. Every moment, in a succession of
moments, is important. But without the moment before and the moment
after, the moment does not mean anything. The moment is void, without
predecessor and successor. We move in time, and the motion is what
becomes important, not the points we moved through. They are only
important in the relation to our trajectory, not in isolation. And so
is the direction which we take, the vector of our motion, and the
shifts in direction.
There is no eternity, only the eternity of its own
absence. Immortality and death are the same, the very same
notion. Because every time we change, there is a little death and a
little birth. And immortality is only possible in
staticness. Immortality is a point in time, without motion. And
without motion, there is no life to be.
And same goes for relationships. Make a relationship immortal and you
make it die. Relationship needs a possibility of death to live. Like
humans, like every living being. Without death, there is no life. The
transition from being into non-being is essential, because it is the
precondition to change. As i have already described, every change is a
death followed by rebirth, but the entity reborn is not the one that
has died. And therefore, without the ability to die, there is no
ability to change. And death, the conventional death, as we know it,
is just a death without rebirth. Something dies, and there is nothing
more to take its place. But... The death makes others change. And
therefore, the one who dies definitively, is again reborn, as part of
those others that have died, but haven't died, but are reborn. And the
one definitely dead enters those new, reborn creatures, as a little
fraction of them. And the cycle of life is closed, and the change can
perpetuate itself.
Every day, i die a thousand times. But there are deaths that are
important and deaths that go unnoticed. And most of the important ones
are only noticed in retrospect, by a being that resulted, after many
hours, or days, or weeks or even longer. And many more deaths. We only
exist through our succession, because only what is born from us
remembers what we were. And the very moment we are born, we die again,
and a new being remembers. The memory lives on, but the beings are
already dead. And the memory changes as well, because memory itself
does not mean anything, only the being possesing it can give it
meaning. And every successive being that we become gives it a slightly
different meaning.
And so the delicate, complex dynamics of individual life are
established. Not only the living being changes itself, but the
memories of the previous beings change. There is certain gravity
toward stagnation, because often the changes are only very slight, and
the being remembers his predecessors that were fairly happy and tries
to remain so. Because the bigger the change, the bigger risk. And
therefore all beings are susceptible to stagnation, to the stasis cell
of past success. Because past success is one's own enemy, even if it
is something that is a precondition to one's own being. So we need to
learn to live with our past success, but to not try to revive it. The
effort to bring back past is a wasted, contraproductive effort. It
seems so, it is almost natural, that if there was happiness in the
past, restoring the same past will bring the same happiness. But
there, that is not true, in the light of previous paragraphs. The trap
is so obvious, that description is probably redundant, but let me do
it once again anyway, maybe because i have fallen in it so many times
already. Yes, the trap is in the stagnation, in absence of new
things. Because even if one cannot restore the original condition no
matter how much he tries, one can, and that is for sure, replicate it
very closely. And that way lies a trap, a temporary (or even
permanent) thermal death of stagnation.
(Later that day, outside, on a nearby hill)
And now, like before, there's nothing more to stand between me and
myself. I sit in the grass, alone. My being alone complements me, in a
way. There are waves in the grass, as air moves. Music is playing,
apart from the few houses i can see downhill, my only connection with
the rest of people. And this what belongs to me, this paper, this
pen. This book by Italo Calvino that Enrico Zini has given me. If on a
winter's night a traveller. But it is late summer. I can see vineyard
in distance, on a slope different from mine. I call this slope mine
because i am the one sitting there. And the time to collect the grapes
is close. And here, next to me, an apple tree, with red apples on it.
And a white butterfly in the distance, beating the air with its light,
small wings. And i blow away a tiny spider who has lost its way on my
trousers. I feel being part of all this around me, and still so
foreign. And the butterfly appears again, but it may be a different
one.
The sun shines behind my back, alhtough i sit in shade of a tree. And
neither the sun nor the tree are my enemies, or my friends. But still,
i feel sympathy for both of them, one gives me light and warmth and
the other shields me from too much of it. And the setting, the scenery
soothes my senses, my mind, my feelings. Here, i am close to the
loving mother of us, living beings, the nature. Here she is tender and
forgiving and caresses my hair and it feels good.
And these feelings, i would love to pass on, to other people, so they,
too, could feel well. But i see that this is not quite
possible. Although these lines will hopefully give something to
someone, they probably can't carry what i feel. And i would bring
someone with myself here, so they could feel it with me. But presence
of other person would spoil it, it would be something else then. Maybe
beautiful in a way, different from this one, maybe very pleasant. I
love people, and when i see them happy, it fills me with gladness.
(And in the evening, on a train...)
And here i am, moving with speed, from one place to another. The
speed, sound of loud music in my ears, the landscape drifting away. I
could say i was happy, happy in the sense of change, everything
changing around me, sun setting behind distant horizon, the train
moving through the country. The semaphore lights. In the headphones,
heavy guitar riffs competing with the roaring of the train. Cold air
blowing in my face, flowing in my hair.
And now in another train, sitting in a compartment with stranger, a
girl, trying to guess who she could be, from her dress, from what she
is reading, from cues. Who she could become. What she means to me, a
passing stranger on the path of life. I have been reading the Calvino
book till now, but i thought i could write down my thoughts before
they perish, like they do. It is fairly silent now here, even while we
are on a train. The engine and the outside are muffled, the window and
the door are closed. We are in a strange kind of privacy with this
girl, neither knowing anything about the other. I, writing this text
here, she reading some sort of magazine. Looking up from what we do at
occasions. The train is accelerating now, and the sounds are more
intense. It is a bit shaky, too. My hearing is still lightly impaired
from the loud music from the previous train.
We arrived to a station. Short stop, then another long motion. Always
toward Brno, toward my flat, toward the night and tomorrow. The girl
is reading a horse races program. Here, i intrude her privacy and
write that here. I hope she wouldn't mind. I don't have a name other
than "the girl" for her, since all the words we exchanged was me
asking whether i can sit down in the compartment and her answer. And i
suppose i won't say anything and she won't, neither. Maybe a goodbye.
And now, we share a sort of almost intimacy. Two lone people in a
compartment, tired and waiting to arrive somewhere. An invisible bond
between us, doesn't mean anything, just that element at random brought
us there together, for a short moment. Chances are, we won't ever meet
again. And still, she is almost falling asleep, with her feet up, like
if i were a trustworthy friend of old. And i feel sympathy for that, i
feel honoured by a trust given by a complete stranger. She seems
comfortable, feeling safe. And it feels good to have that trust, it
feels important. It nearly gives warm fuzzies.
(To be continued, further...)
The
security incident on alioth resulted in some rather
bad press. Much of
which isn't very accurate (the server was not cracked, certain applications
installed by users were abused, but no privilege escalation happened) and not
fair (this is not a "dumb" web server, but a server to be used by "third party
users" to run web applications on).
It's also worth noticing, that everybodys favorite Joerg Schilling
commented [de] (read: flamed) on these articles in his
best
troll manner.
In fact, he's known to be a frequent troll on heise, often posting "corrected"
versions of articles related to Solaris or Linux. If you've read his posts
there and his mails you just
can't take him seriously. Don't feed
the troll, and just ignore anything you hear from him. Including any cdrecord
stuff, please switch to cdrkit/wodim!
To avoid this type of problems I see the following choices:
- Disallow users to install their custom PHP scripts
- Require users to send their web applications through a security review
process and installation by the admins
- Write and run some security scanner on these applications, that will
detect known vulnerable versions of installed applications (but that means
someone needs to write lots of detection code, and update it with every related
security announcement...)
-
- Modify PHP to be harder to attack (i.e. remove functionality, that will
potentially break stuff we want to have)
- Use SELinux to jail the webapps a bit more. E.g. SELinux could have
prevented the attackers from setting up their IRC proxy.
As you can see, the first option is the easiest, but it's contrary to the
idea of alioth - being allowed to run custom web apps. Face it: a webserver
serving only static pages is much easier to keep secure than one where users
are allowed to install custom applications. And a project of Debians size
needs to offer a web server where developers can run custom CGI.
The other options mean
much more work; especially the SELinux option
would increase security a lot, even with PHP, but it means someone will have to
spend a lot more time on administrating the system, and especially helping
users when their web app doesn't work right because of SELinux security
restrictions. For further increases in security PHP would need to be patched
with some SELinux support: it shouldn't be allowed to include() or execute
files written by the web server and not uploaded via ssh. For this, PHP needs
to understand security contexts.
One thing we should go for, however, is to provide more common services on
alioth. For example wikis. Maybe we could setup a shared MoinMoin instance
for all projects on alioth that want to have a wiki. And maybe offer
"security supported" installations of other common webapps as well (e.g.
forums, trac). Attacks usually exploit widely used applications such as wikis
or forums. And even when 90% of the users on alioth upgrade their software on
time, there are still 10% vulnerable.
And maybe we can setup a box for the custom applications that actually is
SELinux enabled in one or two years, when enough people are familiar with it
and on how to write and maintain an appropriate policy.