Jan 11

tedium? no, delirium

Bleh. Went to work, started feeling crappy, came home. Wrapped myself in six layers — heavy blanket, heavy coat, medium coat, 3 shirts. Still shivering. Kids not too happy to have Dad out of action, and decided to fight. Really didn’t help.

Ah, but now is the fun part. Fever went up somewhere near 40C, whatever that is. Managed to pick up Celsius thermometer in Japan, and it always seems to be the one on hand. At least, the one that hasn’t been stuck up a kid’s butt. I know that 37.0C suspiciously maps to exactly 98.6F, but I just don’t have the “feel” for one degree C.

I will not publish this post.

Fever dropped, leading to the only fun part: delirium. Head still pounding, back aches, eyes ache, but brain is floating in some crazy juice and showing the effects. So, typing this up with eyes closed — hurts too much to have them open, but kinda hard to review. That’s ok, I will not post this.

This is my Mozilla blog. That doesn’t seem good. Delirium sould probably be kept on personal blog. Oh well, doesn’t matter, I will not post. So here, Mozilla related stuff, ok?

Man, it’s weird having autocorrecting fingers. I type things out, hitting backspce every 5th character or so, before my brain has a chance to realize the I screwed up.

Mozilla… FOTN seemed a joke when I first looked at it. Took me a while to realize that there was no depth testing going on, which made some weird impossible figures. Made me worry for the fate of WebGL if our demos are that crappy. Fortunately, tried on laptop and it was fine. Really needed some depth of field stuff still, but at least it was a totally reasonable flythrough. Maybe some shadowing too; those buildings were hard to pick apart. Textures weren’t the greatest, but what do I expect? I can’t do WebGL shit. OpenGL a little bit, though I still hurt over never getting those bitangents right. That’s right, bitch: bitangent, not binormal. Thanks for the needless learning curve.

I will not send this. Thou shalt not say “bitch” in a mozilla blog.

What’s up with memory tracking? Here’s what I did before: capture all new/delete/malloc/free/whatever. At end of run, or whenever, scan through all memory blocks, finding pointers to other blocks. Make a big graph. So far, I think this matches up with what njn (Nethercote — awesome name. Reminds me of netherworld. Maybe with a hat on the o to make it coast. The demonic shore.) where was I? Eyes closed not so good. njn has plans for something ilke this. When I did this last time, though, one of the most useful things was not dumping out summaries starting at… er… dominators? Fancy term for nothing. What’s more useful is to dig out a pointer you care about, then have an interactive shell or whatever to say “what does this pointer point to and what points to it?” Then you can take a little hike through the graph, assuming you have callsites and context for every memory block (page loaded or whatever.)

Head still hurts with eyes closed.

GC. Ok, I don’t know what people have gotten done, but there’s no way our system is a real base for interactive graphics. GC pauses kinda suck when you’re surfing, but tiny tiny pauses really really suck when you’re animating. And I kinda doubt our periodic callbacks have what we need to do real simulations. Sure, you can check the current time and advance appropriately, but people rewrite game engines over and over again to tweak timing. What’s good for the browser is not good for a game/simulation.

Still think we’ll need per-process GC policy. You can’t just delay GC until your animation is done. Can’t can’t can’t. It’s a big project, and saying “look! see? we can draw 3d models!” isn’t really going to take you down that road.

Heh. But what do I know? I rede buks n’ randomidiotontheweb advice. I haven’t done it either.

Man, the whole thing with Shaver and his shit-covered glasses is depressing. It reminds me of my own episodes. One day, everything’s fine, the next everything’s shit, and you realize that both are totally valid ways of looking at the world.

Will not post.

Delirium. Squeeze it while it lasts. Dear lazyweb: what’s a good gift for a one year old? Never mind, wrong lazyweb. My brain said red bicycle with built-in shower fixture. Probably not the best choice.

EVA. Isn’t that extravehicular a-something? Something about a spacewalk? Can’t know with closed eyes.

