XHTML 1.0 vs. HTML 4.01

If I may quote from:

http://hixie.ch/advocacy/xhtml

which is considered the ‘official’ piece on the subject –


Why using text/html for XHTML is bad
————————————

What usually happens to authors who decide to send XHTML as text/html
is the following:

1. Authors write XHTML that makes assumptions that are only valid for
tag soup or HTML4 UAs, and not XHTML UAs, and send it as
text/html. (The common assumptions are listed below.)

2. Authors find everything works fine.

3. Time passes.

4. Author decides to send the same content as application/xhtml+xml,
because it is, after all, XHTML.

5. Author finds site breaks horribly. (See below for a list of
reasons why.)

6. Author blames XHTML.

Steps 1 to 5 have been seen by every single person I have spoken to
who has switched to using the XHTML MIME type. The only reason step 6
didn’t happen in those cases is that they were advanced authors who
understood how to fix their content.

I don’t know whether or not I agree to this whole thing yet. I like some of the thinking. But here’s my thing – I like the style of XHTML. All my tags nesting properly and stuff. That’s cool. But I don’t like things busting. That’s not cool. So can I do something really vile and put an HTML DTD at the top? Then it gets parsed as soup.

Anyways, let’s look closer at those issues he lists. –

  • 1 – Number one sucks. We hate when that happens. You can’t stop ’em though.
  • 2 – Number two is unfortunate – our lives would be easier if this didn’t happen. Too late, genie, bottle, etc. Not a Christina Aguilera reference.
  • 3 – Yes it does.
  • 4,5, and 6 are ALL THE SAME THING. I don’t care about ‘blame’ – that has no technical merit in any thing. I don’t care who gets blamed for what. That’s not my problem.

4 and 5 happen at the _same_ time, unless idiot Author changes his Content-type and then doesn’t check his site. If so he is stupid, and we cannot design for people who are stupid. (Average is OK. Clever is OK. Typical is OK. Really Stupid is not OK). So the author actually has Tag Soup, and cannot serve it as Application/xhmtl+xml. He has to revert back to text/html. WHO CARES? I don’t care who he blames. I don’t care at all. As soon as he tries to serve application/xhmtl+xml, his site explodes, and he has to switch it back. Sounds like application/xhtml+xml is a very, very good ‘toggle’ of Real XML Content compatibility.

So what can we do, instead? Serve your semivalid XHTML as text/html. If you don’t like polluting the DTD that is XHTML, make your doctype HTML 4.01, and have invalid documents. The whole point of this is that we can’t fix the past (HTML 4.01), we can only try and set things up to work well in the future. And that’s precisely what’s happening in Hixie’s 4,5 and 6 steps, above. Those are in the future. And until Joe Blogger is serving his content as application/xhtml+xml, we can’t be absolutely sure that it’s XHTML, i.e. an XML document. We may want to treat it like Tag Soup. That’s what we do already.

I think also, that we’re dealing with a very, very subtle problem here, as well. Hixie publishes a nice plain text document, with the “Considered Harmful” lingo which sounds so RFC-like. And says some stuff about how valid XHTML is good. And people (programmers) like that. So they quote him and cite him. And it looks formal and correct and well-debated. But he’s wrong. Instead of moving us forward, he’s keeping us mired in HTML 4.01. I say, better to be invalid HTML 4.01 because you’re secretly striving for XHTML. Being valid HTML 4.01 doesn’t help you. But that tone and style in that document make it sounds already settled, and it’s not. So beware documents that sound like that – plain text, “blah considered harmful”, etc.

Ultimately, your choices are: do you want Validity? Do you want it to Work? Do you want future-ness? Do you want XML-itude? And if your primary concerns are Validity and Workingness, use HTML 4.01, and validate it. If you want Futurey bits, and XML-itude, you can try to make valid XHTML 1.0 and serve it properly. But you’ll probably botch it because it’s hard. If it’s too hard for you, and you don’t care about validity, don’t serve it as application/xhtml+xml.

I don’t care about HTML 4.01 being valid. Fuck it. But I do care about XHTML being valid, and I think the “Content-type as validity toggle” is a good step for now.

UrbanDead et al

I haven’t written anything in a bit because I’ve been working on the Volchok Store. When I get home, i’ve been playing katamari damacy. It is an awesome, extremely creative, game, though frustratingly short. But there’s definitely some replay value. I like replaying one level in particular, which I won’t spoil the details for…but it’s really cool. The soundtrack is extremely creative as well, which is nice.

However, the topic I am here for is an MMORPG called urbandead. It’s very simple, and not too time-consuming. There are humans and there are zombies. When a human dies, he becomes a zombie. When a zombie dies, he can get back up as a zombie. As you can imagine, this leads to a very disproportionate level of zombies. It’s possible to ‘revivify’ a zombie, though I’ve never seen it done.

