Wednesday, January 26, 2005

Take It Sleazy

Sometimes its hard to get these little entries finished. You know, I start them, and then... I don't know. When I get home from work I don't really always feel like writing in the 'blog.

So the cat has been acting real suspicious around the kitchen, spending most of her time in there, always with her nose to the ground, peeking under the stove and refridgerator in particular. Well, the other day, she ran into the living room with real goddamn live mouse (well, mouse-baby) in her mouth. We didn't even think we had mice! Guess they came in from the cold. Anyway, though, she's chomping it and spitting it out and whacking around, and eventually, man, this mouse is fucking dead. But she's still batting it around, so Mer and I make a move to take it away from her -- I'm advancing on her with the broom and dustpan -- and she does not like this at all. So what she does is, she just fucking swallows the whole thing on the spot! The whole thing! I've never heard of a cat actually eating the things it kills. Yeah, but anyway, she also happens to be wearing this Elizabethan collar that's supposed to stop her from chewing on herself (it doesn't) but now it's got mouse guts all over it. So we had to pin her down, take off the collar and wash it, and then put it back on.

Apparently she threw up in the collar the other day and that was much worse, but it happened on Mer's watch, so I don't really have any salient details. Maybe she'll put it in her thing.

What else, what else... oh yeah -- if you like XML and you like Scheme, then you may or may not like my SDOM, but you should still help me out with it, because god damn it it's a lot of work.

Oh shit I just farted pretty loud, at work. I'm here real early though (it's 8:15 right now) so I don't think anyone heard. I'm gonna go take a shit, I think.

How good does this movie look?

Sunday, January 23, 2005

Lizard 2005!

...I mean, blizzard... 2005. So the snow (and forecasts of doom) started at noon yesterday, and were finished promptly at noon today. I took a few pictures. We even trudged out to Prospect Park, where there was some marathon sledding shit going on, but the picture I took there didn't get recorded by my piece-of-crap camera.
Router, Care-Bear pillow, Kleenex, The Making of a Poem, and, oh yeah -- fuckin' snow!
The bathroom: We're snowed in!
Is this not the cutest thing you have ever seen?
My sister, genious (sic):
(19:41:53) [My Sister]: is grace an ugly fat girl name or a hot beautiful blonde name
(19:41:56) [My Sister]: in your opinion
(19:42:03) Nintendo Julian: depends
(19:42:07) Nintendo Julian: how fat is the girl
(19:42:27) [My Sister]: pretty fat id say
(19:42:36) Nintendo Julian: Mer and I say hot beautiful blonde
(19:43:00) [My Sister]: your wrong
(19:43:04) [My Sister]: its fat ugly girl
(19:43:07) [My Sister]: with braces
(19:43:08) Nintendo Julian: well... alright
(19:43:16) [My Sister]: that or old lady

Thursday, January 20, 2005

Fucking Z-Bots!

Rebuilding for like... the 5th fucking time today, no joke. Jesus. The past week or so at work has been so profoundly boring that all I've been doing is reloading my HoTMaiL and Gmail windows in the hopes that someone will contact me. No one has! Fagits!

Some people don't like jerkcity, but I do. Here are some good ones:It's not for everyone, I guess.

I have decided to cut myself some slack, a little, on my spare-time programming, because it makes me really exhausted and headache-y. Like I know I've mentioned before, the language I'm writing in right now requires that you construct your code in a less... straightforward way, the end result being that at "execution" time, it "evaluates" like a beautiful blooming flower instead of coursely ejaculating like a hairy, sequentially-oriented gaijin Jew bastard. So.

Stallman goes for, does not get the girl.

Reading the Larry Lessig book that the FSF sent me as part of my membership package -- persuasive to say the least. If you've ever wanted to let yourself off the hook for all the MP3s you download... well. No, that's not really what it's about. Let me know if any of y'all want it when I'm done (I actually just finished it right now at work), otherwise I'm givin' it to the liberry.

