19 February 2010 : Why Racism = Prejudice + Institutionalized Power is wrong
Or, rather, why the people who state that are usually wrong.View as RSS
So this definition for racism was brought up again recently when yet another person claimed we live in a post-racial society. Which is usually the context it's brought up in: someone claims Racism = Prejudice and then declares minorities need to get over themselves because of their evidenced prejudice against white folks; and then someone more educated on issues of racism seeks to correct them (using R=P+IP to disprove R=P). I certainly don't believe R=P, but rather my point of contention is a meta issue about how R=P+IP is presented. That is, the theory of R=P+IP as it is customarily presented online is false, even though I do believe something similar is in fact true.
Why it is wrong comes down to one simple fact: there is no Institution. There is no single power structure in which we're all embedded. Even if we parameterize IP by country (as people often do), it's still wrong because there is no single power structure for the entire country. By stating R=P+IP there is an implicit theoretical belief in this singular notion of IP. And as if the implicit theory isn't enough, people often feel the need to be explicit about it. It is this totalizing discourse which is wrong. In addition to being inaccurate, totalizing claims transfer the problem of racism from individuals and individual actions to some external and ineffable "Institution" which individuals are not able to affect (due to its externality). So in addition to being inaccurate, it also serves to dissuade people from altering their personal actions in hopes of combating racism.
The fact of the matter is that we are, each of us, embedded simultaneously in multiple different and often conflicting power structures. I am not only in America, I'm also in Bloomington and I'm also a graduate student. (And anyone who thinks academia isn't a power structure orthogonal to real life is seriously misled.) More to the point, prior to moving to Bloomington I lived in Baltimore for two years. In Baltimore they have problems with racially-motivated black-on-white hate crimes. Now, when I can be hospitalized or killed for the crime of riding the bus while white, anyone who says it's merely "prejudice" has some very odd definitions rattling around in their head. In Baltimore, yes, blacks can be racist too. So when someone gets on their high horse and starts making totalizing claims about how the general disenfranchisement of blacks in America means they can't be racist, it's my turn to call them out for spouting bullshit.
My time in Baltimore was thankfully free of any (noticeable) racism. And I'm sure most other white residents receive less racism from blacks per annum than the average black person does from whites in most places. This isn't the oppression olympics, but rather it's an existence proof: When I was living in Baltimore there were numerous white people hospitalized and killed due to being assaulted on the bus by blacks because of their race. This happens in spite of the fact that everyone living in Baltimore is also living in America where blacks are typically the targets of racism. These two different kinds of hatred stem from being embedded in two different systems of power. In America whites have more power than blacks and use that to police racial borders. In Baltimore, which has different population dynamics (e.g., blacks aren't a minority), blacks have more power than whites and will use that to police racial borders. There is nothing about the power dynamics of America as a whole which precludes some part of America having opposing dynamics.
So IP is not a constant, nor is it a function only of the country. For the R=P+IP equation to be true, IP must be a function which takes in all the different power structures we live in and highlights whether any of those structures provide power in the given context. Whether my power as a white person in America or my weakness as a white person in Baltimore is more relevant will depend on the situation and is not simply the sum of the power from all structures. Similarly, whatever sorts of power I have as a graduate student are unlikely to be of any relevance in contexts that have nothing to do with education. Institutionalized power is both polysemous and contextually dependent. What is institutionalized in one structure need not be institutionalized in others, and which of these many "institutions" can be brought to bear is constantly changing.
By trying to totalize over these two dimensions, people prone to espousing R=P+IP as if IP were a constant are not only misleading those they are presuming to educate, but in so doing they are also failing to acknowledge that individual institutions can be changed, as can the dynamics of which institutions affect our lives. Institutionalized power can never be entirely eliminated. It can, however, be restructured so that it does not support the marginalization and oppression of racial minorities (or women, LGBTQ, disabled people, etc). And most importantly it is because of our own power within these different systems that we are able, through personal actions, to alter the systems in which we have power. We don't have racism because Those People Out There all got together and agreed to it; it is because our personal actions are complicit in preserving the institutionalized structures which support the oppression of minorities. But those very same institutionalized structures give us the currency needed to alter them; it is not enough to want equality, we must have the power to obtain it.
categories: ethics, politics, nonviolence
25 December 2009 : Say hello to Semiramis
So, Xenobia started acting up shortly before finals week. Her harddrive requires running DiskRepair, which requires booting from the Apple CD, which I can't seem to locate at the moment. She boots up fine, but some Finder config files are corrupted so I have to reconfigure the Dock and Finder prefs on every login. Very annoying. Her wireless has been on the fritz for a while too, but other than these two things she's holding up fine after three years. Hoping to keep my life simple and not have to deal with an inopportune hardware failure, I broke down and got a new MacBook Pro. I introduce y'all to Semiramis. Unfortunately Sem came loaded with Leopard instead of Snow Leopard, but I'll prolly shell out for the upgrade soon enough.
One of the nice things about getting a new computer is that fresh feeling you get when you transfer only the necessary files and can leave all the cruft behind. These moments are also prime time for offloading files to the archives, paring down config files, and sundry other spring cleaning. Over the last week I've been doing just that. I've dropped a lot of dead weight and picked up a couple new tools in the process. A few things have broken along the way, but not too many.
It's been ages since I've maintained my website and I've decided it's time to get back to it. I really need to consolidate my web presence and make my site decently professional enough for conveying my grad work and suchlike. I've always been an advocate of transparency and sharing the knowledge of geekdom, but I've never been too good about posting and discussing my various dotfiles or my personal work environment. So, over the next couple weeks as I do renovation, I'll make them public to the internet instead of just my local networks, and I'll write a few posts about what's in them and why.
categories: computers
20 September 2009 : Invisible Disability Week
1. The illnesses I live with are:
Chronic major depression
Migraines
OCD
PTSD, Dissociative-NOS ("recovered")
2. I was diagnosed with it in the year:
According to my records, 1998 for the mental stuff. Not sure about the migraines.
3. But I had symptoms since:
Before 1994, which is when my coherent memories begin. Most probably before 1991 when things get really hazy.
There's some 27-odd other questions on the version from cheshire_bitten, but I can't really get myself to bother answering them. Most of them target people who've acquired disabilities late in life, late enough to remember the "good old days". My father can tell you when he got diabetes, the pictures can show how his diet changed, his children can tell how his temper waned. My mother could tell you when she was diagnosed with bipolar, but she wouldn't because secrets stay in the family. My girlfriend will tell you when she acquired her wrist problems, how that changed the way she lives her life, how she gets around it at work. But when it comes to her anxiety issues or to my depression, what is there to say?
The most invisible of invisible disabilities are the ones we're born with. Because these are the ones we don't know how to live without. I can tell you how I live my life differently than how you live yours. And you may ask whether that's because of who I am or because of the depression, but that question is without meaning. Who I am is someone who lives with depression. To try to separate it out is like trying to separate out that I'm intelligent or that I was born in the States. The person without those traits would be so different that I cannot fathom where my life would take them.
The disabilities we're born with are the most invisible because all too often they are invisible to ourselves. Countless people cope with issues like depression and anxiety for years before realizing that perhaps it's different for other people. Even those who know it must be different often can't imagine what different would feel like. When I started on anti-depressants a whole new world opened up before me, a startling realization that happiness can be a way of life rather than a rare brief moment. When my girlfriend started on anti-anxiety meds she was dumbstruck to find the metaphorical pain of a panic attack was real physiological pain, and that suddenly a wrong turn or change in plans no longer evoked it despite the instinct to brace for the blow. She'd been telling people the pain was real for years, and yet on some level even she didn't believe it.
Too many of us are quiet, not because society frowns on admitting illness, but simply because in our suffering we do not know that it can be any other way. It is important to gain recognition from our peers that, yes, life is in fact harder for us. But for me, the bigger issue is to help our peers recognize that, yes, what they feel is real and they are not alone in what they know not how to name.
Update (21 September 2009): I think I'll tackle this one though,
17. The commercials about my illness
The iconic silhouette of a marine with the inscription "it takes a warrior to ask for help". ... Chesh's bobblely headed blonde twentysomething running through untrammeled plains in a floral sundress. ... An asian woman declaring "I'm glad I failed (to kill myself)". ... A teenage girl in a darkened room staring out a rain-soaked window. ...
Now, I know people who fit these descriptions and have the associated illness (except the blonde), but I know also a lot of people with the illnesses who don't match these images. Yes, soldiers are one of the main demographics for PTSD (aka "shell shock", aka "battle fatigue") but do you know who the other main demographic is? Rape victims and children who've grown up in sexually abusive households. Yes, teenage women are one of the main demographics for depression, but men with depression are more likely to commit suicide.
These commercials are a disservice in many ways. By presenting the soldier and teenage girl they only reaffirm these stereotypes, continuing to marginalize and deny the experiences of victims of sexual assault/abuse and depressed men. And woah, talk about mixed messages! "Not only can't you deal with the stress, but you're a failure as a soldier 'cuz you can't even ask for help." "Yeah, look at you: the failure. You can't even off yourself properly." While I understand the marketing engine behind these punchy lines, for all that they grab the attention they undermine the message they're trying to send. Patronizing, mocking, and teasing are not ways to earn the trust of someone who is suffering. These slogans only serve to reenforce the silence and isolation of those they're trying to reach.
music of the moment: Radiant with Terror ~ John Vanderslice (Pixel Revolt)
categories: personal, madness season, psa
7 August 2009 : Before, Home
I'm sitting here, the last night before, and cooking dinner. It's funny how the before always comes a few days ahead of the end itself. Tonight is Lici's last night of work. It's about a week until the drive to Indiana.
I had some music on as I was finishing up some prepacking —books and such— and unintentionally, unexpectedly, came some songs with old memories. Old memories from other befores: CTY and Reed and the Plumtree. Isn't it strange how the memory of old nostalgia can lend a spirit of nostalgia to the present? It's no secret that I was never a fan of Bal'mer, but I did do a lot of growing here. Maybe I won't miss the place, but I will miss some of the folks and the simplicity of being tied to neither past nor future.
The last couple weeks have been nice. In addition to the Buffy/Angel, B5, and PS2 overload, misshepeshu and leensterama came out to visit so I took a couple trips to DC. I was reminded how not all the East Coast is like Baltimore, but I was also reminded how long it's been since I've lived in the District. DC was never really quite a home, but it was my escape-home for years before it grew into a home-in-transition for the couple years before moving to p-town and the Plumtree. It's not that things have changed so much as the friends I had then moved on to other cities and other lives. But Baltimore never was even a home-in-transition, it was only an in-transition. I came for a year, stayed for two, but never could settle into the rhythms and flows of the place.
I think "home" is never so much a place as it is a time, a moment, a feeling. We belie this with aphorisms on our inability to return there. We try to make the home into a place, but we can never return in time and so returning to the place once left can bring only sorrow. So too can we not hold time still, whence the solastalgia of remaining too long after the party has gone. We have words like mamihlapinatapai for the yearning and never taking, but what words are there for the never having and finally letting go?
music of the moment: Subcity ~ Tracy Chapman, Future Ex Girlfriend ~ Voltaire (Boo Hoo), Southern Belles In London Sing ~ The Faint (Wet From Birth), Morphine & Chocolate ~ 4 Non Blondes (Bigger, Better, Faster, More!), The Last Word ~ Voltaire (Almost Human), Galapogos ~ Smashing Pumpkins (Mellon Collie and the Infinite Sadness - Dawn To Dusk (Disc 1)), Telephone Wires ~ Mirah (You Think its Like This But Really its Like This), How Did You Find Me Here ~ David Wilcox (How Did You Find Me Here), On The Turning Away ~ Pink Floyd (A Momentary Lapse of Reason), Call And Answer ~ Barenaked Ladies (Stunt), It's The End Of The World As We Know It (And I Feel Fine) ~ R.E.M. (Document No. 5)
categories: personal, grad school
30 July 2009 : A few reviews
I've been playing a lot of games, watching old TV, and reading books of late. I've been meaning to write some reviews, but I've been burned out of late. Here are a few of the more recent ones.
God of War, SCE Santa Monica, 2005. God of War II, SCE Santa Monica, 2007. If you haven't heard of this series, then you haven't lived. Both games are a fantastic fusion of puzzle jumping and action adventure, where many of the puzzles require both wits and dexterity. As a series, God of War somewhat resembles the Halo franchise. The first game blows away all the competition with an innovatively simple system, and a compelling plot threaded with deep metanarrative seldom seen outside of the best RPGs. The second game adds a lot of new intricacies to the system, and they're all good improvements once you get used to the new style; but, while the plot seems to make sense at first, it doesn't really hold together very well and the miniquests seem more like excuses for a level than really being part of the plot. Both games are worthy of their best-of-the-best reviews. But beware, if you have hand problems then you should avoid them, especially the second one; and if you don't, you will.
Dirge of Cerberus: FF VII, Square Enix, 2006. A three-quarter view FPS/RPG following Vincent Valentine after the events of FF7 and Crisis Core. Rather than being a typical FPS, the play style is more similar to other action/RPG hybrids. In particular, common tactics like strafing don't work, whereas standing like a badass before blowing someone away does. If you're looking for a traditional FPS, this game isn't it (whence everyone else's mixed reviews). The game really is all about watching Vincent be pretty, though the plot makes as much sense as anything else in the FF7 line. Lots of fan service with the other characters showing up, though the new characters seem better developed. The ending is very well done, albeit with Lord of the Ring style: final battle, conclusion, final final battle, ending, final level, epilogue, epiepilogue, afterword,... I had fun with it, all in all a good game.
A Deepness in the Sky, Vernor Vinge, 1999. The summary on the back of the book sums it up quite well without giving too much away, so I won't repeat it. Hard scifi set in the far future, Vinge presents a rarity: a future that is both intricately developed and entirely believable. Vinge's scifi is not the classic "technological what if", but is rather a deeply human story (which happens to touch on the very human ways in which technology shapes our lives). I'd been meaning to read some Vinge for quite a while and finally got the chance when I forgot to bring a book with me on my last trip to DC. This is, apparently, a prequel to another of his books but it was the only one available at the time. Now I must hunt down A Fire Upon the Deep, and add a shrine for Vinge in my small pantheon. If anyone has heard me go on about C.S. Friedman or George R.R. Martin, then you'll know how how great a writer is Vinge, and how small the pantheon he shares.
categories: book review, game review
10 May 2009 : What Killed Smalltalk Could Kill Ruby, Too
I like Smalltalk. Of any of the OO options it's by far my favorite. And yet, this most powerful language of the '70s has been relegated to oblivion. Robert Martin of Object Mentor Inc. gives a talk at Rails Conf 2009, "What Killed Smalltalk Could Kill Ruby, Too", which is well worth watching. I've since abandoned the whole OO paradigm in favor of functionalism, but I think this talk also has a good deal to say to the Haskell community (in fact, hat tip to Nick Mudge on Planet Haskell).
In particular, around 37:00 to 41:00, Martin talks about one of the three major things to kill Smalltalk. This one is the greatest danger for the Haskell community: arrogance and parochialism as a result of an emphasis on purity. The complaint is a common one, though I think the mention of purity is something which should be taken with depth. (Certainly purity is one of the highest horses we Haskellers will climb upon.) In an interesting addition to the usual dialogue, Martin posits professionalism as the countervailing force we need to maintain in the face of the growth of the community.
I highly recommend the video. The actual talk starts about six minutes in, and after the ending at 50:00 there's a Q&A session with a couple good questions.
categories: links, ethics, coding, haskell
2 May 2009 : Not dead yet
Here's a quick update on my life as it stands. I seem to be building up a directory of abortive notes like this, so I'm typing this one in directly in hopes of actually posting it. Apologies for the lack of editing or, y'know, cohesion.
For those I haven't told yet, I got accepted to Indiana for a PhD in cognitive science (to be amended into a dual PhD in cogsci and computational linguistics), working with Mike Gasser and Sandra Kübler (along with Matthias Scheutz, most likely). The current plan is to move to Bloomington circa July 1st, with a previsit around June 17th to finalize leases and the like. That way I have some time to get settled and take a break before classes start. Now I need to find a place...
Employment-wise, the week before the previsit is the NIST eval for MT09. Which will be the last huzzah before signing off on my Joshua and GALE Rosetta work. Which means I have about a month to finish that, in tandem with the house hunting. One of the deliverables should be pretty easy to finish off, though it remains to explain to everyone how it works (yay monads!). Another I've done some mindcoding on, but don't have any actual code to show for; I have the unsettling prediction that Java isn't going to let me do things in as clean of a way as I'd like.
Research-wise, I've finished off my post-graduation Dyna involvement to buy time for other things. Jason still wants a meeting to discuss my involvement in the future, which is sensible. The research topics are interesting and'll probably influence my PL research for the next while, though I don't know how much of that will carry over to Dyna in the end. (And there's non-PL research I should be devoting more time to, methinks.) I'll miss working with qedragon, though we're planning to keep in touch.
Otherwise-wise, things are going a bit better now than they were. Tis still hard getting motivated, but the early summer days and the slow unwinding of obligations are doing some good. Lici says I tap the energy of my surroundings and that that's why I was in such higher spirits after my last visit to Bloomington. Considering how I go on about the dying of Baltimore et al, I can't help but think she's right. To that end, I've only a couple busy months left before I can bask in that relaxation once more.
Enough for now, work beckons once more. (And many thanks to altrus for Schinji Mix 2008.)
music of the moment: Fort Hood ~ Mike Doughty (Golden Delicious)
categories: grad school, personal
20 March 2009 : Will we burn in heaven // the way we do down here?
What ever happened to happiness, unblemished, unqualified? When did skepticism become the norm? Or is age the fading of our old questions, the forgetting of old uncertainties, and mitigation of our concerns. Has it always been this way, or is it our stories to ourselves which become faerie tales as we grow apart from them? Or is it merely once more the chill portent of that childhood legacy. Everyone says the wings are black, but they never remember how fuzzy the feathers, how cruelty can be soft. Cool means refreshing, and yet cold is just another word for numb.
The worst part of chronic depression is how it's always changing. If it were a static thing we could grow accustomed to it; acclimation is the natural course of the body and the mind. We heal what we can, and null the rest hoping that distance and decay will cure what fever and fortitude cannot. For a splinter, a severed limb, a love lost, this works as well as anything. But scorched earth tactics cannot defeat a parasite. Like any virus it evolves to survive.
Our bodies autonomically quarantine the infected loci, a basal response beneath conscious appreciation. In the early development of the disease, it eventually bursts through these walls in crippling waves. But such catastrophes can be damaging to the host, and in time it learns subtler methods of control. Even in its maturer forms, symptomatic threads are eventually uncovered by the mind's eye. Once higher consciousness notices, however, it soon finds that the majority of its support has been damaged or sacrificed to the cause. The synthetic forms of thought are the most wrecked, for they are the most powerful adversary to depression, and also the most alike with the disease and so its best fuel. What remains is but an analytic shell, powerful struts to keep higher consciousness suspended above the battlefield, but the weakest weapon to turn against the now rampant foe.
Long-time veteran of these wars it's hard to remain objective. Each time we hope, naïvely —knowingly naïvely—, that this time will be the last. Or that the next time we'll get to wage our skill against new recruits, inexperienced youths, on the other side. We pray to only have to kill children, but we inevitably murder men. And the next time is more of the same: always different, always subtler. Against such an opponent the only alternative to naïveté is paranoia. But what they don't tell in the textbooks and health classes is that these two are of the same coin, two names for the same denial, the same inability to let go of the fingers at your throat.
categories: madness season, personal
30 January 2009 : Book Review: Remembering the Kanji
Remembering the Kanji, Volume I
(1977; 4th ed. 2004)
James W. Heisig
Heisig presents a simple but anti-traditional method for remembering the meanings and writing of kanji. He takes the simple idea that many students already try —taking the meaning of radicals and telling a story that gives the meaning of the kanji— but refines it into a proper method. First, rather than radicals, he refers to "primitives" which can be either radicals or other kanji, which allows building up of meanings in a better way by giving 'syllables' in addition to the 'letters'. Second, the simplest part of the method is reordering the presentation so that simpler kanji are presented before and alongside kanji which use them as primitives (e.g. 日、月、冒、朋、明、唱、晶、、). This is a consequence of the method being to teach all the 常用漢字 together, as opposed to the traditional method which teaches them in a way that you can test your knowledge incrementally. Third he focuses, not on the gist of a primitive, but instead chooses a specific "keyword" to help distinguish primitives with similar meanings (e.g. 如 vs 肖). This symbolism gives hooks for the stories to hang off of without them becoming a vague blur that's unhelpful for constructing the kanji from its keyword. Fourth, the focus is on studying from keywords to kanji, instead of the other way. Focusing on writing/recall rather than reading/recognition strengthens our associations since the latter comes for free from the former, but not the other way around.
Learning kanji is often named the hardest part of learning Japanese, and many voice skepticism at Heisig's claim that the method can teach the most common 2000 kanji in a few months. A quick web search will bring up many diatribes both for and against Heisig; if nothing else, it's certainly polarizing. Personally, I'm a big fan of it. I have never liked memorization, and the traditional approach of just writing the 常用漢字 over and over simply doesn't work (hence the notoriety of learning kanji). One of the things I like most about the book is the ways in which it formalizes the simple technique of telling stories. In the modern era we have lost our oral traditions for memory and many have lost their creative ability to tell stories. Heisig gives techniques to rekindle the oral and creative traditions of memory. It's alien to the modern era, which is no doubt why so many dislike it, but it feels like home to me.
Another piece of the controversy is that Heisig does not teach the readings of the kanji in this volume. At first I too was very skeptical. The separatist approach of teaching speaking vs reading in JSL is my principal complaint against JSL. After giving Heisig a try, however, I think that his approach is valid. The big thing to remember is that he is teaching kanji, not words. To the new learner of Japanese this distinction may seem baroque, but it is mirrored in the vast differences between kanji dictionaries vs word dictionaries (cf. etymological dictionaries vs 'real' dictionaries). Because of the nature of Japanese writing, it's not very helpful to learn the readings of kanji without learning specific words and compounds since a kanji's pronunciation is based in large part on the word it's in (e.g. 今日 is read 「きょう」 which is not built from the readings of 今「コン・いま」 and 日「ニチ・び、か」). Heisig's second volume deals with the (音読み) readings of kanji, for those interested in pursuing them.
The only complaint I'll level against the book is that the author's background in Christianity and Freudianism can be quite overt in some of the stories. This lends a distasteful missionary flavor in parts, and I find the Christian stories disruptive to my memory (both because of my distaste for them, and because they are not as familiar to me as they are to him). Those without anti-Christian tendencies probably won't notice nor care. In counterpoint to this singular complaint, the primary goal of Heisig is to teach the technique, not the stories. The major part of the book provides only the kanji and keywords for them, leaving the reader to formulate the story to bind them together. For as infrequent as they are, in the portion where stories are provided it can be helpful to have a few which are disruptive (so long as they are illustrative) since this can drive the reader into coming up with their own stories earlier. Ultimately, as Heisig says, none of the stories will be helpful unless they click for the learner.
I'm a big fan of the book and the technique, and I highly recommend it. For those who want to get polarized before shelling out for the whole thing, the introduction and first (of three) parts (125 pages) is available for free online. For those interested in the rhetorical technique of mnemotechnics or general issues of pedagogy, here is an interesting paper about Heisig's approach to L2 learning.
music of the moment: Honk If You're Lonely ~ Silver Jews (American Water)
categories: book review, japan
10 December 2008 : Christmas is quiet
At our weekendly breakfast outing I was telling Lici how I'm not so fond of christmas music, or at least not anything written in the last century. Too many of the tunes and carols are tastelessly saccharine. (Abney Park's Dark Christmas album is more to my tastes: Carol of the Bells, etc. (Yes yes, the carol is just under a century old. Thbbt.))
The Wild Colonials have a song which does hold a special place in my heart though. This time of year many folks go about their capitalist extravaganza and familial gatherings with great enthusiasm, but there are many people for whom it is a trying season. Contrary to popular belief suicide is not much more common than at other times of the year. But suicide is not the only metric of well-being. Many people do not have the finances to support Giftmas, especially with the economy as it is. Many cannot afford heat for their homes. Many suffer from seasonal affective disorder. Many do not have families to turn to because they were kicked out for being queer. Many people have lost loved ones and will find empty chairs at their tables this year. Too often the season of charity is victim to the most mindless acts of brutality.
Yesterday I learned that my grandmother had passed away sunday evening. She was 73. At the end of June my younger-elder sister died at 30 years, leaving my 8 year old niece. Last August my cousin died just as young. His fiancee, a nurse, was with him. All of them sudden, all of them unexpected. In a year and a half I've earned the right to say that I have a strong family history of heart attacks.
Try to remember that the season is not about gifts. It's not about religion either. Things and obligations only feed the void within. The season is about people, about humanity and empathy. It is a reminder to live mindfully, to cherish, to forgive, to remember.
categories: psa, personal
22 November 2008 : Your Soapbox or Mine?
Last night I went to a farewell dinner for Micha, who is heading back to Germany after a couple months at CLSP. About a dozen of us had delicious Ethiopian, and half hung around for drinks afterwards. Both establishments were quite nice, reminding me I should hang out in Mt Vernon more often. Micha's specialty is in "Deep MT", a variety of machine translation which makes use of linguistic factors rather than being purely statistical. Or to wit: MT done right. So there was some self-selection involved but the company was, as always, what made the night.
Three of the folks who stuck around for drinks were the first years at CLSP: two from CS who share my MT seminar, and one from ECE who seemed more grounded than most ;) Add to that Micha, myself, and one of the old-timers. It's amazing what people'll say once you get them off campus, or once you get a few drinks in 'em. On campus it's all business all the time. Which is fitting, it's a job afterall; but it does leave things rather dreary. And somehow it seems to lead to never really knowing what other folks are working on, or what they're interested in. It's nice to see the human side of people. It's also nice to see the business side of the business. But no, I need more humans in my life.
At Brewers Art I spent most of my time talking with A. She was sitting next to me and I could hear her, two excellent points in her favor. At some point we got onto that topic: what we're really interested in. I said I just finished my degree and was sticking around for a year working on GALE, "so that's why you're always so together at MT seminar," and I'm working on PhD apps for next year. The follow on question: the wheres and whys. I began to give the other face of my last rant, a presentation I've been polishing for those selfsame apps. I'm interested in morphology and its interfaces with syntax, semantics, and phonology; and I think we need to be working on linguistically-aware tools, since SMT's ignorance of morphosyntax is one of its principal failures (a point Micha demonstrated fabulously in his seminar last friday); and I think we need to be working on languages with few resources, for political reasons and also because tying ourselves to megacorpora means we will never break away from the need to invest millions to get enough training data to simulate knowledge, badly.
Shortly into my rant she said, "that's my soapbox!" For her undergrad thesis she worked on computational typology: measuring the distances between languages in typological space. The sort of work that would be essential for L3 to use a known system for translating between two languages to bootstrap translations between similar languages. When I told her the places I was thinking of heading she was surprised there were people working on our domain; she'd spent so long justifying this empirical-yet-linguistic approach, and I too know how hard it can be to convince the devout statisticians or the non-computationalists. Typology, more even than morphology, is a domain that gets a passing mention in undergrad years and yet never sees the light of day in modern research.
For her part she tried convincing me I should stick around CLSP, to join her in the battle. A tempting thought, though I worry it may be more uphill a battle than at the schools I've been thinking of. Though maybe it's worth another thought. All in all great food, great beer, great discussions, and intellectual vindication. What more could you ask for in a night?
music of the moment: (Are You) The One That I've Been Waiting For? ~ Nick Cave & The Bad Seeds (The Best Of (Disc 1)), A Night Like This ~ The Cure (Staring at the Sea - the Singles 1979-1985), Sewn Up ~ Rogue Wave (Out of the Shadow), OrangeJ ~ Modest Mouse
categories: grad school, personal
15 November 2008 : I can haz diploma?
It would seem over the last year or two my blog has lapsed from obscurity into death. Not being one to let things rest, I figure this horse still has some beating left in it. About, what, a month ago I handed in the final project for my MSE and so I am now a masterful computer scientist. This means, in short, that I now know enough to bore even other computer scientists on at least one topic.
The funny thing is that both topics of my project —category theory and unification— are topics I knew essentially nothing about when I transfered to JHU from PSU a year ago. Of course now, I know enough to consider myself a researcher in both fields, and hence know more than all but my peers within the field. I know enough to feel I know so little only because I have a stack of theses on my desk that I haven't finished reading yet. I'm thinking I should finish reading those before recasting my project into a submission to a conference/journal. Since the project is more in the vein of figuring out how a specific language should work, rather than general theoretical work, I'm not sure exactly how that casting into publishable form should go; it seems too... particular to be worth publishing. But then maybe I'm just succumbing to the academic demon that tells me my work is obvious to everyone since it is to me.
One thing that still disappoints me is that, much as I do indeed love programming languages and type theory, when I transfered here my goal was to move from programming languages and more towards computational linguistics. (If I were to stick with PL, I could have been working with the eminent Mark Jones or Tim Sheard back at PSU.) To be fair, I've also learned an enormous amount about computational linguistics, but I worry that my final project does not belie that learning to the admission committees for the PhD programs I'll be applying to over the next few months. Another problem that has me worried about those applications is, once again, in the demesne of internecine politics. For those who aren't aware, years ago a line was drawn in the dirt between computationally-oriented linguists and linguistically-oriented computer scientists, and over the years that line has evolved into trenches and concertina wire. To be fair, the concertina seems to have been taken down over the last decade, though there are still bundles of it laying around for the unwary (such as myself) to stumble into. There are individuals on both sides who are willing to reach across the divide, but from what I've seen the division is still ingrained for the majority of both camps.
My ultimate interests lie precisely along that division, but given the choice between the two I'd rather be thrown in with the linguists. On the CS side of things, what interests me most has always been the math: type theory, automata theory, etc. These are foundational to all of CS and so everyone at least dabbles, but the NLP and MT folks (in the States, less so in Europe) seem to focus instead on probabilistic models for natural language. I don't like statistics. I can do them, but I'm not fond of them. Back in my undergraduate days this is part of why I loved anthropology but couldn't stand sociology (again, barring the exceptional individual who crosses state lines). While in some sense stats are math too, they're an entirely different kind of math than the discrete and algebraic structures that entertain me. I can talk categories and grammars and algebra and models and logic, but the terminology and symbology of stats are greek to me. Tied in somehow with the probabilistic models is a general tendency towards topics like data mining, information extraction, and text classification. And while I enjoy machine learning, once again, I prefer artificial intelligence. And to me, none of these tendencies strike me as meaningfully linguistic.
More than the baroque obfuscatory traditions of their terminology, my distaste for statistics is more a symptom than a cause. A unifying theme among all these different axes —computational linguistics vs NLP, anthropology vs sociology, mathematics vs statistics, AI vs machine learning — is that I prefer deep theoretical explanations of the universe over attempts to model observations about the universe. Sociology can tell you that some trend exists in a population, but it can make no predictions about an individual's behavior. Machine learning can generate correct classifications, but it rarely explains anything about category boundaries or human learning. An n-gram language model for machine translation can generate output that looks at least passingly like the language, but it can't generalize to new lexemes or to complex dependencies.
My latest pleasure reading is Karen Armstrong's The Battle for God: A history of fundamentalism. In the first few chapters Armstrong presents a religious lens on the history of the late-fifteenth through nineteenth centuries. Towards the beginning of this history the concepts of mythos and logos are considered complementary forces each with separate spheres of prevalence. However, as Western culture is constructed over these centuries, logos becomes ascendant and mythos is cast aside and denigrated as falsity and nonsense. Her thesis is that this division is the origin of fundamentalist movements in the three branches of the Abrahamic tradition. It's an excellent book and you should read it, but I mention it more because it seems to me that my academic interests have a similar formulation.
One of the reasons I've been recalcitrant about joining the ranks of computer scientists is that, while I love the domain, I've always been skeptical of the people. When you take a group of students from the humanities they're often vibrant and interesting; multifaceted, whether you like them or not. But when you take a group of students from engineering and mathematical sciences, there tends to be a certain... soullessness that's common there. Some of this can be attributed to purely financial concerns: students go into engineering to make money, not because they love it; students go into humanities to do something interesting before becoming a bartender. When pitting workplace drudgery against passionate curiosity, it's no wonder the personalities are different. But I think there's a deeper difference. The mathematical sciences place a very high premium on logos and have little if any room for mythos, whereas the humanities place great importance on mythos (yet they still rely on logos as a complimentary force). In the open source movement, the jargon file, and other esoterica we can see that geeks have undeniably constructed countless mythoi. And yet the average computer geek is an entirely different beast than the average computer scientist or electrical engineer. I love computer geeks like I love humanists and humanitarians, so they're not the ones I'm skeptical of, though they seem to be sparse in academia.
I've always felt that it is important to have Renaissance men and women, and that modern science's focus on hyperspecialization is an impediment to the advancement of knowledge. This is one of the reasons I love systems theory (at least as Martin Zwick teaches it). While I think it's an orthogonal consideration, this breadth seems to be somewhat at odds with logocentric (pure) computer science. The disciplines that welcome diversity —artificial intelligence/life, cognitive science, systems theory, computational linguistics— seem to constantly become marginalized, even within the multidisciplinary spectrum of linguistics, computer science, et al. Non-coincidentally these are the same disciplines I'm most attracted to. It seems to me that the Renaissance spirit requires the complementary fusion of mythos and logos, which is why it's so rare in logocentric Western society.
music of the moment: Inoculate The Innocuous ~ The Unicorns (Who Will Cut Our Hair When We're Gone?)
categories: computer science, book review, grad school, linguistics, personal
11 October 2008 : Monoids for Free! (and other ways to earn a living)
I've been thinking recently about the free monoid, in particular about why it is what it is. Before you run off in fear of the terminology, read on. The rest of this post is in English, a rare thing for discussions of fundamentals of mathematics. It's that rareness which led me to muse on what all that abstract nonsense actually means.
For those who don't know what a monoid is, it's a triple <S, ⋅, ε> where S is a set, ⋅ is a binary operation over that set which is associative (i.e. (x ⋅ y) ⋅ z == x ⋅ (y ⋅ z)), and ε is the left and right identity of ⋅ (i.e. x ⋅ ε == x == ε ⋅ x). These kinds of functions are incredibly common. Semirings, which are also incredibly common, each have two. For example: addition with 0 and multiplication with 1 over the natural numbers; disjunction with False and conjunction with True over the booleans; union with the empty set and intersection with the universal set over the subsets of some universal set. Given how common they are, sometimes we'd like to construct an arbitrary one for as cheaply as possible, for free.
We can start by thinking about how to construct a binary operation for free. Let us consider * where for any x and y we define x * y = x * y. That is, when we apply * as a function to two arguments, the result is a binary tree with the root labeled * and each of the arguments as a child. It's plain to see that this is the most trivial binary operation: it does nothing, and it tells us nothing about the underlying set! But since it makes no requirements of the underlying set, that also means we can construct such a function for any underlying set.
So what about a free associative binop? Well, first, let's construct * as a free binop, which we can also write as simple juxtaposition (i.e. x * y == xy). Now, if we have some expression like "xyz" or "abcde", without the parentheses it's not clear what the tree of *s is for those expressions. If we declare that * is associative, then that doesn't matter. By the associative laws, all those trees have the same meaning, the same value, and so "abcde" forms an equivalence class over the trees (a(b(c(de)))), a(b((cd)e)), a((b(cd))e),... Another way of thinking of an associative binop is that it's really a variadic vector operation; that is, an operation that takes in an arbitrary list of arguments, much like functions in Perl or Lisp[1]. So a free associative binop is one which simply takes in a sequence of objects and returns a sequence of objects.
In order to make it into a monoid, we can say that the identity of our binop is nothing. This sounds like a cop-out but consider our examples from the beginning, in particular: addition over the natural numbers, and union over the powerset. It's easy to see that zero and the empty set are just ways of saying "nothing". For the other monoids it may be less intuitive, but being the left/right identity of an operation means that no matter how many times we add it in, we're not adding anything, we're adding nothing.
The free monoid over a set S can be less obtusely described as the set of all sequences of elements from S; or if you're a discrete mathematician, you'll prefer to call them strings over S. Our associative operation is string catenation, our identity is the empty string, and our carrier is the set of all strings over S[2]. In other words, we can interpret any set, S, as an alphabet and construct the set of all strings over that alphabet. Binary numbers are generated by the free monoid over {0,1}, decimal numbers are generated by the free monoid over {0,1,2,3,4,5,6,7,8,9}, all plays writable by a monkey typist can be generated by the free monoid over the set of keys on a keyboard.
When first learning about free objects it can be hard to see where they came from or why we chose a particular one to call the free one. After thinking far too much about Herbrandian terms and forgetful functors, I think I'm starting to understand the answer to those questions. Why is the free monoid strings instead of something else? Because strings have all, and only, the syntax necessary to fulfill the requirements of being a monoid. They have no semantics, no interpretation, nor do they interact with the structure of the set they're operating over. In a sense, this syntax, this minimalist description is the definition of a monoid; the fact that 1+1 can be interpreted as 2, or that {a}∪{b} can be interpreted as {a,b}, is just polish.
[1] Note that, unless it is also commutative, the order still matters. As a trivial example consider subtraction, a -b -c -d -e... . Of course, the significance of order follows in the examples of Perl and Lisp as well.
[2] Note that the carrier is not S itself, though there's an inclusion function from elements of S to elements of the set of strings over S.
music of the moment: Ways To Love ~ Jason Webley (The Cost Of Living)
categories: computer science, category theory
31 August 2008 : Objects are a big pile of fail
I used to drink the kool aid, it had a nice taste, but the more time passes the more I find myself agreeing with Bart, my mentor of old. Objects are big pile of fail. The Rubyists and the Pythonistas are coming now, with their pitchforks and baling wire. But they need not worry, they will be last against the wall. But to the wall they still will go.
Let us start off by all agreeing that C++ is an abomination. Now, I know most of you will agree with me on that count, but chances are there are a few renegade cells still hanging on (masochists if they put up with me). If somehow the vastness of the FQA doesn't convince you, even Amazon knows C++ is the dumbest language on earth. One of the greatest claims to fame of C++ is that they've managed to convince everyone that an "object" is a struct with a vtable. Do you hear that sound? That screaming comes from all the stillborn projects where a dynamic message-passing/actor model of OOP would have saved years of work and millions of dollars. And rather than fix this broken model, C++ layered feature upon feature —each more broken than the last— in an attempt to cover up the smell.
The single greatest failing of objects can be traced back to this failure to even embrace the object-oriented perspective in the first place. If the original idea (or the original post-Simula idea) had been embraced instead of being bludgeoned in a back alley by a PDP-11 assembler, then the OOP paradigm might have stood a chance. It might have had a chance because it's a paradigm, an ideal of organization and style, not a bundle of language features. Language features help, don't get me wrong, but Perl has all you need, as does Haskell, as does C if you do the name mangling yourself. But without people harkening back to the elder days of CLOS and Smalltalk, they will never know what they lost.
But C++ did have one thing going for it: People Hate C++. People hated it so much they invented Java to begin hammering the final nails in the coffin. Java sucks, but Java sucks like a pre-frontal lobotomy. If you hate C++ you have verve and determination in your hatred. Noone seems to be able to give a shit enough to really work up a good hate for Java. As Jamie Zawinski says, at least Java doesn't have free(); but that can be said for any language invented in the last 28 years.
But there are good reasons to work up a nice heartwarming hatred for Java. For one, explain Java's memory model to me. No, seriously. Perl uses five times less memory across the board, and it's interpreted. Ruby? Python? SWI Prolog? All of them use 3~5 times less memory. Prolog ferchrissakes! And don't even get me started on Haskell, Clean, OCaml, or Eiffel. Let's face it, Java's memory model sucks. And even with the JIT it's only marginally faster than these compiled languages.
One of the places Java's memory model is broken has to do with its single-minded view of objects: that everything is one (except when it isn't) and that all objects live on the heap. Oh where to even begin. Let's just say that adding light-weight tuples ("records" or "structs" to you imperative folks) as primitives to the language would increase performance by 20~50%.
While we're harping about performance, consider that setter and getter methods take 300 times longer than direct access. Not percent. Times. Why is this not optimized away? Who knows, but it probably has something to do with the Java security model which means you can't do tail call elimination or inlining. Of course, you can, in fact you can do it and still have a stack-inspection security model, just not the model Java uses. It's funny that a language so concerned with security offers no efficient mechanism for giving read-only access to fields, nor any deep read-only view of objects. Of course the whole Java ideology revolves around refactoring to small functions, it's a shame function overhead is so great. Want to know another hidden performance hole? Iterators. Don't believe me? Try writing an iterator for arrays instead of using the C-style for-loop. Want to know another one? Strings. Never, ever use + on strings. Heck, as Jamie Zawinski says, you'd be much better off just using char[] if you care about memory; and we all know how well that worked out for C.
But we're not here just to talk about the failure of C++ to have a defined semantics, or the failure of Java to make the bare minimum optimizations. We're here to talk about the failure of OOP. Java inherited C++'s struct-based model so it's barely salvageable in the first place. The fact that it's an IDE-only language with too much boilerplate to be readable by human eyes is besides the point. Both of these languages have failed on a catastrophic level to manage the complexity inherent in large system design. But wasn't OOP supposed to be the silver bullet with modularity, encapsulation, and reuse? Well, that's the point. If OOP was supposed to be so good at those things then why are we still here? Both of these languages enshrine the public conception of OOP and both of these languages provide too low level of a view to be useful for any kind of reuse. As was said in the OOPSLA debate, they are languages for creating bricks, but bricks do not a city make.
The struct-based notion of objects undermines the very principles of OOP. The problem is that these languages fail to decouple implementation (the struct in memory and the bytes of code) from the interface that implementation represents (the methods and semantic behavior the object represents). Semantically, it is often the case that a subtype is more specified and so has less freedom than its supertype. If we have pairs (X,Y) as the supertype, then (42,Y) is a subtype of it. And yet, with the implementation-inheriting struct model we are forced to have objects be of monotonically non-decreasing size as we travel down the type hierarchy. That is, even though X is always 42 in the subtype, objects of that subtype are forced to be at least as large as their supertype. Languages like Python and Perl just use dictionaries to encode an object's fields and so they don't suffer from this struct problem, though many have leveled complaints against such free-wheeling approaches. Smalltalk had it right in that you could just gut the inheritance tree and claim to be any type you want so long as you have the methods.
So here's another problem, one that'll knock that smug look off the Pythonistas faces. If you've ever done a serious project in an OO language then you'll almost certainly have run into the fragile base class problem. The most glaring example of this problem is the idea of having an Object class from which all other classes inherit. It's okay Python, all the other kids were doing it, I don't blame you. Java has one of the most monumental examples of why this approach is entirely wrong, it's called the Cloneable interface. The idea of having a singly rooted inheritance tree is the second most blatant failure undermining the very notion of OOP. If "everything is an object" then you simply design the language so that everything is an object. Your type system says that everything is an object, with whatever that entails. Full stop. Inheritance is a nice little thing, but it is not the be all and end all of language design. What it is that makes something an object is not a collection of methods that every value in the language supports, in dynamic languages you could remove those methods anyways. Being an object means simply: being. an object. Trying to have a single class that everything inherits from introduces a bottleneck into the system which guarantees that you be bitten by the fragile base class problem. Smalltalk at least had the good sense to push the singly rooted hierarchy all the way up to MetaObject.
Anyone who's been following the developments of Java over the last decade will begin to notice a pattern compared to C++. And as any good OO developer knows, when you see a pattern you should abstract it out. Only the OO paradigm does not give the versatility to do so, instead you end up with "design patterns". But when 16 out of 23 design patterns are invisible or simpler in a functional language, that makes you wonder if these patterns are missing language features. But despite all these design patterns, you also end up with a whole lot of "features". Just consider Java's simple OO system: with member classes, anonymous classes, local classes, and nested top-level classes. Oh, and language-wide support for monitors. Don't forget the final keyword which means as many things as virtual and static do, oh and don't forget your annotations. Don't get me wrong, I like a fully featured language, but these are not they. These languages are designed in order to make the programmer feel smart for memorizing reams of worthless minutia. What ever happened to the concept of a small number of powerful and orthogonal features?
So back to the OOPSLA debate, because they said it all six years ago. The future of programming lies in organic programs that can fluidly evolve and can heal themselves rather than failing hard. Object-oriented programming, much as I enjoyed the promises a decade ago, cannot cope with such requirements. The OOP peddled by C++ and Java, like so much of computer science, is trapped within the shackles of modernism and the false idol of the Ur narrative. The OOP peddled by dynamic languages like Perl, Python, Ruby, and Squeak are just as confined by postmodernism and pomo's failed rebuttal of modernism. Pomo is dead, and it has been dead for years.
Modernism believes in a world where there is only a single variety of self, the monoculture. Postmodernism exploded this notion and offers a multiplicity of self, but it is just as self-centered as modernism ever was. The post-postmodernism is performativity, which holds that there is no self, there is only the enactment of a self, and since our actions are ever-changing so too is the self which is constructed by those deeds. It is our very actions which define a state of being, it is our interactions with others which defines our existence. Truth comes from the world, not from within. In the last five years performativity has moved from a sideline philosophy and has now infiltrated most of the social sciences. And so too will it be with computer science. The programs of the future will not be about the program itself, they will be about the programs' ability to interact with other programs and to interact with the world. A computer in isolation is meaningless. Our meaning, our content comes over the wires when we connect with one another. We do not play games alone anymore. We do not play them from behind computer screens. The world has infiltrated our electronic spaces and the programs of the future will exist not in computers but in that world itself. The future is event-driven, interactive, it is a dialectic about the Other, about what is outside of the Self, it is a search for consensus. The future is not about the programs that exist, it is not a time, it is a process, it is about forever becoming.
music of the moment: Rhymes Of An Hour ~ Mazzy Star (Among My Swan)
categories: links, computer science, rant
24 August 2008 : Turn SSL on (for Gmail and everywhere else)
For anyone who happens to be reading and whom I haven't spammed about this already:
Hat tip to homasse.[1] And while we're at it, you should be using PGP as well.
This isn't paranoia folks, this is the future. Everything you say should be encrypted at every layer, unless you what it to be completely public. If you have a wifi router, you should have WPA2 turned on (not WPA, and certainly not WEP). Every personal transaction should be over SSL. Your ssh keys should have pass phrases on them (which is different than a password, and isn't sent over the wire). Know your data, know everything that touches it. Prophylactics are the sign of a good netizen.
[1] Sorry about the redundant email, I just scraped all the gmail addys from my address book.
music of the moment: Pan Opticon ~ Coldcut (Let Us Play (Disc 1))
categories: psa, computers, ethics