As I’ve gone through about, say, 4 or 5 human characters now, I think I know the deal. Hindsight being 20-20, I would like to see some mechanics changed to keep it more interesting. Lots of stuff from “28 days later”. hunger – both Human and Zombie – would be intriguing. And dead zombies should have something worse happen to them – right now they just get up – that makes it so there’s no point in killing them. I understand that the author doesn’t want to punish zombies for dying too hard, but maybe moving them to the graveyard or something would be better? While we’re at it, I don’t like that we can have 5 guys in a barricaded building, armed to the teeth, and have them allow a zombie to break in and kill them all, without firing a shot. And how come I can walk in to a room with 8 zombies in it and casually root around for stuff without them taking swipes at me? It doesn’t make the game uninteresting, it just makes the game not-a-zombie-game. Or at least not a Classical Movie Zombie game.

So fine, very nice gripes – but how do you fix them? Autodefend? Let the server fight for you if you’re not there? Maybe. But I think the real problem is that it’s 24 hours happening in 24 hour time. You never encounter another user “there” at the same time as you. You log on and find out what they did, instead. And what they’ve done to you is usually spend all 50 AP’s on Deadifying you.

If you had features like ‘autodefend’ and ‘autobarricade’ – you’d come back after 24 hrs. “rest” to find that you had no ammo or AP’s…argh.

Also – and this is a minor point – if you did manage to face someone in real time, if they had a faster net connection than you, they could killulate you all the harder, with you not being able to respond in kind.

Getting killed while you’re logged off is lame. But I guess that’s just the consequences of your actions – did you hole up in the right place? but maybe ‘logging on’ means coming out of your hidey hole. And the same for the zombies. Then you’ll only be handling face-to-face battles. instead of AP’s you’d be dealing with stuff in real time, or delays in the seconds – it takes 2 seconds to do X, 5 seconds to do Y…You could still do defensive emplacements, and co-operation…dead people should still become zombies, but dead zombies should either die or go elsewhere? Die ideally…

But then, to play with your friends, you have to be on at the same time. . . Maybe you could have “territory” – human vs. Z controlled. If you “rest” in territory that gets overrun, well, then you log on Dead. And the same for them, shambling undead bastards… And maybe you make it so that only ‘n’ people can exist in ‘m’ space…i dunno…it forces some people to sleep on the front lines…maybe zombies should be NPC’s…

Let’s look at what the ‘sim’ should be simulating. Zombies take more damage than humans, but tend to do less, due to humans having those dirty, dirty opposable thumbs. Zombies outnumber humans. Dead humans become zombies – if infected. Humans need food. Do zombies need brains? Zombies are dumb, slow, and mindless. Zombies, when killed, die.

Urbandead keeps the Z population up by making being a Zombie pretty easy. And death being inconsequential. Under my system, zombies will tend to suicide and make a new human character…

Maybe you make it so that zombie players can pop up in another body (that isn’t being used), and carry some kind of identity and xp and skills into the new body…so if you, as a Zombie, die, you take over another body (elsewhere, probably) and kinda become them? You might make it so that you don’t get to play your Zombie char at all. You just have to take a new Human form? A la wow – spirits running around? And maybe something where you can kill dead bodies to prevent their zombifiction.

Anyways, I like some of my ideas, not others. Just wanted to jot them down.

Ooh ooh! You could have an effect be ‘knock unconscious’ and unco people might be indistinguishable from Z’s…then “joe schmoe gets up…” eek! Is he a zombie! Or “CHECK PULSE” – joe attacks you for +20 damage!

Getting to work on time

I got yelled at (well, more like lightly admonished) for being late to work, so I thought I would try harder to make it in on time today.

In the process, I thought would keep track of how long it takes to get in

  • House: 8:53am (that’s leaving my front door)
  • Dunkin’ Donuts (in, door): 9:01am
  • Dunkin’ Donuts (out, door): 9:02am
  • Subway Platform: 9:03am
  • Train: 9:07am
  • Destination Platform: 9:45am
  • Office Lobby: 9:53am
  • Desk: 9:56am

As you can see, I made it! And it looks like the door-to-door commute time is 1 hour, 3 minutes – shit. I guess I’d better leave earlier in the mornings. Especially when Dunkin’ Donuts is slow (today it was pretty fast).

OS installation music in a minor key

One of the guys here just did a Windows XP install on one of the machines here – and the song it played was sad-sounding. Why do OS vendors do that? Apple’s the same way – the Jaguar install had a nice technoey song in some sad key.

Having to reinstall your OS is depressing enough. They should put something more upbeat in there, instead of reinforcing the misery.

CTO Announcement

Just when I thought I was going to be a ‘secret CTO’, like those secret boyfriends and secret girlfriends that you have in grade-school, it got announced that I am officially The Guy.

Also, while SMS’ing my old boss at my former gig, I found out that the problem I had been working on for the past, oh, say, three weeks, was solved in around 2 or 3 days by my successor.