In other news, we got a rather baffling answering machine message a few days ago. Here's my best attempt at piecing it together. As you can tell from listening, the speaker had a rather heavy European accent.
Hey [Julian?]. Uh... It's Alex. How are you? Heh. How are you and where are you? Ah, I am in... uh... in Brooklyn, in... uh... York St. I'll call you back later, but [maybe I'll go now?] I was taking pictures of this bridge. Uh... I'll try you at your other num- other number, or uh... I'll try to find you... later. But it... [???] Little Italy or Chinatown. I'll find you. Bye.

Monday, January 10, 2005

The Death Of A Toad

I've been farting around with Norton a bit, and I like this Richard Wilbur poem in there that shares its name with this post:
       A toad the power mower caught,

Chewed and clipped of a leg, with a hobbling hop has got
To the garden verge, and sanctuaried him
Under the cineraria leaves, in the shade
Of the ashen and heartshaped leaves, in a dim,
Low, and a final glade.

The rare original heartsbleed goes,
Spends in the earthen hide, in the folds and wizenings, flows
In the gutters of the banked and staring eyes. He lies
As still as if he would return to stone,
And soundlessly attending, dies
Toward some deep monotone,

Toward misted and ebullient seas
And cooling shores, toward lost Amphibia^Rs emperies.
Day dwindles, drowning and at length is gone
In the wide and antique eyes, which still appear
To watch, across the castrate lawn,
The haggard daylight steer.
I thought I had other things to post, but I don't.

Tuesday, January 04, 2005

Krupps & Felt

I've been thinking about House of Leaves lately. I've read a whole lot of Internet things that say it's a load of pretentious hackery, which is, of course, all it takes to take the wind out of everyone else's sails. What I think is that the material devoted to the emotional motivation of the main character falls pretty flat (to the extent, I guess, that it necessitated the writing of a whole 'nother book), but that the rest of it is a truly nasty and extremely virulent little meme. I recommend it to all of you who are patient.

Mer rented Garden State and I just watched it. It's alright -- self-indulgent, wears a bit thin in the last act, but it's fairly genuine otherwise, it seems like. All those Jersey rich-kids reminded me of my friends from Wesleyan, none of whom read this.

Apparently Devil-Lynn got me this DVD for Christmas. Thanks, guy! (Does a 'blog "thank you" mean I don't have to write a note?)

Here are some tidbits from a story from Edge (as featured on /.) where they ask 120 experts from various fields about things they believe but cannot prove. Inneresting! Tor Nørretranders preaches to the choir:
It is important to have faith, but not necessarily in God. Faith is important far outside the realm of religion: having faith in other people, in oneself, in the world, in the existence of truth, justice and beauty. There is a continuum of faith, from the basic everyday trust in others to the grand devotion to divine entities.
Carlo Rovelli appeals to people who don't know anything about physics, like me:
I think that the notions of space and time will turn out to be useful only within some approximation. They are similar to a notion like "the surface of the water" which looses meaning when we describe the dynamics of the individual atoms forming water and air: if we look at very small scale, there isn't really any actual surface down there. I am convinced space and time are like the surface of the water: convenient macroscopic approximations, flimsy but illusory and insufficient screens that our mind uses to organize reality.
Chris Anderson gets plain mean:
The Intelligent Design movement has opened my eyes. I realize that although I believe that evolution explains why the living world is the way it is, I can't actually prove it. At least not to the satisfaction of the ID folk, who seem to require that every example of extraordinary complexity and clever plumbing in nature be fully traced back (not just traceable back) along an evolutionary tree to prove that it wasn't directed by an invisible hand. If the scientific community won't do that, then the arguments goes that they must accept a large red "theory" stamp placed on the evolution textbooks and that alternative theories, such as "guided" evolution and creationism, be taught alongside.

So, by this standard, virtually everything I believe in must now fall under the shadow of unproveability. Most importantly, this includes the belief that democracy, capitalism and other market-driven systems (including evolution!) are better than their alternatives. Indeed, I suppose I should now refer to them as the "theory of democracy" and the "theory of capitalism", to join the theory of evolution, and accept the teaching of living Marxism and fascism as alternatives in high schools.


I'm getting pretty sick of having to go to work -- especially when I make some critical breakthrough in something I'm working on and look at the clock and it's time to brush my teef and get on the subway before I have time to finish implementing it. I want to go on vacation again. Anyone want to sponsor me, Damian Conway-style? Right, didn't think so.

A funny Jerkcity, something of a rarity.

Monday, January 03, 2005

Aud Lang Sine Wave

Happy New Year, my little habichuelos! (My little habas!)

The way of the future.
The way of the... future.
The w-way of the future.

Peep it, creepits -- a letter from Knuth to Condi Rice, circa 2002. You may also enjoy some of his photographs.

Also of interest: John Gilmore (EFF)'s explanation of what's wrong with copy protection.

I've been frying my brain on computer shit lately. Luckily, Razor Lopez, with whom I spent a delightful NYE, lent me a whole bunch of XBox games that I'm totally gonna play. To whit:
  • LOTR: The Two Towers (really hard, though apparently I'm already farther than Billy)
  • Arx Fatalis
  • The Simpsons: Hit & Run (utterly delightful)
  • The Thing
  • Believe it or not, Syberia the first!
In return we gave him Fable, which I think he'll enjoy. It's well-crafted, if not terribly expansive.

On the subway ride home from Roger Cumming Architecture, this young middle eastern guy puked up a whole bunch of brown crap like halfway down the car from us. Gross! The cat still has a little diarrhea. Mer cleaned literally everything in the whole house. We are becoming vegetarians for 2005; we are becoming vegetarians that can fish.

Come in with the milk.

Monday, December 27, 2004

Bitches!

I bought stamps at the post office before coming to work and affixed them to the remaining "holiday cards" on the subway. The guy I was sitting next to was very well-dressed -- leather, etc. -- but he smelled like feces. I mailed the cards before coming upstairs. Literally nobody is in the office today. Zero developers. 2 QA people (including me -- I am honorary QA manager). Nothing can get done.

Sounds like Mitch Hedberg's got a little dok-dok-dok problem (or his existing problem has gotten worse). His act actually sounds pretty punk rock, though.

Okay, I'm home now. Razor Lopez and Chrissy Rodney were supposed to come over to hang out / play Xbox, but one's feeling sick and the other may not be doing so great either, so right now it's looking like an evening of drinking wine and hacking LISP by candlelight.

Saturday, December 25, 2004

Fuck Christmas

Mer has flown the coop, so to speak. I miss her already. But we made a bunch of totally awesome "holiday" cards and maybe some of you will get one in the mail once I can buy some stamps.

We have switched the cat to this dry food that's supposed to help her skin, but I'm not very good about measuring out how much to give her -- I just pour it into the bowl until she pushes my hand out of the way with her head -- and it's kind of upset her stomach. She just crapped an extremely noisy diarrheaic crap into her litter box. Think the ring-presentation scene in Henry Fool.

Look, I know crapping on people who whine about the discrepancies between the book and movie versions of Lord of the Rings is kind of passe these days, but take a gander at this site. See... there seem to be a lot of you out there who think these books are some kind of masterpiece, but you need to face facts: This Tolkien guy is positively a misogynist and extremely probably a homosexual. I shit you not, I have read his biography. All this bullshit people are always carping about -- platonic ideal of male friendship and all that -- it's just Tolkien crapping on women and wanting to fuck his WW1 buddies. There is no such thing as this innocent, affectionate male friendship that people won't shut up about -- Sam wants to fuck Frodo. Don't you get it? And when you people get all fussy about Peter Jackson tampering with this sacred, sacred little repressed love affair it means a) you are gay, which is fine; or, b) you are a tiny little immature baby-person, because that was the creepiest goddamn part of the whole trilogy of books -- books, which, by the way, are notable more for the obsessiveness of their author than for anything else. They represent a disorder on the scale of this, minus the little naked girls with dicks, of course.

I sarcastically cannot wait to hear everyone's wonderful opinions about this upcoming thing.

Mer and I have been doing this thing recently which I think is fun enough to recommend to others. Instead of going to the movies or buying CDs or whatever, once a week we have been going out to eat, usually for brunch, at a different shi-shi restaurant in our neighborhood. It usually comes out to around $30, which is why we only do it once a week, but now we have totally eaten at like every restaurant in our neighborhood. Places like
  • The Cornbread Cafe
  • - Good cornbread, which is something of a rarity; roasted potatoes to die for
  • Applewood - Good food, especially if you like apples; they have a real working fireplace, too
  • Dizzy's - Expensive, so-so food, and they gave us the bum's rush when it started to get busy
  • 2nd St. Cafe - Deelightful, if you don't mind the wait. Best "huevos rancheros" in the galaxy.
Mer's playing of the light-side Jedi guardian is mad finished, son. It's time for my guy, Dark Jedi Astor Speeris -- heck, that's Darth Speeris to you -- to really shine, or do whatever dark lords of the Sith do. Simmer, I guess? I'm awesome at naming these guys. My dude from the first game was named Telstar Schlitz. Now I gotta do some laundry and get some groceries.

Oh yeah, and I forgot -- I don't usually like Mac Hall that much, but this strip is a keeper.

Friday, December 17, 2004

Oh Bess

I realized that I was really on edge literally because I couldn't decide whether I should write a full DOM implementation (a big stupid programming task -- this 'blog is still going to try to stay non-technical, don't worry) in Scheme and try to get it included in guile-lib and then depend on it for my library or whether I should write my own DOM-like API and expose that to users. And that's a stupid thing to worry about. So for the past couple of days I have just been taking it easy on myself, brain-wise. And that's okay, as far as I'm concerned.

None of you are getting Christmas presents from me, because frankly I think it's silly.

Went to see a production of a play called "The Highwayman" that my friend Julia was putting on; a bunch of my other friends were in it -- hell, I was almost in it myself but I got bumped in a case of cruel casting-call caprice. It was great, except that the theater-space it was in was not heated at all, and I was wearing my All-Star low-tops. My toesies got been frozed.

Wednesday, December 15, 2004

The Worst Day Of Your Entire Life

Mer made this sausage pasta dish tonight that it totally the best thing you can possibly eat if you don't care about the environment or your health. Here's how to make it -- it's from Joy of Cooking, but since you can't copyright a recipe I think it's okay to talk about it here. You'll need:
  • About 3 (spicy) italian sausages, torn into little chunks with your fingers
  • Broccoli (or other steamable veggie) cut up however you like it
  • Some garlic, chopped up small
  • Some hot red pepper flakes if you want
  • Olive oil, a third of a cup or so
Heat up the oil in a skillet and cook the sausage until it looks somewhat cooked. Put the garlic in there and keep cookin' until the garlic gets cooked and sprinkle the pepper if you've got it. Now add the veggie and get a piece of tinfoil and, with oven mitts, wrap it around the skillet and just leave it for 5 minutes. Now you're done -- put it on pasta and you've got a meal. Bam!

I've been reading some old textbooks on computability I had lying around and reviewing the proofs for shits and giggles -- it's like playing a videogame with a walkthrough. Among the amusing results, for the sake of review:
  • It is not possible to write a program that can figure out whether or not a particular program will behave in a particular way given a particular input (call it "accepting" or "rejecting" a string)
  • It is not possible to write a program to determine whether another program rejects all string
  • Furthermore, it is not possible to write a program that can tell whether two programs have any properties related to string-acceptance in common at all
  • It's not possible to write a program that can tell whether another program is as efficiently-written as possible
I had a meeting at work today that I was pretty on edge about, and it turned out to not really be anything. And of course I can't say anything else about it, this being the Internet and all, so you guys don't care. But I'm still kind of neither here-nor-there regarding how I feel about my job, which is stupid because they pay me more than I think is probably necessary for... well, for something for which I've basically put all the actually important things in life aside. So.

Taking a tip from Devin, who literally has a separate blogger.com account for each of the cartoon characters in Yu-Gi-Oh! with whom he's consumated a relationship, I've added a little sidebar that contains an HTML-ization of my Advogato RSS feed. What the fuck does that mean? Well, it means I don't have to write about computer stuff in this 'blog any more, because any interested parties (don't think there are any) can read about it there. It also means there'll be fewer entries in here, because I don't give a fuck about shit that doesn't compute, knowwha'msayin'? Now I just need to find a way to fix the stupid font color for those links.

Monday, December 06, 2004

Vacation Wrap-Up

So, the vacation's almost up. I didn't do that much stuff, or at least not as much as I expected to do. Let's see...
  • On Sunday and Wednesday I went running. After that it got way, way too cold in the late afternoon, which is when I like to go
  • Rented a couple of movies that I'd been wanting to see for a while: The Wicker Man and eXistenZ. The Wicker Man kind of dragged it's feet a bit when it came to making with the scary (make with the scary already!) but it was a fine character study, at least. And it has songs. Everyone (i.e., the back of the box) is always comparing eXistenZ to The Matrix, but that's stupid. I think the Matrix maybe had a cleverer premise, but not even. Whatever. Fuck talking about movies.
  • Vacuumed and cleaned a whole bunch
  • Partied out with Razor Lopez a bit
  • I went shopping at the Target down at the Atlantic Center mall on Flatbush near our old place. Let me tell you something -- Target is some nice shit. It almost approaches the level of, like, a department store in Manhattan, where you feel like you're too dirty and poor to shop there. I bought some new boxers, a pitcher for juice, and a wonderful glass container for storing flour so that the larder beetles don't have babies in it any more.
I was thinking I wouldn't be able to talk about this at all -- for diplomatic reasons -- but since Mer wrote about it in her 'blog, you can just read all about it there: My mom thinks I live in a cave

After her mom left, Mer and I went out to brunch to celebrate at the 2nd Street Cafe (it's on 7th Ave.), and I had these huevos rancheros that were basically the most delicious thing I'd ever eaten. I mean, I've never had huevos rancheros before, but shit. I could eat 'em for god-damn forever. Anyway, on the way home we stopped at GameStop and Mer bought this game called Syberia II, which is like a sort of shitty version of Myst set in the colder parts of Europe -- an idea not without its charm, mind you.

So Mer and I have been playing this game, but it just sort of freezes up all the time, so this morning I re-played all this stuff that we'd played yesterday but lost. The funny thing about the game, though, is that by default there's a subtitle track that goes along with the voice acting, and whoever wrote out the script... well, they really wrote it out, so you've got characters whose dialogue comes up as something like, "Snigger. Sure seems like it, eh, pet? Snigger."

Okay, so you know how I said I wanted to post some screenshots of the XUL renderer I you all I was working on? Well, this afternoon I got it a to a point where I got something worth showing off, and I have promptly stopped working on it. Phew -- now I can finally enjoy my vacation! Oh, wait -- I go back to work on Wednesday. Anyway, the thing I'm rendering is the Preferences dialog window from this Mozilla XUL application called MozEdit. I've modified it slightly to compensate for the fact that my renderer doesn't deal well with explicit lengths that are specified in pixels. The one on the left is the output of my renderer, the one on the right is Gecko (i.e., FireFox):
MozEdit Preferences, as rendered by Ncurses-XULMozEdit Preferences, as rendered by Gecko
Note that for some weird reason, on my system my renderer even does a better job than Gecko because Gecko fails to render the radio buttons for those radio groups -- I think that has something to do with the way I was viewing the page, though.

Tonight I think I'll go see Bill's band over at Knitting Factory. Maybe there'll be an open bar.

UPDATE: Yeah, so I went to the show, and it was fine. Very nice. But before going I made this elaborate dinner -- it was spicy baked yams and eggs au gratin with asparagus tops. Totally delicious and I totally pulled it off in about an hour. But during the (terrible) band that came after Big Business, I was talking to Sam Huntington in the back by the bar and I farted this long awful fart; probably the stinkiest fart I've ever farted in my life. It just smelled like rotten garbage or something, and it hung around for freakin' forever. The female member of this couple that was standing next to us actually suggested that they go somewhere else. Sam was totally understanding, though, and said that he'd farted a worse fart earlier the same day. What a guy.

Thursday, December 02, 2004

I On Vacation

That's right -- suck it up, bitches. I've been on vacation all week, just haven't been 'bloggin'. I've got things to talk about, but I don't feel like talkin' 'bout 'em right now. Maybe I'll add some stuff to this post later. My ncurses renderer's coming along nicely -- I was hoping to have some screenshots comparing it to the Gecko renderer, but I've been having some trouble with it. It does a whole bunch of sophisticated things, like matching HTML colors to ANSI ones, but there are some simple things that make it barf for some reason, like trying to render 0-size elements.

Wednesday, November 24, 2004

Set And Forget

It's almost Thanksgiving. I don't kee-yah 'bout dat.

My ncurses XUL renderer is coming along nicely. Too bad XUL sucks and only crazy people write programs for ncurses. I'm working on getting CSS properties imported and making colors work. Maybe I'll start a SourceForge project for it once it's a little more mature. Or a Savannah project.

Everyone's an idiot except for me.

Monday, November 15, 2004

Shitcock!

Okay, now you have to hear about some computer shit because I am proud of it. So you know how I was writing a constraint-based layout engine? Well, here's my algorithm, which Mike Bell can probably prove inefficient and wrong. You start by building a tree of elements that need to be rendered, some of which may specify their size explicitly, some of which may specify their size unreasonably, and some of which may not specify size at all. Here's how you decide how big they get to be:
  • At every node in the tree, ask your children how much space they need to render themselves; offer each child node the maximum space available to you
  • If the aggregate of requested sizes from your children exceeds one or both dimensions of your maximum size, scale all children to fit proportionally
  • Set your size to the minimum between the aggregate of your child node requested sizes and the maximum space available to you
To calculate your own size requirements, do the following:
  • If you have any text content, size the text according to a line-break-aware text-sizing algorithm (too boring to describe here)
  • If you have child nodes, take the maximum width and the aggregate height (or vice versa, if you're orienting your elements horizontally) of your children
  • If you have a specified min-width or min-height, ensure that your requested width and height are at least equal to these lower bounds; if you have a specified max-width or max-height, these should establish a cap for both dimensions
Here's a piece of good news -- I was getting really frustrated because I was running my renderer on a bit of sample XUL and getting a layout I didn't understand. So I got kind of depressed and figured I'd dick around with the built-in XUL renderer in Firefox. I run it on my sample XUL, and I get the same output as my renderer! So my renderer appears to work, even though I have no idea why it's doing what it's doing. Now it's more or less a question of figuring out how to render all of the elements, like checkboxes and radio buttons, etc.

Here's a piece of bad news. It turns out the reason that KeySpan's been asking us to pay $60 a month for cooking gas is that there's a gas leak in the building somewhere between our apartment and the incoming gas line in the basement. The KeySpan guy shut off the gas to our apartment and the landlord's got a plumber coming on Thursday, but it's not super clear when we're gonna have gas again.

In a moment of nostalgia, I went searching for this story that Bill and I had found on Stile Project a while back. I remember Billy originally remarking on it as a pretty dead-on characterization of how depressing and shitty (literally!) suburban life sounds -- it doesn't disappoint.

I'm on vacation on Thursday and Friday! Suck a dick, employers!

Saturday, November 13, 2004

Yes. Right Into The Camera. Yes.

It seems congratulations are in order:
  • All hail M-Biddy for getting a job -- at OpNet, the Pentagon's largest supplier of nuclear missiles and Arab-killing gases! No, that's not what it is; it's some boring god-damn networking thing
  • All hail Devlin Smithers for making. more. money.
This ncurses project I'm working on is starting to get pretty interesting -- what I'm doing is creating an ncurses rendering target for XML-based user-interface toolkits. ncurses, by the way, stands for "new curses," and curses, by the way, is this fairly hoary UNIX library for doing low-level manipulation of terminal screens. Think text-mode graphics, basically. The problem with ncurses is that, while it makes it very easy to, say, draw a single character at particular place on the screen -- no easy feat with the standard set of system calls and libraries in UNIX, mind you -- it is horrendously difficult to render a full screen of "widgets," like boxes, buttons, text input controls, etc. On the other hand, though, you've got these XML user-interface-markup document types, like XUL, where you can quickly and easily specify things like buttons and check-boxes and whatever. Here's what a little piece of XUL might look like:

<box id="main-box" align="center" border-width="1">
<label id="main-box-label" text="Click the button below"/>
<button id="main-box-button" text="Click me!"/>
</box>

It's pretty obvious what that's gonna look like, right? And it was super-easy to write, too. Here's the problem: Currently, the only real renderer for XUL is called Gecko -- it's what renders HTML for Mozilla Firefox, too -- and so you need a raster-based GUI like X11 or Win32 to run it, and this doesn't help anyone at all if they're trying to develop text-based applications. So what I want to do is make it so that you can feed in that XUL to ncurses and have ncurses draw it in text mode. This is not an unreasonable proposition, since the majority of the widgets specified by XUL don't specifically require pixel-level control of the display device.

Where it gets interesting, though, is in trying to figure out where to draw these things on the screen. I found a little bit of information on this at the Gecko development page, but for the most part I have to figure it out myself. HTML, see, uses what's called a "flow" based layout paradigm, which means that you more or less assume that a "page" can be arbitrarily long, so that if there's an element that absolutely needs to be a certain size, then the other elements can wrap around it or go after it, and you basically can just put things in the next available space on your infinitely long or wide page. XUL, on the other hand, as well as other rendering kits like Gtk, are "constraint" based, which means that there's a certain maximum size (such as an application's window) and you're not allowed to exceed that size -- so if you give all your elements leeway to take up as much space as they want, you might not have room for all of them. So maybe you have to squish some of them a little, and even then you still might not have enough room. Basically, constraint-based layout algorithms are more likely to fail than flow-based ones; and that's okay -- it's interesting, even. So I'm trying to write some layout code now. We'll see what happens.

Adam Cadre finally got some essays up about the election -- it's a lot of material, but it took him like a week and a half, too! The more of his shit I read, the less I think I'd like to hang out with him personally, but that doesn't mean he doesn't make a mean bean dip.

I want to do something this weekend, but I think I'm getting sick. We'll see.

Oh yeah, here are links to some 'blogs that I found; I'm not gonna create permanent links to them because I'm not especially close friends with their respective authors, but some of you might be, so:

Wednesday, November 10, 2004

People With Ultimatums

Rudy sez:
...commentators all over the political spectrum are saying that one of the reasons that Democrats lost the election is that they are "elitists" and "out of touch" with the "moral values" of Americans. But you know what? The problem is not that Democrats are out of touch with Americans. It's that these so-called "Americans" are out of touch with America as a concept. While all of these pundits are decrying the division of America as somehow the province of "liberals" and their misunderstanding of the middle and south of the country, how about just the occasional fucking word about how Bush's constant berating of "intellectuals" and "Massachusetts" is more divisive, as if somehow Illinois, Pennsylvania, California, and New York are filled with eggheads who only theorize and refuse to get their hands dirty in the real work that all those amazing "real" Americans engage in every day.
Apparently some of you think the south of this country deserves some sort of pass, because... God, I don't know, your reasons are so shitty and irritating that I can't even remember any of them. And neither, apparently, can this guy. But I could have told you that ignorance wasn't a fucking virtue before this election. And I know you guys think that ignorance plus poverty makes 'em okay, but look: When people get too poor, sometimes you just have to kill them, because clearly they didn't want it bad enough.

John Ashcroft resigns?! Apparently some of you saw this coming. Sez he:
The objective of securing the safety of Americans from crime and terror has been achieved.
Buh?!

I submitted my partially-working thread-cancellation patch to the Guile people. The more I think about it, the more I think my code was working and was actually exposing some SEGVs in their code. I mean, it was crashing when I pushed a quoted symbol into the list of cancellation expressions, and the crash happened in one of their symbol lookup functions, so... I don't know. Hopefully someone will look at it and get back to me before they release 1.8.

I also packaged and made preliminary releases for gzochi-client, gzochi-common, and gzochi-server. Peep it here. If you have any sort of UNIXy operating system, I encourage you to download it and give it a shot. Hell, even if you've got Windows, all you need to do is install Cygwin, and you should be able to use my stuff. Throw me a god-damn bone here.

I've also started working on that ncurses renderer for XUL -- after getting into a heated argument (well, not that heated) with some creeps at the Mozilla Foundation. For some asinine reason, they don't want to write a DTD for XUL, because then XUL wouldn't be "extensible" any more via this language they've got called XBL. This is retarded! If you develop a "technology," or whatever they're calling XUL, and you want developers to use it, you need to make them some kind of promise that it's safe to use -- this promise is called a "standard," and even if part of this standard is that core functionality can be extended. You just include the extensibility in the standard, so that your developers know the ways in which your thing can be extended. Fuck! God damn it. Their other rationale for not coming up with a standard is that "Mozilla is not a validating XML parser." Jesus Christ! These people who don't believe in DTD validation, much less don't believe in Schema validation... the horrible, anxiety-producing code you must write -- huge if-blocks scrabbling to figure out what to do if you come across an element that isn't a member of some array you put together somewhere. People: Whenever you write parsing code for a particular "document type," you are damn well writing a DTD / Schema validator from fucking scratch!

Okay, okay, you're bored -- I can read the writing on the wall. Fine, here's some more stomach acid, this time from The Register:
Your primary and secondary schools will continue to turn out third-rate pupils with limited opportunities, while you enjoy the satisfaction of making it on your own without health care when a catastrophic illness bankrupts your family.

Your agricultural universities will continue issuing Ph.D.s in football, and bogus Protestant Evangelical and Fundamentalist theology, and how to jerk off a bull safely. Your children will learn to borrow enough money to erect chicken houses so that they, like you, can take custody -- not possession, but custody -- of Tyson's chicks, feed them, rear them, assume losses from those that fail to thrive, and in the end earn just enough money to service their endless debt, and realize a profit of perhaps $12K a year. Your bank thanks you; Tyson thanks you; George W. Bush thanks you; and I thank you.

Thursday, November 04, 2004

Americans Get The President They Deserve

Constructive solutions from some dude with a diary on DailyKos:
I also have a substantive recommendation to the Blue states: Do all that you can to shut off the spigots. Completely. Shut it down. All of it. No more sucking on the government's teat for the Red states. Transform the rhetoric of your Republican brothers into practice: Slash federal spending (is that still a Republican position?). Wipe out the farm subsidies. Eradicate all block grants to the states. End the transfer of thirteen cents out of every Blue State Tax Dollar to the Red states (call it "Real Welfare Reform".) Replace every dollar of reduced federal spending with a dollar of in-state spending.

Let Illinois, New York, Michigan, Wisconsin, Washington, California, and the rest of the Blue States keep their own damn money. Let the Red states keep out the gays, which is apparently their highest priority. Wait ten years and see who comes out ahead. And yes, this is bad policy. But it's clearly great politics. And winning on the political dimension is, sadly, a necessary condition for winning on the policy dimension.
My own solution -- don't know how easy it'll be to implement, but put my name on the paper if you submit anything to a conference: Read this; now this. Get it?

Or just listen to my friend "Razor":
The men, the revolting, shit-for-brains slobs who voted for Bush should be taken out behind some stripclub and stabbed in the back of the neck with a butter knife. Some of them should have their eyes popped out by the same knife before they're killed.

Monday, November 01, 2004

Roach In A Bottle

There really was a roach in a bottle! I saw it last week while I was dumping the recycling -- the roach was in a beer bottle with about a tablespoon of old beer in it and it was plinking and plunking around trying to get out. I knew it would 100% get away and upset the cat if it escaped, so I was, you know, picking up the bottle and shaking the roach back into the beer. I was hoping it would get sort of addled as the alcohol entered its spiracles, but that didn't happen, at least, not after one and a half minutes. So I dumped it into the toilet. The other night, Mer cooked some salmon and the glass baking dish exploded. Well, it didn't explode, but as she took it out of the oven, it basically fell apart in her hands. (The fish survived without a scratch, somehow.) Apparently we weren't supposed to 'broil' with it. Well, I don't call 400 degrees boiling, do you? Excuse me:
Here is your Moist Towelette. It will clean and refresh your hands and face without soap and water. Self dries in seconds, leaving skin smooth and soft. Directions: Tear open packet, unfold towelette and use.
Toddles and Teddles and I went "canvassing" in Pennsylvania yesterday. I don't know if you can even call it canvassing -- we just slipped this little leaflets under everyone's doors. Sometimes they'd hear you and open the door as you were walking away -- this gigantic and pretty much naked man picked up the pamphlet I'd slipped under the door as I was closing the door of his fence. I said, "Just wanted to make sure you knew how important it was to vote on Tuesday!" He looked exactly like the sexual predator in Stevie. Later, a small dog made a big dog bark and I fell off the top step of some stairs. It's important to vote, kind of. My thread shit doesn't work. So I'm implementing some other stuff in gzochi. Thinking about maybe getting going on ncurses bindings for XUL. That would be insane. Oh yeah, you guys can leave comments on my 'blog now. Try not to get, you know, too excited. What else. The gas bill is too high; the telephone does not work.

Tuesday, October 26, 2004

The Nude Pundit

I'm not kidding about this Rude Pundit thing, guys. You have got to read today's entry, for example:
So when Rehnquist tries to say he's thinking retirement now, too late for an appointment before the election, and with the potential loss of the Senate even if he wins, Cheney snaps. He pulls the tube out of Rehnquist's neck and whips out his cock. Rehnquist, wide-eyed, now wishing he had chosen death over the horror that is about to happen, gasps for air. "Gonna have to fuck your neck-hole, Bill," Cheney says, slapping his cock around, trying to get an erection, thinking about Mary and her partner 69ing, thinking about dismembered Iraqi children, all the things that usually make him hard.
My fucking Guile thread cancellation thing doesn't work at all. I'm totally frustrated with it and stymied. Euchhh. I did, however, fix a database thing that wasn't working in gzochi. Whatever.

Does Krasdale make anything that's not cheap and delicious? Their onion rings and seasoned fries: Delightful. Their frozen pizza: Sublime. Their waffles: Transcendant, and certainly light-years ahead of Eggo. Jesus. Their frozen mixed veggies: Gave me extremely painful mud-butt. So that's one thing.

I thought I whined about grad-school recommendations already in this thing, but going back through the archives, I can't find it. Well, I asked this professor of mine for a recommendation back in August, and he made me jump through all of these hoops, basically, to get it. So I finally e-mail him all the information he'd asked for, and I don't hear squat from him -- at all. Not even any indication that he'd received any of my hard-won information that he'd asked for. And I sort of forget about it for a while. And then I realize, I gave him Nov. 2nd as a deadline for it, and it's practically Nov. 2nd now. So I e-mail him to politely ask how things are going, and he writes back almost immediately explaining that he just had decided to ignore a bunch of his old e-mail but that he'd get right on my thing. Deek!

Oh yeah, and THE YANKEES WIN THE PENNANT!

Tuesday, October 19, 2004

Partisan Hackery

I don't feel like working on computer stuff just right now, so here is a 'blog entry. The laptop -- she is'a doing'a great! X Windows is not as 3-D accelerated as it could be, but it is accelerated, which is more than I could say for my old SiS. Also, I have to use Xine instead of all that fancy new GNOME Gstreamer stuff, because Gstreamer is... how you say. Not so good yet.
STEWART: See, the thing is, we need your help. Right now, you're helping the politicians and the corporations. And we're left out there to mow our lawns.

BEGALA: By beating up on them? You just said we're too rough on them when they make mistakes.

STEWART: No, no, no, you're not too rough on them. You're part of their strategies. You are partisan, what do you call it, hacks.

What is that I just quoted, right there? If you haven't seen it, I encourage you to click here. It is delightful. I'll quote some more of it in a bit. Go here, too: Rude Pundit. I recommend this one and this one and this one.

One computer thing I've been doing is working on this GNU system called Guile, which is an embeddable Scheme interpreter. I use Guile as the workhorse for gzochi's game-design language -- actually, Guile Scheme is gzochi's game-design language, and I embed Guile to make the games run. One problem, though, that I've had since day one, is that Guile's thread support is a bit shaky. Wait a second, have I explained threads in the blog before? Sometimes I like to explain some of this technical stuff so that if people like Devlin, for example, who are somewhat technically naive, but who have some vested interest in understanding stuff can know what I'm talking about.

So: Many times you will be writing a program, and you will want to start doing two things at once -- say, you want to listen for keys getting typed at the keyboard but you also want to be printing out messages you're getting from an Internet connection and you also want to be playing some music or something. Well, given that a program (as conceived of by most programming languages) is a sequential list of things to be done, it is hard to make more than one thing appear to happen at once. I mean, more than one thing cannot be done at once, but if you switch back and forth very quickly, you can give the user the impression that these things are happening at once. And if you want to do this yourself, you would have to say, in your program, "Okay, read a little bit from the keyboard, and now write some stuff to the screen, wait, go back to the keyboard, okay play a few notes of music, back to the screen, etc." That's a pain. So the operating system will very often give you a hand with this, in the form of "threads." You tell the operating system, via your program, that you have several disparate lists of instructions you want it to execute, several "mini-programs," say, called threads, and the system will start executing them all and will handle all of the switching between them for you. You don't have to worry about it, for the most part, until they have to interact with each other in any way, and then you have to worry a lot. But that's what threads are, anyway. Here's some more Jon Stewart:
BEGALA: Let me get this straight. If the indictment is -- if the indictment is -- and I have seen you say this -- that...

STEWART: Yes.

BEGALA: And that CROSSFIRE reduces everything, as I said in the intro, to left, right, black, white.

STEWART: Yes.

BEGALA: Well, it's because, see, we're a debate show.

STEWART: No, no, no, no, that would be great.

BEGALA: It's like saying The Weather Channel reduces everything to a storm front.

STEWART: I would love to see a debate show.

BEGALA: We're 30 minutes in a 24-hour day where we have each side on, as best we can get them, and have them fight it out.

STEWART: No, no, no, no, that would be great. To do a debate would be great. But that's like saying pro wrestling is a show about athletic competition.
Right, so Guile, when I started investigating it, supported a form of threading, which I needed, because the games being hosted by the gzochi server would need to be able to evaluate Scheme code concurrently with each other, but it was a weird, custom kind that wouldn't interact well with the operating system's normal threads. But the Guile people are in the middle of writing a new version and they've fixed that aspect of their thread stuff, and I'm excited about it. However, it looked like they still hadn't fixed this other thing, which is that their thread support didn't entail letting you cancel running threads.

See, sometimes one thread will be running and another thread will discover that there's no point in having the first thread keep going and that it should be shut down; for native Unix (and Windows) threads, this second thread can do just that, by telling the system to cancel the first thread. It gets a little bit complicated, though, because this first thread might be in possession of some resources that can only be held by one thread at a time -- for example, maybe a thread has exclusive rights to write to a particular file. If the thread is cancelled, the file stays inaccessible to everyone else. To get around this, most thread implementations allow you to install what're called cleanup handlers for threads, which are sections of code that get run when a thread is cancelled. So, for example, before you "lock" a file to write to it in a particular thread, you install a cleanup handler that unlocks the file, so that if the thread is cancelled in the middle of writing, the file gets unlocked for later use. More Stewart:
STEWART: But the thing is that this -- you're doing theater, when you should be doing debate, which would be great.

BEGALA: We do, do...

STEWART: It's not honest. What you do is not honest. What you do is partisan hackery. And I will tell you why I know it.

CARLSON: You had John Kerry on your show and you sniff his throne and you're accusing us of partisan hackery?

STEWART: Absolutely.

CARLSON: You've got to be kidding me. He comes on and you...

STEWART: You're on CNN. The show that leads into me is puppets making crank phone calls.
So Guile didn't have thread cancellation, which is something I needed, so that threads of Scheme evaluation that took too long wouldn't get the game "stuck." Well, I figured since the new version was in active development, I'd take a shot at it myself. Here's how I did it:

Every Scheme thread created by Guile has some information associated with it, such as a value to return to other threads that are waiting for it to finish, etc. I take that information, and add a little bit more to it: A list of expressions that need to be evaluated when the thread receives a cancellation signal. See, Scheme's what's known as a functional language, so expressions (instead of instructions in a so-called imperative language) are the basic unit of currency. So before you put a lock on some resource in your new Guile thread, you add a cleanup handler to my list of handlers -- so that you can clean up if you get cancelled while you're using the resource -- and then when you're done, you uninstall the handler. It wasn't super hard to do.

Here are the problems so far: Guile does this fancy dynamic library thing when it loads which makes it rather difficult to debug, so it took me a while even to begin to make progress debugging things. Also, threads that aren't created by Guile are not straightforward to cover with the cancellation cleanup policy I described above -- think of it like this: You embed Guile as an interpreter for Scheme code in your C program. You have a thread of C code initialize Guile and start intepreting Scheme for you. Your Scheme-interpreting-C-thread represents, in a way, Scheme-thread #1. Let's say the Scheme code you're interpreting launches another thread of Scheme code -- this thread is Scheme-thread #2, and will also, at it's core, be C code interpreting Scheme code, but this thread is covered by the cancellation policy, whereas Scheme-thread #1 is not. I think that's a feature, not a bug.

We'll see if they like it.

More computer shit: So Raymond Chen just posted this thing about how application developers chronically misuse the Windows API -- e.g., storing application data in like, undisplayed components of the widget set -- and then Microsoft had to go out of their way to work around this so their program would still work in the next version of Windows; he says (used without permission):
The moral of the story: Even if you change something that nobody should be relying on, there's a decent chance that somebody is relying on it.

(I'm sure there will be the usual chorus of people who will say, "You should've just broken them." What if I told you that one of the programs that does this is a widly-used system administration tool? Eh, that probably wouldn't change your mind.)
Some guy posted the following comment, which I think is a nice counterpoint (again, used without permission):
Although it really is amusing to read all those stories about "bad guys" who did something wrong and nowadays we have a few megs of code only to catch them, what is the real moral in that?

The only lesson I have learned is that I can use any dirty trick I want, if my app would be important enough that MS would test it (and then make sure it won't break). Why should I use ACT if MS will do that for me (and "repair" Windows accordingly)? (And if my app is not important enough, I'll just post some info about the trick to a newsgroup, someone else's important app will use it.)
Raymond didn't have anything to say on that one, last time I checked. Imagine how good Windows could be if Microsoft didn't take this retarded tack when it came to developing it!