Opened eyes. Still typing into correct form. Got paranoid there. Might be better if I didn’t though. Not gonna send.

What’s up with our developer tools? Are we making the best possible console and the best possible inspector and the best possible debugger and they’ll be like an apple avocado saldad with some things soft and others hard and lumpy? Firebug at least pulls it all together. Somebody please tell me there’s a plan?

Hm. I like apple and avocado salad. Add yogurt, raisins, sunflower seeds. Weird, but it reallly works.

Weird. Wierd. My brother has been an ace speller all his life, and he still doesn’t get that right.

I will not post this.

Will I ever finish Taras’s slowcalls thing? I have no idea why I never manage to get back to that thing. It’s close, too, just need to find where in browser-land the other contexts are getting created. FunctionTimer going multithreaded isn’t going to help my progress, though, but I knew that when I saw the thread handling for the Timeline service and the lack in FunctionTimer.

I guess I just don’t understand it. It reports a random assortment of events. Is that useful? Dunno, I’m not the audience and I don’t understand my audience. Damn it.

Why oh why does working on Windows suck so bad? It’s really not a bad OS. Compiles would probably go way *faster* there if we didn’t go through the Unix translation layer, though I’m no happier about leaving my comfortable unixy environment. I think I may have fallen off the end of that sentence. Eyes hurt too much to check.

Just please no Ant. Ant is a great idea, in the wrong language, with the wrong assumptions, with the deeply wrong Java environment mucking everything up. Shoving bamboo chopsticks under fingernails? Sure. Ant? Pleasegodpleasegodno.

Global dependency graph good. Make the ipdl BS spit out its dependencies first, though, please.

Do I like the open office setup at Moz? Still not sure. Awful at first; too many interesting conversations on all sides, plus IRC to contend with. Really tough for my old brain. Man, that sucks. Somehow, I’m still thinking I’m the young kid, sailing ahead faster than anyone expects. But nope, now I’m OLD, want to admit it or not. I still know a little about a lot, but it’s not coming together anymore like it used to. I got lazy. Lazy. Lazy. Hindsight’s a bitch.

There’s that word again. No post while under the influence. My head hurts.

Why are we all rewriting the same tools? Speedtracer is great. Why did you have to screw it up by writing it in Java? Writing in Java is a penance, not an advantage.

Not that I’ll defend Javascript. Scoping is broken, dammit! I don’t want my arrays to be objects! You’re close — can’t you please please give me real continuations and coroutines? And all those ‘function (a,b) {…}’ things. For a fundamental language feature, that’s just ay too verbose! Can’t it just be ‘(a,b)->{…} or something? Maybe ‘{(a,b):…}’? I guess that’s my Perl roots showing through, but Perl is still a language where you can have an idea, type it in, and run it. It works. Yes, it has enormous warts, but it got a lot of stuff right. Python is great, but I always feel like there’s a nun hitting my knuckles with a ruler when I use it.

Oh. And iterating over stuff. ARGH!

Whee. Head is spinning. Delirium starting to fade. Last chance to do something stupid!

Can’t we all just get along? What’s the deal with perf vs systemtap? Andrew Sutherland does cool shit, even if his viualizations often don’t speak to me. At least he has them, unlike my hairballs of solid text like my ETW posts. There are just so, so many low-hanging fruit in the performance area, and there really isn’t that big of a difference between what everybody needs. Ok, there are half a dozen different environments that are really, really different, but why don’t we have way more joint work and standardization here? I want to know why my app stutters every 24 seconds. Game programmers want to know why their game stutters every 24 seconds. The state of the art of profilers is craptastic, and they’ve had the basic same raw data to draw from for decades.