Ouch.

So the ego goes up, and gets brought right back down. Sigh.

CTO accomplishment #1

“Organized a lunch ordering system, making the process take 10 minutes instead of 30. Created a server repository of lunch menus and an Excel spreadsheet which randomly selects a participant to place the order.”

Oh, and:

“Separated office ping-pong players into the over-Brady and under-Brady leagues. Improves morale and competitiveness of players on both leagues.”

In case you wondered, I’m in the under-Brady league.

XML on the web hasn’t failed, you big whiner

See: this post from a long time ago.

Now let me state – I like Mark Pilgrim, I think he’s great. I disagree with him sometimes on his tone, and I think that he can be an asshole, but for the most part, I agree with him technically. But not this time.

On this, he’s saying – because of a Very Shitty RFC, (almost all) XML on the web is broken.

I think he’s wrong, and is panicking about a Very Shitty RFC (3023, if you care).

The fundamental issue is transcoding proxies. They take anything served as:


Content-Type: text/anything; charset="httpcharset"

<something><something charset="contentcharset">...

And transparently transform the text into a different charset, assuming it was httpcharset in the first place!

In case you cannot tell, this means that HTML will get mangled too. Plenty of HTML is served with one charset, but specifies another one internally. Well, that’s an easy statement to make, but I think it’s true?

Anyways, any time the content of your document has a character outside the Served content-type, a transcoding proxy will mangle it, beyond recognition.

This is not limited to XML. HTML, hell, even text/plain documents will all be horrifically mangled. Anything where the character-space of the Served text is narrower than the character-space of the content text will be messed up. That’s a lot of content to mangle, for a proxy’s sake. Especially when most clients are now character-set-aware, and doing such weird tricks to make non-character-set-aware applications function correctly seems to break everything else…

But that being said – soon after he published this article, Mark Pilgrim stopped posting his blog. Why? I liked disagreeing with your tone, often. I liked thinking, “What an asshole, but he’s right.” I even snickered at some things. It was Good. So my RSS (Atom, Mark, it speaks Atom! Don’t freak out!) feed reader still points to his nonexistent feed as a silent protest.

Come back Mark!

Materials Selection

What the hell do you put in these crazy things? I know I’m allowed to say the word “fuck”, and am very excited about that. How do I use it and where? Can I say things that might piss off one of the companies I work for? Or both? Or my friends or family? Is it not even a good idea to have one for fear of making my private life publicly accessible?

I think I’ve read stories about people who accidentally allowed their family or whatever to see their blog, and allowed for embarassing information to get out. That would, I suppose, be bad. If I choose to write about such things. Which I don’t know that I will do.

Fuck.

btw – how clever am I – I was going to try to publish from the subway to see if PlogIt would catch that I wasn’t connected, but I figured, “hey, why not select all on my post then hit copy, in case it nukes my post?” It did, so I hit paste. Heh. Underestimate your technology and you’ll never be disappointed.

NetServOS is dead, long live netservnyc

So today I noticed space on one of my servers was starting to run low. I’ve had NetServOS shut down for several weeks, so I figured I guess it’s time to move off all the data. It was surprisingly easy. Poof, all gone. Well, archived…

I never really explained to anyone why I thought NetServOS failed – and it’s been a very gradual process of acceptance for me to realize it had. But it did. Here’s why:

  1. Marketing was an afterthought – figuring out who to market to and how was important to do far, far earlier in the process.
  2. What was, in the end, a user-interface technology had a terrifyingly bad user-interface.
  3. No killer App. No OS wins without a killer app. Maybe the mail piece could’ve gotten better, but “killer?” No. And it was never designed to be one.
  4. Boil the ocean plan. There was only one way to integrate – my way, and my model. No way to tie in non-compliant apps. No way to use an application’s already-existing authorization/authentication model. No easy way to interoperate without switching to my method
  5. Too honest for my own damned good. Why did I feel compelled to figure out the financial model BEFORE I had a market? I knew the Slashdot crowd wouldn’t like the idea of Stuff costing Stuff. I should have shut up and grabbed the hobbyists, and when one of them started making money, then I could’ve worked something out.
  6. marginal utility. No one really “needed” me. I should’ve found a way to be needed.

Here’s my stop. To Be Continued…?

First day on the job

So today’s my first day on the job as the CTO of Volchok. Well, it’s definitely the first day, since it’s just after 12:00am…

Apparently something’s going on with the office DSL line. Possibly a DOS attack. How flattering. To figure out what had to happen, I had to kinda realize that while we can blip or line for 10 or 15 mins here or there, we cannot be full-down for a day. So I’ve had to come in. Uck.

Michael was already in the office and the problem appears just as bad with the router plugged in to our LAN as not.

P.S. – I’m writing this on mobile blogging software called “PlogIt” – jury’s still out, but the idea’s pretty cool at least.

Edited to fix title, and change time. Feh.