Back in August I tried an
experiment: two weeks offline
with family and friends in Switzerland. It was awesome. Extremely
relaxing and full of that personal growth stuff. Thus, I have decided
to give it another try. I'm going to take another two weeks off,
mostly Internet-free again, this time on the US East Coast.
Back on the WHATWG spec, the section I'm currently working on is
network broadcast feature, which would allow applications written
as Web pages running on browsers on devices in a LAN or PAN to
communicate. This would allow things like party lines, multi-player
games, and the like.
For Ethernet networks, I'm leaning towards a UDP-based system. Each
packet would consist of the broadcasting page's domain, a colon, and
the page data (text encoded as UTF-8) to the broadcast address, on a
known port. The domain would then be used to ensure that only Web
pages from the same domain could read that data. Well, Web pages and
any native applications, of course — we want to allow anyone to
write native code that interacts with these pages. (For example, a
game server could be written in C++ and run somewhere on the local
network, with the game client written in HTML and served from a known
network address. Since the server knows the address, it knows what
address to put on its headers, and which packets to read from the
network when it receives some.)
I'm not sure what size packets to allow; research has suggested
that if you want UDP packets to make it through the Internet you might
want to limit yourself to 512 byte packets since those are the biggest
size that will usually make it through intact (since some routers
apparently drop bigger packets rather than fragmenting them, or
something). But the idea here is local-network broadcast, not distant
unicast, so fragmentation over routers seems irrelevant. That would
suggest we could allow up to the full 65507 byte packets
(216-1 - 8 (UDP packet header size) - 20 (IPv4 packet
header size), or 65487 if we want to be forwards-compatible with IPv6
(IPv6 headers are 20 bytes longer). Then the question becomes "how do
we handle transmissions above this limit"? I guess we just raise an
exception, but it seems odd to allow US-ASCII users to send more text
than people using, say, the plane-1 Shavian alphabet.
Sadly I know very little about those levels of the networking
stack, so I'm probably spouting nonsense. If so, don't hesitate to moan at me so I can fix
Even worse than not knowing much about Ethernet, though, I don't
know anything about Bluetooth and similar standards. I tried
reading the Bluetooth spec but its 1230 pages overwhelmed me.
It would be really cool to transparently support things like
Bluetooth as well, though. What I want is a way to broadcast to any
listening device the name of the broadcasting page's domain, and the
data that the page is sending. Anyone know how to specify this?
I've made a note of those posts so that I can make sure to
incorporate the comments that were made, but please, if you have
comments... send them to the
list! Or to me! Leaving them
on your Web log will not (unless I happen to run into those comments
like I did those above) result in the spec improving. Your comments
are welcome, whoever you are, and however minor or
controversial you might think your comments are.
If someone accused me of writing sentences that made people go cross-eyed, I'd have to plead guilty. While trying to define the first draft of the client-side persistent storage API in HTML5, I just ended up writing the following:
When the setItem() method is called on a
Storage object that is associated with a global storage
entry for a domain d and was created by a
StorageList object associated with a
Window object x, then in every
DocumentWindow object whose Window object
is not x and whose globalStorage attribute's
StorageList object's getDomain() method would not
raise a security exception according to the rules above if it was
invoked with the domain d, a storage event must be fired, as
My only defence is that I'm just trying to be exact!
People are already trying to find better ways to phrase it, so don't be surprised if, by the time you check the spec, the sentence has been replaced by something much saner.
Back in July Allan and I went
to Shadowcon 10. I went to
Shadowcon 9 with Eira last year,
and the Buffy Sing-Along was the best thing there, and this year I
basically went there only for the sing-along, which was just as fun.
It helps that I've been listening to the Once More, With
Feeling soundtrack so much recently that I know most of the
words by heart, even when there are multiple overlapping lines...
I've also over the past few months been watching lots of Top Gear, the UK
motoring show (which is hilarious even if, like me, you understand
nothing of what they're saying). More recently I bought Gran Turismo
4, the racing simulator. This is all part of an effort to learn more
about cars in general since many of my friends seem obsessed by them
and it would be nice to at least have some clue what they're
talking about. I haven't played GT4 much but so far I've done my
National A and B licenses, with about two thirds bronze and one third
silver. One day I should probably get a real license too.
On Saturday we went to see The Lord of the Rings performed by the
Oslo Philharmonic and supported by various other groups. Tim has the scoop.
On Sunday, Allan, Wilhelm and I
played Civilisation the Board Game. It's a strategy
game. Much better than Risk, better than Attack; not as good as
Twilight Imperium III. I'm not a huge fan of any of those games,
because they basically boil down to fighting instead of cooperating.
The only strategy game I've really liked is OpenTTD (the free Transport Tycoon
clone), and that's not a board game.
I won, leading a completely peaceful strategy, not attacking a
single time (well, I attacked once, but that was with the agreement of
the target and was merely so we could swap cities so he could
consolidate his forces; there was no violence involved). I was a
little lucky in that Allan and Wilhelm decided to keep fighting each
other instead of doing the same as me, peacefully living without
conflict. Almost all my settlements ended up happy, with a few
exceptions which would have been happy within a few rounds if the game
hadn't been ended (Allan got the UN and declared the game over).
Earlier in the week we also played Fearsome
Floors, which is an interesting game where the only
randomness is player-neutral. I like that kind of game. It constrasts
with games like Super Munchkin, the latest in the
long series of Munchkin games (of which we have all but the Fu2
expansion, I think) which are all basically completely random. I
remember joining a game of Munchkin a few weeks ago that had been
going on for some hours — I managed to get to level 8 or 9 in
short order, while the player next to me, who had been playing since
the start, was mostly hovering around level 2 or 3. There is
some skill involved but frankly it's mostly about what cards
you happen to get. The skill usually involves confusing people with
Over the past few days the SVG and CDF working groups have sent
feedback to the CSS working group on CSS2.1, and Björn and I have been
fielding their requests on behalf of the CSS group. Most of their
requests seem to have been misunderstandings, so we've managed to
answer most of them already. IRC is a great tool for dealing with this
kind of thing! A few of the issues were real issues, though, so we'll
be discussing those at our telecons.
Tonight was Opera's 10th anniversary party, the highlight of which was Håkon's challenge for us all to go swimming in the ocean at midnight!
The swimming heroes were Håkon, of course, along with Jon (our CEO), chaals, Eira, myself, and a dozen or so others who then joined us. Most people went in their underwear, but two people (one of them being myself) went completely in the buff, which is of course much more fun! ☺
There is something quite exhilarating about skinny dipping at midnight. Highly recommended.