Related though, sorta. it’s not about throughput. I want to know how often we make the user wait, for how long, and how often. If the user is reading the text, GC is free. Free! Zero cost. As long as we’re not still digging through our short and curlies when the user wants to scroll or switch tabs or whatever. So why don’t we have a notion of when the user is waiting? I don’t care if you have 78 GC pauses with a mean of 726ms and a max… whatever. That could be great or awful. User waited? Awful. User was off in another window? Great, as long as there isn’t a metric buttload of garbage awaiting him when he gets back.

Head still hurts. Legs better.

Hey, if I publish now nobody will read it. Gone by next week.

No. Will not publish.

1:30am. Probably not a good way to get well, except I’ve been in bed since 4pm. I should go read my book now. Kestrel, 3yo going on 4, was worried that I might get bored so he gave me “Baby Danced the Polka” to read in the middle of the night. Awesome kid. 2yo was just traumatized to see Dad moaning away in bed, and pissed off when I wouldn’t let him touch me.

Need heavyweight JS profiler. track every frickin op executed, with cycle counter before and after. JM+TM+interp. Add ’em up, dump them into a shadow array the length of the bytecode. Sure, it’s slow, but gives you coverage and skewed relative timings of everything everything. Tells how many times each op was mjitted/traced/interped. Tie that to systemtap-generated log of all I/O. Roast lightly over the coals, smear with barbeque sauce. How do you spell that? Who cares, eyes are closed. Not gonna post.

Why no distcc for teh build slaves? Sure, it hurts scalability a little, but it gives latency. Latency is God. Just need to make sure distcc servers match exactly; I’ve been burned by 32bit vs 64bit and Fedora 13 vs 14. I suppose the network I/O might melt down the cluster. Mmmm… melty cluster. Marshmallows and chocolate. Ever notice that anything Trade Joe’s puts out — cereal, I mean — with “clusters” in the name or the picture is vile?

Will not post. Not not not not post.

What do web developers do? Not chew tobacco very much thee days, I guess. Seems to be dying out. I sorta kinda know from things like my never-finished audiobook ripper. It’s a great deal, checking out audiobooks from the public library. They just take too long to listen to before you have to return them.

Web developers. CSS, of course. Still think the selectors are kinda impoverished, but I suppsoe they’re hairy enough. Firebug does a good job of CSS, though somehow I always find myself doubting it even though it ends up being right. Wonder why that is.

Javascript. Often using toolkit, these days. jQuery “operate on all these” is awesome. Mootools actually sounds cooler, more what I like — solid underpinnings, build the decorations on top. But it’s toast, you can’t compete with something that just hammers front end front end front end unless it falls apart. And jQuery seems fairly solid.

Wait, back up. Javascript. Debuggers. All JS is probably written with web searches going on like crazy. Write some code, web search for how to do next piece, write some code, repeat. Step through with debugger. Get confused about what the CGI/server is doing and what the client is doing. Need record and replay capabilities.

HTML, CSS layout. Would this be better as a visual task? Gives me the creeps. But yeah, you’re making a visual output, so something’s gotta be visual.

Events. Whee, that’s a big one. What’s the event what’s the keycode where does it go? How should the user see it?

Mice. Nasty scurrying little things. 50 of them at once is just disgusting. One at a time is… well, kinda cute. Cockroaches not so much.

Really need to go to bed. Bed might be made out of plywood, but probably softer. No money in it. Even with today’s negligible interest rates. Should stockpile raisins instead. They keep, and you can eat them. How did money get started anyway? I give you a fish, you give me a piece of paper. I trade the piece of paper to someone else who wants one of your newborn puppies, he gives me some tulip bulbs in return. Hey asshole, who said you could give me that piece of paper? Why can’t you just give paper for everything, and if someone tries to redeem, just give them more paper?

Eyes are open. 2am. Time for bed.

update: yes, I posted this. But I control whether things make it to Planet via a tag, and I didn’t set it for this. That seemed like a comfortable middle ground at the time I wrote this post. I maybe should re-read it to decide whether to nuke it entirely. Fortunately, nobody reads my blog directly.