Archive for December, 2008
by mithrandi on Dec.31, 2008
That age is best which is the first,
When youth and blood are warmer;
But being spent, the worse, and worst
Times still succeed the former.
— Robert Herrick, To the Virgins, to Make Much of Time
Feed my will to feel this moment,
urging me to cross the line;
reaching out to embrace the random,
reaching out to embrace whatever may come.
— Tool, Lateralus
Breathe… the air while you still can;
leave… all tomorrow’s plans.
Here… the calm before the storm;
heed… the message of the Dawn.
— Rhea’s Obsession, Death by Moonlight
I know, I know, the timing is horribly ironic; I’m writing this post on New Year’s Eve, yet I find the concept of the “New Year’s Resolution” to be laughably crude, simplistic, and naïve. Nevertheless, here we are; the self-realisation I alluded to in a previous post has given rise to things I never could have imagined. For the first time in years, I’m truly operating outside of the reactionary prison I built for myself, without ever realising it. In many ways, this changes nothing; but at the same time, it somehow changes everything. One particularly important aspect of this epiphany (at the risk of sounding pompous): stepping outside the cage unlocked a reservoir of inner emotional intensity that I did not believe existed; it seems this may have been the cause of the “muting” of my own emotions. For some, being suddenly deluged by emotional energy like this may have been devastating, but for me, it’s really the exact opposite; being driven to the edge emotionally is something I can draw deeply on for strength, regardless of the nature of the emotion. Intense fear, intense joy, intense sorrow, intense anger, it’s all the same to that part of me, although the negative emotions do take their toll on me in other ways.
This brings me to the next aspect: I’m now also aware that the depression I thought I had long since left behind me was never truly gone; but with the aid of this new-found source of emotional energy, I’ve finally been able to perceive my depression on a mental level for the first time. In the past, the only way I’ve been able to gauge the effects of the depression is through the indirect physical effects that it’s had; while others close to me could sense the darkness, it always overwhelmed me to the point where I was not even consciously aware of it while being affected by it. This doesn’t mean that I’ve suddenly been able to finally throw it off for good, but now that I’m aware exactly how and where it has been affecting me, I’ve been able to start doing something about the problem.
One particular quandary I find myself in now, is deciding exactly how much of this new-found emotion to show others in my interactions with them. To a large extent, my normal social responses, body language cues, and so on are completely simulated; my natural responses don’t even vaguely match what most other people actually expect to see, and so I have to fake it in order to avoid miscommunication. I’ve mostly been doing nothing to reveal the changes in my interactions, but concealing my emotional reactions to this extent seems somehow dishonest, although I couldn’t really explain why. I guess it’s something I’ll have to figure out as I go along.
On a practical level, this hasn’t yet had any effect on a day-to-day “getting things done” level; I’m right in the middle of the holiday season, so things have been relatively quiet, and I’d been planning on taking as much time as I could to just sit back and relax anyway; but it looks like I’m going to be approaching life quite differently in some ways next year, as I start focusing on driving my real priorities forward, rather than just reacting.
The thing that truly terrifies me right now is that I’m not sure I’ll be able to hang onto the state I’m in now. I can easily imagine slipping back to where I was before in a few weeks, at which point all this will seem like so much drivel and handwaving. Then again, there’s not much I can do about it, and I won’t truly be able to grasp what I’ve lost if I do lose it again, so I suppose there’s no sense worrying about it. Somehow, that line of reasoning isn’t particularly comforting…
by mithrandi on Dec.30, 2008
"5" + "10" = "510" 5 + "10" = "510" "5" + 10 = "510" 5 + 10 = 15
[1,2,3] + 4 = "1,2,34" 1 + [2,3,4] = "12,3,4"
null + "foo" = "nullfoo" undefined + "foo" = "undefinedfoo" null + [1,2] = "null1,2" undefined + [1,2] = "undefined1,2" null + null = 0 undefined + undefined = NaN
Array("1", "2", "3") = ["1", "2", "3"] Array(1, 2, 3) = [1, 2, 3] Array(4) = [undefined, undefined, undefined, undefined]
1 == 1 = true 1 == 2 = false 1 == "1" = true  == 1 = true [1,2] == "1,2" = true [1,2,3] == [1,2,3] = false var x = [1,2,3]; x == x = true null == undefined = true null == "null" = false
by mithrandi on Dec.28, 2008
want to tell you;
but words so clumsy are not my friends,
they starve these thoughts when they begin.
still need you to know;
but my lips are tightly holding back,
the sentiment inside is lying trapped.
— The Crüxshadows, The Sentiment Inside
So, you may be wondering what's up with the weird prose I've been posting here lately; hopefully this post can shed a little light on something that's not so easily put into words. We're going to be heading into some of the deeper regions of my mind here, so if none of this makes any sense, it's probably either because your mind is wired very differently to mine (which is true for most people), or because I'm just a raving lunatic (I certainly hope that's not the case, but there's obviously no way for me to tell).
I have a relatively high degree of meta-awareness of my mind's functionings; I've recently discovered that it doesn't actually go as deep as I thought — or rather, that my mind goes deeper than I had previously thought, but nonetheless, I suspect this self-awareness is above normal levels. I am also a concept user (this may, in fact, be the source of my self-awareness); as a high-level concept user, my mind tends to make associations and take note of isomorphisms across concepts drawn from completely unrelated areas. One of the results of this process is what I have sometimes referred to as my "inner fantasy narrative".
At a certain level, all concepts are simply metaphors layered on other metaphors; if I use a word, such as "red", that word is simply a metaphor for the aggregate concept attached to that word; that concept is an aggregation of the individual conceptualizations of thousands (or millions, or billions) of people, and yet every person will have a slightly different mental representation or conceptualization of that concept, since mental concepts cannot stand in isolation from other related / dependent concepts. What I refer to as my inner fantasy narrative is a surreal blend of fantasy, imagery, and metaphor. On one level, it serves as an outlet for my romantic approach to life; on another level, it serves as a mental tool for manipulating concepts that are not fully formed — particularly concepts that simply cannot be put into plain language to be communicated to others. The source of these "partial" concepts is, of course, my intuition; for all my scientific-mindedness, on an operational level I am a highly intuitive being. I rely almost exclusively on my intuition for decision-making, and my intuition is almost never wrong; that's not to say that my intuition always provides the "right answer" in any particular situation, but the answers it does provide come with an associated degree of certainty; so when my intuition suggests a particular answer with a high degree of certainty, I can be highly confident in that answer.
So, what the heck *is* this fantasy narrative? In one way, it's like a work of fantasy fiction; I draw on concepts and images from works of fiction by many authors, as well as other media such as music, movies, TV series, games, and so on, along with images of my own creation. In this narrative, I am, of course, the hero of the story: the wizard battling the power forces of his enemies, the spy slipping quietly through society leaving no traces, the white knight in his shining armour riding to rescue the damsel in distress, the dark demon leaving carnage and sorrow in his wake. These aren't delusions of grandeur; the whole point is that it *is* fantasy, not something I truly believe. It's not meant to be a concrete representation of reality, and in fact, it cannot be a representation of reality; it provides a way to mentally represent combinations of concepts that are not necessarily reified in real life (say, a conceptual overlap between business and music), or even concepts that are incoherent or inconsistent.
This is the source of the writing I've been spewing out here of late; in some sense, it's a biographical / autobiographical story, but certain aspects are dramatized / fantasized, and in other places I've deliberately changed the facts of the story, either for effect, or because I cannot adequately describe the true facts of history.
Where am I going with all of this? I'm not entirely sure; I've mostly been writing simply for the sake of writing. If you find it enjoyable simply for the sake of reading, that's great; if you identify with some of the fuzzy concepts embedded in the writing, even better. Just don't take any of this too seriously; in some sense, there are deep truths buried here, but only in the same sense that the alphabet contains every possible concept. This is not Zen Buddhism: any deep truths you discover will be drawn from your own experiences and wisdom, not through some deep wisdom that I've cleverly hidden in my writing.
There's probably more to come in this meta-expository vein; in particularly, there's more stuff I'd like to say about emotion and empathy, but I'll stop here for now.
by mithrandi on Dec.22, 2008
[Continuity note: this serves as a continuation of an earlier post; it is, if you will, a separate story in the same "universe"]
Maybe I'm just Cassandra fleeting
Twentieth century Icon bleeding
Willing to risk Salvation
to escape from isolation
— Dream Theater, Voices
The Maiden was born into a modest family. She was not blessed with exceptional physical beauty, but nurtured by loving parents and family, her true beauty quickly began to show: an incredibly inner purity. The Maiden matured in a relatively sheltered environment; and yet, even had her family wished it, isolating her from the world would have been impossible. Thus, many expected the shine of her purity to be dulled and smudged by the corruption of reality, but this was not to be. Far from being dulled, her inner light grew in luminance, the external forces of destruction merely serving to polish her outer diamond-like facets, allowing the light to shine brighter than ever before.
Like all children, her mind was at first filled with the lies of childhood, her mind kept safely within a stained-glass prison of innocence. The simple lies were soon discarded like clothing out-grown, and yet the biggest lies of all she embraced with a frightening passion. Those trapped within the lies saw nothing strange in this, of course, but those who had long since discarded the lies for one reason or another found her dedication and passion either naïvely amusing, or alarmingly misguided. Few suspected the truth, however.
Such was her passion and dedication that out of lies and illusion she formed truth: that self-same stained-glass prison became a Temple of Light manifest in her purity, and those who glimpsed this temple were filled with awe and amazement. How could such purity survive, beset on all sides by corruption and evil? How could such innocence survive? For she truly did not realise that her unshakable truth was mere fantasy for others.
Time passed, and those who watched from the shadows continued to marvel and wonder. Would her purity continue to shine yet brighter? Could her innocence truly be impervious to worldly assaults? Naturally, she was still susceptible to the fragility of youth, but those around her could easily shield her from the mundane dangers that threaten all those not yet fully grown.
It was not to be, however. Her light had shone so brightly that few had been able to see behind it the keen intensity of her mind, a mind blessed with great intelligence. With this mind driving her inexorably along the only path she could see, it was inevitable that her path would lead her beyond the sandbox of familiar childhood, and there her innocence would run dry. And so it came to pass that the Maiden ate of the Tree, and was cursed with the horror of awareness; for the first time, she truly perceived the nightmare swirling about her Temple, and understood that those around her dealt in lies and illusion; only when illuminated by that inner light could these things manifest as truth.
For a time, she retreated under the shock and grief of this sudden awareness. Those around her mistook this for a sign of immaturity, as few could discern the truth of her situation, and this only served to reinforce her loneliness and bleakness. Yet, even this new curse could not destroy her; the light still sustained her, and as time passed on yet again, her wounds healed, and developed new strength to survive the nightmare.
The Maiden emerged from her Temple to once again confront the world: but this time, she moved with purpose: the determination of one who is not merely following the path, but who knows where the path will end. This time she would take her light to others, so that they might join her in the Temple, and find their worthless illusions manifest as truth.
The Maiden was now no more; but The Goddess now went forth into the world.
[to be continued]
by mithrandi on Dec.18, 2008
After recently discovering that people couldn't comment anonymously on my blog (apparently Vox just doesn't support this at all), I started looking around at other blogging platforms again. I decided to start with TypePad, what with it being another SixApart service.
So, I run through the registration process, only to get a generic "an error occurred" type page at the end of the process, with a "leave a message" form that I filled out. I suspect this may be related to having signed up for TypePad before, and then deleting my account, but who knows.
I still haven't had a response to my error report, but I got this e-mail in my inbox just now:
Subject: Was it something we said?
Was it something we said?
We noticed that you started to register for a TypePad account, but didn’t complete it.
Maybe the doorbell rang. Maybe you were late for a meeting.
Or maybe it was us.
Whatever the reason, we want the chance to show you that we’re quite simply the best hosted blogging service on the market. Just follow the link below and enter code <snip> for a special 10% discount and a 14-day free trial.
by mithrandi on Dec.18, 2008
Manoj Srivastava, Debian Project Secretary since April 2001, has resigned.
I'd like to disclose up front that I am not (yet) a Debian Developer, but I have been involved with the project for quite a few years now, initially as a user, then later as maintainer and co-maintainer of various packages.
Throughout my involvement with the project, I have continued to be impressed by Manoj's conduct, both in his personal capacity, and in his official capacity as Project Secretary and the duties that form part of that position (mainly running votes). Up until recently, I had thought that the rest of the project held a similar view, but apparently certain individuals disagree.
Whatever disagreements anyone might have with how Manoj has handled certain votes, I don't think someone that has faithfully served the project for nearly 9 years deserves this kind of personal, in-your-face vitriol; if you don't like the way someone is doing their job, there are far more constructive ways of expressing your disagreement than burning them at the stake, and I am ashamed to be associated with any individuals who were involved in this. I know there are many others who share my respect for Manoj, despite disliking some of the decisions he has made; they're capable of disagreeing without resorting to personal attacks, so this clearly isn't impossible.
Manoj (if you ever read this), I hope this whole affair has not caused you too much personal pain or anguish; please know that many of us out here have nothing but respect for the time and effort you've donated to the project, and I wish you well in your future efforts, wherever they may lie.
by mithrandi on Dec.14, 2008
Temptation: why won't you leave me alone?
Lurking in the corner, everywhere I go.
Self-control: don't turn your back on me now,
when I need you the most.
tests my will,
my will or my won't;
my self-control escapes from me, still.
— Dream Theater, The Mirror
A short time ago I came to the realisation that I had slipped into a somewhat insidious delusion about myself. Like many others in my family, I am an incredibly stubborn and willful individual; this likely comes as no surprise to anyone who knows me more than superficially, but it is something that lies somewhat deeper beneath the surface of my pleasant veneer, so not everyone is aware of it.
The depth to which it runs is, however, something people usually do not expect; I simply do not back down if I'm forced into a corner. Ever. It is this commitment that ensures that, so far as my own moral standards and commitments are concerned, I am completely incorruptible; if you think I'm bluffing, and call my bluff, you may find yourself extremely unpleasantly surprised. Please note that this has nothing to do with intellectual debate and discussion; this is an issue of other people attempting to impose their will on me.
Very few people have glimpsed how deep this runs; I'm not a confrontational person by nature, and I make every attempt to avoid situations where my options narrow drastically. However, on the odd occasion, people have caught a glimpse of how far I'm willing to go, and it's not pretty. I wouldn't be surprised if this attitude causes my untimely death at some point, although I hope it never comes to that.
So, having this kind of certainty is quite reassuring in some ways; present versions of myself do not have to worry about future versions of myself giving in to certain pressures, and in general it makes me feel like a very strong-willed individual. Imagine my surprise, then, when I realised that I was actually being quite weak-willed in many areas. The problem, if you have not already figured it out, is this: if someone pushes me, I push back. Hard. However, if nobody is pushing, then I'm not doing any pushing back, and I now realise that means not doing any pushing ever. Over time, I've continually engineered my way into situations where people have less and less opportunity to try to push me, and that has resulted in a sort of stagnation.
If I actually want to be serious about my life, this is something that's going to have to change. I'm not sure what the solution is, yet, but at least knowing about the problem means I can start devising a solution. Hopefully maintaining awareness of this particular weakness will help guide my path away from it, but only time will tell…
by mithrandi on Dec.13, 2008
Since my earlier post on this subject, someone has since brought to my attention this blog post by James Bennett. James writes well, cutting straight through to the real issues at hand, but in some places I think his facts are incorrect, and in other places I draw different conclusions to the ones he draws.
First up, Unicode strings vs. byte strings. In fact, these are handled in almost exactly the same fashion in Python 2 and in Python 3; both languages have a type for storing strings of characters, and a type for storing strings of arbitrary bytes (including things like data read from a network socket, and the encoded form of character strings). In Python 3, the str type is for storing character strings, and the bytes type is for storing byte strings. In Python 2, the unicode type is for storing character strings, and the str type is for storing byte strings. That’s really the only difference; the Python 2 str type has some methods that the Python 3 bytes type doesn’t, but that’s a relatively unimportant difference. The real problem in Python 2 is that many people have used the str type to store character strings, when they really should have been using the unicode type; this includes things built into the language (like attribute names or function names), various stdlib modules, and vast oceans of third-party code.
What does Python 3 do to solve this? Well, not all that much, except for completely breaking everyone’s existing string-handling code; I guess James assumes that in the process of fixing all of their string-handling code, they’ll get things right this time around, but I’m somewhat less optimistic. Still, I think it is important to point out that Python 3 does *not* give you any additional tools for dealing with character / byte strings, nor does it make it any easier to work with them; at best, it just fixes some of the broken character / byte string-handling code that was being distributed with Python.
With that out the way, I’ll move on to the “different conclusions” part. First up, the “Death by a thousand cuts”; I know many programmers feel similarly about the myriad minor issues he mentions, but I’m simply not one of them. Sure, there are all sorts of minor annoyances, and they do start to add up over time, but they’re simply irrelevant compared with the big issues. I might spend two weeks out of a whole year dealing with them, as opposed to months of time spent working around the lack of production-quality libraries for certain tasks, or the lack of higher-level programming constructs requiring me to write pages and pages of lower-level code to solve a certain problem. I’ll admit that I used to find these minor issues a great annoyance, but over time, they’ve just faded away to background noise, just like much of the supposedly major differentiating factors between different libraries and different programming languages. Once you see the forest, you stop caring so much about the trees.
Speaking of libraries, the new standard-library reorganisation is all very exciting; but I would really have liked it if they’d spent the time and energy on actually improving the code to a level suitable for production applications. It really doesn’t matter how most of the standard library is organised, if you’re not going to be using any of it anyway. In addition, projects reorganise APIs *all the time*, and there’s a perfectly straightforward way to do it in a backwards-compatible fashion. You introduce the new API or new location of the API, deprecate the old one, and then eventually remove it. No Python 3-style chasm-of-incompatibility required.
Of course, some of the standard library changes are actual functional improvements, not just rearranging the deck chairs; I haven’t looked at it yet myself, but I’ll take it on faith that the new I/O library is a vast improvement over the old Python 2 I/O facilities. Except… you don’t need to break backwards-compatibility to introduce a new I/O library; and I assume it’ll be ported to Python 2 sooner or later. Indeed, this is a common trend in Python 3 improvements; all the really interesting functional improvements are stuff that can and most likely will be ported to Python 2, if it has not already been ported.
If Python was a brand new language, being developed from scratch with a brand new community, I would be very happy about all of the changes made in Python 3; but since it’s not, I must repeat my claim that aside from things that can be backported to Python 2 in the first place, absolutely none of the Python 3 changes are worth making the jump to what is essentially a whole new programming language.
by mithrandi on Dec.13, 2008
Linux – Stop Holding Our Kids Back — A teacher sees a kid handing out Linux disks, confiscates the disks from him, and tells him free software is illegal.
What the hell is wrong with people? Seriously, I wish these idiots would just crawl back under whatever rock they came from.
by mithrandi on Dec.12, 2008
For those of you who didn't read about this elsewhere already, I've just released Methanal 0.1.2. The project was recently moved to Launchpad / bzr in the hopes of making it more accessible.
Methanal is a Mantissa widget library, primarily consisting of an Athena-based forms implementation (if you don't get the obscure pun, it might help if I tell you that methanal is the IUPAC name for what is more commonly known as formaldehyde), but we're also building a collection of miscellaneous widgets that you may find useful. Unfortunately everything depends on Mantissa at the moment, but a lot of the widgets only depend on the Mantissa themes system, so if that was moved into Nevow, a lot of them would be usable in any Athena application.